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
@@ -13,7 +13,7 @@
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- Lets Android application developers access their Google Play accounts.
+-- Accesses Android application developers\' Google Play accounts.
 --
 -- /See:/ <https://developers.google.com/android-publisher Google Play Developer API Reference>
 module Network.Google.AndroidPublisher
@@ -29,24 +29,6 @@
 
     -- * Resources
 
-    -- ** androidpublisher.edits.apklistings.delete
-    , module Network.Google.Resource.AndroidPublisher.Edits.APKListings.Delete
-
-    -- ** androidpublisher.edits.apklistings.deleteall
-    , module Network.Google.Resource.AndroidPublisher.Edits.APKListings.Deleteall
-
-    -- ** androidpublisher.edits.apklistings.get
-    , module Network.Google.Resource.AndroidPublisher.Edits.APKListings.Get
-
-    -- ** androidpublisher.edits.apklistings.list
-    , module Network.Google.Resource.AndroidPublisher.Edits.APKListings.List
-
-    -- ** androidpublisher.edits.apklistings.patch
-    , module Network.Google.Resource.AndroidPublisher.Edits.APKListings.Patch
-
-    -- ** androidpublisher.edits.apklistings.update
-    , module Network.Google.Resource.AndroidPublisher.Edits.APKListings.Update
-
     -- ** androidpublisher.edits.apks.addexternallyhosted
     , module Network.Google.Resource.AndroidPublisher.Edits.APKs.Addexternallyhosted
 
@@ -56,6 +38,12 @@
     -- ** androidpublisher.edits.apks.upload
     , module Network.Google.Resource.AndroidPublisher.Edits.APKs.Upload
 
+    -- ** androidpublisher.edits.bundles.list
+    , module Network.Google.Resource.AndroidPublisher.Edits.Bundles.List
+
+    -- ** androidpublisher.edits.bundles.upload
+    , module Network.Google.Resource.AndroidPublisher.Edits.Bundles.Upload
+
     -- ** androidpublisher.edits.commit
     , module Network.Google.Resource.AndroidPublisher.Edits.Commit
 
@@ -146,12 +134,6 @@
     -- ** androidpublisher.edits.validate
     , module Network.Google.Resource.AndroidPublisher.Edits.Validate
 
-    -- ** androidpublisher.entitlements.list
-    , module Network.Google.Resource.AndroidPublisher.Entitlements.List
-
-    -- ** androidpublisher.inappproducts.batch
-    , module Network.Google.Resource.AndroidPublisher.InAppProducts.Batch
-
     -- ** androidpublisher.inappproducts.delete
     , module Network.Google.Resource.AndroidPublisher.InAppProducts.Delete
 
@@ -170,6 +152,9 @@
     -- ** androidpublisher.inappproducts.update
     , module Network.Google.Resource.AndroidPublisher.InAppProducts.Update
 
+    -- ** androidpublisher.orders.refund
+    , module Network.Google.Resource.AndroidPublisher.Orders.Refund
+
     -- ** androidpublisher.purchases.products.get
     , module Network.Google.Resource.AndroidPublisher.Purchases.Products.Get
 
@@ -207,11 +192,6 @@
     , inAppProductListings
     , iaplAddtional
 
-    -- ** InAppProductsUpdateResponse
-    , InAppProductsUpdateResponse
-    , inAppProductsUpdateResponse
-    , iapurInAppProduct
-
     -- ** EditsImagesDeleteallImageType
     , EditsImagesDeleteallImageType (..)
 
@@ -224,9 +204,8 @@
     -- ** Track
     , Track
     , track
-    , tVersionCodes
     , tTrack
-    , tUserFraction
+    , tReleases
 
     -- ** Image
     , Image
@@ -235,14 +214,6 @@
     , iSha1
     , iId
 
-    -- ** InAppProductsBatchRequestEntry
-    , InAppProductsBatchRequestEntry
-    , inAppProductsBatchRequestEntry
-    , iapbreMethodName
-    , iapbreInAppProductsinsertrequest
-    , iapbreInAppProductsupdaterequest
-    , iapbreBatchId
-
     -- ** InAppProductListing
     , InAppProductListing
     , inAppProductListing
@@ -266,9 +237,6 @@
     , efFileSize
     , efReferencesVersion
 
-    -- ** EditsTracksPatchTrack
-    , EditsTracksPatchTrack (..)
-
     -- ** UserComment
     , UserComment
     , userComment
@@ -291,8 +259,11 @@
     , tGooglePlusCommUnities
     , tGoogleGroups
 
-    -- ** EditsTracksGetTrack
-    , EditsTracksGetTrack (..)
+    -- ** SubscriptionCancelSurveyResult
+    , SubscriptionCancelSurveyResult
+    , subscriptionCancelSurveyResult
+    , scsrCancelSurveyReason
+    , scsrUserInputCancelReason
 
     -- ** Listing
     , Listing
@@ -320,9 +291,6 @@
     , tlrTracks
     , tlrKind
 
-    -- ** EditsTracksUpdateTrack
-    , EditsTracksUpdateTrack (..)
-
     -- ** Season
     , Season
     , season
@@ -355,7 +323,9 @@
     , ppConsumptionState
     , ppKind
     , ppPurchaseTimeMillis
+    , ppPurchaseType
     , ppDeveloperPayload
+    , ppOrderId
 
     -- ** ReviewsListResponse
     , ReviewsListResponse
@@ -369,26 +339,38 @@
     , subscriptionPurchasesDeferResponse
     , spdrNewExpiryTimeMillis
 
-    -- ** APKListing
-    , APKListing
-    , aPKListing
-    , apklLanguage
-    , apklRecentChanges
-
     -- ** SubscriptionPurchase
     , SubscriptionPurchase
     , subscriptionPurchase
+    , spGivenName
+    , spAutoResumeTimeMillis
+    , spUserCancellationTimeMillis
     , spPaymentState
     , spKind
+    , spPurchaseType
+    , spPriceChange
+    , spProFileId
+    , spLinkedPurchaseToken
+    , spFamilyName
+    , spProFileName
     , spExpiryTimeMillis
     , spAutoRenewing
     , spPriceCurrencyCode
+    , spEmailAddress
     , spCancelReason
     , spCountryCode
     , spDeveloperPayload
     , spPriceAmountMicros
     , spStartTimeMillis
+    , spOrderId
+    , spCancelSurveyResult
 
+    -- ** SubscriptionPriceChange
+    , SubscriptionPriceChange
+    , subscriptionPriceChange
+    , spcState
+    , spcNewPrice
+
     -- ** AppDetails
     , AppDetails
     , appDetails
@@ -402,11 +384,6 @@
     , inAppProductPrices
     , iAppAddtional
 
-    -- ** InAppProductsBatchRequest
-    , InAppProductsBatchRequest
-    , inAppProductsBatchRequest
-    , iapbrEntrys
-
     -- ** ExternallyHostedAPK
     , ExternallyHostedAPK
     , externallyHostedAPK
@@ -426,14 +403,24 @@
     , ehapkUsesPermissions
     , ehapkCertificateBase64s
 
+    -- ** TrackRelease
+    , TrackRelease
+    , trackRelease
+    , trVersionCodes
+    , trStatus
+    , trReleaseNotes
+    , trUserFraction
+    , trName
+
     -- ** EditsImagesListImageType
     , EditsImagesListImageType (..)
 
-    -- ** EditsTestersPatchTrack
-    , EditsTestersPatchTrack (..)
-
-    -- ** EditsTestersGetTrack
-    , EditsTestersGetTrack (..)
+    -- ** Bundle
+    , Bundle
+    , bundle
+    , bVersionCode
+    , bSha1
+    , bSha256
 
     -- ** DeobfuscationFile
     , DeobfuscationFile
@@ -485,11 +472,11 @@
     -- ** EditsExpansionFilesUploadExpansionFileType
     , EditsExpansionFilesUploadExpansionFileType (..)
 
-    -- ** APKListingsListResponse
-    , APKListingsListResponse
-    , aPKListingsListResponse
-    , apkllrKind
-    , apkllrListings
+    -- ** LocalizedText
+    , LocalizedText
+    , localizedText
+    , ltText
+    , ltLanguage
 
     -- ** Review
     , Review
@@ -498,11 +485,6 @@
     , rAuthorName
     , rComments
 
-    -- ** InAppProductsInsertResponse
-    , InAppProductsInsertResponse
-    , inAppProductsInsertResponse
-    , iapirInAppProduct
-
     -- ** APKsAddExternallyHostedResponse
     , APKsAddExternallyHostedResponse
     , aPKsAddExternallyHostedResponse
@@ -553,6 +535,7 @@
     , InAppProduct
     , inAppProduct
     , iapStatus
+    , iapGracePeriod
     , iapTrialPeriod
     , iapPackageName
     , iapSeason
@@ -564,13 +547,6 @@
     , iapListings
     , iapDefaultLanguage
 
-    -- ** InAppProductsBatchResponseEntry
-    , InAppProductsBatchResponseEntry
-    , inAppProductsBatchResponseEntry
-    , iInAppProductsupdateresponse
-    , iInAppProductsinsertresponse
-    , iBatchId
-
     -- ** Price
     , Price
     , price
@@ -584,6 +560,7 @@
     , APKBinary
     , aPKBinary
     , apkbSha1
+    , apkbSha256
 
     -- ** APKsListResponse
     , APKsListResponse
@@ -613,32 +590,12 @@
     , aPKsAddExternallyHostedRequest
     , aExternallyHostedAPK
 
-    -- ** InAppProductsInsertRequest
-    , InAppProductsInsertRequest
-    , inAppProductsInsertRequest
-    , iInAppProduct
-
-    -- ** EntitlementsListResponse
-    , EntitlementsListResponse
-    , entitlementsListResponse
-    , elrTokenPagination
-    , elrPageInfo
-    , elrResources
-
     -- ** Comment
     , Comment
     , comment
     , cUserComment
     , cDeveloperComment
 
-    -- ** EditsTestersUpdateTrack
-    , EditsTestersUpdateTrack (..)
-
-    -- ** InAppProductsUpdateRequest
-    , InAppProductsUpdateRequest
-    , inAppProductsUpdateRequest
-    , inInAppProduct
-
     -- ** Timestamp
     , Timestamp
     , timestamp
@@ -653,38 +610,26 @@
     , vpPurchaseToken
     , vpVoidedTimeMillis
 
+    -- ** BundlesListResponse
+    , BundlesListResponse
+    , bundlesListResponse
+    , blrBundles
+    , blrKind
+
     -- ** ReviewReplyResult
     , ReviewReplyResult
     , reviewReplyResult
     , rReplyText
     , rLastEdited
-
-    -- ** Entitlement
-    , Entitlement
-    , entitlement
-    , eKind
-    , eProductType
-    , eToken
-    , eProductId
-
-    -- ** InAppProductsBatchResponse
-    , InAppProductsBatchResponse
-    , inAppProductsBatchResponse
-    , iEntrys
-    , iKind
     ) where
 
 import           Network.Google.AndroidPublisher.Types
 import           Network.Google.Prelude
-import           Network.Google.Resource.AndroidPublisher.Edits.APKListings.Delete
-import           Network.Google.Resource.AndroidPublisher.Edits.APKListings.Deleteall
-import           Network.Google.Resource.AndroidPublisher.Edits.APKListings.Get
-import           Network.Google.Resource.AndroidPublisher.Edits.APKListings.List
-import           Network.Google.Resource.AndroidPublisher.Edits.APKListings.Patch
-import           Network.Google.Resource.AndroidPublisher.Edits.APKListings.Update
 import           Network.Google.Resource.AndroidPublisher.Edits.APKs.Addexternallyhosted
 import           Network.Google.Resource.AndroidPublisher.Edits.APKs.List
 import           Network.Google.Resource.AndroidPublisher.Edits.APKs.Upload
+import           Network.Google.Resource.AndroidPublisher.Edits.Bundles.List
+import           Network.Google.Resource.AndroidPublisher.Edits.Bundles.Upload
 import           Network.Google.Resource.AndroidPublisher.Edits.Commit
 import           Network.Google.Resource.AndroidPublisher.Edits.Delete
 import           Network.Google.Resource.AndroidPublisher.Edits.DeobfuscationFiles.Upload
@@ -715,14 +660,13 @@
 import           Network.Google.Resource.AndroidPublisher.Edits.Tracks.Patch
 import           Network.Google.Resource.AndroidPublisher.Edits.Tracks.Update
 import           Network.Google.Resource.AndroidPublisher.Edits.Validate
-import           Network.Google.Resource.AndroidPublisher.Entitlements.List
-import           Network.Google.Resource.AndroidPublisher.InAppProducts.Batch
 import           Network.Google.Resource.AndroidPublisher.InAppProducts.Delete
 import           Network.Google.Resource.AndroidPublisher.InAppProducts.Get
 import           Network.Google.Resource.AndroidPublisher.InAppProducts.Insert
 import           Network.Google.Resource.AndroidPublisher.InAppProducts.List
 import           Network.Google.Resource.AndroidPublisher.InAppProducts.Patch
 import           Network.Google.Resource.AndroidPublisher.InAppProducts.Update
+import           Network.Google.Resource.AndroidPublisher.Orders.Refund
 import           Network.Google.Resource.AndroidPublisher.Purchases.Products.Get
 import           Network.Google.Resource.AndroidPublisher.Purchases.Subscriptions.Cancel
 import           Network.Google.Resource.AndroidPublisher.Purchases.Subscriptions.Defer
@@ -740,9 +684,8 @@
 
 -- | Represents the entirety of the methods and resources available for the Google Play Developer API service.
 type AndroidPublisherAPI =
-     InAppProductsBatchResource :<|>
-       InAppProductsInsertResource
-       :<|> InAppProductsListResource
+     InAppProductsInsertResource :<|>
+       InAppProductsListResource
        :<|> InAppProductsPatchResource
        :<|> InAppProductsGetResource
        :<|> InAppProductsDeleteResource
@@ -763,18 +706,14 @@
        :<|> EditsTracksGetResource
        :<|> EditsTracksUpdateResource
        :<|> EditsDeobfuscationFilesUploadResource
+       :<|> EditsBundlesListResource
+       :<|> EditsBundlesUploadResource
        :<|> EditsTestersPatchResource
        :<|> EditsTestersGetResource
        :<|> EditsTestersUpdateResource
        :<|> EditsDetailsPatchResource
        :<|> EditsDetailsGetResource
        :<|> EditsDetailsUpdateResource
-       :<|> EditsAPKListingsListResource
-       :<|> EditsAPKListingsDeleteallResource
-       :<|> EditsAPKListingsPatchResource
-       :<|> EditsAPKListingsGetResource
-       :<|> EditsAPKListingsDeleteResource
-       :<|> EditsAPKListingsUpdateResource
        :<|> EditsAPKsListResource
        :<|> EditsAPKsAddexternallyhostedResource
        :<|> EditsAPKsUploadResource
@@ -789,7 +728,7 @@
        :<|> EditsValidateResource
        :<|> EditsDeleteResource
        :<|> EditsCommitResource
-       :<|> EntitlementsListResource
+       :<|> OrdersRefundResource
        :<|> PurchasesVoidedpurchasesListResource
        :<|> PurchasesProductsGetResource
        :<|> PurchasesSubscriptionsDeferResource
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
@@ -27,11 +27,6 @@
     , inAppProductListings
     , iaplAddtional
 
-    -- * InAppProductsUpdateResponse
-    , InAppProductsUpdateResponse
-    , inAppProductsUpdateResponse
-    , iapurInAppProduct
-
     -- * EditsImagesDeleteallImageType
     , EditsImagesDeleteallImageType (..)
 
@@ -44,9 +39,8 @@
     -- * Track
     , Track
     , track
-    , tVersionCodes
     , tTrack
-    , tUserFraction
+    , tReleases
 
     -- * Image
     , Image
@@ -55,14 +49,6 @@
     , iSha1
     , iId
 
-    -- * InAppProductsBatchRequestEntry
-    , InAppProductsBatchRequestEntry
-    , inAppProductsBatchRequestEntry
-    , iapbreMethodName
-    , iapbreInAppProductsinsertrequest
-    , iapbreInAppProductsupdaterequest
-    , iapbreBatchId
-
     -- * InAppProductListing
     , InAppProductListing
     , inAppProductListing
@@ -86,9 +72,6 @@
     , efFileSize
     , efReferencesVersion
 
-    -- * EditsTracksPatchTrack
-    , EditsTracksPatchTrack (..)
-
     -- * UserComment
     , UserComment
     , userComment
@@ -111,8 +94,11 @@
     , tGooglePlusCommUnities
     , tGoogleGroups
 
-    -- * EditsTracksGetTrack
-    , EditsTracksGetTrack (..)
+    -- * SubscriptionCancelSurveyResult
+    , SubscriptionCancelSurveyResult
+    , subscriptionCancelSurveyResult
+    , scsrCancelSurveyReason
+    , scsrUserInputCancelReason
 
     -- * Listing
     , Listing
@@ -140,9 +126,6 @@
     , tlrTracks
     , tlrKind
 
-    -- * EditsTracksUpdateTrack
-    , EditsTracksUpdateTrack (..)
-
     -- * Season
     , Season
     , season
@@ -175,7 +158,9 @@
     , ppConsumptionState
     , ppKind
     , ppPurchaseTimeMillis
+    , ppPurchaseType
     , ppDeveloperPayload
+    , ppOrderId
 
     -- * ReviewsListResponse
     , ReviewsListResponse
@@ -189,26 +174,38 @@
     , subscriptionPurchasesDeferResponse
     , spdrNewExpiryTimeMillis
 
-    -- * APKListing
-    , APKListing
-    , aPKListing
-    , apklLanguage
-    , apklRecentChanges
-
     -- * SubscriptionPurchase
     , SubscriptionPurchase
     , subscriptionPurchase
+    , spGivenName
+    , spAutoResumeTimeMillis
+    , spUserCancellationTimeMillis
     , spPaymentState
     , spKind
+    , spPurchaseType
+    , spPriceChange
+    , spProFileId
+    , spLinkedPurchaseToken
+    , spFamilyName
+    , spProFileName
     , spExpiryTimeMillis
     , spAutoRenewing
     , spPriceCurrencyCode
+    , spEmailAddress
     , spCancelReason
     , spCountryCode
     , spDeveloperPayload
     , spPriceAmountMicros
     , spStartTimeMillis
+    , spOrderId
+    , spCancelSurveyResult
 
+    -- * SubscriptionPriceChange
+    , SubscriptionPriceChange
+    , subscriptionPriceChange
+    , spcState
+    , spcNewPrice
+
     -- * AppDetails
     , AppDetails
     , appDetails
@@ -222,11 +219,6 @@
     , inAppProductPrices
     , iAppAddtional
 
-    -- * InAppProductsBatchRequest
-    , InAppProductsBatchRequest
-    , inAppProductsBatchRequest
-    , iapbrEntrys
-
     -- * ExternallyHostedAPK
     , ExternallyHostedAPK
     , externallyHostedAPK
@@ -246,14 +238,24 @@
     , ehapkUsesPermissions
     , ehapkCertificateBase64s
 
+    -- * TrackRelease
+    , TrackRelease
+    , trackRelease
+    , trVersionCodes
+    , trStatus
+    , trReleaseNotes
+    , trUserFraction
+    , trName
+
     -- * EditsImagesListImageType
     , EditsImagesListImageType (..)
 
-    -- * EditsTestersPatchTrack
-    , EditsTestersPatchTrack (..)
-
-    -- * EditsTestersGetTrack
-    , EditsTestersGetTrack (..)
+    -- * Bundle
+    , Bundle
+    , bundle
+    , bVersionCode
+    , bSha1
+    , bSha256
 
     -- * DeobfuscationFile
     , DeobfuscationFile
@@ -305,11 +307,11 @@
     -- * EditsExpansionFilesUploadExpansionFileType
     , EditsExpansionFilesUploadExpansionFileType (..)
 
-    -- * APKListingsListResponse
-    , APKListingsListResponse
-    , aPKListingsListResponse
-    , apkllrKind
-    , apkllrListings
+    -- * LocalizedText
+    , LocalizedText
+    , localizedText
+    , ltText
+    , ltLanguage
 
     -- * Review
     , Review
@@ -318,11 +320,6 @@
     , rAuthorName
     , rComments
 
-    -- * InAppProductsInsertResponse
-    , InAppProductsInsertResponse
-    , inAppProductsInsertResponse
-    , iapirInAppProduct
-
     -- * APKsAddExternallyHostedResponse
     , APKsAddExternallyHostedResponse
     , aPKsAddExternallyHostedResponse
@@ -373,6 +370,7 @@
     , InAppProduct
     , inAppProduct
     , iapStatus
+    , iapGracePeriod
     , iapTrialPeriod
     , iapPackageName
     , iapSeason
@@ -384,13 +382,6 @@
     , iapListings
     , iapDefaultLanguage
 
-    -- * InAppProductsBatchResponseEntry
-    , InAppProductsBatchResponseEntry
-    , inAppProductsBatchResponseEntry
-    , iInAppProductsupdateresponse
-    , iInAppProductsinsertresponse
-    , iBatchId
-
     -- * Price
     , Price
     , price
@@ -404,6 +395,7 @@
     , APKBinary
     , aPKBinary
     , apkbSha1
+    , apkbSha256
 
     -- * APKsListResponse
     , APKsListResponse
@@ -433,32 +425,12 @@
     , aPKsAddExternallyHostedRequest
     , aExternallyHostedAPK
 
-    -- * InAppProductsInsertRequest
-    , InAppProductsInsertRequest
-    , inAppProductsInsertRequest
-    , iInAppProduct
-
-    -- * EntitlementsListResponse
-    , EntitlementsListResponse
-    , entitlementsListResponse
-    , elrTokenPagination
-    , elrPageInfo
-    , elrResources
-
     -- * Comment
     , Comment
     , comment
     , cUserComment
     , cDeveloperComment
 
-    -- * EditsTestersUpdateTrack
-    , EditsTestersUpdateTrack (..)
-
-    -- * InAppProductsUpdateRequest
-    , InAppProductsUpdateRequest
-    , inAppProductsUpdateRequest
-    , inInAppProduct
-
     -- * Timestamp
     , Timestamp
     , timestamp
