diff --git a/README.md b/README.md
--- a/README.md
+++ b/README.md
@@ -8,7 +8,7 @@
 
 ## Version
 
-`0.0.1`
+`0.1.0`
 
 
 ## Description
@@ -18,9 +18,9 @@
 
 ## Contribute
 
-For any problems, comments, or feedback please create an issue [here on GitHub](https://github.com/brendanhay/amazonka/issues).
+For any problems, comments, or feedback please create an issue [here on GitHub](https://github.com/brendanhay/gogol/issues).
 
-> _Note:_ this library is an auto-generated Haskell package. Please see `amazonka-gen` for more information.
+> _Note:_ this library is an auto-generated Haskell package. Please see `gogol-gen` for more information.
 
 
 ## Licence
diff --git a/gen/Network/Google/AndroidPublisher.hs b/gen/Network/Google/AndroidPublisher.hs
--- a/gen/Network/Google/AndroidPublisher.hs
+++ b/gen/Network/Google/AndroidPublisher.hs
@@ -7,7 +7,7 @@
 
 -- |
 -- Module      : Network.Google.AndroidPublisher
--- Copyright   : (c) 2015 Brendan Hay
+-- Copyright   : (c) 2015-2016 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
 -- Stability   : auto-generated
@@ -21,6 +21,9 @@
     -- * Service Configuration
       androidPublisherService
 
+    -- * OAuth Scopes
+    , androidPublisherScope
+
     -- * API Declaration
     , AndroidPublisherAPI
 
@@ -182,6 +185,15 @@
     -- ** androidpublisher.purchases.subscriptions.revoke
     , module Network.Google.Resource.AndroidPublisher.Purchases.Subscriptions.Revoke
 
+    -- ** androidpublisher.reviews.get
+    , module Network.Google.Resource.AndroidPublisher.Reviews.Get
+
+    -- ** androidpublisher.reviews.list
+    , module Network.Google.Resource.AndroidPublisher.Reviews.List
+
+    -- ** androidpublisher.reviews.reply
+    , module Network.Google.Resource.AndroidPublisher.Reviews.Reply
+
     -- * Types
 
     -- ** InAppProductListings
@@ -251,6 +263,18 @@
     -- ** EditsTracksPatchTrack
     , EditsTracksPatchTrack (..)
 
+    -- ** UserComment
+    , UserComment
+    , userComment
+    , ucAndroidOSVersion
+    , ucText
+    , ucDevice
+    , ucAppVersionCode
+    , ucAppVersionName
+    , ucReviewerLanguage
+    , ucStarRating
+    , ucLastModified
+
     -- ** Testers
     , Testers
     , testers
@@ -294,6 +318,7 @@
     , season
     , sStart
     , sEnd
+    , sProrations
 
     -- ** PageInfo
     , PageInfo
@@ -322,6 +347,13 @@
     , ppPurchaseTimeMillis
     , ppDeveloperPayload
 
+    -- ** ReviewsListResponse
+    , ReviewsListResponse
+    , reviewsListResponse
+    , rlrTokenPagination
+    , rlrPageInfo
+    , rlrReviews
+
     -- ** SubscriptionPurchasesDeferResponse
     , SubscriptionPurchasesDeferResponse
     , subscriptionPurchasesDeferResponse
@@ -336,9 +368,15 @@
     -- ** SubscriptionPurchase
     , SubscriptionPurchase
     , subscriptionPurchase
+    , spPaymentState
     , spKind
     , spExpiryTimeMillis
     , spAutoRenewing
+    , spPriceCurrencyCode
+    , spCancelReason
+    , spCountryCode
+    , spDeveloperPayload
+    , spPriceAmountMicros
     , spStartTimeMillis
 
     -- ** AppDetails
@@ -400,6 +438,12 @@
     -- ** EditsImagesUploadImageType
     , EditsImagesUploadImageType (..)
 
+    -- ** Prorate
+    , Prorate
+    , prorate
+    , pStart
+    , pDefaultPrice
+
     -- ** InAppProductsListResponse
     , InAppProductsListResponse
     , inAppProductsListResponse
@@ -417,6 +461,13 @@
     , apkllrKind
     , apkllrListings
 
+    -- ** Review
+    , Review
+    , review
+    , rReviewId
+    , rAuthorName
+    , rComments
+
     -- ** InAppProductsInsertResponse
     , InAppProductsInsertResponse
     , inAppProductsInsertResponse
@@ -436,12 +487,23 @@
     -- ** EditsExpansionFilesGetExpansionFileType
     , EditsExpansionFilesGetExpansionFileType (..)
 
+    -- ** ReviewsReplyRequest
+    , ReviewsReplyRequest
+    , reviewsReplyRequest
+    , rrrReplyText
+
     -- ** EditsExpansionFilesPatchExpansionFileType
     , EditsExpansionFilesPatchExpansionFileType (..)
 
     -- ** EditsExpansionFilesUpdateExpansionFileType
     , EditsExpansionFilesUpdateExpansionFileType (..)
 
+    -- ** DeveloperComment
+    , DeveloperComment
+    , developerComment
+    , dcText
+    , dcLastModified
+
     -- ** InAppProduct
     , InAppProduct
     , inAppProduct
@@ -484,6 +546,11 @@
     , apklrKind
     , apklrAPKs
 
+    -- ** ReviewsReplyResponse
+    , ReviewsReplyResponse
+    , reviewsReplyResponse
+    , rrrResult
+
     -- ** ExternallyHostedAPKUsesPermission
     , ExternallyHostedAPKUsesPermission
     , externallyHostedAPKUsesPermission
@@ -513,6 +580,12 @@
     , elrPageInfo
     , elrResources
 
+    -- ** Comment
+    , Comment
+    , comment
+    , cUserComment
+    , cDeveloperComment
+
     -- ** EditsTestersUpdateTrack
     , EditsTestersUpdateTrack (..)
 
@@ -521,6 +594,18 @@
     , inAppProductsUpdateRequest
     , inInAppProduct
 
+    -- ** Timestamp
+    , Timestamp
+    , timestamp
+    , tNanos
+    , tSeconds
+
+    -- ** ReviewReplyResult
+    , ReviewReplyResult
+    , reviewReplyResult
+    , rReplyText
+    , rLastEdited
+
     -- ** Entitlement
     , Entitlement
     , entitlement
@@ -590,6 +675,9 @@
 import           Network.Google.Resource.AndroidPublisher.Purchases.Subscriptions.Get
 import           Network.Google.Resource.AndroidPublisher.Purchases.Subscriptions.Refund
 import           Network.Google.Resource.AndroidPublisher.Purchases.Subscriptions.Revoke
+import           Network.Google.Resource.AndroidPublisher.Reviews.Get
+import           Network.Google.Resource.AndroidPublisher.Reviews.List
+import           Network.Google.Resource.AndroidPublisher.Reviews.Reply
 
 {- $resources
 TODO
@@ -604,6 +692,9 @@
        :<|> InAppProductsGetResource
        :<|> InAppProductsDeleteResource
        :<|> InAppProductsUpdateResource
+       :<|> ReviewsReplyResource
+       :<|> ReviewsListResource
+       :<|> ReviewsGetResource
        :<|> EditsImagesListResource
        :<|> EditsImagesDeleteallResource
        :<|> EditsImagesUploadResource
diff --git a/gen/Network/Google/AndroidPublisher/Types.hs b/gen/Network/Google/AndroidPublisher/Types.hs
--- a/gen/Network/Google/AndroidPublisher/Types.hs
+++ b/gen/Network/Google/AndroidPublisher/Types.hs
@@ -1,3 +1,4 @@
+{-# LANGUAGE DataKinds          #-}
 {-# LANGUAGE DeriveDataTypeable #-}
 {-# LANGUAGE DeriveGeneric      #-}
 {-# LANGUAGE NoImplicitPrelude  #-}
@@ -7,7 +8,7 @@
 
 -- |
 -- Module      : Network.Google.AndroidPublisher.Types
--- Copyright   : (c) 2015 Brendan Hay
+-- Copyright   : (c) 2015-2016 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
 -- Stability   : auto-generated
@@ -19,7 +20,7 @@
       androidPublisherService
 
     -- * OAuth Scopes
-    , androidpublisherScope
+    , androidPublisherScope
 
     -- * InAppProductListings
     , InAppProductListings
@@ -88,6 +89,18 @@
     -- * EditsTracksPatchTrack
     , EditsTracksPatchTrack (..)
 
+    -- * UserComment
+    , UserComment
+    , userComment
+    , ucAndroidOSVersion
+    , ucText
+    , ucDevice
+    , ucAppVersionCode
+    , ucAppVersionName
+    , ucReviewerLanguage
+    , ucStarRating
+    , ucLastModified
+
     -- * Testers
     , Testers
     , testers
@@ -131,6 +144,7 @@
     , season
     , sStart
     , sEnd
+    , sProrations
 
     -- * PageInfo
     , PageInfo
@@ -159,6 +173,13 @@
     , ppPurchaseTimeMillis
     , ppDeveloperPayload
 
+    -- * ReviewsListResponse
+    , ReviewsListResponse
+    , reviewsListResponse
+    , rlrTokenPagination
+    , rlrPageInfo
+    , rlrReviews
+
     -- * SubscriptionPurchasesDeferResponse
     , SubscriptionPurchasesDeferResponse
     , subscriptionPurchasesDeferResponse
@@ -173,9 +194,15 @@
     -- * SubscriptionPurchase
     , SubscriptionPurchase
     , subscriptionPurchase
+    , spPaymentState
     , spKind
     , spExpiryTimeMillis
     , spAutoRenewing
+    , spPriceCurrencyCode
+    , spCancelReason
+    , spCountryCode
+    , spDeveloperPayload
+    , spPriceAmountMicros
     , spStartTimeMillis
 
     -- * AppDetails
@@ -237,6 +264,12 @@
     -- * EditsImagesUploadImageType
     , EditsImagesUploadImageType (..)
 
+    -- * Prorate
+    , Prorate
+    , prorate
+    , pStart
+    , pDefaultPrice
+
     -- * InAppProductsListResponse
     , InAppProductsListResponse
     , inAppProductsListResponse
@@ -254,6 +287,13 @@
     , apkllrKind
     , apkllrListings
 
+    -- * Review
+    , Review
+    , review
+    , rReviewId
+    , rAuthorName
+    , rComments
+
     -- * InAppProductsInsertResponse
     , InAppProductsInsertResponse
     , inAppProductsInsertResponse
@@ -273,12 +313,23 @@
     -- * EditsExpansionFilesGetExpansionFileType
     , EditsExpansionFilesGetExpansionFileType (..)
 
+    -- * ReviewsReplyRequest
+    , ReviewsReplyRequest
+    , reviewsReplyRequest
+    , rrrReplyText
+
     -- * EditsExpansionFilesPatchExpansionFileType
     , EditsExpansionFilesPatchExpansionFileType (..)
 
     -- * EditsExpansionFilesUpdateExpansionFileType
     , EditsExpansionFilesUpdateExpansionFileType (..)
 
+    -- * DeveloperComment
+    , DeveloperComment
+    , developerComment
+    , dcText
+    , dcLastModified
+
     -- * InAppProduct
     , InAppProduct
     , inAppProduct
@@ -321,6 +372,11 @@
     , apklrKind
     , apklrAPKs
 
+    -- * ReviewsReplyResponse
+    , ReviewsReplyResponse
+    , reviewsReplyResponse
+    , rrrResult
+
     -- * ExternallyHostedAPKUsesPermission
     , ExternallyHostedAPKUsesPermission
     , externallyHostedAPKUsesPermission
@@ -350,6 +406,12 @@
     , elrPageInfo
     , elrResources
 
+    -- * Comment
+    , Comment
+    , comment
+    , cUserComment
+    , cDeveloperComment
+
     -- * EditsTestersUpdateTrack
     , EditsTestersUpdateTrack (..)
 
@@ -358,6 +420,18 @@
     , inAppProductsUpdateRequest
     , inInAppProduct
 
+    -- * Timestamp
+    , Timestamp
+    , timestamp
+    , tNanos
+    , tSeconds
+
+    -- * ReviewReplyResult
+    , ReviewReplyResult
+    , reviewReplyResult
+    , rReplyText
+    , rLastEdited
+
     -- * Entitlement
     , Entitlement
     , entitlement
@@ -378,11 +452,11 @@
 import           Network.Google.Prelude
 
 -- | Default request referring to version 'v2' of the Google Play Developer API. This contains the host and root path used as a starting point for constructing service requests.
-androidPublisherService :: Service
+androidPublisherService :: ServiceConfig
 androidPublisherService
   = defaultService (ServiceId "androidpublisher:v2")
       "www.googleapis.com"
 
 -- | View and manage your Google Play Developer account
-androidpublisherScope :: OAuthScope
-androidpublisherScope = "https://www.googleapis.com/auth/androidpublisher";
+androidPublisherScope :: Proxy '["https://www.googleapis.com/auth/androidpublisher"]
+androidPublisherScope = Proxy;
diff --git a/gen/Network/Google/AndroidPublisher/Types/Product.hs b/gen/Network/Google/AndroidPublisher/Types/Product.hs
--- a/gen/Network/Google/AndroidPublisher/Types/Product.hs
+++ b/gen/Network/Google/AndroidPublisher/Types/Product.hs
@@ -9,2627 +9,3271 @@
 
 -- |
 -- Module      : Network.Google.AndroidPublisher.Types.Product
--- Copyright   : (c) 2015 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)
---
-module Network.Google.AndroidPublisher.Types.Product where
-
-import           Network.Google.AndroidPublisher.Types.Sum
-import           Network.Google.Prelude
-
--- | List of localized title and description data.
---
--- /See:/ 'inAppProductListings' smart constructor.
-newtype InAppProductListings = InAppProductListings
-    { _iaplAddtional :: HashMap Text InAppProductListing
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'InAppProductListings' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'iaplAddtional'
-inAppProductListings
-    :: HashMap Text InAppProductListing -- ^ 'iaplAddtional'
-    -> InAppProductListings
-inAppProductListings pIaplAddtional_ =
-    InAppProductListings
-    { _iaplAddtional = _Coerce # pIaplAddtional_
-    }
-
--- | The language of the localized data, as defined by BCP 47. i.e.:
--- \"en-US\", \"en-GB\".
-iaplAddtional :: Lens' InAppProductListings (HashMap Text InAppProductListing)
-iaplAddtional
-  = lens _iaplAddtional
-      (\ s a -> s{_iaplAddtional = a})
-      . _Coerce
-
-instance FromJSON InAppProductListings where
-        parseJSON
-          = withObject "InAppProductListings"
-              (\ o -> InAppProductListings <$> (parseJSONObject o))
-
-instance ToJSON InAppProductListings where
-        toJSON = toJSON . _iaplAddtional
-
---
--- /See:/ 'inAppProductsUpdateResponse' smart constructor.
-newtype InAppProductsUpdateResponse = InAppProductsUpdateResponse
-    { _iapurInAppProduct :: Maybe InAppProduct
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'InAppProductsUpdateResponse' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'iapurInAppProduct'
-inAppProductsUpdateResponse
-    :: InAppProductsUpdateResponse
-inAppProductsUpdateResponse =
-    InAppProductsUpdateResponse
-    { _iapurInAppProduct = Nothing
-    }
-
-iapurInAppProduct :: Lens' InAppProductsUpdateResponse (Maybe InAppProduct)
-iapurInAppProduct
-  = lens _iapurInAppProduct
-      (\ s a -> s{_iapurInAppProduct = a})
-
-instance FromJSON InAppProductsUpdateResponse where
-        parseJSON
-          = withObject "InAppProductsUpdateResponse"
-              (\ o ->
-                 InAppProductsUpdateResponse <$>
-                   (o .:? "inappproduct"))
-
-instance ToJSON InAppProductsUpdateResponse where
-        toJSON InAppProductsUpdateResponse{..}
-          = object
-              (catMaybes
-                 [("inappproduct" .=) <$> _iapurInAppProduct])
-
---
--- /See:/ 'monthDay' smart constructor.
-data MonthDay = MonthDay
-    { _mdDay   :: !(Maybe (Textual Word32))
-    , _mdMonth :: !(Maybe (Textual Word32))
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'MonthDay' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'mdDay'
---
--- * 'mdMonth'
-monthDay
-    :: MonthDay
-monthDay =
-    MonthDay
-    { _mdDay = Nothing
-    , _mdMonth = Nothing
-    }
-
--- | Day of a month, value in [1, 31] range. Valid range depends on the
--- specified month.
-mdDay :: Lens' MonthDay (Maybe Word32)
-mdDay
-  = lens _mdDay (\ s a -> s{_mdDay = a}) .
-      mapping _Coerce
-
--- | Month of a year. e.g. 1 = JAN, 2 = FEB etc.
-mdMonth :: Lens' MonthDay (Maybe Word32)
-mdMonth
-  = lens _mdMonth (\ s a -> s{_mdMonth = a}) .
-      mapping _Coerce
-
-instance FromJSON MonthDay where
-        parseJSON
-          = withObject "MonthDay"
-              (\ o ->
-                 MonthDay <$> (o .:? "day") <*> (o .:? "month"))
-
-instance ToJSON MonthDay where
-        toJSON MonthDay{..}
-          = object
-              (catMaybes
-                 [("day" .=) <$> _mdDay, ("month" .=) <$> _mdMonth])
-
---
--- /See:/ 'track' smart constructor.
-data Track = Track
-    { _tVersionCodes :: !(Maybe [Textual Int32])
-    , _tTrack        :: !(Maybe Text)
-    , _tUserFraction :: !(Maybe (Textual Double))
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'Track' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'tVersionCodes'
---
--- * 'tTrack'
---
--- * 'tUserFraction'
-track
-    :: Track
-track =
-    Track
-    { _tVersionCodes = Nothing
-    , _tTrack = Nothing
-    , _tUserFraction = Nothing
-    }
-
-tVersionCodes :: Lens' Track [Int32]
-tVersionCodes
-  = lens _tVersionCodes
-      (\ s a -> s{_tVersionCodes = a})
-      . _Default
-      . _Coerce
-
-tTrack :: Lens' Track (Maybe Text)
-tTrack = lens _tTrack (\ s a -> s{_tTrack = a})
-
-tUserFraction :: Lens' Track (Maybe Double)
-tUserFraction
-  = lens _tUserFraction
-      (\ s a -> s{_tUserFraction = a})
-      . mapping _Coerce
-
-instance FromJSON Track where
-        parseJSON
-          = withObject "Track"
-              (\ o ->
-                 Track <$>
-                   (o .:? "versionCodes" .!= mempty) <*> (o .:? "track")
-                     <*> (o .:? "userFraction"))
-
-instance ToJSON Track where
-        toJSON Track{..}
-          = object
-              (catMaybes
-                 [("versionCodes" .=) <$> _tVersionCodes,
-                  ("track" .=) <$> _tTrack,
-                  ("userFraction" .=) <$> _tUserFraction])
-
---
--- /See:/ 'image' smart constructor.
-data Image = Image
-    { _iURL  :: !(Maybe Text)
-    , _iSha1 :: !(Maybe Text)
-    , _iId   :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'Image' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'iURL'
---
--- * 'iSha1'
---
--- * 'iId'
-image
-    :: Image
-image =
-    Image
-    { _iURL = Nothing
-    , _iSha1 = Nothing
-    , _iId = Nothing
-    }
-
--- | A URL that will serve a preview of the image.
-iURL :: Lens' Image (Maybe Text)
-iURL = lens _iURL (\ s a -> s{_iURL = a})
-
--- | A sha1 hash of the image that was uploaded.
-iSha1 :: Lens' Image (Maybe Text)
-iSha1 = lens _iSha1 (\ s a -> s{_iSha1 = a})
-
--- | A unique id representing this image.
-iId :: Lens' Image (Maybe Text)
-iId = lens _iId (\ s a -> s{_iId = a})
-
-instance FromJSON Image where
-        parseJSON
-          = withObject "Image"
-              (\ o ->
-                 Image <$>
-                   (o .:? "url") <*> (o .:? "sha1") <*> (o .:? "id"))
-
-instance ToJSON Image where
-        toJSON Image{..}
-          = object
-              (catMaybes
-                 [("url" .=) <$> _iURL, ("sha1" .=) <$> _iSha1,
-                  ("id" .=) <$> _iId])
-
---
--- /See:/ 'inAppProductsBatchRequestEntry' smart constructor.
-data InAppProductsBatchRequestEntry = InAppProductsBatchRequestEntry
-    { _iapbreMethodName                 :: !(Maybe Text)
-    , _iapbreInAppProductsinsertrequest :: !(Maybe InAppProductsInsertRequest)
-    , _iapbreInAppProductsupdaterequest :: !(Maybe InAppProductsUpdateRequest)
-    , _iapbreBatchId                    :: !(Maybe (Textual Word32))
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'InAppProductsBatchRequestEntry' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'iapbreMethodName'
---
--- * 'iapbreInAppProductsinsertrequest'
---
--- * 'iapbreInAppProductsupdaterequest'
---
--- * 'iapbreBatchId'
-inAppProductsBatchRequestEntry
-    :: InAppProductsBatchRequestEntry
-inAppProductsBatchRequestEntry =
-    InAppProductsBatchRequestEntry
-    { _iapbreMethodName = Nothing
-    , _iapbreInAppProductsinsertrequest = Nothing
-    , _iapbreInAppProductsupdaterequest = Nothing
-    , _iapbreBatchId = Nothing
-    }
-
-iapbreMethodName :: Lens' InAppProductsBatchRequestEntry (Maybe Text)
-iapbreMethodName
-  = lens _iapbreMethodName
-      (\ s a -> s{_iapbreMethodName = a})
-
-iapbreInAppProductsinsertrequest :: Lens' InAppProductsBatchRequestEntry (Maybe InAppProductsInsertRequest)
-iapbreInAppProductsinsertrequest
-  = lens _iapbreInAppProductsinsertrequest
-      (\ s a -> s{_iapbreInAppProductsinsertrequest = a})
-
-iapbreInAppProductsupdaterequest :: Lens' InAppProductsBatchRequestEntry (Maybe InAppProductsUpdateRequest)
-iapbreInAppProductsupdaterequest
-  = lens _iapbreInAppProductsupdaterequest
-      (\ s a -> s{_iapbreInAppProductsupdaterequest = a})
-
-iapbreBatchId :: Lens' InAppProductsBatchRequestEntry (Maybe Word32)
-iapbreBatchId
-  = lens _iapbreBatchId
-      (\ s a -> s{_iapbreBatchId = a})
-      . mapping _Coerce
-
-instance FromJSON InAppProductsBatchRequestEntry
-         where
-        parseJSON
-          = withObject "InAppProductsBatchRequestEntry"
-              (\ o ->
-                 InAppProductsBatchRequestEntry <$>
-                   (o .:? "methodName") <*>
-                     (o .:? "inappproductsinsertrequest")
-                     <*> (o .:? "inappproductsupdaterequest")
-                     <*> (o .:? "batchId"))
-
-instance ToJSON InAppProductsBatchRequestEntry where
-        toJSON InAppProductsBatchRequestEntry{..}
-          = object
-              (catMaybes
-                 [("methodName" .=) <$> _iapbreMethodName,
-                  ("inappproductsinsertrequest" .=) <$>
-                    _iapbreInAppProductsinsertrequest,
-                  ("inappproductsupdaterequest" .=) <$>
-                    _iapbreInAppProductsupdaterequest,
-                  ("batchId" .=) <$> _iapbreBatchId])
-
---
--- /See:/ 'inAppProductListing' smart constructor.
-data InAppProductListing = InAppProductListing
-    { _iaplTitle       :: !(Maybe Text)
-    , _iaplDescription :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'InAppProductListing' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'iaplTitle'
---
--- * 'iaplDescription'
-inAppProductListing
-    :: InAppProductListing
-inAppProductListing =
-    InAppProductListing
-    { _iaplTitle = Nothing
-    , _iaplDescription = Nothing
-    }
-
-iaplTitle :: Lens' InAppProductListing (Maybe Text)
-iaplTitle
-  = lens _iaplTitle (\ s a -> s{_iaplTitle = a})
-
-iaplDescription :: Lens' InAppProductListing (Maybe Text)
-iaplDescription
-  = lens _iaplDescription
-      (\ s a -> s{_iaplDescription = a})
-
-instance FromJSON InAppProductListing where
-        parseJSON
-          = withObject "InAppProductListing"
-              (\ o ->
-                 InAppProductListing <$>
-                   (o .:? "title") <*> (o .:? "description"))
-
-instance ToJSON InAppProductListing where
-        toJSON InAppProductListing{..}
-          = object
-              (catMaybes
-                 [("title" .=) <$> _iaplTitle,
-                  ("description" .=) <$> _iaplDescription])
-
---
--- /See:/ 'imagesDeleteAllResponse' smart constructor.
-newtype ImagesDeleteAllResponse = ImagesDeleteAllResponse
-    { _idarDeleted :: Maybe [Image]
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'ImagesDeleteAllResponse' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'idarDeleted'
-imagesDeleteAllResponse
-    :: ImagesDeleteAllResponse
-imagesDeleteAllResponse =
-    ImagesDeleteAllResponse
-    { _idarDeleted = Nothing
-    }
-
-idarDeleted :: Lens' ImagesDeleteAllResponse [Image]
-idarDeleted
-  = lens _idarDeleted (\ s a -> s{_idarDeleted = a}) .
-      _Default
-      . _Coerce
-
-instance FromJSON ImagesDeleteAllResponse where
-        parseJSON
-          = withObject "ImagesDeleteAllResponse"
-              (\ o ->
-                 ImagesDeleteAllResponse <$>
-                   (o .:? "deleted" .!= mempty))
-
-instance ToJSON ImagesDeleteAllResponse where
-        toJSON ImagesDeleteAllResponse{..}
-          = object
-              (catMaybes [("deleted" .=) <$> _idarDeleted])
-
---
--- /See:/ 'tokenPagination' smart constructor.
-data TokenPagination = TokenPagination
-    { _tpNextPageToken     :: !(Maybe Text)
-    , _tpPreviousPageToken :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'TokenPagination' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'tpNextPageToken'
---
--- * 'tpPreviousPageToken'
-tokenPagination
-    :: TokenPagination
-tokenPagination =
-    TokenPagination
-    { _tpNextPageToken = Nothing
-    , _tpPreviousPageToken = Nothing
-    }
-
-tpNextPageToken :: Lens' TokenPagination (Maybe Text)
-tpNextPageToken
-  = lens _tpNextPageToken
-      (\ s a -> s{_tpNextPageToken = a})
-
-tpPreviousPageToken :: Lens' TokenPagination (Maybe Text)
-tpPreviousPageToken
-  = lens _tpPreviousPageToken
-      (\ s a -> s{_tpPreviousPageToken = a})
-
-instance FromJSON TokenPagination where
-        parseJSON
-          = withObject "TokenPagination"
-              (\ o ->
-                 TokenPagination <$>
-                   (o .:? "nextPageToken") <*>
-                     (o .:? "previousPageToken"))
-
-instance ToJSON TokenPagination where
-        toJSON TokenPagination{..}
-          = object
-              (catMaybes
-                 [("nextPageToken" .=) <$> _tpNextPageToken,
-                  ("previousPageToken" .=) <$> _tpPreviousPageToken])
-
---
--- /See:/ 'expansionFile' smart constructor.
-data ExpansionFile = ExpansionFile
-    { _efFileSize          :: !(Maybe (Textual Int64))
-    , _efReferencesVersion :: !(Maybe (Textual Int32))
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'ExpansionFile' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'efFileSize'
---
--- * 'efReferencesVersion'
-expansionFile
-    :: ExpansionFile
-expansionFile =
-    ExpansionFile
-    { _efFileSize = Nothing
-    , _efReferencesVersion = Nothing
-    }
-
--- | If set this field indicates that this APK has an Expansion File uploaded
--- to it: this APK does not reference another APK\'s Expansion File. The
--- field\'s value is the size of the uploaded Expansion File in bytes.
-efFileSize :: Lens' ExpansionFile (Maybe Int64)
-efFileSize
-  = lens _efFileSize (\ s a -> s{_efFileSize = a}) .
-      mapping _Coerce
-
--- | If set this APK\'s Expansion File references another APK\'s Expansion
--- File. The file_size field will not be set.
-efReferencesVersion :: Lens' ExpansionFile (Maybe Int32)
-efReferencesVersion
-  = lens _efReferencesVersion
-      (\ s a -> s{_efReferencesVersion = a})
-      . mapping _Coerce
-
-instance FromJSON ExpansionFile where
-        parseJSON
-          = withObject "ExpansionFile"
-              (\ o ->
-                 ExpansionFile <$>
-                   (o .:? "fileSize") <*> (o .:? "referencesVersion"))
-
-instance ToJSON ExpansionFile where
-        toJSON ExpansionFile{..}
-          = object
-              (catMaybes
-                 [("fileSize" .=) <$> _efFileSize,
-                  ("referencesVersion" .=) <$> _efReferencesVersion])
-
---
--- /See:/ 'testers' smart constructor.
-data Testers = Testers
-    { _tGooglePlusCommUnities :: !(Maybe [Text])
-    , _tGoogleGroups          :: !(Maybe [Text])
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'Testers' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'tGooglePlusCommUnities'
---
--- * 'tGoogleGroups'
-testers
-    :: Testers
-testers =
-    Testers
-    { _tGooglePlusCommUnities = Nothing
-    , _tGoogleGroups = Nothing
-    }
-
-tGooglePlusCommUnities :: Lens' Testers [Text]
-tGooglePlusCommUnities
-  = lens _tGooglePlusCommUnities
-      (\ s a -> s{_tGooglePlusCommUnities = a})
-      . _Default
-      . _Coerce
-
-tGoogleGroups :: Lens' Testers [Text]
-tGoogleGroups
-  = lens _tGoogleGroups
-      (\ s a -> s{_tGoogleGroups = a})
-      . _Default
-      . _Coerce
-
-instance FromJSON Testers where
-        parseJSON
-          = withObject "Testers"
-              (\ o ->
-                 Testers <$>
-                   (o .:? "googlePlusCommunities" .!= mempty) <*>
-                     (o .:? "googleGroups" .!= mempty))
-
-instance ToJSON Testers where
-        toJSON Testers{..}
-          = object
-              (catMaybes
-                 [("googlePlusCommunities" .=) <$>
-                    _tGooglePlusCommUnities,
-                  ("googleGroups" .=) <$> _tGoogleGroups])
-
---
--- /See:/ 'listing' smart constructor.
-data Listing = Listing
-    { _lFullDescription  :: !(Maybe Text)
-    , _lVideo            :: !(Maybe Text)
-    , _lShortDescription :: !(Maybe Text)
-    , _lLanguage         :: !(Maybe Text)
-    , _lTitle            :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'Listing' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'lFullDescription'
---
--- * 'lVideo'
---
--- * 'lShortDescription'
---
--- * 'lLanguage'
---
--- * 'lTitle'
-listing
-    :: Listing
-listing =
-    Listing
-    { _lFullDescription = Nothing
-    , _lVideo = Nothing
-    , _lShortDescription = Nothing
-    , _lLanguage = Nothing
-    , _lTitle = Nothing
-    }
-
--- | Full description of the app; this may be up to 4000 characters in
--- length.
-lFullDescription :: Lens' Listing (Maybe Text)
-lFullDescription
-  = lens _lFullDescription
-      (\ s a -> s{_lFullDescription = a})
-
--- | URL of a promotional YouTube video for the app.
-lVideo :: Lens' Listing (Maybe Text)
-lVideo = lens _lVideo (\ s a -> s{_lVideo = a})
-
--- | Short description of the app (previously known as promo text); this may
--- be up to 80 characters in length.
-lShortDescription :: Lens' Listing (Maybe Text)
-lShortDescription
-  = lens _lShortDescription
-      (\ s a -> s{_lShortDescription = a})
-
--- | Language localization code (for example, \"de-AT\" for Austrian German).
-lLanguage :: Lens' Listing (Maybe Text)
-lLanguage
-  = lens _lLanguage (\ s a -> s{_lLanguage = a})
-
--- | App\'s localized title.
-lTitle :: Lens' Listing (Maybe Text)
-lTitle = lens _lTitle (\ s a -> s{_lTitle = a})
-
-instance FromJSON Listing where
-        parseJSON
-          = withObject "Listing"
-              (\ o ->
-                 Listing <$>
-                   (o .:? "fullDescription") <*> (o .:? "video") <*>
-                     (o .:? "shortDescription")
-                     <*> (o .:? "language")
-                     <*> (o .:? "title"))
-
-instance ToJSON Listing where
-        toJSON Listing{..}
-          = object
-              (catMaybes
-                 [("fullDescription" .=) <$> _lFullDescription,
-                  ("video" .=) <$> _lVideo,
-                  ("shortDescription" .=) <$> _lShortDescription,
-                  ("language" .=) <$> _lLanguage,
-                  ("title" .=) <$> _lTitle])
-
---
--- /See:/ 'aPK' smart constructor.
-data APK = APK
-    { _aVersionCode :: !(Maybe (Textual Int32))
-    , _aBinary      :: !(Maybe APKBinary)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'APK' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'aVersionCode'
---
--- * 'aBinary'
-aPK
-    :: APK
-aPK =
-    APK
-    { _aVersionCode = Nothing
-    , _aBinary = Nothing
-    }
-
--- | The version code of the APK, as specified in the APK\'s manifest file.
-aVersionCode :: Lens' APK (Maybe Int32)
-aVersionCode
-  = lens _aVersionCode (\ s a -> s{_aVersionCode = a})
-      . mapping _Coerce
-
--- | Information about the binary payload of this APK.
-aBinary :: Lens' APK (Maybe APKBinary)
-aBinary = lens _aBinary (\ s a -> s{_aBinary = a})
-
-instance FromJSON APK where
-        parseJSON
-          = withObject "APK"
-              (\ o ->
-                 APK <$> (o .:? "versionCode") <*> (o .:? "binary"))
-
-instance ToJSON APK where
-        toJSON APK{..}
-          = object
-              (catMaybes
-                 [("versionCode" .=) <$> _aVersionCode,
-                  ("binary" .=) <$> _aBinary])
-
---
--- /See:/ 'subscriptionPurchasesDeferRequest' smart constructor.
-newtype SubscriptionPurchasesDeferRequest = SubscriptionPurchasesDeferRequest
-    { _spdrDeferralInfo :: Maybe SubscriptionDeferralInfo
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'SubscriptionPurchasesDeferRequest' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'spdrDeferralInfo'
-subscriptionPurchasesDeferRequest
-    :: SubscriptionPurchasesDeferRequest
-subscriptionPurchasesDeferRequest =
-    SubscriptionPurchasesDeferRequest
-    { _spdrDeferralInfo = Nothing
-    }
-
--- | The information about the new desired expiry time for the subscription.
-spdrDeferralInfo :: Lens' SubscriptionPurchasesDeferRequest (Maybe SubscriptionDeferralInfo)
-spdrDeferralInfo
-  = lens _spdrDeferralInfo
-      (\ s a -> s{_spdrDeferralInfo = a})
-
-instance FromJSON SubscriptionPurchasesDeferRequest
-         where
-        parseJSON
-          = withObject "SubscriptionPurchasesDeferRequest"
-              (\ o ->
-                 SubscriptionPurchasesDeferRequest <$>
-                   (o .:? "deferralInfo"))
-
-instance ToJSON SubscriptionPurchasesDeferRequest
-         where
-        toJSON SubscriptionPurchasesDeferRequest{..}
-          = object
-              (catMaybes
-                 [("deferralInfo" .=) <$> _spdrDeferralInfo])
-
---
--- /See:/ 'tracksListResponse' smart constructor.
-data TracksListResponse = TracksListResponse
-    { _tlrTracks :: !(Maybe [Track])
-    , _tlrKind   :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'TracksListResponse' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'tlrTracks'
---
--- * 'tlrKind'
-tracksListResponse
-    :: TracksListResponse
-tracksListResponse =
-    TracksListResponse
-    { _tlrTracks = Nothing
-    , _tlrKind = "androidpublisher#tracksListResponse"
-    }
-
-tlrTracks :: Lens' TracksListResponse [Track]
-tlrTracks
-  = lens _tlrTracks (\ s a -> s{_tlrTracks = a}) .
-      _Default
-      . _Coerce
-
--- | Identifies what kind of resource this is. Value: the fixed string
--- \"androidpublisher#tracksListResponse\".
-tlrKind :: Lens' TracksListResponse Text
-tlrKind = lens _tlrKind (\ s a -> s{_tlrKind = a})
-
-instance FromJSON TracksListResponse where
-        parseJSON
-          = withObject "TracksListResponse"
-              (\ o ->
-                 TracksListResponse <$>
-                   (o .:? "tracks" .!= mempty) <*>
-                     (o .:? "kind" .!=
-                        "androidpublisher#tracksListResponse"))
-
-instance ToJSON TracksListResponse where
-        toJSON TracksListResponse{..}
-          = object
-              (catMaybes
-                 [("tracks" .=) <$> _tlrTracks,
-                  Just ("kind" .= _tlrKind)])
-
---
--- /See:/ 'season' smart constructor.
-data Season = Season
-    { _sStart :: !(Maybe MonthDay)
-    , _sEnd   :: !(Maybe MonthDay)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'Season' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'sStart'
---
--- * 'sEnd'
-season
-    :: Season
-season =
-    Season
-    { _sStart = Nothing
-    , _sEnd = Nothing
-    }
-
--- | Inclusive start date of the recurrence period.
-sStart :: Lens' Season (Maybe MonthDay)
-sStart = lens _sStart (\ s a -> s{_sStart = a})
-
--- | Inclusive end date of the recurrence period.
-sEnd :: Lens' Season (Maybe MonthDay)
-sEnd = lens _sEnd (\ s a -> s{_sEnd = a})
-
-instance FromJSON Season where
-        parseJSON
-          = withObject "Season"
-              (\ o -> Season <$> (o .:? "start") <*> (o .:? "end"))
-
-instance ToJSON Season where
-        toJSON Season{..}
-          = object
-              (catMaybes
-                 [("start" .=) <$> _sStart, ("end" .=) <$> _sEnd])
-
---
--- /See:/ 'pageInfo' smart constructor.
-data PageInfo = PageInfo
-    { _piResultPerPage :: !(Maybe (Textual Int32))
-    , _piTotalResults  :: !(Maybe (Textual Int32))
-    , _piStartIndex    :: !(Maybe (Textual Int32))
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'PageInfo' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'piResultPerPage'
---
--- * 'piTotalResults'
---
--- * 'piStartIndex'
-pageInfo
-    :: PageInfo
-pageInfo =
-    PageInfo
-    { _piResultPerPage = Nothing
-    , _piTotalResults = Nothing
-    , _piStartIndex = Nothing
-    }
-
-piResultPerPage :: Lens' PageInfo (Maybe Int32)
-piResultPerPage
-  = lens _piResultPerPage
-      (\ s a -> s{_piResultPerPage = a})
-      . mapping _Coerce
-
-piTotalResults :: Lens' PageInfo (Maybe Int32)
-piTotalResults
-  = lens _piTotalResults
-      (\ s a -> s{_piTotalResults = a})
-      . mapping _Coerce
-
-piStartIndex :: Lens' PageInfo (Maybe Int32)
-piStartIndex
-  = lens _piStartIndex (\ s a -> s{_piStartIndex = a})
-      . mapping _Coerce
-
-instance FromJSON PageInfo where
-        parseJSON
-          = withObject "PageInfo"
-              (\ o ->
-                 PageInfo <$>
-                   (o .:? "resultPerPage") <*> (o .:? "totalResults")
-                     <*> (o .:? "startIndex"))
-
-instance ToJSON PageInfo where
-        toJSON PageInfo{..}
-          = object
-              (catMaybes
-                 [("resultPerPage" .=) <$> _piResultPerPage,
-                  ("totalResults" .=) <$> _piTotalResults,
-                  ("startIndex" .=) <$> _piStartIndex])
-
---
--- /See:/ 'imagesListResponse' smart constructor.
-newtype ImagesListResponse = ImagesListResponse
-    { _ilrImages :: Maybe [Image]
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'ImagesListResponse' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'ilrImages'
-imagesListResponse
-    :: ImagesListResponse
-imagesListResponse =
-    ImagesListResponse
-    { _ilrImages = Nothing
-    }
-
-ilrImages :: Lens' ImagesListResponse [Image]
-ilrImages
-  = lens _ilrImages (\ s a -> s{_ilrImages = a}) .
-      _Default
-      . _Coerce
-
-instance FromJSON ImagesListResponse where
-        parseJSON
-          = withObject "ImagesListResponse"
-              (\ o ->
-                 ImagesListResponse <$> (o .:? "images" .!= mempty))
-
-instance ToJSON ImagesListResponse where
-        toJSON ImagesListResponse{..}
-          = object (catMaybes [("images" .=) <$> _ilrImages])
-
--- | Represents an edit of an app. An edit allows clients to make multiple
--- changes before committing them in one operation.
---
--- /See:/ 'appEdit' smart constructor.
-data AppEdit = AppEdit
-    { _aeId                :: !(Maybe Text)
-    , _aeExpiryTimeSeconds :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'AppEdit' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'aeId'
---
--- * 'aeExpiryTimeSeconds'
-appEdit
-    :: AppEdit
-appEdit =
-    AppEdit
-    { _aeId = Nothing
-    , _aeExpiryTimeSeconds = Nothing
-    }
-
--- | The ID of the edit that can be used in subsequent API calls.
-aeId :: Lens' AppEdit (Maybe Text)
-aeId = lens _aeId (\ s a -> s{_aeId = a})
-
--- | The time at which the edit will expire and will be no longer valid for
--- use in any subsequent API calls (encoded as seconds since the Epoch).
-aeExpiryTimeSeconds :: Lens' AppEdit (Maybe Text)
-aeExpiryTimeSeconds
-  = lens _aeExpiryTimeSeconds
-      (\ s a -> s{_aeExpiryTimeSeconds = a})
-
-instance FromJSON AppEdit where
-        parseJSON
-          = withObject "AppEdit"
-              (\ o ->
-                 AppEdit <$>
-                   (o .:? "id") <*> (o .:? "expiryTimeSeconds"))
-
-instance ToJSON AppEdit where
-        toJSON AppEdit{..}
-          = object
-              (catMaybes
-                 [("id" .=) <$> _aeId,
-                  ("expiryTimeSeconds" .=) <$> _aeExpiryTimeSeconds])
-
--- | A ProductPurchase resource indicates the status of a user\'s inapp
--- product purchase.
---
--- /See:/ 'productPurchase' smart constructor.
-data ProductPurchase = ProductPurchase
-    { _ppPurchaseState      :: !(Maybe (Textual Int32))
-    , _ppConsumptionState   :: !(Maybe (Textual Int32))
-    , _ppKind               :: !Text
-    , _ppPurchaseTimeMillis :: !(Maybe (Textual Int64))
-    , _ppDeveloperPayload   :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'ProductPurchase' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'ppPurchaseState'
---
--- * 'ppConsumptionState'
---
--- * 'ppKind'
---
--- * 'ppPurchaseTimeMillis'
---
--- * 'ppDeveloperPayload'
-productPurchase
-    :: ProductPurchase
-productPurchase =
-    ProductPurchase
-    { _ppPurchaseState = Nothing
-    , _ppConsumptionState = Nothing
-    , _ppKind = "androidpublisher#productPurchase"
-    , _ppPurchaseTimeMillis = Nothing
-    , _ppDeveloperPayload = Nothing
-    }
-
--- | The purchase state of the order. Possible values are: - Purchased -
--- Cancelled
-ppPurchaseState :: Lens' ProductPurchase (Maybe Int32)
-ppPurchaseState
-  = lens _ppPurchaseState
-      (\ s a -> s{_ppPurchaseState = a})
-      . mapping _Coerce
-
--- | The consumption state of the inapp product. Possible values are: - Yet
--- to be consumed - Consumed
-ppConsumptionState :: Lens' ProductPurchase (Maybe Int32)
-ppConsumptionState
-  = lens _ppConsumptionState
-      (\ s a -> s{_ppConsumptionState = a})
-      . mapping _Coerce
-
--- | This kind represents an inappPurchase object in the androidpublisher
--- service.
-ppKind :: Lens' ProductPurchase Text
-ppKind = lens _ppKind (\ s a -> s{_ppKind = a})
-
--- | The time the product was purchased, in milliseconds since the epoch (Jan
--- 1, 1970).
-ppPurchaseTimeMillis :: Lens' ProductPurchase (Maybe Int64)
-ppPurchaseTimeMillis
-  = lens _ppPurchaseTimeMillis
-      (\ s a -> s{_ppPurchaseTimeMillis = a})
-      . mapping _Coerce
-
--- | A developer-specified string that contains supplemental information
--- about an order.
-ppDeveloperPayload :: Lens' ProductPurchase (Maybe Text)
-ppDeveloperPayload
-  = lens _ppDeveloperPayload
-      (\ s a -> s{_ppDeveloperPayload = a})
-
-instance FromJSON ProductPurchase where
-        parseJSON
-          = withObject "ProductPurchase"
-              (\ o ->
-                 ProductPurchase <$>
-                   (o .:? "purchaseState") <*>
-                     (o .:? "consumptionState")
-                     <*>
-                     (o .:? "kind" .!= "androidpublisher#productPurchase")
-                     <*> (o .:? "purchaseTimeMillis")
-                     <*> (o .:? "developerPayload"))
-
-instance ToJSON ProductPurchase where
-        toJSON ProductPurchase{..}
-          = object
-              (catMaybes
-                 [("purchaseState" .=) <$> _ppPurchaseState,
-                  ("consumptionState" .=) <$> _ppConsumptionState,
-                  Just ("kind" .= _ppKind),
-                  ("purchaseTimeMillis" .=) <$> _ppPurchaseTimeMillis,
-                  ("developerPayload" .=) <$> _ppDeveloperPayload])
-
---
--- /See:/ 'subscriptionPurchasesDeferResponse' smart constructor.
-newtype SubscriptionPurchasesDeferResponse = SubscriptionPurchasesDeferResponse
-    { _spdrNewExpiryTimeMillis :: Maybe (Textual Int64)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'SubscriptionPurchasesDeferResponse' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'spdrNewExpiryTimeMillis'
-subscriptionPurchasesDeferResponse
-    :: SubscriptionPurchasesDeferResponse
-subscriptionPurchasesDeferResponse =
-    SubscriptionPurchasesDeferResponse
-    { _spdrNewExpiryTimeMillis = Nothing
-    }
-
--- | The new expiry time for the subscription in milliseconds since the
--- Epoch.
-spdrNewExpiryTimeMillis :: Lens' SubscriptionPurchasesDeferResponse (Maybe Int64)
-spdrNewExpiryTimeMillis
-  = lens _spdrNewExpiryTimeMillis
-      (\ s a -> s{_spdrNewExpiryTimeMillis = a})
-      . mapping _Coerce
-
-instance FromJSON SubscriptionPurchasesDeferResponse
-         where
-        parseJSON
-          = withObject "SubscriptionPurchasesDeferResponse"
-              (\ o ->
-                 SubscriptionPurchasesDeferResponse <$>
-                   (o .:? "newExpiryTimeMillis"))
-
-instance ToJSON SubscriptionPurchasesDeferResponse
-         where
-        toJSON SubscriptionPurchasesDeferResponse{..}
-          = object
-              (catMaybes
-                 [("newExpiryTimeMillis" .=) <$>
-                    _spdrNewExpiryTimeMillis])
-
---
--- /See:/ 'aPKListing' smart constructor.
-data APKListing = APKListing
-    { _apklLanguage      :: !(Maybe Text)
-    , _apklRecentChanges :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'APKListing' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'apklLanguage'
---
--- * 'apklRecentChanges'
-aPKListing
-    :: APKListing
-aPKListing =
-    APKListing
-    { _apklLanguage = Nothing
-    , _apklRecentChanges = Nothing
-    }
-
--- | The language code, in BCP 47 format (eg \"en-US\").
-apklLanguage :: Lens' APKListing (Maybe Text)
-apklLanguage
-  = lens _apklLanguage (\ s a -> s{_apklLanguage = a})
-
--- | Describe what\'s new in your APK.
-apklRecentChanges :: Lens' APKListing (Maybe Text)
-apklRecentChanges
-  = lens _apklRecentChanges
-      (\ s a -> s{_apklRecentChanges = a})
-
-instance FromJSON APKListing where
-        parseJSON
-          = withObject "APKListing"
-              (\ o ->
-                 APKListing <$>
-                   (o .:? "language") <*> (o .:? "recentChanges"))
-
-instance ToJSON APKListing where
-        toJSON APKListing{..}
-          = object
-              (catMaybes
-                 [("language" .=) <$> _apklLanguage,
-                  ("recentChanges" .=) <$> _apklRecentChanges])
-
--- | A SubscriptionPurchase resource indicates the status of a user\'s
--- subscription purchase.
---
--- /See:/ 'subscriptionPurchase' smart constructor.
-data SubscriptionPurchase = SubscriptionPurchase
-    { _spKind             :: !Text
-    , _spExpiryTimeMillis :: !(Maybe (Textual Int64))
-    , _spAutoRenewing     :: !(Maybe Bool)
-    , _spStartTimeMillis  :: !(Maybe (Textual Int64))
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'SubscriptionPurchase' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'spKind'
---
--- * 'spExpiryTimeMillis'
---
--- * 'spAutoRenewing'
---
--- * 'spStartTimeMillis'
-subscriptionPurchase
-    :: SubscriptionPurchase
-subscriptionPurchase =
-    SubscriptionPurchase
-    { _spKind = "androidpublisher#subscriptionPurchase"
-    , _spExpiryTimeMillis = Nothing
-    , _spAutoRenewing = Nothing
-    , _spStartTimeMillis = Nothing
-    }
-
--- | This kind represents a subscriptionPurchase object in the
--- androidpublisher service.
-spKind :: Lens' SubscriptionPurchase Text
-spKind = lens _spKind (\ s a -> s{_spKind = a})
-
--- | Time at which the subscription will expire, in milliseconds since Epoch.
-spExpiryTimeMillis :: Lens' SubscriptionPurchase (Maybe Int64)
-spExpiryTimeMillis
-  = lens _spExpiryTimeMillis
-      (\ s a -> s{_spExpiryTimeMillis = a})
-      . mapping _Coerce
-
--- | Whether the subscription will automatically be renewed when it reaches
--- its current expiry time.
-spAutoRenewing :: Lens' SubscriptionPurchase (Maybe Bool)
-spAutoRenewing
-  = lens _spAutoRenewing
-      (\ s a -> s{_spAutoRenewing = a})
-
--- | Time at which the subscription was granted, in milliseconds since Epoch.
-spStartTimeMillis :: Lens' SubscriptionPurchase (Maybe Int64)
-spStartTimeMillis
-  = lens _spStartTimeMillis
-      (\ s a -> s{_spStartTimeMillis = a})
-      . mapping _Coerce
-
-instance FromJSON SubscriptionPurchase where
-        parseJSON
-          = withObject "SubscriptionPurchase"
-              (\ o ->
-                 SubscriptionPurchase <$>
-                   (o .:? "kind" .!=
-                      "androidpublisher#subscriptionPurchase")
-                     <*> (o .:? "expiryTimeMillis")
-                     <*> (o .:? "autoRenewing")
-                     <*> (o .:? "startTimeMillis"))
-
-instance ToJSON SubscriptionPurchase where
-        toJSON SubscriptionPurchase{..}
-          = object
-              (catMaybes
-                 [Just ("kind" .= _spKind),
-                  ("expiryTimeMillis" .=) <$> _spExpiryTimeMillis,
-                  ("autoRenewing" .=) <$> _spAutoRenewing,
-                  ("startTimeMillis" .=) <$> _spStartTimeMillis])
-
---
--- /See:/ 'appDetails' smart constructor.
-data AppDetails = AppDetails
-    { _adContactPhone    :: !(Maybe Text)
-    , _adContactEmail    :: !(Maybe Text)
-    , _adContactWebsite  :: !(Maybe Text)
-    , _adDefaultLanguage :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'AppDetails' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'adContactPhone'
---
--- * 'adContactEmail'
---
--- * 'adContactWebsite'
---
--- * 'adDefaultLanguage'
-appDetails
-    :: AppDetails
-appDetails =
-    AppDetails
-    { _adContactPhone = Nothing
-    , _adContactEmail = Nothing
-    , _adContactWebsite = Nothing
-    , _adDefaultLanguage = Nothing
-    }
-
--- | The user-visible support telephone number for this app.
-adContactPhone :: Lens' AppDetails (Maybe Text)
-adContactPhone
-  = lens _adContactPhone
-      (\ s a -> s{_adContactPhone = a})
-
--- | The user-visible support email for this app.
-adContactEmail :: Lens' AppDetails (Maybe Text)
-adContactEmail
-  = lens _adContactEmail
-      (\ s a -> s{_adContactEmail = a})
-
--- | The user-visible website for this app.
-adContactWebsite :: Lens' AppDetails (Maybe Text)
-adContactWebsite
-  = lens _adContactWebsite
-      (\ s a -> s{_adContactWebsite = a})
-
--- | Default language code, in BCP 47 format (eg \"en-US\").
-adDefaultLanguage :: Lens' AppDetails (Maybe Text)
-adDefaultLanguage
-  = lens _adDefaultLanguage
-      (\ s a -> s{_adDefaultLanguage = a})
-
-instance FromJSON AppDetails where
-        parseJSON
-          = withObject "AppDetails"
-              (\ o ->
-                 AppDetails <$>
-                   (o .:? "contactPhone") <*> (o .:? "contactEmail") <*>
-                     (o .:? "contactWebsite")
-                     <*> (o .:? "defaultLanguage"))
-
-instance ToJSON AppDetails where
-        toJSON AppDetails{..}
-          = object
-              (catMaybes
-                 [("contactPhone" .=) <$> _adContactPhone,
-                  ("contactEmail" .=) <$> _adContactEmail,
-                  ("contactWebsite" .=) <$> _adContactWebsite,
-                  ("defaultLanguage" .=) <$> _adDefaultLanguage])
-
--- | Prices per buyer region. None of these prices should be zero. In-app
--- products can never be free.
---
--- /See:/ 'inAppProductPrices' smart constructor.
-newtype InAppProductPrices = InAppProductPrices
-    { _iAppAddtional :: HashMap Text Price
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'InAppProductPrices' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'iAppAddtional'
-inAppProductPrices
-    :: HashMap Text Price -- ^ 'iAppAddtional'
-    -> InAppProductPrices
-inAppProductPrices pIAppAddtional_ =
-    InAppProductPrices
-    { _iAppAddtional = _Coerce # pIAppAddtional_
-    }
-
--- | Region code, as defined by ISO 3166-2.
-iAppAddtional :: Lens' InAppProductPrices (HashMap Text Price)
-iAppAddtional
-  = lens _iAppAddtional
-      (\ s a -> s{_iAppAddtional = a})
-      . _Coerce
-
-instance FromJSON InAppProductPrices where
-        parseJSON
-          = withObject "InAppProductPrices"
-              (\ o -> InAppProductPrices <$> (parseJSONObject o))
-
-instance ToJSON InAppProductPrices where
-        toJSON = toJSON . _iAppAddtional
-
---
--- /See:/ 'inAppProductsBatchRequest' smart constructor.
-newtype InAppProductsBatchRequest = InAppProductsBatchRequest
-    { _iapbrEntrys :: Maybe [InAppProductsBatchRequestEntry]
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'InAppProductsBatchRequest' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'iapbrEntrys'
-inAppProductsBatchRequest
-    :: InAppProductsBatchRequest
-inAppProductsBatchRequest =
-    InAppProductsBatchRequest
-    { _iapbrEntrys = Nothing
-    }
-
-iapbrEntrys :: Lens' InAppProductsBatchRequest [InAppProductsBatchRequestEntry]
-iapbrEntrys
-  = lens _iapbrEntrys (\ s a -> s{_iapbrEntrys = a}) .
-      _Default
-      . _Coerce
-
-instance FromJSON InAppProductsBatchRequest where
-        parseJSON
-          = withObject "InAppProductsBatchRequest"
-              (\ o ->
-                 InAppProductsBatchRequest <$>
-                   (o .:? "entrys" .!= mempty))
-
-instance ToJSON InAppProductsBatchRequest where
-        toJSON InAppProductsBatchRequest{..}
-          = object (catMaybes [("entrys" .=) <$> _iapbrEntrys])
-
--- | Defines an APK available for this application that is hosted externally
--- and not uploaded to Google Play. This function is only available to
--- enterprises who are using Google Play for Work, and whos application is
--- restricted to the enterprise private channel
---
--- /See:/ 'externallyHostedAPK' smart constructor.
-data ExternallyHostedAPK = ExternallyHostedAPK
-    { _ehapkApplicationLabel    :: !(Maybe Text)
-    , _ehapkMaximumSdk          :: !(Maybe (Textual Int32))
-    , _ehapkNATiveCodes         :: !(Maybe [Text])
-    , _ehapkVersionCode         :: !(Maybe (Textual Int32))
-    , _ehapkFileSha256Base64    :: !(Maybe Text)
-    , _ehapkExternallyHostedURL :: !(Maybe Text)
-    , _ehapkVersionName         :: !(Maybe Text)
-    , _ehapkPackageName         :: !(Maybe Text)
-    , _ehapkFileSize            :: !(Maybe (Textual Int64))
-    , _ehapkIconBase64          :: !(Maybe Text)
-    , _ehapkUsesFeatures        :: !(Maybe [Text])
-    , _ehapkMinimumSdk          :: !(Maybe (Textual Int32))
-    , _ehapkFileSha1Base64      :: !(Maybe Text)
-    , _ehapkUsesPermissions     :: !(Maybe [ExternallyHostedAPKUsesPermission])
-    , _ehapkCertificateBase64s  :: !(Maybe [Text])
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'ExternallyHostedAPK' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'ehapkApplicationLabel'
---
--- * 'ehapkMaximumSdk'
---
--- * 'ehapkNATiveCodes'
---
--- * 'ehapkVersionCode'
---
--- * 'ehapkFileSha256Base64'
---
--- * 'ehapkExternallyHostedURL'
---
--- * 'ehapkVersionName'
---
--- * 'ehapkPackageName'
---
--- * 'ehapkFileSize'
---
--- * 'ehapkIconBase64'
---
--- * 'ehapkUsesFeatures'
---
--- * 'ehapkMinimumSdk'
---
--- * 'ehapkFileSha1Base64'
---
--- * 'ehapkUsesPermissions'
---
--- * 'ehapkCertificateBase64s'
-externallyHostedAPK
-    :: ExternallyHostedAPK
-externallyHostedAPK =
-    ExternallyHostedAPK
-    { _ehapkApplicationLabel = Nothing
-    , _ehapkMaximumSdk = Nothing
-    , _ehapkNATiveCodes = Nothing
-    , _ehapkVersionCode = Nothing
-    , _ehapkFileSha256Base64 = Nothing
-    , _ehapkExternallyHostedURL = Nothing
-    , _ehapkVersionName = Nothing
-    , _ehapkPackageName = Nothing
-    , _ehapkFileSize = Nothing
-    , _ehapkIconBase64 = Nothing
-    , _ehapkUsesFeatures = Nothing
-    , _ehapkMinimumSdk = Nothing
-    , _ehapkFileSha1Base64 = Nothing
-    , _ehapkUsesPermissions = Nothing
-    , _ehapkCertificateBase64s = Nothing
-    }
-
--- | The application label.
-ehapkApplicationLabel :: Lens' ExternallyHostedAPK (Maybe Text)
-ehapkApplicationLabel
-  = lens _ehapkApplicationLabel
-      (\ s a -> s{_ehapkApplicationLabel = a})
-
--- | The maximum SDK supported by this APK (optional).
-ehapkMaximumSdk :: Lens' ExternallyHostedAPK (Maybe Int32)
-ehapkMaximumSdk
-  = lens _ehapkMaximumSdk
-      (\ s a -> s{_ehapkMaximumSdk = a})
-      . mapping _Coerce
-
--- | The native code environments supported by this APK (optional).
-ehapkNATiveCodes :: Lens' ExternallyHostedAPK [Text]
-ehapkNATiveCodes
-  = lens _ehapkNATiveCodes
-      (\ s a -> s{_ehapkNATiveCodes = a})
-      . _Default
-      . _Coerce
-
--- | The version code of this APK.
-ehapkVersionCode :: Lens' ExternallyHostedAPK (Maybe Int32)
-ehapkVersionCode
-  = lens _ehapkVersionCode
-      (\ s a -> s{_ehapkVersionCode = a})
-      . mapping _Coerce
-
--- | The SHA256 checksum of this APK, represented as a base64 encoded byte
--- array.
-ehapkFileSha256Base64 :: Lens' ExternallyHostedAPK (Maybe Text)
-ehapkFileSha256Base64
-  = lens _ehapkFileSha256Base64
-      (\ s a -> s{_ehapkFileSha256Base64 = a})
-
--- | The URL at which the APK is hosted. This must be an https URL.
-ehapkExternallyHostedURL :: Lens' ExternallyHostedAPK (Maybe Text)
-ehapkExternallyHostedURL
-  = lens _ehapkExternallyHostedURL
-      (\ s a -> s{_ehapkExternallyHostedURL = a})
-
--- | The version name of this APK.
-ehapkVersionName :: Lens' ExternallyHostedAPK (Maybe Text)
-ehapkVersionName
-  = lens _ehapkVersionName
-      (\ s a -> s{_ehapkVersionName = a})
-
--- | The package name.
-ehapkPackageName :: Lens' ExternallyHostedAPK (Maybe Text)
-ehapkPackageName
-  = lens _ehapkPackageName
-      (\ s a -> s{_ehapkPackageName = a})
-
--- | The file size in bytes of this APK.
-ehapkFileSize :: Lens' ExternallyHostedAPK (Maybe Int64)
-ehapkFileSize
-  = lens _ehapkFileSize
-      (\ s a -> s{_ehapkFileSize = a})
-      . mapping _Coerce
-
--- | The icon image from the APK, as a base64 encoded byte array.
-ehapkIconBase64 :: Lens' ExternallyHostedAPK (Maybe Text)
-ehapkIconBase64
-  = lens _ehapkIconBase64
-      (\ s a -> s{_ehapkIconBase64 = a})
-
--- | The features required by this APK (optional).
-ehapkUsesFeatures :: Lens' ExternallyHostedAPK [Text]
-ehapkUsesFeatures
-  = lens _ehapkUsesFeatures
-      (\ s a -> s{_ehapkUsesFeatures = a})
-      . _Default
-      . _Coerce
-
--- | The minimum SDK targeted by this APK.
-ehapkMinimumSdk :: Lens' ExternallyHostedAPK (Maybe Int32)
-ehapkMinimumSdk
-  = lens _ehapkMinimumSdk
-      (\ s a -> s{_ehapkMinimumSdk = a})
-      . mapping _Coerce
-
--- | The SHA1 checksum of this APK, represented as a base64 encoded byte
--- array.
-ehapkFileSha1Base64 :: Lens' ExternallyHostedAPK (Maybe Text)
-ehapkFileSha1Base64
-  = lens _ehapkFileSha1Base64
-      (\ s a -> s{_ehapkFileSha1Base64 = a})
-
--- | The permissions requested by this APK.
-ehapkUsesPermissions :: Lens' ExternallyHostedAPK [ExternallyHostedAPKUsesPermission]
-ehapkUsesPermissions
-  = lens _ehapkUsesPermissions
-      (\ s a -> s{_ehapkUsesPermissions = a})
-      . _Default
-      . _Coerce
-
--- | A certificate (or array of certificates if a certificate-chain is used)
--- used to signed this APK, represented as a base64 encoded byte array.
-ehapkCertificateBase64s :: Lens' ExternallyHostedAPK [Text]
-ehapkCertificateBase64s
-  = lens _ehapkCertificateBase64s
-      (\ s a -> s{_ehapkCertificateBase64s = a})
-      . _Default
-      . _Coerce
-
-instance FromJSON ExternallyHostedAPK where
-        parseJSON
-          = withObject "ExternallyHostedAPK"
-              (\ o ->
-                 ExternallyHostedAPK <$>
-                   (o .:? "applicationLabel") <*> (o .:? "maximumSdk")
-                     <*> (o .:? "nativeCodes" .!= mempty)
-                     <*> (o .:? "versionCode")
-                     <*> (o .:? "fileSha256Base64")
-                     <*> (o .:? "externallyHostedUrl")
-                     <*> (o .:? "versionName")
-                     <*> (o .:? "packageName")
-                     <*> (o .:? "fileSize")
-                     <*> (o .:? "iconBase64")
-                     <*> (o .:? "usesFeatures" .!= mempty)
-                     <*> (o .:? "minimumSdk")
-                     <*> (o .:? "fileSha1Base64")
-                     <*> (o .:? "usesPermissions" .!= mempty)
-                     <*> (o .:? "certificateBase64s" .!= mempty))
-
-instance ToJSON ExternallyHostedAPK where
-        toJSON ExternallyHostedAPK{..}
-          = object
-              (catMaybes
-                 [("applicationLabel" .=) <$> _ehapkApplicationLabel,
-                  ("maximumSdk" .=) <$> _ehapkMaximumSdk,
-                  ("nativeCodes" .=) <$> _ehapkNATiveCodes,
-                  ("versionCode" .=) <$> _ehapkVersionCode,
-                  ("fileSha256Base64" .=) <$> _ehapkFileSha256Base64,
-                  ("externallyHostedUrl" .=) <$>
-                    _ehapkExternallyHostedURL,
-                  ("versionName" .=) <$> _ehapkVersionName,
-                  ("packageName" .=) <$> _ehapkPackageName,
-                  ("fileSize" .=) <$> _ehapkFileSize,
-                  ("iconBase64" .=) <$> _ehapkIconBase64,
-                  ("usesFeatures" .=) <$> _ehapkUsesFeatures,
-                  ("minimumSdk" .=) <$> _ehapkMinimumSdk,
-                  ("fileSha1Base64" .=) <$> _ehapkFileSha1Base64,
-                  ("usesPermissions" .=) <$> _ehapkUsesPermissions,
-                  ("certificateBase64s" .=) <$>
-                    _ehapkCertificateBase64s])
-
---
--- /See:/ 'expansionFilesUploadResponse' smart constructor.
-newtype ExpansionFilesUploadResponse = ExpansionFilesUploadResponse
-    { _efurExpansionFile :: Maybe ExpansionFile
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'ExpansionFilesUploadResponse' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'efurExpansionFile'
-expansionFilesUploadResponse
-    :: ExpansionFilesUploadResponse
-expansionFilesUploadResponse =
-    ExpansionFilesUploadResponse
-    { _efurExpansionFile = Nothing
-    }
-
-efurExpansionFile :: Lens' ExpansionFilesUploadResponse (Maybe ExpansionFile)
-efurExpansionFile
-  = lens _efurExpansionFile
-      (\ s a -> s{_efurExpansionFile = a})
-
-instance FromJSON ExpansionFilesUploadResponse where
-        parseJSON
-          = withObject "ExpansionFilesUploadResponse"
-              (\ o ->
-                 ExpansionFilesUploadResponse <$>
-                   (o .:? "expansionFile"))
-
-instance ToJSON ExpansionFilesUploadResponse where
-        toJSON ExpansionFilesUploadResponse{..}
-          = object
-              (catMaybes
-                 [("expansionFile" .=) <$> _efurExpansionFile])
-
---
--- /See:/ 'imagesUploadResponse' smart constructor.
-newtype ImagesUploadResponse = ImagesUploadResponse
-    { _iurImage :: Maybe Image
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'ImagesUploadResponse' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'iurImage'
-imagesUploadResponse
-    :: ImagesUploadResponse
-imagesUploadResponse =
-    ImagesUploadResponse
-    { _iurImage = Nothing
-    }
-
-iurImage :: Lens' ImagesUploadResponse (Maybe Image)
-iurImage = lens _iurImage (\ s a -> s{_iurImage = a})
-
-instance FromJSON ImagesUploadResponse where
-        parseJSON
-          = withObject "ImagesUploadResponse"
-              (\ o -> ImagesUploadResponse <$> (o .:? "image"))
-
-instance ToJSON ImagesUploadResponse where
-        toJSON ImagesUploadResponse{..}
-          = object (catMaybes [("image" .=) <$> _iurImage])
-
---
--- /See:/ 'inAppProductsListResponse' smart constructor.
-data InAppProductsListResponse = InAppProductsListResponse
-    { _iaplrTokenPagination :: !(Maybe TokenPagination)
-    , _iaplrPageInfo        :: !(Maybe PageInfo)
-    , _iaplrKind            :: !Text
-    , _iaplrInAppProduct    :: !(Maybe [InAppProduct])
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'InAppProductsListResponse' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'iaplrTokenPagination'
---
--- * 'iaplrPageInfo'
---
--- * 'iaplrKind'
---
--- * 'iaplrInAppProduct'
-inAppProductsListResponse
-    :: InAppProductsListResponse
-inAppProductsListResponse =
-    InAppProductsListResponse
-    { _iaplrTokenPagination = Nothing
-    , _iaplrPageInfo = Nothing
-    , _iaplrKind = "androidpublisher#inappproductsListResponse"
-    , _iaplrInAppProduct = Nothing
-    }
-
-iaplrTokenPagination :: Lens' InAppProductsListResponse (Maybe TokenPagination)
-iaplrTokenPagination
-  = lens _iaplrTokenPagination
-      (\ s a -> s{_iaplrTokenPagination = a})
-
-iaplrPageInfo :: Lens' InAppProductsListResponse (Maybe PageInfo)
-iaplrPageInfo
-  = lens _iaplrPageInfo
-      (\ s a -> s{_iaplrPageInfo = a})
-
--- | Identifies what kind of resource this is. Value: the fixed string
--- \"androidpublisher#inappproductsListResponse\".
-iaplrKind :: Lens' InAppProductsListResponse Text
-iaplrKind
-  = lens _iaplrKind (\ s a -> s{_iaplrKind = a})
-
-iaplrInAppProduct :: Lens' InAppProductsListResponse [InAppProduct]
-iaplrInAppProduct
-  = lens _iaplrInAppProduct
-      (\ s a -> s{_iaplrInAppProduct = a})
-      . _Default
-      . _Coerce
-
-instance FromJSON InAppProductsListResponse where
-        parseJSON
-          = withObject "InAppProductsListResponse"
-              (\ o ->
-                 InAppProductsListResponse <$>
-                   (o .:? "tokenPagination") <*> (o .:? "pageInfo") <*>
-                     (o .:? "kind" .!=
-                        "androidpublisher#inappproductsListResponse")
-                     <*> (o .:? "inappproduct" .!= mempty))
-
-instance ToJSON InAppProductsListResponse where
-        toJSON InAppProductsListResponse{..}
-          = object
-              (catMaybes
-                 [("tokenPagination" .=) <$> _iaplrTokenPagination,
-                  ("pageInfo" .=) <$> _iaplrPageInfo,
-                  Just ("kind" .= _iaplrKind),
-                  ("inappproduct" .=) <$> _iaplrInAppProduct])
-
---
--- /See:/ 'aPKListingsListResponse' smart constructor.
-data APKListingsListResponse = APKListingsListResponse
-    { _apkllrKind     :: !Text
-    , _apkllrListings :: !(Maybe [APKListing])
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'APKListingsListResponse' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'apkllrKind'
---
--- * 'apkllrListings'
-aPKListingsListResponse
-    :: APKListingsListResponse
-aPKListingsListResponse =
-    APKListingsListResponse
-    { _apkllrKind = "androidpublisher#apkListingsListResponse"
-    , _apkllrListings = Nothing
-    }
-
--- | Identifies what kind of resource this is. Value: the fixed string
--- \"androidpublisher#apkListingsListResponse\".
-apkllrKind :: Lens' APKListingsListResponse Text
-apkllrKind
-  = lens _apkllrKind (\ s a -> s{_apkllrKind = a})
-
-apkllrListings :: Lens' APKListingsListResponse [APKListing]
-apkllrListings
-  = lens _apkllrListings
-      (\ s a -> s{_apkllrListings = a})
-      . _Default
-      . _Coerce
-
-instance FromJSON APKListingsListResponse where
-        parseJSON
-          = withObject "APKListingsListResponse"
-              (\ o ->
-                 APKListingsListResponse <$>
-                   (o .:? "kind" .!=
-                      "androidpublisher#apkListingsListResponse")
-                     <*> (o .:? "listings" .!= mempty))
-
-instance ToJSON APKListingsListResponse where
-        toJSON APKListingsListResponse{..}
-          = object
-              (catMaybes
-                 [Just ("kind" .= _apkllrKind),
-                  ("listings" .=) <$> _apkllrListings])
-
---
--- /See:/ 'inAppProductsInsertResponse' smart constructor.
-newtype InAppProductsInsertResponse = InAppProductsInsertResponse
-    { _iapirInAppProduct :: Maybe InAppProduct
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'InAppProductsInsertResponse' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'iapirInAppProduct'
-inAppProductsInsertResponse
-    :: InAppProductsInsertResponse
-inAppProductsInsertResponse =
-    InAppProductsInsertResponse
-    { _iapirInAppProduct = Nothing
-    }
-
-iapirInAppProduct :: Lens' InAppProductsInsertResponse (Maybe InAppProduct)
-iapirInAppProduct
-  = lens _iapirInAppProduct
-      (\ s a -> s{_iapirInAppProduct = a})
-
-instance FromJSON InAppProductsInsertResponse where
-        parseJSON
-          = withObject "InAppProductsInsertResponse"
-              (\ o ->
-                 InAppProductsInsertResponse <$>
-                   (o .:? "inappproduct"))
-
-instance ToJSON InAppProductsInsertResponse where
-        toJSON InAppProductsInsertResponse{..}
-          = object
-              (catMaybes
-                 [("inappproduct" .=) <$> _iapirInAppProduct])
-
---
--- /See:/ 'aPKsAddExternallyHostedResponse' smart constructor.
-newtype APKsAddExternallyHostedResponse = APKsAddExternallyHostedResponse
-    { _apkaehrExternallyHostedAPK :: Maybe ExternallyHostedAPK
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'APKsAddExternallyHostedResponse' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'apkaehrExternallyHostedAPK'
-aPKsAddExternallyHostedResponse
-    :: APKsAddExternallyHostedResponse
-aPKsAddExternallyHostedResponse =
-    APKsAddExternallyHostedResponse
-    { _apkaehrExternallyHostedAPK = Nothing
-    }
-
--- | The definition of the externally-hosted APK and where it is located.
-apkaehrExternallyHostedAPK :: Lens' APKsAddExternallyHostedResponse (Maybe ExternallyHostedAPK)
-apkaehrExternallyHostedAPK
-  = lens _apkaehrExternallyHostedAPK
-      (\ s a -> s{_apkaehrExternallyHostedAPK = a})
-
-instance FromJSON APKsAddExternallyHostedResponse
-         where
-        parseJSON
-          = withObject "APKsAddExternallyHostedResponse"
-              (\ o ->
-                 APKsAddExternallyHostedResponse <$>
-                   (o .:? "externallyHostedApk"))
-
-instance ToJSON APKsAddExternallyHostedResponse where
-        toJSON APKsAddExternallyHostedResponse{..}
-          = object
-              (catMaybes
-                 [("externallyHostedApk" .=) <$>
-                    _apkaehrExternallyHostedAPK])
-
--- | A SubscriptionDeferralInfo contains the data needed to defer a
--- subscription purchase to a future expiry time.
---
--- /See:/ 'subscriptionDeferralInfo' smart constructor.
-data SubscriptionDeferralInfo = SubscriptionDeferralInfo
-    { _sdiDesiredExpiryTimeMillis  :: !(Maybe (Textual Int64))
-    , _sdiExpectedExpiryTimeMillis :: !(Maybe (Textual Int64))
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'SubscriptionDeferralInfo' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'sdiDesiredExpiryTimeMillis'
---
--- * 'sdiExpectedExpiryTimeMillis'
-subscriptionDeferralInfo
-    :: SubscriptionDeferralInfo
-subscriptionDeferralInfo =
-    SubscriptionDeferralInfo
-    { _sdiDesiredExpiryTimeMillis = Nothing
-    , _sdiExpectedExpiryTimeMillis = Nothing
-    }
-
--- | The desired next expiry time for the subscription in milliseconds since
--- Epoch. The given time must be after the current expiry time for the
--- subscription.
-sdiDesiredExpiryTimeMillis :: Lens' SubscriptionDeferralInfo (Maybe Int64)
-sdiDesiredExpiryTimeMillis
-  = lens _sdiDesiredExpiryTimeMillis
-      (\ s a -> s{_sdiDesiredExpiryTimeMillis = a})
-      . mapping _Coerce
-
--- | The expected expiry time for the subscription. If the current expiry
--- time for the subscription is not the value specified here, the deferral
--- will not occur.
-sdiExpectedExpiryTimeMillis :: Lens' SubscriptionDeferralInfo (Maybe Int64)
-sdiExpectedExpiryTimeMillis
-  = lens _sdiExpectedExpiryTimeMillis
-      (\ s a -> s{_sdiExpectedExpiryTimeMillis = a})
-      . mapping _Coerce
-
-instance FromJSON SubscriptionDeferralInfo where
-        parseJSON
-          = withObject "SubscriptionDeferralInfo"
-              (\ o ->
-                 SubscriptionDeferralInfo <$>
-                   (o .:? "desiredExpiryTimeMillis") <*>
-                     (o .:? "expectedExpiryTimeMillis"))
-
-instance ToJSON SubscriptionDeferralInfo where
-        toJSON SubscriptionDeferralInfo{..}
-          = object
-              (catMaybes
-                 [("desiredExpiryTimeMillis" .=) <$>
-                    _sdiDesiredExpiryTimeMillis,
-                  ("expectedExpiryTimeMillis" .=) <$>
-                    _sdiExpectedExpiryTimeMillis])
-
---
--- /See:/ 'inAppProduct' smart constructor.
-data InAppProduct = InAppProduct
-    { _iapStatus             :: !(Maybe Text)
-    , _iapTrialPeriod        :: !(Maybe Text)
-    , _iapPackageName        :: !(Maybe Text)
-    , _iapSeason             :: !(Maybe Season)
-    , _iapPurchaseType       :: !(Maybe Text)
-    , _iapSubscriptionPeriod :: !(Maybe Text)
-    , _iapPrices             :: !(Maybe InAppProductPrices)
-    , _iapSKU                :: !(Maybe Text)
-    , _iapDefaultPrice       :: !(Maybe Price)
-    , _iapListings           :: !(Maybe InAppProductListings)
-    , _iapDefaultLanguage    :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'InAppProduct' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'iapStatus'
---
--- * 'iapTrialPeriod'
---
--- * 'iapPackageName'
---
--- * 'iapSeason'
---
--- * 'iapPurchaseType'
---
--- * 'iapSubscriptionPeriod'
---
--- * 'iapPrices'
---
--- * 'iapSKU'
---
--- * 'iapDefaultPrice'
---
--- * 'iapListings'
---
--- * 'iapDefaultLanguage'
-inAppProduct
-    :: InAppProduct
-inAppProduct =
-    InAppProduct
-    { _iapStatus = Nothing
-    , _iapTrialPeriod = Nothing
-    , _iapPackageName = Nothing
-    , _iapSeason = Nothing
-    , _iapPurchaseType = Nothing
-    , _iapSubscriptionPeriod = Nothing
-    , _iapPrices = Nothing
-    , _iapSKU = Nothing
-    , _iapDefaultPrice = Nothing
-    , _iapListings = Nothing
-    , _iapDefaultLanguage = Nothing
-    }
-
-iapStatus :: Lens' InAppProduct (Maybe Text)
-iapStatus
-  = lens _iapStatus (\ s a -> s{_iapStatus = a})
-
--- | Trial period, specified in ISO 8601 format. Acceptable values are
--- anything between \"P7D\" (seven days) and \"P999D\" (999 days). Seasonal
--- subscriptions cannot have a trial period.
-iapTrialPeriod :: Lens' InAppProduct (Maybe Text)
-iapTrialPeriod
-  = lens _iapTrialPeriod
-      (\ s a -> s{_iapTrialPeriod = a})
-
--- | The package name of the parent app.
-iapPackageName :: Lens' InAppProduct (Maybe Text)
-iapPackageName
-  = lens _iapPackageName
-      (\ s a -> s{_iapPackageName = a})
-
--- | Definition of a season for a seasonal subscription. Can be defined only
--- for yearly subscriptions.
-iapSeason :: Lens' InAppProduct (Maybe Season)
-iapSeason
-  = lens _iapSeason (\ s a -> s{_iapSeason = a})
-
--- | Purchase type enum value. Unmodifiable after creation.
-iapPurchaseType :: Lens' InAppProduct (Maybe Text)
-iapPurchaseType
-  = lens _iapPurchaseType
-      (\ s a -> s{_iapPurchaseType = a})
-
--- | Subscription period, specified in ISO 8601 format. Acceptable values are
--- \"P1W\" (one week), \"P1M\" (one month) and \"P1Y\" (one year).
-iapSubscriptionPeriod :: Lens' InAppProduct (Maybe Text)
-iapSubscriptionPeriod
-  = lens _iapSubscriptionPeriod
-      (\ s a -> s{_iapSubscriptionPeriod = a})
-
--- | Prices per buyer region. None of these prices should be zero. In-app
--- products can never be free.
-iapPrices :: Lens' InAppProduct (Maybe InAppProductPrices)
-iapPrices
-  = lens _iapPrices (\ s a -> s{_iapPrices = a})
-
--- | The stock-keeping-unit (SKU) of the product, unique within an app.
-iapSKU :: Lens' InAppProduct (Maybe Text)
-iapSKU = lens _iapSKU (\ s a -> s{_iapSKU = a})
-
--- | Default price cannot be zero. In-app products can never be free. Default
--- price is always in the developer\'s Checkout merchant currency.
-iapDefaultPrice :: Lens' InAppProduct (Maybe Price)
-iapDefaultPrice
-  = lens _iapDefaultPrice
-      (\ s a -> s{_iapDefaultPrice = a})
-
--- | List of localized title and description data.
-iapListings :: Lens' InAppProduct (Maybe InAppProductListings)
-iapListings
-  = lens _iapListings (\ s a -> s{_iapListings = a})
-
--- | The default language of the localized data, as defined by BCP 47. e.g.
--- \"en-US\", \"en-GB\".
-iapDefaultLanguage :: Lens' InAppProduct (Maybe Text)
-iapDefaultLanguage
-  = lens _iapDefaultLanguage
-      (\ s a -> s{_iapDefaultLanguage = a})
-
-instance FromJSON InAppProduct where
-        parseJSON
-          = withObject "InAppProduct"
-              (\ o ->
-                 InAppProduct <$>
-                   (o .:? "status") <*> (o .:? "trialPeriod") <*>
-                     (o .:? "packageName")
-                     <*> (o .:? "season")
-                     <*> (o .:? "purchaseType")
-                     <*> (o .:? "subscriptionPeriod")
-                     <*> (o .:? "prices")
-                     <*> (o .:? "sku")
-                     <*> (o .:? "defaultPrice")
-                     <*> (o .:? "listings")
-                     <*> (o .:? "defaultLanguage"))
-
-instance ToJSON InAppProduct where
-        toJSON InAppProduct{..}
-          = object
-              (catMaybes
-                 [("status" .=) <$> _iapStatus,
-                  ("trialPeriod" .=) <$> _iapTrialPeriod,
-                  ("packageName" .=) <$> _iapPackageName,
-                  ("season" .=) <$> _iapSeason,
-                  ("purchaseType" .=) <$> _iapPurchaseType,
-                  ("subscriptionPeriod" .=) <$> _iapSubscriptionPeriod,
-                  ("prices" .=) <$> _iapPrices, ("sku" .=) <$> _iapSKU,
-                  ("defaultPrice" .=) <$> _iapDefaultPrice,
-                  ("listings" .=) <$> _iapListings,
-                  ("defaultLanguage" .=) <$> _iapDefaultLanguage])
-
---
--- /See:/ 'inAppProductsBatchResponseEntry' smart constructor.
-data InAppProductsBatchResponseEntry = InAppProductsBatchResponseEntry
-    { _iInAppProductsupdateresponse :: !(Maybe InAppProductsUpdateResponse)
-    , _iInAppProductsinsertresponse :: !(Maybe InAppProductsInsertResponse)
-    , _iBatchId                     :: !(Maybe (Textual Word32))
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'InAppProductsBatchResponseEntry' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'iInAppProductsupdateresponse'
---
--- * 'iInAppProductsinsertresponse'
---
--- * 'iBatchId'
-inAppProductsBatchResponseEntry
-    :: InAppProductsBatchResponseEntry
-inAppProductsBatchResponseEntry =
-    InAppProductsBatchResponseEntry
-    { _iInAppProductsupdateresponse = Nothing
-    , _iInAppProductsinsertresponse = Nothing
-    , _iBatchId = Nothing
-    }
-
-iInAppProductsupdateresponse :: Lens' InAppProductsBatchResponseEntry (Maybe InAppProductsUpdateResponse)
-iInAppProductsupdateresponse
-  = lens _iInAppProductsupdateresponse
-      (\ s a -> s{_iInAppProductsupdateresponse = a})
-
-iInAppProductsinsertresponse :: Lens' InAppProductsBatchResponseEntry (Maybe InAppProductsInsertResponse)
-iInAppProductsinsertresponse
-  = lens _iInAppProductsinsertresponse
-      (\ s a -> s{_iInAppProductsinsertresponse = a})
-
-iBatchId :: Lens' InAppProductsBatchResponseEntry (Maybe Word32)
-iBatchId
-  = lens _iBatchId (\ s a -> s{_iBatchId = a}) .
-      mapping _Coerce
-
-instance FromJSON InAppProductsBatchResponseEntry
-         where
-        parseJSON
-          = withObject "InAppProductsBatchResponseEntry"
-              (\ o ->
-                 InAppProductsBatchResponseEntry <$>
-                   (o .:? "inappproductsupdateresponse") <*>
-                     (o .:? "inappproductsinsertresponse")
-                     <*> (o .:? "batchId"))
-
-instance ToJSON InAppProductsBatchResponseEntry where
-        toJSON InAppProductsBatchResponseEntry{..}
-          = object
-              (catMaybes
-                 [("inappproductsupdateresponse" .=) <$>
-                    _iInAppProductsupdateresponse,
-                  ("inappproductsinsertresponse" .=) <$>
-                    _iInAppProductsinsertresponse,
-                  ("batchId" .=) <$> _iBatchId])
-
---
--- /See:/ 'price' smart constructor.
-data Price = Price
-    { _pPriceMicros :: !(Maybe Text)
-    , _pCurrency    :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'Price' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'pPriceMicros'
---
--- * 'pCurrency'
-price
-    :: Price
-price =
-    Price
-    { _pPriceMicros = Nothing
-    , _pCurrency = Nothing
-    }
-
--- | The price in millionths of the currency base unit represented as a
--- string.
-pPriceMicros :: Lens' Price (Maybe Text)
-pPriceMicros
-  = lens _pPriceMicros (\ s a -> s{_pPriceMicros = a})
-
--- | 3 letter Currency code, as defined by ISO 4217.
-pCurrency :: Lens' Price (Maybe Text)
-pCurrency
-  = lens _pCurrency (\ s a -> s{_pCurrency = a})
-
-instance FromJSON Price where
-        parseJSON
-          = withObject "Price"
-              (\ o ->
-                 Price <$>
-                   (o .:? "priceMicros") <*> (o .:? "currency"))
-
-instance ToJSON Price where
-        toJSON Price{..}
-          = object
-              (catMaybes
-                 [("priceMicros" .=) <$> _pPriceMicros,
-                  ("currency" .=) <$> _pCurrency])
-
--- | Represents the binary payload of an APK.
---
--- /See:/ 'aPKBinary' smart constructor.
-newtype APKBinary = APKBinary
-    { _apkbSha1 :: Maybe Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'APKBinary' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'apkbSha1'
-aPKBinary
-    :: APKBinary
-aPKBinary =
-    APKBinary
-    { _apkbSha1 = Nothing
-    }
-
--- | A sha1 hash of the APK payload, encoded as a hex string and matching the
--- output of the sha1sum command.
-apkbSha1 :: Lens' APKBinary (Maybe Text)
-apkbSha1 = lens _apkbSha1 (\ s a -> s{_apkbSha1 = a})
-
-instance FromJSON APKBinary where
-        parseJSON
-          = withObject "APKBinary"
-              (\ o -> APKBinary <$> (o .:? "sha1"))
-
-instance ToJSON APKBinary where
-        toJSON APKBinary{..}
-          = object (catMaybes [("sha1" .=) <$> _apkbSha1])
-
---
--- /See:/ 'aPKsListResponse' smart constructor.
-data APKsListResponse = APKsListResponse
-    { _apklrKind :: !Text
-    , _apklrAPKs :: !(Maybe [APK])
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'APKsListResponse' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'apklrKind'
---
--- * 'apklrAPKs'
-aPKsListResponse
-    :: APKsListResponse
-aPKsListResponse =
-    APKsListResponse
-    { _apklrKind = "androidpublisher#apksListResponse"
-    , _apklrAPKs = Nothing
-    }
-
--- | Identifies what kind of resource this is. Value: the fixed string
--- \"androidpublisher#apksListResponse\".
-apklrKind :: Lens' APKsListResponse Text
-apklrKind
-  = lens _apklrKind (\ s a -> s{_apklrKind = a})
-
-apklrAPKs :: Lens' APKsListResponse [APK]
-apklrAPKs
-  = lens _apklrAPKs (\ s a -> s{_apklrAPKs = a}) .
-      _Default
-      . _Coerce
-
-instance FromJSON APKsListResponse where
-        parseJSON
-          = withObject "APKsListResponse"
-              (\ o ->
-                 APKsListResponse <$>
-                   (o .:? "kind" .!=
-                      "androidpublisher#apksListResponse")
-                     <*> (o .:? "apks" .!= mempty))
-
-instance ToJSON APKsListResponse where
-        toJSON APKsListResponse{..}
-          = object
-              (catMaybes
-                 [Just ("kind" .= _apklrKind),
-                  ("apks" .=) <$> _apklrAPKs])
-
--- | A permission used by this APK.
---
--- /See:/ 'externallyHostedAPKUsesPermission' smart constructor.
-data ExternallyHostedAPKUsesPermission = ExternallyHostedAPKUsesPermission
-    { _ehapkupName          :: !(Maybe Text)
-    , _ehapkupMaxSdkVersion :: !(Maybe (Textual Int32))
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'ExternallyHostedAPKUsesPermission' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'ehapkupName'
---
--- * 'ehapkupMaxSdkVersion'
-externallyHostedAPKUsesPermission
-    :: ExternallyHostedAPKUsesPermission
-externallyHostedAPKUsesPermission =
-    ExternallyHostedAPKUsesPermission
-    { _ehapkupName = Nothing
-    , _ehapkupMaxSdkVersion = Nothing
-    }
-
--- | The name of the permission requested.
-ehapkupName :: Lens' ExternallyHostedAPKUsesPermission (Maybe Text)
-ehapkupName
-  = lens _ehapkupName (\ s a -> s{_ehapkupName = a})
-
--- | Optionally, the maximum SDK version for which the permission is
--- required.
-ehapkupMaxSdkVersion :: Lens' ExternallyHostedAPKUsesPermission (Maybe Int32)
-ehapkupMaxSdkVersion
-  = lens _ehapkupMaxSdkVersion
-      (\ s a -> s{_ehapkupMaxSdkVersion = a})
-      . mapping _Coerce
-
-instance FromJSON ExternallyHostedAPKUsesPermission
-         where
-        parseJSON
-          = withObject "ExternallyHostedAPKUsesPermission"
-              (\ o ->
-                 ExternallyHostedAPKUsesPermission <$>
-                   (o .:? "name") <*> (o .:? "maxSdkVersion"))
-
-instance ToJSON ExternallyHostedAPKUsesPermission
-         where
-        toJSON ExternallyHostedAPKUsesPermission{..}
-          = object
-              (catMaybes
-                 [("name" .=) <$> _ehapkupName,
-                  ("maxSdkVersion" .=) <$> _ehapkupMaxSdkVersion])
-
---
--- /See:/ 'listingsListResponse' smart constructor.
-data ListingsListResponse = ListingsListResponse
-    { _llrKind     :: !Text
-    , _llrListings :: !(Maybe [Listing])
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'ListingsListResponse' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'llrKind'
---
--- * 'llrListings'
-listingsListResponse
-    :: ListingsListResponse
-listingsListResponse =
-    ListingsListResponse
-    { _llrKind = "androidpublisher#listingsListResponse"
-    , _llrListings = Nothing
-    }
-
--- | Identifies what kind of resource this is. Value: the fixed string
--- \"androidpublisher#listingsListResponse\".
-llrKind :: Lens' ListingsListResponse Text
-llrKind = lens _llrKind (\ s a -> s{_llrKind = a})
-
-llrListings :: Lens' ListingsListResponse [Listing]
-llrListings
-  = lens _llrListings (\ s a -> s{_llrListings = a}) .
-      _Default
-      . _Coerce
-
-instance FromJSON ListingsListResponse where
-        parseJSON
-          = withObject "ListingsListResponse"
-              (\ o ->
-                 ListingsListResponse <$>
-                   (o .:? "kind" .!=
-                      "androidpublisher#listingsListResponse")
-                     <*> (o .:? "listings" .!= mempty))
-
-instance ToJSON ListingsListResponse where
-        toJSON ListingsListResponse{..}
-          = object
-              (catMaybes
-                 [Just ("kind" .= _llrKind),
-                  ("listings" .=) <$> _llrListings])
-
---
--- /See:/ 'aPKsAddExternallyHostedRequest' smart constructor.
-newtype APKsAddExternallyHostedRequest = APKsAddExternallyHostedRequest
-    { _aExternallyHostedAPK :: Maybe ExternallyHostedAPK
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'APKsAddExternallyHostedRequest' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'aExternallyHostedAPK'
-aPKsAddExternallyHostedRequest
-    :: APKsAddExternallyHostedRequest
-aPKsAddExternallyHostedRequest =
-    APKsAddExternallyHostedRequest
-    { _aExternallyHostedAPK = Nothing
-    }
-
--- | The definition of the externally-hosted APK and where it is located.
-aExternallyHostedAPK :: Lens' APKsAddExternallyHostedRequest (Maybe ExternallyHostedAPK)
-aExternallyHostedAPK
-  = lens _aExternallyHostedAPK
-      (\ s a -> s{_aExternallyHostedAPK = a})
-
-instance FromJSON APKsAddExternallyHostedRequest
-         where
-        parseJSON
-          = withObject "APKsAddExternallyHostedRequest"
-              (\ o ->
-                 APKsAddExternallyHostedRequest <$>
-                   (o .:? "externallyHostedApk"))
-
-instance ToJSON APKsAddExternallyHostedRequest where
-        toJSON APKsAddExternallyHostedRequest{..}
-          = object
-              (catMaybes
-                 [("externallyHostedApk" .=) <$>
-                    _aExternallyHostedAPK])
-
---
--- /See:/ 'inAppProductsInsertRequest' smart constructor.
-newtype InAppProductsInsertRequest = InAppProductsInsertRequest
-    { _iInAppProduct :: Maybe InAppProduct
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'InAppProductsInsertRequest' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'iInAppProduct'
-inAppProductsInsertRequest
-    :: InAppProductsInsertRequest
-inAppProductsInsertRequest =
-    InAppProductsInsertRequest
-    { _iInAppProduct = Nothing
-    }
-
-iInAppProduct :: Lens' InAppProductsInsertRequest (Maybe InAppProduct)
-iInAppProduct
-  = lens _iInAppProduct
-      (\ s a -> s{_iInAppProduct = a})
-
-instance FromJSON InAppProductsInsertRequest where
-        parseJSON
-          = withObject "InAppProductsInsertRequest"
-              (\ o ->
-                 InAppProductsInsertRequest <$>
-                   (o .:? "inappproduct"))
-
-instance ToJSON InAppProductsInsertRequest where
-        toJSON InAppProductsInsertRequest{..}
-          = object
-              (catMaybes [("inappproduct" .=) <$> _iInAppProduct])
-
---
--- /See:/ 'entitlementsListResponse' smart constructor.
-data EntitlementsListResponse = EntitlementsListResponse
-    { _elrTokenPagination :: !(Maybe TokenPagination)
-    , _elrPageInfo        :: !(Maybe PageInfo)
-    , _elrResources       :: !(Maybe [Entitlement])
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'EntitlementsListResponse' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'elrTokenPagination'
---
--- * 'elrPageInfo'
---
--- * 'elrResources'
-entitlementsListResponse
-    :: EntitlementsListResponse
-entitlementsListResponse =
-    EntitlementsListResponse
-    { _elrTokenPagination = Nothing
-    , _elrPageInfo = Nothing
-    , _elrResources = Nothing
-    }
-
-elrTokenPagination :: Lens' EntitlementsListResponse (Maybe TokenPagination)
-elrTokenPagination
-  = lens _elrTokenPagination
-      (\ s a -> s{_elrTokenPagination = a})
-
-elrPageInfo :: Lens' EntitlementsListResponse (Maybe PageInfo)
-elrPageInfo
-  = lens _elrPageInfo (\ s a -> s{_elrPageInfo = a})
-
-elrResources :: Lens' EntitlementsListResponse [Entitlement]
-elrResources
-  = lens _elrResources (\ s a -> s{_elrResources = a})
-      . _Default
-      . _Coerce
-
-instance FromJSON EntitlementsListResponse where
-        parseJSON
-          = withObject "EntitlementsListResponse"
-              (\ o ->
-                 EntitlementsListResponse <$>
-                   (o .:? "tokenPagination") <*> (o .:? "pageInfo") <*>
-                     (o .:? "resources" .!= mempty))
-
-instance ToJSON EntitlementsListResponse where
-        toJSON EntitlementsListResponse{..}
-          = object
-              (catMaybes
-                 [("tokenPagination" .=) <$> _elrTokenPagination,
-                  ("pageInfo" .=) <$> _elrPageInfo,
-                  ("resources" .=) <$> _elrResources])
-
---
--- /See:/ 'inAppProductsUpdateRequest' smart constructor.
-newtype InAppProductsUpdateRequest = InAppProductsUpdateRequest
-    { _inInAppProduct :: Maybe InAppProduct
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'InAppProductsUpdateRequest' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'inInAppProduct'
-inAppProductsUpdateRequest
-    :: InAppProductsUpdateRequest
-inAppProductsUpdateRequest =
-    InAppProductsUpdateRequest
-    { _inInAppProduct = Nothing
-    }
-
-inInAppProduct :: Lens' InAppProductsUpdateRequest (Maybe InAppProduct)
-inInAppProduct
-  = lens _inInAppProduct
-      (\ s a -> s{_inInAppProduct = a})
-
-instance FromJSON InAppProductsUpdateRequest where
-        parseJSON
-          = withObject "InAppProductsUpdateRequest"
-              (\ o ->
-                 InAppProductsUpdateRequest <$>
-                   (o .:? "inappproduct"))
-
-instance ToJSON InAppProductsUpdateRequest where
-        toJSON InAppProductsUpdateRequest{..}
-          = object
-              (catMaybes [("inappproduct" .=) <$> _inInAppProduct])
-
--- | An Entitlement resource indicates a user\'s current entitlement to an
--- inapp item or subscription.
---
--- /See:/ 'entitlement' smart constructor.
-data Entitlement = Entitlement
-    { _eKind        :: !Text
-    , _eProductType :: !(Maybe Text)
-    , _eToken       :: !(Maybe Text)
-    , _eProductId   :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'Entitlement' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'eKind'
---
--- * 'eProductType'
---
--- * 'eToken'
---
--- * 'eProductId'
-entitlement
-    :: Entitlement
-entitlement =
-    Entitlement
-    { _eKind = "androidpublisher#entitlement"
-    , _eProductType = Nothing
-    , _eToken = Nothing
-    , _eProductId = Nothing
-    }
-
--- | This kind represents an entitlement object in the androidpublisher
--- service.
-eKind :: Lens' Entitlement Text
-eKind = lens _eKind (\ s a -> s{_eKind = a})
-
--- | The type of the inapp product. Possible values are: - In-app item:
--- \"inapp\" - Subscription: \"subs\"
-eProductType :: Lens' Entitlement (Maybe Text)
-eProductType
-  = lens _eProductType (\ s a -> s{_eProductType = a})
-
--- | The token which can be verified using the subscriptions or products API.
-eToken :: Lens' Entitlement (Maybe Text)
-eToken = lens _eToken (\ s a -> s{_eToken = a})
-
--- | The SKU of the product.
-eProductId :: Lens' Entitlement (Maybe Text)
-eProductId
-  = lens _eProductId (\ s a -> s{_eProductId = a})
-
-instance FromJSON Entitlement where
-        parseJSON
-          = withObject "Entitlement"
-              (\ o ->
-                 Entitlement <$>
-                   (o .:? "kind" .!= "androidpublisher#entitlement") <*>
-                     (o .:? "productType")
-                     <*> (o .:? "token")
-                     <*> (o .:? "productId"))
-
-instance ToJSON Entitlement where
-        toJSON Entitlement{..}
-          = object
-              (catMaybes
-                 [Just ("kind" .= _eKind),
-                  ("productType" .=) <$> _eProductType,
-                  ("token" .=) <$> _eToken,
-                  ("productId" .=) <$> _eProductId])
-
---
--- /See:/ 'inAppProductsBatchResponse' smart constructor.
-data InAppProductsBatchResponse = InAppProductsBatchResponse
-    { _iEntrys :: !(Maybe [InAppProductsBatchResponseEntry])
-    , _iKind   :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'InAppProductsBatchResponse' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'iEntrys'
---
--- * 'iKind'
-inAppProductsBatchResponse
-    :: InAppProductsBatchResponse
-inAppProductsBatchResponse =
-    InAppProductsBatchResponse
-    { _iEntrys = Nothing
-    , _iKind = "androidpublisher#inappproductsBatchResponse"
-    }
-
-iEntrys :: Lens' InAppProductsBatchResponse [InAppProductsBatchResponseEntry]
-iEntrys
-  = lens _iEntrys (\ s a -> s{_iEntrys = a}) . _Default
-      . _Coerce
-
--- | Identifies what kind of resource this is. Value: the fixed string
--- \"androidpublisher#inappproductsBatchResponse\".
-iKind :: Lens' InAppProductsBatchResponse Text
-iKind = lens _iKind (\ s a -> s{_iKind = a})
-
-instance FromJSON InAppProductsBatchResponse where
-        parseJSON
-          = withObject "InAppProductsBatchResponse"
-              (\ o ->
-                 InAppProductsBatchResponse <$>
-                   (o .:? "entrys" .!= mempty) <*>
-                     (o .:? "kind" .!=
-                        "androidpublisher#inappproductsBatchResponse"))
-
-instance ToJSON InAppProductsBatchResponse where
-        toJSON InAppProductsBatchResponse{..}
+-- Copyright   : (c) 2015-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)
+--
+module Network.Google.AndroidPublisher.Types.Product where
+
+import           Network.Google.AndroidPublisher.Types.Sum
+import           Network.Google.Prelude
+
+-- | List of localized title and description data.
+--
+-- /See:/ 'inAppProductListings' smart constructor.
+newtype InAppProductListings = InAppProductListings'
+    { _iaplAddtional :: HashMap Text InAppProductListing
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'InAppProductListings' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'iaplAddtional'
+inAppProductListings
+    :: HashMap Text InAppProductListing -- ^ 'iaplAddtional'
+    -> InAppProductListings
+inAppProductListings pIaplAddtional_ =
+    InAppProductListings'
+    { _iaplAddtional = _Coerce # pIaplAddtional_
+    }
+
+-- | The language of the localized data, as defined by BCP 47. i.e.:
+-- \"en-US\", \"en-GB\".
+iaplAddtional :: Lens' InAppProductListings (HashMap Text InAppProductListing)
+iaplAddtional
+  = lens _iaplAddtional
+      (\ s a -> s{_iaplAddtional = a})
+      . _Coerce
+
+instance FromJSON InAppProductListings where
+        parseJSON
+          = withObject "InAppProductListings"
+              (\ o ->
+                 InAppProductListings' <$> (parseJSONObject o))
+
+instance ToJSON InAppProductListings where
+        toJSON = toJSON . _iaplAddtional
+
+--
+-- /See:/ 'inAppProductsUpdateResponse' smart constructor.
+newtype InAppProductsUpdateResponse = InAppProductsUpdateResponse'
+    { _iapurInAppProduct :: Maybe InAppProduct
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'InAppProductsUpdateResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'iapurInAppProduct'
+inAppProductsUpdateResponse
+    :: InAppProductsUpdateResponse
+inAppProductsUpdateResponse =
+    InAppProductsUpdateResponse'
+    { _iapurInAppProduct = Nothing
+    }
+
+iapurInAppProduct :: Lens' InAppProductsUpdateResponse (Maybe InAppProduct)
+iapurInAppProduct
+  = lens _iapurInAppProduct
+      (\ s a -> s{_iapurInAppProduct = a})
+
+instance FromJSON InAppProductsUpdateResponse where
+        parseJSON
+          = withObject "InAppProductsUpdateResponse"
+              (\ o ->
+                 InAppProductsUpdateResponse' <$>
+                   (o .:? "inappproduct"))
+
+instance ToJSON InAppProductsUpdateResponse where
+        toJSON InAppProductsUpdateResponse'{..}
+          = object
+              (catMaybes
+                 [("inappproduct" .=) <$> _iapurInAppProduct])
+
+--
+-- /See:/ 'monthDay' smart constructor.
+data MonthDay = MonthDay'
+    { _mdDay   :: !(Maybe (Textual Word32))
+    , _mdMonth :: !(Maybe (Textual Word32))
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'MonthDay' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'mdDay'
+--
+-- * 'mdMonth'
+monthDay
+    :: MonthDay
+monthDay =
+    MonthDay'
+    { _mdDay = Nothing
+    , _mdMonth = Nothing
+    }
+
+-- | Day of a month, value in [1, 31] range. Valid range depends on the
+-- specified month.
+mdDay :: Lens' MonthDay (Maybe Word32)
+mdDay
+  = lens _mdDay (\ s a -> s{_mdDay = a}) .
+      mapping _Coerce
+
+-- | Month of a year. e.g. 1 = JAN, 2 = FEB etc.
+mdMonth :: Lens' MonthDay (Maybe Word32)
+mdMonth
+  = lens _mdMonth (\ s a -> s{_mdMonth = a}) .
+      mapping _Coerce
+
+instance FromJSON MonthDay where
+        parseJSON
+          = withObject "MonthDay"
+              (\ o ->
+                 MonthDay' <$> (o .:? "day") <*> (o .:? "month"))
+
+instance ToJSON MonthDay where
+        toJSON MonthDay'{..}
+          = object
+              (catMaybes
+                 [("day" .=) <$> _mdDay, ("month" .=) <$> _mdMonth])
+
+--
+-- /See:/ 'track' smart constructor.
+data Track = Track'
+    { _tVersionCodes :: !(Maybe [Textual Int32])
+    , _tTrack        :: !(Maybe Text)
+    , _tUserFraction :: !(Maybe (Textual Double))
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'Track' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'tVersionCodes'
+--
+-- * 'tTrack'
+--
+-- * 'tUserFraction'
+track
+    :: Track
+track =
+    Track'
+    { _tVersionCodes = Nothing
+    , _tTrack = Nothing
+    , _tUserFraction = Nothing
+    }
+
+tVersionCodes :: Lens' Track [Int32]
+tVersionCodes
+  = lens _tVersionCodes
+      (\ s a -> s{_tVersionCodes = a})
+      . _Default
+      . _Coerce
+
+tTrack :: Lens' Track (Maybe Text)
+tTrack = lens _tTrack (\ s a -> s{_tTrack = a})
+
+tUserFraction :: Lens' Track (Maybe Double)
+tUserFraction
+  = lens _tUserFraction
+      (\ s a -> s{_tUserFraction = a})
+      . mapping _Coerce
+
+instance FromJSON Track where
+        parseJSON
+          = withObject "Track"
+              (\ o ->
+                 Track' <$>
+                   (o .:? "versionCodes" .!= mempty) <*> (o .:? "track")
+                     <*> (o .:? "userFraction"))
+
+instance ToJSON Track where
+        toJSON Track'{..}
+          = object
+              (catMaybes
+                 [("versionCodes" .=) <$> _tVersionCodes,
+                  ("track" .=) <$> _tTrack,
+                  ("userFraction" .=) <$> _tUserFraction])
+
+--
+-- /See:/ 'image' smart constructor.
+data Image = Image'
+    { _iURL  :: !(Maybe Text)
+    , _iSha1 :: !(Maybe Text)
+    , _iId   :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'Image' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'iURL'
+--
+-- * 'iSha1'
+--
+-- * 'iId'
+image
+    :: Image
+image =
+    Image'
+    { _iURL = Nothing
+    , _iSha1 = Nothing
+    , _iId = Nothing
+    }
+
+-- | A URL that will serve a preview of the image.
+iURL :: Lens' Image (Maybe Text)
+iURL = lens _iURL (\ s a -> s{_iURL = a})
+
+-- | A sha1 hash of the image that was uploaded.
+iSha1 :: Lens' Image (Maybe Text)
+iSha1 = lens _iSha1 (\ s a -> s{_iSha1 = a})
+
+-- | A unique id representing this image.
+iId :: Lens' Image (Maybe Text)
+iId = lens _iId (\ s a -> s{_iId = a})
+
+instance FromJSON Image where
+        parseJSON
+          = withObject "Image"
+              (\ o ->
+                 Image' <$>
+                   (o .:? "url") <*> (o .:? "sha1") <*> (o .:? "id"))
+
+instance ToJSON Image where
+        toJSON Image'{..}
+          = object
+              (catMaybes
+                 [("url" .=) <$> _iURL, ("sha1" .=) <$> _iSha1,
+                  ("id" .=) <$> _iId])
+
+--
+-- /See:/ 'inAppProductsBatchRequestEntry' smart constructor.
+data InAppProductsBatchRequestEntry = InAppProductsBatchRequestEntry'
+    { _iapbreMethodName                 :: !(Maybe Text)
+    , _iapbreInAppProductsinsertrequest :: !(Maybe InAppProductsInsertRequest)
+    , _iapbreInAppProductsupdaterequest :: !(Maybe InAppProductsUpdateRequest)
+    , _iapbreBatchId                    :: !(Maybe (Textual Word32))
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'InAppProductsBatchRequestEntry' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'iapbreMethodName'
+--
+-- * 'iapbreInAppProductsinsertrequest'
+--
+-- * 'iapbreInAppProductsupdaterequest'
+--
+-- * 'iapbreBatchId'
+inAppProductsBatchRequestEntry
+    :: InAppProductsBatchRequestEntry
+inAppProductsBatchRequestEntry =
+    InAppProductsBatchRequestEntry'
+    { _iapbreMethodName = Nothing
+    , _iapbreInAppProductsinsertrequest = Nothing
+    , _iapbreInAppProductsupdaterequest = Nothing
+    , _iapbreBatchId = Nothing
+    }
+
+iapbreMethodName :: Lens' InAppProductsBatchRequestEntry (Maybe Text)
+iapbreMethodName
+  = lens _iapbreMethodName
+      (\ s a -> s{_iapbreMethodName = a})
+
+iapbreInAppProductsinsertrequest :: Lens' InAppProductsBatchRequestEntry (Maybe InAppProductsInsertRequest)
+iapbreInAppProductsinsertrequest
+  = lens _iapbreInAppProductsinsertrequest
+      (\ s a -> s{_iapbreInAppProductsinsertrequest = a})
+
+iapbreInAppProductsupdaterequest :: Lens' InAppProductsBatchRequestEntry (Maybe InAppProductsUpdateRequest)
+iapbreInAppProductsupdaterequest
+  = lens _iapbreInAppProductsupdaterequest
+      (\ s a -> s{_iapbreInAppProductsupdaterequest = a})
+
+iapbreBatchId :: Lens' InAppProductsBatchRequestEntry (Maybe Word32)
+iapbreBatchId
+  = lens _iapbreBatchId
+      (\ s a -> s{_iapbreBatchId = a})
+      . mapping _Coerce
+
+instance FromJSON InAppProductsBatchRequestEntry
+         where
+        parseJSON
+          = withObject "InAppProductsBatchRequestEntry"
+              (\ o ->
+                 InAppProductsBatchRequestEntry' <$>
+                   (o .:? "methodName") <*>
+                     (o .:? "inappproductsinsertrequest")
+                     <*> (o .:? "inappproductsupdaterequest")
+                     <*> (o .:? "batchId"))
+
+instance ToJSON InAppProductsBatchRequestEntry where
+        toJSON InAppProductsBatchRequestEntry'{..}
+          = object
+              (catMaybes
+                 [("methodName" .=) <$> _iapbreMethodName,
+                  ("inappproductsinsertrequest" .=) <$>
+                    _iapbreInAppProductsinsertrequest,
+                  ("inappproductsupdaterequest" .=) <$>
+                    _iapbreInAppProductsupdaterequest,
+                  ("batchId" .=) <$> _iapbreBatchId])
+
+--
+-- /See:/ 'inAppProductListing' smart constructor.
+data InAppProductListing = InAppProductListing'
+    { _iaplTitle       :: !(Maybe Text)
+    , _iaplDescription :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'InAppProductListing' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'iaplTitle'
+--
+-- * 'iaplDescription'
+inAppProductListing
+    :: InAppProductListing
+inAppProductListing =
+    InAppProductListing'
+    { _iaplTitle = Nothing
+    , _iaplDescription = Nothing
+    }
+
+iaplTitle :: Lens' InAppProductListing (Maybe Text)
+iaplTitle
+  = lens _iaplTitle (\ s a -> s{_iaplTitle = a})
+
+iaplDescription :: Lens' InAppProductListing (Maybe Text)
+iaplDescription
+  = lens _iaplDescription
+      (\ s a -> s{_iaplDescription = a})
+
+instance FromJSON InAppProductListing where
+        parseJSON
+          = withObject "InAppProductListing"
+              (\ o ->
+                 InAppProductListing' <$>
+                   (o .:? "title") <*> (o .:? "description"))
+
+instance ToJSON InAppProductListing where
+        toJSON InAppProductListing'{..}
+          = object
+              (catMaybes
+                 [("title" .=) <$> _iaplTitle,
+                  ("description" .=) <$> _iaplDescription])
+
+--
+-- /See:/ 'imagesDeleteAllResponse' smart constructor.
+newtype ImagesDeleteAllResponse = ImagesDeleteAllResponse'
+    { _idarDeleted :: Maybe [Image]
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ImagesDeleteAllResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'idarDeleted'
+imagesDeleteAllResponse
+    :: ImagesDeleteAllResponse
+imagesDeleteAllResponse =
+    ImagesDeleteAllResponse'
+    { _idarDeleted = Nothing
+    }
+
+idarDeleted :: Lens' ImagesDeleteAllResponse [Image]
+idarDeleted
+  = lens _idarDeleted (\ s a -> s{_idarDeleted = a}) .
+      _Default
+      . _Coerce
+
+instance FromJSON ImagesDeleteAllResponse where
+        parseJSON
+          = withObject "ImagesDeleteAllResponse"
+              (\ o ->
+                 ImagesDeleteAllResponse' <$>
+                   (o .:? "deleted" .!= mempty))
+
+instance ToJSON ImagesDeleteAllResponse where
+        toJSON ImagesDeleteAllResponse'{..}
+          = object
+              (catMaybes [("deleted" .=) <$> _idarDeleted])
+
+--
+-- /See:/ 'tokenPagination' smart constructor.
+data TokenPagination = TokenPagination'
+    { _tpNextPageToken     :: !(Maybe Text)
+    , _tpPreviousPageToken :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'TokenPagination' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'tpNextPageToken'
+--
+-- * 'tpPreviousPageToken'
+tokenPagination
+    :: TokenPagination
+tokenPagination =
+    TokenPagination'
+    { _tpNextPageToken = Nothing
+    , _tpPreviousPageToken = Nothing
+    }
+
+tpNextPageToken :: Lens' TokenPagination (Maybe Text)
+tpNextPageToken
+  = lens _tpNextPageToken
+      (\ s a -> s{_tpNextPageToken = a})
+
+tpPreviousPageToken :: Lens' TokenPagination (Maybe Text)
+tpPreviousPageToken
+  = lens _tpPreviousPageToken
+      (\ s a -> s{_tpPreviousPageToken = a})
+
+instance FromJSON TokenPagination where
+        parseJSON
+          = withObject "TokenPagination"
+              (\ o ->
+                 TokenPagination' <$>
+                   (o .:? "nextPageToken") <*>
+                     (o .:? "previousPageToken"))
+
+instance ToJSON TokenPagination where
+        toJSON TokenPagination'{..}
+          = object
+              (catMaybes
+                 [("nextPageToken" .=) <$> _tpNextPageToken,
+                  ("previousPageToken" .=) <$> _tpPreviousPageToken])
+
+--
+-- /See:/ 'expansionFile' smart constructor.
+data ExpansionFile = ExpansionFile'
+    { _efFileSize          :: !(Maybe (Textual Int64))
+    , _efReferencesVersion :: !(Maybe (Textual Int32))
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ExpansionFile' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'efFileSize'
+--
+-- * 'efReferencesVersion'
+expansionFile
+    :: ExpansionFile
+expansionFile =
+    ExpansionFile'
+    { _efFileSize = Nothing
+    , _efReferencesVersion = Nothing
+    }
+
+-- | If set this field indicates that this APK has an Expansion File uploaded
+-- to it: this APK does not reference another APK\'s Expansion File. The
+-- field\'s value is the size of the uploaded Expansion File in bytes.
+efFileSize :: Lens' ExpansionFile (Maybe Int64)
+efFileSize
+  = lens _efFileSize (\ s a -> s{_efFileSize = a}) .
+      mapping _Coerce
+
+-- | If set this APK\'s Expansion File references another APK\'s Expansion
+-- File. The file_size field will not be set.
+efReferencesVersion :: Lens' ExpansionFile (Maybe Int32)
+efReferencesVersion
+  = lens _efReferencesVersion
+      (\ s a -> s{_efReferencesVersion = a})
+      . mapping _Coerce
+
+instance FromJSON ExpansionFile where
+        parseJSON
+          = withObject "ExpansionFile"
+              (\ o ->
+                 ExpansionFile' <$>
+                   (o .:? "fileSize") <*> (o .:? "referencesVersion"))
+
+instance ToJSON ExpansionFile where
+        toJSON ExpansionFile'{..}
+          = object
+              (catMaybes
+                 [("fileSize" .=) <$> _efFileSize,
+                  ("referencesVersion" .=) <$> _efReferencesVersion])
+
+--
+-- /See:/ 'userComment' smart constructor.
+data UserComment = UserComment'
+    { _ucAndroidOSVersion :: !(Maybe (Textual Int32))
+    , _ucText             :: !(Maybe Text)
+    , _ucDevice           :: !(Maybe Text)
+    , _ucAppVersionCode   :: !(Maybe (Textual Int32))
+    , _ucAppVersionName   :: !(Maybe Text)
+    , _ucReviewerLanguage :: !(Maybe Text)
+    , _ucStarRating       :: !(Maybe (Textual Int32))
+    , _ucLastModified     :: !(Maybe Timestamp)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'UserComment' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'ucAndroidOSVersion'
+--
+-- * 'ucText'
+--
+-- * 'ucDevice'
+--
+-- * 'ucAppVersionCode'
+--
+-- * 'ucAppVersionName'
+--
+-- * 'ucReviewerLanguage'
+--
+-- * 'ucStarRating'
+--
+-- * 'ucLastModified'
+userComment
+    :: UserComment
+userComment =
+    UserComment'
+    { _ucAndroidOSVersion = Nothing
+    , _ucText = Nothing
+    , _ucDevice = Nothing
+    , _ucAppVersionCode = Nothing
+    , _ucAppVersionName = Nothing
+    , _ucReviewerLanguage = Nothing
+    , _ucStarRating = Nothing
+    , _ucLastModified = Nothing
+    }
+
+-- | Integer Android SDK version of the user\'s device at the time the review
+-- was written, e.g. 23 is Marshmallow. May be absent.
+ucAndroidOSVersion :: Lens' UserComment (Maybe Int32)
+ucAndroidOSVersion
+  = lens _ucAndroidOSVersion
+      (\ s a -> s{_ucAndroidOSVersion = a})
+      . mapping _Coerce
+
+-- | The content of the comment, i.e. review body. In some cases users have
+-- been able to write a review with separate title and body; in those cases
+-- the title and body are concatenated and separated by a tab character.
+ucText :: Lens' UserComment (Maybe Text)
+ucText = lens _ucText (\ s a -> s{_ucText = a})
+
+-- | Codename for the reviewer\'s device, e.g. klte, flounder. May be absent.
+ucDevice :: Lens' UserComment (Maybe Text)
+ucDevice = lens _ucDevice (\ s a -> s{_ucDevice = a})
+
+-- | Integer version code of the app as installed at the time the review was
+-- written. May be absent.
+ucAppVersionCode :: Lens' UserComment (Maybe Int32)
+ucAppVersionCode
+  = lens _ucAppVersionCode
+      (\ s a -> s{_ucAppVersionCode = a})
+      . mapping _Coerce
+
+-- | String version name of the app as installed at the time the review was
+-- written. May be absent.
+ucAppVersionName :: Lens' UserComment (Maybe Text)
+ucAppVersionName
+  = lens _ucAppVersionName
+      (\ s a -> s{_ucAppVersionName = a})
+
+-- | Language code for the reviewer. This is taken from the device settings
+-- so is not guaranteed to match the language the review is written in. May
+-- be absent.
+ucReviewerLanguage :: Lens' UserComment (Maybe Text)
+ucReviewerLanguage
+  = lens _ucReviewerLanguage
+      (\ s a -> s{_ucReviewerLanguage = a})
+
+-- | The star rating associated with the review, from 1 to 5.
+ucStarRating :: Lens' UserComment (Maybe Int32)
+ucStarRating
+  = lens _ucStarRating (\ s a -> s{_ucStarRating = a})
+      . mapping _Coerce
+
+-- | The last time at which this comment was updated.
+ucLastModified :: Lens' UserComment (Maybe Timestamp)
+ucLastModified
+  = lens _ucLastModified
+      (\ s a -> s{_ucLastModified = a})
+
+instance FromJSON UserComment where
+        parseJSON
+          = withObject "UserComment"
+              (\ o ->
+                 UserComment' <$>
+                   (o .:? "androidOsVersion") <*> (o .:? "text") <*>
+                     (o .:? "device")
+                     <*> (o .:? "appVersionCode")
+                     <*> (o .:? "appVersionName")
+                     <*> (o .:? "reviewerLanguage")
+                     <*> (o .:? "starRating")
+                     <*> (o .:? "lastModified"))
+
+instance ToJSON UserComment where
+        toJSON UserComment'{..}
+          = object
+              (catMaybes
+                 [("androidOsVersion" .=) <$> _ucAndroidOSVersion,
+                  ("text" .=) <$> _ucText, ("device" .=) <$> _ucDevice,
+                  ("appVersionCode" .=) <$> _ucAppVersionCode,
+                  ("appVersionName" .=) <$> _ucAppVersionName,
+                  ("reviewerLanguage" .=) <$> _ucReviewerLanguage,
+                  ("starRating" .=) <$> _ucStarRating,
+                  ("lastModified" .=) <$> _ucLastModified])
+
+--
+-- /See:/ 'testers' smart constructor.
+data Testers = Testers'
+    { _tGooglePlusCommUnities :: !(Maybe [Text])
+    , _tGoogleGroups          :: !(Maybe [Text])
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'Testers' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'tGooglePlusCommUnities'
+--
+-- * 'tGoogleGroups'
+testers
+    :: Testers
+testers =
+    Testers'
+    { _tGooglePlusCommUnities = Nothing
+    , _tGoogleGroups = Nothing
+    }
+
+tGooglePlusCommUnities :: Lens' Testers [Text]
+tGooglePlusCommUnities
+  = lens _tGooglePlusCommUnities
+      (\ s a -> s{_tGooglePlusCommUnities = a})
+      . _Default
+      . _Coerce
+
+tGoogleGroups :: Lens' Testers [Text]
+tGoogleGroups
+  = lens _tGoogleGroups
+      (\ s a -> s{_tGoogleGroups = a})
+      . _Default
+      . _Coerce
+
+instance FromJSON Testers where
+        parseJSON
+          = withObject "Testers"
+              (\ o ->
+                 Testers' <$>
+                   (o .:? "googlePlusCommunities" .!= mempty) <*>
+                     (o .:? "googleGroups" .!= mempty))
+
+instance ToJSON Testers where
+        toJSON Testers'{..}
+          = object
+              (catMaybes
+                 [("googlePlusCommunities" .=) <$>
+                    _tGooglePlusCommUnities,
+                  ("googleGroups" .=) <$> _tGoogleGroups])
+
+--
+-- /See:/ 'listing' smart constructor.
+data Listing = Listing'
+    { _lFullDescription  :: !(Maybe Text)
+    , _lVideo            :: !(Maybe Text)
+    , _lShortDescription :: !(Maybe Text)
+    , _lLanguage         :: !(Maybe Text)
+    , _lTitle            :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'Listing' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'lFullDescription'
+--
+-- * 'lVideo'
+--
+-- * 'lShortDescription'
+--
+-- * 'lLanguage'
+--
+-- * 'lTitle'
+listing
+    :: Listing
+listing =
+    Listing'
+    { _lFullDescription = Nothing
+    , _lVideo = Nothing
+    , _lShortDescription = Nothing
+    , _lLanguage = Nothing
+    , _lTitle = Nothing
+    }
+
+-- | Full description of the app; this may be up to 4000 characters in
+-- length.
+lFullDescription :: Lens' Listing (Maybe Text)
+lFullDescription
+  = lens _lFullDescription
+      (\ s a -> s{_lFullDescription = a})
+
+-- | URL of a promotional YouTube video for the app.
+lVideo :: Lens' Listing (Maybe Text)
+lVideo = lens _lVideo (\ s a -> s{_lVideo = a})
+
+-- | Short description of the app (previously known as promo text); this may
+-- be up to 80 characters in length.
+lShortDescription :: Lens' Listing (Maybe Text)
+lShortDescription
+  = lens _lShortDescription
+      (\ s a -> s{_lShortDescription = a})
+
+-- | Language localization code (for example, \"de-AT\" for Austrian German).
+lLanguage :: Lens' Listing (Maybe Text)
+lLanguage
+  = lens _lLanguage (\ s a -> s{_lLanguage = a})
+
+-- | App\'s localized title.
+lTitle :: Lens' Listing (Maybe Text)
+lTitle = lens _lTitle (\ s a -> s{_lTitle = a})
+
+instance FromJSON Listing where
+        parseJSON
+          = withObject "Listing"
+              (\ o ->
+                 Listing' <$>
+                   (o .:? "fullDescription") <*> (o .:? "video") <*>
+                     (o .:? "shortDescription")
+                     <*> (o .:? "language")
+                     <*> (o .:? "title"))
+
+instance ToJSON Listing where
+        toJSON Listing'{..}
+          = object
+              (catMaybes
+                 [("fullDescription" .=) <$> _lFullDescription,
+                  ("video" .=) <$> _lVideo,
+                  ("shortDescription" .=) <$> _lShortDescription,
+                  ("language" .=) <$> _lLanguage,
+                  ("title" .=) <$> _lTitle])
+
+--
+-- /See:/ 'aPK' smart constructor.
+data APK = APK'
+    { _aVersionCode :: !(Maybe (Textual Int32))
+    , _aBinary      :: !(Maybe APKBinary)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'APK' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'aVersionCode'
+--
+-- * 'aBinary'
+aPK
+    :: APK
+aPK =
+    APK'
+    { _aVersionCode = Nothing
+    , _aBinary = Nothing
+    }
+
+-- | The version code of the APK, as specified in the APK\'s manifest file.
+aVersionCode :: Lens' APK (Maybe Int32)
+aVersionCode
+  = lens _aVersionCode (\ s a -> s{_aVersionCode = a})
+      . mapping _Coerce
+
+-- | Information about the binary payload of this APK.
+aBinary :: Lens' APK (Maybe APKBinary)
+aBinary = lens _aBinary (\ s a -> s{_aBinary = a})
+
+instance FromJSON APK where
+        parseJSON
+          = withObject "APK"
+              (\ o ->
+                 APK' <$> (o .:? "versionCode") <*> (o .:? "binary"))
+
+instance ToJSON APK where
+        toJSON APK'{..}
+          = object
+              (catMaybes
+                 [("versionCode" .=) <$> _aVersionCode,
+                  ("binary" .=) <$> _aBinary])
+
+--
+-- /See:/ 'subscriptionPurchasesDeferRequest' smart constructor.
+newtype SubscriptionPurchasesDeferRequest = SubscriptionPurchasesDeferRequest'
+    { _spdrDeferralInfo :: Maybe SubscriptionDeferralInfo
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'SubscriptionPurchasesDeferRequest' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'spdrDeferralInfo'
+subscriptionPurchasesDeferRequest
+    :: SubscriptionPurchasesDeferRequest
+subscriptionPurchasesDeferRequest =
+    SubscriptionPurchasesDeferRequest'
+    { _spdrDeferralInfo = Nothing
+    }
+
+-- | The information about the new desired expiry time for the subscription.
+spdrDeferralInfo :: Lens' SubscriptionPurchasesDeferRequest (Maybe SubscriptionDeferralInfo)
+spdrDeferralInfo
+  = lens _spdrDeferralInfo
+      (\ s a -> s{_spdrDeferralInfo = a})
+
+instance FromJSON SubscriptionPurchasesDeferRequest
+         where
+        parseJSON
+          = withObject "SubscriptionPurchasesDeferRequest"
+              (\ o ->
+                 SubscriptionPurchasesDeferRequest' <$>
+                   (o .:? "deferralInfo"))
+
+instance ToJSON SubscriptionPurchasesDeferRequest
+         where
+        toJSON SubscriptionPurchasesDeferRequest'{..}
+          = object
+              (catMaybes
+                 [("deferralInfo" .=) <$> _spdrDeferralInfo])
+
+--
+-- /See:/ 'tracksListResponse' smart constructor.
+data TracksListResponse = TracksListResponse'
+    { _tlrTracks :: !(Maybe [Track])
+    , _tlrKind   :: !Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'TracksListResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'tlrTracks'
+--
+-- * 'tlrKind'
+tracksListResponse
+    :: TracksListResponse
+tracksListResponse =
+    TracksListResponse'
+    { _tlrTracks = Nothing
+    , _tlrKind = "androidpublisher#tracksListResponse"
+    }
+
+tlrTracks :: Lens' TracksListResponse [Track]
+tlrTracks
+  = lens _tlrTracks (\ s a -> s{_tlrTracks = a}) .
+      _Default
+      . _Coerce
+
+-- | Identifies what kind of resource this is. Value: the fixed string
+-- \"androidpublisher#tracksListResponse\".
+tlrKind :: Lens' TracksListResponse Text
+tlrKind = lens _tlrKind (\ s a -> s{_tlrKind = a})
+
+instance FromJSON TracksListResponse where
+        parseJSON
+          = withObject "TracksListResponse"
+              (\ o ->
+                 TracksListResponse' <$>
+                   (o .:? "tracks" .!= mempty) <*>
+                     (o .:? "kind" .!=
+                        "androidpublisher#tracksListResponse"))
+
+instance ToJSON TracksListResponse where
+        toJSON TracksListResponse'{..}
+          = object
+              (catMaybes
+                 [("tracks" .=) <$> _tlrTracks,
+                  Just ("kind" .= _tlrKind)])
+
+--
+-- /See:/ 'season' smart constructor.
+data Season = Season'
+    { _sStart      :: !(Maybe MonthDay)
+    , _sEnd        :: !(Maybe MonthDay)
+    , _sProrations :: !(Maybe [Prorate])
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'Season' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'sStart'
+--
+-- * 'sEnd'
+--
+-- * 'sProrations'
+season
+    :: Season
+season =
+    Season'
+    { _sStart = Nothing
+    , _sEnd = Nothing
+    , _sProrations = Nothing
+    }
+
+-- | Inclusive start date of the recurrence period.
+sStart :: Lens' Season (Maybe MonthDay)
+sStart = lens _sStart (\ s a -> s{_sStart = a})
+
+-- | Inclusive end date of the recurrence period.
+sEnd :: Lens' Season (Maybe MonthDay)
+sEnd = lens _sEnd (\ s a -> s{_sEnd = a})
+
+-- | Optionally present list of prorations for the season. Each proration is
+-- a one-off discounted entry into a subscription. Each proration contains
+-- the first date on which the discount is available and the new pricing
+-- information.
+sProrations :: Lens' Season [Prorate]
+sProrations
+  = lens _sProrations (\ s a -> s{_sProrations = a}) .
+      _Default
+      . _Coerce
+
+instance FromJSON Season where
+        parseJSON
+          = withObject "Season"
+              (\ o ->
+                 Season' <$>
+                   (o .:? "start") <*> (o .:? "end") <*>
+                     (o .:? "prorations" .!= mempty))
+
+instance ToJSON Season where
+        toJSON Season'{..}
+          = object
+              (catMaybes
+                 [("start" .=) <$> _sStart, ("end" .=) <$> _sEnd,
+                  ("prorations" .=) <$> _sProrations])
+
+--
+-- /See:/ 'pageInfo' smart constructor.
+data PageInfo = PageInfo'
+    { _piResultPerPage :: !(Maybe (Textual Int32))
+    , _piTotalResults  :: !(Maybe (Textual Int32))
+    , _piStartIndex    :: !(Maybe (Textual Int32))
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'PageInfo' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'piResultPerPage'
+--
+-- * 'piTotalResults'
+--
+-- * 'piStartIndex'
+pageInfo
+    :: PageInfo
+pageInfo =
+    PageInfo'
+    { _piResultPerPage = Nothing
+    , _piTotalResults = Nothing
+    , _piStartIndex = Nothing
+    }
+
+piResultPerPage :: Lens' PageInfo (Maybe Int32)
+piResultPerPage
+  = lens _piResultPerPage
+      (\ s a -> s{_piResultPerPage = a})
+      . mapping _Coerce
+
+piTotalResults :: Lens' PageInfo (Maybe Int32)
+piTotalResults
+  = lens _piTotalResults
+      (\ s a -> s{_piTotalResults = a})
+      . mapping _Coerce
+
+piStartIndex :: Lens' PageInfo (Maybe Int32)
+piStartIndex
+  = lens _piStartIndex (\ s a -> s{_piStartIndex = a})
+      . mapping _Coerce
+
+instance FromJSON PageInfo where
+        parseJSON
+          = withObject "PageInfo"
+              (\ o ->
+                 PageInfo' <$>
+                   (o .:? "resultPerPage") <*> (o .:? "totalResults")
+                     <*> (o .:? "startIndex"))
+
+instance ToJSON PageInfo where
+        toJSON PageInfo'{..}
+          = object
+              (catMaybes
+                 [("resultPerPage" .=) <$> _piResultPerPage,
+                  ("totalResults" .=) <$> _piTotalResults,
+                  ("startIndex" .=) <$> _piStartIndex])
+
+--
+-- /See:/ 'imagesListResponse' smart constructor.
+newtype ImagesListResponse = ImagesListResponse'
+    { _ilrImages :: Maybe [Image]
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ImagesListResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'ilrImages'
+imagesListResponse
+    :: ImagesListResponse
+imagesListResponse =
+    ImagesListResponse'
+    { _ilrImages = Nothing
+    }
+
+ilrImages :: Lens' ImagesListResponse [Image]
+ilrImages
+  = lens _ilrImages (\ s a -> s{_ilrImages = a}) .
+      _Default
+      . _Coerce
+
+instance FromJSON ImagesListResponse where
+        parseJSON
+          = withObject "ImagesListResponse"
+              (\ o ->
+                 ImagesListResponse' <$> (o .:? "images" .!= mempty))
+
+instance ToJSON ImagesListResponse where
+        toJSON ImagesListResponse'{..}
+          = object (catMaybes [("images" .=) <$> _ilrImages])
+
+-- | Represents an edit of an app. An edit allows clients to make multiple
+-- changes before committing them in one operation.
+--
+-- /See:/ 'appEdit' smart constructor.
+data AppEdit = AppEdit'
+    { _aeId                :: !(Maybe Text)
+    , _aeExpiryTimeSeconds :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'AppEdit' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'aeId'
+--
+-- * 'aeExpiryTimeSeconds'
+appEdit
+    :: AppEdit
+appEdit =
+    AppEdit'
+    { _aeId = Nothing
+    , _aeExpiryTimeSeconds = Nothing
+    }
+
+-- | The ID of the edit that can be used in subsequent API calls.
+aeId :: Lens' AppEdit (Maybe Text)
+aeId = lens _aeId (\ s a -> s{_aeId = a})
+
+-- | The time at which the edit will expire and will be no longer valid for
+-- use in any subsequent API calls (encoded as seconds since the Epoch).
+aeExpiryTimeSeconds :: Lens' AppEdit (Maybe Text)
+aeExpiryTimeSeconds
+  = lens _aeExpiryTimeSeconds
+      (\ s a -> s{_aeExpiryTimeSeconds = a})
+
+instance FromJSON AppEdit where
+        parseJSON
+          = withObject "AppEdit"
+              (\ o ->
+                 AppEdit' <$>
+                   (o .:? "id") <*> (o .:? "expiryTimeSeconds"))
+
+instance ToJSON AppEdit where
+        toJSON AppEdit'{..}
+          = object
+              (catMaybes
+                 [("id" .=) <$> _aeId,
+                  ("expiryTimeSeconds" .=) <$> _aeExpiryTimeSeconds])
+
+-- | A ProductPurchase resource indicates the status of a user\'s inapp
+-- product purchase.
+--
+-- /See:/ 'productPurchase' smart constructor.
+data ProductPurchase = ProductPurchase'
+    { _ppPurchaseState      :: !(Maybe (Textual Int32))
+    , _ppConsumptionState   :: !(Maybe (Textual Int32))
+    , _ppKind               :: !Text
+    , _ppPurchaseTimeMillis :: !(Maybe (Textual Int64))
+    , _ppDeveloperPayload   :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ProductPurchase' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'ppPurchaseState'
+--
+-- * 'ppConsumptionState'
+--
+-- * 'ppKind'
+--
+-- * 'ppPurchaseTimeMillis'
+--
+-- * 'ppDeveloperPayload'
+productPurchase
+    :: ProductPurchase
+productPurchase =
+    ProductPurchase'
+    { _ppPurchaseState = Nothing
+    , _ppConsumptionState = Nothing
+    , _ppKind = "androidpublisher#productPurchase"
+    , _ppPurchaseTimeMillis = Nothing
+    , _ppDeveloperPayload = Nothing
+    }
+
+-- | The purchase state of the order. Possible values are: - Purchased -
+-- Cancelled
+ppPurchaseState :: Lens' ProductPurchase (Maybe Int32)
+ppPurchaseState
+  = lens _ppPurchaseState
+      (\ s a -> s{_ppPurchaseState = a})
+      . mapping _Coerce
+
+-- | The consumption state of the inapp product. Possible values are: - Yet
+-- to be consumed - Consumed
+ppConsumptionState :: Lens' ProductPurchase (Maybe Int32)
+ppConsumptionState
+  = lens _ppConsumptionState
+      (\ s a -> s{_ppConsumptionState = a})
+      . mapping _Coerce
+
+-- | This kind represents an inappPurchase object in the androidpublisher
+-- service.
+ppKind :: Lens' ProductPurchase Text
+ppKind = lens _ppKind (\ s a -> s{_ppKind = a})
+
+-- | The time the product was purchased, in milliseconds since the epoch (Jan
+-- 1, 1970).
+ppPurchaseTimeMillis :: Lens' ProductPurchase (Maybe Int64)
+ppPurchaseTimeMillis
+  = lens _ppPurchaseTimeMillis
+      (\ s a -> s{_ppPurchaseTimeMillis = a})
+      . mapping _Coerce
+
+-- | A developer-specified string that contains supplemental information
+-- about an order.
+ppDeveloperPayload :: Lens' ProductPurchase (Maybe Text)
+ppDeveloperPayload
+  = lens _ppDeveloperPayload
+      (\ s a -> s{_ppDeveloperPayload = a})
+
+instance FromJSON ProductPurchase where
+        parseJSON
+          = withObject "ProductPurchase"
+              (\ o ->
+                 ProductPurchase' <$>
+                   (o .:? "purchaseState") <*>
+                     (o .:? "consumptionState")
+                     <*>
+                     (o .:? "kind" .!= "androidpublisher#productPurchase")
+                     <*> (o .:? "purchaseTimeMillis")
+                     <*> (o .:? "developerPayload"))
+
+instance ToJSON ProductPurchase where
+        toJSON ProductPurchase'{..}
+          = object
+              (catMaybes
+                 [("purchaseState" .=) <$> _ppPurchaseState,
+                  ("consumptionState" .=) <$> _ppConsumptionState,
+                  Just ("kind" .= _ppKind),
+                  ("purchaseTimeMillis" .=) <$> _ppPurchaseTimeMillis,
+                  ("developerPayload" .=) <$> _ppDeveloperPayload])
+
+--
+-- /See:/ 'reviewsListResponse' smart constructor.
+data ReviewsListResponse = ReviewsListResponse'
+    { _rlrTokenPagination :: !(Maybe TokenPagination)
+    , _rlrPageInfo        :: !(Maybe PageInfo)
+    , _rlrReviews         :: !(Maybe [Review])
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ReviewsListResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'rlrTokenPagination'
+--
+-- * 'rlrPageInfo'
+--
+-- * 'rlrReviews'
+reviewsListResponse
+    :: ReviewsListResponse
+reviewsListResponse =
+    ReviewsListResponse'
+    { _rlrTokenPagination = Nothing
+    , _rlrPageInfo = Nothing
+    , _rlrReviews = Nothing
+    }
+
+rlrTokenPagination :: Lens' ReviewsListResponse (Maybe TokenPagination)
+rlrTokenPagination
+  = lens _rlrTokenPagination
+      (\ s a -> s{_rlrTokenPagination = a})
+
+rlrPageInfo :: Lens' ReviewsListResponse (Maybe PageInfo)
+rlrPageInfo
+  = lens _rlrPageInfo (\ s a -> s{_rlrPageInfo = a})
+
+rlrReviews :: Lens' ReviewsListResponse [Review]
+rlrReviews
+  = lens _rlrReviews (\ s a -> s{_rlrReviews = a}) .
+      _Default
+      . _Coerce
+
+instance FromJSON ReviewsListResponse where
+        parseJSON
+          = withObject "ReviewsListResponse"
+              (\ o ->
+                 ReviewsListResponse' <$>
+                   (o .:? "tokenPagination") <*> (o .:? "pageInfo") <*>
+                     (o .:? "reviews" .!= mempty))
+
+instance ToJSON ReviewsListResponse where
+        toJSON ReviewsListResponse'{..}
+          = object
+              (catMaybes
+                 [("tokenPagination" .=) <$> _rlrTokenPagination,
+                  ("pageInfo" .=) <$> _rlrPageInfo,
+                  ("reviews" .=) <$> _rlrReviews])
+
+--
+-- /See:/ 'subscriptionPurchasesDeferResponse' smart constructor.
+newtype SubscriptionPurchasesDeferResponse = SubscriptionPurchasesDeferResponse'
+    { _spdrNewExpiryTimeMillis :: Maybe (Textual Int64)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'SubscriptionPurchasesDeferResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'spdrNewExpiryTimeMillis'
+subscriptionPurchasesDeferResponse
+    :: SubscriptionPurchasesDeferResponse
+subscriptionPurchasesDeferResponse =
+    SubscriptionPurchasesDeferResponse'
+    { _spdrNewExpiryTimeMillis = Nothing
+    }
+
+-- | The new expiry time for the subscription in milliseconds since the
+-- Epoch.
+spdrNewExpiryTimeMillis :: Lens' SubscriptionPurchasesDeferResponse (Maybe Int64)
+spdrNewExpiryTimeMillis
+  = lens _spdrNewExpiryTimeMillis
+      (\ s a -> s{_spdrNewExpiryTimeMillis = a})
+      . mapping _Coerce
+
+instance FromJSON SubscriptionPurchasesDeferResponse
+         where
+        parseJSON
+          = withObject "SubscriptionPurchasesDeferResponse"
+              (\ o ->
+                 SubscriptionPurchasesDeferResponse' <$>
+                   (o .:? "newExpiryTimeMillis"))
+
+instance ToJSON SubscriptionPurchasesDeferResponse
+         where
+        toJSON SubscriptionPurchasesDeferResponse'{..}
+          = object
+              (catMaybes
+                 [("newExpiryTimeMillis" .=) <$>
+                    _spdrNewExpiryTimeMillis])
+
+--
+-- /See:/ 'aPKListing' smart constructor.
+data APKListing = APKListing'
+    { _apklLanguage      :: !(Maybe Text)
+    , _apklRecentChanges :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'APKListing' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'apklLanguage'
+--
+-- * 'apklRecentChanges'
+aPKListing
+    :: APKListing
+aPKListing =
+    APKListing'
+    { _apklLanguage = Nothing
+    , _apklRecentChanges = Nothing
+    }
+
+-- | The language code, in BCP 47 format (eg \"en-US\").
+apklLanguage :: Lens' APKListing (Maybe Text)
+apklLanguage
+  = lens _apklLanguage (\ s a -> s{_apklLanguage = a})
+
+-- | Describe what\'s new in your APK.
+apklRecentChanges :: Lens' APKListing (Maybe Text)
+apklRecentChanges
+  = lens _apklRecentChanges
+      (\ s a -> s{_apklRecentChanges = a})
+
+instance FromJSON APKListing where
+        parseJSON
+          = withObject "APKListing"
+              (\ o ->
+                 APKListing' <$>
+                   (o .:? "language") <*> (o .:? "recentChanges"))
+
+instance ToJSON APKListing where
+        toJSON APKListing'{..}
+          = object
+              (catMaybes
+                 [("language" .=) <$> _apklLanguage,
+                  ("recentChanges" .=) <$> _apklRecentChanges])
+
+-- | A SubscriptionPurchase resource indicates the status of a user\'s
+-- subscription purchase.
+--
+-- /See:/ 'subscriptionPurchase' smart constructor.
+data SubscriptionPurchase = SubscriptionPurchase'
+    { _spPaymentState      :: !(Maybe (Textual Int32))
+    , _spKind              :: !Text
+    , _spExpiryTimeMillis  :: !(Maybe (Textual Int64))
+    , _spAutoRenewing      :: !(Maybe Bool)
+    , _spPriceCurrencyCode :: !(Maybe Text)
+    , _spCancelReason      :: !(Maybe (Textual Int32))
+    , _spCountryCode       :: !(Maybe Text)
+    , _spDeveloperPayload  :: !(Maybe Text)
+    , _spPriceAmountMicros :: !(Maybe (Textual Int64))
+    , _spStartTimeMillis   :: !(Maybe (Textual Int64))
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'SubscriptionPurchase' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'spPaymentState'
+--
+-- * 'spKind'
+--
+-- * 'spExpiryTimeMillis'
+--
+-- * 'spAutoRenewing'
+--
+-- * 'spPriceCurrencyCode'
+--
+-- * 'spCancelReason'
+--
+-- * 'spCountryCode'
+--
+-- * 'spDeveloperPayload'
+--
+-- * 'spPriceAmountMicros'
+--
+-- * 'spStartTimeMillis'
+subscriptionPurchase
+    :: SubscriptionPurchase
+subscriptionPurchase =
+    SubscriptionPurchase'
+    { _spPaymentState = Nothing
+    , _spKind = "androidpublisher#subscriptionPurchase"
+    , _spExpiryTimeMillis = Nothing
+    , _spAutoRenewing = Nothing
+    , _spPriceCurrencyCode = Nothing
+    , _spCancelReason = Nothing
+    , _spCountryCode = Nothing
+    , _spDeveloperPayload = Nothing
+    , _spPriceAmountMicros = Nothing
+    , _spStartTimeMillis = Nothing
+    }
+
+-- | The payment state of the subscription. Possible values are: - Payment
+-- pending - Payment received
+spPaymentState :: Lens' SubscriptionPurchase (Maybe Int32)
+spPaymentState
+  = lens _spPaymentState
+      (\ s a -> s{_spPaymentState = a})
+      . mapping _Coerce
+
+-- | This kind represents a subscriptionPurchase object in the
+-- androidpublisher service.
+spKind :: Lens' SubscriptionPurchase Text
+spKind = lens _spKind (\ s a -> s{_spKind = a})
+
+-- | Time at which the subscription will expire, in milliseconds since Epoch.
+spExpiryTimeMillis :: Lens' SubscriptionPurchase (Maybe Int64)
+spExpiryTimeMillis
+  = lens _spExpiryTimeMillis
+      (\ s a -> s{_spExpiryTimeMillis = a})
+      . mapping _Coerce
+
+-- | Whether the subscription will automatically be renewed when it reaches
+-- its current expiry time.
+spAutoRenewing :: Lens' SubscriptionPurchase (Maybe Bool)
+spAutoRenewing
+  = lens _spAutoRenewing
+      (\ s a -> s{_spAutoRenewing = a})
+
+-- | ISO 4217 currency code for the subscription price. For example, if the
+-- price is specified in British pounds sterling, price_currency_code is
+-- \"GBP\".
+spPriceCurrencyCode :: Lens' SubscriptionPurchase (Maybe Text)
+spPriceCurrencyCode
+  = lens _spPriceCurrencyCode
+      (\ s a -> s{_spPriceCurrencyCode = a})
+
+-- | The cancel reason of the subscription, if the subscription is not auto
+-- renewing. Possible values are: - User cancelled the subscription -
+-- Subscription was cancelled by the system, for example because of a
+-- billing problem
+spCancelReason :: Lens' SubscriptionPurchase (Maybe Int32)
+spCancelReason
+  = lens _spCancelReason
+      (\ s a -> s{_spCancelReason = a})
+      . mapping _Coerce
+
+-- | ISO 3166-1 alpha-2 billing country\/region code of the user at the time
+-- the subscription was granted.
+spCountryCode :: Lens' SubscriptionPurchase (Maybe Text)
+spCountryCode
+  = lens _spCountryCode
+      (\ s a -> s{_spCountryCode = a})
+
+-- | A developer-specified string that contains supplemental information
+-- about an order.
+spDeveloperPayload :: Lens' SubscriptionPurchase (Maybe Text)
+spDeveloperPayload
+  = lens _spDeveloperPayload
+      (\ s a -> s{_spDeveloperPayload = a})
+
+-- | Price of the subscription, not including tax. Price is expressed in
+-- micro-units, where 1,000,000 micro-units equal one unit of the currency.
+-- For example, if the subscription price is €1.99, price_amount_micros is
+-- 1990000.
+spPriceAmountMicros :: Lens' SubscriptionPurchase (Maybe Int64)
+spPriceAmountMicros
+  = lens _spPriceAmountMicros
+      (\ s a -> s{_spPriceAmountMicros = a})
+      . mapping _Coerce
+
+-- | Time at which the subscription was granted, in milliseconds since Epoch.
+spStartTimeMillis :: Lens' SubscriptionPurchase (Maybe Int64)
+spStartTimeMillis
+  = lens _spStartTimeMillis
+      (\ s a -> s{_spStartTimeMillis = a})
+      . mapping _Coerce
+
+instance FromJSON SubscriptionPurchase where
+        parseJSON
+          = withObject "SubscriptionPurchase"
+              (\ o ->
+                 SubscriptionPurchase' <$>
+                   (o .:? "paymentState") <*>
+                     (o .:? "kind" .!=
+                        "androidpublisher#subscriptionPurchase")
+                     <*> (o .:? "expiryTimeMillis")
+                     <*> (o .:? "autoRenewing")
+                     <*> (o .:? "priceCurrencyCode")
+                     <*> (o .:? "cancelReason")
+                     <*> (o .:? "countryCode")
+                     <*> (o .:? "developerPayload")
+                     <*> (o .:? "priceAmountMicros")
+                     <*> (o .:? "startTimeMillis"))
+
+instance ToJSON SubscriptionPurchase where
+        toJSON SubscriptionPurchase'{..}
+          = object
+              (catMaybes
+                 [("paymentState" .=) <$> _spPaymentState,
+                  Just ("kind" .= _spKind),
+                  ("expiryTimeMillis" .=) <$> _spExpiryTimeMillis,
+                  ("autoRenewing" .=) <$> _spAutoRenewing,
+                  ("priceCurrencyCode" .=) <$> _spPriceCurrencyCode,
+                  ("cancelReason" .=) <$> _spCancelReason,
+                  ("countryCode" .=) <$> _spCountryCode,
+                  ("developerPayload" .=) <$> _spDeveloperPayload,
+                  ("priceAmountMicros" .=) <$> _spPriceAmountMicros,
+                  ("startTimeMillis" .=) <$> _spStartTimeMillis])
+
+--
+-- /See:/ 'appDetails' smart constructor.
+data AppDetails = AppDetails'
+    { _adContactPhone    :: !(Maybe Text)
+    , _adContactEmail    :: !(Maybe Text)
+    , _adContactWebsite  :: !(Maybe Text)
+    , _adDefaultLanguage :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'AppDetails' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'adContactPhone'
+--
+-- * 'adContactEmail'
+--
+-- * 'adContactWebsite'
+--
+-- * 'adDefaultLanguage'
+appDetails
+    :: AppDetails
+appDetails =
+    AppDetails'
+    { _adContactPhone = Nothing
+    , _adContactEmail = Nothing
+    , _adContactWebsite = Nothing
+    , _adDefaultLanguage = Nothing
+    }
+
+-- | The user-visible support telephone number for this app.
+adContactPhone :: Lens' AppDetails (Maybe Text)
+adContactPhone
+  = lens _adContactPhone
+      (\ s a -> s{_adContactPhone = a})
+
+-- | The user-visible support email for this app.
+adContactEmail :: Lens' AppDetails (Maybe Text)
+adContactEmail
+  = lens _adContactEmail
+      (\ s a -> s{_adContactEmail = a})
+
+-- | The user-visible website for this app.
+adContactWebsite :: Lens' AppDetails (Maybe Text)
+adContactWebsite
+  = lens _adContactWebsite
+      (\ s a -> s{_adContactWebsite = a})
+
+-- | Default language code, in BCP 47 format (eg \"en-US\").
+adDefaultLanguage :: Lens' AppDetails (Maybe Text)
+adDefaultLanguage
+  = lens _adDefaultLanguage
+      (\ s a -> s{_adDefaultLanguage = a})
+
+instance FromJSON AppDetails where
+        parseJSON
+          = withObject "AppDetails"
+              (\ o ->
+                 AppDetails' <$>
+                   (o .:? "contactPhone") <*> (o .:? "contactEmail") <*>
+                     (o .:? "contactWebsite")
+                     <*> (o .:? "defaultLanguage"))
+
+instance ToJSON AppDetails where
+        toJSON AppDetails'{..}
+          = object
+              (catMaybes
+                 [("contactPhone" .=) <$> _adContactPhone,
+                  ("contactEmail" .=) <$> _adContactEmail,
+                  ("contactWebsite" .=) <$> _adContactWebsite,
+                  ("defaultLanguage" .=) <$> _adDefaultLanguage])
+
+-- | Prices per buyer region. None of these prices should be zero. In-app
+-- products can never be free.
+--
+-- /See:/ 'inAppProductPrices' smart constructor.
+newtype InAppProductPrices = InAppProductPrices'
+    { _iAppAddtional :: HashMap Text Price
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'InAppProductPrices' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'iAppAddtional'
+inAppProductPrices
+    :: HashMap Text Price -- ^ 'iAppAddtional'
+    -> InAppProductPrices
+inAppProductPrices pIAppAddtional_ =
+    InAppProductPrices'
+    { _iAppAddtional = _Coerce # pIAppAddtional_
+    }
+
+-- | Region code, as defined by ISO 3166-2.
+iAppAddtional :: Lens' InAppProductPrices (HashMap Text Price)
+iAppAddtional
+  = lens _iAppAddtional
+      (\ s a -> s{_iAppAddtional = a})
+      . _Coerce
+
+instance FromJSON InAppProductPrices where
+        parseJSON
+          = withObject "InAppProductPrices"
+              (\ o -> InAppProductPrices' <$> (parseJSONObject o))
+
+instance ToJSON InAppProductPrices where
+        toJSON = toJSON . _iAppAddtional
+
+--
+-- /See:/ 'inAppProductsBatchRequest' smart constructor.
+newtype InAppProductsBatchRequest = InAppProductsBatchRequest'
+    { _iapbrEntrys :: Maybe [InAppProductsBatchRequestEntry]
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'InAppProductsBatchRequest' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'iapbrEntrys'
+inAppProductsBatchRequest
+    :: InAppProductsBatchRequest
+inAppProductsBatchRequest =
+    InAppProductsBatchRequest'
+    { _iapbrEntrys = Nothing
+    }
+
+iapbrEntrys :: Lens' InAppProductsBatchRequest [InAppProductsBatchRequestEntry]
+iapbrEntrys
+  = lens _iapbrEntrys (\ s a -> s{_iapbrEntrys = a}) .
+      _Default
+      . _Coerce
+
+instance FromJSON InAppProductsBatchRequest where
+        parseJSON
+          = withObject "InAppProductsBatchRequest"
+              (\ o ->
+                 InAppProductsBatchRequest' <$>
+                   (o .:? "entrys" .!= mempty))
+
+instance ToJSON InAppProductsBatchRequest where
+        toJSON InAppProductsBatchRequest'{..}
+          = object (catMaybes [("entrys" .=) <$> _iapbrEntrys])
+
+-- | Defines an APK available for this application that is hosted externally
+-- and not uploaded to Google Play. This function is only available to
+-- enterprises who are using Google Play for Work, and whos application is
+-- restricted to the enterprise private channel
+--
+-- /See:/ 'externallyHostedAPK' smart constructor.
+data ExternallyHostedAPK = ExternallyHostedAPK'
+    { _ehapkApplicationLabel    :: !(Maybe Text)
+    , _ehapkMaximumSdk          :: !(Maybe (Textual Int32))
+    , _ehapkNATiveCodes         :: !(Maybe [Text])
+    , _ehapkVersionCode         :: !(Maybe (Textual Int32))
+    , _ehapkFileSha256Base64    :: !(Maybe Text)
+    , _ehapkExternallyHostedURL :: !(Maybe Text)
+    , _ehapkVersionName         :: !(Maybe Text)
+    , _ehapkPackageName         :: !(Maybe Text)
+    , _ehapkFileSize            :: !(Maybe (Textual Int64))
+    , _ehapkIconBase64          :: !(Maybe Text)
+    , _ehapkUsesFeatures        :: !(Maybe [Text])
+    , _ehapkMinimumSdk          :: !(Maybe (Textual Int32))
+    , _ehapkFileSha1Base64      :: !(Maybe Text)
+    , _ehapkUsesPermissions     :: !(Maybe [ExternallyHostedAPKUsesPermission])
+    , _ehapkCertificateBase64s  :: !(Maybe [Text])
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ExternallyHostedAPK' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'ehapkApplicationLabel'
+--
+-- * 'ehapkMaximumSdk'
+--
+-- * 'ehapkNATiveCodes'
+--
+-- * 'ehapkVersionCode'
+--
+-- * 'ehapkFileSha256Base64'
+--
+-- * 'ehapkExternallyHostedURL'
+--
+-- * 'ehapkVersionName'
+--
+-- * 'ehapkPackageName'
+--
+-- * 'ehapkFileSize'
+--
+-- * 'ehapkIconBase64'
+--
+-- * 'ehapkUsesFeatures'
+--
+-- * 'ehapkMinimumSdk'
+--
+-- * 'ehapkFileSha1Base64'
+--
+-- * 'ehapkUsesPermissions'
+--
+-- * 'ehapkCertificateBase64s'
+externallyHostedAPK
+    :: ExternallyHostedAPK
+externallyHostedAPK =
+    ExternallyHostedAPK'
+    { _ehapkApplicationLabel = Nothing
+    , _ehapkMaximumSdk = Nothing
+    , _ehapkNATiveCodes = Nothing
+    , _ehapkVersionCode = Nothing
+    , _ehapkFileSha256Base64 = Nothing
+    , _ehapkExternallyHostedURL = Nothing
+    , _ehapkVersionName = Nothing
+    , _ehapkPackageName = Nothing
+    , _ehapkFileSize = Nothing
+    , _ehapkIconBase64 = Nothing
+    , _ehapkUsesFeatures = Nothing
+    , _ehapkMinimumSdk = Nothing
+    , _ehapkFileSha1Base64 = Nothing
+    , _ehapkUsesPermissions = Nothing
+    , _ehapkCertificateBase64s = Nothing
+    }
+
+-- | The application label.
+ehapkApplicationLabel :: Lens' ExternallyHostedAPK (Maybe Text)
+ehapkApplicationLabel
+  = lens _ehapkApplicationLabel
+      (\ s a -> s{_ehapkApplicationLabel = a})
+
+-- | The maximum SDK supported by this APK (optional).
+ehapkMaximumSdk :: Lens' ExternallyHostedAPK (Maybe Int32)
+ehapkMaximumSdk
+  = lens _ehapkMaximumSdk
+      (\ s a -> s{_ehapkMaximumSdk = a})
+      . mapping _Coerce
+
+-- | The native code environments supported by this APK (optional).
+ehapkNATiveCodes :: Lens' ExternallyHostedAPK [Text]
+ehapkNATiveCodes
+  = lens _ehapkNATiveCodes
+      (\ s a -> s{_ehapkNATiveCodes = a})
+      . _Default
+      . _Coerce
+
+-- | The version code of this APK.
+ehapkVersionCode :: Lens' ExternallyHostedAPK (Maybe Int32)
+ehapkVersionCode
+  = lens _ehapkVersionCode
+      (\ s a -> s{_ehapkVersionCode = a})
+      . mapping _Coerce
+
+-- | The SHA256 checksum of this APK, represented as a base64 encoded byte
+-- array.
+ehapkFileSha256Base64 :: Lens' ExternallyHostedAPK (Maybe Text)
+ehapkFileSha256Base64
+  = lens _ehapkFileSha256Base64
+      (\ s a -> s{_ehapkFileSha256Base64 = a})
+
+-- | The URL at which the APK is hosted. This must be an https URL.
+ehapkExternallyHostedURL :: Lens' ExternallyHostedAPK (Maybe Text)
+ehapkExternallyHostedURL
+  = lens _ehapkExternallyHostedURL
+      (\ s a -> s{_ehapkExternallyHostedURL = a})
+
+-- | The version name of this APK.
+ehapkVersionName :: Lens' ExternallyHostedAPK (Maybe Text)
+ehapkVersionName
+  = lens _ehapkVersionName
+      (\ s a -> s{_ehapkVersionName = a})
+
+-- | The package name.
+ehapkPackageName :: Lens' ExternallyHostedAPK (Maybe Text)
+ehapkPackageName
+  = lens _ehapkPackageName
+      (\ s a -> s{_ehapkPackageName = a})
+
+-- | The file size in bytes of this APK.
+ehapkFileSize :: Lens' ExternallyHostedAPK (Maybe Int64)
+ehapkFileSize
+  = lens _ehapkFileSize
+      (\ s a -> s{_ehapkFileSize = a})
+      . mapping _Coerce
+
+-- | The icon image from the APK, as a base64 encoded byte array.
+ehapkIconBase64 :: Lens' ExternallyHostedAPK (Maybe Text)
+ehapkIconBase64
+  = lens _ehapkIconBase64
+      (\ s a -> s{_ehapkIconBase64 = a})
+
+-- | The features required by this APK (optional).
+ehapkUsesFeatures :: Lens' ExternallyHostedAPK [Text]
+ehapkUsesFeatures
+  = lens _ehapkUsesFeatures
+      (\ s a -> s{_ehapkUsesFeatures = a})
+      . _Default
+      . _Coerce
+
+-- | The minimum SDK targeted by this APK.
+ehapkMinimumSdk :: Lens' ExternallyHostedAPK (Maybe Int32)
+ehapkMinimumSdk
+  = lens _ehapkMinimumSdk
+      (\ s a -> s{_ehapkMinimumSdk = a})
+      . mapping _Coerce
+
+-- | The SHA1 checksum of this APK, represented as a base64 encoded byte
+-- array.
+ehapkFileSha1Base64 :: Lens' ExternallyHostedAPK (Maybe Text)
+ehapkFileSha1Base64
+  = lens _ehapkFileSha1Base64
+      (\ s a -> s{_ehapkFileSha1Base64 = a})
+
+-- | The permissions requested by this APK.
+ehapkUsesPermissions :: Lens' ExternallyHostedAPK [ExternallyHostedAPKUsesPermission]
+ehapkUsesPermissions
+  = lens _ehapkUsesPermissions
+      (\ s a -> s{_ehapkUsesPermissions = a})
+      . _Default
+      . _Coerce
+
+-- | A certificate (or array of certificates if a certificate-chain is used)
+-- used to signed this APK, represented as a base64 encoded byte array.
+ehapkCertificateBase64s :: Lens' ExternallyHostedAPK [Text]
+ehapkCertificateBase64s
+  = lens _ehapkCertificateBase64s
+      (\ s a -> s{_ehapkCertificateBase64s = a})
+      . _Default
+      . _Coerce
+
+instance FromJSON ExternallyHostedAPK where
+        parseJSON
+          = withObject "ExternallyHostedAPK"
+              (\ o ->
+                 ExternallyHostedAPK' <$>
+                   (o .:? "applicationLabel") <*> (o .:? "maximumSdk")
+                     <*> (o .:? "nativeCodes" .!= mempty)
+                     <*> (o .:? "versionCode")
+                     <*> (o .:? "fileSha256Base64")
+                     <*> (o .:? "externallyHostedUrl")
+                     <*> (o .:? "versionName")
+                     <*> (o .:? "packageName")
+                     <*> (o .:? "fileSize")
+                     <*> (o .:? "iconBase64")
+                     <*> (o .:? "usesFeatures" .!= mempty)
+                     <*> (o .:? "minimumSdk")
+                     <*> (o .:? "fileSha1Base64")
+                     <*> (o .:? "usesPermissions" .!= mempty)
+                     <*> (o .:? "certificateBase64s" .!= mempty))
+
+instance ToJSON ExternallyHostedAPK where
+        toJSON ExternallyHostedAPK'{..}
+          = object
+              (catMaybes
+                 [("applicationLabel" .=) <$> _ehapkApplicationLabel,
+                  ("maximumSdk" .=) <$> _ehapkMaximumSdk,
+                  ("nativeCodes" .=) <$> _ehapkNATiveCodes,
+                  ("versionCode" .=) <$> _ehapkVersionCode,
+                  ("fileSha256Base64" .=) <$> _ehapkFileSha256Base64,
+                  ("externallyHostedUrl" .=) <$>
+                    _ehapkExternallyHostedURL,
+                  ("versionName" .=) <$> _ehapkVersionName,
+                  ("packageName" .=) <$> _ehapkPackageName,
+                  ("fileSize" .=) <$> _ehapkFileSize,
+                  ("iconBase64" .=) <$> _ehapkIconBase64,
+                  ("usesFeatures" .=) <$> _ehapkUsesFeatures,
+                  ("minimumSdk" .=) <$> _ehapkMinimumSdk,
+                  ("fileSha1Base64" .=) <$> _ehapkFileSha1Base64,
+                  ("usesPermissions" .=) <$> _ehapkUsesPermissions,
+                  ("certificateBase64s" .=) <$>
+                    _ehapkCertificateBase64s])
+
+--
+-- /See:/ 'expansionFilesUploadResponse' smart constructor.
+newtype ExpansionFilesUploadResponse = ExpansionFilesUploadResponse'
+    { _efurExpansionFile :: Maybe ExpansionFile
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ExpansionFilesUploadResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'efurExpansionFile'
+expansionFilesUploadResponse
+    :: ExpansionFilesUploadResponse
+expansionFilesUploadResponse =
+    ExpansionFilesUploadResponse'
+    { _efurExpansionFile = Nothing
+    }
+
+efurExpansionFile :: Lens' ExpansionFilesUploadResponse (Maybe ExpansionFile)
+efurExpansionFile
+  = lens _efurExpansionFile
+      (\ s a -> s{_efurExpansionFile = a})
+
+instance FromJSON ExpansionFilesUploadResponse where
+        parseJSON
+          = withObject "ExpansionFilesUploadResponse"
+              (\ o ->
+                 ExpansionFilesUploadResponse' <$>
+                   (o .:? "expansionFile"))
+
+instance ToJSON ExpansionFilesUploadResponse where
+        toJSON ExpansionFilesUploadResponse'{..}
+          = object
+              (catMaybes
+                 [("expansionFile" .=) <$> _efurExpansionFile])
+
+--
+-- /See:/ 'imagesUploadResponse' smart constructor.
+newtype ImagesUploadResponse = ImagesUploadResponse'
+    { _iurImage :: Maybe Image
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ImagesUploadResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'iurImage'
+imagesUploadResponse
+    :: ImagesUploadResponse
+imagesUploadResponse =
+    ImagesUploadResponse'
+    { _iurImage = Nothing
+    }
+
+iurImage :: Lens' ImagesUploadResponse (Maybe Image)
+iurImage = lens _iurImage (\ s a -> s{_iurImage = a})
+
+instance FromJSON ImagesUploadResponse where
+        parseJSON
+          = withObject "ImagesUploadResponse"
+              (\ o -> ImagesUploadResponse' <$> (o .:? "image"))
+
+instance ToJSON ImagesUploadResponse where
+        toJSON ImagesUploadResponse'{..}
+          = object (catMaybes [("image" .=) <$> _iurImage])
+
+--
+-- /See:/ 'prorate' smart constructor.
+data Prorate = Prorate'
+    { _pStart        :: !(Maybe MonthDay)
+    , _pDefaultPrice :: !(Maybe Price)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'Prorate' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'pStart'
+--
+-- * 'pDefaultPrice'
+prorate
+    :: Prorate
+prorate =
+    Prorate'
+    { _pStart = Nothing
+    , _pDefaultPrice = Nothing
+    }
+
+-- | Defines the first day on which the price takes effect.
+pStart :: Lens' Prorate (Maybe MonthDay)
+pStart = lens _pStart (\ s a -> s{_pStart = a})
+
+-- | Default price cannot be zero and must be less than the full subscription
+-- price. Default price is always in the developer\'s Checkout merchant
+-- currency. Targeted countries have their prices set automatically based
+-- on the default_price.
+pDefaultPrice :: Lens' Prorate (Maybe Price)
+pDefaultPrice
+  = lens _pDefaultPrice
+      (\ s a -> s{_pDefaultPrice = a})
+
+instance FromJSON Prorate where
+        parseJSON
+          = withObject "Prorate"
+              (\ o ->
+                 Prorate' <$>
+                   (o .:? "start") <*> (o .:? "defaultPrice"))
+
+instance ToJSON Prorate where
+        toJSON Prorate'{..}
+          = object
+              (catMaybes
+                 [("start" .=) <$> _pStart,
+                  ("defaultPrice" .=) <$> _pDefaultPrice])
+
+--
+-- /See:/ 'inAppProductsListResponse' smart constructor.
+data InAppProductsListResponse = InAppProductsListResponse'
+    { _iaplrTokenPagination :: !(Maybe TokenPagination)
+    , _iaplrPageInfo        :: !(Maybe PageInfo)
+    , _iaplrKind            :: !Text
+    , _iaplrInAppProduct    :: !(Maybe [InAppProduct])
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'InAppProductsListResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'iaplrTokenPagination'
+--
+-- * 'iaplrPageInfo'
+--
+-- * 'iaplrKind'
+--
+-- * 'iaplrInAppProduct'
+inAppProductsListResponse
+    :: InAppProductsListResponse
+inAppProductsListResponse =
+    InAppProductsListResponse'
+    { _iaplrTokenPagination = Nothing
+    , _iaplrPageInfo = Nothing
+    , _iaplrKind = "androidpublisher#inappproductsListResponse"
+    , _iaplrInAppProduct = Nothing
+    }
+
+iaplrTokenPagination :: Lens' InAppProductsListResponse (Maybe TokenPagination)
+iaplrTokenPagination
+  = lens _iaplrTokenPagination
+      (\ s a -> s{_iaplrTokenPagination = a})
+
+iaplrPageInfo :: Lens' InAppProductsListResponse (Maybe PageInfo)
+iaplrPageInfo
+  = lens _iaplrPageInfo
+      (\ s a -> s{_iaplrPageInfo = a})
+
+-- | Identifies what kind of resource this is. Value: the fixed string
+-- \"androidpublisher#inappproductsListResponse\".
+iaplrKind :: Lens' InAppProductsListResponse Text
+iaplrKind
+  = lens _iaplrKind (\ s a -> s{_iaplrKind = a})
+
+iaplrInAppProduct :: Lens' InAppProductsListResponse [InAppProduct]
+iaplrInAppProduct
+  = lens _iaplrInAppProduct
+      (\ s a -> s{_iaplrInAppProduct = a})
+      . _Default
+      . _Coerce
+
+instance FromJSON InAppProductsListResponse where
+        parseJSON
+          = withObject "InAppProductsListResponse"
+              (\ o ->
+                 InAppProductsListResponse' <$>
+                   (o .:? "tokenPagination") <*> (o .:? "pageInfo") <*>
+                     (o .:? "kind" .!=
+                        "androidpublisher#inappproductsListResponse")
+                     <*> (o .:? "inappproduct" .!= mempty))
+
+instance ToJSON InAppProductsListResponse where
+        toJSON InAppProductsListResponse'{..}
+          = object
+              (catMaybes
+                 [("tokenPagination" .=) <$> _iaplrTokenPagination,
+                  ("pageInfo" .=) <$> _iaplrPageInfo,
+                  Just ("kind" .= _iaplrKind),
+                  ("inappproduct" .=) <$> _iaplrInAppProduct])
+
+--
+-- /See:/ 'aPKListingsListResponse' smart constructor.
+data APKListingsListResponse = APKListingsListResponse'
+    { _apkllrKind     :: !Text
+    , _apkllrListings :: !(Maybe [APKListing])
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'APKListingsListResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'apkllrKind'
+--
+-- * 'apkllrListings'
+aPKListingsListResponse
+    :: APKListingsListResponse
+aPKListingsListResponse =
+    APKListingsListResponse'
+    { _apkllrKind = "androidpublisher#apkListingsListResponse"
+    , _apkllrListings = Nothing
+    }
+
+-- | Identifies what kind of resource this is. Value: the fixed string
+-- \"androidpublisher#apkListingsListResponse\".
+apkllrKind :: Lens' APKListingsListResponse Text
+apkllrKind
+  = lens _apkllrKind (\ s a -> s{_apkllrKind = a})
+
+apkllrListings :: Lens' APKListingsListResponse [APKListing]
+apkllrListings
+  = lens _apkllrListings
+      (\ s a -> s{_apkllrListings = a})
+      . _Default
+      . _Coerce
+
+instance FromJSON APKListingsListResponse where
+        parseJSON
+          = withObject "APKListingsListResponse"
+              (\ o ->
+                 APKListingsListResponse' <$>
+                   (o .:? "kind" .!=
+                      "androidpublisher#apkListingsListResponse")
+                     <*> (o .:? "listings" .!= mempty))
+
+instance ToJSON APKListingsListResponse where
+        toJSON APKListingsListResponse'{..}
+          = object
+              (catMaybes
+                 [Just ("kind" .= _apkllrKind),
+                  ("listings" .=) <$> _apkllrListings])
+
+--
+-- /See:/ 'review' smart constructor.
+data Review = Review'
+    { _rReviewId   :: !(Maybe Text)
+    , _rAuthorName :: !(Maybe Text)
+    , _rComments   :: !(Maybe [Comment])
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'Review' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'rReviewId'
+--
+-- * 'rAuthorName'
+--
+-- * 'rComments'
+review
+    :: Review
+review =
+    Review'
+    { _rReviewId = Nothing
+    , _rAuthorName = Nothing
+    , _rComments = Nothing
+    }
+
+-- | Unique identifier for this review.
+rReviewId :: Lens' Review (Maybe Text)
+rReviewId
+  = lens _rReviewId (\ s a -> s{_rReviewId = a})
+
+-- | The name of the user who wrote the review.
+rAuthorName :: Lens' Review (Maybe Text)
+rAuthorName
+  = lens _rAuthorName (\ s a -> s{_rAuthorName = a})
+
+-- | A repeated field containing comments for the review.
+rComments :: Lens' Review [Comment]
+rComments
+  = lens _rComments (\ s a -> s{_rComments = a}) .
+      _Default
+      . _Coerce
+
+instance FromJSON Review where
+        parseJSON
+          = withObject "Review"
+              (\ o ->
+                 Review' <$>
+                   (o .:? "reviewId") <*> (o .:? "authorName") <*>
+                     (o .:? "comments" .!= mempty))
+
+instance ToJSON Review where
+        toJSON Review'{..}
+          = object
+              (catMaybes
+                 [("reviewId" .=) <$> _rReviewId,
+                  ("authorName" .=) <$> _rAuthorName,
+                  ("comments" .=) <$> _rComments])
+
+--
+-- /See:/ 'inAppProductsInsertResponse' smart constructor.
+newtype InAppProductsInsertResponse = InAppProductsInsertResponse'
+    { _iapirInAppProduct :: Maybe InAppProduct
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'InAppProductsInsertResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'iapirInAppProduct'
+inAppProductsInsertResponse
+    :: InAppProductsInsertResponse
+inAppProductsInsertResponse =
+    InAppProductsInsertResponse'
+    { _iapirInAppProduct = Nothing
+    }
+
+iapirInAppProduct :: Lens' InAppProductsInsertResponse (Maybe InAppProduct)
+iapirInAppProduct
+  = lens _iapirInAppProduct
+      (\ s a -> s{_iapirInAppProduct = a})
+
+instance FromJSON InAppProductsInsertResponse where
+        parseJSON
+          = withObject "InAppProductsInsertResponse"
+              (\ o ->
+                 InAppProductsInsertResponse' <$>
+                   (o .:? "inappproduct"))
+
+instance ToJSON InAppProductsInsertResponse where
+        toJSON InAppProductsInsertResponse'{..}
+          = object
+              (catMaybes
+                 [("inappproduct" .=) <$> _iapirInAppProduct])
+
+--
+-- /See:/ 'aPKsAddExternallyHostedResponse' smart constructor.
+newtype APKsAddExternallyHostedResponse = APKsAddExternallyHostedResponse'
+    { _apkaehrExternallyHostedAPK :: Maybe ExternallyHostedAPK
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'APKsAddExternallyHostedResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'apkaehrExternallyHostedAPK'
+aPKsAddExternallyHostedResponse
+    :: APKsAddExternallyHostedResponse
+aPKsAddExternallyHostedResponse =
+    APKsAddExternallyHostedResponse'
+    { _apkaehrExternallyHostedAPK = Nothing
+    }
+
+-- | The definition of the externally-hosted APK and where it is located.
+apkaehrExternallyHostedAPK :: Lens' APKsAddExternallyHostedResponse (Maybe ExternallyHostedAPK)
+apkaehrExternallyHostedAPK
+  = lens _apkaehrExternallyHostedAPK
+      (\ s a -> s{_apkaehrExternallyHostedAPK = a})
+
+instance FromJSON APKsAddExternallyHostedResponse
+         where
+        parseJSON
+          = withObject "APKsAddExternallyHostedResponse"
+              (\ o ->
+                 APKsAddExternallyHostedResponse' <$>
+                   (o .:? "externallyHostedApk"))
+
+instance ToJSON APKsAddExternallyHostedResponse where
+        toJSON APKsAddExternallyHostedResponse'{..}
+          = object
+              (catMaybes
+                 [("externallyHostedApk" .=) <$>
+                    _apkaehrExternallyHostedAPK])
+
+-- | A SubscriptionDeferralInfo contains the data needed to defer a
+-- subscription purchase to a future expiry time.
+--
+-- /See:/ 'subscriptionDeferralInfo' smart constructor.
+data SubscriptionDeferralInfo = SubscriptionDeferralInfo'
+    { _sdiDesiredExpiryTimeMillis  :: !(Maybe (Textual Int64))
+    , _sdiExpectedExpiryTimeMillis :: !(Maybe (Textual Int64))
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'SubscriptionDeferralInfo' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'sdiDesiredExpiryTimeMillis'
+--
+-- * 'sdiExpectedExpiryTimeMillis'
+subscriptionDeferralInfo
+    :: SubscriptionDeferralInfo
+subscriptionDeferralInfo =
+    SubscriptionDeferralInfo'
+    { _sdiDesiredExpiryTimeMillis = Nothing
+    , _sdiExpectedExpiryTimeMillis = Nothing
+    }
+
+-- | The desired next expiry time for the subscription in milliseconds since
+-- Epoch. The given time must be after the current expiry time for the
+-- subscription.
+sdiDesiredExpiryTimeMillis :: Lens' SubscriptionDeferralInfo (Maybe Int64)
+sdiDesiredExpiryTimeMillis
+  = lens _sdiDesiredExpiryTimeMillis
+      (\ s a -> s{_sdiDesiredExpiryTimeMillis = a})
+      . mapping _Coerce
+
+-- | The expected expiry time for the subscription. If the current expiry
+-- time for the subscription is not the value specified here, the deferral
+-- will not occur.
+sdiExpectedExpiryTimeMillis :: Lens' SubscriptionDeferralInfo (Maybe Int64)
+sdiExpectedExpiryTimeMillis
+  = lens _sdiExpectedExpiryTimeMillis
+      (\ s a -> s{_sdiExpectedExpiryTimeMillis = a})
+      . mapping _Coerce
+
+instance FromJSON SubscriptionDeferralInfo where
+        parseJSON
+          = withObject "SubscriptionDeferralInfo"
+              (\ o ->
+                 SubscriptionDeferralInfo' <$>
+                   (o .:? "desiredExpiryTimeMillis") <*>
+                     (o .:? "expectedExpiryTimeMillis"))
+
+instance ToJSON SubscriptionDeferralInfo where
+        toJSON SubscriptionDeferralInfo'{..}
+          = object
+              (catMaybes
+                 [("desiredExpiryTimeMillis" .=) <$>
+                    _sdiDesiredExpiryTimeMillis,
+                  ("expectedExpiryTimeMillis" .=) <$>
+                    _sdiExpectedExpiryTimeMillis])
+
+--
+-- /See:/ 'reviewsReplyRequest' smart constructor.
+newtype ReviewsReplyRequest = ReviewsReplyRequest'
+    { _rrrReplyText :: Maybe Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ReviewsReplyRequest' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'rrrReplyText'
+reviewsReplyRequest
+    :: ReviewsReplyRequest
+reviewsReplyRequest =
+    ReviewsReplyRequest'
+    { _rrrReplyText = Nothing
+    }
+
+-- | The text to set as the reply. Replies of more than approximately 350
+-- characters will be rejected. HTML tags will be stripped.
+rrrReplyText :: Lens' ReviewsReplyRequest (Maybe Text)
+rrrReplyText
+  = lens _rrrReplyText (\ s a -> s{_rrrReplyText = a})
+
+instance FromJSON ReviewsReplyRequest where
+        parseJSON
+          = withObject "ReviewsReplyRequest"
+              (\ o -> ReviewsReplyRequest' <$> (o .:? "replyText"))
+
+instance ToJSON ReviewsReplyRequest where
+        toJSON ReviewsReplyRequest'{..}
+          = object
+              (catMaybes [("replyText" .=) <$> _rrrReplyText])
+
+--
+-- /See:/ 'developerComment' smart constructor.
+data DeveloperComment = DeveloperComment'
+    { _dcText         :: !(Maybe Text)
+    , _dcLastModified :: !(Maybe Timestamp)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'DeveloperComment' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'dcText'
+--
+-- * 'dcLastModified'
+developerComment
+    :: DeveloperComment
+developerComment =
+    DeveloperComment'
+    { _dcText = Nothing
+    , _dcLastModified = Nothing
+    }
+
+-- | The content of the comment, i.e. reply body.
+dcText :: Lens' DeveloperComment (Maybe Text)
+dcText = lens _dcText (\ s a -> s{_dcText = a})
+
+-- | The last time at which this comment was updated.
+dcLastModified :: Lens' DeveloperComment (Maybe Timestamp)
+dcLastModified
+  = lens _dcLastModified
+      (\ s a -> s{_dcLastModified = a})
+
+instance FromJSON DeveloperComment where
+        parseJSON
+          = withObject "DeveloperComment"
+              (\ o ->
+                 DeveloperComment' <$>
+                   (o .:? "text") <*> (o .:? "lastModified"))
+
+instance ToJSON DeveloperComment where
+        toJSON DeveloperComment'{..}
+          = object
+              (catMaybes
+                 [("text" .=) <$> _dcText,
+                  ("lastModified" .=) <$> _dcLastModified])
+
+--
+-- /See:/ 'inAppProduct' smart constructor.
+data InAppProduct = InAppProduct'
+    { _iapStatus             :: !(Maybe Text)
+    , _iapTrialPeriod        :: !(Maybe Text)
+    , _iapPackageName        :: !(Maybe Text)
+    , _iapSeason             :: !(Maybe Season)
+    , _iapPurchaseType       :: !(Maybe Text)
+    , _iapSubscriptionPeriod :: !(Maybe Text)
+    , _iapPrices             :: !(Maybe InAppProductPrices)
+    , _iapSKU                :: !(Maybe Text)
+    , _iapDefaultPrice       :: !(Maybe Price)
+    , _iapListings           :: !(Maybe InAppProductListings)
+    , _iapDefaultLanguage    :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'InAppProduct' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'iapStatus'
+--
+-- * 'iapTrialPeriod'
+--
+-- * 'iapPackageName'
+--
+-- * 'iapSeason'
+--
+-- * 'iapPurchaseType'
+--
+-- * 'iapSubscriptionPeriod'
+--
+-- * 'iapPrices'
+--
+-- * 'iapSKU'
+--
+-- * 'iapDefaultPrice'
+--
+-- * 'iapListings'
+--
+-- * 'iapDefaultLanguage'
+inAppProduct
+    :: InAppProduct
+inAppProduct =
+    InAppProduct'
+    { _iapStatus = Nothing
+    , _iapTrialPeriod = Nothing
+    , _iapPackageName = Nothing
+    , _iapSeason = Nothing
+    , _iapPurchaseType = Nothing
+    , _iapSubscriptionPeriod = Nothing
+    , _iapPrices = Nothing
+    , _iapSKU = Nothing
+    , _iapDefaultPrice = Nothing
+    , _iapListings = Nothing
+    , _iapDefaultLanguage = Nothing
+    }
+
+iapStatus :: Lens' InAppProduct (Maybe Text)
+iapStatus
+  = lens _iapStatus (\ s a -> s{_iapStatus = a})
+
+-- | Trial period, specified in ISO 8601 format. Acceptable values are
+-- anything between \"P7D\" (seven days) and \"P999D\" (999 days). Seasonal
+-- subscriptions cannot have a trial period.
+iapTrialPeriod :: Lens' InAppProduct (Maybe Text)
+iapTrialPeriod
+  = lens _iapTrialPeriod
+      (\ s a -> s{_iapTrialPeriod = a})
+
+-- | The package name of the parent app.
+iapPackageName :: Lens' InAppProduct (Maybe Text)
+iapPackageName
+  = lens _iapPackageName
+      (\ s a -> s{_iapPackageName = a})
+
+-- | Definition of a season for a seasonal subscription. Can be defined only
+-- for yearly subscriptions.
+iapSeason :: Lens' InAppProduct (Maybe Season)
+iapSeason
+  = lens _iapSeason (\ s a -> s{_iapSeason = a})
+
+-- | Purchase type enum value. Unmodifiable after creation.
+iapPurchaseType :: Lens' InAppProduct (Maybe Text)
+iapPurchaseType
+  = lens _iapPurchaseType
+      (\ s a -> s{_iapPurchaseType = a})
+
+-- | Subscription period, specified in ISO 8601 format. Acceptable values are
+-- \"P1W\" (one week), \"P1M\" (one month), \"P3M\" (three months), \"P6M\"
+-- (six months), and \"P1Y\" (one year).
+iapSubscriptionPeriod :: Lens' InAppProduct (Maybe Text)
+iapSubscriptionPeriod
+  = lens _iapSubscriptionPeriod
+      (\ s a -> s{_iapSubscriptionPeriod = a})
+
+-- | Prices per buyer region. None of these prices should be zero. In-app
+-- products can never be free.
+iapPrices :: Lens' InAppProduct (Maybe InAppProductPrices)
+iapPrices
+  = lens _iapPrices (\ s a -> s{_iapPrices = a})
+
+-- | The stock-keeping-unit (SKU) of the product, unique within an app.
+iapSKU :: Lens' InAppProduct (Maybe Text)
+iapSKU = lens _iapSKU (\ s a -> s{_iapSKU = a})
+
+-- | Default price cannot be zero. In-app products can never be free. Default
+-- price is always in the developer\'s Checkout merchant currency.
+iapDefaultPrice :: Lens' InAppProduct (Maybe Price)
+iapDefaultPrice
+  = lens _iapDefaultPrice
+      (\ s a -> s{_iapDefaultPrice = a})
+
+-- | List of localized title and description data.
+iapListings :: Lens' InAppProduct (Maybe InAppProductListings)
+iapListings
+  = lens _iapListings (\ s a -> s{_iapListings = a})
+
+-- | The default language of the localized data, as defined by BCP 47. e.g.
+-- \"en-US\", \"en-GB\".
+iapDefaultLanguage :: Lens' InAppProduct (Maybe Text)
+iapDefaultLanguage
+  = lens _iapDefaultLanguage
+      (\ s a -> s{_iapDefaultLanguage = a})
+
+instance FromJSON InAppProduct where
+        parseJSON
+          = withObject "InAppProduct"
+              (\ o ->
+                 InAppProduct' <$>
+                   (o .:? "status") <*> (o .:? "trialPeriod") <*>
+                     (o .:? "packageName")
+                     <*> (o .:? "season")
+                     <*> (o .:? "purchaseType")
+                     <*> (o .:? "subscriptionPeriod")
+                     <*> (o .:? "prices")
+                     <*> (o .:? "sku")
+                     <*> (o .:? "defaultPrice")
+                     <*> (o .:? "listings")
+                     <*> (o .:? "defaultLanguage"))
+
+instance ToJSON InAppProduct where
+        toJSON InAppProduct'{..}
+          = object
+              (catMaybes
+                 [("status" .=) <$> _iapStatus,
+                  ("trialPeriod" .=) <$> _iapTrialPeriod,
+                  ("packageName" .=) <$> _iapPackageName,
+                  ("season" .=) <$> _iapSeason,
+                  ("purchaseType" .=) <$> _iapPurchaseType,
+                  ("subscriptionPeriod" .=) <$> _iapSubscriptionPeriod,
+                  ("prices" .=) <$> _iapPrices, ("sku" .=) <$> _iapSKU,
+                  ("defaultPrice" .=) <$> _iapDefaultPrice,
+                  ("listings" .=) <$> _iapListings,
+                  ("defaultLanguage" .=) <$> _iapDefaultLanguage])
+
+--
+-- /See:/ 'inAppProductsBatchResponseEntry' smart constructor.
+data InAppProductsBatchResponseEntry = InAppProductsBatchResponseEntry'
+    { _iInAppProductsupdateresponse :: !(Maybe InAppProductsUpdateResponse)
+    , _iInAppProductsinsertresponse :: !(Maybe InAppProductsInsertResponse)
+    , _iBatchId                     :: !(Maybe (Textual Word32))
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'InAppProductsBatchResponseEntry' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'iInAppProductsupdateresponse'
+--
+-- * 'iInAppProductsinsertresponse'
+--
+-- * 'iBatchId'
+inAppProductsBatchResponseEntry
+    :: InAppProductsBatchResponseEntry
+inAppProductsBatchResponseEntry =
+    InAppProductsBatchResponseEntry'
+    { _iInAppProductsupdateresponse = Nothing
+    , _iInAppProductsinsertresponse = Nothing
+    , _iBatchId = Nothing
+    }
+
+iInAppProductsupdateresponse :: Lens' InAppProductsBatchResponseEntry (Maybe InAppProductsUpdateResponse)
+iInAppProductsupdateresponse
+  = lens _iInAppProductsupdateresponse
+      (\ s a -> s{_iInAppProductsupdateresponse = a})
+
+iInAppProductsinsertresponse :: Lens' InAppProductsBatchResponseEntry (Maybe InAppProductsInsertResponse)
+iInAppProductsinsertresponse
+  = lens _iInAppProductsinsertresponse
+      (\ s a -> s{_iInAppProductsinsertresponse = a})
+
+iBatchId :: Lens' InAppProductsBatchResponseEntry (Maybe Word32)
+iBatchId
+  = lens _iBatchId (\ s a -> s{_iBatchId = a}) .
+      mapping _Coerce
+
+instance FromJSON InAppProductsBatchResponseEntry
+         where
+        parseJSON
+          = withObject "InAppProductsBatchResponseEntry"
+              (\ o ->
+                 InAppProductsBatchResponseEntry' <$>
+                   (o .:? "inappproductsupdateresponse") <*>
+                     (o .:? "inappproductsinsertresponse")
+                     <*> (o .:? "batchId"))
+
+instance ToJSON InAppProductsBatchResponseEntry where
+        toJSON InAppProductsBatchResponseEntry'{..}
+          = object
+              (catMaybes
+                 [("inappproductsupdateresponse" .=) <$>
+                    _iInAppProductsupdateresponse,
+                  ("inappproductsinsertresponse" .=) <$>
+                    _iInAppProductsinsertresponse,
+                  ("batchId" .=) <$> _iBatchId])
+
+--
+-- /See:/ 'price' smart constructor.
+data Price = Price'
+    { _pPriceMicros :: !(Maybe Text)
+    , _pCurrency    :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'Price' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'pPriceMicros'
+--
+-- * 'pCurrency'
+price
+    :: Price
+price =
+    Price'
+    { _pPriceMicros = Nothing
+    , _pCurrency = Nothing
+    }
+
+-- | The price in millionths of the currency base unit represented as a
+-- string.
+pPriceMicros :: Lens' Price (Maybe Text)
+pPriceMicros
+  = lens _pPriceMicros (\ s a -> s{_pPriceMicros = a})
+
+-- | 3 letter Currency code, as defined by ISO 4217.
+pCurrency :: Lens' Price (Maybe Text)
+pCurrency
+  = lens _pCurrency (\ s a -> s{_pCurrency = a})
+
+instance FromJSON Price where
+        parseJSON
+          = withObject "Price"
+              (\ o ->
+                 Price' <$>
+                   (o .:? "priceMicros") <*> (o .:? "currency"))
+
+instance ToJSON Price where
+        toJSON Price'{..}
+          = object
+              (catMaybes
+                 [("priceMicros" .=) <$> _pPriceMicros,
+                  ("currency" .=) <$> _pCurrency])
+
+-- | Represents the binary payload of an APK.
+--
+-- /See:/ 'aPKBinary' smart constructor.
+newtype APKBinary = APKBinary'
+    { _apkbSha1 :: Maybe Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'APKBinary' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'apkbSha1'
+aPKBinary
+    :: APKBinary
+aPKBinary =
+    APKBinary'
+    { _apkbSha1 = Nothing
+    }
+
+-- | A sha1 hash of the APK payload, encoded as a hex string and matching the
+-- output of the sha1sum command.
+apkbSha1 :: Lens' APKBinary (Maybe Text)
+apkbSha1 = lens _apkbSha1 (\ s a -> s{_apkbSha1 = a})
+
+instance FromJSON APKBinary where
+        parseJSON
+          = withObject "APKBinary"
+              (\ o -> APKBinary' <$> (o .:? "sha1"))
+
+instance ToJSON APKBinary where
+        toJSON APKBinary'{..}
+          = object (catMaybes [("sha1" .=) <$> _apkbSha1])
+
+--
+-- /See:/ 'aPKsListResponse' smart constructor.
+data APKsListResponse = APKsListResponse'
+    { _apklrKind :: !Text
+    , _apklrAPKs :: !(Maybe [APK])
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'APKsListResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'apklrKind'
+--
+-- * 'apklrAPKs'
+aPKsListResponse
+    :: APKsListResponse
+aPKsListResponse =
+    APKsListResponse'
+    { _apklrKind = "androidpublisher#apksListResponse"
+    , _apklrAPKs = Nothing
+    }
+
+-- | Identifies what kind of resource this is. Value: the fixed string
+-- \"androidpublisher#apksListResponse\".
+apklrKind :: Lens' APKsListResponse Text
+apklrKind
+  = lens _apklrKind (\ s a -> s{_apklrKind = a})
+
+apklrAPKs :: Lens' APKsListResponse [APK]
+apklrAPKs
+  = lens _apklrAPKs (\ s a -> s{_apklrAPKs = a}) .
+      _Default
+      . _Coerce
+
+instance FromJSON APKsListResponse where
+        parseJSON
+          = withObject "APKsListResponse"
+              (\ o ->
+                 APKsListResponse' <$>
+                   (o .:? "kind" .!=
+                      "androidpublisher#apksListResponse")
+                     <*> (o .:? "apks" .!= mempty))
+
+instance ToJSON APKsListResponse where
+        toJSON APKsListResponse'{..}
+          = object
+              (catMaybes
+                 [Just ("kind" .= _apklrKind),
+                  ("apks" .=) <$> _apklrAPKs])
+
+--
+-- /See:/ 'reviewsReplyResponse' smart constructor.
+newtype ReviewsReplyResponse = ReviewsReplyResponse'
+    { _rrrResult :: Maybe ReviewReplyResult
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ReviewsReplyResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'rrrResult'
+reviewsReplyResponse
+    :: ReviewsReplyResponse
+reviewsReplyResponse =
+    ReviewsReplyResponse'
+    { _rrrResult = Nothing
+    }
+
+rrrResult :: Lens' ReviewsReplyResponse (Maybe ReviewReplyResult)
+rrrResult
+  = lens _rrrResult (\ s a -> s{_rrrResult = a})
+
+instance FromJSON ReviewsReplyResponse where
+        parseJSON
+          = withObject "ReviewsReplyResponse"
+              (\ o -> ReviewsReplyResponse' <$> (o .:? "result"))
+
+instance ToJSON ReviewsReplyResponse where
+        toJSON ReviewsReplyResponse'{..}
+          = object (catMaybes [("result" .=) <$> _rrrResult])
+
+-- | A permission used by this APK.
+--
+-- /See:/ 'externallyHostedAPKUsesPermission' smart constructor.
+data ExternallyHostedAPKUsesPermission = ExternallyHostedAPKUsesPermission'
+    { _ehapkupName          :: !(Maybe Text)
+    , _ehapkupMaxSdkVersion :: !(Maybe (Textual Int32))
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ExternallyHostedAPKUsesPermission' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'ehapkupName'
+--
+-- * 'ehapkupMaxSdkVersion'
+externallyHostedAPKUsesPermission
+    :: ExternallyHostedAPKUsesPermission
+externallyHostedAPKUsesPermission =
+    ExternallyHostedAPKUsesPermission'
+    { _ehapkupName = Nothing
+    , _ehapkupMaxSdkVersion = Nothing
+    }
+
+-- | The name of the permission requested.
+ehapkupName :: Lens' ExternallyHostedAPKUsesPermission (Maybe Text)
+ehapkupName
+  = lens _ehapkupName (\ s a -> s{_ehapkupName = a})
+
+-- | Optionally, the maximum SDK version for which the permission is
+-- required.
+ehapkupMaxSdkVersion :: Lens' ExternallyHostedAPKUsesPermission (Maybe Int32)
+ehapkupMaxSdkVersion
+  = lens _ehapkupMaxSdkVersion
+      (\ s a -> s{_ehapkupMaxSdkVersion = a})
+      . mapping _Coerce
+
+instance FromJSON ExternallyHostedAPKUsesPermission
+         where
+        parseJSON
+          = withObject "ExternallyHostedAPKUsesPermission"
+              (\ o ->
+                 ExternallyHostedAPKUsesPermission' <$>
+                   (o .:? "name") <*> (o .:? "maxSdkVersion"))
+
+instance ToJSON ExternallyHostedAPKUsesPermission
+         where
+        toJSON ExternallyHostedAPKUsesPermission'{..}
+          = object
+              (catMaybes
+                 [("name" .=) <$> _ehapkupName,
+                  ("maxSdkVersion" .=) <$> _ehapkupMaxSdkVersion])
+
+--
+-- /See:/ 'listingsListResponse' smart constructor.
+data ListingsListResponse = ListingsListResponse'
+    { _llrKind     :: !Text
+    , _llrListings :: !(Maybe [Listing])
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ListingsListResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'llrKind'
+--
+-- * 'llrListings'
+listingsListResponse
+    :: ListingsListResponse
+listingsListResponse =
+    ListingsListResponse'
+    { _llrKind = "androidpublisher#listingsListResponse"
+    , _llrListings = Nothing
+    }
+
+-- | Identifies what kind of resource this is. Value: the fixed string
+-- \"androidpublisher#listingsListResponse\".
+llrKind :: Lens' ListingsListResponse Text
+llrKind = lens _llrKind (\ s a -> s{_llrKind = a})
+
+llrListings :: Lens' ListingsListResponse [Listing]
+llrListings
+  = lens _llrListings (\ s a -> s{_llrListings = a}) .
+      _Default
+      . _Coerce
+
+instance FromJSON ListingsListResponse where
+        parseJSON
+          = withObject "ListingsListResponse"
+              (\ o ->
+                 ListingsListResponse' <$>
+                   (o .:? "kind" .!=
+                      "androidpublisher#listingsListResponse")
+                     <*> (o .:? "listings" .!= mempty))
+
+instance ToJSON ListingsListResponse where
+        toJSON ListingsListResponse'{..}
+          = object
+              (catMaybes
+                 [Just ("kind" .= _llrKind),
+                  ("listings" .=) <$> _llrListings])
+
+--
+-- /See:/ 'aPKsAddExternallyHostedRequest' smart constructor.
+newtype APKsAddExternallyHostedRequest = APKsAddExternallyHostedRequest'
+    { _aExternallyHostedAPK :: Maybe ExternallyHostedAPK
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'APKsAddExternallyHostedRequest' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'aExternallyHostedAPK'
+aPKsAddExternallyHostedRequest
+    :: APKsAddExternallyHostedRequest
+aPKsAddExternallyHostedRequest =
+    APKsAddExternallyHostedRequest'
+    { _aExternallyHostedAPK = Nothing
+    }
+
+-- | The definition of the externally-hosted APK and where it is located.
+aExternallyHostedAPK :: Lens' APKsAddExternallyHostedRequest (Maybe ExternallyHostedAPK)
+aExternallyHostedAPK
+  = lens _aExternallyHostedAPK
+      (\ s a -> s{_aExternallyHostedAPK = a})
+
+instance FromJSON APKsAddExternallyHostedRequest
+         where
+        parseJSON
+          = withObject "APKsAddExternallyHostedRequest"
+              (\ o ->
+                 APKsAddExternallyHostedRequest' <$>
+                   (o .:? "externallyHostedApk"))
+
+instance ToJSON APKsAddExternallyHostedRequest where
+        toJSON APKsAddExternallyHostedRequest'{..}
+          = object
+              (catMaybes
+                 [("externallyHostedApk" .=) <$>
+                    _aExternallyHostedAPK])
+
+--
+-- /See:/ 'inAppProductsInsertRequest' smart constructor.
+newtype InAppProductsInsertRequest = InAppProductsInsertRequest'
+    { _iInAppProduct :: Maybe InAppProduct
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'InAppProductsInsertRequest' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'iInAppProduct'
+inAppProductsInsertRequest
+    :: InAppProductsInsertRequest
+inAppProductsInsertRequest =
+    InAppProductsInsertRequest'
+    { _iInAppProduct = Nothing
+    }
+
+iInAppProduct :: Lens' InAppProductsInsertRequest (Maybe InAppProduct)
+iInAppProduct
+  = lens _iInAppProduct
+      (\ s a -> s{_iInAppProduct = a})
+
+instance FromJSON InAppProductsInsertRequest where
+        parseJSON
+          = withObject "InAppProductsInsertRequest"
+              (\ o ->
+                 InAppProductsInsertRequest' <$>
+                   (o .:? "inappproduct"))
+
+instance ToJSON InAppProductsInsertRequest where
+        toJSON InAppProductsInsertRequest'{..}
+          = object
+              (catMaybes [("inappproduct" .=) <$> _iInAppProduct])
+
+--
+-- /See:/ 'entitlementsListResponse' smart constructor.
+data EntitlementsListResponse = EntitlementsListResponse'
+    { _elrTokenPagination :: !(Maybe TokenPagination)
+    , _elrPageInfo        :: !(Maybe PageInfo)
+    , _elrResources       :: !(Maybe [Entitlement])
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'EntitlementsListResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'elrTokenPagination'
+--
+-- * 'elrPageInfo'
+--
+-- * 'elrResources'
+entitlementsListResponse
+    :: EntitlementsListResponse
+entitlementsListResponse =
+    EntitlementsListResponse'
+    { _elrTokenPagination = Nothing
+    , _elrPageInfo = Nothing
+    , _elrResources = Nothing
+    }
+
+elrTokenPagination :: Lens' EntitlementsListResponse (Maybe TokenPagination)
+elrTokenPagination
+  = lens _elrTokenPagination
+      (\ s a -> s{_elrTokenPagination = a})
+
+elrPageInfo :: Lens' EntitlementsListResponse (Maybe PageInfo)
+elrPageInfo
+  = lens _elrPageInfo (\ s a -> s{_elrPageInfo = a})
+
+elrResources :: Lens' EntitlementsListResponse [Entitlement]
+elrResources
+  = lens _elrResources (\ s a -> s{_elrResources = a})
+      . _Default
+      . _Coerce
+
+instance FromJSON EntitlementsListResponse where
+        parseJSON
+          = withObject "EntitlementsListResponse"
+              (\ o ->
+                 EntitlementsListResponse' <$>
+                   (o .:? "tokenPagination") <*> (o .:? "pageInfo") <*>
+                     (o .:? "resources" .!= mempty))
+
+instance ToJSON EntitlementsListResponse where
+        toJSON EntitlementsListResponse'{..}
+          = object
+              (catMaybes
+                 [("tokenPagination" .=) <$> _elrTokenPagination,
+                  ("pageInfo" .=) <$> _elrPageInfo,
+                  ("resources" .=) <$> _elrResources])
+
+--
+-- /See:/ 'comment' smart constructor.
+data Comment = Comment'
+    { _cUserComment      :: !(Maybe UserComment)
+    , _cDeveloperComment :: !(Maybe DeveloperComment)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'Comment' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'cUserComment'
+--
+-- * 'cDeveloperComment'
+comment
+    :: Comment
+comment =
+    Comment'
+    { _cUserComment = Nothing
+    , _cDeveloperComment = Nothing
+    }
+
+-- | A comment from a user.
+cUserComment :: Lens' Comment (Maybe UserComment)
+cUserComment
+  = lens _cUserComment (\ s a -> s{_cUserComment = a})
+
+-- | A comment from a developer.
+cDeveloperComment :: Lens' Comment (Maybe DeveloperComment)
+cDeveloperComment
+  = lens _cDeveloperComment
+      (\ s a -> s{_cDeveloperComment = a})
+
+instance FromJSON Comment where
+        parseJSON
+          = withObject "Comment"
+              (\ o ->
+                 Comment' <$>
+                   (o .:? "userComment") <*> (o .:? "developerComment"))
+
+instance ToJSON Comment where
+        toJSON Comment'{..}
+          = object
+              (catMaybes
+                 [("userComment" .=) <$> _cUserComment,
+                  ("developerComment" .=) <$> _cDeveloperComment])
+
+--
+-- /See:/ 'inAppProductsUpdateRequest' smart constructor.
+newtype InAppProductsUpdateRequest = InAppProductsUpdateRequest'
+    { _inInAppProduct :: Maybe InAppProduct
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'InAppProductsUpdateRequest' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'inInAppProduct'
+inAppProductsUpdateRequest
+    :: InAppProductsUpdateRequest
+inAppProductsUpdateRequest =
+    InAppProductsUpdateRequest'
+    { _inInAppProduct = Nothing
+    }
+
+inInAppProduct :: Lens' InAppProductsUpdateRequest (Maybe InAppProduct)
+inInAppProduct
+  = lens _inInAppProduct
+      (\ s a -> s{_inInAppProduct = a})
+
+instance FromJSON InAppProductsUpdateRequest where
+        parseJSON
+          = withObject "InAppProductsUpdateRequest"
+              (\ o ->
+                 InAppProductsUpdateRequest' <$>
+                   (o .:? "inappproduct"))
+
+instance ToJSON InAppProductsUpdateRequest where
+        toJSON InAppProductsUpdateRequest'{..}
+          = object
+              (catMaybes [("inappproduct" .=) <$> _inInAppProduct])
+
+--
+-- /See:/ 'timestamp' smart constructor.
+data Timestamp = Timestamp'
+    { _tNanos   :: !(Maybe (Textual Int32))
+    , _tSeconds :: !(Maybe (Textual Int64))
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'Timestamp' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'tNanos'
+--
+-- * 'tSeconds'
+timestamp
+    :: Timestamp
+timestamp =
+    Timestamp'
+    { _tNanos = Nothing
+    , _tSeconds = Nothing
+    }
+
+tNanos :: Lens' Timestamp (Maybe Int32)
+tNanos
+  = lens _tNanos (\ s a -> s{_tNanos = a}) .
+      mapping _Coerce
+
+tSeconds :: Lens' Timestamp (Maybe Int64)
+tSeconds
+  = lens _tSeconds (\ s a -> s{_tSeconds = a}) .
+      mapping _Coerce
+
+instance FromJSON Timestamp where
+        parseJSON
+          = withObject "Timestamp"
+              (\ o ->
+                 Timestamp' <$> (o .:? "nanos") <*> (o .:? "seconds"))
+
+instance ToJSON Timestamp where
+        toJSON Timestamp'{..}
+          = object
+              (catMaybes
+                 [("nanos" .=) <$> _tNanos,
+                  ("seconds" .=) <$> _tSeconds])
+
+--
+-- /See:/ 'reviewReplyResult' smart constructor.
+data ReviewReplyResult = ReviewReplyResult'
+    { _rReplyText  :: !(Maybe Text)
+    , _rLastEdited :: !(Maybe Timestamp)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ReviewReplyResult' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'rReplyText'
+--
+-- * 'rLastEdited'
+reviewReplyResult
+    :: ReviewReplyResult
+reviewReplyResult =
+    ReviewReplyResult'
+    { _rReplyText = Nothing
+    , _rLastEdited = Nothing
+    }
+
+-- | The reply text that was applied.
+rReplyText :: Lens' ReviewReplyResult (Maybe Text)
+rReplyText
+  = lens _rReplyText (\ s a -> s{_rReplyText = a})
+
+-- | The time at which the reply took effect.
+rLastEdited :: Lens' ReviewReplyResult (Maybe Timestamp)
+rLastEdited
+  = lens _rLastEdited (\ s a -> s{_rLastEdited = a})
+
+instance FromJSON ReviewReplyResult where
+        parseJSON
+          = withObject "ReviewReplyResult"
+              (\ o ->
+                 ReviewReplyResult' <$>
+                   (o .:? "replyText") <*> (o .:? "lastEdited"))
+
+instance ToJSON ReviewReplyResult where
+        toJSON ReviewReplyResult'{..}
+          = object
+              (catMaybes
+                 [("replyText" .=) <$> _rReplyText,
+                  ("lastEdited" .=) <$> _rLastEdited])
+
+-- | An Entitlement resource indicates a user\'s current entitlement to an
+-- inapp item or subscription.
+--
+-- /See:/ 'entitlement' smart constructor.
+data Entitlement = Entitlement'
+    { _eKind        :: !Text
+    , _eProductType :: !(Maybe Text)
+    , _eToken       :: !(Maybe Text)
+    , _eProductId   :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'Entitlement' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'eKind'
+--
+-- * 'eProductType'
+--
+-- * 'eToken'
+--
+-- * 'eProductId'
+entitlement
+    :: Entitlement
+entitlement =
+    Entitlement'
+    { _eKind = "androidpublisher#entitlement"
+    , _eProductType = Nothing
+    , _eToken = Nothing
+    , _eProductId = Nothing
+    }
+
+-- | This kind represents an entitlement object in the androidpublisher
+-- service.
+eKind :: Lens' Entitlement Text
+eKind = lens _eKind (\ s a -> s{_eKind = a})
+
+-- | The type of the inapp product. Possible values are: - In-app item:
+-- \"inapp\" - Subscription: \"subs\"
+eProductType :: Lens' Entitlement (Maybe Text)
+eProductType
+  = lens _eProductType (\ s a -> s{_eProductType = a})
+
+-- | The token which can be verified using the subscriptions or products API.
+eToken :: Lens' Entitlement (Maybe Text)
+eToken = lens _eToken (\ s a -> s{_eToken = a})
+
+-- | The SKU of the product.
+eProductId :: Lens' Entitlement (Maybe Text)
+eProductId
+  = lens _eProductId (\ s a -> s{_eProductId = a})
+
+instance FromJSON Entitlement where
+        parseJSON
+          = withObject "Entitlement"
+              (\ o ->
+                 Entitlement' <$>
+                   (o .:? "kind" .!= "androidpublisher#entitlement") <*>
+                     (o .:? "productType")
+                     <*> (o .:? "token")
+                     <*> (o .:? "productId"))
+
+instance ToJSON Entitlement where
+        toJSON Entitlement'{..}
+          = object
+              (catMaybes
+                 [Just ("kind" .= _eKind),
+                  ("productType" .=) <$> _eProductType,
+                  ("token" .=) <$> _eToken,
+                  ("productId" .=) <$> _eProductId])
+
+--
+-- /See:/ 'inAppProductsBatchResponse' smart constructor.
+data InAppProductsBatchResponse = InAppProductsBatchResponse'
+    { _iEntrys :: !(Maybe [InAppProductsBatchResponseEntry])
+    , _iKind   :: !Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'InAppProductsBatchResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'iEntrys'
+--
+-- * 'iKind'
+inAppProductsBatchResponse
+    :: InAppProductsBatchResponse
+inAppProductsBatchResponse =
+    InAppProductsBatchResponse'
+    { _iEntrys = Nothing
+    , _iKind = "androidpublisher#inappproductsBatchResponse"
+    }
+
+iEntrys :: Lens' InAppProductsBatchResponse [InAppProductsBatchResponseEntry]
+iEntrys
+  = lens _iEntrys (\ s a -> s{_iEntrys = a}) . _Default
+      . _Coerce
+
+-- | Identifies what kind of resource this is. Value: the fixed string
+-- \"androidpublisher#inappproductsBatchResponse\".
+iKind :: Lens' InAppProductsBatchResponse Text
+iKind = lens _iKind (\ s a -> s{_iKind = a})
+
+instance FromJSON InAppProductsBatchResponse where
+        parseJSON
+          = withObject "InAppProductsBatchResponse"
+              (\ o ->
+                 InAppProductsBatchResponse' <$>
+                   (o .:? "entrys" .!= mempty) <*>
+                     (o .:? "kind" .!=
+                        "androidpublisher#inappproductsBatchResponse"))
+
+instance ToJSON InAppProductsBatchResponse where
+        toJSON InAppProductsBatchResponse'{..}
           = object
               (catMaybes
                  [("entrys" .=) <$> _iEntrys,
diff --git a/gen/Network/Google/AndroidPublisher/Types/Sum.hs b/gen/Network/Google/AndroidPublisher/Types/Sum.hs
--- a/gen/Network/Google/AndroidPublisher/Types/Sum.hs
+++ b/gen/Network/Google/AndroidPublisher/Types/Sum.hs
@@ -8,7 +8,7 @@
 
 -- |
 -- Module      : Network.Google.AndroidPublisher.Types.Sum
--- Copyright   : (c) 2015 Brendan Hay
+-- Copyright   : (c) 2015-2016 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
 -- Stability   : auto-generated
@@ -37,25 +37,25 @@
       -- ^ @tvScreenshots@
     | WearScreenshots
       -- ^ @wearScreenshots@
-      deriving (Eq,Ord,Enum,Read,Show,Data,Typeable,Generic)
+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
 
 instance Hashable EditsImagesDeleteallImageType
 
-instance FromText EditsImagesDeleteallImageType where
-    fromText = \case
-        "featureGraphic" -> Just FeatureGraphic
-        "icon" -> Just Icon
-        "phoneScreenshots" -> Just PhoneScreenshots
-        "promoGraphic" -> Just PromoGraphic
-        "sevenInchScreenshots" -> Just SevenInchScreenshots
-        "tenInchScreenshots" -> Just TenInchScreenshots
-        "tvBanner" -> Just TvBanner
-        "tvScreenshots" -> Just TvScreenshots
-        "wearScreenshots" -> Just WearScreenshots
-        _ -> Nothing
+instance FromHttpApiData EditsImagesDeleteallImageType where
+    parseQueryParam = \case
+        "featureGraphic" -> Right FeatureGraphic
+        "icon" -> Right Icon
+        "phoneScreenshots" -> Right PhoneScreenshots
+        "promoGraphic" -> Right PromoGraphic
+        "sevenInchScreenshots" -> Right SevenInchScreenshots
+        "tenInchScreenshots" -> Right TenInchScreenshots
+        "tvBanner" -> Right TvBanner
+        "tvScreenshots" -> Right TvScreenshots
+        "wearScreenshots" -> Right WearScreenshots
+        x -> Left ("Unable to parse EditsImagesDeleteallImageType from: " <> x)
 
-instance ToText EditsImagesDeleteallImageType where
-    toText = \case
+instance ToHttpApiData EditsImagesDeleteallImageType where
+    toQueryParam = \case
         FeatureGraphic -> "featureGraphic"
         Icon -> "icon"
         PhoneScreenshots -> "phoneScreenshots"
@@ -82,20 +82,20 @@
       -- ^ @production@
     | Rollout
       -- ^ @rollout@
-      deriving (Eq,Ord,Enum,Read,Show,Data,Typeable,Generic)
+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
 
 instance Hashable EditsTracksPatchTrack
 
-instance FromText EditsTracksPatchTrack where
-    fromText = \case
-        "alpha" -> Just Alpha
-        "beta" -> Just Beta
-        "production" -> Just Production
-        "rollout" -> Just Rollout
-        _ -> Nothing
+instance FromHttpApiData EditsTracksPatchTrack where
+    parseQueryParam = \case
+        "alpha" -> Right Alpha
+        "beta" -> Right Beta
+        "production" -> Right Production
+        "rollout" -> Right Rollout
+        x -> Left ("Unable to parse EditsTracksPatchTrack from: " <> x)
 
-instance ToText EditsTracksPatchTrack where
-    toText = \case
+instance ToHttpApiData EditsTracksPatchTrack where
+    toQueryParam = \case
         Alpha -> "alpha"
         Beta -> "beta"
         Production -> "production"
@@ -117,20 +117,20 @@
       -- ^ @production@
     | ETGTRollout
       -- ^ @rollout@
-      deriving (Eq,Ord,Enum,Read,Show,Data,Typeable,Generic)
+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
 
 instance Hashable EditsTracksGetTrack
 
-instance FromText EditsTracksGetTrack where
-    fromText = \case
-        "alpha" -> Just ETGTAlpha
-        "beta" -> Just ETGTBeta
-        "production" -> Just ETGTProduction
-        "rollout" -> Just ETGTRollout
-        _ -> Nothing
+instance FromHttpApiData EditsTracksGetTrack where
+    parseQueryParam = \case
+        "alpha" -> Right ETGTAlpha
+        "beta" -> Right ETGTBeta
+        "production" -> Right ETGTProduction
+        "rollout" -> Right ETGTRollout
+        x -> Left ("Unable to parse EditsTracksGetTrack from: " <> x)
 
-instance ToText EditsTracksGetTrack where
-    toText = \case
+instance ToHttpApiData EditsTracksGetTrack where
+    toQueryParam = \case
         ETGTAlpha -> "alpha"
         ETGTBeta -> "beta"
         ETGTProduction -> "production"
@@ -152,20 +152,20 @@
       -- ^ @production@
     | ETUTRollout
       -- ^ @rollout@
-      deriving (Eq,Ord,Enum,Read,Show,Data,Typeable,Generic)
+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
 
 instance Hashable EditsTracksUpdateTrack
 
-instance FromText EditsTracksUpdateTrack where
-    fromText = \case
-        "alpha" -> Just ETUTAlpha
-        "beta" -> Just ETUTBeta
-        "production" -> Just ETUTProduction
-        "rollout" -> Just ETUTRollout
-        _ -> Nothing
+instance FromHttpApiData EditsTracksUpdateTrack where
+    parseQueryParam = \case
+        "alpha" -> Right ETUTAlpha
+        "beta" -> Right ETUTBeta
+        "production" -> Right ETUTProduction
+        "rollout" -> Right ETUTRollout
+        x -> Left ("Unable to parse EditsTracksUpdateTrack from: " <> x)
 
-instance ToText EditsTracksUpdateTrack where
-    toText = \case
+instance ToHttpApiData EditsTracksUpdateTrack where
+    toQueryParam = \case
         ETUTAlpha -> "alpha"
         ETUTBeta -> "beta"
         ETUTProduction -> "production"
@@ -196,25 +196,25 @@
       -- ^ @tvScreenshots@
     | EILITWearScreenshots
       -- ^ @wearScreenshots@
-      deriving (Eq,Ord,Enum,Read,Show,Data,Typeable,Generic)
+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
 
 instance Hashable EditsImagesListImageType
 
-instance FromText EditsImagesListImageType where
-    fromText = \case
-        "featureGraphic" -> Just EILITFeatureGraphic
-        "icon" -> Just EILITIcon
-        "phoneScreenshots" -> Just EILITPhoneScreenshots
-        "promoGraphic" -> Just EILITPromoGraphic
-        "sevenInchScreenshots" -> Just EILITSevenInchScreenshots
-        "tenInchScreenshots" -> Just EILITTenInchScreenshots
-        "tvBanner" -> Just EILITTvBanner
-        "tvScreenshots" -> Just EILITTvScreenshots
-        "wearScreenshots" -> Just EILITWearScreenshots
-        _ -> Nothing
+instance FromHttpApiData EditsImagesListImageType where
+    parseQueryParam = \case
+        "featureGraphic" -> Right EILITFeatureGraphic
+        "icon" -> Right EILITIcon
+        "phoneScreenshots" -> Right EILITPhoneScreenshots
+        "promoGraphic" -> Right EILITPromoGraphic
+        "sevenInchScreenshots" -> Right EILITSevenInchScreenshots
+        "tenInchScreenshots" -> Right EILITTenInchScreenshots
+        "tvBanner" -> Right EILITTvBanner
+        "tvScreenshots" -> Right EILITTvScreenshots
+        "wearScreenshots" -> Right EILITWearScreenshots
+        x -> Left ("Unable to parse EditsImagesListImageType from: " <> x)
 
-instance ToText EditsImagesListImageType where
-    toText = \case
+instance ToHttpApiData EditsImagesListImageType where
+    toQueryParam = \case
         EILITFeatureGraphic -> "featureGraphic"
         EILITIcon -> "icon"
         EILITPhoneScreenshots -> "phoneScreenshots"
@@ -240,20 +240,20 @@
       -- ^ @production@
     | ETPTRollout
       -- ^ @rollout@
-      deriving (Eq,Ord,Enum,Read,Show,Data,Typeable,Generic)
+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
 
 instance Hashable EditsTestersPatchTrack
 
-instance FromText EditsTestersPatchTrack where
-    fromText = \case
-        "alpha" -> Just ETPTAlpha
-        "beta" -> Just ETPTBeta
-        "production" -> Just ETPTProduction
-        "rollout" -> Just ETPTRollout
-        _ -> Nothing
+instance FromHttpApiData EditsTestersPatchTrack where
+    parseQueryParam = \case
+        "alpha" -> Right ETPTAlpha
+        "beta" -> Right ETPTBeta
+        "production" -> Right ETPTProduction
+        "rollout" -> Right ETPTRollout
+        x -> Left ("Unable to parse EditsTestersPatchTrack from: " <> x)
 
-instance ToText EditsTestersPatchTrack where
-    toText = \case
+instance ToHttpApiData EditsTestersPatchTrack where
+    toQueryParam = \case
         ETPTAlpha -> "alpha"
         ETPTBeta -> "beta"
         ETPTProduction -> "production"
@@ -274,20 +274,20 @@
       -- ^ @production@
     | ERollout
       -- ^ @rollout@
-      deriving (Eq,Ord,Enum,Read,Show,Data,Typeable,Generic)
+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
 
 instance Hashable EditsTestersGetTrack
 
-instance FromText EditsTestersGetTrack where
-    fromText = \case
-        "alpha" -> Just EAlpha
-        "beta" -> Just EBeta
-        "production" -> Just EProduction
-        "rollout" -> Just ERollout
-        _ -> Nothing
+instance FromHttpApiData EditsTestersGetTrack where
+    parseQueryParam = \case
+        "alpha" -> Right EAlpha
+        "beta" -> Right EBeta
+        "production" -> Right EProduction
+        "rollout" -> Right ERollout
+        x -> Left ("Unable to parse EditsTestersGetTrack from: " <> x)
 
-instance ToText EditsTestersGetTrack where
-    toText = \case
+instance ToHttpApiData EditsTestersGetTrack where
+    toQueryParam = \case
         EAlpha -> "alpha"
         EBeta -> "beta"
         EProduction -> "production"
@@ -318,25 +318,25 @@
       -- ^ @tvScreenshots@
     | EIUITWearScreenshots
       -- ^ @wearScreenshots@
-      deriving (Eq,Ord,Enum,Read,Show,Data,Typeable,Generic)
+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
 
 instance Hashable EditsImagesUploadImageType
 
-instance FromText EditsImagesUploadImageType where
-    fromText = \case
-        "featureGraphic" -> Just EIUITFeatureGraphic
-        "icon" -> Just EIUITIcon
-        "phoneScreenshots" -> Just EIUITPhoneScreenshots
-        "promoGraphic" -> Just EIUITPromoGraphic
-        "sevenInchScreenshots" -> Just EIUITSevenInchScreenshots
-        "tenInchScreenshots" -> Just EIUITTenInchScreenshots
-        "tvBanner" -> Just EIUITTvBanner
-        "tvScreenshots" -> Just EIUITTvScreenshots
-        "wearScreenshots" -> Just EIUITWearScreenshots
-        _ -> Nothing
+instance FromHttpApiData EditsImagesUploadImageType where
+    parseQueryParam = \case
+        "featureGraphic" -> Right EIUITFeatureGraphic
+        "icon" -> Right EIUITIcon
+        "phoneScreenshots" -> Right EIUITPhoneScreenshots
+        "promoGraphic" -> Right EIUITPromoGraphic
+        "sevenInchScreenshots" -> Right EIUITSevenInchScreenshots
+        "tenInchScreenshots" -> Right EIUITTenInchScreenshots
+        "tvBanner" -> Right EIUITTvBanner
+        "tvScreenshots" -> Right EIUITTvScreenshots
+        "wearScreenshots" -> Right EIUITWearScreenshots
+        x -> Left ("Unable to parse EditsImagesUploadImageType from: " <> x)
 
-instance ToText EditsImagesUploadImageType where
-    toText = \case
+instance ToHttpApiData EditsImagesUploadImageType where
+    toQueryParam = \case
         EIUITFeatureGraphic -> "featureGraphic"
         EIUITIcon -> "icon"
         EIUITPhoneScreenshots -> "phoneScreenshots"
@@ -358,18 +358,18 @@
       -- ^ @main@
     | Patch'
       -- ^ @patch@
-      deriving (Eq,Ord,Enum,Read,Show,Data,Typeable,Generic)
+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
 
 instance Hashable EditsExpansionFilesUploadExpansionFileType
 
-instance FromText EditsExpansionFilesUploadExpansionFileType where
-    fromText = \case
-        "main" -> Just Main
-        "patch" -> Just Patch'
-        _ -> Nothing
+instance FromHttpApiData EditsExpansionFilesUploadExpansionFileType where
+    parseQueryParam = \case
+        "main" -> Right Main
+        "patch" -> Right Patch'
+        x -> Left ("Unable to parse EditsExpansionFilesUploadExpansionFileType from: " <> x)
 
-instance ToText EditsExpansionFilesUploadExpansionFileType where
-    toText = \case
+instance ToHttpApiData EditsExpansionFilesUploadExpansionFileType where
+    toQueryParam = \case
         Main -> "main"
         Patch' -> "patch"
 
@@ -384,18 +384,18 @@
       -- ^ @main@
     | EEFGEFTPatch'
       -- ^ @patch@
-      deriving (Eq,Ord,Enum,Read,Show,Data,Typeable,Generic)
+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
 
 instance Hashable EditsExpansionFilesGetExpansionFileType
 
-instance FromText EditsExpansionFilesGetExpansionFileType where
-    fromText = \case
-        "main" -> Just EEFGEFTMain
-        "patch" -> Just EEFGEFTPatch'
-        _ -> Nothing
+instance FromHttpApiData EditsExpansionFilesGetExpansionFileType where
+    parseQueryParam = \case
+        "main" -> Right EEFGEFTMain
+        "patch" -> Right EEFGEFTPatch'
+        x -> Left ("Unable to parse EditsExpansionFilesGetExpansionFileType from: " <> x)
 
-instance ToText EditsExpansionFilesGetExpansionFileType where
-    toText = \case
+instance ToHttpApiData EditsExpansionFilesGetExpansionFileType where
+    toQueryParam = \case
         EEFGEFTMain -> "main"
         EEFGEFTPatch' -> "patch"
 
@@ -410,18 +410,18 @@
       -- ^ @main@
     | EEFPEFTPatch'
       -- ^ @patch@
-      deriving (Eq,Ord,Enum,Read,Show,Data,Typeable,Generic)
+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
 
 instance Hashable EditsExpansionFilesPatchExpansionFileType
 
-instance FromText EditsExpansionFilesPatchExpansionFileType where
-    fromText = \case
-        "main" -> Just EEFPEFTMain
-        "patch" -> Just EEFPEFTPatch'
-        _ -> Nothing
+instance FromHttpApiData EditsExpansionFilesPatchExpansionFileType where
+    parseQueryParam = \case
+        "main" -> Right EEFPEFTMain
+        "patch" -> Right EEFPEFTPatch'
+        x -> Left ("Unable to parse EditsExpansionFilesPatchExpansionFileType from: " <> x)
 
-instance ToText EditsExpansionFilesPatchExpansionFileType where
-    toText = \case
+instance ToHttpApiData EditsExpansionFilesPatchExpansionFileType where
+    toQueryParam = \case
         EEFPEFTMain -> "main"
         EEFPEFTPatch' -> "patch"
 
@@ -436,18 +436,18 @@
       -- ^ @main@
     | EEFUEFTPatch'
       -- ^ @patch@
-      deriving (Eq,Ord,Enum,Read,Show,Data,Typeable,Generic)
+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
 
 instance Hashable EditsExpansionFilesUpdateExpansionFileType
 
-instance FromText EditsExpansionFilesUpdateExpansionFileType where
-    fromText = \case
-        "main" -> Just EEFUEFTMain
-        "patch" -> Just EEFUEFTPatch'
-        _ -> Nothing
+instance FromHttpApiData EditsExpansionFilesUpdateExpansionFileType where
+    parseQueryParam = \case
+        "main" -> Right EEFUEFTMain
+        "patch" -> Right EEFUEFTPatch'
+        x -> Left ("Unable to parse EditsExpansionFilesUpdateExpansionFileType from: " <> x)
 
-instance ToText EditsExpansionFilesUpdateExpansionFileType where
-    toText = \case
+instance ToHttpApiData EditsExpansionFilesUpdateExpansionFileType where
+    toQueryParam = \case
         EEFUEFTMain -> "main"
         EEFUEFTPatch' -> "patch"
 
@@ -476,25 +476,25 @@
       -- ^ @tvScreenshots@
     | EIDITWearScreenshots
       -- ^ @wearScreenshots@
-      deriving (Eq,Ord,Enum,Read,Show,Data,Typeable,Generic)
+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
 
 instance Hashable EditsImagesDeleteImageType
 
-instance FromText EditsImagesDeleteImageType where
-    fromText = \case
-        "featureGraphic" -> Just EIDITFeatureGraphic
-        "icon" -> Just EIDITIcon
-        "phoneScreenshots" -> Just EIDITPhoneScreenshots
-        "promoGraphic" -> Just EIDITPromoGraphic
-        "sevenInchScreenshots" -> Just EIDITSevenInchScreenshots
-        "tenInchScreenshots" -> Just EIDITTenInchScreenshots
-        "tvBanner" -> Just EIDITTvBanner
-        "tvScreenshots" -> Just EIDITTvScreenshots
-        "wearScreenshots" -> Just EIDITWearScreenshots
-        _ -> Nothing
+instance FromHttpApiData EditsImagesDeleteImageType where
+    parseQueryParam = \case
+        "featureGraphic" -> Right EIDITFeatureGraphic
+        "icon" -> Right EIDITIcon
+        "phoneScreenshots" -> Right EIDITPhoneScreenshots
+        "promoGraphic" -> Right EIDITPromoGraphic
+        "sevenInchScreenshots" -> Right EIDITSevenInchScreenshots
+        "tenInchScreenshots" -> Right EIDITTenInchScreenshots
+        "tvBanner" -> Right EIDITTvBanner
+        "tvScreenshots" -> Right EIDITTvScreenshots
+        "wearScreenshots" -> Right EIDITWearScreenshots
+        x -> Left ("Unable to parse EditsImagesDeleteImageType from: " <> x)
 
-instance ToText EditsImagesDeleteImageType where
-    toText = \case
+instance ToHttpApiData EditsImagesDeleteImageType where
+    toQueryParam = \case
         EIDITFeatureGraphic -> "featureGraphic"
         EIDITIcon -> "icon"
         EIDITPhoneScreenshots -> "phoneScreenshots"
@@ -520,20 +520,20 @@
       -- ^ @production@
     | EDIRollout
       -- ^ @rollout@
-      deriving (Eq,Ord,Enum,Read,Show,Data,Typeable,Generic)
+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
 
 instance Hashable EditsTestersUpdateTrack
 
-instance FromText EditsTestersUpdateTrack where
-    fromText = \case
-        "alpha" -> Just EDIAlpha
-        "beta" -> Just EDIBeta
-        "production" -> Just EDIProduction
-        "rollout" -> Just EDIRollout
-        _ -> Nothing
+instance FromHttpApiData EditsTestersUpdateTrack where
+    parseQueryParam = \case
+        "alpha" -> Right EDIAlpha
+        "beta" -> Right EDIBeta
+        "production" -> Right EDIProduction
+        "rollout" -> Right EDIRollout
+        x -> Left ("Unable to parse EditsTestersUpdateTrack from: " <> x)
 
-instance ToText EditsTestersUpdateTrack where
-    toText = \case
+instance ToHttpApiData EditsTestersUpdateTrack where
+    toQueryParam = \case
         EDIAlpha -> "alpha"
         EDIBeta -> "beta"
         EDIProduction -> "production"
diff --git a/gen/Network/Google/Resource/AndroidPublisher/Edits/APKListings/Delete.hs b/gen/Network/Google/Resource/AndroidPublisher/Edits/APKListings/Delete.hs
--- a/gen/Network/Google/Resource/AndroidPublisher/Edits/APKListings/Delete.hs
+++ b/gen/Network/Google/Resource/AndroidPublisher/Edits/APKListings/Delete.hs
@@ -14,7 +14,7 @@
 
 -- |
 -- Module      : Network.Google.Resource.AndroidPublisher.Edits.APKListings.Delete
--- Copyright   : (c) 2015 Brendan Hay
+-- Copyright   : (c) 2015-2016 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
 -- Stability   : auto-generated
@@ -62,7 +62,7 @@
 -- language code.
 --
 -- /See:/ 'editsAPKListingsDelete' smart constructor.
-data EditsAPKListingsDelete = EditsAPKListingsDelete
+data EditsAPKListingsDelete = EditsAPKListingsDelete'
     { _eapkldPackageName    :: !Text
     , _eapkldAPKVersionCode :: !(Textual Int32)
     , _eapkldLanguage       :: !Text
@@ -87,7 +87,7 @@
     -> Text -- ^ 'eapkldEditId'
     -> EditsAPKListingsDelete
 editsAPKListingsDelete pEapkldPackageName_ pEapkldAPKVersionCode_ pEapkldLanguage_ pEapkldEditId_ =
-    EditsAPKListingsDelete
+    EditsAPKListingsDelete'
     { _eapkldPackageName = pEapkldPackageName_
     , _eapkldAPKVersionCode = _Coerce # pEapkldAPKVersionCode_
     , _eapkldLanguage = pEapkldLanguage_
@@ -124,7 +124,9 @@
 
 instance GoogleRequest EditsAPKListingsDelete where
         type Rs EditsAPKListingsDelete = ()
-        requestClient EditsAPKListingsDelete{..}
+        type Scopes EditsAPKListingsDelete =
+             '["https://www.googleapis.com/auth/androidpublisher"]
+        requestClient EditsAPKListingsDelete'{..}
           = go _eapkldPackageName _eapkldEditId
               _eapkldAPKVersionCode
               _eapkldLanguage
diff --git a/gen/Network/Google/Resource/AndroidPublisher/Edits/APKListings/Deleteall.hs b/gen/Network/Google/Resource/AndroidPublisher/Edits/APKListings/Deleteall.hs
--- a/gen/Network/Google/Resource/AndroidPublisher/Edits/APKListings/Deleteall.hs
+++ b/gen/Network/Google/Resource/AndroidPublisher/Edits/APKListings/Deleteall.hs
@@ -14,7 +14,7 @@
 
 -- |
 -- Module      : Network.Google.Resource.AndroidPublisher.Edits.APKListings.Deleteall
--- Copyright   : (c) 2015 Brendan Hay
+-- Copyright   : (c) 2015-2016 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
 -- Stability   : auto-generated
@@ -58,7 +58,7 @@
 -- | Deletes all the APK-specific localized listings for a specified APK.
 --
 -- /See:/ 'editsAPKListingsDeleteall' smart constructor.
-data EditsAPKListingsDeleteall = EditsAPKListingsDeleteall
+data EditsAPKListingsDeleteall = EditsAPKListingsDeleteall'
     { _eapkldaPackageName    :: !Text
     , _eapkldaAPKVersionCode :: !(Textual Int32)
     , _eapkldaEditId         :: !Text
@@ -79,7 +79,7 @@
     -> Text -- ^ 'eapkldaEditId'
     -> EditsAPKListingsDeleteall
 editsAPKListingsDeleteall pEapkldaPackageName_ pEapkldaAPKVersionCode_ pEapkldaEditId_ =
-    EditsAPKListingsDeleteall
+    EditsAPKListingsDeleteall'
     { _eapkldaPackageName = pEapkldaPackageName_
     , _eapkldaAPKVersionCode = _Coerce # pEapkldaAPKVersionCode_
     , _eapkldaEditId = pEapkldaEditId_
@@ -109,7 +109,9 @@
 instance GoogleRequest EditsAPKListingsDeleteall
          where
         type Rs EditsAPKListingsDeleteall = ()
-        requestClient EditsAPKListingsDeleteall{..}
+        type Scopes EditsAPKListingsDeleteall =
+             '["https://www.googleapis.com/auth/androidpublisher"]
+        requestClient EditsAPKListingsDeleteall'{..}
           = go _eapkldaPackageName _eapkldaEditId
               _eapkldaAPKVersionCode
               (Just AltJSON)
diff --git a/gen/Network/Google/Resource/AndroidPublisher/Edits/APKListings/Get.hs b/gen/Network/Google/Resource/AndroidPublisher/Edits/APKListings/Get.hs
--- a/gen/Network/Google/Resource/AndroidPublisher/Edits/APKListings/Get.hs
+++ b/gen/Network/Google/Resource/AndroidPublisher/Edits/APKListings/Get.hs
@@ -14,7 +14,7 @@
 
 -- |
 -- Module      : Network.Google.Resource.AndroidPublisher.Edits.APKListings.Get
--- Copyright   : (c) 2015 Brendan Hay
+-- Copyright   : (c) 2015-2016 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
 -- Stability   : auto-generated
@@ -62,7 +62,7 @@
 -- language code.
 --
 -- /See:/ 'editsAPKListingsGet' smart constructor.
-data EditsAPKListingsGet = EditsAPKListingsGet
+data EditsAPKListingsGet = EditsAPKListingsGet'
     { _eapklgPackageName    :: !Text
     , _eapklgAPKVersionCode :: !(Textual Int32)
     , _eapklgLanguage       :: !Text
@@ -87,7 +87,7 @@
     -> Text -- ^ 'eapklgEditId'
     -> EditsAPKListingsGet
 editsAPKListingsGet pEapklgPackageName_ pEapklgAPKVersionCode_ pEapklgLanguage_ pEapklgEditId_ =
-    EditsAPKListingsGet
+    EditsAPKListingsGet'
     { _eapklgPackageName = pEapklgPackageName_
     , _eapklgAPKVersionCode = _Coerce # pEapklgAPKVersionCode_
     , _eapklgLanguage = pEapklgLanguage_
@@ -124,7 +124,9 @@
 
 instance GoogleRequest EditsAPKListingsGet where
         type Rs EditsAPKListingsGet = APKListing
-        requestClient EditsAPKListingsGet{..}
+        type Scopes EditsAPKListingsGet =
+             '["https://www.googleapis.com/auth/androidpublisher"]
+        requestClient EditsAPKListingsGet'{..}
           = go _eapklgPackageName _eapklgEditId
               _eapklgAPKVersionCode
               _eapklgLanguage
diff --git a/gen/Network/Google/Resource/AndroidPublisher/Edits/APKListings/List.hs b/gen/Network/Google/Resource/AndroidPublisher/Edits/APKListings/List.hs
--- a/gen/Network/Google/Resource/AndroidPublisher/Edits/APKListings/List.hs
+++ b/gen/Network/Google/Resource/AndroidPublisher/Edits/APKListings/List.hs
@@ -14,7 +14,7 @@
 
 -- |
 -- Module      : Network.Google.Resource.AndroidPublisher.Edits.APKListings.List
--- Copyright   : (c) 2015 Brendan Hay
+-- Copyright   : (c) 2015-2016 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
 -- Stability   : auto-generated
@@ -59,7 +59,7 @@
 -- | Lists all the APK-specific localized listings for a specified APK.
 --
 -- /See:/ 'editsAPKListingsList' smart constructor.
-data EditsAPKListingsList = EditsAPKListingsList
+data EditsAPKListingsList = EditsAPKListingsList'
     { _eapkllPackageName    :: !Text
     , _eapkllAPKVersionCode :: !(Textual Int32)
     , _eapkllEditId         :: !Text
@@ -80,7 +80,7 @@
     -> Text -- ^ 'eapkllEditId'
     -> EditsAPKListingsList
 editsAPKListingsList pEapkllPackageName_ pEapkllAPKVersionCode_ pEapkllEditId_ =
-    EditsAPKListingsList
+    EditsAPKListingsList'
     { _eapkllPackageName = pEapkllPackageName_
     , _eapkllAPKVersionCode = _Coerce # pEapkllAPKVersionCode_
     , _eapkllEditId = pEapkllEditId_
@@ -109,7 +109,9 @@
 instance GoogleRequest EditsAPKListingsList where
         type Rs EditsAPKListingsList =
              APKListingsListResponse
-        requestClient EditsAPKListingsList{..}
+        type Scopes EditsAPKListingsList =
+             '["https://www.googleapis.com/auth/androidpublisher"]
+        requestClient EditsAPKListingsList'{..}
           = go _eapkllPackageName _eapkllEditId
               _eapkllAPKVersionCode
               (Just AltJSON)
diff --git a/gen/Network/Google/Resource/AndroidPublisher/Edits/APKListings/Patch.hs b/gen/Network/Google/Resource/AndroidPublisher/Edits/APKListings/Patch.hs
--- a/gen/Network/Google/Resource/AndroidPublisher/Edits/APKListings/Patch.hs
+++ b/gen/Network/Google/Resource/AndroidPublisher/Edits/APKListings/Patch.hs
@@ -14,7 +14,7 @@
 
 -- |
 -- Module      : Network.Google.Resource.AndroidPublisher.Edits.APKListings.Patch
--- Copyright   : (c) 2015 Brendan Hay
+-- Copyright   : (c) 2015-2016 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
 -- Stability   : auto-generated
@@ -65,7 +65,7 @@
 -- APK and language code. This method supports patch semantics.
 --
 -- /See:/ 'editsAPKListingsPatch' smart constructor.
-data EditsAPKListingsPatch = EditsAPKListingsPatch
+data EditsAPKListingsPatch = EditsAPKListingsPatch'
     { _eapklpPackageName    :: !Text
     , _eapklpAPKVersionCode :: !(Textual Int32)
     , _eapklpPayload        :: !APKListing
@@ -94,7 +94,7 @@
     -> Text -- ^ 'eapklpEditId'
     -> EditsAPKListingsPatch
 editsAPKListingsPatch pEapklpPackageName_ pEapklpAPKVersionCode_ pEapklpPayload_ pEapklpLanguage_ pEapklpEditId_ =
-    EditsAPKListingsPatch
+    EditsAPKListingsPatch'
     { _eapklpPackageName = pEapklpPackageName_
     , _eapklpAPKVersionCode = _Coerce # pEapklpAPKVersionCode_
     , _eapklpPayload = pEapklpPayload_
@@ -138,7 +138,9 @@
 
 instance GoogleRequest EditsAPKListingsPatch where
         type Rs EditsAPKListingsPatch = APKListing
-        requestClient EditsAPKListingsPatch{..}
+        type Scopes EditsAPKListingsPatch =
+             '["https://www.googleapis.com/auth/androidpublisher"]
+        requestClient EditsAPKListingsPatch'{..}
           = go _eapklpPackageName _eapklpEditId
               _eapklpAPKVersionCode
               _eapklpLanguage
diff --git a/gen/Network/Google/Resource/AndroidPublisher/Edits/APKListings/Update.hs b/gen/Network/Google/Resource/AndroidPublisher/Edits/APKListings/Update.hs
--- a/gen/Network/Google/Resource/AndroidPublisher/Edits/APKListings/Update.hs
+++ b/gen/Network/Google/Resource/AndroidPublisher/Edits/APKListings/Update.hs
@@ -14,7 +14,7 @@
 
 -- |
 -- Module      : Network.Google.Resource.AndroidPublisher.Edits.APKListings.Update
--- Copyright   : (c) 2015 Brendan Hay
+-- Copyright   : (c) 2015-2016 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
 -- Stability   : auto-generated
@@ -64,7 +64,7 @@
 -- APK and language code.
 --
 -- /See:/ 'editsAPKListingsUpdate' smart constructor.
-data EditsAPKListingsUpdate = EditsAPKListingsUpdate
+data EditsAPKListingsUpdate = EditsAPKListingsUpdate'
     { _eapkluPackageName    :: !Text
     , _eapkluAPKVersionCode :: !(Textual Int32)
     , _eapkluPayload        :: !APKListing
@@ -93,7 +93,7 @@
     -> Text -- ^ 'eapkluEditId'
     -> EditsAPKListingsUpdate
 editsAPKListingsUpdate pEapkluPackageName_ pEapkluAPKVersionCode_ pEapkluPayload_ pEapkluLanguage_ pEapkluEditId_ =
-    EditsAPKListingsUpdate
+    EditsAPKListingsUpdate'
     { _eapkluPackageName = pEapkluPackageName_
     , _eapkluAPKVersionCode = _Coerce # pEapkluAPKVersionCode_
     , _eapkluPayload = pEapkluPayload_
@@ -137,7 +137,9 @@
 
 instance GoogleRequest EditsAPKListingsUpdate where
         type Rs EditsAPKListingsUpdate = APKListing
-        requestClient EditsAPKListingsUpdate{..}
+        type Scopes EditsAPKListingsUpdate =
+             '["https://www.googleapis.com/auth/androidpublisher"]
+        requestClient EditsAPKListingsUpdate'{..}
           = go _eapkluPackageName _eapkluEditId
               _eapkluAPKVersionCode
               _eapkluLanguage
diff --git a/gen/Network/Google/Resource/AndroidPublisher/Edits/APKs/Addexternallyhosted.hs b/gen/Network/Google/Resource/AndroidPublisher/Edits/APKs/Addexternallyhosted.hs
--- a/gen/Network/Google/Resource/AndroidPublisher/Edits/APKs/Addexternallyhosted.hs
+++ b/gen/Network/Google/Resource/AndroidPublisher/Edits/APKs/Addexternallyhosted.hs
@@ -14,7 +14,7 @@
 
 -- |
 -- Module      : Network.Google.Resource.AndroidPublisher.Edits.APKs.Addexternallyhosted
--- Copyright   : (c) 2015 Brendan Hay
+-- Copyright   : (c) 2015-2016 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
 -- Stability   : auto-generated
@@ -65,7 +65,7 @@
 -- configured to restrict distribution to the enterprise domain.
 --
 -- /See:/ 'editsAPKsAddexternallyhosted' smart constructor.
-data EditsAPKsAddexternallyhosted = EditsAPKsAddexternallyhosted
+data EditsAPKsAddexternallyhosted = EditsAPKsAddexternallyhosted'
     { _eapkaPackageName :: !Text
     , _eapkaPayload     :: !APKsAddExternallyHostedRequest
     , _eapkaEditId      :: !Text
@@ -86,7 +86,7 @@
     -> Text -- ^ 'eapkaEditId'
     -> EditsAPKsAddexternallyhosted
 editsAPKsAddexternallyhosted pEapkaPackageName_ pEapkaPayload_ pEapkaEditId_ =
-    EditsAPKsAddexternallyhosted
+    EditsAPKsAddexternallyhosted'
     { _eapkaPackageName = pEapkaPackageName_
     , _eapkaPayload = pEapkaPayload_
     , _eapkaEditId = pEapkaEditId_
@@ -113,7 +113,9 @@
          where
         type Rs EditsAPKsAddexternallyhosted =
              APKsAddExternallyHostedResponse
-        requestClient EditsAPKsAddexternallyhosted{..}
+        type Scopes EditsAPKsAddexternallyhosted =
+             '["https://www.googleapis.com/auth/androidpublisher"]
+        requestClient EditsAPKsAddexternallyhosted'{..}
           = go _eapkaPackageName _eapkaEditId (Just AltJSON)
               _eapkaPayload
               androidPublisherService
diff --git a/gen/Network/Google/Resource/AndroidPublisher/Edits/APKs/List.hs b/gen/Network/Google/Resource/AndroidPublisher/Edits/APKs/List.hs
--- a/gen/Network/Google/Resource/AndroidPublisher/Edits/APKs/List.hs
+++ b/gen/Network/Google/Resource/AndroidPublisher/Edits/APKs/List.hs
@@ -14,7 +14,7 @@
 
 -- |
 -- Module      : Network.Google.Resource.AndroidPublisher.Edits.APKs.List
--- Copyright   : (c) 2015 Brendan Hay
+-- Copyright   : (c) 2015-2016 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
 -- Stability   : auto-generated
@@ -53,7 +53,7 @@
 
 --
 -- /See:/ 'editsAPKsList' smart constructor.
-data EditsAPKsList = EditsAPKsList
+data EditsAPKsList = EditsAPKsList'
     { _eapklPackageName :: !Text
     , _eapklEditId      :: !Text
     } deriving (Eq,Show,Data,Typeable,Generic)
@@ -70,7 +70,7 @@
     -> Text -- ^ 'eapklEditId'
     -> EditsAPKsList
 editsAPKsList pEapklPackageName_ pEapklEditId_ =
-    EditsAPKsList
+    EditsAPKsList'
     { _eapklPackageName = pEapklPackageName_
     , _eapklEditId = pEapklEditId_
     }
@@ -89,7 +89,9 @@
 
 instance GoogleRequest EditsAPKsList where
         type Rs EditsAPKsList = APKsListResponse
-        requestClient EditsAPKsList{..}
+        type Scopes EditsAPKsList =
+             '["https://www.googleapis.com/auth/androidpublisher"]
+        requestClient EditsAPKsList'{..}
           = go _eapklPackageName _eapklEditId (Just AltJSON)
               androidPublisherService
           where go
diff --git a/gen/Network/Google/Resource/AndroidPublisher/Edits/APKs/Upload.hs b/gen/Network/Google/Resource/AndroidPublisher/Edits/APKs/Upload.hs
--- a/gen/Network/Google/Resource/AndroidPublisher/Edits/APKs/Upload.hs
+++ b/gen/Network/Google/Resource/AndroidPublisher/Edits/APKs/Upload.hs
@@ -14,7 +14,7 @@
 
 -- |
 -- Module      : Network.Google.Resource.AndroidPublisher.Edits.APKs.Upload
--- Copyright   : (c) 2015 Brendan Hay
+-- Copyright   : (c) 2015-2016 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
 -- Stability   : auto-generated
@@ -60,12 +60,11 @@
                      "apks" :>
                        QueryParam "alt" AltJSON :>
                          QueryParam "uploadType" AltMedia :>
-                           ReqBody '[OctetStream] RequestBody :>
-                             Post '[JSON] APK
+                           AltMedia :> Post '[JSON] APK
 
 --
 -- /See:/ 'editsAPKsUpload' smart constructor.
-data EditsAPKsUpload = EditsAPKsUpload
+data EditsAPKsUpload = EditsAPKsUpload'
     { _eapkuPackageName :: !Text
     , _eapkuEditId      :: !Text
     } deriving (Eq,Show,Data,Typeable,Generic)
@@ -82,7 +81,7 @@
     -> Text -- ^ 'eapkuEditId'
     -> EditsAPKsUpload
 editsAPKsUpload pEapkuPackageName_ pEapkuEditId_ =
-    EditsAPKsUpload
+    EditsAPKsUpload'
     { _eapkuPackageName = pEapkuPackageName_
     , _eapkuEditId = pEapkuEditId_
     }
@@ -101,7 +100,9 @@
 
 instance GoogleRequest EditsAPKsUpload where
         type Rs EditsAPKsUpload = APK
-        requestClient EditsAPKsUpload{..}
+        type Scopes EditsAPKsUpload =
+             '["https://www.googleapis.com/auth/androidpublisher"]
+        requestClient EditsAPKsUpload'{..}
           = go _eapkuPackageName _eapkuEditId (Just AltJSON)
               androidPublisherService
           where go :<|> _
@@ -112,7 +113,9 @@
 instance GoogleRequest (MediaUpload EditsAPKsUpload)
          where
         type Rs (MediaUpload EditsAPKsUpload) = APK
-        requestClient (MediaUpload EditsAPKsUpload{..} body)
+        type Scopes (MediaUpload EditsAPKsUpload) =
+             Scopes EditsAPKsUpload
+        requestClient (MediaUpload EditsAPKsUpload'{..} body)
           = go _eapkuPackageName _eapkuEditId (Just AltJSON)
               (Just AltMedia)
               body
diff --git a/gen/Network/Google/Resource/AndroidPublisher/Edits/Commit.hs b/gen/Network/Google/Resource/AndroidPublisher/Edits/Commit.hs
--- a/gen/Network/Google/Resource/AndroidPublisher/Edits/Commit.hs
+++ b/gen/Network/Google/Resource/AndroidPublisher/Edits/Commit.hs
@@ -14,7 +14,7 @@
 
 -- |
 -- Module      : Network.Google.Resource.AndroidPublisher.Edits.Commit
--- Copyright   : (c) 2015 Brendan Hay
+-- Copyright   : (c) 2015-2016 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
 -- Stability   : auto-generated
@@ -54,7 +54,7 @@
 -- | Commits\/applies the changes made in this edit back to the app.
 --
 -- /See:/ 'editsCommit' smart constructor.
-data EditsCommit = EditsCommit
+data EditsCommit = EditsCommit'
     { _ecPackageName :: !Text
     , _ecEditId      :: !Text
     } deriving (Eq,Show,Data,Typeable,Generic)
@@ -71,7 +71,7 @@
     -> Text -- ^ 'ecEditId'
     -> EditsCommit
 editsCommit pEcPackageName_ pEcEditId_ =
-    EditsCommit
+    EditsCommit'
     { _ecPackageName = pEcPackageName_
     , _ecEditId = pEcEditId_
     }
@@ -89,7 +89,9 @@
 
 instance GoogleRequest EditsCommit where
         type Rs EditsCommit = AppEdit
-        requestClient EditsCommit{..}
+        type Scopes EditsCommit =
+             '["https://www.googleapis.com/auth/androidpublisher"]
+        requestClient EditsCommit'{..}
           = go _ecPackageName _ecEditId (Just AltJSON)
               androidPublisherService
           where go
diff --git a/gen/Network/Google/Resource/AndroidPublisher/Edits/Delete.hs b/gen/Network/Google/Resource/AndroidPublisher/Edits/Delete.hs
--- a/gen/Network/Google/Resource/AndroidPublisher/Edits/Delete.hs
+++ b/gen/Network/Google/Resource/AndroidPublisher/Edits/Delete.hs
@@ -14,7 +14,7 @@
 
 -- |
 -- Module      : Network.Google.Resource.AndroidPublisher.Edits.Delete
--- Copyright   : (c) 2015 Brendan Hay
+-- Copyright   : (c) 2015-2016 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
 -- Stability   : auto-generated
@@ -58,7 +58,7 @@
 -- you want to preemptively abandon an edit.
 --
 -- /See:/ 'editsDelete' smart constructor.
-data EditsDelete = EditsDelete
+data EditsDelete = EditsDelete'
     { _edPackageName :: !Text
     , _edEditId      :: !Text
     } deriving (Eq,Show,Data,Typeable,Generic)
@@ -75,7 +75,7 @@
     -> Text -- ^ 'edEditId'
     -> EditsDelete
 editsDelete pEdPackageName_ pEdEditId_ =
-    EditsDelete
+    EditsDelete'
     { _edPackageName = pEdPackageName_
     , _edEditId = pEdEditId_
     }
@@ -93,7 +93,9 @@
 
 instance GoogleRequest EditsDelete where
         type Rs EditsDelete = ()
-        requestClient EditsDelete{..}
+        type Scopes EditsDelete =
+             '["https://www.googleapis.com/auth/androidpublisher"]
+        requestClient EditsDelete'{..}
           = go _edPackageName _edEditId (Just AltJSON)
               androidPublisherService
           where go
diff --git a/gen/Network/Google/Resource/AndroidPublisher/Edits/Details/Get.hs b/gen/Network/Google/Resource/AndroidPublisher/Edits/Details/Get.hs
--- a/gen/Network/Google/Resource/AndroidPublisher/Edits/Details/Get.hs
+++ b/gen/Network/Google/Resource/AndroidPublisher/Edits/Details/Get.hs
@@ -14,7 +14,7 @@
 
 -- |
 -- Module      : Network.Google.Resource.AndroidPublisher.Edits.Details.Get
--- Copyright   : (c) 2015 Brendan Hay
+-- Copyright   : (c) 2015-2016 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
 -- Stability   : auto-generated
@@ -57,7 +57,7 @@
 -- and developer support contact information.
 --
 -- /See:/ 'editsDetailsGet' smart constructor.
-data EditsDetailsGet = EditsDetailsGet
+data EditsDetailsGet = EditsDetailsGet'
     { _edgPackageName :: !Text
     , _edgEditId      :: !Text
     } deriving (Eq,Show,Data,Typeable,Generic)
@@ -74,7 +74,7 @@
     -> Text -- ^ 'edgEditId'
     -> EditsDetailsGet
 editsDetailsGet pEdgPackageName_ pEdgEditId_ =
-    EditsDetailsGet
+    EditsDetailsGet'
     { _edgPackageName = pEdgPackageName_
     , _edgEditId = pEdgEditId_
     }
@@ -93,7 +93,9 @@
 
 instance GoogleRequest EditsDetailsGet where
         type Rs EditsDetailsGet = AppDetails
-        requestClient EditsDetailsGet{..}
+        type Scopes EditsDetailsGet =
+             '["https://www.googleapis.com/auth/androidpublisher"]
+        requestClient EditsDetailsGet'{..}
           = go _edgPackageName _edgEditId (Just AltJSON)
               androidPublisherService
           where go
diff --git a/gen/Network/Google/Resource/AndroidPublisher/Edits/Details/Patch.hs b/gen/Network/Google/Resource/AndroidPublisher/Edits/Details/Patch.hs
--- a/gen/Network/Google/Resource/AndroidPublisher/Edits/Details/Patch.hs
+++ b/gen/Network/Google/Resource/AndroidPublisher/Edits/Details/Patch.hs
@@ -14,7 +14,7 @@
 
 -- |
 -- Module      : Network.Google.Resource.AndroidPublisher.Edits.Details.Patch
--- Copyright   : (c) 2015 Brendan Hay
+-- Copyright   : (c) 2015-2016 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
 -- Stability   : auto-generated
@@ -58,7 +58,7 @@
 -- | Updates app details for this edit. This method supports patch semantics.
 --
 -- /See:/ 'editsDetailsPatch' smart constructor.
-data EditsDetailsPatch = EditsDetailsPatch
+data EditsDetailsPatch = EditsDetailsPatch'
     { _edpPackageName :: !Text
     , _edpPayload     :: !AppDetails
     , _edpEditId      :: !Text
@@ -79,7 +79,7 @@
     -> Text -- ^ 'edpEditId'
     -> EditsDetailsPatch
 editsDetailsPatch pEdpPackageName_ pEdpPayload_ pEdpEditId_ =
-    EditsDetailsPatch
+    EditsDetailsPatch'
     { _edpPackageName = pEdpPackageName_
     , _edpPayload = pEdpPayload_
     , _edpEditId = pEdpEditId_
@@ -104,7 +104,9 @@
 
 instance GoogleRequest EditsDetailsPatch where
         type Rs EditsDetailsPatch = AppDetails
-        requestClient EditsDetailsPatch{..}
+        type Scopes EditsDetailsPatch =
+             '["https://www.googleapis.com/auth/androidpublisher"]
+        requestClient EditsDetailsPatch'{..}
           = go _edpPackageName _edpEditId (Just AltJSON)
               _edpPayload
               androidPublisherService
diff --git a/gen/Network/Google/Resource/AndroidPublisher/Edits/Details/Update.hs b/gen/Network/Google/Resource/AndroidPublisher/Edits/Details/Update.hs
--- a/gen/Network/Google/Resource/AndroidPublisher/Edits/Details/Update.hs
+++ b/gen/Network/Google/Resource/AndroidPublisher/Edits/Details/Update.hs
@@ -14,7 +14,7 @@
 
 -- |
 -- Module      : Network.Google.Resource.AndroidPublisher.Edits.Details.Update
--- Copyright   : (c) 2015 Brendan Hay
+-- Copyright   : (c) 2015-2016 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
 -- Stability   : auto-generated
@@ -57,7 +57,7 @@
 -- | Updates app details for this edit.
 --
 -- /See:/ 'editsDetailsUpdate' smart constructor.
-data EditsDetailsUpdate = EditsDetailsUpdate
+data EditsDetailsUpdate = EditsDetailsUpdate'
     { _eduPackageName :: !Text
     , _eduPayload     :: !AppDetails
     , _eduEditId      :: !Text
@@ -78,7 +78,7 @@
     -> Text -- ^ 'eduEditId'
     -> EditsDetailsUpdate
 editsDetailsUpdate pEduPackageName_ pEduPayload_ pEduEditId_ =
-    EditsDetailsUpdate
+    EditsDetailsUpdate'
     { _eduPackageName = pEduPackageName_
     , _eduPayload = pEduPayload_
     , _eduEditId = pEduEditId_
@@ -103,7 +103,9 @@
 
 instance GoogleRequest EditsDetailsUpdate where
         type Rs EditsDetailsUpdate = AppDetails
-        requestClient EditsDetailsUpdate{..}
+        type Scopes EditsDetailsUpdate =
+             '["https://www.googleapis.com/auth/androidpublisher"]
+        requestClient EditsDetailsUpdate'{..}
           = go _eduPackageName _eduEditId (Just AltJSON)
               _eduPayload
               androidPublisherService
diff --git a/gen/Network/Google/Resource/AndroidPublisher/Edits/ExpansionFiles/Get.hs b/gen/Network/Google/Resource/AndroidPublisher/Edits/ExpansionFiles/Get.hs
--- a/gen/Network/Google/Resource/AndroidPublisher/Edits/ExpansionFiles/Get.hs
+++ b/gen/Network/Google/Resource/AndroidPublisher/Edits/ExpansionFiles/Get.hs
@@ -14,7 +14,7 @@
 
 -- |
 -- Module      : Network.Google.Resource.AndroidPublisher.Edits.ExpansionFiles.Get
--- Copyright   : (c) 2015 Brendan Hay
+-- Copyright   : (c) 2015-2016 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
 -- Stability   : auto-generated
@@ -62,7 +62,7 @@
 -- | Fetches the Expansion File configuration for the APK specified.
 --
 -- /See:/ 'editsExpansionFilesGet' smart constructor.
-data EditsExpansionFilesGet = EditsExpansionFilesGet
+data EditsExpansionFilesGet = EditsExpansionFilesGet'
     { _eefgPackageName       :: !Text
     , _eefgAPKVersionCode    :: !(Textual Int32)
     , _eefgExpansionFileType :: !EditsExpansionFilesGetExpansionFileType
@@ -87,7 +87,7 @@
     -> Text -- ^ 'eefgEditId'
     -> EditsExpansionFilesGet
 editsExpansionFilesGet pEefgPackageName_ pEefgAPKVersionCode_ pEefgExpansionFileType_ pEefgEditId_ =
-    EditsExpansionFilesGet
+    EditsExpansionFilesGet'
     { _eefgPackageName = pEefgPackageName_
     , _eefgAPKVersionCode = _Coerce # pEefgAPKVersionCode_
     , _eefgExpansionFileType = pEefgExpansionFileType_
@@ -121,7 +121,9 @@
 
 instance GoogleRequest EditsExpansionFilesGet where
         type Rs EditsExpansionFilesGet = ExpansionFile
-        requestClient EditsExpansionFilesGet{..}
+        type Scopes EditsExpansionFilesGet =
+             '["https://www.googleapis.com/auth/androidpublisher"]
+        requestClient EditsExpansionFilesGet'{..}
           = go _eefgPackageName _eefgEditId _eefgAPKVersionCode
               _eefgExpansionFileType
               (Just AltJSON)
diff --git a/gen/Network/Google/Resource/AndroidPublisher/Edits/ExpansionFiles/Patch.hs b/gen/Network/Google/Resource/AndroidPublisher/Edits/ExpansionFiles/Patch.hs
--- a/gen/Network/Google/Resource/AndroidPublisher/Edits/ExpansionFiles/Patch.hs
+++ b/gen/Network/Google/Resource/AndroidPublisher/Edits/ExpansionFiles/Patch.hs
@@ -14,7 +14,7 @@
 
 -- |
 -- Module      : Network.Google.Resource.AndroidPublisher.Edits.ExpansionFiles.Patch
--- Copyright   : (c) 2015 Brendan Hay
+-- Copyright   : (c) 2015-2016 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
 -- Stability   : auto-generated
@@ -69,7 +69,7 @@
 -- method. This method supports patch semantics.
 --
 -- /See:/ 'editsExpansionFilesPatch' smart constructor.
-data EditsExpansionFilesPatch = EditsExpansionFilesPatch
+data EditsExpansionFilesPatch = EditsExpansionFilesPatch'
     { _eefpPackageName       :: !Text
     , _eefpAPKVersionCode    :: !(Textual Int32)
     , _eefpPayload           :: !ExpansionFile
@@ -98,7 +98,7 @@
     -> Text -- ^ 'eefpEditId'
     -> EditsExpansionFilesPatch
 editsExpansionFilesPatch pEefpPackageName_ pEefpAPKVersionCode_ pEefpPayload_ pEefpExpansionFileType_ pEefpEditId_ =
-    EditsExpansionFilesPatch
+    EditsExpansionFilesPatch'
     { _eefpPackageName = pEefpPackageName_
     , _eefpAPKVersionCode = _Coerce # pEefpAPKVersionCode_
     , _eefpPayload = pEefpPayload_
@@ -138,7 +138,9 @@
 
 instance GoogleRequest EditsExpansionFilesPatch where
         type Rs EditsExpansionFilesPatch = ExpansionFile
-        requestClient EditsExpansionFilesPatch{..}
+        type Scopes EditsExpansionFilesPatch =
+             '["https://www.googleapis.com/auth/androidpublisher"]
+        requestClient EditsExpansionFilesPatch'{..}
           = go _eefpPackageName _eefpEditId _eefpAPKVersionCode
               _eefpExpansionFileType
               (Just AltJSON)
diff --git a/gen/Network/Google/Resource/AndroidPublisher/Edits/ExpansionFiles/Update.hs b/gen/Network/Google/Resource/AndroidPublisher/Edits/ExpansionFiles/Update.hs
--- a/gen/Network/Google/Resource/AndroidPublisher/Edits/ExpansionFiles/Update.hs
+++ b/gen/Network/Google/Resource/AndroidPublisher/Edits/ExpansionFiles/Update.hs
@@ -14,7 +14,7 @@
 
 -- |
 -- Module      : Network.Google.Resource.AndroidPublisher.Edits.ExpansionFiles.Update
--- Copyright   : (c) 2015 Brendan Hay
+-- Copyright   : (c) 2015-2016 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
 -- Stability   : auto-generated
@@ -69,7 +69,7 @@
 -- method.
 --
 -- /See:/ 'editsExpansionFilesUpdate' smart constructor.
-data EditsExpansionFilesUpdate = EditsExpansionFilesUpdate
+data EditsExpansionFilesUpdate = EditsExpansionFilesUpdate'
     { _eefuPackageName       :: !Text
     , _eefuAPKVersionCode    :: !(Textual Int32)
     , _eefuPayload           :: !ExpansionFile
@@ -98,7 +98,7 @@
     -> Text -- ^ 'eefuEditId'
     -> EditsExpansionFilesUpdate
 editsExpansionFilesUpdate pEefuPackageName_ pEefuAPKVersionCode_ pEefuPayload_ pEefuExpansionFileType_ pEefuEditId_ =
-    EditsExpansionFilesUpdate
+    EditsExpansionFilesUpdate'
     { _eefuPackageName = pEefuPackageName_
     , _eefuAPKVersionCode = _Coerce # pEefuAPKVersionCode_
     , _eefuPayload = pEefuPayload_
@@ -139,7 +139,9 @@
 instance GoogleRequest EditsExpansionFilesUpdate
          where
         type Rs EditsExpansionFilesUpdate = ExpansionFile
-        requestClient EditsExpansionFilesUpdate{..}
+        type Scopes EditsExpansionFilesUpdate =
+             '["https://www.googleapis.com/auth/androidpublisher"]
+        requestClient EditsExpansionFilesUpdate'{..}
           = go _eefuPackageName _eefuEditId _eefuAPKVersionCode
               _eefuExpansionFileType
               (Just AltJSON)
diff --git a/gen/Network/Google/Resource/AndroidPublisher/Edits/ExpansionFiles/Upload.hs b/gen/Network/Google/Resource/AndroidPublisher/Edits/ExpansionFiles/Upload.hs
--- a/gen/Network/Google/Resource/AndroidPublisher/Edits/ExpansionFiles/Upload.hs
+++ b/gen/Network/Google/Resource/AndroidPublisher/Edits/ExpansionFiles/Upload.hs
@@ -14,7 +14,7 @@
 
 -- |
 -- Module      : Network.Google.Resource.AndroidPublisher.Edits.ExpansionFiles.Upload
--- Copyright   : (c) 2015 Brendan Hay
+-- Copyright   : (c) 2015-2016 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
 -- Stability   : auto-generated
@@ -75,13 +75,13 @@
                              :>
                              QueryParam "alt" AltJSON :>
                                QueryParam "uploadType" AltMedia :>
-                                 ReqBody '[OctetStream] RequestBody :>
+                                 AltMedia :>
                                    Post '[JSON] ExpansionFilesUploadResponse
 
 -- | Uploads and attaches a new Expansion File to the APK specified.
 --
 -- /See:/ 'editsExpansionFilesUpload' smart constructor.
-data EditsExpansionFilesUpload = EditsExpansionFilesUpload
+data EditsExpansionFilesUpload = EditsExpansionFilesUpload'
     { _ePackageName       :: !Text
     , _eAPKVersionCode    :: !(Textual Int32)
     , _eExpansionFileType :: !EditsExpansionFilesUploadExpansionFileType
@@ -106,7 +106,7 @@
     -> Text -- ^ 'eEditId'
     -> EditsExpansionFilesUpload
 editsExpansionFilesUpload pEPackageName_ pEAPKVersionCode_ pEExpansionFileType_ pEEditId_ =
-    EditsExpansionFilesUpload
+    EditsExpansionFilesUpload'
     { _ePackageName = pEPackageName_
     , _eAPKVersionCode = _Coerce # pEAPKVersionCode_
     , _eExpansionFileType = pEExpansionFileType_
@@ -140,7 +140,9 @@
          where
         type Rs EditsExpansionFilesUpload =
              ExpansionFilesUploadResponse
-        requestClient EditsExpansionFilesUpload{..}
+        type Scopes EditsExpansionFilesUpload =
+             '["https://www.googleapis.com/auth/androidpublisher"]
+        requestClient EditsExpansionFilesUpload'{..}
           = go _ePackageName _eEditId _eAPKVersionCode
               _eExpansionFileType
               (Just AltJSON)
@@ -154,8 +156,10 @@
          (MediaUpload EditsExpansionFilesUpload) where
         type Rs (MediaUpload EditsExpansionFilesUpload) =
              ExpansionFilesUploadResponse
+        type Scopes (MediaUpload EditsExpansionFilesUpload) =
+             Scopes EditsExpansionFilesUpload
         requestClient
-          (MediaUpload EditsExpansionFilesUpload{..} body)
+          (MediaUpload EditsExpansionFilesUpload'{..} body)
           = go _ePackageName _eEditId _eAPKVersionCode
               _eExpansionFileType
               (Just AltJSON)
diff --git a/gen/Network/Google/Resource/AndroidPublisher/Edits/Get.hs b/gen/Network/Google/Resource/AndroidPublisher/Edits/Get.hs
--- a/gen/Network/Google/Resource/AndroidPublisher/Edits/Get.hs
+++ b/gen/Network/Google/Resource/AndroidPublisher/Edits/Get.hs
@@ -14,7 +14,7 @@
 
 -- |
 -- Module      : Network.Google.Resource.AndroidPublisher.Edits.Get
--- Copyright   : (c) 2015 Brendan Hay
+-- Copyright   : (c) 2015-2016 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
 -- Stability   : auto-generated
@@ -56,7 +56,7 @@
 -- edit is no long active (e.g. has been deleted, superseded or expired).
 --
 -- /See:/ 'editsGet' smart constructor.
-data EditsGet = EditsGet
+data EditsGet = EditsGet'
     { _egPackageName :: !Text
     , _egEditId      :: !Text
     } deriving (Eq,Show,Data,Typeable,Generic)
@@ -73,7 +73,7 @@
     -> Text -- ^ 'egEditId'
     -> EditsGet
 editsGet pEgPackageName_ pEgEditId_ =
-    EditsGet
+    EditsGet'
     { _egPackageName = pEgPackageName_
     , _egEditId = pEgEditId_
     }
@@ -91,7 +91,9 @@
 
 instance GoogleRequest EditsGet where
         type Rs EditsGet = AppEdit
-        requestClient EditsGet{..}
+        type Scopes EditsGet =
+             '["https://www.googleapis.com/auth/androidpublisher"]
+        requestClient EditsGet'{..}
           = go _egPackageName _egEditId (Just AltJSON)
               androidPublisherService
           where go
diff --git a/gen/Network/Google/Resource/AndroidPublisher/Edits/Images/Delete.hs b/gen/Network/Google/Resource/AndroidPublisher/Edits/Images/Delete.hs
--- a/gen/Network/Google/Resource/AndroidPublisher/Edits/Images/Delete.hs
+++ b/gen/Network/Google/Resource/AndroidPublisher/Edits/Images/Delete.hs
@@ -14,7 +14,7 @@
 
 -- |
 -- Module      : Network.Google.Resource.AndroidPublisher.Edits.Images.Delete
--- Copyright   : (c) 2015 Brendan Hay
+-- Copyright   : (c) 2015-2016 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
 -- Stability   : auto-generated
@@ -61,7 +61,7 @@
 -- | Deletes the image (specified by id) from the edit.
 --
 -- /See:/ 'editsImagesDelete' smart constructor.
-data EditsImagesDelete = EditsImagesDelete
+data EditsImagesDelete = EditsImagesDelete'
     { _eidPackageName :: !Text
     , _eidImageType   :: !EditsImagesDeleteImageType
     , _eidImageId     :: !Text
@@ -90,7 +90,7 @@
     -> Text -- ^ 'eidEditId'
     -> EditsImagesDelete
 editsImagesDelete pEidPackageName_ pEidImageType_ pEidImageId_ pEidLanguage_ pEidEditId_ =
-    EditsImagesDelete
+    EditsImagesDelete'
     { _eidPackageName = pEidPackageName_
     , _eidImageType = pEidImageType_
     , _eidImageId = pEidImageId_
@@ -129,7 +129,9 @@
 
 instance GoogleRequest EditsImagesDelete where
         type Rs EditsImagesDelete = ()
-        requestClient EditsImagesDelete{..}
+        type Scopes EditsImagesDelete =
+             '["https://www.googleapis.com/auth/androidpublisher"]
+        requestClient EditsImagesDelete'{..}
           = go _eidPackageName _eidEditId _eidLanguage
               _eidImageType
               _eidImageId
diff --git a/gen/Network/Google/Resource/AndroidPublisher/Edits/Images/Deleteall.hs b/gen/Network/Google/Resource/AndroidPublisher/Edits/Images/Deleteall.hs
--- a/gen/Network/Google/Resource/AndroidPublisher/Edits/Images/Deleteall.hs
+++ b/gen/Network/Google/Resource/AndroidPublisher/Edits/Images/Deleteall.hs
@@ -14,7 +14,7 @@
 
 -- |
 -- Module      : Network.Google.Resource.AndroidPublisher.Edits.Images.Deleteall
--- Copyright   : (c) 2015 Brendan Hay
+-- Copyright   : (c) 2015-2016 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
 -- Stability   : auto-generated
@@ -60,7 +60,7 @@
 -- | Deletes all images for the specified language and image type.
 --
 -- /See:/ 'editsImagesDeleteall' smart constructor.
-data EditsImagesDeleteall = EditsImagesDeleteall
+data EditsImagesDeleteall = EditsImagesDeleteall'
     { _ediPackageName :: !Text
     , _ediImageType   :: !EditsImagesDeleteallImageType
     , _ediLanguage    :: !Text
@@ -85,7 +85,7 @@
     -> Text -- ^ 'ediEditId'
     -> EditsImagesDeleteall
 editsImagesDeleteall pEdiPackageName_ pEdiImageType_ pEdiLanguage_ pEdiEditId_ =
-    EditsImagesDeleteall
+    EditsImagesDeleteall'
     { _ediPackageName = pEdiPackageName_
     , _ediImageType = pEdiImageType_
     , _ediLanguage = pEdiLanguage_
@@ -118,7 +118,9 @@
 instance GoogleRequest EditsImagesDeleteall where
         type Rs EditsImagesDeleteall =
              ImagesDeleteAllResponse
-        requestClient EditsImagesDeleteall{..}
+        type Scopes EditsImagesDeleteall =
+             '["https://www.googleapis.com/auth/androidpublisher"]
+        requestClient EditsImagesDeleteall'{..}
           = go _ediPackageName _ediEditId _ediLanguage
               _ediImageType
               (Just AltJSON)
diff --git a/gen/Network/Google/Resource/AndroidPublisher/Edits/Images/List.hs b/gen/Network/Google/Resource/AndroidPublisher/Edits/Images/List.hs
--- a/gen/Network/Google/Resource/AndroidPublisher/Edits/Images/List.hs
+++ b/gen/Network/Google/Resource/AndroidPublisher/Edits/Images/List.hs
@@ -14,7 +14,7 @@
 
 -- |
 -- Module      : Network.Google.Resource.AndroidPublisher.Edits.Images.List
--- Copyright   : (c) 2015 Brendan Hay
+-- Copyright   : (c) 2015-2016 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
 -- Stability   : auto-generated
@@ -60,7 +60,7 @@
 -- | Lists all images for the specified language and image type.
 --
 -- /See:/ 'editsImagesList' smart constructor.
-data EditsImagesList = EditsImagesList
+data EditsImagesList = EditsImagesList'
     { _eilPackageName :: !Text
     , _eilImageType   :: !EditsImagesListImageType
     , _eilLanguage    :: !Text
@@ -85,7 +85,7 @@
     -> Text -- ^ 'eilEditId'
     -> EditsImagesList
 editsImagesList pEilPackageName_ pEilImageType_ pEilLanguage_ pEilEditId_ =
-    EditsImagesList
+    EditsImagesList'
     { _eilPackageName = pEilPackageName_
     , _eilImageType = pEilImageType_
     , _eilLanguage = pEilLanguage_
@@ -117,7 +117,9 @@
 
 instance GoogleRequest EditsImagesList where
         type Rs EditsImagesList = ImagesListResponse
-        requestClient EditsImagesList{..}
+        type Scopes EditsImagesList =
+             '["https://www.googleapis.com/auth/androidpublisher"]
+        requestClient EditsImagesList'{..}
           = go _eilPackageName _eilEditId _eilLanguage
               _eilImageType
               (Just AltJSON)
diff --git a/gen/Network/Google/Resource/AndroidPublisher/Edits/Images/Upload.hs b/gen/Network/Google/Resource/AndroidPublisher/Edits/Images/Upload.hs
--- a/gen/Network/Google/Resource/AndroidPublisher/Edits/Images/Upload.hs
+++ b/gen/Network/Google/Resource/AndroidPublisher/Edits/Images/Upload.hs
@@ -14,7 +14,7 @@
 
 -- |
 -- Module      : Network.Google.Resource.AndroidPublisher.Edits.Images.Upload
--- Copyright   : (c) 2015 Brendan Hay
+-- Copyright   : (c) 2015-2016 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
 -- Stability   : auto-generated
@@ -70,14 +70,13 @@
                          Capture "imageType" EditsImagesUploadImageType :>
                            QueryParam "alt" AltJSON :>
                              QueryParam "uploadType" AltMedia :>
-                               ReqBody '[OctetStream] RequestBody :>
-                                 Post '[JSON] ImagesUploadResponse
+                               AltMedia :> Post '[JSON] ImagesUploadResponse
 
 -- | Uploads a new image and adds it to the list of images for the specified
 -- language and image type.
 --
 -- /See:/ 'editsImagesUpload' smart constructor.
-data EditsImagesUpload = EditsImagesUpload
+data EditsImagesUpload = EditsImagesUpload'
     { _eiuPackageName :: !Text
     , _eiuImageType   :: !EditsImagesUploadImageType
     , _eiuLanguage    :: !Text
@@ -102,7 +101,7 @@
     -> Text -- ^ 'eiuEditId'
     -> EditsImagesUpload
 editsImagesUpload pEiuPackageName_ pEiuImageType_ pEiuLanguage_ pEiuEditId_ =
-    EditsImagesUpload
+    EditsImagesUpload'
     { _eiuPackageName = pEiuPackageName_
     , _eiuImageType = pEiuImageType_
     , _eiuLanguage = pEiuLanguage_
@@ -134,7 +133,9 @@
 
 instance GoogleRequest EditsImagesUpload where
         type Rs EditsImagesUpload = ImagesUploadResponse
-        requestClient EditsImagesUpload{..}
+        type Scopes EditsImagesUpload =
+             '["https://www.googleapis.com/auth/androidpublisher"]
+        requestClient EditsImagesUpload'{..}
           = go _eiuPackageName _eiuEditId _eiuLanguage
               _eiuImageType
               (Just AltJSON)
@@ -148,8 +149,10 @@
          (MediaUpload EditsImagesUpload) where
         type Rs (MediaUpload EditsImagesUpload) =
              ImagesUploadResponse
+        type Scopes (MediaUpload EditsImagesUpload) =
+             Scopes EditsImagesUpload
         requestClient
-          (MediaUpload EditsImagesUpload{..} body)
+          (MediaUpload EditsImagesUpload'{..} body)
           = go _eiuPackageName _eiuEditId _eiuLanguage
               _eiuImageType
               (Just AltJSON)
diff --git a/gen/Network/Google/Resource/AndroidPublisher/Edits/Insert.hs b/gen/Network/Google/Resource/AndroidPublisher/Edits/Insert.hs
--- a/gen/Network/Google/Resource/AndroidPublisher/Edits/Insert.hs
+++ b/gen/Network/Google/Resource/AndroidPublisher/Edits/Insert.hs
@@ -14,7 +14,7 @@
 
 -- |
 -- Module      : Network.Google.Resource.AndroidPublisher.Edits.Insert
--- Copyright   : (c) 2015 Brendan Hay
+-- Copyright   : (c) 2015-2016 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
 -- Stability   : auto-generated
@@ -54,7 +54,7 @@
 -- | Creates a new edit for an app, populated with the app\'s current state.
 --
 -- /See:/ 'editsInsert' smart constructor.
-data EditsInsert = EditsInsert
+data EditsInsert = EditsInsert'
     { _eiPackageName :: !Text
     , _eiPayload     :: !AppEdit
     } deriving (Eq,Show,Data,Typeable,Generic)
@@ -71,7 +71,7 @@
     -> AppEdit -- ^ 'eiPayload'
     -> EditsInsert
 editsInsert pEiPackageName_ pEiPayload_ =
-    EditsInsert
+    EditsInsert'
     { _eiPackageName = pEiPackageName_
     , _eiPayload = pEiPayload_
     }
@@ -90,7 +90,9 @@
 
 instance GoogleRequest EditsInsert where
         type Rs EditsInsert = AppEdit
-        requestClient EditsInsert{..}
+        type Scopes EditsInsert =
+             '["https://www.googleapis.com/auth/androidpublisher"]
+        requestClient EditsInsert'{..}
           = go _eiPackageName (Just AltJSON) _eiPayload
               androidPublisherService
           where go
diff --git a/gen/Network/Google/Resource/AndroidPublisher/Edits/Listings/Delete.hs b/gen/Network/Google/Resource/AndroidPublisher/Edits/Listings/Delete.hs
--- a/gen/Network/Google/Resource/AndroidPublisher/Edits/Listings/Delete.hs
+++ b/gen/Network/Google/Resource/AndroidPublisher/Edits/Listings/Delete.hs
@@ -14,7 +14,7 @@
 
 -- |
 -- Module      : Network.Google.Resource.AndroidPublisher.Edits.Listings.Delete
--- Copyright   : (c) 2015 Brendan Hay
+-- Copyright   : (c) 2015-2016 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
 -- Stability   : auto-generated
@@ -57,7 +57,7 @@
 -- | Deletes the specified localized store listing from an edit.
 --
 -- /See:/ 'editsListingsDelete' smart constructor.
-data EditsListingsDelete = EditsListingsDelete
+data EditsListingsDelete = EditsListingsDelete'
     { _eldPackageName :: !Text
     , _eldLanguage    :: !Text
     , _eldEditId      :: !Text
@@ -78,7 +78,7 @@
     -> Text -- ^ 'eldEditId'
     -> EditsListingsDelete
 editsListingsDelete pEldPackageName_ pEldLanguage_ pEldEditId_ =
-    EditsListingsDelete
+    EditsListingsDelete'
     { _eldPackageName = pEldPackageName_
     , _eldLanguage = pEldLanguage_
     , _eldEditId = pEldEditId_
@@ -104,7 +104,9 @@
 
 instance GoogleRequest EditsListingsDelete where
         type Rs EditsListingsDelete = ()
-        requestClient EditsListingsDelete{..}
+        type Scopes EditsListingsDelete =
+             '["https://www.googleapis.com/auth/androidpublisher"]
+        requestClient EditsListingsDelete'{..}
           = go _eldPackageName _eldEditId _eldLanguage
               (Just AltJSON)
               androidPublisherService
diff --git a/gen/Network/Google/Resource/AndroidPublisher/Edits/Listings/Deleteall.hs b/gen/Network/Google/Resource/AndroidPublisher/Edits/Listings/Deleteall.hs
--- a/gen/Network/Google/Resource/AndroidPublisher/Edits/Listings/Deleteall.hs
+++ b/gen/Network/Google/Resource/AndroidPublisher/Edits/Listings/Deleteall.hs
@@ -14,7 +14,7 @@
 
 -- |
 -- Module      : Network.Google.Resource.AndroidPublisher.Edits.Listings.Deleteall
--- Copyright   : (c) 2015 Brendan Hay
+-- Copyright   : (c) 2015-2016 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
 -- Stability   : auto-generated
@@ -55,7 +55,7 @@
 -- | Deletes all localized listings from an edit.
 --
 -- /See:/ 'editsListingsDeleteall' smart constructor.
-data EditsListingsDeleteall = EditsListingsDeleteall
+data EditsListingsDeleteall = EditsListingsDeleteall'
     { _eldlPackageName :: !Text
     , _eldlEditId      :: !Text
     } deriving (Eq,Show,Data,Typeable,Generic)
@@ -72,7 +72,7 @@
     -> Text -- ^ 'eldlEditId'
     -> EditsListingsDeleteall
 editsListingsDeleteall pEldlPackageName_ pEldlEditId_ =
-    EditsListingsDeleteall
+    EditsListingsDeleteall'
     { _eldlPackageName = pEldlPackageName_
     , _eldlEditId = pEldlEditId_
     }
@@ -91,7 +91,9 @@
 
 instance GoogleRequest EditsListingsDeleteall where
         type Rs EditsListingsDeleteall = ()
-        requestClient EditsListingsDeleteall{..}
+        type Scopes EditsListingsDeleteall =
+             '["https://www.googleapis.com/auth/androidpublisher"]
+        requestClient EditsListingsDeleteall'{..}
           = go _eldlPackageName _eldlEditId (Just AltJSON)
               androidPublisherService
           where go
diff --git a/gen/Network/Google/Resource/AndroidPublisher/Edits/Listings/Get.hs b/gen/Network/Google/Resource/AndroidPublisher/Edits/Listings/Get.hs
--- a/gen/Network/Google/Resource/AndroidPublisher/Edits/Listings/Get.hs
+++ b/gen/Network/Google/Resource/AndroidPublisher/Edits/Listings/Get.hs
@@ -14,7 +14,7 @@
 
 -- |
 -- Module      : Network.Google.Resource.AndroidPublisher.Edits.Listings.Get
--- Copyright   : (c) 2015 Brendan Hay
+-- Copyright   : (c) 2015-2016 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
 -- Stability   : auto-generated
@@ -57,7 +57,7 @@
 -- | Fetches information about a localized store listing.
 --
 -- /See:/ 'editsListingsGet' smart constructor.
-data EditsListingsGet = EditsListingsGet
+data EditsListingsGet = EditsListingsGet'
     { _elgPackageName :: !Text
     , _elgLanguage    :: !Text
     , _elgEditId      :: !Text
@@ -78,7 +78,7 @@
     -> Text -- ^ 'elgEditId'
     -> EditsListingsGet
 editsListingsGet pElgPackageName_ pElgLanguage_ pElgEditId_ =
-    EditsListingsGet
+    EditsListingsGet'
     { _elgPackageName = pElgPackageName_
     , _elgLanguage = pElgLanguage_
     , _elgEditId = pElgEditId_
@@ -104,7 +104,9 @@
 
 instance GoogleRequest EditsListingsGet where
         type Rs EditsListingsGet = Listing
-        requestClient EditsListingsGet{..}
+        type Scopes EditsListingsGet =
+             '["https://www.googleapis.com/auth/androidpublisher"]
+        requestClient EditsListingsGet'{..}
           = go _elgPackageName _elgEditId _elgLanguage
               (Just AltJSON)
               androidPublisherService
diff --git a/gen/Network/Google/Resource/AndroidPublisher/Edits/Listings/List.hs b/gen/Network/Google/Resource/AndroidPublisher/Edits/Listings/List.hs
--- a/gen/Network/Google/Resource/AndroidPublisher/Edits/Listings/List.hs
+++ b/gen/Network/Google/Resource/AndroidPublisher/Edits/Listings/List.hs
@@ -14,7 +14,7 @@
 
 -- |
 -- Module      : Network.Google.Resource.AndroidPublisher.Edits.Listings.List
--- Copyright   : (c) 2015 Brendan Hay
+-- Copyright   : (c) 2015-2016 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
 -- Stability   : auto-generated
@@ -56,7 +56,7 @@
 -- | Returns all of the localized store listings attached to this edit.
 --
 -- /See:/ 'editsListingsList' smart constructor.
-data EditsListingsList = EditsListingsList
+data EditsListingsList = EditsListingsList'
     { _ellPackageName :: !Text
     , _ellEditId      :: !Text
     } deriving (Eq,Show,Data,Typeable,Generic)
@@ -73,7 +73,7 @@
     -> Text -- ^ 'ellEditId'
     -> EditsListingsList
 editsListingsList pEllPackageName_ pEllEditId_ =
-    EditsListingsList
+    EditsListingsList'
     { _ellPackageName = pEllPackageName_
     , _ellEditId = pEllEditId_
     }
@@ -92,7 +92,9 @@
 
 instance GoogleRequest EditsListingsList where
         type Rs EditsListingsList = ListingsListResponse
-        requestClient EditsListingsList{..}
+        type Scopes EditsListingsList =
+             '["https://www.googleapis.com/auth/androidpublisher"]
+        requestClient EditsListingsList'{..}
           = go _ellPackageName _ellEditId (Just AltJSON)
               androidPublisherService
           where go
diff --git a/gen/Network/Google/Resource/AndroidPublisher/Edits/Listings/Patch.hs b/gen/Network/Google/Resource/AndroidPublisher/Edits/Listings/Patch.hs
--- a/gen/Network/Google/Resource/AndroidPublisher/Edits/Listings/Patch.hs
+++ b/gen/Network/Google/Resource/AndroidPublisher/Edits/Listings/Patch.hs
@@ -14,7 +14,7 @@
 
 -- |
 -- Module      : Network.Google.Resource.AndroidPublisher.Edits.Listings.Patch
--- Copyright   : (c) 2015 Brendan Hay
+-- Copyright   : (c) 2015-2016 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
 -- Stability   : auto-generated
@@ -61,7 +61,7 @@
 -- semantics.
 --
 -- /See:/ 'editsListingsPatch' smart constructor.
-data EditsListingsPatch = EditsListingsPatch
+data EditsListingsPatch = EditsListingsPatch'
     { _elpPackageName :: !Text
     , _elpPayload     :: !Listing
     , _elpLanguage    :: !Text
@@ -86,7 +86,7 @@
     -> Text -- ^ 'elpEditId'
     -> EditsListingsPatch
 editsListingsPatch pElpPackageName_ pElpPayload_ pElpLanguage_ pElpEditId_ =
-    EditsListingsPatch
+    EditsListingsPatch'
     { _elpPackageName = pElpPackageName_
     , _elpPayload = pElpPayload_
     , _elpLanguage = pElpLanguage_
@@ -118,7 +118,9 @@
 
 instance GoogleRequest EditsListingsPatch where
         type Rs EditsListingsPatch = Listing
-        requestClient EditsListingsPatch{..}
+        type Scopes EditsListingsPatch =
+             '["https://www.googleapis.com/auth/androidpublisher"]
+        requestClient EditsListingsPatch'{..}
           = go _elpPackageName _elpEditId _elpLanguage
               (Just AltJSON)
               _elpPayload
diff --git a/gen/Network/Google/Resource/AndroidPublisher/Edits/Listings/Update.hs b/gen/Network/Google/Resource/AndroidPublisher/Edits/Listings/Update.hs
--- a/gen/Network/Google/Resource/AndroidPublisher/Edits/Listings/Update.hs
+++ b/gen/Network/Google/Resource/AndroidPublisher/Edits/Listings/Update.hs
@@ -14,7 +14,7 @@
 
 -- |
 -- Module      : Network.Google.Resource.AndroidPublisher.Edits.Listings.Update
--- Copyright   : (c) 2015 Brendan Hay
+-- Copyright   : (c) 2015-2016 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
 -- Stability   : auto-generated
@@ -59,7 +59,7 @@
 -- | Creates or updates a localized store listing.
 --
 -- /See:/ 'editsListingsUpdate' smart constructor.
-data EditsListingsUpdate = EditsListingsUpdate
+data EditsListingsUpdate = EditsListingsUpdate'
     { _eluPackageName :: !Text
     , _eluPayload     :: !Listing
     , _eluLanguage    :: !Text
@@ -84,7 +84,7 @@
     -> Text -- ^ 'eluEditId'
     -> EditsListingsUpdate
 editsListingsUpdate pEluPackageName_ pEluPayload_ pEluLanguage_ pEluEditId_ =
-    EditsListingsUpdate
+    EditsListingsUpdate'
     { _eluPackageName = pEluPackageName_
     , _eluPayload = pEluPayload_
     , _eluLanguage = pEluLanguage_
@@ -116,7 +116,9 @@
 
 instance GoogleRequest EditsListingsUpdate where
         type Rs EditsListingsUpdate = Listing
-        requestClient EditsListingsUpdate{..}
+        type Scopes EditsListingsUpdate =
+             '["https://www.googleapis.com/auth/androidpublisher"]
+        requestClient EditsListingsUpdate'{..}
           = go _eluPackageName _eluEditId _eluLanguage
               (Just AltJSON)
               _eluPayload
diff --git a/gen/Network/Google/Resource/AndroidPublisher/Edits/Testers/Get.hs b/gen/Network/Google/Resource/AndroidPublisher/Edits/Testers/Get.hs
--- a/gen/Network/Google/Resource/AndroidPublisher/Edits/Testers/Get.hs
+++ b/gen/Network/Google/Resource/AndroidPublisher/Edits/Testers/Get.hs
@@ -14,7 +14,7 @@
 
 -- |
 -- Module      : Network.Google.Resource.AndroidPublisher.Edits.Testers.Get
--- Copyright   : (c) 2015 Brendan Hay
+-- Copyright   : (c) 2015-2016 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
 -- Stability   : auto-generated
@@ -54,7 +54,7 @@
 
 --
 -- /See:/ 'editsTestersGet' smart constructor.
-data EditsTestersGet = EditsTestersGet
+data EditsTestersGet = EditsTestersGet'
     { _etgTrack       :: !EditsTestersGetTrack
     , _etgPackageName :: !Text
     , _etgEditId      :: !Text
@@ -75,7 +75,7 @@
     -> Text -- ^ 'etgEditId'
     -> EditsTestersGet
 editsTestersGet pEtgTrack_ pEtgPackageName_ pEtgEditId_ =
-    EditsTestersGet
+    EditsTestersGet'
     { _etgTrack = pEtgTrack_
     , _etgPackageName = pEtgPackageName_
     , _etgEditId = pEtgEditId_
@@ -98,7 +98,9 @@
 
 instance GoogleRequest EditsTestersGet where
         type Rs EditsTestersGet = Testers
-        requestClient EditsTestersGet{..}
+        type Scopes EditsTestersGet =
+             '["https://www.googleapis.com/auth/androidpublisher"]
+        requestClient EditsTestersGet'{..}
           = go _etgPackageName _etgEditId _etgTrack
               (Just AltJSON)
               androidPublisherService
diff --git a/gen/Network/Google/Resource/AndroidPublisher/Edits/Testers/Patch.hs b/gen/Network/Google/Resource/AndroidPublisher/Edits/Testers/Patch.hs
--- a/gen/Network/Google/Resource/AndroidPublisher/Edits/Testers/Patch.hs
+++ b/gen/Network/Google/Resource/AndroidPublisher/Edits/Testers/Patch.hs
@@ -14,7 +14,7 @@
 
 -- |
 -- Module      : Network.Google.Resource.AndroidPublisher.Edits.Testers.Patch
--- Copyright   : (c) 2015 Brendan Hay
+-- Copyright   : (c) 2015-2016 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
 -- Stability   : auto-generated
@@ -56,7 +56,7 @@
 
 --
 -- /See:/ 'editsTestersPatch' smart constructor.
-data EditsTestersPatch = EditsTestersPatch
+data EditsTestersPatch = EditsTestersPatch'
     { _etpTrack       :: !EditsTestersPatchTrack
     , _etpPackageName :: !Text
     , _etpPayload     :: !Testers
@@ -81,7 +81,7 @@
     -> Text -- ^ 'etpEditId'
     -> EditsTestersPatch
 editsTestersPatch pEtpTrack_ pEtpPackageName_ pEtpPayload_ pEtpEditId_ =
-    EditsTestersPatch
+    EditsTestersPatch'
     { _etpTrack = pEtpTrack_
     , _etpPackageName = pEtpPackageName_
     , _etpPayload = pEtpPayload_
@@ -110,7 +110,9 @@
 
 instance GoogleRequest EditsTestersPatch where
         type Rs EditsTestersPatch = Testers
-        requestClient EditsTestersPatch{..}
+        type Scopes EditsTestersPatch =
+             '["https://www.googleapis.com/auth/androidpublisher"]
+        requestClient EditsTestersPatch'{..}
           = go _etpPackageName _etpEditId _etpTrack
               (Just AltJSON)
               _etpPayload
diff --git a/gen/Network/Google/Resource/AndroidPublisher/Edits/Testers/Update.hs b/gen/Network/Google/Resource/AndroidPublisher/Edits/Testers/Update.hs
--- a/gen/Network/Google/Resource/AndroidPublisher/Edits/Testers/Update.hs
+++ b/gen/Network/Google/Resource/AndroidPublisher/Edits/Testers/Update.hs
@@ -14,7 +14,7 @@
 
 -- |
 -- Module      : Network.Google.Resource.AndroidPublisher.Edits.Testers.Update
--- Copyright   : (c) 2015 Brendan Hay
+-- Copyright   : (c) 2015-2016 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
 -- Stability   : auto-generated
@@ -56,7 +56,7 @@
 
 --
 -- /See:/ 'editsTestersUpdate' smart constructor.
-data EditsTestersUpdate = EditsTestersUpdate
+data EditsTestersUpdate = EditsTestersUpdate'
     { _etutTrack       :: !EditsTestersUpdateTrack
     , _etutPackageName :: !Text
     , _etutPayload     :: !Testers
@@ -81,7 +81,7 @@
     -> Text -- ^ 'etutEditId'
     -> EditsTestersUpdate
 editsTestersUpdate pEtutTrack_ pEtutPackageName_ pEtutPayload_ pEtutEditId_ =
-    EditsTestersUpdate
+    EditsTestersUpdate'
     { _etutTrack = pEtutTrack_
     , _etutPackageName = pEtutPackageName_
     , _etutPayload = pEtutPayload_
@@ -111,7 +111,9 @@
 
 instance GoogleRequest EditsTestersUpdate where
         type Rs EditsTestersUpdate = Testers
-        requestClient EditsTestersUpdate{..}
+        type Scopes EditsTestersUpdate =
+             '["https://www.googleapis.com/auth/androidpublisher"]
+        requestClient EditsTestersUpdate'{..}
           = go _etutPackageName _etutEditId _etutTrack
               (Just AltJSON)
               _etutPayload
diff --git a/gen/Network/Google/Resource/AndroidPublisher/Edits/Tracks/Get.hs b/gen/Network/Google/Resource/AndroidPublisher/Edits/Tracks/Get.hs
--- a/gen/Network/Google/Resource/AndroidPublisher/Edits/Tracks/Get.hs
+++ b/gen/Network/Google/Resource/AndroidPublisher/Edits/Tracks/Get.hs
@@ -14,7 +14,7 @@
 
 -- |
 -- Module      : Network.Google.Resource.AndroidPublisher.Edits.Tracks.Get
--- Copyright   : (c) 2015 Brendan Hay
+-- Copyright   : (c) 2015-2016 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
 -- Stability   : auto-generated
@@ -59,7 +59,7 @@
 -- the APK version codes that are in this track.
 --
 -- /See:/ 'editsTracksGet' smart constructor.
-data EditsTracksGet = EditsTracksGet
+data EditsTracksGet = EditsTracksGet'
     { _etgtTrack       :: !EditsTracksGetTrack
     , _etgtPackageName :: !Text
     , _etgtEditId      :: !Text
@@ -80,7 +80,7 @@
     -> Text -- ^ 'etgtEditId'
     -> EditsTracksGet
 editsTracksGet pEtgtTrack_ pEtgtPackageName_ pEtgtEditId_ =
-    EditsTracksGet
+    EditsTracksGet'
     { _etgtTrack = pEtgtTrack_
     , _etgtPackageName = pEtgtPackageName_
     , _etgtEditId = pEtgtEditId_
@@ -105,7 +105,9 @@
 
 instance GoogleRequest EditsTracksGet where
         type Rs EditsTracksGet = Track
-        requestClient EditsTracksGet{..}
+        type Scopes EditsTracksGet =
+             '["https://www.googleapis.com/auth/androidpublisher"]
+        requestClient EditsTracksGet'{..}
           = go _etgtPackageName _etgtEditId _etgtTrack
               (Just AltJSON)
               androidPublisherService
diff --git a/gen/Network/Google/Resource/AndroidPublisher/Edits/Tracks/List.hs b/gen/Network/Google/Resource/AndroidPublisher/Edits/Tracks/List.hs
--- a/gen/Network/Google/Resource/AndroidPublisher/Edits/Tracks/List.hs
+++ b/gen/Network/Google/Resource/AndroidPublisher/Edits/Tracks/List.hs
@@ -14,7 +14,7 @@
 
 -- |
 -- Module      : Network.Google.Resource.AndroidPublisher.Edits.Tracks.List
--- Copyright   : (c) 2015 Brendan Hay
+-- Copyright   : (c) 2015-2016 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
 -- Stability   : auto-generated
@@ -56,7 +56,7 @@
 -- | Lists all the track configurations for this edit.
 --
 -- /See:/ 'editsTracksList' smart constructor.
-data EditsTracksList = EditsTracksList
+data EditsTracksList = EditsTracksList'
     { _etlPackageName :: !Text
     , _etlEditId      :: !Text
     } deriving (Eq,Show,Data,Typeable,Generic)
@@ -73,7 +73,7 @@
     -> Text -- ^ 'etlEditId'
     -> EditsTracksList
 editsTracksList pEtlPackageName_ pEtlEditId_ =
-    EditsTracksList
+    EditsTracksList'
     { _etlPackageName = pEtlPackageName_
     , _etlEditId = pEtlEditId_
     }
@@ -92,7 +92,9 @@
 
 instance GoogleRequest EditsTracksList where
         type Rs EditsTracksList = TracksListResponse
-        requestClient EditsTracksList{..}
+        type Scopes EditsTracksList =
+             '["https://www.googleapis.com/auth/androidpublisher"]
+        requestClient EditsTracksList'{..}
           = go _etlPackageName _etlEditId (Just AltJSON)
               androidPublisherService
           where go
diff --git a/gen/Network/Google/Resource/AndroidPublisher/Edits/Tracks/Patch.hs b/gen/Network/Google/Resource/AndroidPublisher/Edits/Tracks/Patch.hs
--- a/gen/Network/Google/Resource/AndroidPublisher/Edits/Tracks/Patch.hs
+++ b/gen/Network/Google/Resource/AndroidPublisher/Edits/Tracks/Patch.hs
@@ -14,7 +14,7 @@
 
 -- |
 -- Module      : Network.Google.Resource.AndroidPublisher.Edits.Tracks.Patch
--- Copyright   : (c) 2015 Brendan Hay
+-- Copyright   : (c) 2015-2016 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
 -- Stability   : auto-generated
@@ -65,7 +65,7 @@
 -- semantics.
 --
 -- /See:/ 'editsTracksPatch' smart constructor.
-data EditsTracksPatch = EditsTracksPatch
+data EditsTracksPatch = EditsTracksPatch'
     { _etptTrack       :: !EditsTracksPatchTrack
     , _etptPackageName :: !Text
     , _etptPayload     :: !Track
@@ -90,7 +90,7 @@
     -> Text -- ^ 'etptEditId'
     -> EditsTracksPatch
 editsTracksPatch pEtptTrack_ pEtptPackageName_ pEtptPayload_ pEtptEditId_ =
-    EditsTracksPatch
+    EditsTracksPatch'
     { _etptTrack = pEtptTrack_
     , _etptPackageName = pEtptPackageName_
     , _etptPayload = pEtptPayload_
@@ -121,7 +121,9 @@
 
 instance GoogleRequest EditsTracksPatch where
         type Rs EditsTracksPatch = Track
-        requestClient EditsTracksPatch{..}
+        type Scopes EditsTracksPatch =
+             '["https://www.googleapis.com/auth/androidpublisher"]
+        requestClient EditsTracksPatch'{..}
           = go _etptPackageName _etptEditId _etptTrack
               (Just AltJSON)
               _etptPayload
diff --git a/gen/Network/Google/Resource/AndroidPublisher/Edits/Tracks/Update.hs b/gen/Network/Google/Resource/AndroidPublisher/Edits/Tracks/Update.hs
--- a/gen/Network/Google/Resource/AndroidPublisher/Edits/Tracks/Update.hs
+++ b/gen/Network/Google/Resource/AndroidPublisher/Edits/Tracks/Update.hs
@@ -14,7 +14,7 @@
 
 -- |
 -- Module      : Network.Google.Resource.AndroidPublisher.Edits.Tracks.Update
--- Copyright   : (c) 2015 Brendan Hay
+-- Copyright   : (c) 2015-2016 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
 -- Stability   : auto-generated
@@ -63,7 +63,7 @@
 -- adding new APKs will cause it to resume.
 --
 -- /See:/ 'editsTracksUpdate' smart constructor.
-data EditsTracksUpdate = EditsTracksUpdate
+data EditsTracksUpdate = EditsTracksUpdate'
     { _etuTrack       :: !EditsTracksUpdateTrack
     , _etuPackageName :: !Text
     , _etuPayload     :: !Track
@@ -88,7 +88,7 @@
     -> Text -- ^ 'etuEditId'
     -> EditsTracksUpdate
 editsTracksUpdate pEtuTrack_ pEtuPackageName_ pEtuPayload_ pEtuEditId_ =
-    EditsTracksUpdate
+    EditsTracksUpdate'
     { _etuTrack = pEtuTrack_
     , _etuPackageName = pEtuPackageName_
     , _etuPayload = pEtuPayload_
@@ -118,7 +118,9 @@
 
 instance GoogleRequest EditsTracksUpdate where
         type Rs EditsTracksUpdate = Track
-        requestClient EditsTracksUpdate{..}
+        type Scopes EditsTracksUpdate =
+             '["https://www.googleapis.com/auth/androidpublisher"]
+        requestClient EditsTracksUpdate'{..}
           = go _etuPackageName _etuEditId _etuTrack
               (Just AltJSON)
               _etuPayload
diff --git a/gen/Network/Google/Resource/AndroidPublisher/Edits/Validate.hs b/gen/Network/Google/Resource/AndroidPublisher/Edits/Validate.hs
--- a/gen/Network/Google/Resource/AndroidPublisher/Edits/Validate.hs
+++ b/gen/Network/Google/Resource/AndroidPublisher/Edits/Validate.hs
@@ -14,7 +14,7 @@
 
 -- |
 -- Module      : Network.Google.Resource.AndroidPublisher.Edits.Validate
--- Copyright   : (c) 2015 Brendan Hay
+-- Copyright   : (c) 2015-2016 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
 -- Stability   : auto-generated
@@ -56,7 +56,7 @@
 -- are not applied to the live app.
 --
 -- /See:/ 'editsValidate' smart constructor.
-data EditsValidate = EditsValidate
+data EditsValidate = EditsValidate'
     { _evPackageName :: !Text
     , _evEditId      :: !Text
     } deriving (Eq,Show,Data,Typeable,Generic)
@@ -73,7 +73,7 @@
     -> Text -- ^ 'evEditId'
     -> EditsValidate
 editsValidate pEvPackageName_ pEvEditId_ =
-    EditsValidate
+    EditsValidate'
     { _evPackageName = pEvPackageName_
     , _evEditId = pEvEditId_
     }
@@ -91,7 +91,9 @@
 
 instance GoogleRequest EditsValidate where
         type Rs EditsValidate = AppEdit
-        requestClient EditsValidate{..}
+        type Scopes EditsValidate =
+             '["https://www.googleapis.com/auth/androidpublisher"]
+        requestClient EditsValidate'{..}
           = go _evPackageName _evEditId (Just AltJSON)
               androidPublisherService
           where go
diff --git a/gen/Network/Google/Resource/AndroidPublisher/Entitlements/List.hs b/gen/Network/Google/Resource/AndroidPublisher/Entitlements/List.hs
--- a/gen/Network/Google/Resource/AndroidPublisher/Entitlements/List.hs
+++ b/gen/Network/Google/Resource/AndroidPublisher/Entitlements/List.hs
@@ -14,7 +14,7 @@
 
 -- |
 -- Module      : Network.Google.Resource.AndroidPublisher.Entitlements.List
--- Copyright   : (c) 2015 Brendan Hay
+-- Copyright   : (c) 2015-2016 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
 -- Stability   : auto-generated
@@ -61,7 +61,7 @@
 -- | Lists the user\'s current inapp item or subscription entitlements
 --
 -- /See:/ 'entitlementsList' smart constructor.
-data EntitlementsList = EntitlementsList
+data EntitlementsList = EntitlementsList'
     { _elPackageName :: !Text
     , _elToken       :: !(Maybe Text)
     , _elStartIndex  :: !(Maybe (Textual Word32))
@@ -86,7 +86,7 @@
     :: Text -- ^ 'elPackageName'
     -> EntitlementsList
 entitlementsList pElPackageName_ =
-    EntitlementsList
+    EntitlementsList'
     { _elPackageName = pElPackageName_
     , _elToken = Nothing
     , _elStartIndex = Nothing
@@ -122,7 +122,8 @@
 
 instance GoogleRequest EntitlementsList where
         type Rs EntitlementsList = EntitlementsListResponse
-        requestClient EntitlementsList{..}
+        type Scopes EntitlementsList = '[]
+        requestClient EntitlementsList'{..}
           = go _elPackageName _elToken _elStartIndex
               _elProductId
               _elMaxResults
diff --git a/gen/Network/Google/Resource/AndroidPublisher/InAppProducts/Batch.hs b/gen/Network/Google/Resource/AndroidPublisher/InAppProducts/Batch.hs
--- a/gen/Network/Google/Resource/AndroidPublisher/InAppProducts/Batch.hs
+++ b/gen/Network/Google/Resource/AndroidPublisher/InAppProducts/Batch.hs
@@ -14,7 +14,7 @@
 
 -- |
 -- Module      : Network.Google.Resource.AndroidPublisher.InAppProducts.Batch
--- Copyright   : (c) 2015 Brendan Hay
+-- Copyright   : (c) 2015-2016 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
 -- Stability   : auto-generated
@@ -51,7 +51,7 @@
 
 --
 -- /See:/ 'inAppProductsBatch' smart constructor.
-newtype InAppProductsBatch = InAppProductsBatch
+newtype InAppProductsBatch = InAppProductsBatch'
     { _iapbPayload :: InAppProductsBatchRequest
     } deriving (Eq,Show,Data,Typeable,Generic)
 
@@ -64,7 +64,7 @@
     :: InAppProductsBatchRequest -- ^ 'iapbPayload'
     -> InAppProductsBatch
 inAppProductsBatch pIapbPayload_ =
-    InAppProductsBatch
+    InAppProductsBatch'
     { _iapbPayload = pIapbPayload_
     }
 
@@ -76,7 +76,9 @@
 instance GoogleRequest InAppProductsBatch where
         type Rs InAppProductsBatch =
              InAppProductsBatchResponse
-        requestClient InAppProductsBatch{..}
+        type Scopes InAppProductsBatch =
+             '["https://www.googleapis.com/auth/androidpublisher"]
+        requestClient InAppProductsBatch'{..}
           = go (Just AltJSON) _iapbPayload
               androidPublisherService
           where go
diff --git a/gen/Network/Google/Resource/AndroidPublisher/InAppProducts/Delete.hs b/gen/Network/Google/Resource/AndroidPublisher/InAppProducts/Delete.hs
--- a/gen/Network/Google/Resource/AndroidPublisher/InAppProducts/Delete.hs
+++ b/gen/Network/Google/Resource/AndroidPublisher/InAppProducts/Delete.hs
@@ -14,7 +14,7 @@
 
 -- |
 -- Module      : Network.Google.Resource.AndroidPublisher.InAppProducts.Delete
--- Copyright   : (c) 2015 Brendan Hay
+-- Copyright   : (c) 2015-2016 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
 -- Stability   : auto-generated
@@ -54,7 +54,7 @@
 -- | Delete an in-app product for an app.
 --
 -- /See:/ 'inAppProductsDelete' smart constructor.
-data InAppProductsDelete = InAppProductsDelete
+data InAppProductsDelete = InAppProductsDelete'
     { _iapdPackageName :: !Text
     , _iapdSKU         :: !Text
     } deriving (Eq,Show,Data,Typeable,Generic)
@@ -71,7 +71,7 @@
     -> Text -- ^ 'iapdSKU'
     -> InAppProductsDelete
 inAppProductsDelete pIapdPackageName_ pIapdSKU_ =
-    InAppProductsDelete
+    InAppProductsDelete'
     { _iapdPackageName = pIapdPackageName_
     , _iapdSKU = pIapdSKU_
     }
@@ -89,7 +89,9 @@
 
 instance GoogleRequest InAppProductsDelete where
         type Rs InAppProductsDelete = ()
-        requestClient InAppProductsDelete{..}
+        type Scopes InAppProductsDelete =
+             '["https://www.googleapis.com/auth/androidpublisher"]
+        requestClient InAppProductsDelete'{..}
           = go _iapdPackageName _iapdSKU (Just AltJSON)
               androidPublisherService
           where go
diff --git a/gen/Network/Google/Resource/AndroidPublisher/InAppProducts/Get.hs b/gen/Network/Google/Resource/AndroidPublisher/InAppProducts/Get.hs
--- a/gen/Network/Google/Resource/AndroidPublisher/InAppProducts/Get.hs
+++ b/gen/Network/Google/Resource/AndroidPublisher/InAppProducts/Get.hs
@@ -14,7 +14,7 @@
 
 -- |
 -- Module      : Network.Google.Resource.AndroidPublisher.InAppProducts.Get
--- Copyright   : (c) 2015 Brendan Hay
+-- Copyright   : (c) 2015-2016 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
 -- Stability   : auto-generated
@@ -54,7 +54,7 @@
 -- | Returns information about the in-app product specified.
 --
 -- /See:/ 'inAppProductsGet' smart constructor.
-data InAppProductsGet = InAppProductsGet
+data InAppProductsGet = InAppProductsGet'
     { _iapgPackageName :: !Text
     , _iapgSKU         :: !Text
     } deriving (Eq,Show,Data,Typeable,Generic)
@@ -71,7 +71,7 @@
     -> Text -- ^ 'iapgSKU'
     -> InAppProductsGet
 inAppProductsGet pIapgPackageName_ pIapgSKU_ =
-    InAppProductsGet
+    InAppProductsGet'
     { _iapgPackageName = pIapgPackageName_
     , _iapgSKU = pIapgSKU_
     }
@@ -87,7 +87,9 @@
 
 instance GoogleRequest InAppProductsGet where
         type Rs InAppProductsGet = InAppProduct
-        requestClient InAppProductsGet{..}
+        type Scopes InAppProductsGet =
+             '["https://www.googleapis.com/auth/androidpublisher"]
+        requestClient InAppProductsGet'{..}
           = go _iapgPackageName _iapgSKU (Just AltJSON)
               androidPublisherService
           where go
diff --git a/gen/Network/Google/Resource/AndroidPublisher/InAppProducts/Insert.hs b/gen/Network/Google/Resource/AndroidPublisher/InAppProducts/Insert.hs
--- a/gen/Network/Google/Resource/AndroidPublisher/InAppProducts/Insert.hs
+++ b/gen/Network/Google/Resource/AndroidPublisher/InAppProducts/Insert.hs
@@ -14,7 +14,7 @@
 
 -- |
 -- Module      : Network.Google.Resource.AndroidPublisher.InAppProducts.Insert
--- Copyright   : (c) 2015 Brendan Hay
+-- Copyright   : (c) 2015-2016 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
 -- Stability   : auto-generated
@@ -57,7 +57,7 @@
 -- | Creates a new in-app product for an app.
 --
 -- /See:/ 'inAppProductsInsert' smart constructor.
-data InAppProductsInsert = InAppProductsInsert
+data InAppProductsInsert = InAppProductsInsert'
     { _iapiAutoConvertMissingPrices :: !(Maybe Bool)
     , _iapiPackageName              :: !Text
     , _iapiPayload                  :: !InAppProduct
@@ -77,7 +77,7 @@
     -> InAppProduct -- ^ 'iapiPayload'
     -> InAppProductsInsert
 inAppProductsInsert pIapiPackageName_ pIapiPayload_ =
-    InAppProductsInsert
+    InAppProductsInsert'
     { _iapiAutoConvertMissingPrices = Nothing
     , _iapiPackageName = pIapiPackageName_
     , _iapiPayload = pIapiPayload_
@@ -105,7 +105,9 @@
 
 instance GoogleRequest InAppProductsInsert where
         type Rs InAppProductsInsert = InAppProduct
-        requestClient InAppProductsInsert{..}
+        type Scopes InAppProductsInsert =
+             '["https://www.googleapis.com/auth/androidpublisher"]
+        requestClient InAppProductsInsert'{..}
           = go _iapiPackageName _iapiAutoConvertMissingPrices
               (Just AltJSON)
               _iapiPayload
diff --git a/gen/Network/Google/Resource/AndroidPublisher/InAppProducts/List.hs b/gen/Network/Google/Resource/AndroidPublisher/InAppProducts/List.hs
--- a/gen/Network/Google/Resource/AndroidPublisher/InAppProducts/List.hs
+++ b/gen/Network/Google/Resource/AndroidPublisher/InAppProducts/List.hs
@@ -14,7 +14,7 @@
 
 -- |
 -- Module      : Network.Google.Resource.AndroidPublisher.InAppProducts.List
--- Copyright   : (c) 2015 Brendan Hay
+-- Copyright   : (c) 2015-2016 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
 -- Stability   : auto-generated
@@ -61,7 +61,7 @@
 -- managed in-app products..
 --
 -- /See:/ 'inAppProductsList' smart constructor.
-data InAppProductsList = InAppProductsList
+data InAppProductsList = InAppProductsList'
     { _iaplPackageName :: !Text
     , _iaplToken       :: !(Maybe Text)
     , _iaplStartIndex  :: !(Maybe (Textual Word32))
@@ -83,7 +83,7 @@
     :: Text -- ^ 'iaplPackageName'
     -> InAppProductsList
 inAppProductsList pIaplPackageName_ =
-    InAppProductsList
+    InAppProductsList'
     { _iaplPackageName = pIaplPackageName_
     , _iaplToken = Nothing
     , _iaplStartIndex = Nothing
@@ -115,7 +115,9 @@
 
 instance GoogleRequest InAppProductsList where
         type Rs InAppProductsList = InAppProductsListResponse
-        requestClient InAppProductsList{..}
+        type Scopes InAppProductsList =
+             '["https://www.googleapis.com/auth/androidpublisher"]
+        requestClient InAppProductsList'{..}
           = go _iaplPackageName _iaplToken _iaplStartIndex
               _iaplMaxResults
               (Just AltJSON)
diff --git a/gen/Network/Google/Resource/AndroidPublisher/InAppProducts/Patch.hs b/gen/Network/Google/Resource/AndroidPublisher/InAppProducts/Patch.hs
--- a/gen/Network/Google/Resource/AndroidPublisher/InAppProducts/Patch.hs
+++ b/gen/Network/Google/Resource/AndroidPublisher/InAppProducts/Patch.hs
@@ -14,7 +14,7 @@
 
 -- |
 -- Module      : Network.Google.Resource.AndroidPublisher.InAppProducts.Patch
--- Copyright   : (c) 2015 Brendan Hay
+-- Copyright   : (c) 2015-2016 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
 -- Stability   : auto-generated
@@ -61,7 +61,7 @@
 -- semantics.
 --
 -- /See:/ 'inAppProductsPatch' smart constructor.
-data InAppProductsPatch = InAppProductsPatch
+data InAppProductsPatch = InAppProductsPatch'
     { _iAppAutoConvertMissingPrices :: !(Maybe Bool)
     , _iAppPackageName              :: !Text
     , _iAppPayload                  :: !InAppProduct
@@ -85,7 +85,7 @@
     -> Text -- ^ 'iAppSKU'
     -> InAppProductsPatch
 inAppProductsPatch pIAppPackageName_ pIAppPayload_ pIAppSKU_ =
-    InAppProductsPatch
+    InAppProductsPatch'
     { _iAppAutoConvertMissingPrices = Nothing
     , _iAppPackageName = pIAppPackageName_
     , _iAppPayload = pIAppPayload_
@@ -119,7 +119,9 @@
 
 instance GoogleRequest InAppProductsPatch where
         type Rs InAppProductsPatch = InAppProduct
-        requestClient InAppProductsPatch{..}
+        type Scopes InAppProductsPatch =
+             '["https://www.googleapis.com/auth/androidpublisher"]
+        requestClient InAppProductsPatch'{..}
           = go _iAppPackageName _iAppSKU
               _iAppAutoConvertMissingPrices
               (Just AltJSON)
diff --git a/gen/Network/Google/Resource/AndroidPublisher/InAppProducts/Update.hs b/gen/Network/Google/Resource/AndroidPublisher/InAppProducts/Update.hs
--- a/gen/Network/Google/Resource/AndroidPublisher/InAppProducts/Update.hs
+++ b/gen/Network/Google/Resource/AndroidPublisher/InAppProducts/Update.hs
@@ -14,7 +14,7 @@
 
 -- |
 -- Module      : Network.Google.Resource.AndroidPublisher.InAppProducts.Update
--- Copyright   : (c) 2015 Brendan Hay
+-- Copyright   : (c) 2015-2016 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
 -- Stability   : auto-generated
@@ -59,7 +59,7 @@
 -- | Updates the details of an in-app product.
 --
 -- /See:/ 'inAppProductsUpdate' smart constructor.
-data InAppProductsUpdate = InAppProductsUpdate
+data InAppProductsUpdate = InAppProductsUpdate'
     { _iapuAutoConvertMissingPrices :: !(Maybe Bool)
     , _iapuPackageName              :: !Text
     , _iapuPayload                  :: !InAppProduct
@@ -83,7 +83,7 @@
     -> Text -- ^ 'iapuSKU'
     -> InAppProductsUpdate
 inAppProductsUpdate pIapuPackageName_ pIapuPayload_ pIapuSKU_ =
-    InAppProductsUpdate
+    InAppProductsUpdate'
     { _iapuAutoConvertMissingPrices = Nothing
     , _iapuPackageName = pIapuPackageName_
     , _iapuPayload = pIapuPayload_
@@ -117,7 +117,9 @@
 
 instance GoogleRequest InAppProductsUpdate where
         type Rs InAppProductsUpdate = InAppProduct
-        requestClient InAppProductsUpdate{..}
+        type Scopes InAppProductsUpdate =
+             '["https://www.googleapis.com/auth/androidpublisher"]
+        requestClient InAppProductsUpdate'{..}
           = go _iapuPackageName _iapuSKU
               _iapuAutoConvertMissingPrices
               (Just AltJSON)
diff --git a/gen/Network/Google/Resource/AndroidPublisher/Purchases/Products/Get.hs b/gen/Network/Google/Resource/AndroidPublisher/Purchases/Products/Get.hs
--- a/gen/Network/Google/Resource/AndroidPublisher/Purchases/Products/Get.hs
+++ b/gen/Network/Google/Resource/AndroidPublisher/Purchases/Products/Get.hs
@@ -14,7 +14,7 @@
 
 -- |
 -- Module      : Network.Google.Resource.AndroidPublisher.Purchases.Products.Get
--- Copyright   : (c) 2015 Brendan Hay
+-- Copyright   : (c) 2015-2016 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
 -- Stability   : auto-generated
@@ -59,7 +59,7 @@
 -- | Checks the purchase and consumption status of an inapp item.
 --
 -- /See:/ 'purchasesProductsGet' smart constructor.
-data PurchasesProductsGet = PurchasesProductsGet
+data PurchasesProductsGet = PurchasesProductsGet'
     { _ppgPackageName :: !Text
     , _ppgToken       :: !Text
     , _ppgProductId   :: !Text
@@ -80,7 +80,7 @@
     -> Text -- ^ 'ppgProductId'
     -> PurchasesProductsGet
 purchasesProductsGet pPpgPackageName_ pPpgToken_ pPpgProductId_ =
-    PurchasesProductsGet
+    PurchasesProductsGet'
     { _ppgPackageName = pPpgPackageName_
     , _ppgToken = pPpgToken_
     , _ppgProductId = pPpgProductId_
@@ -105,7 +105,9 @@
 
 instance GoogleRequest PurchasesProductsGet where
         type Rs PurchasesProductsGet = ProductPurchase
-        requestClient PurchasesProductsGet{..}
+        type Scopes PurchasesProductsGet =
+             '["https://www.googleapis.com/auth/androidpublisher"]
+        requestClient PurchasesProductsGet'{..}
           = go _ppgPackageName _ppgProductId _ppgToken
               (Just AltJSON)
               androidPublisherService
diff --git a/gen/Network/Google/Resource/AndroidPublisher/Purchases/Subscriptions/Cancel.hs b/gen/Network/Google/Resource/AndroidPublisher/Purchases/Subscriptions/Cancel.hs
--- a/gen/Network/Google/Resource/AndroidPublisher/Purchases/Subscriptions/Cancel.hs
+++ b/gen/Network/Google/Resource/AndroidPublisher/Purchases/Subscriptions/Cancel.hs
@@ -14,7 +14,7 @@
 
 -- |
 -- Module      : Network.Google.Resource.AndroidPublisher.Purchases.Subscriptions.Cancel
--- Copyright   : (c) 2015 Brendan Hay
+-- Copyright   : (c) 2015-2016 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
 -- Stability   : auto-generated
@@ -60,7 +60,7 @@
 -- until its expiration time.
 --
 -- /See:/ 'purchasesSubscriptionsCancel' smart constructor.
-data PurchasesSubscriptionsCancel = PurchasesSubscriptionsCancel
+data PurchasesSubscriptionsCancel = PurchasesSubscriptionsCancel'
     { _pscPackageName    :: !Text
     , _pscToken          :: !Text
     , _pscSubscriptionId :: !Text
@@ -81,7 +81,7 @@
     -> Text -- ^ 'pscSubscriptionId'
     -> PurchasesSubscriptionsCancel
 purchasesSubscriptionsCancel pPscPackageName_ pPscToken_ pPscSubscriptionId_ =
-    PurchasesSubscriptionsCancel
+    PurchasesSubscriptionsCancel'
     { _pscPackageName = pPscPackageName_
     , _pscToken = pPscToken_
     , _pscSubscriptionId = pPscSubscriptionId_
@@ -108,7 +108,9 @@
 instance GoogleRequest PurchasesSubscriptionsCancel
          where
         type Rs PurchasesSubscriptionsCancel = ()
-        requestClient PurchasesSubscriptionsCancel{..}
+        type Scopes PurchasesSubscriptionsCancel =
+             '["https://www.googleapis.com/auth/androidpublisher"]
+        requestClient PurchasesSubscriptionsCancel'{..}
           = go _pscPackageName _pscSubscriptionId _pscToken
               (Just AltJSON)
               androidPublisherService
diff --git a/gen/Network/Google/Resource/AndroidPublisher/Purchases/Subscriptions/Defer.hs b/gen/Network/Google/Resource/AndroidPublisher/Purchases/Subscriptions/Defer.hs
--- a/gen/Network/Google/Resource/AndroidPublisher/Purchases/Subscriptions/Defer.hs
+++ b/gen/Network/Google/Resource/AndroidPublisher/Purchases/Subscriptions/Defer.hs
@@ -14,7 +14,7 @@
 
 -- |
 -- Module      : Network.Google.Resource.AndroidPublisher.Purchases.Subscriptions.Defer
--- Copyright   : (c) 2015 Brendan Hay
+-- Copyright   : (c) 2015-2016 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
 -- Stability   : auto-generated
@@ -63,7 +63,7 @@
 -- expiration time.
 --
 -- /See:/ 'purchasesSubscriptionsDefer' smart constructor.
-data PurchasesSubscriptionsDefer = PurchasesSubscriptionsDefer
+data PurchasesSubscriptionsDefer = PurchasesSubscriptionsDefer'
     { _psdPackageName    :: !Text
     , _psdToken          :: !Text
     , _psdPayload        :: !SubscriptionPurchasesDeferRequest
@@ -88,7 +88,7 @@
     -> Text -- ^ 'psdSubscriptionId'
     -> PurchasesSubscriptionsDefer
 purchasesSubscriptionsDefer pPsdPackageName_ pPsdToken_ pPsdPayload_ pPsdSubscriptionId_ =
-    PurchasesSubscriptionsDefer
+    PurchasesSubscriptionsDefer'
     { _psdPackageName = pPsdPackageName_
     , _psdToken = pPsdToken_
     , _psdPayload = pPsdPayload_
@@ -122,7 +122,9 @@
          where
         type Rs PurchasesSubscriptionsDefer =
              SubscriptionPurchasesDeferResponse
-        requestClient PurchasesSubscriptionsDefer{..}
+        type Scopes PurchasesSubscriptionsDefer =
+             '["https://www.googleapis.com/auth/androidpublisher"]
+        requestClient PurchasesSubscriptionsDefer'{..}
           = go _psdPackageName _psdSubscriptionId _psdToken
               (Just AltJSON)
               _psdPayload
diff --git a/gen/Network/Google/Resource/AndroidPublisher/Purchases/Subscriptions/Get.hs b/gen/Network/Google/Resource/AndroidPublisher/Purchases/Subscriptions/Get.hs
--- a/gen/Network/Google/Resource/AndroidPublisher/Purchases/Subscriptions/Get.hs
+++ b/gen/Network/Google/Resource/AndroidPublisher/Purchases/Subscriptions/Get.hs
@@ -14,7 +14,7 @@
 
 -- |
 -- Module      : Network.Google.Resource.AndroidPublisher.Purchases.Subscriptions.Get
--- Copyright   : (c) 2015 Brendan Hay
+-- Copyright   : (c) 2015-2016 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
 -- Stability   : auto-generated
@@ -61,7 +61,7 @@
 -- expiry time.
 --
 -- /See:/ 'purchasesSubscriptionsGet' smart constructor.
-data PurchasesSubscriptionsGet = PurchasesSubscriptionsGet
+data PurchasesSubscriptionsGet = PurchasesSubscriptionsGet'
     { _psgPackageName    :: !Text
     , _psgToken          :: !Text
     , _psgSubscriptionId :: !Text
@@ -82,7 +82,7 @@
     -> Text -- ^ 'psgSubscriptionId'
     -> PurchasesSubscriptionsGet
 purchasesSubscriptionsGet pPsgPackageName_ pPsgToken_ pPsgSubscriptionId_ =
-    PurchasesSubscriptionsGet
+    PurchasesSubscriptionsGet'
     { _psgPackageName = pPsgPackageName_
     , _psgToken = pPsgToken_
     , _psgSubscriptionId = pPsgSubscriptionId_
@@ -110,7 +110,9 @@
          where
         type Rs PurchasesSubscriptionsGet =
              SubscriptionPurchase
-        requestClient PurchasesSubscriptionsGet{..}
+        type Scopes PurchasesSubscriptionsGet =
+             '["https://www.googleapis.com/auth/androidpublisher"]
+        requestClient PurchasesSubscriptionsGet'{..}
           = go _psgPackageName _psgSubscriptionId _psgToken
               (Just AltJSON)
               androidPublisherService
diff --git a/gen/Network/Google/Resource/AndroidPublisher/Purchases/Subscriptions/Refund.hs b/gen/Network/Google/Resource/AndroidPublisher/Purchases/Subscriptions/Refund.hs
--- a/gen/Network/Google/Resource/AndroidPublisher/Purchases/Subscriptions/Refund.hs
+++ b/gen/Network/Google/Resource/AndroidPublisher/Purchases/Subscriptions/Refund.hs
@@ -14,7 +14,7 @@
 
 -- |
 -- Module      : Network.Google.Resource.AndroidPublisher.Purchases.Subscriptions.Refund
--- Copyright   : (c) 2015 Brendan Hay
+-- Copyright   : (c) 2015-2016 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
 -- Stability   : auto-generated
@@ -60,7 +60,7 @@
 -- valid until its expiration time and it will continue to recur.
 --
 -- /See:/ 'purchasesSubscriptionsRefund' smart constructor.
-data PurchasesSubscriptionsRefund = PurchasesSubscriptionsRefund
+data PurchasesSubscriptionsRefund = PurchasesSubscriptionsRefund'
     { _psrPackageName    :: !Text
     , _psrToken          :: !Text
     , _psrSubscriptionId :: !Text
@@ -81,7 +81,7 @@
     -> Text -- ^ 'psrSubscriptionId'
     -> PurchasesSubscriptionsRefund
 purchasesSubscriptionsRefund pPsrPackageName_ pPsrToken_ pPsrSubscriptionId_ =
-    PurchasesSubscriptionsRefund
+    PurchasesSubscriptionsRefund'
     { _psrPackageName = pPsrPackageName_
     , _psrToken = pPsrToken_
     , _psrSubscriptionId = pPsrSubscriptionId_
@@ -108,7 +108,9 @@
 instance GoogleRequest PurchasesSubscriptionsRefund
          where
         type Rs PurchasesSubscriptionsRefund = ()
-        requestClient PurchasesSubscriptionsRefund{..}
+        type Scopes PurchasesSubscriptionsRefund =
+             '["https://www.googleapis.com/auth/androidpublisher"]
+        requestClient PurchasesSubscriptionsRefund'{..}
           = go _psrPackageName _psrSubscriptionId _psrToken
               (Just AltJSON)
               androidPublisherService
diff --git a/gen/Network/Google/Resource/AndroidPublisher/Purchases/Subscriptions/Revoke.hs b/gen/Network/Google/Resource/AndroidPublisher/Purchases/Subscriptions/Revoke.hs
--- a/gen/Network/Google/Resource/AndroidPublisher/Purchases/Subscriptions/Revoke.hs
+++ b/gen/Network/Google/Resource/AndroidPublisher/Purchases/Subscriptions/Revoke.hs
@@ -14,7 +14,7 @@
 
 -- |
 -- Module      : Network.Google.Resource.AndroidPublisher.Purchases.Subscriptions.Revoke
--- Copyright   : (c) 2015 Brendan Hay
+-- Copyright   : (c) 2015-2016 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
 -- Stability   : auto-generated
@@ -62,7 +62,7 @@
 -- recurring.
 --
 -- /See:/ 'purchasesSubscriptionsRevoke' smart constructor.
-data PurchasesSubscriptionsRevoke = PurchasesSubscriptionsRevoke
+data PurchasesSubscriptionsRevoke = PurchasesSubscriptionsRevoke'
     { _pPackageName    :: !Text
     , _pToken          :: !Text
     , _pSubscriptionId :: !Text
@@ -83,7 +83,7 @@
     -> Text -- ^ 'pSubscriptionId'
     -> PurchasesSubscriptionsRevoke
 purchasesSubscriptionsRevoke pPPackageName_ pPToken_ pPSubscriptionId_ =
-    PurchasesSubscriptionsRevoke
+    PurchasesSubscriptionsRevoke'
     { _pPackageName = pPPackageName_
     , _pToken = pPToken_
     , _pSubscriptionId = pPSubscriptionId_
@@ -109,7 +109,9 @@
 instance GoogleRequest PurchasesSubscriptionsRevoke
          where
         type Rs PurchasesSubscriptionsRevoke = ()
-        requestClient PurchasesSubscriptionsRevoke{..}
+        type Scopes PurchasesSubscriptionsRevoke =
+             '["https://www.googleapis.com/auth/androidpublisher"]
+        requestClient PurchasesSubscriptionsRevoke'{..}
           = go _pPackageName _pSubscriptionId _pToken
               (Just AltJSON)
               androidPublisherService
diff --git a/gen/Network/Google/Resource/AndroidPublisher/Reviews/Get.hs b/gen/Network/Google/Resource/AndroidPublisher/Reviews/Get.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/AndroidPublisher/Reviews/Get.hs
@@ -0,0 +1,99 @@
+{-# LANGUAGE DataKinds          #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE FlexibleInstances  #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+{-# LANGUAGE TypeOperators      #-}
+
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
+
+-- |
+-- Module      : Network.Google.Resource.AndroidPublisher.Reviews.Get
+-- Copyright   : (c) 2015-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)
+--
+-- Returns a single review.
+--
+-- /See:/ <https://developers.google.com/android-publisher Google Play Developer API Reference> for @androidpublisher.reviews.get@.
+module Network.Google.Resource.AndroidPublisher.Reviews.Get
+    (
+    -- * REST Resource
+      ReviewsGetResource
+
+    -- * Creating a Request
+    , reviewsGet
+    , ReviewsGet
+
+    -- * Request Lenses
+    , rgReviewId
+    , rgPackageName
+    ) where
+
+import           Network.Google.AndroidPublisher.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @androidpublisher.reviews.get@ method which the
+-- 'ReviewsGet' request conforms to.
+type ReviewsGetResource =
+     "androidpublisher" :>
+       "v2" :>
+         "applications" :>
+           Capture "packageName" Text :>
+             "reviews" :>
+               Capture "reviewId" Text :>
+                 QueryParam "alt" AltJSON :> Get '[JSON] Review
+
+-- | Returns a single review.
+--
+-- /See:/ 'reviewsGet' smart constructor.
+data ReviewsGet = ReviewsGet'
+    { _rgReviewId    :: !Text
+    , _rgPackageName :: !Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ReviewsGet' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'rgReviewId'
+--
+-- * 'rgPackageName'
+reviewsGet
+    :: Text -- ^ 'rgReviewId'
+    -> Text -- ^ 'rgPackageName'
+    -> ReviewsGet
+reviewsGet pRgReviewId_ pRgPackageName_ =
+    ReviewsGet'
+    { _rgReviewId = pRgReviewId_
+    , _rgPackageName = pRgPackageName_
+    }
+
+rgReviewId :: Lens' ReviewsGet Text
+rgReviewId
+  = lens _rgReviewId (\ s a -> s{_rgReviewId = a})
+
+-- | Unique identifier for the Android app for which we want reviews; for
+-- example, \"com.spiffygame\".
+rgPackageName :: Lens' ReviewsGet Text
+rgPackageName
+  = lens _rgPackageName
+      (\ s a -> s{_rgPackageName = a})
+
+instance GoogleRequest ReviewsGet where
+        type Rs ReviewsGet = Review
+        type Scopes ReviewsGet =
+             '["https://www.googleapis.com/auth/androidpublisher"]
+        requestClient ReviewsGet'{..}
+          = go _rgPackageName _rgReviewId (Just AltJSON)
+              androidPublisherService
+          where go
+                  = buildClient (Proxy :: Proxy ReviewsGetResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/AndroidPublisher/Reviews/List.hs b/gen/Network/Google/Resource/AndroidPublisher/Reviews/List.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/AndroidPublisher/Reviews/List.hs
@@ -0,0 +1,122 @@
+{-# LANGUAGE DataKinds          #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE FlexibleInstances  #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+{-# LANGUAGE TypeOperators      #-}
+
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
+
+-- |
+-- Module      : Network.Google.Resource.AndroidPublisher.Reviews.List
+-- Copyright   : (c) 2015-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)
+--
+-- Returns a list of reviews.
+--
+-- /See:/ <https://developers.google.com/android-publisher Google Play Developer API Reference> for @androidpublisher.reviews.list@.
+module Network.Google.Resource.AndroidPublisher.Reviews.List
+    (
+    -- * REST Resource
+      ReviewsListResource
+
+    -- * Creating a Request
+    , reviewsList
+    , ReviewsList
+
+    -- * Request Lenses
+    , rlPackageName
+    , rlToken
+    , rlStartIndex
+    , rlMaxResults
+    ) where
+
+import           Network.Google.AndroidPublisher.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @androidpublisher.reviews.list@ method which the
+-- 'ReviewsList' request conforms to.
+type ReviewsListResource =
+     "androidpublisher" :>
+       "v2" :>
+         "applications" :>
+           Capture "packageName" Text :>
+             "reviews" :>
+               QueryParam "token" Text :>
+                 QueryParam "startIndex" (Textual Word32) :>
+                   QueryParam "maxResults" (Textual Word32) :>
+                     QueryParam "alt" AltJSON :>
+                       Get '[JSON] ReviewsListResponse
+
+-- | Returns a list of reviews.
+--
+-- /See:/ 'reviewsList' smart constructor.
+data ReviewsList = ReviewsList'
+    { _rlPackageName :: !Text
+    , _rlToken       :: !(Maybe Text)
+    , _rlStartIndex  :: !(Maybe (Textual Word32))
+    , _rlMaxResults  :: !(Maybe (Textual Word32))
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ReviewsList' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'rlPackageName'
+--
+-- * 'rlToken'
+--
+-- * 'rlStartIndex'
+--
+-- * 'rlMaxResults'
+reviewsList
+    :: Text -- ^ 'rlPackageName'
+    -> ReviewsList
+reviewsList pRlPackageName_ =
+    ReviewsList'
+    { _rlPackageName = pRlPackageName_
+    , _rlToken = Nothing
+    , _rlStartIndex = Nothing
+    , _rlMaxResults = Nothing
+    }
+
+-- | Unique identifier for the Android app for which we want reviews; for
+-- example, \"com.spiffygame\".
+rlPackageName :: Lens' ReviewsList Text
+rlPackageName
+  = lens _rlPackageName
+      (\ s a -> s{_rlPackageName = a})
+
+rlToken :: Lens' ReviewsList (Maybe Text)
+rlToken = lens _rlToken (\ s a -> s{_rlToken = a})
+
+rlStartIndex :: Lens' ReviewsList (Maybe Word32)
+rlStartIndex
+  = lens _rlStartIndex (\ s a -> s{_rlStartIndex = a})
+      . mapping _Coerce
+
+rlMaxResults :: Lens' ReviewsList (Maybe Word32)
+rlMaxResults
+  = lens _rlMaxResults (\ s a -> s{_rlMaxResults = a})
+      . mapping _Coerce
+
+instance GoogleRequest ReviewsList where
+        type Rs ReviewsList = ReviewsListResponse
+        type Scopes ReviewsList =
+             '["https://www.googleapis.com/auth/androidpublisher"]
+        requestClient ReviewsList'{..}
+          = go _rlPackageName _rlToken _rlStartIndex
+              _rlMaxResults
+              (Just AltJSON)
+              androidPublisherService
+          where go
+                  = buildClient (Proxy :: Proxy ReviewsListResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/AndroidPublisher/Reviews/Reply.hs b/gen/Network/Google/Resource/AndroidPublisher/Reviews/Reply.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/AndroidPublisher/Reviews/Reply.hs
@@ -0,0 +1,113 @@
+{-# LANGUAGE DataKinds          #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE FlexibleInstances  #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+{-# LANGUAGE TypeOperators      #-}
+
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
+
+-- |
+-- Module      : Network.Google.Resource.AndroidPublisher.Reviews.Reply
+-- Copyright   : (c) 2015-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)
+--
+-- Reply to a single review, or update an existing reply.
+--
+-- /See:/ <https://developers.google.com/android-publisher Google Play Developer API Reference> for @androidpublisher.reviews.reply@.
+module Network.Google.Resource.AndroidPublisher.Reviews.Reply
+    (
+    -- * REST Resource
+      ReviewsReplyResource
+
+    -- * Creating a Request
+    , reviewsReply
+    , ReviewsReply
+
+    -- * Request Lenses
+    , rrReviewId
+    , rrPackageName
+    , rrPayload
+    ) where
+
+import           Network.Google.AndroidPublisher.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @androidpublisher.reviews.reply@ method which the
+-- 'ReviewsReply' request conforms to.
+type ReviewsReplyResource =
+     "androidpublisher" :>
+       "v2" :>
+         "applications" :>
+           Capture "packageName" Text :>
+             "reviews" :>
+               CaptureMode "reviewId" "reply" Text :>
+                 QueryParam "alt" AltJSON :>
+                   ReqBody '[JSON] ReviewsReplyRequest :>
+                     Post '[JSON] ReviewsReplyResponse
+
+-- | Reply to a single review, or update an existing reply.
+--
+-- /See:/ 'reviewsReply' smart constructor.
+data ReviewsReply = ReviewsReply'
+    { _rrReviewId    :: !Text
+    , _rrPackageName :: !Text
+    , _rrPayload     :: !ReviewsReplyRequest
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ReviewsReply' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'rrReviewId'
+--
+-- * 'rrPackageName'
+--
+-- * 'rrPayload'
+reviewsReply
+    :: Text -- ^ 'rrReviewId'
+    -> Text -- ^ 'rrPackageName'
+    -> ReviewsReplyRequest -- ^ 'rrPayload'
+    -> ReviewsReply
+reviewsReply pRrReviewId_ pRrPackageName_ pRrPayload_ =
+    ReviewsReply'
+    { _rrReviewId = pRrReviewId_
+    , _rrPackageName = pRrPackageName_
+    , _rrPayload = pRrPayload_
+    }
+
+rrReviewId :: Lens' ReviewsReply Text
+rrReviewId
+  = lens _rrReviewId (\ s a -> s{_rrReviewId = a})
+
+-- | Unique identifier for the Android app for which we want reviews; for
+-- example, \"com.spiffygame\".
+rrPackageName :: Lens' ReviewsReply Text
+rrPackageName
+  = lens _rrPackageName
+      (\ s a -> s{_rrPackageName = a})
+
+-- | Multipart request metadata.
+rrPayload :: Lens' ReviewsReply ReviewsReplyRequest
+rrPayload
+  = lens _rrPayload (\ s a -> s{_rrPayload = a})
+
+instance GoogleRequest ReviewsReply where
+        type Rs ReviewsReply = ReviewsReplyResponse
+        type Scopes ReviewsReply =
+             '["https://www.googleapis.com/auth/androidpublisher"]
+        requestClient ReviewsReply'{..}
+          = go _rrPackageName _rrReviewId (Just AltJSON)
+              _rrPayload
+              androidPublisherService
+          where go
+                  = buildClient (Proxy :: Proxy ReviewsReplyResource)
+                      mempty
diff --git a/gogol-android-publisher.cabal b/gogol-android-publisher.cabal
--- a/gogol-android-publisher.cabal
+++ b/gogol-android-publisher.cabal
@@ -1,5 +1,5 @@
 name:                  gogol-android-publisher
-version:               0.0.1
+version:               0.1.0
 synopsis:              Google Play Developer SDK.
 homepage:              https://github.com/brendanhay/gogol
 bug-reports:           https://github.com/brendanhay/gogol/issues
@@ -7,7 +7,7 @@
 license-file:          LICENSE
 author:                Brendan Hay
 maintainer:            Brendan Hay <brendan.g.hay@gmail.com>
-copyright:             Copyright (c) 2015 Brendan Hay
+copyright:             Copyright (c) 2015-2016 Brendan Hay
 category:              Network, Google, Cloud
 build-type:            Simple
 cabal-version:         >= 1.10
@@ -87,11 +87,14 @@
         , Network.Google.Resource.AndroidPublisher.Purchases.Subscriptions.Get
         , Network.Google.Resource.AndroidPublisher.Purchases.Subscriptions.Refund
         , Network.Google.Resource.AndroidPublisher.Purchases.Subscriptions.Revoke
+        , Network.Google.Resource.AndroidPublisher.Reviews.Get
+        , Network.Google.Resource.AndroidPublisher.Reviews.List
+        , Network.Google.Resource.AndroidPublisher.Reviews.Reply
 
     other-modules:
           Network.Google.AndroidPublisher.Types.Product
         , Network.Google.AndroidPublisher.Types.Sum
 
     build-depends:
-          gogol-core == 0.0.1.*
+          gogol-core == 0.1.0.*
         , base       >= 4.7 && < 5