@@ -473,35 +445,27 @@
     , vpPurchaseToken
     , vpVoidedTimeMillis
 
+    -- * BundlesListResponse
+    , BundlesListResponse
+    , bundlesListResponse
+    , blrBundles
+    , blrKind
+
     -- * ReviewReplyResult
     , ReviewReplyResult
     , reviewReplyResult
     , rReplyText
     , rLastEdited
-
-    -- * Entitlement
-    , Entitlement
-    , entitlement
-    , eKind
-    , eProductType
-    , eToken
-    , eProductId
-
-    -- * InAppProductsBatchResponse
-    , InAppProductsBatchResponse
-    , inAppProductsBatchResponse
-    , iEntrys
-    , iKind
     ) where
 
 import           Network.Google.AndroidPublisher.Types.Product
 import           Network.Google.AndroidPublisher.Types.Sum
 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.
+-- | Default request referring to version 'v3' of the Google Play Developer API. This contains the host and root path used as a starting point for constructing service requests.
 androidPublisherService :: ServiceConfig
 androidPublisherService
-  = defaultService (ServiceId "androidpublisher:v2")
+  = defaultService (ServiceId "androidpublisher:v3")
       "www.googleapis.com"
 
 -- | View and manage your Google Play Developer account
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
@@ -58,3643 +58,3639 @@
         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)
-    , _ucThumbsUpCount    :: !(Maybe (Textual Int32))
-    , _ucAppVersionCode   :: !(Maybe (Textual Int32))
-    , _ucThumbsDownCount  :: !(Maybe (Textual Int32))
-    , _ucOriginalText     :: !(Maybe Text)
-    , _ucAppVersionName   :: !(Maybe Text)
-    , _ucReviewerLanguage :: !(Maybe Text)
-    , _ucDeviceMetadata   :: !(Maybe DeviceMetadata)
-    , _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'
---
--- * 'ucThumbsUpCount'
---
--- * 'ucAppVersionCode'
---
--- * 'ucThumbsDownCount'
---
--- * 'ucOriginalText'
---
--- * 'ucAppVersionName'
---
--- * 'ucReviewerLanguage'
---
--- * 'ucDeviceMetadata'
---
--- * 'ucStarRating'
---
--- * 'ucLastModified'
-userComment
-    :: UserComment
-userComment =
-    UserComment'
-    { _ucAndroidOSVersion = Nothing
-    , _ucText = Nothing
-    , _ucDevice = Nothing
-    , _ucThumbsUpCount = Nothing
-    , _ucAppVersionCode = Nothing
-    , _ucThumbsDownCount = Nothing
-    , _ucOriginalText = Nothing
-    , _ucAppVersionName = Nothing
-    , _ucReviewerLanguage = Nothing
-    , _ucDeviceMetadata = 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})
-
--- | Number of users who have given this review a thumbs up
-ucThumbsUpCount :: Lens' UserComment (Maybe Int32)
-ucThumbsUpCount
-  = lens _ucThumbsUpCount
-      (\ s a -> s{_ucThumbsUpCount = a})
-      . mapping _Coerce
-
--- | 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
-
--- | Number of users who have given this review a thumbs down
-ucThumbsDownCount :: Lens' UserComment (Maybe Int32)
-ucThumbsDownCount
-  = lens _ucThumbsDownCount
-      (\ s a -> s{_ucThumbsDownCount = a})
-      . mapping _Coerce
-
--- | Untranslated text of the review, in the case where the review has been
--- translated. If the review has not been translated this is left blank.
-ucOriginalText :: Lens' UserComment (Maybe Text)
-ucOriginalText
-  = lens _ucOriginalText
-      (\ s a -> s{_ucOriginalText = a})
-
--- | 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})
-
--- | Some information about the characteristics of the user\'s device
-ucDeviceMetadata :: Lens' UserComment (Maybe DeviceMetadata)
-ucDeviceMetadata
-  = lens _ucDeviceMetadata
-      (\ s a -> s{_ucDeviceMetadata = 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 .:? "thumbsUpCount")
-                     <*> (o .:? "appVersionCode")
-                     <*> (o .:? "thumbsDownCount")
-                     <*> (o .:? "originalText")
-                     <*> (o .:? "appVersionName")
-                     <*> (o .:? "reviewerLanguage")
-                     <*> (o .:? "deviceMetadata")
-                     <*> (o .:? "starRating")
-                     <*> (o .:? "lastModified"))
-
-instance ToJSON UserComment where
-        toJSON UserComment'{..}
-          = object
-              (catMaybes
-                 [("androidOsVersion" .=) <$> _ucAndroidOSVersion,
-                  ("text" .=) <$> _ucText, ("device" .=) <$> _ucDevice,
-                  ("thumbsUpCount" .=) <$> _ucThumbsUpCount,
-                  ("appVersionCode" .=) <$> _ucAppVersionCode,
-                  ("thumbsDownCount" .=) <$> _ucThumbsDownCount,
-                  ("originalText" .=) <$> _ucOriginalText,
-                  ("appVersionName" .=) <$> _ucAppVersionName,
-                  ("reviewerLanguage" .=) <$> _ucReviewerLanguage,
-                  ("deviceMetadata" .=) <$> _ucDeviceMetadata,
-                  ("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 the
--- 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 reason why a subscription was cancelled or 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 represents 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 the
--- 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])
-
--- | Represents a deobfuscation file.
---
--- /See:/ 'deobfuscationFile' smart constructor.
-newtype DeobfuscationFile = DeobfuscationFile'
-    { _dfSymbolType :: Maybe Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'DeobfuscationFile' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'dfSymbolType'
-deobfuscationFile
-    :: DeobfuscationFile
-deobfuscationFile =
-    DeobfuscationFile'
-    { _dfSymbolType = Nothing
-    }
-
--- | The type of the deobfuscation file.
-dfSymbolType :: Lens' DeobfuscationFile (Maybe Text)
-dfSymbolType
-  = lens _dfSymbolType (\ s a -> s{_dfSymbolType = a})
-
-instance FromJSON DeobfuscationFile where
-        parseJSON
-          = withObject "DeobfuscationFile"
-              (\ o -> DeobfuscationFile' <$> (o .:? "symbolType"))
-
-instance ToJSON DeobfuscationFile where
-        toJSON DeobfuscationFile'{..}
-          = object
-              (catMaybes [("symbolType" .=) <$> _dfSymbolType])
-
---
--- /See:/ 'voidedPurchasesListResponse' smart constructor.
-data VoidedPurchasesListResponse = VoidedPurchasesListResponse'
-    { _vplrTokenPagination :: !(Maybe TokenPagination)
-    , _vplrPageInfo        :: !(Maybe PageInfo)
-    , _vplrVoidedPurchases :: !(Maybe [VoidedPurchase])
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'VoidedPurchasesListResponse' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'vplrTokenPagination'
---
--- * 'vplrPageInfo'
---
--- * 'vplrVoidedPurchases'
-voidedPurchasesListResponse
-    :: VoidedPurchasesListResponse
-voidedPurchasesListResponse =
-    VoidedPurchasesListResponse'
-    { _vplrTokenPagination = Nothing
-    , _vplrPageInfo = Nothing
-    , _vplrVoidedPurchases = Nothing
-    }
-
-vplrTokenPagination :: Lens' VoidedPurchasesListResponse (Maybe TokenPagination)
-vplrTokenPagination
-  = lens _vplrTokenPagination
-      (\ s a -> s{_vplrTokenPagination = a})
-
-vplrPageInfo :: Lens' VoidedPurchasesListResponse (Maybe PageInfo)
-vplrPageInfo
-  = lens _vplrPageInfo (\ s a -> s{_vplrPageInfo = a})
-
-vplrVoidedPurchases :: Lens' VoidedPurchasesListResponse [VoidedPurchase]
-vplrVoidedPurchases
-  = lens _vplrVoidedPurchases
-      (\ s a -> s{_vplrVoidedPurchases = a})
-      . _Default
-      . _Coerce
-
-instance FromJSON VoidedPurchasesListResponse where
-        parseJSON
-          = withObject "VoidedPurchasesListResponse"
-              (\ o ->
-                 VoidedPurchasesListResponse' <$>
-                   (o .:? "tokenPagination") <*> (o .:? "pageInfo") <*>
-                     (o .:? "voidedPurchases" .!= mempty))
-
-instance ToJSON VoidedPurchasesListResponse where
-        toJSON VoidedPurchasesListResponse'{..}
-          = object
-              (catMaybes
-                 [("tokenPagination" .=) <$> _vplrTokenPagination,
-                  ("pageInfo" .=) <$> _vplrPageInfo,
-                  ("voidedPurchases" .=) <$> _vplrVoidedPurchases])
-
---
--- /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:/ 'deobfuscationFilesUploadResponse' smart constructor.
-newtype DeobfuscationFilesUploadResponse = DeobfuscationFilesUploadResponse'
-    { _dfurDeobfuscationFile :: Maybe DeobfuscationFile
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'DeobfuscationFilesUploadResponse' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'dfurDeobfuscationFile'
-deobfuscationFilesUploadResponse
-    :: DeobfuscationFilesUploadResponse
-deobfuscationFilesUploadResponse =
-    DeobfuscationFilesUploadResponse'
-    { _dfurDeobfuscationFile = Nothing
-    }
-
-dfurDeobfuscationFile :: Lens' DeobfuscationFilesUploadResponse (Maybe DeobfuscationFile)
-dfurDeobfuscationFile
-  = lens _dfurDeobfuscationFile
-      (\ s a -> s{_dfurDeobfuscationFile = a})
-
-instance FromJSON DeobfuscationFilesUploadResponse
-         where
-        parseJSON
-          = withObject "DeobfuscationFilesUploadResponse"
-              (\ o ->
-                 DeobfuscationFilesUploadResponse' <$>
-                   (o .:? "deobfuscationFile"))
-
-instance ToJSON DeobfuscationFilesUploadResponse
-         where
-        toJSON DeobfuscationFilesUploadResponse'{..}
-          = object
-              (catMaybes
-                 [("deobfuscationFile" .=) <$>
-                    _dfurDeobfuscationFile])
-
---
--- /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 to assign to the subscription, in
--- milliseconds since the Epoch. The given time must be later\/greater than
--- 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:/ 'deviceMetadata' smart constructor.
-data DeviceMetadata = DeviceMetadata'
-    { _dmProductName      :: !(Maybe Text)
-    , _dmGlEsVersion      :: !(Maybe (Textual Int32))
-    , _dmManufacturer     :: !(Maybe Text)
-    , _dmScreenWidthPx    :: !(Maybe (Textual Int32))
-    , _dmRamMb            :: !(Maybe (Textual Int32))
-    , _dmCPUMake          :: !(Maybe Text)
-    , _dmScreenHeightPx   :: !(Maybe (Textual Int32))
-    , _dmNATivePlatform   :: !(Maybe Text)
-    , _dmDeviceClass      :: !(Maybe Text)
-    , _dmCPUModel         :: !(Maybe Text)
-    , _dmScreenDensityDpi :: !(Maybe (Textual Int32))
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'DeviceMetadata' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'dmProductName'
---
--- * 'dmGlEsVersion'
---
--- * 'dmManufacturer'
---
--- * 'dmScreenWidthPx'
---
--- * 'dmRamMb'
---
--- * 'dmCPUMake'
---
--- * 'dmScreenHeightPx'
---
--- * 'dmNATivePlatform'
---
--- * 'dmDeviceClass'
---
--- * 'dmCPUModel'
---
--- * 'dmScreenDensityDpi'
-deviceMetadata
-    :: DeviceMetadata
-deviceMetadata =
-    DeviceMetadata'
-    { _dmProductName = Nothing
-    , _dmGlEsVersion = Nothing
-    , _dmManufacturer = Nothing
-    , _dmScreenWidthPx = Nothing
-    , _dmRamMb = Nothing
-    , _dmCPUMake = Nothing
-    , _dmScreenHeightPx = Nothing
-    , _dmNATivePlatform = Nothing
-    , _dmDeviceClass = Nothing
-    , _dmCPUModel = Nothing
-    , _dmScreenDensityDpi = Nothing
-    }
-
--- | Device model name (e.g. Droid)
-dmProductName :: Lens' DeviceMetadata (Maybe Text)
-dmProductName
-  = lens _dmProductName
-      (\ s a -> s{_dmProductName = a})
-
--- | OpenGL version
-dmGlEsVersion :: Lens' DeviceMetadata (Maybe Int32)
-dmGlEsVersion
-  = lens _dmGlEsVersion
-      (\ s a -> s{_dmGlEsVersion = a})
-      . mapping _Coerce
-
--- | Device manufacturer (e.g. Motorola)
-dmManufacturer :: Lens' DeviceMetadata (Maybe Text)
-dmManufacturer
-  = lens _dmManufacturer
-      (\ s a -> s{_dmManufacturer = a})
-
--- | Screen width in pixels
-dmScreenWidthPx :: Lens' DeviceMetadata (Maybe Int32)
-dmScreenWidthPx
-  = lens _dmScreenWidthPx
-      (\ s a -> s{_dmScreenWidthPx = a})
-      . mapping _Coerce
-
--- | Device RAM in Megabytes e.g. \"2048\"
-dmRamMb :: Lens' DeviceMetadata (Maybe Int32)
-dmRamMb
-  = lens _dmRamMb (\ s a -> s{_dmRamMb = a}) .
-      mapping _Coerce
-
--- | Device CPU make e.g. \"Qualcomm\"
-dmCPUMake :: Lens' DeviceMetadata (Maybe Text)
-dmCPUMake
-  = lens _dmCPUMake (\ s a -> s{_dmCPUMake = a})
-
--- | Screen height in pixels
-dmScreenHeightPx :: Lens' DeviceMetadata (Maybe Int32)
-dmScreenHeightPx
-  = lens _dmScreenHeightPx
-      (\ s a -> s{_dmScreenHeightPx = a})
-      . mapping _Coerce
-
--- | Comma separated list of native platforms (e.g. \"arm\", \"arm7\")
-dmNATivePlatform :: Lens' DeviceMetadata (Maybe Text)
-dmNATivePlatform
-  = lens _dmNATivePlatform
-      (\ s a -> s{_dmNATivePlatform = a})
-
--- | Device class (e.g. tablet)
-dmDeviceClass :: Lens' DeviceMetadata (Maybe Text)
-dmDeviceClass
-  = lens _dmDeviceClass
-      (\ s a -> s{_dmDeviceClass = a})
-
--- | Device CPU model e.g. \"MSM8974\"
-dmCPUModel :: Lens' DeviceMetadata (Maybe Text)
-dmCPUModel
-  = lens _dmCPUModel (\ s a -> s{_dmCPUModel = a})
-
--- | Screen density in DPI
-dmScreenDensityDpi :: Lens' DeviceMetadata (Maybe Int32)
-dmScreenDensityDpi
-  = lens _dmScreenDensityDpi
-      (\ s a -> s{_dmScreenDensityDpi = a})
-      . mapping _Coerce
-
-instance FromJSON DeviceMetadata where
-        parseJSON
-          = withObject "DeviceMetadata"
-              (\ o ->
-                 DeviceMetadata' <$>
-                   (o .:? "productName") <*> (o .:? "glEsVersion") <*>
-                     (o .:? "manufacturer")
-                     <*> (o .:? "screenWidthPx")
-                     <*> (o .:? "ramMb")
-                     <*> (o .:? "cpuMake")
-                     <*> (o .:? "screenHeightPx")
-                     <*> (o .:? "nativePlatform")
-                     <*> (o .:? "deviceClass")
-                     <*> (o .:? "cpuModel")
-                     <*> (o .:? "screenDensityDpi"))
-
-instance ToJSON DeviceMetadata where
-        toJSON DeviceMetadata'{..}
-          = object
-              (catMaybes
-                 [("productName" .=) <$> _dmProductName,
-                  ("glEsVersion" .=) <$> _dmGlEsVersion,
-                  ("manufacturer" .=) <$> _dmManufacturer,
-                  ("screenWidthPx" .=) <$> _dmScreenWidthPx,
-                  ("ramMb" .=) <$> _dmRamMb,
-                  ("cpuMake" .=) <$> _dmCPUMake,
-                  ("screenHeightPx" .=) <$> _dmScreenHeightPx,
-                  ("nativePlatform" .=) <$> _dmNATivePlatform,
-                  ("deviceClass" .=) <$> _dmDeviceClass,
-                  ("cpuModel" .=) <$> _dmCPUModel,
-                  ("screenDensityDpi" .=) <$> _dmScreenDensityDpi])
-
---
--- /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])
-
--- | A VoidedPurchase resource indicates a purchase that was either
--- cancelled\/refunded\/charged-back.
---
--- /See:/ 'voidedPurchase' smart constructor.
-data VoidedPurchase = VoidedPurchase'
-    { _vpKind               :: !Text
-    , _vpPurchaseTimeMillis :: !(Maybe (Textual Int64))
-    , _vpPurchaseToken      :: !(Maybe Text)
-    , _vpVoidedTimeMillis   :: !(Maybe (Textual Int64))
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'VoidedPurchase' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'vpKind'
---
--- * 'vpPurchaseTimeMillis'
---
--- * 'vpPurchaseToken'
---
--- * 'vpVoidedTimeMillis'
-voidedPurchase
-    :: VoidedPurchase
-voidedPurchase =
-    VoidedPurchase'
-    { _vpKind = "androidpublisher#voidedPurchase"
-    , _vpPurchaseTimeMillis = Nothing
-    , _vpPurchaseToken = Nothing
-    , _vpVoidedTimeMillis = Nothing
-    }
-
--- | This kind represents a voided purchase object in the androidpublisher
--- service.
-vpKind :: Lens' VoidedPurchase Text
-vpKind = lens _vpKind (\ s a -> s{_vpKind = a})
-
--- | The time at which the purchase was made, in milliseconds since the epoch
--- (Jan 1, 1970).
-vpPurchaseTimeMillis :: Lens' VoidedPurchase (Maybe Int64)
-vpPurchaseTimeMillis
-  = lens _vpPurchaseTimeMillis
-      (\ s a -> s{_vpPurchaseTimeMillis = a})
-      . mapping _Coerce
-
--- | The token that was generated when a purchase was made. This uniquely
--- identifies a purchase.
-vpPurchaseToken :: Lens' VoidedPurchase (Maybe Text)
-vpPurchaseToken
-  = lens _vpPurchaseToken
-      (\ s a -> s{_vpPurchaseToken = a})
-
--- | The time at which the purchase was cancelled\/refunded\/charged-back, in
--- milliseconds since the epoch (Jan 1, 1970).
-vpVoidedTimeMillis :: Lens' VoidedPurchase (Maybe Int64)
-vpVoidedTimeMillis
-  = lens _vpVoidedTimeMillis
-      (\ s a -> s{_vpVoidedTimeMillis = a})
-      . mapping _Coerce
-
-instance FromJSON VoidedPurchase where
-        parseJSON
-          = withObject "VoidedPurchase"
-              (\ o ->
-                 VoidedPurchase' <$>
-                   (o .:? "kind" .!= "androidpublisher#voidedPurchase")
-                     <*> (o .:? "purchaseTimeMillis")
-                     <*> (o .:? "purchaseToken")
-                     <*> (o .:? "voidedTimeMillis"))
-
-instance ToJSON VoidedPurchase where
-        toJSON VoidedPurchase'{..}
-          = object
-              (catMaybes
-                 [Just ("kind" .= _vpKind),
-                  ("purchaseTimeMillis" .=) <$> _vpPurchaseTimeMillis,
-                  ("purchaseToken" .=) <$> _vpPurchaseToken,
-                  ("voidedTimeMillis" .=) <$> _vpVoidedTimeMillis])
-
---
--- /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,
-                  Just ("kind" .= _iKind)])
+-- /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'
+    { _tTrack    :: !(Maybe Text)
+    , _tReleases :: !(Maybe [TrackRelease])
+    } 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:
+--
+-- * 'tTrack'
+--
+-- * 'tReleases'
+track
+    :: Track
+track =
+    Track'
+    { _tTrack = Nothing
+    , _tReleases = Nothing
+    }
+
+-- | Identifier for this track.
+tTrack :: Lens' Track (Maybe Text)
+tTrack = lens _tTrack (\ s a -> s{_tTrack = a})
+
+-- | A list of all active releases in this track during a read request. On an
+-- update request, it represents desired changes.
+tReleases :: Lens' Track [TrackRelease]
+tReleases
+  = lens _tReleases (\ s a -> s{_tReleases = a}) .
+      _Default
+      . _Coerce
+
+instance FromJSON Track where
+        parseJSON
+          = withObject "Track"
+              (\ o ->
+                 Track' <$>
+                   (o .:? "track") <*> (o .:? "releases" .!= mempty))
+
+instance ToJSON Track where
+        toJSON Track'{..}
+          = object
+              (catMaybes
+                 [("track" .=) <$> _tTrack,
+                  ("releases" .=) <$> _tReleases])
+
+--
+-- /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:/ '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)
+    , _ucThumbsUpCount    :: !(Maybe (Textual Int32))
+    , _ucAppVersionCode   :: !(Maybe (Textual Int32))
+    , _ucThumbsDownCount  :: !(Maybe (Textual Int32))
+    , _ucOriginalText     :: !(Maybe Text)
+    , _ucAppVersionName   :: !(Maybe Text)
+    , _ucReviewerLanguage :: !(Maybe Text)
+    , _ucDeviceMetadata   :: !(Maybe DeviceMetadata)
+    , _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'
+--
+-- * 'ucThumbsUpCount'
+--
+-- * 'ucAppVersionCode'
+--
+-- * 'ucThumbsDownCount'
+--
+-- * 'ucOriginalText'
+--
+-- * 'ucAppVersionName'
+--
+-- * 'ucReviewerLanguage'
+--
+-- * 'ucDeviceMetadata'
+--
+-- * 'ucStarRating'
+--
+-- * 'ucLastModified'
+userComment
+    :: UserComment
+userComment =
+    UserComment'
+    { _ucAndroidOSVersion = Nothing
+    , _ucText = Nothing
+    , _ucDevice = Nothing
+    , _ucThumbsUpCount = Nothing
+    , _ucAppVersionCode = Nothing
+    , _ucThumbsDownCount = Nothing
+    , _ucOriginalText = Nothing
+    , _ucAppVersionName = Nothing
+    , _ucReviewerLanguage = Nothing
+    , _ucDeviceMetadata = 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})
+
+-- | Number of users who have given this review a thumbs up
+ucThumbsUpCount :: Lens' UserComment (Maybe Int32)
+ucThumbsUpCount
+  = lens _ucThumbsUpCount
+      (\ s a -> s{_ucThumbsUpCount = a})
+      . mapping _Coerce
+
+-- | 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
+
+-- | Number of users who have given this review a thumbs down
+ucThumbsDownCount :: Lens' UserComment (Maybe Int32)
+ucThumbsDownCount
+  = lens _ucThumbsDownCount
+      (\ s a -> s{_ucThumbsDownCount = a})
+      . mapping _Coerce
+
+-- | Untranslated text of the review, in the case where the review has been
+-- translated. If the review has not been translated this is left blank.
+ucOriginalText :: Lens' UserComment (Maybe Text)
+ucOriginalText
+  = lens _ucOriginalText
+      (\ s a -> s{_ucOriginalText = a})
+
+-- | 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})
+
+-- | Some information about the characteristics of the user\'s device
+ucDeviceMetadata :: Lens' UserComment (Maybe DeviceMetadata)
+ucDeviceMetadata
+  = lens _ucDeviceMetadata
+      (\ s a -> s{_ucDeviceMetadata = 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 .:? "thumbsUpCount")
+                     <*> (o .:? "appVersionCode")
+                     <*> (o .:? "thumbsDownCount")
+                     <*> (o .:? "originalText")
+                     <*> (o .:? "appVersionName")
+                     <*> (o .:? "reviewerLanguage")
+                     <*> (o .:? "deviceMetadata")
+                     <*> (o .:? "starRating")
+                     <*> (o .:? "lastModified"))
+
+instance ToJSON UserComment where
+        toJSON UserComment'{..}
+          = object
+              (catMaybes
+                 [("androidOsVersion" .=) <$> _ucAndroidOSVersion,
+                  ("text" .=) <$> _ucText, ("device" .=) <$> _ucDevice,
+                  ("thumbsUpCount" .=) <$> _ucThumbsUpCount,
+                  ("appVersionCode" .=) <$> _ucAppVersionCode,
+                  ("thumbsDownCount" .=) <$> _ucThumbsDownCount,
+                  ("originalText" .=) <$> _ucOriginalText,
+                  ("appVersionName" .=) <$> _ucAppVersionName,
+                  ("reviewerLanguage" .=) <$> _ucReviewerLanguage,
+                  ("deviceMetadata" .=) <$> _ucDeviceMetadata,
+                  ("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])
+
+-- | Information provided by the user when they complete the subscription
+-- cancellation flow (cancellation reason survey).
+--
+-- /See:/ 'subscriptionCancelSurveyResult' smart constructor.
+data SubscriptionCancelSurveyResult = SubscriptionCancelSurveyResult'
+    { _scsrCancelSurveyReason    :: !(Maybe (Textual Int32))
+    , _scsrUserInputCancelReason :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'SubscriptionCancelSurveyResult' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'scsrCancelSurveyReason'
+--
+-- * 'scsrUserInputCancelReason'
+subscriptionCancelSurveyResult
+    :: SubscriptionCancelSurveyResult
+subscriptionCancelSurveyResult =
+    SubscriptionCancelSurveyResult'
+    { _scsrCancelSurveyReason = Nothing
+    , _scsrUserInputCancelReason = Nothing
+    }
+
+-- | The cancellation reason the user chose in the survey. Possible values
+-- are: - Other - I don\'t use this service enough - Technical issues -
+-- Cost-related reasons - I found a better app
+scsrCancelSurveyReason :: Lens' SubscriptionCancelSurveyResult (Maybe Int32)
+scsrCancelSurveyReason
+  = lens _scsrCancelSurveyReason
+      (\ s a -> s{_scsrCancelSurveyReason = a})
+      . mapping _Coerce
+
+-- | The customized input cancel reason from the user. Only present when
+-- cancelReason is 0.
+scsrUserInputCancelReason :: Lens' SubscriptionCancelSurveyResult (Maybe Text)
+scsrUserInputCancelReason
+  = lens _scsrUserInputCancelReason
+      (\ s a -> s{_scsrUserInputCancelReason = a})
+
+instance FromJSON SubscriptionCancelSurveyResult
+         where
+        parseJSON
+          = withObject "SubscriptionCancelSurveyResult"
+              (\ o ->
+                 SubscriptionCancelSurveyResult' <$>
+                   (o .:? "cancelSurveyReason") <*>
+                     (o .:? "userInputCancelReason"))
+
+instance ToJSON SubscriptionCancelSurveyResult where
+        toJSON SubscriptionCancelSurveyResult'{..}
+          = object
+              (catMaybes
+                 [("cancelSurveyReason" .=) <$>
+                    _scsrCancelSurveyReason,
+                  ("userInputCancelReason" .=) <$>
+                    _scsrUserInputCancelReason])
+
+--
+-- /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))
+    , _ppPurchaseType       :: !(Maybe (Textual Int32))
+    , _ppDeveloperPayload   :: !(Maybe Text)
+    , _ppOrderId            :: !(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'
+--
+-- * 'ppPurchaseType'
+--
+-- * 'ppDeveloperPayload'
+--
+-- * 'ppOrderId'
+productPurchase
+    :: ProductPurchase
+productPurchase =
+    ProductPurchase'
+    { _ppPurchaseState = Nothing
+    , _ppConsumptionState = Nothing
+    , _ppKind = "androidpublisher#productPurchase"
+    , _ppPurchaseTimeMillis = Nothing
+    , _ppPurchaseType = Nothing
+    , _ppDeveloperPayload = Nothing
+    , _ppOrderId = Nothing
+    }
+
+-- | The purchase state of the order. Possible values are: - Purchased -
+-- Canceled
+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
+
+-- | The type of purchase of the inapp product. This field is only set if
+-- this purchase was not made using the standard in-app billing flow.
+-- Possible values are: - Test (i.e. purchased from a license testing
+-- account) - Promo (i.e. purchased using a promo code)
+ppPurchaseType :: Lens' ProductPurchase (Maybe Int32)
+ppPurchaseType
+  = lens _ppPurchaseType
+      (\ s a -> s{_ppPurchaseType = 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})
+
+-- | The order id associated with the purchase of the inapp product.
+ppOrderId :: Lens' ProductPurchase (Maybe Text)
+ppOrderId
+  = lens _ppOrderId (\ s a -> s{_ppOrderId = a})
+
+instance FromJSON ProductPurchase where
+        parseJSON
+          = withObject "ProductPurchase"
+              (\ o ->
+                 ProductPurchase' <$>
+                   (o .:? "purchaseState") <*>
+                     (o .:? "consumptionState")
+                     <*>
+                     (o .:? "kind" .!= "androidpublisher#productPurchase")
+                     <*> (o .:? "purchaseTimeMillis")
+                     <*> (o .:? "purchaseType")
+                     <*> (o .:? "developerPayload")
+                     <*> (o .:? "orderId"))
+
+instance ToJSON ProductPurchase where
+        toJSON ProductPurchase'{..}
+          = object
+              (catMaybes
+                 [("purchaseState" .=) <$> _ppPurchaseState,
+                  ("consumptionState" .=) <$> _ppConsumptionState,
+                  Just ("kind" .= _ppKind),
+                  ("purchaseTimeMillis" .=) <$> _ppPurchaseTimeMillis,
+                  ("purchaseType" .=) <$> _ppPurchaseType,
+                  ("developerPayload" .=) <$> _ppDeveloperPayload,
+                  ("orderId" .=) <$> _ppOrderId])
+
+--
+-- /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])
+
+-- | A SubscriptionPurchase resource indicates the status of a user\'s
+-- subscription purchase.
+--
+-- /See:/ 'subscriptionPurchase' smart constructor.
+data SubscriptionPurchase = SubscriptionPurchase'
+    { _spGivenName                  :: !(Maybe Text)
+    , _spAutoResumeTimeMillis       :: !(Maybe (Textual Int64))
+    , _spUserCancellationTimeMillis :: !(Maybe (Textual Int64))
+    , _spPaymentState               :: !(Maybe (Textual Int32))
+    , _spKind                       :: !Text
+    , _spPurchaseType               :: !(Maybe (Textual Int32))
+    , _spPriceChange                :: !(Maybe SubscriptionPriceChange)
+    , _spProFileId                  :: !(Maybe Text)
+    , _spLinkedPurchaseToken        :: !(Maybe Text)
+    , _spFamilyName                 :: !(Maybe Text)
+    , _spProFileName                :: !(Maybe Text)
+    , _spExpiryTimeMillis           :: !(Maybe (Textual Int64))
+    , _spAutoRenewing               :: !(Maybe Bool)
+    , _spPriceCurrencyCode          :: !(Maybe Text)
+    , _spEmailAddress               :: !(Maybe Text)
+    , _spCancelReason               :: !(Maybe (Textual Int32))
+    , _spCountryCode                :: !(Maybe Text)
+    , _spDeveloperPayload           :: !(Maybe Text)
+    , _spPriceAmountMicros          :: !(Maybe (Textual Int64))
+    , _spStartTimeMillis            :: !(Maybe (Textual Int64))
+    , _spOrderId                    :: !(Maybe Text)
+    , _spCancelSurveyResult         :: !(Maybe SubscriptionCancelSurveyResult)
+    } 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:
+--
+-- * 'spGivenName'
+--
+-- * 'spAutoResumeTimeMillis'
+--
+-- * 'spUserCancellationTimeMillis'
+--
+-- * 'spPaymentState'
+--
+-- * 'spKind'
+--
+-- * 'spPurchaseType'
+--
+-- * 'spPriceChange'
+--
+-- * 'spProFileId'
+--
+-- * 'spLinkedPurchaseToken'
+--
+-- * 'spFamilyName'
+--
+-- * 'spProFileName'
+--
+-- * 'spExpiryTimeMillis'
+--
+-- * 'spAutoRenewing'
+--
+-- * 'spPriceCurrencyCode'
+--
+-- * 'spEmailAddress'
+--
+-- * 'spCancelReason'
+--
+-- * 'spCountryCode'
+--
+-- * 'spDeveloperPayload'
+--
+-- * 'spPriceAmountMicros'
+--
+-- * 'spStartTimeMillis'
+--
+-- * 'spOrderId'
+--
+-- * 'spCancelSurveyResult'
+subscriptionPurchase
+    :: SubscriptionPurchase
+subscriptionPurchase =
+    SubscriptionPurchase'
+    { _spGivenName = Nothing
+    , _spAutoResumeTimeMillis = Nothing
+    , _spUserCancellationTimeMillis = Nothing
+    , _spPaymentState = Nothing
+    , _spKind = "androidpublisher#subscriptionPurchase"
+    , _spPurchaseType = Nothing
+    , _spPriceChange = Nothing
+    , _spProFileId = Nothing
+    , _spLinkedPurchaseToken = Nothing
+    , _spFamilyName = Nothing
+    , _spProFileName = Nothing
+    , _spExpiryTimeMillis = Nothing
+    , _spAutoRenewing = Nothing
+    , _spPriceCurrencyCode = Nothing
+    , _spEmailAddress = Nothing
+    , _spCancelReason = Nothing
+    , _spCountryCode = Nothing
+    , _spDeveloperPayload = Nothing
+    , _spPriceAmountMicros = Nothing
+    , _spStartTimeMillis = Nothing
+    , _spOrderId = Nothing
+    , _spCancelSurveyResult = Nothing
+    }
+
+-- | The given name of the user when the subscription was purchased. Only
+-- present for purchases made with \'Subscribe with Google\'.
+spGivenName :: Lens' SubscriptionPurchase (Maybe Text)
+spGivenName
+  = lens _spGivenName (\ s a -> s{_spGivenName = a})
+
+-- | Time at which the subscription will be automatically resumed, in
+-- milliseconds since the Epoch. Only present if the user has requested to
+-- pause the subscription.
+spAutoResumeTimeMillis :: Lens' SubscriptionPurchase (Maybe Int64)
+spAutoResumeTimeMillis
+  = lens _spAutoResumeTimeMillis
+      (\ s a -> s{_spAutoResumeTimeMillis = a})
+      . mapping _Coerce
+
+-- | The time at which the subscription was canceled by the user, in
+-- milliseconds since the epoch. Only present if cancelReason is 0.
+spUserCancellationTimeMillis :: Lens' SubscriptionPurchase (Maybe Int64)
+spUserCancellationTimeMillis
+  = lens _spUserCancellationTimeMillis
+      (\ s a -> s{_spUserCancellationTimeMillis = a})
+      . mapping _Coerce
+
+-- | The payment state of the subscription. Possible values are: - Payment
+-- pending - Payment received - Free trial - Pending deferred
+-- upgrade\/downgrade
+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})
+
+-- | The type of purchase of the subscription. This field is only set if this
+-- purchase was not made using the standard in-app billing flow. Possible
+-- values are: - Test (i.e. purchased from a license testing account)
+spPurchaseType :: Lens' SubscriptionPurchase (Maybe Int32)
+spPurchaseType
+  = lens _spPurchaseType
+      (\ s a -> s{_spPurchaseType = a})
+      . mapping _Coerce
+
+-- | The latest price change information available. This is present only when
+-- there is an upcoming price change for the subscription yet to be
+-- applied. Once the subscription renews with the new price or the
+-- subscription is canceled, no price change information will be returned.
+spPriceChange :: Lens' SubscriptionPurchase (Maybe SubscriptionPriceChange)
+spPriceChange
+  = lens _spPriceChange
+      (\ s a -> s{_spPriceChange = a})
+
+-- | The profile id of the user when the subscription was purchased. Only
+-- present for purchases made with \'Subscribe with Google\'.
+spProFileId :: Lens' SubscriptionPurchase (Maybe Text)
+spProFileId
+  = lens _spProFileId (\ s a -> s{_spProFileId = a})
+
+-- | The purchase token of the originating purchase if this subscription is
+-- one of the following: - Re-signup of a canceled but non-lapsed
+-- subscription - Upgrade\/downgrade from a previous subscription For
+-- example, suppose a user originally signs up and you receive purchase
+-- token X, then the user cancels and goes through the resignup flow
+-- (before their subscription lapses) and you receive purchase token Y, and
+-- finally the user upgrades their subscription and you receive purchase
+-- token Z. If you call this API with purchase token Z, this field will be
+-- set to Y. If you call this API with purchase token Y, this field will be
+-- set to X. If you call this API with purchase token X, this field will
+-- not be set.
+spLinkedPurchaseToken :: Lens' SubscriptionPurchase (Maybe Text)
+spLinkedPurchaseToken
+  = lens _spLinkedPurchaseToken
+      (\ s a -> s{_spLinkedPurchaseToken = a})
+
+-- | The family name of the user when the subscription was purchased. Only
+-- present for purchases made with \'Subscribe with Google\'.
+spFamilyName :: Lens' SubscriptionPurchase (Maybe Text)
+spFamilyName
+  = lens _spFamilyName (\ s a -> s{_spFamilyName = a})
+
+-- | The profile name of the user when the subscription was purchased. Only
+-- present for purchases made with \'Subscribe with Google\'.
+spProFileName :: Lens' SubscriptionPurchase (Maybe Text)
+spProFileName
+  = lens _spProFileName
+      (\ s a -> s{_spProFileName = a})
+
+-- | Time at which the subscription will expire, in milliseconds since the
+-- 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 email address of the user when the subscription was purchased. Only
+-- present for purchases made with \'Subscribe with Google\'.
+spEmailAddress :: Lens' SubscriptionPurchase (Maybe Text)
+spEmailAddress
+  = lens _spEmailAddress
+      (\ s a -> s{_spEmailAddress = a})
+
+-- | The reason why a subscription was canceled or is not auto-renewing.
+-- Possible values are: - User canceled the subscription - Subscription was
+-- canceled by the system, for example because of a billing problem -
+-- Subscription was replaced with a new subscription - Subscription was
+-- canceled by the developer
+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 represents 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 the
+-- Epoch.
+spStartTimeMillis :: Lens' SubscriptionPurchase (Maybe Int64)
+spStartTimeMillis
+  = lens _spStartTimeMillis
+      (\ s a -> s{_spStartTimeMillis = a})
+      . mapping _Coerce
+
+-- | The order id of the latest recurring order associated with the purchase
+-- of the subscription.
+spOrderId :: Lens' SubscriptionPurchase (Maybe Text)
+spOrderId
+  = lens _spOrderId (\ s a -> s{_spOrderId = a})
+
+-- | Information provided by the user when they complete the subscription
+-- cancellation flow (cancellation reason survey).
+spCancelSurveyResult :: Lens' SubscriptionPurchase (Maybe SubscriptionCancelSurveyResult)
+spCancelSurveyResult
+  = lens _spCancelSurveyResult
+      (\ s a -> s{_spCancelSurveyResult = a})
+
+instance FromJSON SubscriptionPurchase where
+        parseJSON
+          = withObject "SubscriptionPurchase"
+              (\ o ->
+                 SubscriptionPurchase' <$>
+                   (o .:? "givenName") <*>
+                     (o .:? "autoResumeTimeMillis")
+                     <*> (o .:? "userCancellationTimeMillis")
+                     <*> (o .:? "paymentState")
+                     <*>
+                     (o .:? "kind" .!=
+                        "androidpublisher#subscriptionPurchase")
+                     <*> (o .:? "purchaseType")
+                     <*> (o .:? "priceChange")
+                     <*> (o .:? "profileId")
+                     <*> (o .:? "linkedPurchaseToken")
+                     <*> (o .:? "familyName")
+                     <*> (o .:? "profileName")
+                     <*> (o .:? "expiryTimeMillis")
+                     <*> (o .:? "autoRenewing")
+                     <*> (o .:? "priceCurrencyCode")
+                     <*> (o .:? "emailAddress")
+                     <*> (o .:? "cancelReason")
+                     <*> (o .:? "countryCode")
+                     <*> (o .:? "developerPayload")
+                     <*> (o .:? "priceAmountMicros")
+                     <*> (o .:? "startTimeMillis")
+                     <*> (o .:? "orderId")
+                     <*> (o .:? "cancelSurveyResult"))
+
+instance ToJSON SubscriptionPurchase where
+        toJSON SubscriptionPurchase'{..}
+          = object
+              (catMaybes
+                 [("givenName" .=) <$> _spGivenName,
+                  ("autoResumeTimeMillis" .=) <$>
+                    _spAutoResumeTimeMillis,
+                  ("userCancellationTimeMillis" .=) <$>
+                    _spUserCancellationTimeMillis,
+                  ("paymentState" .=) <$> _spPaymentState,
+                  Just ("kind" .= _spKind),
+                  ("purchaseType" .=) <$> _spPurchaseType,
+                  ("priceChange" .=) <$> _spPriceChange,
+                  ("profileId" .=) <$> _spProFileId,
+                  ("linkedPurchaseToken" .=) <$>
+                    _spLinkedPurchaseToken,
+                  ("familyName" .=) <$> _spFamilyName,
+                  ("profileName" .=) <$> _spProFileName,
+                  ("expiryTimeMillis" .=) <$> _spExpiryTimeMillis,
+                  ("autoRenewing" .=) <$> _spAutoRenewing,
+                  ("priceCurrencyCode" .=) <$> _spPriceCurrencyCode,
+                  ("emailAddress" .=) <$> _spEmailAddress,
+                  ("cancelReason" .=) <$> _spCancelReason,
+                  ("countryCode" .=) <$> _spCountryCode,
+                  ("developerPayload" .=) <$> _spDeveloperPayload,
+                  ("priceAmountMicros" .=) <$> _spPriceAmountMicros,
+                  ("startTimeMillis" .=) <$> _spStartTimeMillis,
+                  ("orderId" .=) <$> _spOrderId,
+                  ("cancelSurveyResult" .=) <$> _spCancelSurveyResult])
+
+-- | Contains the price change information for a subscription that can be
+-- used to control the user journey for the price change in the app. This
+-- can be in the form of seeking confirmation from the user or tailoring
+-- the experience for a successful conversion.
+--
+-- /See:/ 'subscriptionPriceChange' smart constructor.
+data SubscriptionPriceChange = SubscriptionPriceChange'
+    { _spcState    :: !(Maybe (Textual Int32))
+    , _spcNewPrice :: !(Maybe Price)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'SubscriptionPriceChange' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'spcState'
+--
+-- * 'spcNewPrice'
+subscriptionPriceChange
+    :: SubscriptionPriceChange
+subscriptionPriceChange =
+    SubscriptionPriceChange'
+    { _spcState = Nothing
+    , _spcNewPrice = Nothing
+    }
+
+-- | The current state of the price change. Possible values are: -
+-- Outstanding: State for a pending price change waiting for the user to
+-- agree. In this state, you can optionally seek confirmation from the user
+-- using the In-App API. - Accepted: State for an accepted price change
+-- that the subscription will renew with unless it\'s canceled. The price
+-- change takes effect on a future date when the subscription renews. Note
+-- that the change might not occur when the subscription is renewed next.
+spcState :: Lens' SubscriptionPriceChange (Maybe Int32)
+spcState
+  = lens _spcState (\ s a -> s{_spcState = a}) .
+      mapping _Coerce
+
+-- | The new price the subscription will renew with if the price change is
+-- accepted by the user.
+spcNewPrice :: Lens' SubscriptionPriceChange (Maybe Price)
+spcNewPrice
+  = lens _spcNewPrice (\ s a -> s{_spcNewPrice = a})
+
+instance FromJSON SubscriptionPriceChange where
+        parseJSON
+          = withObject "SubscriptionPriceChange"
+              (\ o ->
+                 SubscriptionPriceChange' <$>
+                   (o .:? "state") <*> (o .:? "newPrice"))
+
+instance ToJSON SubscriptionPriceChange where
+        toJSON SubscriptionPriceChange'{..}
+          = object
+              (catMaybes
+                 [("state" .=) <$> _spcState,
+                  ("newPrice" .=) <$> _spcNewPrice])
+
+--
+-- /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
+
+-- | 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:/ 'trackRelease' smart constructor.
+data TrackRelease = TrackRelease'
+    { _trVersionCodes :: !(Maybe [Textual Int64])
+    , _trStatus       :: !(Maybe Text)
+    , _trReleaseNotes :: !(Maybe [LocalizedText])
+    , _trUserFraction :: !(Maybe (Textual Double))
+    , _trName         :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'TrackRelease' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'trVersionCodes'
+--
+-- * 'trStatus'
+--
+-- * 'trReleaseNotes'
+--
+-- * 'trUserFraction'
+--
+-- * 'trName'
+trackRelease
+    :: TrackRelease
+trackRelease =
+    TrackRelease'
+    { _trVersionCodes = Nothing
+    , _trStatus = Nothing
+    , _trReleaseNotes = Nothing
+    , _trUserFraction = Nothing
+    , _trName = Nothing
+    }
+
+-- | A list of all version codes of APKs that will be exposed to the users of
+-- this track when this release is rolled out. Note that this list should
+-- contain all versions you wish to be active, including those you wish to
+-- retain from previous releases.
+trVersionCodes :: Lens' TrackRelease [Int64]
+trVersionCodes
+  = lens _trVersionCodes
+      (\ s a -> s{_trVersionCodes = a})
+      . _Default
+      . _Coerce
+
+-- | The desired status of this release.
+trStatus :: Lens' TrackRelease (Maybe Text)
+trStatus = lens _trStatus (\ s a -> s{_trStatus = a})
+
+-- | The description of what is new in the app in this release.
+trReleaseNotes :: Lens' TrackRelease [LocalizedText]
+trReleaseNotes
+  = lens _trReleaseNotes
+      (\ s a -> s{_trReleaseNotes = a})
+      . _Default
+      . _Coerce
+
+-- | Fraction of users who are eligible to receive the release. 0 \< fraction
+-- \< 1. To be set, release status must be \"inProgress\" or \"halted\".
+trUserFraction :: Lens' TrackRelease (Maybe Double)
+trUserFraction
+  = lens _trUserFraction
+      (\ s a -> s{_trUserFraction = a})
+      . mapping _Coerce
+
+-- | The release name, used to identify this release in the Play Console UI.
+-- Not required to be unique. This is optional, if not set it will be
+-- generated from the version_name in the APKs.
+trName :: Lens' TrackRelease (Maybe Text)
+trName = lens _trName (\ s a -> s{_trName = a})
+
+instance FromJSON TrackRelease where
+        parseJSON
+          = withObject "TrackRelease"
+              (\ o ->
+                 TrackRelease' <$>
+                   (o .:? "versionCodes" .!= mempty) <*>
+                     (o .:? "status")
+                     <*> (o .:? "releaseNotes" .!= mempty)
+                     <*> (o .:? "userFraction")
+                     <*> (o .:? "name"))
+
+instance ToJSON TrackRelease where
+        toJSON TrackRelease'{..}
+          = object
+              (catMaybes
+                 [("versionCodes" .=) <$> _trVersionCodes,
+                  ("status" .=) <$> _trStatus,
+                  ("releaseNotes" .=) <$> _trReleaseNotes,
+                  ("userFraction" .=) <$> _trUserFraction,
+                  ("name" .=) <$> _trName])
+
+--
+-- /See:/ 'bundle' smart constructor.
+data Bundle = Bundle'
+    { _bVersionCode :: !(Maybe (Textual Int32))
+    , _bSha1        :: !(Maybe Text)
+    , _bSha256      :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'Bundle' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'bVersionCode'
+--
+-- * 'bSha1'
+--
+-- * 'bSha256'
+bundle
+    :: Bundle
+bundle =
+    Bundle'
+    { _bVersionCode = Nothing
+    , _bSha1 = Nothing
+    , _bSha256 = Nothing
+    }
+
+-- | The version code of the Android App Bundle. As specified in the Android
+-- App Bundle\'s base module APK manifest file.
+bVersionCode :: Lens' Bundle (Maybe Int32)
+bVersionCode
+  = lens _bVersionCode (\ s a -> s{_bVersionCode = a})
+      . mapping _Coerce
+
+-- | A sha1 hash of the upload payload, encoded as a hex string and matching
+-- the output of the sha1sum command.
+bSha1 :: Lens' Bundle (Maybe Text)
+bSha1 = lens _bSha1 (\ s a -> s{_bSha1 = a})
+
+-- | A sha256 hash of the upload payload, encoded as a hex string and
+-- matching the output of the sha256sum command.
+bSha256 :: Lens' Bundle (Maybe Text)
+bSha256 = lens _bSha256 (\ s a -> s{_bSha256 = a})
+
+instance FromJSON Bundle where
+        parseJSON
+          = withObject "Bundle"
+              (\ o ->
+                 Bundle' <$>
+                   (o .:? "versionCode") <*> (o .:? "sha1") <*>
+                     (o .:? "sha256"))
+
+instance ToJSON Bundle where
+        toJSON Bundle'{..}
+          = object
+              (catMaybes
+                 [("versionCode" .=) <$> _bVersionCode,
+                  ("sha1" .=) <$> _bSha1, ("sha256" .=) <$> _bSha256])
+
+-- | Represents a deobfuscation file.
+--
+-- /See:/ 'deobfuscationFile' smart constructor.
+newtype DeobfuscationFile = DeobfuscationFile'
+    { _dfSymbolType :: Maybe Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'DeobfuscationFile' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'dfSymbolType'
+deobfuscationFile
+    :: DeobfuscationFile
+deobfuscationFile =
+    DeobfuscationFile'
+    { _dfSymbolType = Nothing
+    }
+
+-- | The type of the deobfuscation file.
+dfSymbolType :: Lens' DeobfuscationFile (Maybe Text)
+dfSymbolType
+  = lens _dfSymbolType (\ s a -> s{_dfSymbolType = a})
+
+instance FromJSON DeobfuscationFile where
+        parseJSON
+          = withObject "DeobfuscationFile"
+              (\ o -> DeobfuscationFile' <$> (o .:? "symbolType"))
+
+instance ToJSON DeobfuscationFile where
+        toJSON DeobfuscationFile'{..}
+          = object
+              (catMaybes [("symbolType" .=) <$> _dfSymbolType])
+
+--
+-- /See:/ 'voidedPurchasesListResponse' smart constructor.
+data VoidedPurchasesListResponse = VoidedPurchasesListResponse'
+    { _vplrTokenPagination :: !(Maybe TokenPagination)
+    , _vplrPageInfo        :: !(Maybe PageInfo)
+    , _vplrVoidedPurchases :: !(Maybe [VoidedPurchase])
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'VoidedPurchasesListResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'vplrTokenPagination'
+--
+-- * 'vplrPageInfo'
+--
+-- * 'vplrVoidedPurchases'
+voidedPurchasesListResponse
+    :: VoidedPurchasesListResponse
+voidedPurchasesListResponse =
+    VoidedPurchasesListResponse'
+    { _vplrTokenPagination = Nothing
+    , _vplrPageInfo = Nothing
+    , _vplrVoidedPurchases = Nothing
+    }
+
+vplrTokenPagination :: Lens' VoidedPurchasesListResponse (Maybe TokenPagination)
+vplrTokenPagination
+  = lens _vplrTokenPagination
+      (\ s a -> s{_vplrTokenPagination = a})
+
+vplrPageInfo :: Lens' VoidedPurchasesListResponse (Maybe PageInfo)
+vplrPageInfo
+  = lens _vplrPageInfo (\ s a -> s{_vplrPageInfo = a})
+
+vplrVoidedPurchases :: Lens' VoidedPurchasesListResponse [VoidedPurchase]
+vplrVoidedPurchases
+  = lens _vplrVoidedPurchases
+      (\ s a -> s{_vplrVoidedPurchases = a})
+      . _Default
+      . _Coerce
+
+instance FromJSON VoidedPurchasesListResponse where
+        parseJSON
+          = withObject "VoidedPurchasesListResponse"
+              (\ o ->
+                 VoidedPurchasesListResponse' <$>
+                   (o .:? "tokenPagination") <*> (o .:? "pageInfo") <*>
+                     (o .:? "voidedPurchases" .!= mempty))
+
+instance ToJSON VoidedPurchasesListResponse where
+        toJSON VoidedPurchasesListResponse'{..}
+          = object
+              (catMaybes
+                 [("tokenPagination" .=) <$> _vplrTokenPagination,
+                  ("pageInfo" .=) <$> _vplrPageInfo,
+                  ("voidedPurchases" .=) <$> _vplrVoidedPurchases])
+
+--
+-- /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:/ 'deobfuscationFilesUploadResponse' smart constructor.
+newtype DeobfuscationFilesUploadResponse = DeobfuscationFilesUploadResponse'
+    { _dfurDeobfuscationFile :: Maybe DeobfuscationFile
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'DeobfuscationFilesUploadResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'dfurDeobfuscationFile'
+deobfuscationFilesUploadResponse
+    :: DeobfuscationFilesUploadResponse
+deobfuscationFilesUploadResponse =
+    DeobfuscationFilesUploadResponse'
+    { _dfurDeobfuscationFile = Nothing
+    }
+
+dfurDeobfuscationFile :: Lens' DeobfuscationFilesUploadResponse (Maybe DeobfuscationFile)
+dfurDeobfuscationFile
+  = lens _dfurDeobfuscationFile
+      (\ s a -> s{_dfurDeobfuscationFile = a})
+
+instance FromJSON DeobfuscationFilesUploadResponse
+         where
+        parseJSON
+          = withObject "DeobfuscationFilesUploadResponse"
+              (\ o ->
+                 DeobfuscationFilesUploadResponse' <$>
+                   (o .:? "deobfuscationFile"))
+
+instance ToJSON DeobfuscationFilesUploadResponse
+         where
+        toJSON DeobfuscationFilesUploadResponse'{..}
+          = object
+              (catMaybes
+                 [("deobfuscationFile" .=) <$>
+                    _dfurDeobfuscationFile])
+
+--
+-- /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:/ 'localizedText' smart constructor.
+data LocalizedText = LocalizedText'
+    { _ltText     :: !(Maybe Text)
+    , _ltLanguage :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'LocalizedText' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'ltText'
+--
+-- * 'ltLanguage'
+localizedText
+    :: LocalizedText
+localizedText =
+    LocalizedText'
+    { _ltText = Nothing
+    , _ltLanguage = Nothing
+    }
+
+-- | The text in the given \`language\`.
+ltText :: Lens' LocalizedText (Maybe Text)
+ltText = lens _ltText (\ s a -> s{_ltText = a})
+
+-- | The language code, in BCP 47 format (eg \"en-US\").
+ltLanguage :: Lens' LocalizedText (Maybe Text)
+ltLanguage
+  = lens _ltLanguage (\ s a -> s{_ltLanguage = a})
+
+instance FromJSON LocalizedText where
+        parseJSON
+          = withObject "LocalizedText"
+              (\ o ->
+                 LocalizedText' <$>
+                   (o .:? "text") <*> (o .:? "language"))
+
+instance ToJSON LocalizedText where
+        toJSON LocalizedText'{..}
+          = object
+              (catMaybes
+                 [("text" .=) <$> _ltText,
+                  ("language" .=) <$> _ltLanguage])
+
+--
+-- /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:/ '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 to assign to the subscription, in
+-- milliseconds since the Epoch. The given time must be later\/greater than
+-- 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:/ 'deviceMetadata' smart constructor.
+data DeviceMetadata = DeviceMetadata'
+    { _dmProductName      :: !(Maybe Text)
+    , _dmGlEsVersion      :: !(Maybe (Textual Int32))
+    , _dmManufacturer     :: !(Maybe Text)
+    , _dmScreenWidthPx    :: !(Maybe (Textual Int32))
+    , _dmRamMb            :: !(Maybe (Textual Int32))
+    , _dmCPUMake          :: !(Maybe Text)
+    , _dmScreenHeightPx   :: !(Maybe (Textual Int32))
+    , _dmNATivePlatform   :: !(Maybe Text)
+    , _dmDeviceClass      :: !(Maybe Text)
+    , _dmCPUModel         :: !(Maybe Text)
+    , _dmScreenDensityDpi :: !(Maybe (Textual Int32))
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'DeviceMetadata' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'dmProductName'
+--
+-- * 'dmGlEsVersion'
+--
+-- * 'dmManufacturer'
+--
+-- * 'dmScreenWidthPx'
+--
+-- * 'dmRamMb'
+--
+-- * 'dmCPUMake'
+--
+-- * 'dmScreenHeightPx'
+--
+-- * 'dmNATivePlatform'
+--
+-- * 'dmDeviceClass'
+--
+-- * 'dmCPUModel'
+--
+-- * 'dmScreenDensityDpi'
+deviceMetadata
+    :: DeviceMetadata
+deviceMetadata =
+    DeviceMetadata'
+    { _dmProductName = Nothing
+    , _dmGlEsVersion = Nothing
+    , _dmManufacturer = Nothing
+    , _dmScreenWidthPx = Nothing
+    , _dmRamMb = Nothing
+    , _dmCPUMake = Nothing
+    , _dmScreenHeightPx = Nothing
+    , _dmNATivePlatform = Nothing
+    , _dmDeviceClass = Nothing
+    , _dmCPUModel = Nothing
+    , _dmScreenDensityDpi = Nothing
+    }
+
+-- | Device model name (e.g. Droid)
+dmProductName :: Lens' DeviceMetadata (Maybe Text)
+dmProductName
+  = lens _dmProductName
+      (\ s a -> s{_dmProductName = a})
+
+-- | OpenGL version
+dmGlEsVersion :: Lens' DeviceMetadata (Maybe Int32)
+dmGlEsVersion
+  = lens _dmGlEsVersion
+      (\ s a -> s{_dmGlEsVersion = a})
+      . mapping _Coerce
+
+-- | Device manufacturer (e.g. Motorola)
+dmManufacturer :: Lens' DeviceMetadata (Maybe Text)
+dmManufacturer
+  = lens _dmManufacturer
+      (\ s a -> s{_dmManufacturer = a})
+
+-- | Screen width in pixels
+dmScreenWidthPx :: Lens' DeviceMetadata (Maybe Int32)
+dmScreenWidthPx
+  = lens _dmScreenWidthPx
+      (\ s a -> s{_dmScreenWidthPx = a})
+      . mapping _Coerce
+
+-- | Device RAM in Megabytes e.g. \"2048\"
+dmRamMb :: Lens' DeviceMetadata (Maybe Int32)
+dmRamMb
+  = lens _dmRamMb (\ s a -> s{_dmRamMb = a}) .
+      mapping _Coerce
+
+-- | Device CPU make e.g. \"Qualcomm\"
+dmCPUMake :: Lens' DeviceMetadata (Maybe Text)
+dmCPUMake
+  = lens _dmCPUMake (\ s a -> s{_dmCPUMake = a})
+
+-- | Screen height in pixels
+dmScreenHeightPx :: Lens' DeviceMetadata (Maybe Int32)
+dmScreenHeightPx
+  = lens _dmScreenHeightPx
+      (\ s a -> s{_dmScreenHeightPx = a})
+      . mapping _Coerce
+
+-- | Comma separated list of native platforms (e.g. \"arm\", \"arm7\")
+dmNATivePlatform :: Lens' DeviceMetadata (Maybe Text)
+dmNATivePlatform
+  = lens _dmNATivePlatform
+      (\ s a -> s{_dmNATivePlatform = a})
+
+-- | Device class (e.g. tablet)
+dmDeviceClass :: Lens' DeviceMetadata (Maybe Text)
+dmDeviceClass
+  = lens _dmDeviceClass
+      (\ s a -> s{_dmDeviceClass = a})
+
+-- | Device CPU model e.g. \"MSM8974\"
+dmCPUModel :: Lens' DeviceMetadata (Maybe Text)
+dmCPUModel
+  = lens _dmCPUModel (\ s a -> s{_dmCPUModel = a})
+
+-- | Screen density in DPI
+dmScreenDensityDpi :: Lens' DeviceMetadata (Maybe Int32)
+dmScreenDensityDpi
+  = lens _dmScreenDensityDpi
+      (\ s a -> s{_dmScreenDensityDpi = a})
+      . mapping _Coerce
+
+instance FromJSON DeviceMetadata where
+        parseJSON
+          = withObject "DeviceMetadata"
+              (\ o ->
+                 DeviceMetadata' <$>
+                   (o .:? "productName") <*> (o .:? "glEsVersion") <*>
+                     (o .:? "manufacturer")
+                     <*> (o .:? "screenWidthPx")
+                     <*> (o .:? "ramMb")
+                     <*> (o .:? "cpuMake")
+                     <*> (o .:? "screenHeightPx")
+                     <*> (o .:? "nativePlatform")
+                     <*> (o .:? "deviceClass")
+                     <*> (o .:? "cpuModel")
+                     <*> (o .:? "screenDensityDpi"))
+
+instance ToJSON DeviceMetadata where
+        toJSON DeviceMetadata'{..}
+          = object
+              (catMaybes
+                 [("productName" .=) <$> _dmProductName,
+                  ("glEsVersion" .=) <$> _dmGlEsVersion,
+                  ("manufacturer" .=) <$> _dmManufacturer,
+                  ("screenWidthPx" .=) <$> _dmScreenWidthPx,
+                  ("ramMb" .=) <$> _dmRamMb,
+                  ("cpuMake" .=) <$> _dmCPUMake,
+                  ("screenHeightPx" .=) <$> _dmScreenHeightPx,
+                  ("nativePlatform" .=) <$> _dmNATivePlatform,
+                  ("deviceClass" .=) <$> _dmDeviceClass,
+                  ("cpuModel" .=) <$> _dmCPUModel,
+                  ("screenDensityDpi" .=) <$> _dmScreenDensityDpi])
+
+--
+-- /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)
+    , _iapGracePeriod        :: !(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'
+--
+-- * 'iapGracePeriod'
+--
+-- * 'iapTrialPeriod'
+--
+-- * 'iapPackageName'
+--
+-- * 'iapSeason'
+--
+-- * 'iapPurchaseType'
+--
+-- * 'iapSubscriptionPeriod'
+--
+-- * 'iapPrices'
+--
+-- * 'iapSKU'
+--
+-- * 'iapDefaultPrice'
+--
+-- * 'iapListings'
+--
+-- * 'iapDefaultLanguage'
+inAppProduct
+    :: InAppProduct
+inAppProduct =
+    InAppProduct'
+    { _iapStatus = Nothing
+    , _iapGracePeriod = 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})
+
+-- | Grace period of the subscription, specified in ISO 8601 format. It will
+-- allow developers to give their subscribers a grace period when the
+-- payment for the new recurrence period is declined. Acceptable values =
+-- \"P3D\" (three days) and \"P7D\" (seven days)
+iapGracePeriod :: Lens' InAppProduct (Maybe Text)
+iapGracePeriod
+  = lens _iapGracePeriod
+      (\ s a -> s{_iapGracePeriod = 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 .:? "gracePeriod") <*>
+                     (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,
+                  ("gracePeriod" .=) <$> _iapGracePeriod,
+                  ("trialPeriod" .=) <$> _iapTrialPeriod,
+                  ("packageName" .=) <$> _iapPackageName,
+                  ("season" .=) <$> _iapSeason,
+                  ("purchaseType" .=) <$> _iapPurchaseType,
+                  ("subscriptionPeriod" .=) <$> _iapSubscriptionPeriod,
+                  ("prices" .=) <$> _iapPrices, ("sku" .=) <$> _iapSKU,
+                  ("defaultPrice" .=) <$> _iapDefaultPrice,
+                  ("listings" .=) <$> _iapListings,
+                  ("defaultLanguage" .=) <$> _iapDefaultLanguage])
+
+--
+-- /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.
+data APKBinary = APKBinary'
+    { _apkbSha1   :: !(Maybe Text)
+    , _apkbSha256 :: !(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'
+--
+-- * 'apkbSha256'
+aPKBinary
+    :: APKBinary
+aPKBinary =
+    APKBinary'
+    { _apkbSha1 = Nothing
+    , _apkbSha256 = 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})
+
+-- | A sha256 hash of the APK payload, encoded as a hex string and matching
+-- the output of the sha256sum command.
+apkbSha256 :: Lens' APKBinary (Maybe Text)
+apkbSha256
+  = lens _apkbSha256 (\ s a -> s{_apkbSha256 = a})
+
+instance FromJSON APKBinary where
+        parseJSON
+          = withObject "APKBinary"
+              (\ o ->
+                 APKBinary' <$> (o .:? "sha1") <*> (o .:? "sha256"))
+
+instance ToJSON APKBinary where
+        toJSON APKBinary'{..}
+          = object
+              (catMaybes
+                 [("sha1" .=) <$> _apkbSha1,
+                  ("sha256" .=) <$> _apkbSha256])
+
+--
+-- /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:/ '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:/ '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])
+
+-- | A VoidedPurchase resource indicates a purchase that was either
+-- canceled\/refunded\/charged-back.
+--
+-- /See:/ 'voidedPurchase' smart constructor.
+data VoidedPurchase = VoidedPurchase'
+    { _vpKind               :: !Text
+    , _vpPurchaseTimeMillis :: !(Maybe (Textual Int64))
+    , _vpPurchaseToken      :: !(Maybe Text)
+    , _vpVoidedTimeMillis   :: !(Maybe (Textual Int64))
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'VoidedPurchase' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'vpKind'
+--
+-- * 'vpPurchaseTimeMillis'
+--
+-- * 'vpPurchaseToken'
+--
+-- * 'vpVoidedTimeMillis'
+voidedPurchase
+    :: VoidedPurchase
+voidedPurchase =
+    VoidedPurchase'
+    { _vpKind = "androidpublisher#voidedPurchase"
+    , _vpPurchaseTimeMillis = Nothing
+    , _vpPurchaseToken = Nothing
+    , _vpVoidedTimeMillis = Nothing
+    }
+
+-- | This kind represents a voided purchase object in the androidpublisher
+-- service.
+vpKind :: Lens' VoidedPurchase Text
+vpKind = lens _vpKind (\ s a -> s{_vpKind = a})
+
+-- | The time at which the purchase was made, in milliseconds since the epoch
+-- (Jan 1, 1970).
+vpPurchaseTimeMillis :: Lens' VoidedPurchase (Maybe Int64)
+vpPurchaseTimeMillis
+  = lens _vpPurchaseTimeMillis
+      (\ s a -> s{_vpPurchaseTimeMillis = a})
+      . mapping _Coerce
+
+-- | The token that was generated when a purchase was made. This uniquely
+-- identifies a purchase.
+vpPurchaseToken :: Lens' VoidedPurchase (Maybe Text)
+vpPurchaseToken
+  = lens _vpPurchaseToken
+      (\ s a -> s{_vpPurchaseToken = a})
+
+-- | The time at which the purchase was canceled\/refunded\/charged-back, in
+-- milliseconds since the epoch (Jan 1, 1970).
+vpVoidedTimeMillis :: Lens' VoidedPurchase (Maybe Int64)
+vpVoidedTimeMillis
+  = lens _vpVoidedTimeMillis
+      (\ s a -> s{_vpVoidedTimeMillis = a})
+      . mapping _Coerce
+
+instance FromJSON VoidedPurchase where
+        parseJSON
+          = withObject "VoidedPurchase"
+              (\ o ->
+                 VoidedPurchase' <$>
+                   (o .:? "kind" .!= "androidpublisher#voidedPurchase")
+                     <*> (o .:? "purchaseTimeMillis")
+                     <*> (o .:? "purchaseToken")
+                     <*> (o .:? "voidedTimeMillis"))
+
+instance ToJSON VoidedPurchase where
+        toJSON VoidedPurchase'{..}
+          = object
+              (catMaybes
+                 [Just ("kind" .= _vpKind),
+                  ("purchaseTimeMillis" .=) <$> _vpPurchaseTimeMillis,
+                  ("purchaseToken" .=) <$> _vpPurchaseToken,
+                  ("voidedTimeMillis" .=) <$> _vpVoidedTimeMillis])
+
+--
+-- /See:/ 'bundlesListResponse' smart constructor.
+data BundlesListResponse = BundlesListResponse'
+    { _blrBundles :: !(Maybe [Bundle])
+    , _blrKind    :: !Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'BundlesListResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'blrBundles'
+--
+-- * 'blrKind'
+bundlesListResponse
+    :: BundlesListResponse
+bundlesListResponse =
+    BundlesListResponse'
+    { _blrBundles = Nothing
+    , _blrKind = "androidpublisher#bundlesListResponse"
+    }
+
+blrBundles :: Lens' BundlesListResponse [Bundle]
+blrBundles
+  = lens _blrBundles (\ s a -> s{_blrBundles = a}) .
+      _Default
+      . _Coerce
+
+-- | Identifies what kind of resource this is. Value: the fixed string
+-- \"androidpublisher#bundlesListResponse\".
+blrKind :: Lens' BundlesListResponse Text
+blrKind = lens _blrKind (\ s a -> s{_blrKind = a})
+
+instance FromJSON BundlesListResponse where
+        parseJSON
+          = withObject "BundlesListResponse"
+              (\ o ->
+                 BundlesListResponse' <$>
+                   (o .:? "bundles" .!= mempty) <*>
+                     (o .:? "kind" .!=
+                        "androidpublisher#bundlesListResponse"))
+
+instance ToJSON BundlesListResponse where
+        toJSON BundlesListResponse'{..}
+          = object
+              (catMaybes
+                 [("bundles" .=) <$> _blrBundles,
+                  Just ("kind" .= _blrKind)])
+
+--
+-- /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])
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
@@ -16,7 +16,7 @@
 --
 module Network.Google.AndroidPublisher.Types.Sum where
 
-import           Network.Google.Prelude
+import           Network.Google.Prelude hiding (Bytes)
 
 data EditsImagesDeleteallImageType
     = FeatureGraphic
@@ -72,111 +72,6 @@
 instance ToJSON EditsImagesDeleteallImageType where
     toJSON = toJSONText
 
--- | The track type to read or modify.
-data EditsTracksPatchTrack
-    = Alpha
-      -- ^ @alpha@
-    | Beta
-      -- ^ @beta@
-    | Production
-      -- ^ @production@
-    | Rollout
-      -- ^ @rollout@
-      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
-
-instance Hashable EditsTracksPatchTrack
-
-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 ToHttpApiData EditsTracksPatchTrack where
-    toQueryParam = \case
-        Alpha -> "alpha"
-        Beta -> "beta"
-        Production -> "production"
-        Rollout -> "rollout"
-
-instance FromJSON EditsTracksPatchTrack where
-    parseJSON = parseJSONText "EditsTracksPatchTrack"
-
-instance ToJSON EditsTracksPatchTrack where
-    toJSON = toJSONText
-
--- | The track type to read or modify.
-data EditsTracksGetTrack
-    = ETGTAlpha
-      -- ^ @alpha@
-    | ETGTBeta
-      -- ^ @beta@
-    | ETGTProduction
-      -- ^ @production@
-    | ETGTRollout
-      -- ^ @rollout@
-      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
-
-instance Hashable EditsTracksGetTrack
-
-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 ToHttpApiData EditsTracksGetTrack where
-    toQueryParam = \case
-        ETGTAlpha -> "alpha"
-        ETGTBeta -> "beta"
-        ETGTProduction -> "production"
-        ETGTRollout -> "rollout"
-
-instance FromJSON EditsTracksGetTrack where
-    parseJSON = parseJSONText "EditsTracksGetTrack"
-
-instance ToJSON EditsTracksGetTrack where
-    toJSON = toJSONText
-
--- | The track type to read or modify.
-data EditsTracksUpdateTrack
-    = ETUTAlpha
-      -- ^ @alpha@
-    | ETUTBeta
-      -- ^ @beta@
-    | ETUTProduction
-      -- ^ @production@
-    | ETUTRollout
-      -- ^ @rollout@
-      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
-
-instance Hashable EditsTracksUpdateTrack
-
-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 ToHttpApiData EditsTracksUpdateTrack where
-    toQueryParam = \case
-        ETUTAlpha -> "alpha"
-        ETUTBeta -> "beta"
-        ETUTProduction -> "production"
-        ETUTRollout -> "rollout"
-
-instance FromJSON EditsTracksUpdateTrack where
-    parseJSON = parseJSONText "EditsTracksUpdateTrack"
-
-instance ToJSON EditsTracksUpdateTrack where
-    toJSON = toJSONText
-
 data EditsImagesListImageType
     = EILITFeatureGraphic
       -- ^ @featureGraphic@
@@ -231,74 +126,6 @@
 instance ToJSON EditsImagesListImageType where
     toJSON = toJSONText
 
-data EditsTestersPatchTrack
-    = ETPTAlpha
-      -- ^ @alpha@
-    | ETPTBeta
-      -- ^ @beta@
-    | ETPTProduction
-      -- ^ @production@
-    | ETPTRollout
-      -- ^ @rollout@
-      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
-
-instance Hashable EditsTestersPatchTrack
-
-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 ToHttpApiData EditsTestersPatchTrack where
-    toQueryParam = \case
-        ETPTAlpha -> "alpha"
-        ETPTBeta -> "beta"
-        ETPTProduction -> "production"
-        ETPTRollout -> "rollout"
-
-instance FromJSON EditsTestersPatchTrack where
-    parseJSON = parseJSONText "EditsTestersPatchTrack"
-
-instance ToJSON EditsTestersPatchTrack where
-    toJSON = toJSONText
-
-data EditsTestersGetTrack
-    = EAlpha
-      -- ^ @alpha@
-    | EBeta
-      -- ^ @beta@
-    | EProduction
-      -- ^ @production@
-    | ERollout
-      -- ^ @rollout@
-      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
-
-instance Hashable EditsTestersGetTrack
-
-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 ToHttpApiData EditsTestersGetTrack where
-    toQueryParam = \case
-        EAlpha -> "alpha"
-        EBeta -> "beta"
-        EProduction -> "production"
-        ERollout -> "rollout"
-
-instance FromJSON EditsTestersGetTrack where
-    parseJSON = parseJSONText "EditsTestersGetTrack"
-
-instance ToJSON EditsTestersGetTrack where
-    toJSON = toJSONText
-
 data EditsImagesUploadImageType
     = EIUITFeatureGraphic
       -- ^ @featureGraphic@
@@ -531,38 +358,4 @@
     parseJSON = parseJSONText "EditsImagesDeleteImageType"
 
 instance ToJSON EditsImagesDeleteImageType where
-    toJSON = toJSONText
-
-data EditsTestersUpdateTrack
-    = EDIAlpha
-      -- ^ @alpha@
-    | EDIBeta
-      -- ^ @beta@
-    | EDIProduction
-      -- ^ @production@
-    | EDIRollout
-      -- ^ @rollout@
-      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
-
-instance Hashable EditsTestersUpdateTrack
-
-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 ToHttpApiData EditsTestersUpdateTrack where
-    toQueryParam = \case
-        EDIAlpha -> "alpha"
-        EDIBeta -> "beta"
-        EDIProduction -> "production"
-        EDIRollout -> "rollout"
-
-instance FromJSON EditsTestersUpdateTrack where
-    parseJSON = parseJSONText "EditsTestersUpdateTrack"
-
-instance ToJSON EditsTestersUpdateTrack where
     toJSON = toJSONText
diff --git a/gen/Network/Google/Resource/AndroidPublisher/Edits/APKListings/Delete.hs b/gen/Network/Google/Resource/AndroidPublisher/Edits/APKListings/Delete.hs
deleted file mode 100644
--- a/gen/Network/Google/Resource/AndroidPublisher/Edits/APKListings/Delete.hs
+++ /dev/null
@@ -1,138 +0,0 @@
-{-# 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.Edits.APKListings.Delete
--- 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)
---
--- Deletes the APK-specific localized listing for a specified APK and
--- language code.
---
--- /See:/ <https://developers.google.com/android-publisher Google Play Developer API Reference> for @androidpublisher.edits.apklistings.delete@.
-module Network.Google.Resource.AndroidPublisher.Edits.APKListings.Delete
-    (
-    -- * REST Resource
-      EditsAPKListingsDeleteResource
-
-    -- * Creating a Request
-    , editsAPKListingsDelete
-    , EditsAPKListingsDelete
-
-    -- * Request Lenses
-    , eapkldPackageName
-    , eapkldAPKVersionCode
-    , eapkldLanguage
-    , eapkldEditId
-    ) where
-
-import           Network.Google.AndroidPublisher.Types
-import           Network.Google.Prelude
-
--- | A resource alias for @androidpublisher.edits.apklistings.delete@ method which the
--- 'EditsAPKListingsDelete' request conforms to.
-type EditsAPKListingsDeleteResource =
-     "androidpublisher" :>
-       "v2" :>
-         "applications" :>
-           Capture "packageName" Text :>
-             "edits" :>
-               Capture "editId" Text :>
-                 "apks" :>
-                   Capture "apkVersionCode" (Textual Int32) :>
-                     "listings" :>
-                       Capture "language" Text :>
-                         QueryParam "alt" AltJSON :> Delete '[JSON] ()
-
--- | Deletes the APK-specific localized listing for a specified APK and
--- language code.
---
--- /See:/ 'editsAPKListingsDelete' smart constructor.
-data EditsAPKListingsDelete = EditsAPKListingsDelete'
-    { _eapkldPackageName    :: !Text
-    , _eapkldAPKVersionCode :: !(Textual Int32)
-    , _eapkldLanguage       :: !Text
-    , _eapkldEditId         :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'EditsAPKListingsDelete' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'eapkldPackageName'
---
--- * 'eapkldAPKVersionCode'
---
--- * 'eapkldLanguage'
---
--- * 'eapkldEditId'
-editsAPKListingsDelete
-    :: Text -- ^ 'eapkldPackageName'
-    -> Int32 -- ^ 'eapkldAPKVersionCode'
-    -> Text -- ^ 'eapkldLanguage'
-    -> Text -- ^ 'eapkldEditId'
-    -> EditsAPKListingsDelete
-editsAPKListingsDelete pEapkldPackageName_ pEapkldAPKVersionCode_ pEapkldLanguage_ pEapkldEditId_ =
-    EditsAPKListingsDelete'
-    { _eapkldPackageName = pEapkldPackageName_
-    , _eapkldAPKVersionCode = _Coerce # pEapkldAPKVersionCode_
-    , _eapkldLanguage = pEapkldLanguage_
-    , _eapkldEditId = pEapkldEditId_
-    }
-
--- | Unique identifier for the Android app that is being updated; for
--- example, \"com.spiffygame\".
-eapkldPackageName :: Lens' EditsAPKListingsDelete Text
-eapkldPackageName
-  = lens _eapkldPackageName
-      (\ s a -> s{_eapkldPackageName = a})
-
--- | The APK version code whose APK-specific listings should be read or
--- modified.
-eapkldAPKVersionCode :: Lens' EditsAPKListingsDelete Int32
-eapkldAPKVersionCode
-  = lens _eapkldAPKVersionCode
-      (\ s a -> s{_eapkldAPKVersionCode = a})
-      . _Coerce
-
--- | The language code (a BCP-47 language tag) of the APK-specific localized
--- listing to read or modify. For example, to select Austrian German, pass
--- \"de-AT\".
-eapkldLanguage :: Lens' EditsAPKListingsDelete Text
-eapkldLanguage
-  = lens _eapkldLanguage
-      (\ s a -> s{_eapkldLanguage = a})
-
--- | Unique identifier for this edit.
-eapkldEditId :: Lens' EditsAPKListingsDelete Text
-eapkldEditId
-  = lens _eapkldEditId (\ s a -> s{_eapkldEditId = a})
-
-instance GoogleRequest EditsAPKListingsDelete where
-        type Rs EditsAPKListingsDelete = ()
-        type Scopes EditsAPKListingsDelete =
-             '["https://www.googleapis.com/auth/androidpublisher"]
-        requestClient EditsAPKListingsDelete'{..}
-          = go _eapkldPackageName _eapkldEditId
-              _eapkldAPKVersionCode
-              _eapkldLanguage
-              (Just AltJSON)
-              androidPublisherService
-          where go
-                  = buildClient
-                      (Proxy :: Proxy EditsAPKListingsDeleteResource)
-                      mempty
diff --git a/gen/Network/Google/Resource/AndroidPublisher/Edits/APKListings/Deleteall.hs b/gen/Network/Google/Resource/AndroidPublisher/Edits/APKListings/Deleteall.hs
deleted file mode 100644
--- a/gen/Network/Google/Resource/AndroidPublisher/Edits/APKListings/Deleteall.hs
+++ /dev/null
@@ -1,122 +0,0 @@
-{-# 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.Edits.APKListings.Deleteall
--- 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)
---
--- Deletes all the APK-specific localized listings for a specified APK.
---
--- /See:/ <https://developers.google.com/android-publisher Google Play Developer API Reference> for @androidpublisher.edits.apklistings.deleteall@.
-module Network.Google.Resource.AndroidPublisher.Edits.APKListings.Deleteall
-    (
-    -- * REST Resource
-      EditsAPKListingsDeleteallResource
-
-    -- * Creating a Request
-    , editsAPKListingsDeleteall
-    , EditsAPKListingsDeleteall
-
-    -- * Request Lenses
-    , eapkldaPackageName
-    , eapkldaAPKVersionCode
-    , eapkldaEditId
-    ) where
-
-import           Network.Google.AndroidPublisher.Types
-import           Network.Google.Prelude
-
--- | A resource alias for @androidpublisher.edits.apklistings.deleteall@ method which the
--- 'EditsAPKListingsDeleteall' request conforms to.
-type EditsAPKListingsDeleteallResource =
-     "androidpublisher" :>
-       "v2" :>
-         "applications" :>
-           Capture "packageName" Text :>
-             "edits" :>
-               Capture "editId" Text :>
-                 "apks" :>
-                   Capture "apkVersionCode" (Textual Int32) :>
-                     "listings" :>
-                       QueryParam "alt" AltJSON :> Delete '[JSON] ()
-
--- | Deletes all the APK-specific localized listings for a specified APK.
---
--- /See:/ 'editsAPKListingsDeleteall' smart constructor.
-data EditsAPKListingsDeleteall = EditsAPKListingsDeleteall'
-    { _eapkldaPackageName    :: !Text
-    , _eapkldaAPKVersionCode :: !(Textual Int32)
-    , _eapkldaEditId         :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'EditsAPKListingsDeleteall' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'eapkldaPackageName'
---
--- * 'eapkldaAPKVersionCode'
---
--- * 'eapkldaEditId'
-editsAPKListingsDeleteall
-    :: Text -- ^ 'eapkldaPackageName'
-    -> Int32 -- ^ 'eapkldaAPKVersionCode'
-    -> Text -- ^ 'eapkldaEditId'
-    -> EditsAPKListingsDeleteall
-editsAPKListingsDeleteall pEapkldaPackageName_ pEapkldaAPKVersionCode_ pEapkldaEditId_ =
-    EditsAPKListingsDeleteall'
-    { _eapkldaPackageName = pEapkldaPackageName_
-    , _eapkldaAPKVersionCode = _Coerce # pEapkldaAPKVersionCode_
-    , _eapkldaEditId = pEapkldaEditId_
-    }
-
--- | Unique identifier for the Android app that is being updated; for
--- example, \"com.spiffygame\".
-eapkldaPackageName :: Lens' EditsAPKListingsDeleteall Text
-eapkldaPackageName
-  = lens _eapkldaPackageName
-      (\ s a -> s{_eapkldaPackageName = a})
-
--- | The APK version code whose APK-specific listings should be read or
--- modified.
-eapkldaAPKVersionCode :: Lens' EditsAPKListingsDeleteall Int32
-eapkldaAPKVersionCode
-  = lens _eapkldaAPKVersionCode
-      (\ s a -> s{_eapkldaAPKVersionCode = a})
-      . _Coerce
-
--- | Unique identifier for this edit.
-eapkldaEditId :: Lens' EditsAPKListingsDeleteall Text
-eapkldaEditId
-  = lens _eapkldaEditId
-      (\ s a -> s{_eapkldaEditId = a})
-
-instance GoogleRequest EditsAPKListingsDeleteall
-         where
-        type Rs EditsAPKListingsDeleteall = ()
-        type Scopes EditsAPKListingsDeleteall =
-             '["https://www.googleapis.com/auth/androidpublisher"]
-        requestClient EditsAPKListingsDeleteall'{..}
-          = go _eapkldaPackageName _eapkldaEditId
-              _eapkldaAPKVersionCode
-              (Just AltJSON)
-              androidPublisherService
-          where go
-                  = buildClient
-                      (Proxy :: Proxy EditsAPKListingsDeleteallResource)
-                      mempty
diff --git a/gen/Network/Google/Resource/AndroidPublisher/Edits/APKListings/Get.hs b/gen/Network/Google/Resource/AndroidPublisher/Edits/APKListings/Get.hs
deleted file mode 100644
--- a/gen/Network/Google/Resource/AndroidPublisher/Edits/APKListings/Get.hs
+++ /dev/null
@@ -1,138 +0,0 @@
-{-# 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.Edits.APKListings.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)
---
--- Fetches the APK-specific localized listing for a specified APK and
--- language code.
---
--- /See:/ <https://developers.google.com/android-publisher Google Play Developer API Reference> for @androidpublisher.edits.apklistings.get@.
-module Network.Google.Resource.AndroidPublisher.Edits.APKListings.Get
-    (
-    -- * REST Resource
-      EditsAPKListingsGetResource
-
-    -- * Creating a Request
-    , editsAPKListingsGet
-    , EditsAPKListingsGet
-
-    -- * Request Lenses
-    , eapklgPackageName
-    , eapklgAPKVersionCode
-    , eapklgLanguage
-    , eapklgEditId
-    ) where
-
-import           Network.Google.AndroidPublisher.Types
-import           Network.Google.Prelude
-
--- | A resource alias for @androidpublisher.edits.apklistings.get@ method which the
--- 'EditsAPKListingsGet' request conforms to.
-type EditsAPKListingsGetResource =
-     "androidpublisher" :>
-       "v2" :>
-         "applications" :>
-           Capture "packageName" Text :>
-             "edits" :>
-               Capture "editId" Text :>
-                 "apks" :>
-                   Capture "apkVersionCode" (Textual Int32) :>
-                     "listings" :>
-                       Capture "language" Text :>
-                         QueryParam "alt" AltJSON :> Get '[JSON] APKListing
-
--- | Fetches the APK-specific localized listing for a specified APK and
--- language code.
---
--- /See:/ 'editsAPKListingsGet' smart constructor.
-data EditsAPKListingsGet = EditsAPKListingsGet'
-    { _eapklgPackageName    :: !Text
-    , _eapklgAPKVersionCode :: !(Textual Int32)
-    , _eapklgLanguage       :: !Text
-    , _eapklgEditId         :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'EditsAPKListingsGet' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'eapklgPackageName'
---
--- * 'eapklgAPKVersionCode'
---
--- * 'eapklgLanguage'
---
--- * 'eapklgEditId'
-editsAPKListingsGet
-    :: Text -- ^ 'eapklgPackageName'
-    -> Int32 -- ^ 'eapklgAPKVersionCode'
-    -> Text -- ^ 'eapklgLanguage'
-    -> Text -- ^ 'eapklgEditId'
-    -> EditsAPKListingsGet
-editsAPKListingsGet pEapklgPackageName_ pEapklgAPKVersionCode_ pEapklgLanguage_ pEapklgEditId_ =
-    EditsAPKListingsGet'
-    { _eapklgPackageName = pEapklgPackageName_
-    , _eapklgAPKVersionCode = _Coerce # pEapklgAPKVersionCode_
-    , _eapklgLanguage = pEapklgLanguage_
-    , _eapklgEditId = pEapklgEditId_
-    }
-
--- | Unique identifier for the Android app that is being updated; for
--- example, \"com.spiffygame\".
-eapklgPackageName :: Lens' EditsAPKListingsGet Text
-eapklgPackageName
-  = lens _eapklgPackageName
-      (\ s a -> s{_eapklgPackageName = a})
-
--- | The APK version code whose APK-specific listings should be read or
--- modified.
-eapklgAPKVersionCode :: Lens' EditsAPKListingsGet Int32
-eapklgAPKVersionCode
-  = lens _eapklgAPKVersionCode
-      (\ s a -> s{_eapklgAPKVersionCode = a})
-      . _Coerce
-
--- | The language code (a BCP-47 language tag) of the APK-specific localized
--- listing to read or modify. For example, to select Austrian German, pass
--- \"de-AT\".
-eapklgLanguage :: Lens' EditsAPKListingsGet Text
-eapklgLanguage
-  = lens _eapklgLanguage
-      (\ s a -> s{_eapklgLanguage = a})
-
--- | Unique identifier for this edit.
-eapklgEditId :: Lens' EditsAPKListingsGet Text
-eapklgEditId
-  = lens _eapklgEditId (\ s a -> s{_eapklgEditId = a})
-
-instance GoogleRequest EditsAPKListingsGet where
-        type Rs EditsAPKListingsGet = APKListing
-        type Scopes EditsAPKListingsGet =
-             '["https://www.googleapis.com/auth/androidpublisher"]
-        requestClient EditsAPKListingsGet'{..}
-          = go _eapklgPackageName _eapklgEditId
-              _eapklgAPKVersionCode
-              _eapklgLanguage
-              (Just AltJSON)
-              androidPublisherService
-          where go
-                  = buildClient
-                      (Proxy :: Proxy EditsAPKListingsGetResource)
-                      mempty
diff --git a/gen/Network/Google/Resource/AndroidPublisher/Edits/APKListings/List.hs b/gen/Network/Google/Resource/AndroidPublisher/Edits/APKListings/List.hs
deleted file mode 100644
--- a/gen/Network/Google/Resource/AndroidPublisher/Edits/APKListings/List.hs
+++ /dev/null
@@ -1,122 +0,0 @@
-{-# 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.Edits.APKListings.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)
---
--- Lists all the APK-specific localized listings for a specified APK.
---
--- /See:/ <https://developers.google.com/android-publisher Google Play Developer API Reference> for @androidpublisher.edits.apklistings.list@.
-module Network.Google.Resource.AndroidPublisher.Edits.APKListings.List
-    (
-    -- * REST Resource
-      EditsAPKListingsListResource
-
-    -- * Creating a Request
-    , editsAPKListingsList
-    , EditsAPKListingsList
-
-    -- * Request Lenses
-    , eapkllPackageName
-    , eapkllAPKVersionCode
-    , eapkllEditId
-    ) where
-
-import           Network.Google.AndroidPublisher.Types
-import           Network.Google.Prelude
-
--- | A resource alias for @androidpublisher.edits.apklistings.list@ method which the
--- 'EditsAPKListingsList' request conforms to.
-type EditsAPKListingsListResource =
-     "androidpublisher" :>
-       "v2" :>
-         "applications" :>
-           Capture "packageName" Text :>
-             "edits" :>
-               Capture "editId" Text :>
-                 "apks" :>
-                   Capture "apkVersionCode" (Textual Int32) :>
-                     "listings" :>
-                       QueryParam "alt" AltJSON :>
-                         Get '[JSON] APKListingsListResponse
-
--- | Lists all the APK-specific localized listings for a specified APK.
---
--- /See:/ 'editsAPKListingsList' smart constructor.
-data EditsAPKListingsList = EditsAPKListingsList'
-    { _eapkllPackageName    :: !Text
-    , _eapkllAPKVersionCode :: !(Textual Int32)
-    , _eapkllEditId         :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'EditsAPKListingsList' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'eapkllPackageName'
---
--- * 'eapkllAPKVersionCode'
---
--- * 'eapkllEditId'
-editsAPKListingsList
-    :: Text -- ^ 'eapkllPackageName'
-    -> Int32 -- ^ 'eapkllAPKVersionCode'
-    -> Text -- ^ 'eapkllEditId'
-    -> EditsAPKListingsList
-editsAPKListingsList pEapkllPackageName_ pEapkllAPKVersionCode_ pEapkllEditId_ =
-    EditsAPKListingsList'
-    { _eapkllPackageName = pEapkllPackageName_
-    , _eapkllAPKVersionCode = _Coerce # pEapkllAPKVersionCode_
-    , _eapkllEditId = pEapkllEditId_
-    }
-
--- | Unique identifier for the Android app that is being updated; for
--- example, \"com.spiffygame\".
-eapkllPackageName :: Lens' EditsAPKListingsList Text
-eapkllPackageName
-  = lens _eapkllPackageName
-      (\ s a -> s{_eapkllPackageName = a})
-
--- | The APK version code whose APK-specific listings should be read or
--- modified.
-eapkllAPKVersionCode :: Lens' EditsAPKListingsList Int32
-eapkllAPKVersionCode
-  = lens _eapkllAPKVersionCode
-      (\ s a -> s{_eapkllAPKVersionCode = a})
-      . _Coerce
-
--- | Unique identifier for this edit.
-eapkllEditId :: Lens' EditsAPKListingsList Text
-eapkllEditId
-  = lens _eapkllEditId (\ s a -> s{_eapkllEditId = a})
-
-instance GoogleRequest EditsAPKListingsList where
-        type Rs EditsAPKListingsList =
-             APKListingsListResponse
-        type Scopes EditsAPKListingsList =
-             '["https://www.googleapis.com/auth/androidpublisher"]
-        requestClient EditsAPKListingsList'{..}
-          = go _eapkllPackageName _eapkllEditId
-              _eapkllAPKVersionCode
-              (Just AltJSON)
-              androidPublisherService
-          where go
-                  = buildClient
-                      (Proxy :: Proxy EditsAPKListingsListResource)
-                      mempty
diff --git a/gen/Network/Google/Resource/AndroidPublisher/Edits/APKListings/Patch.hs b/gen/Network/Google/Resource/AndroidPublisher/Edits/APKListings/Patch.hs
deleted file mode 100644
--- a/gen/Network/Google/Resource/AndroidPublisher/Edits/APKListings/Patch.hs
+++ /dev/null
@@ -1,153 +0,0 @@
-{-# 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.Edits.APKListings.Patch
--- 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)
---
--- Updates or creates the APK-specific localized listing for a specified
--- APK and language code. This method supports patch semantics.
---
--- /See:/ <https://developers.google.com/android-publisher Google Play Developer API Reference> for @androidpublisher.edits.apklistings.patch@.
-module Network.Google.Resource.AndroidPublisher.Edits.APKListings.Patch
-    (
-    -- * REST Resource
-      EditsAPKListingsPatchResource
-
-    -- * Creating a Request
-    , editsAPKListingsPatch
-    , EditsAPKListingsPatch
-
-    -- * Request Lenses
-    , eapklpPackageName
-    , eapklpAPKVersionCode
-    , eapklpPayload
-    , eapklpLanguage
-    , eapklpEditId
-    ) where
-
-import           Network.Google.AndroidPublisher.Types
-import           Network.Google.Prelude
-
--- | A resource alias for @androidpublisher.edits.apklistings.patch@ method which the
--- 'EditsAPKListingsPatch' request conforms to.
-type EditsAPKListingsPatchResource =
-     "androidpublisher" :>
-       "v2" :>
-         "applications" :>
-           Capture "packageName" Text :>
-             "edits" :>
-               Capture "editId" Text :>
-                 "apks" :>
-                   Capture "apkVersionCode" (Textual Int32) :>
-                     "listings" :>
-                       Capture "language" Text :>
-                         QueryParam "alt" AltJSON :>
-                           ReqBody '[JSON] APKListing :>
-                             Patch '[JSON] APKListing
-
--- | Updates or creates the APK-specific localized listing for a specified
--- APK and language code. This method supports patch semantics.
---
--- /See:/ 'editsAPKListingsPatch' smart constructor.
-data EditsAPKListingsPatch = EditsAPKListingsPatch'
-    { _eapklpPackageName    :: !Text
-    , _eapklpAPKVersionCode :: !(Textual Int32)
-    , _eapklpPayload        :: !APKListing
-    , _eapklpLanguage       :: !Text
-    , _eapklpEditId         :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'EditsAPKListingsPatch' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'eapklpPackageName'
---
--- * 'eapklpAPKVersionCode'
---
--- * 'eapklpPayload'
---
--- * 'eapklpLanguage'
---
--- * 'eapklpEditId'
-editsAPKListingsPatch
-    :: Text -- ^ 'eapklpPackageName'
-    -> Int32 -- ^ 'eapklpAPKVersionCode'
-    -> APKListing -- ^ 'eapklpPayload'
-    -> Text -- ^ 'eapklpLanguage'
-    -> Text -- ^ 'eapklpEditId'
-    -> EditsAPKListingsPatch
-editsAPKListingsPatch pEapklpPackageName_ pEapklpAPKVersionCode_ pEapklpPayload_ pEapklpLanguage_ pEapklpEditId_ =
-    EditsAPKListingsPatch'
-    { _eapklpPackageName = pEapklpPackageName_
-    , _eapklpAPKVersionCode = _Coerce # pEapklpAPKVersionCode_
-    , _eapklpPayload = pEapklpPayload_
-    , _eapklpLanguage = pEapklpLanguage_
-    , _eapklpEditId = pEapklpEditId_
-    }
-
--- | Unique identifier for the Android app that is being updated; for
--- example, \"com.spiffygame\".
-eapklpPackageName :: Lens' EditsAPKListingsPatch Text
-eapklpPackageName
-  = lens _eapklpPackageName
-      (\ s a -> s{_eapklpPackageName = a})
-
--- | The APK version code whose APK-specific listings should be read or
--- modified.
-eapklpAPKVersionCode :: Lens' EditsAPKListingsPatch Int32
-eapklpAPKVersionCode
-  = lens _eapklpAPKVersionCode
-      (\ s a -> s{_eapklpAPKVersionCode = a})
-      . _Coerce
-
--- | Multipart request metadata.
-eapklpPayload :: Lens' EditsAPKListingsPatch APKListing
-eapklpPayload
-  = lens _eapklpPayload
-      (\ s a -> s{_eapklpPayload = a})
-
--- | The language code (a BCP-47 language tag) of the APK-specific localized
--- listing to read or modify. For example, to select Austrian German, pass
--- \"de-AT\".
-eapklpLanguage :: Lens' EditsAPKListingsPatch Text
-eapklpLanguage
-  = lens _eapklpLanguage
-      (\ s a -> s{_eapklpLanguage = a})
-
--- | Unique identifier for this edit.
-eapklpEditId :: Lens' EditsAPKListingsPatch Text
-eapklpEditId
-  = lens _eapklpEditId (\ s a -> s{_eapklpEditId = a})
-
-instance GoogleRequest EditsAPKListingsPatch where
-        type Rs EditsAPKListingsPatch = APKListing
-        type Scopes EditsAPKListingsPatch =
-             '["https://www.googleapis.com/auth/androidpublisher"]
-        requestClient EditsAPKListingsPatch'{..}
-          = go _eapklpPackageName _eapklpEditId
-              _eapklpAPKVersionCode
-              _eapklpLanguage
-              (Just AltJSON)
-              _eapklpPayload
-              androidPublisherService
-          where go
-                  = buildClient
-                      (Proxy :: Proxy EditsAPKListingsPatchResource)
-                      mempty
diff --git a/gen/Network/Google/Resource/AndroidPublisher/Edits/APKListings/Update.hs b/gen/Network/Google/Resource/AndroidPublisher/Edits/APKListings/Update.hs
deleted file mode 100644
--- a/gen/Network/Google/Resource/AndroidPublisher/Edits/APKListings/Update.hs
+++ /dev/null
@@ -1,152 +0,0 @@
-{-# 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.Edits.APKListings.Update
--- 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)
---
--- Updates or creates the APK-specific localized listing for a specified
--- APK and language code.
---
--- /See:/ <https://developers.google.com/android-publisher Google Play Developer API Reference> for @androidpublisher.edits.apklistings.update@.
-module Network.Google.Resource.AndroidPublisher.Edits.APKListings.Update
-    (
-    -- * REST Resource
-      EditsAPKListingsUpdateResource
-
-    -- * Creating a Request
-    , editsAPKListingsUpdate
-    , EditsAPKListingsUpdate
-
-    -- * Request Lenses
-    , eapkluPackageName
-    , eapkluAPKVersionCode
-    , eapkluPayload
-    , eapkluLanguage
-    , eapkluEditId
-    ) where
-
-import           Network.Google.AndroidPublisher.Types
-import           Network.Google.Prelude
-
--- | A resource alias for @androidpublisher.edits.apklistings.update@ method which the
--- 'EditsAPKListingsUpdate' request conforms to.
-type EditsAPKListingsUpdateResource =
-     "androidpublisher" :>
-       "v2" :>
-         "applications" :>
-           Capture "packageName" Text :>
-             "edits" :>
-               Capture "editId" Text :>
-                 "apks" :>
-                   Capture "apkVersionCode" (Textual Int32) :>
-                     "listings" :>
-                       Capture "language" Text :>
-                         QueryParam "alt" AltJSON :>
-                           ReqBody '[JSON] APKListing :> Put '[JSON] APKListing
-
--- | Updates or creates the APK-specific localized listing for a specified
--- APK and language code.
---
--- /See:/ 'editsAPKListingsUpdate' smart constructor.
-data EditsAPKListingsUpdate = EditsAPKListingsUpdate'
-    { _eapkluPackageName    :: !Text
-    , _eapkluAPKVersionCode :: !(Textual Int32)
-    , _eapkluPayload        :: !APKListing
-    , _eapkluLanguage       :: !Text
-    , _eapkluEditId         :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'EditsAPKListingsUpdate' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'eapkluPackageName'
---
--- * 'eapkluAPKVersionCode'
---
--- * 'eapkluPayload'
---
--- * 'eapkluLanguage'
---
--- * 'eapkluEditId'
-editsAPKListingsUpdate
-    :: Text -- ^ 'eapkluPackageName'
-    -> Int32 -- ^ 'eapkluAPKVersionCode'
-    -> APKListing -- ^ 'eapkluPayload'
-    -> Text -- ^ 'eapkluLanguage'
-    -> Text -- ^ 'eapkluEditId'
-    -> EditsAPKListingsUpdate
-editsAPKListingsUpdate pEapkluPackageName_ pEapkluAPKVersionCode_ pEapkluPayload_ pEapkluLanguage_ pEapkluEditId_ =
-    EditsAPKListingsUpdate'
-    { _eapkluPackageName = pEapkluPackageName_
-    , _eapkluAPKVersionCode = _Coerce # pEapkluAPKVersionCode_
-    , _eapkluPayload = pEapkluPayload_
-    , _eapkluLanguage = pEapkluLanguage_
-    , _eapkluEditId = pEapkluEditId_
-    }
-
--- | Unique identifier for the Android app that is being updated; for
--- example, \"com.spiffygame\".
-eapkluPackageName :: Lens' EditsAPKListingsUpdate Text
-eapkluPackageName
-  = lens _eapkluPackageName
-      (\ s a -> s{_eapkluPackageName = a})
-
--- | The APK version code whose APK-specific listings should be read or
--- modified.
-eapkluAPKVersionCode :: Lens' EditsAPKListingsUpdate Int32
-eapkluAPKVersionCode
-  = lens _eapkluAPKVersionCode
-      (\ s a -> s{_eapkluAPKVersionCode = a})
-      . _Coerce
-
--- | Multipart request metadata.
-eapkluPayload :: Lens' EditsAPKListingsUpdate APKListing
-eapkluPayload
-  = lens _eapkluPayload
-      (\ s a -> s{_eapkluPayload = a})
-
--- | The language code (a BCP-47 language tag) of the APK-specific localized
--- listing to read or modify. For example, to select Austrian German, pass
--- \"de-AT\".
-eapkluLanguage :: Lens' EditsAPKListingsUpdate Text
-eapkluLanguage
-  = lens _eapkluLanguage
-      (\ s a -> s{_eapkluLanguage = a})
-
--- | Unique identifier for this edit.
-eapkluEditId :: Lens' EditsAPKListingsUpdate Text
-eapkluEditId
-  = lens _eapkluEditId (\ s a -> s{_eapkluEditId = a})
-
-instance GoogleRequest EditsAPKListingsUpdate where
-        type Rs EditsAPKListingsUpdate = APKListing
-        type Scopes EditsAPKListingsUpdate =
-             '["https://www.googleapis.com/auth/androidpublisher"]
-        requestClient EditsAPKListingsUpdate'{..}
-          = go _eapkluPackageName _eapkluEditId
-              _eapkluAPKVersionCode
-              _eapkluLanguage
-              (Just AltJSON)
-              _eapkluPayload
-              androidPublisherService
-          where go
-                  = buildClient
-                      (Proxy :: Proxy EditsAPKListingsUpdateResource)
-                      mempty
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
@@ -48,7 +48,7 @@
 -- 'EditsAPKsAddexternallyhosted' request conforms to.
 type EditsAPKsAddexternallyhostedResource =
      "androidpublisher" :>
-       "v2" :>
+       "v3" :>
          "applications" :>
            Capture "packageName" Text :>
              "edits" :>
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
@@ -42,7 +42,7 @@
 -- 'EditsAPKsList' request conforms to.
 type EditsAPKsListResource =
      "androidpublisher" :>
-       "v2" :>
+       "v3" :>
          "applications" :>
            Capture "packageName" Text :>
              "edits" :>
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
@@ -42,7 +42,7 @@
 -- 'EditsAPKsUpload' request conforms to.
 type EditsAPKsUploadResource =
      "androidpublisher" :>
-       "v2" :>
+       "v3" :>
          "applications" :>
            Capture "packageName" Text :>
              "edits" :>
@@ -52,7 +52,7 @@
        :<|>
        "upload" :>
          "androidpublisher" :>
-           "v2" :>
+           "v3" :>
              "applications" :>
                Capture "packageName" Text :>
                  "edits" :>
diff --git a/gen/Network/Google/Resource/AndroidPublisher/Edits/Bundles/List.hs b/gen/Network/Google/Resource/AndroidPublisher/Edits/Bundles/List.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/AndroidPublisher/Edits/Bundles/List.hs
@@ -0,0 +1,100 @@
+{-# 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.Edits.Bundles.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)
+--
+-- /See:/ <https://developers.google.com/android-publisher Google Play Developer API Reference> for @androidpublisher.edits.bundles.list@.
+module Network.Google.Resource.AndroidPublisher.Edits.Bundles.List
+    (
+    -- * REST Resource
+      EditsBundlesListResource
+
+    -- * Creating a Request
+    , editsBundlesList
+    , EditsBundlesList
+
+    -- * Request Lenses
+    , eblPackageName
+    , eblEditId
+    ) where
+
+import           Network.Google.AndroidPublisher.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @androidpublisher.edits.bundles.list@ method which the
+-- 'EditsBundlesList' request conforms to.
+type EditsBundlesListResource =
+     "androidpublisher" :>
+       "v3" :>
+         "applications" :>
+           Capture "packageName" Text :>
+             "edits" :>
+               Capture "editId" Text :>
+                 "bundles" :>
+                   QueryParam "alt" AltJSON :>
+                     Get '[JSON] BundlesListResponse
+
+--
+-- /See:/ 'editsBundlesList' smart constructor.
+data EditsBundlesList = EditsBundlesList'
+    { _eblPackageName :: !Text
+    , _eblEditId      :: !Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'EditsBundlesList' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'eblPackageName'
+--
+-- * 'eblEditId'
+editsBundlesList
+    :: Text -- ^ 'eblPackageName'
+    -> Text -- ^ 'eblEditId'
+    -> EditsBundlesList
+editsBundlesList pEblPackageName_ pEblEditId_ =
+    EditsBundlesList'
+    { _eblPackageName = pEblPackageName_
+    , _eblEditId = pEblEditId_
+    }
+
+-- | Unique identifier for the Android app that is being updated; for
+-- example, \"com.spiffygame\".
+eblPackageName :: Lens' EditsBundlesList Text
+eblPackageName
+  = lens _eblPackageName
+      (\ s a -> s{_eblPackageName = a})
+
+-- | Unique identifier for this edit.
+eblEditId :: Lens' EditsBundlesList Text
+eblEditId
+  = lens _eblEditId (\ s a -> s{_eblEditId = a})
+
+instance GoogleRequest EditsBundlesList where
+        type Rs EditsBundlesList = BundlesListResponse
+        type Scopes EditsBundlesList =
+             '["https://www.googleapis.com/auth/androidpublisher"]
+        requestClient EditsBundlesList'{..}
+          = go _eblPackageName _eblEditId (Just AltJSON)
+              androidPublisherService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy EditsBundlesListResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/AndroidPublisher/Edits/Bundles/Upload.hs b/gen/Network/Google/Resource/AndroidPublisher/Edits/Bundles/Upload.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/AndroidPublisher/Edits/Bundles/Upload.hs
@@ -0,0 +1,159 @@
+{-# 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.Edits.Bundles.Upload
+-- 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)
+--
+-- Uploads a new Android App Bundle to this edit. If you are using the
+-- Google API client libraries, please increase the timeout of the http
+-- request before calling this endpoint (a timeout of 2 minutes is
+-- recommended). See:
+-- https:\/\/developers.google.com\/api-client-library\/java\/google-api-java-client\/errors
+-- for an example in java.
+--
+-- /See:/ <https://developers.google.com/android-publisher Google Play Developer API Reference> for @androidpublisher.edits.bundles.upload@.
+module Network.Google.Resource.AndroidPublisher.Edits.Bundles.Upload
+    (
+    -- * REST Resource
+      EditsBundlesUploadResource
+
+    -- * Creating a Request
+    , editsBundlesUpload
+    , EditsBundlesUpload
+
+    -- * Request Lenses
+    , ebuPackageName
+    , ebuAckBundleInstallationWarning
+    , ebuEditId
+    ) where
+
+import           Network.Google.AndroidPublisher.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @androidpublisher.edits.bundles.upload@ method which the
+-- 'EditsBundlesUpload' request conforms to.
+type EditsBundlesUploadResource =
+     "androidpublisher" :>
+       "v3" :>
+         "applications" :>
+           Capture "packageName" Text :>
+             "edits" :>
+               Capture "editId" Text :>
+                 "bundles" :>
+                   QueryParam "ackBundleInstallationWarning" Bool :>
+                     QueryParam "alt" AltJSON :> Post '[JSON] Bundle
+       :<|>
+       "upload" :>
+         "androidpublisher" :>
+           "v3" :>
+             "applications" :>
+               Capture "packageName" Text :>
+                 "edits" :>
+                   Capture "editId" Text :>
+                     "bundles" :>
+                       QueryParam "ackBundleInstallationWarning" Bool :>
+                         QueryParam "alt" AltJSON :>
+                           QueryParam "uploadType" AltMedia :>
+                             AltMedia :> Post '[JSON] Bundle
+
+-- | Uploads a new Android App Bundle to this edit. If you are using the
+-- Google API client libraries, please increase the timeout of the http
+-- request before calling this endpoint (a timeout of 2 minutes is
+-- recommended). See:
+-- https:\/\/developers.google.com\/api-client-library\/java\/google-api-java-client\/errors
+-- for an example in java.
+--
+-- /See:/ 'editsBundlesUpload' smart constructor.
+data EditsBundlesUpload = EditsBundlesUpload'
+    { _ebuPackageName                  :: !Text
+    , _ebuAckBundleInstallationWarning :: !(Maybe Bool)
+    , _ebuEditId                       :: !Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'EditsBundlesUpload' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'ebuPackageName'
+--
+-- * 'ebuAckBundleInstallationWarning'
+--
+-- * 'ebuEditId'
+editsBundlesUpload
+    :: Text -- ^ 'ebuPackageName'
+    -> Text -- ^ 'ebuEditId'
+    -> EditsBundlesUpload
+editsBundlesUpload pEbuPackageName_ pEbuEditId_ =
+    EditsBundlesUpload'
+    { _ebuPackageName = pEbuPackageName_
+    , _ebuAckBundleInstallationWarning = Nothing
+    , _ebuEditId = pEbuEditId_
+    }
+
+-- | Unique identifier for the Android app that is being updated; for
+-- example, \"com.spiffygame\".
+ebuPackageName :: Lens' EditsBundlesUpload Text
+ebuPackageName
+  = lens _ebuPackageName
+      (\ s a -> s{_ebuPackageName = a})
+
+-- | Must be set to true if the bundle installation may trigger a warning on
+-- user devices (for example, if installation size may be over a threshold,
+-- typically 100 MB).
+ebuAckBundleInstallationWarning :: Lens' EditsBundlesUpload (Maybe Bool)
+ebuAckBundleInstallationWarning
+  = lens _ebuAckBundleInstallationWarning
+      (\ s a -> s{_ebuAckBundleInstallationWarning = a})
+
+-- | Unique identifier for this edit.
+ebuEditId :: Lens' EditsBundlesUpload Text
+ebuEditId
+  = lens _ebuEditId (\ s a -> s{_ebuEditId = a})
+
+instance GoogleRequest EditsBundlesUpload where
+        type Rs EditsBundlesUpload = Bundle
+        type Scopes EditsBundlesUpload =
+             '["https://www.googleapis.com/auth/androidpublisher"]
+        requestClient EditsBundlesUpload'{..}
+          = go _ebuPackageName _ebuEditId
+              _ebuAckBundleInstallationWarning
+              (Just AltJSON)
+              androidPublisherService
+          where go :<|> _
+                  = buildClient
+                      (Proxy :: Proxy EditsBundlesUploadResource)
+                      mempty
+
+instance GoogleRequest
+         (MediaUpload EditsBundlesUpload) where
+        type Rs (MediaUpload EditsBundlesUpload) = Bundle
+        type Scopes (MediaUpload EditsBundlesUpload) =
+             Scopes EditsBundlesUpload
+        requestClient
+          (MediaUpload EditsBundlesUpload'{..} body)
+          = go _ebuPackageName _ebuEditId
+              _ebuAckBundleInstallationWarning
+              (Just AltJSON)
+              (Just AltMedia)
+              body
+              androidPublisherService
+          where _ :<|> go
+                  = buildClient
+                      (Proxy :: Proxy EditsBundlesUploadResource)
+                      mempty
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
@@ -44,7 +44,7 @@
 -- 'EditsCommit' request conforms to.
 type EditsCommitResource =
      "androidpublisher" :>
-       "v2" :>
+       "v3" :>
          "applications" :>
            Capture "packageName" Text :>
              "edits" :>
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
@@ -46,7 +46,7 @@
 -- 'EditsDelete' request conforms to.
 type EditsDeleteResource =
      "androidpublisher" :>
-       "v2" :>
+       "v3" :>
          "applications" :>
            Capture "packageName" Text :>
              "edits" :>
diff --git a/gen/Network/Google/Resource/AndroidPublisher/Edits/DeobfuscationFiles/Upload.hs b/gen/Network/Google/Resource/AndroidPublisher/Edits/DeobfuscationFiles/Upload.hs
--- a/gen/Network/Google/Resource/AndroidPublisher/Edits/DeobfuscationFiles/Upload.hs
+++ b/gen/Network/Google/Resource/AndroidPublisher/Edits/DeobfuscationFiles/Upload.hs
@@ -47,7 +47,7 @@
 -- 'EditsDeobfuscationFilesUpload' request conforms to.
 type EditsDeobfuscationFilesUploadResource =
      "androidpublisher" :>
-       "v2" :>
+       "v3" :>
          "applications" :>
            Capture "packageName" Text :>
              "edits" :>
@@ -63,7 +63,7 @@
        :<|>
        "upload" :>
          "androidpublisher" :>
-           "v2" :>
+           "v3" :>
              "applications" :>
                Capture "packageName" Text :>
                  "edits" :>
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
@@ -45,7 +45,7 @@
 -- 'EditsDetailsGet' request conforms to.
 type EditsDetailsGetResource =
      "androidpublisher" :>
-       "v2" :>
+       "v3" :>
          "applications" :>
            Capture "packageName" Text :>
              "edits" :>
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
@@ -45,7 +45,7 @@
 -- 'EditsDetailsPatch' request conforms to.
 type EditsDetailsPatchResource =
      "androidpublisher" :>
-       "v2" :>
+       "v3" :>
          "applications" :>
            Capture "packageName" Text :>
              "edits" :>
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
@@ -45,7 +45,7 @@
 -- 'EditsDetailsUpdate' request conforms to.
 type EditsDetailsUpdateResource =
      "androidpublisher" :>
-       "v2" :>
+       "v3" :>
          "applications" :>
            Capture "packageName" Text :>
              "edits" :>
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
@@ -46,7 +46,7 @@
 -- 'EditsExpansionFilesGet' request conforms to.
 type EditsExpansionFilesGetResource =
      "androidpublisher" :>
-       "v2" :>
+       "v3" :>
          "applications" :>
            Capture "packageName" Text :>
              "edits" :>
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
@@ -49,7 +49,7 @@
 -- 'EditsExpansionFilesPatch' request conforms to.
 type EditsExpansionFilesPatchResource =
      "androidpublisher" :>
-       "v2" :>
+       "v3" :>
          "applications" :>
            Capture "packageName" Text :>
              "edits" :>
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
@@ -49,7 +49,7 @@
 -- 'EditsExpansionFilesUpdate' request conforms to.
 type EditsExpansionFilesUpdateResource =
      "androidpublisher" :>
-       "v2" :>
+       "v3" :>
          "applications" :>
            Capture "packageName" Text :>
              "edits" :>
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
@@ -46,7 +46,7 @@
 -- 'EditsExpansionFilesUpload' request conforms to.
 type EditsExpansionFilesUploadResource =
      "androidpublisher" :>
-       "v2" :>
+       "v3" :>
          "applications" :>
            Capture "packageName" Text :>
              "edits" :>
@@ -62,7 +62,7 @@
        :<|>
        "upload" :>
          "androidpublisher" :>
-           "v2" :>
+           "v3" :>
              "applications" :>
                Capture "packageName" Text :>
                  "edits" :>
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
@@ -45,7 +45,7 @@
 -- 'EditsGet' request conforms to.
 type EditsGetResource =
      "androidpublisher" :>
-       "v2" :>
+       "v3" :>
          "applications" :>
            Capture "packageName" Text :>
              "edits" :>
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
@@ -47,7 +47,7 @@
 -- 'EditsImagesDelete' request conforms to.
 type EditsImagesDeleteResource =
      "androidpublisher" :>
-       "v2" :>
+       "v3" :>
          "applications" :>
            Capture "packageName" Text :>
              "edits" :>
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
@@ -46,7 +46,7 @@
 -- 'EditsImagesDeleteall' request conforms to.
 type EditsImagesDeleteallResource =
      "androidpublisher" :>
-       "v2" :>
+       "v3" :>
          "applications" :>
            Capture "packageName" Text :>
              "edits" :>
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
@@ -46,7 +46,7 @@
 -- 'EditsImagesList' request conforms to.
 type EditsImagesListResource =
      "androidpublisher" :>
-       "v2" :>
+       "v3" :>
          "applications" :>
            Capture "packageName" Text :>
              "edits" :>
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
@@ -47,7 +47,7 @@
 -- 'EditsImagesUpload' request conforms to.
 type EditsImagesUploadResource =
      "androidpublisher" :>
-       "v2" :>
+       "v3" :>
          "applications" :>
            Capture "packageName" Text :>
              "edits" :>
@@ -60,7 +60,7 @@
        :<|>
        "upload" :>
          "androidpublisher" :>
-           "v2" :>
+           "v3" :>
              "applications" :>
                Capture "packageName" Text :>
                  "edits" :>
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
@@ -44,7 +44,7 @@
 -- 'EditsInsert' request conforms to.
 type EditsInsertResource =
      "androidpublisher" :>
-       "v2" :>
+       "v3" :>
          "applications" :>
            Capture "packageName" Text :>
              "edits" :>
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
@@ -45,7 +45,7 @@
 -- 'EditsListingsDelete' request conforms to.
 type EditsListingsDeleteResource =
      "androidpublisher" :>
-       "v2" :>
+       "v3" :>
          "applications" :>
            Capture "packageName" Text :>
              "edits" :>
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
@@ -44,7 +44,7 @@
 -- 'EditsListingsDeleteall' request conforms to.
 type EditsListingsDeleteallResource =
      "androidpublisher" :>
-       "v2" :>
+       "v3" :>
          "applications" :>
            Capture "packageName" Text :>
              "edits" :>
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
@@ -45,7 +45,7 @@
 -- 'EditsListingsGet' request conforms to.
 type EditsListingsGetResource =
      "androidpublisher" :>
-       "v2" :>
+       "v3" :>
          "applications" :>
            Capture "packageName" Text :>
              "edits" :>
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
@@ -44,7 +44,7 @@
 -- 'EditsListingsList' request conforms to.
 type EditsListingsListResource =
      "androidpublisher" :>
-       "v2" :>
+       "v3" :>
          "applications" :>
            Capture "packageName" Text :>
              "edits" :>
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
@@ -47,7 +47,7 @@
 -- 'EditsListingsPatch' request conforms to.
 type EditsListingsPatchResource =
      "androidpublisher" :>
-       "v2" :>
+       "v3" :>
          "applications" :>
            Capture "packageName" Text :>
              "edits" :>
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
@@ -46,7 +46,7 @@
 -- 'EditsListingsUpdate' request conforms to.
 type EditsListingsUpdateResource =
      "androidpublisher" :>
-       "v2" :>
+       "v3" :>
          "applications" :>
            Capture "packageName" Text :>
              "edits" :>
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
@@ -43,19 +43,19 @@
 -- 'EditsTestersGet' request conforms to.
 type EditsTestersGetResource =
      "androidpublisher" :>
-       "v2" :>
+       "v3" :>
          "applications" :>
            Capture "packageName" Text :>
              "edits" :>
                Capture "editId" Text :>
                  "testers" :>
-                   Capture "track" EditsTestersGetTrack :>
+                   Capture "track" Text :>
                      QueryParam "alt" AltJSON :> Get '[JSON] Testers
 
 --
 -- /See:/ 'editsTestersGet' smart constructor.
 data EditsTestersGet = EditsTestersGet'
-    { _etgTrack       :: !EditsTestersGetTrack
+    { _etgTrack       :: !Text
     , _etgPackageName :: !Text
     , _etgEditId      :: !Text
     } deriving (Eq,Show,Data,Typeable,Generic)
@@ -70,7 +70,7 @@
 --
 -- * 'etgEditId'
 editsTestersGet
-    :: EditsTestersGetTrack -- ^ 'etgTrack'
+    :: Text -- ^ 'etgTrack'
     -> Text -- ^ 'etgPackageName'
     -> Text -- ^ 'etgEditId'
     -> EditsTestersGet
@@ -81,7 +81,9 @@
     , _etgEditId = pEtgEditId_
     }
 
-etgTrack :: Lens' EditsTestersGet EditsTestersGetTrack
+-- | The track to read or modify. Acceptable values are: \"alpha\", \"beta\",
+-- \"production\", \"rollout\" or \"internal\".
+etgTrack :: Lens' EditsTestersGet Text
 etgTrack = lens _etgTrack (\ s a -> s{_etgTrack = a})
 
 -- | Unique identifier for the Android app that is being updated; for
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
@@ -44,20 +44,20 @@
 -- 'EditsTestersPatch' request conforms to.
 type EditsTestersPatchResource =
      "androidpublisher" :>
-       "v2" :>
+       "v3" :>
          "applications" :>
            Capture "packageName" Text :>
              "edits" :>
                Capture "editId" Text :>
                  "testers" :>
-                   Capture "track" EditsTestersPatchTrack :>
+                   Capture "track" Text :>
                      QueryParam "alt" AltJSON :>
                        ReqBody '[JSON] Testers :> Patch '[JSON] Testers
 
 --
 -- /See:/ 'editsTestersPatch' smart constructor.
 data EditsTestersPatch = EditsTestersPatch'
-    { _etpTrack       :: !EditsTestersPatchTrack
+    { _etpTrack       :: !Text
     , _etpPackageName :: !Text
     , _etpPayload     :: !Testers
     , _etpEditId      :: !Text
@@ -75,7 +75,7 @@
 --
 -- * 'etpEditId'
 editsTestersPatch
-    :: EditsTestersPatchTrack -- ^ 'etpTrack'
+    :: Text -- ^ 'etpTrack'
     -> Text -- ^ 'etpPackageName'
     -> Testers -- ^ 'etpPayload'
     -> Text -- ^ 'etpEditId'
@@ -88,7 +88,9 @@
     , _etpEditId = pEtpEditId_
     }
 
-etpTrack :: Lens' EditsTestersPatch EditsTestersPatchTrack
+-- | The track to read or modify. Acceptable values are: \"alpha\", \"beta\",
+-- \"production\", \"rollout\" or \"internal\".
+etpTrack :: Lens' EditsTestersPatch Text
 etpTrack = lens _etpTrack (\ s a -> s{_etpTrack = a})
 
 -- | Unique identifier for the Android app that is being updated; for
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
@@ -44,20 +44,20 @@
 -- 'EditsTestersUpdate' request conforms to.
 type EditsTestersUpdateResource =
      "androidpublisher" :>
-       "v2" :>
+       "v3" :>
          "applications" :>
            Capture "packageName" Text :>
              "edits" :>
                Capture "editId" Text :>
                  "testers" :>
-                   Capture "track" EditsTestersUpdateTrack :>
+                   Capture "track" Text :>
                      QueryParam "alt" AltJSON :>
                        ReqBody '[JSON] Testers :> Put '[JSON] Testers
 
 --
 -- /See:/ 'editsTestersUpdate' smart constructor.
 data EditsTestersUpdate = EditsTestersUpdate'
-    { _etutTrack       :: !EditsTestersUpdateTrack
+    { _etutTrack       :: !Text
     , _etutPackageName :: !Text
     , _etutPayload     :: !Testers
     , _etutEditId      :: !Text
@@ -75,7 +75,7 @@
 --
 -- * 'etutEditId'
 editsTestersUpdate
-    :: EditsTestersUpdateTrack -- ^ 'etutTrack'
+    :: Text -- ^ 'etutTrack'
     -> Text -- ^ 'etutPackageName'
     -> Testers -- ^ 'etutPayload'
     -> Text -- ^ 'etutEditId'
@@ -88,7 +88,9 @@
     , _etutEditId = pEtutEditId_
     }
 
-etutTrack :: Lens' EditsTestersUpdate EditsTestersUpdateTrack
+-- | The track to read or modify. Acceptable values are: \"alpha\", \"beta\",
+-- \"production\", \"rollout\" or \"internal\".
+etutTrack :: Lens' EditsTestersUpdate Text
 etutTrack
   = lens _etutTrack (\ s a -> s{_etutTrack = a})
 
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
@@ -46,13 +46,13 @@
 -- 'EditsTracksGet' request conforms to.
 type EditsTracksGetResource =
      "androidpublisher" :>
-       "v2" :>
+       "v3" :>
          "applications" :>
            Capture "packageName" Text :>
              "edits" :>
                Capture "editId" Text :>
                  "tracks" :>
-                   Capture "track" EditsTracksGetTrack :>
+                   Capture "track" Text :>
                      QueryParam "alt" AltJSON :> Get '[JSON] Track
 
 -- | Fetches the track configuration for the specified track type. Includes
@@ -60,7 +60,7 @@
 --
 -- /See:/ 'editsTracksGet' smart constructor.
 data EditsTracksGet = EditsTracksGet'
-    { _etgtTrack       :: !EditsTracksGetTrack
+    { _etgtTrack       :: !Text
     , _etgtPackageName :: !Text
     , _etgtEditId      :: !Text
     } deriving (Eq,Show,Data,Typeable,Generic)
@@ -75,7 +75,7 @@
 --
 -- * 'etgtEditId'
 editsTracksGet
-    :: EditsTracksGetTrack -- ^ 'etgtTrack'
+    :: Text -- ^ 'etgtTrack'
     -> Text -- ^ 'etgtPackageName'
     -> Text -- ^ 'etgtEditId'
     -> EditsTracksGet
@@ -86,8 +86,8 @@
     , _etgtEditId = pEtgtEditId_
     }
 
--- | The track type to read or modify.
-etgtTrack :: Lens' EditsTracksGet EditsTracksGetTrack
+-- | The track to read or modify.
+etgtTrack :: Lens' EditsTracksGet Text
 etgtTrack
   = lens _etgtTrack (\ s a -> s{_etgtTrack = a})
 
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
@@ -44,7 +44,7 @@
 -- 'EditsTracksList' request conforms to.
 type EditsTracksListResource =
      "androidpublisher" :>
-       "v2" :>
+       "v3" :>
          "applications" :>
            Capture "packageName" Text :>
              "edits" :>
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
@@ -49,13 +49,13 @@
 -- 'EditsTracksPatch' request conforms to.
 type EditsTracksPatchResource =
      "androidpublisher" :>
-       "v2" :>
+       "v3" :>
          "applications" :>
            Capture "packageName" Text :>
              "edits" :>
                Capture "editId" Text :>
                  "tracks" :>
-                   Capture "track" EditsTracksPatchTrack :>
+                   Capture "track" Text :>
                      QueryParam "alt" AltJSON :>
                        ReqBody '[JSON] Track :> Patch '[JSON] Track
 
@@ -66,7 +66,7 @@
 --
 -- /See:/ 'editsTracksPatch' smart constructor.
 data EditsTracksPatch = EditsTracksPatch'
-    { _etptTrack       :: !EditsTracksPatchTrack
+    { _etptTrack       :: !Text
     , _etptPackageName :: !Text
     , _etptPayload     :: !Track
     , _etptEditId      :: !Text
@@ -84,7 +84,7 @@
 --
 -- * 'etptEditId'
 editsTracksPatch
-    :: EditsTracksPatchTrack -- ^ 'etptTrack'
+    :: Text -- ^ 'etptTrack'
     -> Text -- ^ 'etptPackageName'
     -> Track -- ^ 'etptPayload'
     -> Text -- ^ 'etptEditId'
@@ -97,8 +97,8 @@
     , _etptEditId = pEtptEditId_
     }
 
--- | The track type to read or modify.
-etptTrack :: Lens' EditsTracksPatch EditsTracksPatchTrack
+-- | The track to read or modify.
+etptTrack :: Lens' EditsTracksPatch Text
 etptTrack
   = lens _etptTrack (\ s a -> s{_etptTrack = a})
 
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
@@ -48,13 +48,13 @@
 -- 'EditsTracksUpdate' request conforms to.
 type EditsTracksUpdateResource =
      "androidpublisher" :>
-       "v2" :>
+       "v3" :>
          "applications" :>
            Capture "packageName" Text :>
              "edits" :>
                Capture "editId" Text :>
                  "tracks" :>
-                   Capture "track" EditsTracksUpdateTrack :>
+                   Capture "track" Text :>
                      QueryParam "alt" AltJSON :>
                        ReqBody '[JSON] Track :> Put '[JSON] Track
 
@@ -64,7 +64,7 @@
 --
 -- /See:/ 'editsTracksUpdate' smart constructor.
 data EditsTracksUpdate = EditsTracksUpdate'
-    { _etuTrack       :: !EditsTracksUpdateTrack
+    { _etuTrack       :: !Text
     , _etuPackageName :: !Text
     , _etuPayload     :: !Track
     , _etuEditId      :: !Text
@@ -82,7 +82,7 @@
 --
 -- * 'etuEditId'
 editsTracksUpdate
-    :: EditsTracksUpdateTrack -- ^ 'etuTrack'
+    :: Text -- ^ 'etuTrack'
     -> Text -- ^ 'etuPackageName'
     -> Track -- ^ 'etuPayload'
     -> Text -- ^ 'etuEditId'
@@ -95,8 +95,8 @@
     , _etuEditId = pEtuEditId_
     }
 
--- | The track type to read or modify.
-etuTrack :: Lens' EditsTracksUpdate EditsTracksUpdateTrack
+-- | The track to read or modify.
+etuTrack :: Lens' EditsTracksUpdate Text
 etuTrack = lens _etuTrack (\ s a -> s{_etuTrack = a})
 
 -- | Unique identifier for the Android app that is being updated; for
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
@@ -45,7 +45,7 @@
 -- 'EditsValidate' request conforms to.
 type EditsValidateResource =
      "androidpublisher" :>
-       "v2" :>
+       "v3" :>
          "applications" :>
            Capture "packageName" Text :>
              "edits" :>
diff --git a/gen/Network/Google/Resource/AndroidPublisher/Entitlements/List.hs b/gen/Network/Google/Resource/AndroidPublisher/Entitlements/List.hs
deleted file mode 100644
--- a/gen/Network/Google/Resource/AndroidPublisher/Entitlements/List.hs
+++ /dev/null
@@ -1,135 +0,0 @@
-{-# 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.Entitlements.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)
---
--- Lists the user\'s current inapp item or subscription entitlements
---
--- /See:/ <https://developers.google.com/android-publisher Google Play Developer API Reference> for @androidpublisher.entitlements.list@.
-module Network.Google.Resource.AndroidPublisher.Entitlements.List
-    (
-    -- * REST Resource
-      EntitlementsListResource
-
-    -- * Creating a Request
-    , entitlementsList
-    , EntitlementsList
-
-    -- * Request Lenses
-    , elPackageName
-    , elToken
-    , elStartIndex
-    , elProductId
-    , elMaxResults
-    ) where
-
-import           Network.Google.AndroidPublisher.Types
-import           Network.Google.Prelude
-
--- | A resource alias for @androidpublisher.entitlements.list@ method which the
--- 'EntitlementsList' request conforms to.
-type EntitlementsListResource =
-     "androidpublisher" :>
-       "v2" :>
-         "applications" :>
-           Capture "packageName" Text :>
-             "entitlements" :>
-               QueryParam "token" Text :>
-                 QueryParam "startIndex" (Textual Word32) :>
-                   QueryParam "productId" Text :>
-                     QueryParam "maxResults" (Textual Word32) :>
-                       QueryParam "alt" AltJSON :>
-                         Get '[JSON] EntitlementsListResponse
-
--- | Lists the user\'s current inapp item or subscription entitlements
---
--- /See:/ 'entitlementsList' smart constructor.
-data EntitlementsList = EntitlementsList'
-    { _elPackageName :: !Text
-    , _elToken       :: !(Maybe Text)
-    , _elStartIndex  :: !(Maybe (Textual Word32))
-    , _elProductId   :: !(Maybe Text)
-    , _elMaxResults  :: !(Maybe (Textual Word32))
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'EntitlementsList' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'elPackageName'
---
--- * 'elToken'
---
--- * 'elStartIndex'
---
--- * 'elProductId'
---
--- * 'elMaxResults'
-entitlementsList
-    :: Text -- ^ 'elPackageName'
-    -> EntitlementsList
-entitlementsList pElPackageName_ =
-    EntitlementsList'
-    { _elPackageName = pElPackageName_
-    , _elToken = Nothing
-    , _elStartIndex = Nothing
-    , _elProductId = Nothing
-    , _elMaxResults = Nothing
-    }
-
--- | The package name of the application the inapp product was sold in (for
--- example, \'com.some.thing\').
-elPackageName :: Lens' EntitlementsList Text
-elPackageName
-  = lens _elPackageName
-      (\ s a -> s{_elPackageName = a})
-
-elToken :: Lens' EntitlementsList (Maybe Text)
-elToken = lens _elToken (\ s a -> s{_elToken = a})
-
-elStartIndex :: Lens' EntitlementsList (Maybe Word32)
-elStartIndex
-  = lens _elStartIndex (\ s a -> s{_elStartIndex = a})
-      . mapping _Coerce
-
--- | The product id of the inapp product (for example, \'sku1\'). This can be
--- used to restrict the result set.
-elProductId :: Lens' EntitlementsList (Maybe Text)
-elProductId
-  = lens _elProductId (\ s a -> s{_elProductId = a})
-
-elMaxResults :: Lens' EntitlementsList (Maybe Word32)
-elMaxResults
-  = lens _elMaxResults (\ s a -> s{_elMaxResults = a})
-      . mapping _Coerce
-
-instance GoogleRequest EntitlementsList where
-        type Rs EntitlementsList = EntitlementsListResponse
-        type Scopes EntitlementsList = '[]
-        requestClient EntitlementsList'{..}
-          = go _elPackageName _elToken _elStartIndex
-              _elProductId
-              _elMaxResults
-              (Just AltJSON)
-              androidPublisherService
-          where go
-                  = buildClient
-                      (Proxy :: Proxy EntitlementsListResource)
-                      mempty
diff --git a/gen/Network/Google/Resource/AndroidPublisher/InAppProducts/Batch.hs b/gen/Network/Google/Resource/AndroidPublisher/InAppProducts/Batch.hs
deleted file mode 100644
--- a/gen/Network/Google/Resource/AndroidPublisher/InAppProducts/Batch.hs
+++ /dev/null
@@ -1,87 +0,0 @@
-{-# 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.InAppProducts.Batch
--- 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)
---
--- /See:/ <https://developers.google.com/android-publisher Google Play Developer API Reference> for @androidpublisher.inappproducts.batch@.
-module Network.Google.Resource.AndroidPublisher.InAppProducts.Batch
-    (
-    -- * REST Resource
-      InAppProductsBatchResource
-
-    -- * Creating a Request
-    , inAppProductsBatch
-    , InAppProductsBatch
-
-    -- * Request Lenses
-    , iapbPayload
-    ) where
-
-import           Network.Google.AndroidPublisher.Types
-import           Network.Google.Prelude
-
--- | A resource alias for @androidpublisher.inappproducts.batch@ method which the
--- 'InAppProductsBatch' request conforms to.
-type InAppProductsBatchResource =
-     "androidpublisher" :>
-       "v2" :>
-         "applications" :>
-           "inappproducts" :>
-             "batch" :>
-               QueryParam "alt" AltJSON :>
-                 ReqBody '[JSON] InAppProductsBatchRequest :>
-                   Post '[JSON] InAppProductsBatchResponse
-
---
--- /See:/ 'inAppProductsBatch' smart constructor.
-newtype InAppProductsBatch = InAppProductsBatch'
-    { _iapbPayload :: InAppProductsBatchRequest
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'InAppProductsBatch' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'iapbPayload'
-inAppProductsBatch
-    :: InAppProductsBatchRequest -- ^ 'iapbPayload'
-    -> InAppProductsBatch
-inAppProductsBatch pIapbPayload_ =
-    InAppProductsBatch'
-    { _iapbPayload = pIapbPayload_
-    }
-
--- | Multipart request metadata.
-iapbPayload :: Lens' InAppProductsBatch InAppProductsBatchRequest
-iapbPayload
-  = lens _iapbPayload (\ s a -> s{_iapbPayload = a})
-
-instance GoogleRequest InAppProductsBatch where
-        type Rs InAppProductsBatch =
-             InAppProductsBatchResponse
-        type Scopes InAppProductsBatch =
-             '["https://www.googleapis.com/auth/androidpublisher"]
-        requestClient InAppProductsBatch'{..}
-          = go (Just AltJSON) _iapbPayload
-              androidPublisherService
-          where go
-                  = buildClient
-                      (Proxy :: Proxy InAppProductsBatchResource)
-                      mempty
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
@@ -44,7 +44,7 @@
 -- 'InAppProductsDelete' request conforms to.
 type InAppProductsDeleteResource =
      "androidpublisher" :>
-       "v2" :>
+       "v3" :>
          "applications" :>
            Capture "packageName" Text :>
              "inappproducts" :>
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
@@ -44,7 +44,7 @@
 -- 'InAppProductsGet' request conforms to.
 type InAppProductsGetResource =
      "androidpublisher" :>
-       "v2" :>
+       "v3" :>
          "applications" :>
            Capture "packageName" Text :>
              "inappproducts" :>
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
@@ -45,7 +45,7 @@
 -- 'InAppProductsInsert' request conforms to.
 type InAppProductsInsertResource =
      "androidpublisher" :>
-       "v2" :>
+       "v3" :>
          "applications" :>
            Capture "packageName" Text :>
              "inappproducts" :>
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
@@ -47,7 +47,7 @@
 -- 'InAppProductsList' request conforms to.
 type InAppProductsListResource =
      "androidpublisher" :>
-       "v2" :>
+       "v3" :>
          "applications" :>
            Capture "packageName" Text :>
              "inappproducts" :>
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
@@ -47,7 +47,7 @@
 -- 'InAppProductsPatch' request conforms to.
 type InAppProductsPatchResource =
      "androidpublisher" :>
-       "v2" :>
+       "v3" :>
          "applications" :>
            Capture "packageName" Text :>
              "inappproducts" :>
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
@@ -46,7 +46,7 @@
 -- 'InAppProductsUpdate' request conforms to.
 type InAppProductsUpdateResource =
      "androidpublisher" :>
-       "v2" :>
+       "v3" :>
          "applications" :>
            Capture "packageName" Text :>
              "inappproducts" :>
diff --git a/gen/Network/Google/Resource/AndroidPublisher/Orders/Refund.hs b/gen/Network/Google/Resource/AndroidPublisher/Orders/Refund.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/AndroidPublisher/Orders/Refund.hs
@@ -0,0 +1,116 @@
+{-# 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.Orders.Refund
+-- 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)
+--
+-- Refund a user\'s subscription or in-app purchase order.
+--
+-- /See:/ <https://developers.google.com/android-publisher Google Play Developer API Reference> for @androidpublisher.orders.refund@.
+module Network.Google.Resource.AndroidPublisher.Orders.Refund
+    (
+    -- * REST Resource
+      OrdersRefundResource
+
+    -- * Creating a Request
+    , ordersRefund
+    , OrdersRefund
+
+    -- * Request Lenses
+    , orPackageName
+    , orRevoke
+    , orOrderId
+    ) where
+
+import           Network.Google.AndroidPublisher.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @androidpublisher.orders.refund@ method which the
+-- 'OrdersRefund' request conforms to.
+type OrdersRefundResource =
+     "androidpublisher" :>
+       "v3" :>
+         "applications" :>
+           Capture "packageName" Text :>
+             "orders" :>
+               CaptureMode "orderId" "refund" Text :>
+                 QueryParam "revoke" Bool :>
+                   QueryParam "alt" AltJSON :> Post '[JSON] ()
+
+-- | Refund a user\'s subscription or in-app purchase order.
+--
+-- /See:/ 'ordersRefund' smart constructor.
+data OrdersRefund = OrdersRefund'
+    { _orPackageName :: !Text
+    , _orRevoke      :: !(Maybe Bool)
+    , _orOrderId     :: !Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'OrdersRefund' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'orPackageName'
+--
+-- * 'orRevoke'
+--
+-- * 'orOrderId'
+ordersRefund
+    :: Text -- ^ 'orPackageName'
+    -> Text -- ^ 'orOrderId'
+    -> OrdersRefund
+ordersRefund pOrPackageName_ pOrOrderId_ =
+    OrdersRefund'
+    { _orPackageName = pOrPackageName_
+    , _orRevoke = Nothing
+    , _orOrderId = pOrOrderId_
+    }
+
+-- | The package name of the application for which this subscription or
+-- in-app item was purchased (for example, \'com.some.thing\').
+orPackageName :: Lens' OrdersRefund Text
+orPackageName
+  = lens _orPackageName
+      (\ s a -> s{_orPackageName = a})
+
+-- | Whether to revoke the purchased item. If set to true, access to the
+-- subscription or in-app item will be terminated immediately. If the item
+-- is a recurring subscription, all future payments will also be
+-- terminated. Consumed in-app items need to be handled by developer\'s
+-- app. (optional)
+orRevoke :: Lens' OrdersRefund (Maybe Bool)
+orRevoke = lens _orRevoke (\ s a -> s{_orRevoke = a})
+
+-- | The order ID provided to the user when the subscription or in-app order
+-- was purchased.
+orOrderId :: Lens' OrdersRefund Text
+orOrderId
+  = lens _orOrderId (\ s a -> s{_orOrderId = a})
+
+instance GoogleRequest OrdersRefund where
+        type Rs OrdersRefund = ()
+        type Scopes OrdersRefund =
+             '["https://www.googleapis.com/auth/androidpublisher"]
+        requestClient OrdersRefund'{..}
+          = go _orPackageName _orOrderId _orRevoke
+              (Just AltJSON)
+              androidPublisherService
+          where go
+                  = buildClient (Proxy :: Proxy OrdersRefundResource)
+                      mempty
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
@@ -45,7 +45,7 @@
 -- 'PurchasesProductsGet' request conforms to.
 type PurchasesProductsGetResource =
      "androidpublisher" :>
-       "v2" :>
+       "v3" :>
          "applications" :>
            Capture "packageName" Text :>
              "purchases" :>
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
@@ -46,7 +46,7 @@
 -- 'PurchasesSubscriptionsCancel' request conforms to.
 type PurchasesSubscriptionsCancelResource =
      "androidpublisher" :>
-       "v2" :>
+       "v3" :>
          "applications" :>
            Capture "packageName" Text :>
              "purchases" :>
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
@@ -47,7 +47,7 @@
 -- 'PurchasesSubscriptionsDefer' request conforms to.
 type PurchasesSubscriptionsDeferResource =
      "androidpublisher" :>
-       "v2" :>
+       "v3" :>
          "applications" :>
            Capture "packageName" Text :>
              "purchases" :>
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
@@ -46,7 +46,7 @@
 -- 'PurchasesSubscriptionsGet' request conforms to.
 type PurchasesSubscriptionsGetResource =
      "androidpublisher" :>
-       "v2" :>
+       "v3" :>
          "applications" :>
            Capture "packageName" Text :>
              "purchases" :>
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
@@ -46,7 +46,7 @@
 -- 'PurchasesSubscriptionsRefund' request conforms to.
 type PurchasesSubscriptionsRefundResource =
      "androidpublisher" :>
-       "v2" :>
+       "v3" :>
          "applications" :>
            Capture "packageName" Text :>
              "purchases" :>
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
@@ -47,7 +47,7 @@
 -- 'PurchasesSubscriptionsRevoke' request conforms to.
 type PurchasesSubscriptionsRevokeResource =
      "androidpublisher" :>
-       "v2" :>
+       "v3" :>
          "applications" :>
            Capture "packageName" Text :>
              "purchases" :>
diff --git a/gen/Network/Google/Resource/AndroidPublisher/Purchases/Voidedpurchases/List.hs b/gen/Network/Google/Resource/AndroidPublisher/Purchases/Voidedpurchases/List.hs
--- a/gen/Network/Google/Resource/AndroidPublisher/Purchases/Voidedpurchases/List.hs
+++ b/gen/Network/Google/Resource/AndroidPublisher/Purchases/Voidedpurchases/List.hs
@@ -20,7 +20,7 @@
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- Lists the purchases that were cancelled, refunded or charged-back.
+-- Lists the purchases that were canceled, refunded or charged-back.
 --
 -- /See:/ <https://developers.google.com/android-publisher Google Play Developer API Reference> for @androidpublisher.purchases.voidedpurchases.list@.
 module Network.Google.Resource.AndroidPublisher.Purchases.Voidedpurchases.List
@@ -48,7 +48,7 @@
 -- 'PurchasesVoidedpurchasesList' request conforms to.
 type PurchasesVoidedpurchasesListResource =
      "androidpublisher" :>
-       "v2" :>
+       "v3" :>
          "applications" :>
            Capture "packageName" Text :>
              "purchases" :>
@@ -61,7 +61,7 @@
                            QueryParam "alt" AltJSON :>
                              Get '[JSON] VoidedPurchasesListResponse
 
--- | Lists the purchases that were cancelled, refunded or charged-back.
+-- | Lists the purchases that were canceled, refunded or charged-back.
 --
 -- /See:/ 'purchasesVoidedpurchasesList' smart constructor.
 data PurchasesVoidedpurchasesList = PurchasesVoidedpurchasesList'
@@ -111,7 +111,9 @@
 -- | The time, in milliseconds since the Epoch, of the oldest voided in-app
 -- product purchase that you want to see in the response. The value of this
 -- parameter cannot be older than 30 days and is ignored if a pagination
--- token is set. Default value is current time minus 30 days.
+-- token is set. Default value is current time minus 30 days. Note: This
+-- filter is applied on the time at which the record is seen as voided by
+-- our systems and not the actual voided time returned in the response.
 pvlStartTime :: Lens' PurchasesVoidedpurchasesList (Maybe Int64)
 pvlStartTime
   = lens _pvlStartTime (\ s a -> s{_pvlStartTime = a})
@@ -123,7 +125,9 @@
 -- | The time, in milliseconds since the Epoch, of the newest voided in-app
 -- product purchase that you want to see in the response. The value of this
 -- parameter cannot be greater than the current time and is ignored if a
--- pagination token is set. Default value is current time.
+-- pagination token is set. Default value is current time. Note: This
+-- filter is applied on the time at which the record is seen as voided by
+-- our systems and not the actual voided time returned in the response.
 pvlEndTime :: Lens' PurchasesVoidedpurchasesList (Maybe Int64)
 pvlEndTime
   = lens _pvlEndTime (\ s a -> s{_pvlEndTime = a}) .
diff --git a/gen/Network/Google/Resource/AndroidPublisher/Reviews/Get.hs b/gen/Network/Google/Resource/AndroidPublisher/Reviews/Get.hs
--- a/gen/Network/Google/Resource/AndroidPublisher/Reviews/Get.hs
+++ b/gen/Network/Google/Resource/AndroidPublisher/Reviews/Get.hs
@@ -45,7 +45,7 @@
 -- 'ReviewsGet' request conforms to.
 type ReviewsGetResource =
      "androidpublisher" :>
-       "v2" :>
+       "v3" :>
          "applications" :>
            Capture "packageName" Text :>
              "reviews" :>
diff --git a/gen/Network/Google/Resource/AndroidPublisher/Reviews/List.hs b/gen/Network/Google/Resource/AndroidPublisher/Reviews/List.hs
--- a/gen/Network/Google/Resource/AndroidPublisher/Reviews/List.hs
+++ b/gen/Network/Google/Resource/AndroidPublisher/Reviews/List.hs
@@ -20,7 +20,7 @@
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- Returns a list of reviews.
+-- Returns a list of reviews. Only reviews from last week will be returned.
 --
 -- /See:/ <https://developers.google.com/android-publisher Google Play Developer API Reference> for @androidpublisher.reviews.list@.
 module Network.Google.Resource.AndroidPublisher.Reviews.List
@@ -47,7 +47,7 @@
 -- 'ReviewsList' request conforms to.
 type ReviewsListResource =
      "androidpublisher" :>
-       "v2" :>
+       "v3" :>
          "applications" :>
            Capture "packageName" Text :>
              "reviews" :>
@@ -58,7 +58,7 @@
                        QueryParam "alt" AltJSON :>
                          Get '[JSON] ReviewsListResponse
 
--- | Returns a list of reviews.
+-- | Returns a list of reviews. Only reviews from last week will be returned.
 --
 -- /See:/ 'reviewsList' smart constructor.
 data ReviewsList = ReviewsList'
diff --git a/gen/Network/Google/Resource/AndroidPublisher/Reviews/Reply.hs b/gen/Network/Google/Resource/AndroidPublisher/Reviews/Reply.hs
--- a/gen/Network/Google/Resource/AndroidPublisher/Reviews/Reply.hs
+++ b/gen/Network/Google/Resource/AndroidPublisher/Reviews/Reply.hs
@@ -45,7 +45,7 @@
 -- 'ReviewsReply' request conforms to.
 type ReviewsReplyResource =
      "androidpublisher" :>
-       "v2" :>
+       "v3" :>
          "applications" :>
            Capture "packageName" Text :>
              "reviews" :>
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.3.0
+version:               0.4.0
 synopsis:              Google Play Developer SDK.
 homepage:              https://github.com/brendanhay/gogol
 bug-reports:           https://github.com/brendanhay/gogol/issues
@@ -14,12 +14,12 @@
 extra-source-files:    README.md src/.gitkeep
 
 description:
-    Lets Android application developers access their Google Play accounts.
+    Accesses Android application developers\' Google Play accounts.
     .
     /Warning:/ This is an experimental prototype/preview release which is still
     under exploratory development and not intended for public use, caveat emptor!
     .
-    This library is compatible with version @v2@
+    This library is compatible with version @v3@
     of the API.
 
 source-repository head
@@ -35,15 +35,11 @@
     exposed-modules:
           Network.Google.AndroidPublisher
         , Network.Google.AndroidPublisher.Types
-        , Network.Google.Resource.AndroidPublisher.Edits.APKListings.Delete
-        , Network.Google.Resource.AndroidPublisher.Edits.APKListings.Deleteall
-        , Network.Google.Resource.AndroidPublisher.Edits.APKListings.Get
-        , Network.Google.Resource.AndroidPublisher.Edits.APKListings.List
-        , Network.Google.Resource.AndroidPublisher.Edits.APKListings.Patch
-        , Network.Google.Resource.AndroidPublisher.Edits.APKListings.Update
         , Network.Google.Resource.AndroidPublisher.Edits.APKs.Addexternallyhosted
         , Network.Google.Resource.AndroidPublisher.Edits.APKs.List
         , Network.Google.Resource.AndroidPublisher.Edits.APKs.Upload
+        , Network.Google.Resource.AndroidPublisher.Edits.Bundles.List
+        , Network.Google.Resource.AndroidPublisher.Edits.Bundles.Upload
         , Network.Google.Resource.AndroidPublisher.Edits.Commit
         , Network.Google.Resource.AndroidPublisher.Edits.Delete
         , Network.Google.Resource.AndroidPublisher.Edits.DeobfuscationFiles.Upload
@@ -74,14 +70,13 @@
         , Network.Google.Resource.AndroidPublisher.Edits.Tracks.Patch
         , Network.Google.Resource.AndroidPublisher.Edits.Tracks.Update
         , Network.Google.Resource.AndroidPublisher.Edits.Validate
-        , Network.Google.Resource.AndroidPublisher.Entitlements.List
-        , Network.Google.Resource.AndroidPublisher.InAppProducts.Batch
         , Network.Google.Resource.AndroidPublisher.InAppProducts.Delete
         , Network.Google.Resource.AndroidPublisher.InAppProducts.Get
         , Network.Google.Resource.AndroidPublisher.InAppProducts.Insert
         , Network.Google.Resource.AndroidPublisher.InAppProducts.List
         , Network.Google.Resource.AndroidPublisher.InAppProducts.Patch
         , Network.Google.Resource.AndroidPublisher.InAppProducts.Update
+        , Network.Google.Resource.AndroidPublisher.Orders.Refund
         , Network.Google.Resource.AndroidPublisher.Purchases.Products.Get
         , Network.Google.Resource.AndroidPublisher.Purchases.Subscriptions.Cancel
         , Network.Google.Resource.AndroidPublisher.Purchases.Subscriptions.Defer
@@ -98,5 +93,5 @@
         , Network.Google.AndroidPublisher.Types.Sum
 
     build-depends:
-          gogol-core == 0.3.0.*
+          gogol-core == 0.4.0.*
         , base       >= 4.7 && < 5
