diff --git a/README.md b/README.md
--- a/README.md
+++ b/README.md
@@ -8,12 +8,12 @@
 
 ## Version
 
-`0.5.0`
+`1.0.0`
 
 
 ## Description
 
-A client library for the Google Play Developer.
+A client library for the Google Play Android Developer.
 
 
 ## Contribute
diff --git a/Setup.hs b/Setup.hs
--- a/Setup.hs
+++ b/Setup.hs
@@ -1,2 +1,3 @@
-import           Distribution.Simple
+import Distribution.Simple
+
 main = defaultMain
diff --git a/gen/Gogol/AndroidPublisher.hs b/gen/Gogol/AndroidPublisher.hs
new file mode 100644
--- /dev/null
+++ b/gen/Gogol/AndroidPublisher.hs
@@ -0,0 +1,1877 @@
+{-# LANGUAGE DataKinds #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE ImportQualifiedPost #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-name-shadowing #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- |
+-- Module      : Gogol.AndroidPublisher
+-- Copyright   : (c) 2015-2025 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay+gogol@gmail.com>
+--               Toni Cebrián <toni@tonicebrian.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Lets Android application developers access their Google Play accounts. At a high level, the expected workflow is to \"insert\" an Edit, make changes as necessary, and then \"commit\" it.
+--
+-- /See:/ <https://developers.google.com/android-publisher Google Play Android Developer API Reference>
+module Gogol.AndroidPublisher
+  ( -- * Configuration
+    androidPublisherService,
+
+    -- * OAuth Scopes
+    Androidpublisher'FullControl,
+
+    -- * Resources
+
+    -- ** androidpublisher.applications.dataSafety
+    AndroidPublisherApplicationsDataSafetyResource,
+    AndroidPublisherApplicationsDataSafety (..),
+    newAndroidPublisherApplicationsDataSafety,
+
+    -- ** androidpublisher.applications.deviceTierConfigs.create
+    AndroidPublisherApplicationsDeviceTierConfigsCreateResource,
+    AndroidPublisherApplicationsDeviceTierConfigsCreate (..),
+    newAndroidPublisherApplicationsDeviceTierConfigsCreate,
+
+    -- ** androidpublisher.applications.deviceTierConfigs.get
+    AndroidPublisherApplicationsDeviceTierConfigsGetResource,
+    AndroidPublisherApplicationsDeviceTierConfigsGet (..),
+    newAndroidPublisherApplicationsDeviceTierConfigsGet,
+
+    -- ** androidpublisher.applications.deviceTierConfigs.list
+    AndroidPublisherApplicationsDeviceTierConfigsListResource,
+    AndroidPublisherApplicationsDeviceTierConfigsList (..),
+    newAndroidPublisherApplicationsDeviceTierConfigsList,
+
+    -- ** androidpublisher.apprecovery.addTargeting
+    AndroidPublisherApprecoveryAddTargetingResource,
+    AndroidPublisherApprecoveryAddTargeting (..),
+    newAndroidPublisherApprecoveryAddTargeting,
+
+    -- ** androidpublisher.apprecovery.cancel
+    AndroidPublisherApprecoveryCancelResource,
+    AndroidPublisherApprecoveryCancel (..),
+    newAndroidPublisherApprecoveryCancel,
+
+    -- ** androidpublisher.apprecovery.create
+    AndroidPublisherApprecoveryCreateResource,
+    AndroidPublisherApprecoveryCreate (..),
+    newAndroidPublisherApprecoveryCreate,
+
+    -- ** androidpublisher.apprecovery.deploy
+    AndroidPublisherApprecoveryDeployResource,
+    AndroidPublisherApprecoveryDeploy (..),
+    newAndroidPublisherApprecoveryDeploy,
+
+    -- ** androidpublisher.apprecovery.list
+    AndroidPublisherApprecoveryListResource,
+    AndroidPublisherApprecoveryList (..),
+    newAndroidPublisherApprecoveryList,
+
+    -- ** androidpublisher.edits.apks.addexternallyhosted
+    AndroidPublisherEditsApksAddexternallyhostedResource,
+    AndroidPublisherEditsApksAddexternallyhosted (..),
+    newAndroidPublisherEditsApksAddexternallyhosted,
+
+    -- ** androidpublisher.edits.apks.list
+    AndroidPublisherEditsApksListResource,
+    AndroidPublisherEditsApksList (..),
+    newAndroidPublisherEditsApksList,
+
+    -- ** androidpublisher.edits.apks.upload
+    AndroidPublisherEditsApksUploadResource,
+    AndroidPublisherEditsApksUpload (..),
+    newAndroidPublisherEditsApksUpload,
+
+    -- ** androidpublisher.edits.bundles.list
+    AndroidPublisherEditsBundlesListResource,
+    AndroidPublisherEditsBundlesList (..),
+    newAndroidPublisherEditsBundlesList,
+
+    -- ** androidpublisher.edits.bundles.upload
+    AndroidPublisherEditsBundlesUploadResource,
+    AndroidPublisherEditsBundlesUpload (..),
+    newAndroidPublisherEditsBundlesUpload,
+
+    -- ** androidpublisher.edits.commit
+    AndroidPublisherEditsCommitResource,
+    AndroidPublisherEditsCommit (..),
+    newAndroidPublisherEditsCommit,
+
+    -- ** androidpublisher.edits.countryavailability.get
+    AndroidPublisherEditsCountryavailabilityGetResource,
+    AndroidPublisherEditsCountryavailabilityGet (..),
+    newAndroidPublisherEditsCountryavailabilityGet,
+
+    -- ** androidpublisher.edits.delete
+    AndroidPublisherEditsDeleteResource,
+    AndroidPublisherEditsDelete (..),
+    newAndroidPublisherEditsDelete,
+
+    -- ** androidpublisher.edits.deobfuscationfiles.upload
+    AndroidPublisherEditsDeobfuscationfilesUploadResource,
+    AndroidPublisherEditsDeobfuscationfilesUpload (..),
+    newAndroidPublisherEditsDeobfuscationfilesUpload,
+
+    -- ** androidpublisher.edits.details.get
+    AndroidPublisherEditsDetailsGetResource,
+    AndroidPublisherEditsDetailsGet (..),
+    newAndroidPublisherEditsDetailsGet,
+
+    -- ** androidpublisher.edits.details.patch
+    AndroidPublisherEditsDetailsPatchResource,
+    AndroidPublisherEditsDetailsPatch (..),
+    newAndroidPublisherEditsDetailsPatch,
+
+    -- ** androidpublisher.edits.details.update
+    AndroidPublisherEditsDetailsUpdateResource,
+    AndroidPublisherEditsDetailsUpdate (..),
+    newAndroidPublisherEditsDetailsUpdate,
+
+    -- ** androidpublisher.edits.expansionfiles.get
+    AndroidPublisherEditsExpansionfilesGetResource,
+    AndroidPublisherEditsExpansionfilesGet (..),
+    newAndroidPublisherEditsExpansionfilesGet,
+
+    -- ** androidpublisher.edits.expansionfiles.patch
+    AndroidPublisherEditsExpansionfilesPatchResource,
+    AndroidPublisherEditsExpansionfilesPatch (..),
+    newAndroidPublisherEditsExpansionfilesPatch,
+
+    -- ** androidpublisher.edits.expansionfiles.update
+    AndroidPublisherEditsExpansionfilesUpdateResource,
+    AndroidPublisherEditsExpansionfilesUpdate (..),
+    newAndroidPublisherEditsExpansionfilesUpdate,
+
+    -- ** androidpublisher.edits.expansionfiles.upload
+    AndroidPublisherEditsExpansionfilesUploadResource,
+    AndroidPublisherEditsExpansionfilesUpload (..),
+    newAndroidPublisherEditsExpansionfilesUpload,
+
+    -- ** androidpublisher.edits.get
+    AndroidPublisherEditsGetResource,
+    AndroidPublisherEditsGet (..),
+    newAndroidPublisherEditsGet,
+
+    -- ** androidpublisher.edits.images.delete
+    AndroidPublisherEditsImagesDeleteResource,
+    AndroidPublisherEditsImagesDelete (..),
+    newAndroidPublisherEditsImagesDelete,
+
+    -- ** androidpublisher.edits.images.deleteall
+    AndroidPublisherEditsImagesDeleteallResource,
+    AndroidPublisherEditsImagesDeleteall (..),
+    newAndroidPublisherEditsImagesDeleteall,
+
+    -- ** androidpublisher.edits.images.list
+    AndroidPublisherEditsImagesListResource,
+    AndroidPublisherEditsImagesList (..),
+    newAndroidPublisherEditsImagesList,
+
+    -- ** androidpublisher.edits.images.upload
+    AndroidPublisherEditsImagesUploadResource,
+    AndroidPublisherEditsImagesUpload (..),
+    newAndroidPublisherEditsImagesUpload,
+
+    -- ** androidpublisher.edits.insert
+    AndroidPublisherEditsInsertResource,
+    AndroidPublisherEditsInsert (..),
+    newAndroidPublisherEditsInsert,
+
+    -- ** androidpublisher.edits.listings.delete
+    AndroidPublisherEditsListingsDeleteResource,
+    AndroidPublisherEditsListingsDelete (..),
+    newAndroidPublisherEditsListingsDelete,
+
+    -- ** androidpublisher.edits.listings.deleteall
+    AndroidPublisherEditsListingsDeleteallResource,
+    AndroidPublisherEditsListingsDeleteall (..),
+    newAndroidPublisherEditsListingsDeleteall,
+
+    -- ** androidpublisher.edits.listings.get
+    AndroidPublisherEditsListingsGetResource,
+    AndroidPublisherEditsListingsGet (..),
+    newAndroidPublisherEditsListingsGet,
+
+    -- ** androidpublisher.edits.listings.list
+    AndroidPublisherEditsListingsListResource,
+    AndroidPublisherEditsListingsList (..),
+    newAndroidPublisherEditsListingsList,
+
+    -- ** androidpublisher.edits.listings.patch
+    AndroidPublisherEditsListingsPatchResource,
+    AndroidPublisherEditsListingsPatch (..),
+    newAndroidPublisherEditsListingsPatch,
+
+    -- ** androidpublisher.edits.listings.update
+    AndroidPublisherEditsListingsUpdateResource,
+    AndroidPublisherEditsListingsUpdate (..),
+    newAndroidPublisherEditsListingsUpdate,
+
+    -- ** androidpublisher.edits.testers.get
+    AndroidPublisherEditsTestersGetResource,
+    AndroidPublisherEditsTestersGet (..),
+    newAndroidPublisherEditsTestersGet,
+
+    -- ** androidpublisher.edits.testers.patch
+    AndroidPublisherEditsTestersPatchResource,
+    AndroidPublisherEditsTestersPatch (..),
+    newAndroidPublisherEditsTestersPatch,
+
+    -- ** androidpublisher.edits.testers.update
+    AndroidPublisherEditsTestersUpdateResource,
+    AndroidPublisherEditsTestersUpdate (..),
+    newAndroidPublisherEditsTestersUpdate,
+
+    -- ** androidpublisher.edits.tracks.create
+    AndroidPublisherEditsTracksCreateResource,
+    AndroidPublisherEditsTracksCreate (..),
+    newAndroidPublisherEditsTracksCreate,
+
+    -- ** androidpublisher.edits.tracks.get
+    AndroidPublisherEditsTracksGetResource,
+    AndroidPublisherEditsTracksGet (..),
+    newAndroidPublisherEditsTracksGet,
+
+    -- ** androidpublisher.edits.tracks.list
+    AndroidPublisherEditsTracksListResource,
+    AndroidPublisherEditsTracksList (..),
+    newAndroidPublisherEditsTracksList,
+
+    -- ** androidpublisher.edits.tracks.patch
+    AndroidPublisherEditsTracksPatchResource,
+    AndroidPublisherEditsTracksPatch (..),
+    newAndroidPublisherEditsTracksPatch,
+
+    -- ** androidpublisher.edits.tracks.update
+    AndroidPublisherEditsTracksUpdateResource,
+    AndroidPublisherEditsTracksUpdate (..),
+    newAndroidPublisherEditsTracksUpdate,
+
+    -- ** androidpublisher.edits.validate
+    AndroidPublisherEditsValidateResource,
+    AndroidPublisherEditsValidate (..),
+    newAndroidPublisherEditsValidate,
+
+    -- ** androidpublisher.externaltransactions.createexternaltransaction
+    AndroidPublisherExternaltransactionsCreateexternaltransactionResource,
+    AndroidPublisherExternaltransactionsCreateexternaltransaction (..),
+    newAndroidPublisherExternaltransactionsCreateexternaltransaction,
+
+    -- ** androidpublisher.externaltransactions.getexternaltransaction
+    AndroidPublisherExternaltransactionsGetexternaltransactionResource,
+    AndroidPublisherExternaltransactionsGetexternaltransaction (..),
+    newAndroidPublisherExternaltransactionsGetexternaltransaction,
+
+    -- ** androidpublisher.externaltransactions.refundexternaltransaction
+    AndroidPublisherExternaltransactionsRefundexternaltransactionResource,
+    AndroidPublisherExternaltransactionsRefundexternaltransaction (..),
+    newAndroidPublisherExternaltransactionsRefundexternaltransaction,
+
+    -- ** androidpublisher.generatedapks.download
+    AndroidPublisherGeneratedapksDownloadResource,
+    AndroidPublisherGeneratedapksDownload (..),
+    newAndroidPublisherGeneratedapksDownload,
+
+    -- ** androidpublisher.generatedapks.list
+    AndroidPublisherGeneratedapksListResource,
+    AndroidPublisherGeneratedapksList (..),
+    newAndroidPublisherGeneratedapksList,
+
+    -- ** androidpublisher.grants.create
+    AndroidPublisherGrantsCreateResource,
+    AndroidPublisherGrantsCreate (..),
+    newAndroidPublisherGrantsCreate,
+
+    -- ** androidpublisher.grants.delete
+    AndroidPublisherGrantsDeleteResource,
+    AndroidPublisherGrantsDelete (..),
+    newAndroidPublisherGrantsDelete,
+
+    -- ** androidpublisher.grants.patch
+    AndroidPublisherGrantsPatchResource,
+    AndroidPublisherGrantsPatch (..),
+    newAndroidPublisherGrantsPatch,
+
+    -- ** androidpublisher.inappproducts.batchDelete
+    AndroidPublisherInappproductsBatchDeleteResource,
+    AndroidPublisherInappproductsBatchDelete (..),
+    newAndroidPublisherInappproductsBatchDelete,
+
+    -- ** androidpublisher.inappproducts.batchGet
+    AndroidPublisherInappproductsBatchGetResource,
+    AndroidPublisherInappproductsBatchGet (..),
+    newAndroidPublisherInappproductsBatchGet,
+
+    -- ** androidpublisher.inappproducts.batchUpdate
+    AndroidPublisherInappproductsBatchUpdateResource,
+    AndroidPublisherInappproductsBatchUpdate (..),
+    newAndroidPublisherInappproductsBatchUpdate,
+
+    -- ** androidpublisher.inappproducts.delete
+    AndroidPublisherInappproductsDeleteResource,
+    AndroidPublisherInappproductsDelete (..),
+    newAndroidPublisherInappproductsDelete,
+
+    -- ** androidpublisher.inappproducts.get
+    AndroidPublisherInappproductsGetResource,
+    AndroidPublisherInappproductsGet (..),
+    newAndroidPublisherInappproductsGet,
+
+    -- ** androidpublisher.inappproducts.insert
+    AndroidPublisherInappproductsInsertResource,
+    AndroidPublisherInappproductsInsert (..),
+    newAndroidPublisherInappproductsInsert,
+
+    -- ** androidpublisher.inappproducts.list
+    AndroidPublisherInappproductsListResource,
+    AndroidPublisherInappproductsList (..),
+    newAndroidPublisherInappproductsList,
+
+    -- ** androidpublisher.inappproducts.patch
+    AndroidPublisherInappproductsPatchResource,
+    AndroidPublisherInappproductsPatch (..),
+    newAndroidPublisherInappproductsPatch,
+
+    -- ** androidpublisher.inappproducts.update
+    AndroidPublisherInappproductsUpdateResource,
+    AndroidPublisherInappproductsUpdate (..),
+    newAndroidPublisherInappproductsUpdate,
+
+    -- ** androidpublisher.internalappsharingartifacts.uploadapk
+    AndroidPublisherInternalappsharingartifactsUploadapkResource,
+    AndroidPublisherInternalappsharingartifactsUploadapk (..),
+    newAndroidPublisherInternalappsharingartifactsUploadapk,
+
+    -- ** androidpublisher.internalappsharingartifacts.uploadbundle
+    AndroidPublisherInternalappsharingartifactsUploadbundleResource,
+    AndroidPublisherInternalappsharingartifactsUploadbundle (..),
+    newAndroidPublisherInternalappsharingartifactsUploadbundle,
+
+    -- ** androidpublisher.monetization.convertRegionPrices
+    AndroidPublisherMonetizationConvertRegionPricesResource,
+    AndroidPublisherMonetizationConvertRegionPrices (..),
+    newAndroidPublisherMonetizationConvertRegionPrices,
+
+    -- ** androidpublisher.monetization.subscriptions.archive
+    AndroidPublisherMonetizationSubscriptionsArchiveResource,
+    AndroidPublisherMonetizationSubscriptionsArchive (..),
+    newAndroidPublisherMonetizationSubscriptionsArchive,
+
+    -- ** androidpublisher.monetization.subscriptions.basePlans.activate
+    AndroidPublisherMonetizationSubscriptionsBasePlansActivateResource,
+    AndroidPublisherMonetizationSubscriptionsBasePlansActivate (..),
+    newAndroidPublisherMonetizationSubscriptionsBasePlansActivate,
+
+    -- ** androidpublisher.monetization.subscriptions.basePlans.batchMigratePrices
+    AndroidPublisherMonetizationSubscriptionsBasePlansBatchMigratePricesResource,
+    AndroidPublisherMonetizationSubscriptionsBasePlansBatchMigratePrices (..),
+    newAndroidPublisherMonetizationSubscriptionsBasePlansBatchMigratePrices,
+
+    -- ** androidpublisher.monetization.subscriptions.basePlans.batchUpdateStates
+    AndroidPublisherMonetizationSubscriptionsBasePlansBatchUpdateStatesResource,
+    AndroidPublisherMonetizationSubscriptionsBasePlansBatchUpdateStates (..),
+    newAndroidPublisherMonetizationSubscriptionsBasePlansBatchUpdateStates,
+
+    -- ** androidpublisher.monetization.subscriptions.basePlans.deactivate
+    AndroidPublisherMonetizationSubscriptionsBasePlansDeactivateResource,
+    AndroidPublisherMonetizationSubscriptionsBasePlansDeactivate (..),
+    newAndroidPublisherMonetizationSubscriptionsBasePlansDeactivate,
+
+    -- ** androidpublisher.monetization.subscriptions.basePlans.delete
+    AndroidPublisherMonetizationSubscriptionsBasePlansDeleteResource,
+    AndroidPublisherMonetizationSubscriptionsBasePlansDelete (..),
+    newAndroidPublisherMonetizationSubscriptionsBasePlansDelete,
+
+    -- ** androidpublisher.monetization.subscriptions.basePlans.migratePrices
+    AndroidPublisherMonetizationSubscriptionsBasePlansMigratePricesResource,
+    AndroidPublisherMonetizationSubscriptionsBasePlansMigratePrices (..),
+    newAndroidPublisherMonetizationSubscriptionsBasePlansMigratePrices,
+
+    -- ** androidpublisher.monetization.subscriptions.basePlans.offers.activate
+    AndroidPublisherMonetizationSubscriptionsBasePlansOffersActivateResource,
+    AndroidPublisherMonetizationSubscriptionsBasePlansOffersActivate (..),
+    newAndroidPublisherMonetizationSubscriptionsBasePlansOffersActivate,
+
+    -- ** androidpublisher.monetization.subscriptions.basePlans.offers.batchGet
+    AndroidPublisherMonetizationSubscriptionsBasePlansOffersBatchGetResource,
+    AndroidPublisherMonetizationSubscriptionsBasePlansOffersBatchGet (..),
+    newAndroidPublisherMonetizationSubscriptionsBasePlansOffersBatchGet,
+
+    -- ** androidpublisher.monetization.subscriptions.basePlans.offers.batchUpdate
+    AndroidPublisherMonetizationSubscriptionsBasePlansOffersBatchUpdateResource,
+    AndroidPublisherMonetizationSubscriptionsBasePlansOffersBatchUpdate (..),
+    newAndroidPublisherMonetizationSubscriptionsBasePlansOffersBatchUpdate,
+
+    -- ** androidpublisher.monetization.subscriptions.basePlans.offers.batchUpdateStates
+    AndroidPublisherMonetizationSubscriptionsBasePlansOffersBatchUpdateStatesResource,
+    AndroidPublisherMonetizationSubscriptionsBasePlansOffersBatchUpdateStates (..),
+    newAndroidPublisherMonetizationSubscriptionsBasePlansOffersBatchUpdateStates,
+
+    -- ** androidpublisher.monetization.subscriptions.basePlans.offers.create
+    AndroidPublisherMonetizationSubscriptionsBasePlansOffersCreateResource,
+    AndroidPublisherMonetizationSubscriptionsBasePlansOffersCreate (..),
+    newAndroidPublisherMonetizationSubscriptionsBasePlansOffersCreate,
+
+    -- ** androidpublisher.monetization.subscriptions.basePlans.offers.deactivate
+    AndroidPublisherMonetizationSubscriptionsBasePlansOffersDeactivateResource,
+    AndroidPublisherMonetizationSubscriptionsBasePlansOffersDeactivate (..),
+    newAndroidPublisherMonetizationSubscriptionsBasePlansOffersDeactivate,
+
+    -- ** androidpublisher.monetization.subscriptions.basePlans.offers.delete
+    AndroidPublisherMonetizationSubscriptionsBasePlansOffersDeleteResource,
+    AndroidPublisherMonetizationSubscriptionsBasePlansOffersDelete (..),
+    newAndroidPublisherMonetizationSubscriptionsBasePlansOffersDelete,
+
+    -- ** androidpublisher.monetization.subscriptions.basePlans.offers.get
+    AndroidPublisherMonetizationSubscriptionsBasePlansOffersGetResource,
+    AndroidPublisherMonetizationSubscriptionsBasePlansOffersGet (..),
+    newAndroidPublisherMonetizationSubscriptionsBasePlansOffersGet,
+
+    -- ** androidpublisher.monetization.subscriptions.basePlans.offers.list
+    AndroidPublisherMonetizationSubscriptionsBasePlansOffersListResource,
+    AndroidPublisherMonetizationSubscriptionsBasePlansOffersList (..),
+    newAndroidPublisherMonetizationSubscriptionsBasePlansOffersList,
+
+    -- ** androidpublisher.monetization.subscriptions.basePlans.offers.patch
+    AndroidPublisherMonetizationSubscriptionsBasePlansOffersPatchResource,
+    AndroidPublisherMonetizationSubscriptionsBasePlansOffersPatch (..),
+    newAndroidPublisherMonetizationSubscriptionsBasePlansOffersPatch,
+
+    -- ** androidpublisher.monetization.subscriptions.batchGet
+    AndroidPublisherMonetizationSubscriptionsBatchGetResource,
+    AndroidPublisherMonetizationSubscriptionsBatchGet (..),
+    newAndroidPublisherMonetizationSubscriptionsBatchGet,
+
+    -- ** androidpublisher.monetization.subscriptions.batchUpdate
+    AndroidPublisherMonetizationSubscriptionsBatchUpdateResource,
+    AndroidPublisherMonetizationSubscriptionsBatchUpdate (..),
+    newAndroidPublisherMonetizationSubscriptionsBatchUpdate,
+
+    -- ** androidpublisher.monetization.subscriptions.create
+    AndroidPublisherMonetizationSubscriptionsCreateResource,
+    AndroidPublisherMonetizationSubscriptionsCreate (..),
+    newAndroidPublisherMonetizationSubscriptionsCreate,
+
+    -- ** androidpublisher.monetization.subscriptions.delete
+    AndroidPublisherMonetizationSubscriptionsDeleteResource,
+    AndroidPublisherMonetizationSubscriptionsDelete (..),
+    newAndroidPublisherMonetizationSubscriptionsDelete,
+
+    -- ** androidpublisher.monetization.subscriptions.get
+    AndroidPublisherMonetizationSubscriptionsGetResource,
+    AndroidPublisherMonetizationSubscriptionsGet (..),
+    newAndroidPublisherMonetizationSubscriptionsGet,
+
+    -- ** androidpublisher.monetization.subscriptions.list
+    AndroidPublisherMonetizationSubscriptionsListResource,
+    AndroidPublisherMonetizationSubscriptionsList (..),
+    newAndroidPublisherMonetizationSubscriptionsList,
+
+    -- ** androidpublisher.monetization.subscriptions.patch
+    AndroidPublisherMonetizationSubscriptionsPatchResource,
+    AndroidPublisherMonetizationSubscriptionsPatch (..),
+    newAndroidPublisherMonetizationSubscriptionsPatch,
+
+    -- ** androidpublisher.orders.refund
+    AndroidPublisherOrdersRefundResource,
+    AndroidPublisherOrdersRefund (..),
+    newAndroidPublisherOrdersRefund,
+
+    -- ** androidpublisher.purchases.products.acknowledge
+    AndroidPublisherPurchasesProductsAcknowledgeResource,
+    AndroidPublisherPurchasesProductsAcknowledge (..),
+    newAndroidPublisherPurchasesProductsAcknowledge,
+
+    -- ** androidpublisher.purchases.products.consume
+    AndroidPublisherPurchasesProductsConsumeResource,
+    AndroidPublisherPurchasesProductsConsume (..),
+    newAndroidPublisherPurchasesProductsConsume,
+
+    -- ** androidpublisher.purchases.products.get
+    AndroidPublisherPurchasesProductsGetResource,
+    AndroidPublisherPurchasesProductsGet (..),
+    newAndroidPublisherPurchasesProductsGet,
+
+    -- ** androidpublisher.purchases.subscriptions.acknowledge
+    AndroidPublisherPurchasesSubscriptionsAcknowledgeResource,
+    AndroidPublisherPurchasesSubscriptionsAcknowledge (..),
+    newAndroidPublisherPurchasesSubscriptionsAcknowledge,
+
+    -- ** androidpublisher.purchases.subscriptions.cancel
+    AndroidPublisherPurchasesSubscriptionsCancelResource,
+    AndroidPublisherPurchasesSubscriptionsCancel (..),
+    newAndroidPublisherPurchasesSubscriptionsCancel,
+
+    -- ** androidpublisher.purchases.subscriptions.defer
+    AndroidPublisherPurchasesSubscriptionsDeferResource,
+    AndroidPublisherPurchasesSubscriptionsDefer (..),
+    newAndroidPublisherPurchasesSubscriptionsDefer,
+
+    -- ** androidpublisher.purchases.subscriptions.get
+    AndroidPublisherPurchasesSubscriptionsGetResource,
+    AndroidPublisherPurchasesSubscriptionsGet (..),
+    newAndroidPublisherPurchasesSubscriptionsGet,
+
+    -- ** androidpublisher.purchases.subscriptions.refund
+    AndroidPublisherPurchasesSubscriptionsRefundResource,
+    AndroidPublisherPurchasesSubscriptionsRefund (..),
+    newAndroidPublisherPurchasesSubscriptionsRefund,
+
+    -- ** androidpublisher.purchases.subscriptions.revoke
+    AndroidPublisherPurchasesSubscriptionsRevokeResource,
+    AndroidPublisherPurchasesSubscriptionsRevoke (..),
+    newAndroidPublisherPurchasesSubscriptionsRevoke,
+
+    -- ** androidpublisher.purchases.subscriptionsv2.get
+    AndroidPublisherPurchasesSubscriptionsv2GetResource,
+    AndroidPublisherPurchasesSubscriptionsv2Get (..),
+    newAndroidPublisherPurchasesSubscriptionsv2Get,
+
+    -- ** androidpublisher.purchases.subscriptionsv2.revoke
+    AndroidPublisherPurchasesSubscriptionsv2RevokeResource,
+    AndroidPublisherPurchasesSubscriptionsv2Revoke (..),
+    newAndroidPublisherPurchasesSubscriptionsv2Revoke,
+
+    -- ** androidpublisher.purchases.voidedpurchases.list
+    AndroidPublisherPurchasesVoidedpurchasesListResource,
+    AndroidPublisherPurchasesVoidedpurchasesList (..),
+    newAndroidPublisherPurchasesVoidedpurchasesList,
+
+    -- ** androidpublisher.reviews.get
+    AndroidPublisherReviewsGetResource,
+    AndroidPublisherReviewsGet (..),
+    newAndroidPublisherReviewsGet,
+
+    -- ** androidpublisher.reviews.list
+    AndroidPublisherReviewsListResource,
+    AndroidPublisherReviewsList (..),
+    newAndroidPublisherReviewsList,
+
+    -- ** androidpublisher.reviews.reply
+    AndroidPublisherReviewsReplyResource,
+    AndroidPublisherReviewsReply (..),
+    newAndroidPublisherReviewsReply,
+
+    -- ** androidpublisher.systemapks.variants.create
+    AndroidPublisherSystemapksVariantsCreateResource,
+    AndroidPublisherSystemapksVariantsCreate (..),
+    newAndroidPublisherSystemapksVariantsCreate,
+
+    -- ** androidpublisher.systemapks.variants.download
+    AndroidPublisherSystemapksVariantsDownloadResource,
+    AndroidPublisherSystemapksVariantsDownload (..),
+    newAndroidPublisherSystemapksVariantsDownload,
+
+    -- ** androidpublisher.systemapks.variants.get
+    AndroidPublisherSystemapksVariantsGetResource,
+    AndroidPublisherSystemapksVariantsGet (..),
+    newAndroidPublisherSystemapksVariantsGet,
+
+    -- ** androidpublisher.systemapks.variants.list
+    AndroidPublisherSystemapksVariantsListResource,
+    AndroidPublisherSystemapksVariantsList (..),
+    newAndroidPublisherSystemapksVariantsList,
+
+    -- ** androidpublisher.users.create
+    AndroidPublisherUsersCreateResource,
+    AndroidPublisherUsersCreate (..),
+    newAndroidPublisherUsersCreate,
+
+    -- ** androidpublisher.users.delete
+    AndroidPublisherUsersDeleteResource,
+    AndroidPublisherUsersDelete (..),
+    newAndroidPublisherUsersDelete,
+
+    -- ** androidpublisher.users.list
+    AndroidPublisherUsersListResource,
+    AndroidPublisherUsersList (..),
+    newAndroidPublisherUsersList,
+
+    -- ** androidpublisher.users.patch
+    AndroidPublisherUsersPatchResource,
+    AndroidPublisherUsersPatch (..),
+    newAndroidPublisherUsersPatch,
+
+    -- * Types
+
+    -- ** Xgafv
+    Xgafv (..),
+
+    -- ** Abi
+    Abi (..),
+    newAbi,
+
+    -- ** Abi_Alias
+    Abi_Alias (..),
+
+    -- ** AbiTargeting
+    AbiTargeting (..),
+    newAbiTargeting,
+
+    -- ** AcquisitionTargetingRule
+    AcquisitionTargetingRule (..),
+    newAcquisitionTargetingRule,
+
+    -- ** ActivateBasePlanRequest
+    ActivateBasePlanRequest (..),
+    newActivateBasePlanRequest,
+
+    -- ** ActivateBasePlanRequest_LatencyTolerance
+    ActivateBasePlanRequest_LatencyTolerance (..),
+
+    -- ** ActivateSubscriptionOfferRequest
+    ActivateSubscriptionOfferRequest (..),
+    newActivateSubscriptionOfferRequest,
+
+    -- ** ActivateSubscriptionOfferRequest_LatencyTolerance
+    ActivateSubscriptionOfferRequest_LatencyTolerance (..),
+
+    -- ** AddTargetingRequest
+    AddTargetingRequest (..),
+    newAddTargetingRequest,
+
+    -- ** AddTargetingResponse
+    AddTargetingResponse (..),
+    newAddTargetingResponse,
+
+    -- ** AllUsers
+    AllUsers (..),
+    newAllUsers,
+
+    -- ** AndroidSdks
+    AndroidSdks (..),
+    newAndroidSdks,
+
+    -- ** Apk
+    Apk (..),
+    newApk,
+
+    -- ** ApkBinary
+    ApkBinary (..),
+    newApkBinary,
+
+    -- ** ApkDescription
+    ApkDescription (..),
+    newApkDescription,
+
+    -- ** ApkSet
+    ApkSet (..),
+    newApkSet,
+
+    -- ** ApkTargeting
+    ApkTargeting (..),
+    newApkTargeting,
+
+    -- ** ApksAddExternallyHostedRequest
+    ApksAddExternallyHostedRequest (..),
+    newApksAddExternallyHostedRequest,
+
+    -- ** ApksAddExternallyHostedResponse
+    ApksAddExternallyHostedResponse (..),
+    newApksAddExternallyHostedResponse,
+
+    -- ** ApksListResponse
+    ApksListResponse (..),
+    newApksListResponse,
+
+    -- ** AppDetails
+    AppDetails (..),
+    newAppDetails,
+
+    -- ** AppEdit
+    AppEdit (..),
+    newAppEdit,
+
+    -- ** AppRecoveryAction
+    AppRecoveryAction (..),
+    newAppRecoveryAction,
+
+    -- ** AppRecoveryAction_Status
+    AppRecoveryAction_Status (..),
+
+    -- ** AppVersionList
+    AppVersionList (..),
+    newAppVersionList,
+
+    -- ** AppVersionRange
+    AppVersionRange (..),
+    newAppVersionRange,
+
+    -- ** ArchiveSubscriptionRequest
+    ArchiveSubscriptionRequest (..),
+    newArchiveSubscriptionRequest,
+
+    -- ** AssetModuleMetadata
+    AssetModuleMetadata (..),
+    newAssetModuleMetadata,
+
+    -- ** AssetModuleMetadata_DeliveryType
+    AssetModuleMetadata_DeliveryType (..),
+
+    -- ** AssetSliceSet
+    AssetSliceSet (..),
+    newAssetSliceSet,
+
+    -- ** AutoRenewingBasePlanType
+    AutoRenewingBasePlanType (..),
+    newAutoRenewingBasePlanType,
+
+    -- ** AutoRenewingBasePlanType_ProrationMode
+    AutoRenewingBasePlanType_ProrationMode (..),
+
+    -- ** AutoRenewingBasePlanType_ResubscribeState
+    AutoRenewingBasePlanType_ResubscribeState (..),
+
+    -- ** AutoRenewingPlan
+    AutoRenewingPlan (..),
+    newAutoRenewingPlan,
+
+    -- ** BasePlan
+    BasePlan (..),
+    newBasePlan,
+
+    -- ** BasePlan_State
+    BasePlan_State (..),
+
+    -- ** BatchGetSubscriptionOffersRequest
+    BatchGetSubscriptionOffersRequest (..),
+    newBatchGetSubscriptionOffersRequest,
+
+    -- ** BatchGetSubscriptionOffersResponse
+    BatchGetSubscriptionOffersResponse (..),
+    newBatchGetSubscriptionOffersResponse,
+
+    -- ** BatchGetSubscriptionsResponse
+    BatchGetSubscriptionsResponse (..),
+    newBatchGetSubscriptionsResponse,
+
+    -- ** BatchMigrateBasePlanPricesRequest
+    BatchMigrateBasePlanPricesRequest (..),
+    newBatchMigrateBasePlanPricesRequest,
+
+    -- ** BatchMigrateBasePlanPricesResponse
+    BatchMigrateBasePlanPricesResponse (..),
+    newBatchMigrateBasePlanPricesResponse,
+
+    -- ** BatchUpdateBasePlanStatesRequest
+    BatchUpdateBasePlanStatesRequest (..),
+    newBatchUpdateBasePlanStatesRequest,
+
+    -- ** BatchUpdateBasePlanStatesResponse
+    BatchUpdateBasePlanStatesResponse (..),
+    newBatchUpdateBasePlanStatesResponse,
+
+    -- ** BatchUpdateSubscriptionOfferStatesRequest
+    BatchUpdateSubscriptionOfferStatesRequest (..),
+    newBatchUpdateSubscriptionOfferStatesRequest,
+
+    -- ** BatchUpdateSubscriptionOfferStatesResponse
+    BatchUpdateSubscriptionOfferStatesResponse (..),
+    newBatchUpdateSubscriptionOfferStatesResponse,
+
+    -- ** BatchUpdateSubscriptionOffersRequest
+    BatchUpdateSubscriptionOffersRequest (..),
+    newBatchUpdateSubscriptionOffersRequest,
+
+    -- ** BatchUpdateSubscriptionOffersResponse
+    BatchUpdateSubscriptionOffersResponse (..),
+    newBatchUpdateSubscriptionOffersResponse,
+
+    -- ** BatchUpdateSubscriptionsRequest
+    BatchUpdateSubscriptionsRequest (..),
+    newBatchUpdateSubscriptionsRequest,
+
+    -- ** BatchUpdateSubscriptionsResponse
+    BatchUpdateSubscriptionsResponse (..),
+    newBatchUpdateSubscriptionsResponse,
+
+    -- ** Bundle
+    Bundle (..),
+    newBundle,
+
+    -- ** BundlesListResponse
+    BundlesListResponse (..),
+    newBundlesListResponse,
+
+    -- ** CancelAppRecoveryRequest
+    CancelAppRecoveryRequest (..),
+    newCancelAppRecoveryRequest,
+
+    -- ** CancelAppRecoveryResponse
+    CancelAppRecoveryResponse (..),
+    newCancelAppRecoveryResponse,
+
+    -- ** CancelSurveyResult
+    CancelSurveyResult (..),
+    newCancelSurveyResult,
+
+    -- ** CancelSurveyResult_Reason
+    CancelSurveyResult_Reason (..),
+
+    -- ** CanceledStateContext
+    CanceledStateContext (..),
+    newCanceledStateContext,
+
+    -- ** Comment
+    Comment (..),
+    newComment,
+
+    -- ** ConvertRegionPricesRequest
+    ConvertRegionPricesRequest (..),
+    newConvertRegionPricesRequest,
+
+    -- ** ConvertRegionPricesResponse
+    ConvertRegionPricesResponse (..),
+    newConvertRegionPricesResponse,
+
+    -- ** ConvertRegionPricesResponse_ConvertedRegionPrices
+    ConvertRegionPricesResponse_ConvertedRegionPrices (..),
+    newConvertRegionPricesResponse_ConvertedRegionPrices,
+
+    -- ** ConvertedOtherRegionsPrice
+    ConvertedOtherRegionsPrice (..),
+    newConvertedOtherRegionsPrice,
+
+    -- ** ConvertedRegionPrice
+    ConvertedRegionPrice (..),
+    newConvertedRegionPrice,
+
+    -- ** CountryTargeting
+    CountryTargeting (..),
+    newCountryTargeting,
+
+    -- ** CreateDraftAppRecoveryRequest
+    CreateDraftAppRecoveryRequest (..),
+    newCreateDraftAppRecoveryRequest,
+
+    -- ** DeactivateBasePlanRequest
+    DeactivateBasePlanRequest (..),
+    newDeactivateBasePlanRequest,
+
+    -- ** DeactivateBasePlanRequest_LatencyTolerance
+    DeactivateBasePlanRequest_LatencyTolerance (..),
+
+    -- ** DeactivateSubscriptionOfferRequest
+    DeactivateSubscriptionOfferRequest (..),
+    newDeactivateSubscriptionOfferRequest,
+
+    -- ** DeactivateSubscriptionOfferRequest_LatencyTolerance
+    DeactivateSubscriptionOfferRequest_LatencyTolerance (..),
+
+    -- ** DeferredItemReplacement
+    DeferredItemReplacement (..),
+    newDeferredItemReplacement,
+
+    -- ** DeobfuscationFile
+    DeobfuscationFile (..),
+    newDeobfuscationFile,
+
+    -- ** DeobfuscationFile_SymbolType
+    DeobfuscationFile_SymbolType (..),
+
+    -- ** DeobfuscationFilesUploadResponse
+    DeobfuscationFilesUploadResponse (..),
+    newDeobfuscationFilesUploadResponse,
+
+    -- ** DeployAppRecoveryRequest
+    DeployAppRecoveryRequest (..),
+    newDeployAppRecoveryRequest,
+
+    -- ** DeployAppRecoveryResponse
+    DeployAppRecoveryResponse (..),
+    newDeployAppRecoveryResponse,
+
+    -- ** DeveloperComment
+    DeveloperComment (..),
+    newDeveloperComment,
+
+    -- ** DeveloperInitiatedCancellation
+    DeveloperInitiatedCancellation (..),
+    newDeveloperInitiatedCancellation,
+
+    -- ** DeviceFeature
+    DeviceFeature (..),
+    newDeviceFeature,
+
+    -- ** DeviceFeatureTargeting
+    DeviceFeatureTargeting (..),
+    newDeviceFeatureTargeting,
+
+    -- ** DeviceGroup
+    DeviceGroup (..),
+    newDeviceGroup,
+
+    -- ** DeviceId
+    DeviceId (..),
+    newDeviceId,
+
+    -- ** DeviceMetadata
+    DeviceMetadata (..),
+    newDeviceMetadata,
+
+    -- ** DeviceRam
+    DeviceRam (..),
+    newDeviceRam,
+
+    -- ** DeviceSelector
+    DeviceSelector (..),
+    newDeviceSelector,
+
+    -- ** DeviceSpec
+    DeviceSpec (..),
+    newDeviceSpec,
+
+    -- ** DeviceTier
+    DeviceTier (..),
+    newDeviceTier,
+
+    -- ** DeviceTierConfig
+    DeviceTierConfig (..),
+    newDeviceTierConfig,
+
+    -- ** DeviceTierSet
+    DeviceTierSet (..),
+    newDeviceTierSet,
+
+    -- ** ExpansionFile
+    ExpansionFile (..),
+    newExpansionFile,
+
+    -- ** ExpansionFilesUploadResponse
+    ExpansionFilesUploadResponse (..),
+    newExpansionFilesUploadResponse,
+
+    -- ** ExternalAccountIdentifiers
+    ExternalAccountIdentifiers (..),
+    newExternalAccountIdentifiers,
+
+    -- ** ExternalSubscription
+    ExternalSubscription (..),
+    newExternalSubscription,
+
+    -- ** ExternalSubscription_SubscriptionType
+    ExternalSubscription_SubscriptionType (..),
+
+    -- ** ExternalTransaction
+    ExternalTransaction (..),
+    newExternalTransaction,
+
+    -- ** ExternalTransaction_TransactionState
+    ExternalTransaction_TransactionState (..),
+
+    -- ** ExternalTransactionAddress
+    ExternalTransactionAddress (..),
+    newExternalTransactionAddress,
+
+    -- ** ExternalTransactionTestPurchase
+    ExternalTransactionTestPurchase (..),
+    newExternalTransactionTestPurchase,
+
+    -- ** ExternallyHostedApk
+    ExternallyHostedApk (..),
+    newExternallyHostedApk,
+
+    -- ** FullRefund
+    FullRefund (..),
+    newFullRefund,
+
+    -- ** GeneratedApksListResponse
+    GeneratedApksListResponse (..),
+    newGeneratedApksListResponse,
+
+    -- ** GeneratedApksPerSigningKey
+    GeneratedApksPerSigningKey (..),
+    newGeneratedApksPerSigningKey,
+
+    -- ** GeneratedAssetPackSlice
+    GeneratedAssetPackSlice (..),
+    newGeneratedAssetPackSlice,
+
+    -- ** GeneratedRecoveryApk
+    GeneratedRecoveryApk (..),
+    newGeneratedRecoveryApk,
+
+    -- ** GeneratedRecoveryApk_RecoveryStatus
+    GeneratedRecoveryApk_RecoveryStatus (..),
+
+    -- ** GeneratedSplitApk
+    GeneratedSplitApk (..),
+    newGeneratedSplitApk,
+
+    -- ** GeneratedStandaloneApk
+    GeneratedStandaloneApk (..),
+    newGeneratedStandaloneApk,
+
+    -- ** GeneratedUniversalApk
+    GeneratedUniversalApk (..),
+    newGeneratedUniversalApk,
+
+    -- ** GetSubscriptionOfferRequest
+    GetSubscriptionOfferRequest (..),
+    newGetSubscriptionOfferRequest,
+
+    -- ** Grant
+    Grant (..),
+    newGrant,
+
+    -- ** Grant_AppLevelPermissionsItem
+    Grant_AppLevelPermissionsItem (..),
+
+    -- ** Image
+    Image (..),
+    newImage,
+
+    -- ** ImagesDeleteAllResponse
+    ImagesDeleteAllResponse (..),
+    newImagesDeleteAllResponse,
+
+    -- ** ImagesListResponse
+    ImagesListResponse (..),
+    newImagesListResponse,
+
+    -- ** ImagesUploadResponse
+    ImagesUploadResponse (..),
+    newImagesUploadResponse,
+
+    -- ** InAppProduct
+    InAppProduct (..),
+    newInAppProduct,
+
+    -- ** InAppProduct_Listings
+    InAppProduct_Listings (..),
+    newInAppProduct_Listings,
+
+    -- ** InAppProduct_Prices
+    InAppProduct_Prices (..),
+    newInAppProduct_Prices,
+
+    -- ** InAppProduct_PurchaseType
+    InAppProduct_PurchaseType (..),
+
+    -- ** InAppProduct_Status
+    InAppProduct_Status (..),
+
+    -- ** InAppProductListing
+    InAppProductListing (..),
+    newInAppProductListing,
+
+    -- ** InappproductsBatchDeleteRequest
+    InappproductsBatchDeleteRequest (..),
+    newInappproductsBatchDeleteRequest,
+
+    -- ** InappproductsBatchGetResponse
+    InappproductsBatchGetResponse (..),
+    newInappproductsBatchGetResponse,
+
+    -- ** InappproductsBatchUpdateRequest
+    InappproductsBatchUpdateRequest (..),
+    newInappproductsBatchUpdateRequest,
+
+    -- ** InappproductsBatchUpdateResponse
+    InappproductsBatchUpdateResponse (..),
+    newInappproductsBatchUpdateResponse,
+
+    -- ** InappproductsDeleteRequest
+    InappproductsDeleteRequest (..),
+    newInappproductsDeleteRequest,
+
+    -- ** InappproductsDeleteRequest_LatencyTolerance
+    InappproductsDeleteRequest_LatencyTolerance (..),
+
+    -- ** InappproductsListResponse
+    InappproductsListResponse (..),
+    newInappproductsListResponse,
+
+    -- ** InappproductsUpdateRequest
+    InappproductsUpdateRequest (..),
+    newInappproductsUpdateRequest,
+
+    -- ** InappproductsUpdateRequest_LatencyTolerance
+    InappproductsUpdateRequest_LatencyTolerance (..),
+
+    -- ** InstallmentPlan
+    InstallmentPlan (..),
+    newInstallmentPlan,
+
+    -- ** InstallmentsBasePlanType
+    InstallmentsBasePlanType (..),
+    newInstallmentsBasePlanType,
+
+    -- ** InstallmentsBasePlanType_ProrationMode
+    InstallmentsBasePlanType_ProrationMode (..),
+
+    -- ** InstallmentsBasePlanType_RenewalType
+    InstallmentsBasePlanType_RenewalType (..),
+
+    -- ** InstallmentsBasePlanType_ResubscribeState
+    InstallmentsBasePlanType_ResubscribeState (..),
+
+    -- ** InternalAppSharingArtifact
+    InternalAppSharingArtifact (..),
+    newInternalAppSharingArtifact,
+
+    -- ** IntroductoryPriceInfo
+    IntroductoryPriceInfo (..),
+    newIntroductoryPriceInfo,
+
+    -- ** LanguageTargeting
+    LanguageTargeting (..),
+    newLanguageTargeting,
+
+    -- ** ListAppRecoveriesResponse
+    ListAppRecoveriesResponse (..),
+    newListAppRecoveriesResponse,
+
+    -- ** ListDeviceTierConfigsResponse
+    ListDeviceTierConfigsResponse (..),
+    newListDeviceTierConfigsResponse,
+
+    -- ** ListSubscriptionOffersResponse
+    ListSubscriptionOffersResponse (..),
+    newListSubscriptionOffersResponse,
+
+    -- ** ListSubscriptionsResponse
+    ListSubscriptionsResponse (..),
+    newListSubscriptionsResponse,
+
+    -- ** ListUsersResponse
+    ListUsersResponse (..),
+    newListUsersResponse,
+
+    -- ** Listing
+    Listing (..),
+    newListing,
+
+    -- ** ListingsListResponse
+    ListingsListResponse (..),
+    newListingsListResponse,
+
+    -- ** LocalizedText
+    LocalizedText (..),
+    newLocalizedText,
+
+    -- ** ManagedProductTaxAndComplianceSettings
+    ManagedProductTaxAndComplianceSettings (..),
+    newManagedProductTaxAndComplianceSettings,
+
+    -- ** ManagedProductTaxAndComplianceSettings_EeaWithdrawalRightType
+    ManagedProductTaxAndComplianceSettings_EeaWithdrawalRightType (..),
+
+    -- ** ManagedProductTaxAndComplianceSettings_TaxRateInfoByRegionCode
+    ManagedProductTaxAndComplianceSettings_TaxRateInfoByRegionCode (..),
+    newManagedProductTaxAndComplianceSettings_TaxRateInfoByRegionCode,
+
+    -- ** MigrateBasePlanPricesRequest
+    MigrateBasePlanPricesRequest (..),
+    newMigrateBasePlanPricesRequest,
+
+    -- ** MigrateBasePlanPricesRequest_LatencyTolerance
+    MigrateBasePlanPricesRequest_LatencyTolerance (..),
+
+    -- ** MigrateBasePlanPricesResponse
+    MigrateBasePlanPricesResponse (..),
+    newMigrateBasePlanPricesResponse,
+
+    -- ** ModuleMetadata
+    ModuleMetadata (..),
+    newModuleMetadata,
+
+    -- ** ModuleMetadata_DeliveryType
+    ModuleMetadata_DeliveryType (..),
+
+    -- ** ModuleMetadata_ModuleType
+    ModuleMetadata_ModuleType (..),
+
+    -- ** ModuleTargeting
+    ModuleTargeting (..),
+    newModuleTargeting,
+
+    -- ** Money
+    Money (..),
+    newMoney,
+
+    -- ** MultiAbi
+    MultiAbi (..),
+    newMultiAbi,
+
+    -- ** MultiAbiTargeting
+    MultiAbiTargeting (..),
+    newMultiAbiTargeting,
+
+    -- ** OfferDetails
+    OfferDetails (..),
+    newOfferDetails,
+
+    -- ** OfferTag
+    OfferTag (..),
+    newOfferTag,
+
+    -- ** OneTimeCode
+    OneTimeCode (..),
+    newOneTimeCode,
+
+    -- ** OneTimeExternalTransaction
+    OneTimeExternalTransaction (..),
+    newOneTimeExternalTransaction,
+
+    -- ** OtherRecurringProduct
+    OtherRecurringProduct (..),
+    newOtherRecurringProduct,
+
+    -- ** OtherRegionsBasePlanConfig
+    OtherRegionsBasePlanConfig (..),
+    newOtherRegionsBasePlanConfig,
+
+    -- ** OtherRegionsSubscriptionOfferConfig
+    OtherRegionsSubscriptionOfferConfig (..),
+    newOtherRegionsSubscriptionOfferConfig,
+
+    -- ** OtherRegionsSubscriptionOfferPhaseConfig
+    OtherRegionsSubscriptionOfferPhaseConfig (..),
+    newOtherRegionsSubscriptionOfferPhaseConfig,
+
+    -- ** OtherRegionsSubscriptionOfferPhaseFreePriceOverride
+    OtherRegionsSubscriptionOfferPhaseFreePriceOverride (..),
+    newOtherRegionsSubscriptionOfferPhaseFreePriceOverride,
+
+    -- ** OtherRegionsSubscriptionOfferPhasePrices
+    OtherRegionsSubscriptionOfferPhasePrices (..),
+    newOtherRegionsSubscriptionOfferPhasePrices,
+
+    -- ** PageInfo
+    PageInfo (..),
+    newPageInfo,
+
+    -- ** PartialRefund
+    PartialRefund (..),
+    newPartialRefund,
+
+    -- ** PausedStateContext
+    PausedStateContext (..),
+    newPausedStateContext,
+
+    -- ** PendingCancellation
+    PendingCancellation (..),
+    newPendingCancellation,
+
+    -- ** PrepaidBasePlanType
+    PrepaidBasePlanType (..),
+    newPrepaidBasePlanType,
+
+    -- ** PrepaidBasePlanType_TimeExtension
+    PrepaidBasePlanType_TimeExtension (..),
+
+    -- ** PrepaidPlan
+    PrepaidPlan (..),
+    newPrepaidPlan,
+
+    -- ** Price
+    Price (..),
+    newPrice,
+
+    -- ** ProductPurchase
+    ProductPurchase (..),
+    newProductPurchase,
+
+    -- ** ProductPurchasesAcknowledgeRequest
+    ProductPurchasesAcknowledgeRequest (..),
+    newProductPurchasesAcknowledgeRequest,
+
+    -- ** RecurringExternalTransaction
+    RecurringExternalTransaction (..),
+    newRecurringExternalTransaction,
+
+    -- ** RecurringExternalTransaction_MigratedTransactionProgram
+    RecurringExternalTransaction_MigratedTransactionProgram (..),
+
+    -- ** RefundExternalTransactionRequest
+    RefundExternalTransactionRequest (..),
+    newRefundExternalTransactionRequest,
+
+    -- ** RegionalBasePlanConfig
+    RegionalBasePlanConfig (..),
+    newRegionalBasePlanConfig,
+
+    -- ** RegionalPriceMigrationConfig
+    RegionalPriceMigrationConfig (..),
+    newRegionalPriceMigrationConfig,
+
+    -- ** RegionalPriceMigrationConfig_PriceIncreaseType
+    RegionalPriceMigrationConfig_PriceIncreaseType (..),
+
+    -- ** RegionalSubscriptionOfferConfig
+    RegionalSubscriptionOfferConfig (..),
+    newRegionalSubscriptionOfferConfig,
+
+    -- ** RegionalSubscriptionOfferPhaseConfig
+    RegionalSubscriptionOfferPhaseConfig (..),
+    newRegionalSubscriptionOfferPhaseConfig,
+
+    -- ** RegionalSubscriptionOfferPhaseFreePriceOverride
+    RegionalSubscriptionOfferPhaseFreePriceOverride (..),
+    newRegionalSubscriptionOfferPhaseFreePriceOverride,
+
+    -- ** RegionalTaxRateInfo
+    RegionalTaxRateInfo (..),
+    newRegionalTaxRateInfo,
+
+    -- ** RegionalTaxRateInfo_StreamingTaxType
+    RegionalTaxRateInfo_StreamingTaxType (..),
+
+    -- ** RegionalTaxRateInfo_TaxTier
+    RegionalTaxRateInfo_TaxTier (..),
+
+    -- ** Regions
+    Regions (..),
+    newRegions,
+
+    -- ** RegionsVersion
+    RegionsVersion (..),
+    newRegionsVersion,
+
+    -- ** RemoteInAppUpdate
+    RemoteInAppUpdate (..),
+    newRemoteInAppUpdate,
+
+    -- ** RemoteInAppUpdateData
+    RemoteInAppUpdateData (..),
+    newRemoteInAppUpdateData,
+
+    -- ** RemoteInAppUpdateDataPerBundle
+    RemoteInAppUpdateDataPerBundle (..),
+    newRemoteInAppUpdateDataPerBundle,
+
+    -- ** ReplacementCancellation
+    ReplacementCancellation (..),
+    newReplacementCancellation,
+
+    -- ** RestrictedPaymentCountries
+    RestrictedPaymentCountries (..),
+    newRestrictedPaymentCountries,
+
+    -- ** Review
+    Review (..),
+    newReview,
+
+    -- ** ReviewReplyResult
+    ReviewReplyResult (..),
+    newReviewReplyResult,
+
+    -- ** ReviewsListResponse
+    ReviewsListResponse (..),
+    newReviewsListResponse,
+
+    -- ** ReviewsReplyRequest
+    ReviewsReplyRequest (..),
+    newReviewsReplyRequest,
+
+    -- ** ReviewsReplyResponse
+    ReviewsReplyResponse (..),
+    newReviewsReplyResponse,
+
+    -- ** RevocationContext
+    RevocationContext (..),
+    newRevocationContext,
+
+    -- ** RevocationContextFullRefund
+    RevocationContextFullRefund (..),
+    newRevocationContextFullRefund,
+
+    -- ** RevocationContextProratedRefund
+    RevocationContextProratedRefund (..),
+    newRevocationContextProratedRefund,
+
+    -- ** RevokeSubscriptionPurchaseRequest
+    RevokeSubscriptionPurchaseRequest (..),
+    newRevokeSubscriptionPurchaseRequest,
+
+    -- ** RevokeSubscriptionPurchaseResponse
+    RevokeSubscriptionPurchaseResponse (..),
+    newRevokeSubscriptionPurchaseResponse,
+
+    -- ** SafetyLabelsUpdateRequest
+    SafetyLabelsUpdateRequest (..),
+    newSafetyLabelsUpdateRequest,
+
+    -- ** SafetyLabelsUpdateResponse
+    SafetyLabelsUpdateResponse (..),
+    newSafetyLabelsUpdateResponse,
+
+    -- ** ScreenDensity
+    ScreenDensity (..),
+    newScreenDensity,
+
+    -- ** ScreenDensity_DensityAlias
+    ScreenDensity_DensityAlias (..),
+
+    -- ** ScreenDensityTargeting
+    ScreenDensityTargeting (..),
+    newScreenDensityTargeting,
+
+    -- ** SdkVersion
+    SdkVersion (..),
+    newSdkVersion,
+
+    -- ** SdkVersionTargeting
+    SdkVersionTargeting (..),
+    newSdkVersionTargeting,
+
+    -- ** SignupPromotion
+    SignupPromotion (..),
+    newSignupPromotion,
+
+    -- ** SplitApkMetadata
+    SplitApkMetadata (..),
+    newSplitApkMetadata,
+
+    -- ** SplitApkVariant
+    SplitApkVariant (..),
+    newSplitApkVariant,
+
+    -- ** StandaloneApkMetadata
+    StandaloneApkMetadata (..),
+    newStandaloneApkMetadata,
+
+    -- ** SubscribeWithGoogleInfo
+    SubscribeWithGoogleInfo (..),
+    newSubscribeWithGoogleInfo,
+
+    -- ** Subscription
+    Subscription (..),
+    newSubscription,
+
+    -- ** SubscriptionCancelSurveyResult
+    SubscriptionCancelSurveyResult (..),
+    newSubscriptionCancelSurveyResult,
+
+    -- ** SubscriptionDeferralInfo
+    SubscriptionDeferralInfo (..),
+    newSubscriptionDeferralInfo,
+
+    -- ** SubscriptionItemPriceChangeDetails
+    SubscriptionItemPriceChangeDetails (..),
+    newSubscriptionItemPriceChangeDetails,
+
+    -- ** SubscriptionItemPriceChangeDetails_PriceChangeMode
+    SubscriptionItemPriceChangeDetails_PriceChangeMode (..),
+
+    -- ** SubscriptionItemPriceChangeDetails_PriceChangeState
+    SubscriptionItemPriceChangeDetails_PriceChangeState (..),
+
+    -- ** SubscriptionListing
+    SubscriptionListing (..),
+    newSubscriptionListing,
+
+    -- ** SubscriptionOffer
+    SubscriptionOffer (..),
+    newSubscriptionOffer,
+
+    -- ** SubscriptionOffer_State
+    SubscriptionOffer_State (..),
+
+    -- ** SubscriptionOfferPhase
+    SubscriptionOfferPhase (..),
+    newSubscriptionOfferPhase,
+
+    -- ** SubscriptionOfferTargeting
+    SubscriptionOfferTargeting (..),
+    newSubscriptionOfferTargeting,
+
+    -- ** SubscriptionPriceChange
+    SubscriptionPriceChange (..),
+    newSubscriptionPriceChange,
+
+    -- ** SubscriptionPurchase
+    SubscriptionPurchase (..),
+    newSubscriptionPurchase,
+
+    -- ** SubscriptionPurchaseLineItem
+    SubscriptionPurchaseLineItem (..),
+    newSubscriptionPurchaseLineItem,
+
+    -- ** SubscriptionPurchaseV2
+    SubscriptionPurchaseV2 (..),
+    newSubscriptionPurchaseV2,
+
+    -- ** SubscriptionPurchaseV2_AcknowledgementState
+    SubscriptionPurchaseV2_AcknowledgementState (..),
+
+    -- ** SubscriptionPurchaseV2_SubscriptionState
+    SubscriptionPurchaseV2_SubscriptionState (..),
+
+    -- ** SubscriptionPurchasesAcknowledgeRequest
+    SubscriptionPurchasesAcknowledgeRequest (..),
+    newSubscriptionPurchasesAcknowledgeRequest,
+
+    -- ** SubscriptionPurchasesDeferRequest
+    SubscriptionPurchasesDeferRequest (..),
+    newSubscriptionPurchasesDeferRequest,
+
+    -- ** SubscriptionPurchasesDeferResponse
+    SubscriptionPurchasesDeferResponse (..),
+    newSubscriptionPurchasesDeferResponse,
+
+    -- ** SubscriptionTaxAndComplianceSettings
+    SubscriptionTaxAndComplianceSettings (..),
+    newSubscriptionTaxAndComplianceSettings,
+
+    -- ** SubscriptionTaxAndComplianceSettings_EeaWithdrawalRightType
+    SubscriptionTaxAndComplianceSettings_EeaWithdrawalRightType (..),
+
+    -- ** SubscriptionTaxAndComplianceSettings_TaxRateInfoByRegionCode
+    SubscriptionTaxAndComplianceSettings_TaxRateInfoByRegionCode (..),
+    newSubscriptionTaxAndComplianceSettings_TaxRateInfoByRegionCode,
+
+    -- ** SystemApkOptions
+    SystemApkOptions (..),
+    newSystemApkOptions,
+
+    -- ** SystemApksListResponse
+    SystemApksListResponse (..),
+    newSystemApksListResponse,
+
+    -- ** SystemFeature
+    SystemFeature (..),
+    newSystemFeature,
+
+    -- ** SystemInitiatedCancellation
+    SystemInitiatedCancellation (..),
+    newSystemInitiatedCancellation,
+
+    -- ** SystemOnChip
+    SystemOnChip (..),
+    newSystemOnChip,
+
+    -- ** Targeting
+    Targeting (..),
+    newTargeting,
+
+    -- ** TargetingInfo
+    TargetingInfo (..),
+    newTargetingInfo,
+
+    -- ** TargetingRuleScope
+    TargetingRuleScope (..),
+    newTargetingRuleScope,
+
+    -- ** TargetingRuleScopeAnySubscriptionInApp
+    TargetingRuleScopeAnySubscriptionInApp (..),
+    newTargetingRuleScopeAnySubscriptionInApp,
+
+    -- ** TargetingRuleScopeThisSubscription
+    TargetingRuleScopeThisSubscription (..),
+    newTargetingRuleScopeThisSubscription,
+
+    -- ** TargetingUpdate
+    TargetingUpdate (..),
+    newTargetingUpdate,
+
+    -- ** TestPurchase
+    TestPurchase (..),
+    newTestPurchase,
+
+    -- ** Testers
+    Testers (..),
+    newTesters,
+
+    -- ** TextureCompressionFormat
+    TextureCompressionFormat (..),
+    newTextureCompressionFormat,
+
+    -- ** TextureCompressionFormat_Alias
+    TextureCompressionFormat_Alias (..),
+
+    -- ** TextureCompressionFormatTargeting
+    TextureCompressionFormatTargeting (..),
+    newTextureCompressionFormatTargeting,
+
+    -- ** Timestamp
+    Timestamp (..),
+    newTimestamp,
+
+    -- ** TokenPagination
+    TokenPagination (..),
+    newTokenPagination,
+
+    -- ** Track
+    Track (..),
+    newTrack,
+
+    -- ** TrackConfig
+    TrackConfig (..),
+    newTrackConfig,
+
+    -- ** TrackConfig_FormFactor
+    TrackConfig_FormFactor (..),
+
+    -- ** TrackConfig_Type
+    TrackConfig_Type (..),
+
+    -- ** TrackCountryAvailability
+    TrackCountryAvailability (..),
+    newTrackCountryAvailability,
+
+    -- ** TrackRelease
+    TrackRelease (..),
+    newTrackRelease,
+
+    -- ** TrackRelease_Status
+    TrackRelease_Status (..),
+
+    -- ** TrackTargetedCountry
+    TrackTargetedCountry (..),
+    newTrackTargetedCountry,
+
+    -- ** TracksListResponse
+    TracksListResponse (..),
+    newTracksListResponse,
+
+    -- ** UpdateBasePlanStateRequest
+    UpdateBasePlanStateRequest (..),
+    newUpdateBasePlanStateRequest,
+
+    -- ** UpdateSubscriptionOfferRequest
+    UpdateSubscriptionOfferRequest (..),
+    newUpdateSubscriptionOfferRequest,
+
+    -- ** UpdateSubscriptionOfferRequest_LatencyTolerance
+    UpdateSubscriptionOfferRequest_LatencyTolerance (..),
+
+    -- ** UpdateSubscriptionOfferStateRequest
+    UpdateSubscriptionOfferStateRequest (..),
+    newUpdateSubscriptionOfferStateRequest,
+
+    -- ** UpdateSubscriptionRequest
+    UpdateSubscriptionRequest (..),
+    newUpdateSubscriptionRequest,
+
+    -- ** UpdateSubscriptionRequest_LatencyTolerance
+    UpdateSubscriptionRequest_LatencyTolerance (..),
+
+    -- ** UpgradeTargetingRule
+    UpgradeTargetingRule (..),
+    newUpgradeTargetingRule,
+
+    -- ** User
+    User (..),
+    newUser,
+
+    -- ** User_AccessState
+    User_AccessState (..),
+
+    -- ** User_DeveloperAccountPermissionsItem
+    User_DeveloperAccountPermissionsItem (..),
+
+    -- ** UserComment
+    UserComment (..),
+    newUserComment,
+
+    -- ** UserCountriesTargeting
+    UserCountriesTargeting (..),
+    newUserCountriesTargeting,
+
+    -- ** UserCountrySet
+    UserCountrySet (..),
+    newUserCountrySet,
+
+    -- ** UserInitiatedCancellation
+    UserInitiatedCancellation (..),
+    newUserInitiatedCancellation,
+
+    -- ** UsesPermission
+    UsesPermission (..),
+    newUsesPermission,
+
+    -- ** VanityCode
+    VanityCode (..),
+    newVanityCode,
+
+    -- ** Variant
+    Variant (..),
+    newVariant,
+
+    -- ** VariantTargeting
+    VariantTargeting (..),
+    newVariantTargeting,
+
+    -- ** VoidedPurchase
+    VoidedPurchase (..),
+    newVoidedPurchase,
+
+    -- ** VoidedPurchasesListResponse
+    VoidedPurchasesListResponse (..),
+    newVoidedPurchasesListResponse,
+
+    -- ** EditsDeobfuscationfilesUploadDeobfuscationFileType
+    EditsDeobfuscationfilesUploadDeobfuscationFileType (..),
+
+    -- ** EditsExpansionfilesGetExpansionFileType
+    EditsExpansionfilesGetExpansionFileType (..),
+
+    -- ** EditsExpansionfilesPatchExpansionFileType
+    EditsExpansionfilesPatchExpansionFileType (..),
+
+    -- ** EditsExpansionfilesUpdateExpansionFileType
+    EditsExpansionfilesUpdateExpansionFileType (..),
+
+    -- ** EditsExpansionfilesUploadExpansionFileType
+    EditsExpansionfilesUploadExpansionFileType (..),
+
+    -- ** EditsImagesDeleteImageType
+    EditsImagesDeleteImageType (..),
+
+    -- ** EditsImagesDeleteallImageType
+    EditsImagesDeleteallImageType (..),
+
+    -- ** EditsImagesListImageType
+    EditsImagesListImageType (..),
+
+    -- ** EditsImagesUploadImageType
+    EditsImagesUploadImageType (..),
+
+    -- ** InappproductsDeleteLatencyTolerance
+    InappproductsDeleteLatencyTolerance (..),
+
+    -- ** InappproductsPatchLatencyTolerance
+    InappproductsPatchLatencyTolerance (..),
+
+    -- ** InappproductsUpdateLatencyTolerance
+    InappproductsUpdateLatencyTolerance (..),
+
+    -- ** MonetizationSubscriptionsBasePlansOffersPatchLatencyTolerance
+    MonetizationSubscriptionsBasePlansOffersPatchLatencyTolerance (..),
+
+    -- ** MonetizationSubscriptionsPatchLatencyTolerance
+    MonetizationSubscriptionsPatchLatencyTolerance (..),
+  )
+where
+
+import Gogol.AndroidPublisher.Applications.DataSafety
+import Gogol.AndroidPublisher.Applications.DeviceTierConfigs.Create
+import Gogol.AndroidPublisher.Applications.DeviceTierConfigs.Get
+import Gogol.AndroidPublisher.Applications.DeviceTierConfigs.List
+import Gogol.AndroidPublisher.Apprecovery.AddTargeting
+import Gogol.AndroidPublisher.Apprecovery.Cancel
+import Gogol.AndroidPublisher.Apprecovery.Create
+import Gogol.AndroidPublisher.Apprecovery.Deploy
+import Gogol.AndroidPublisher.Apprecovery.List
+import Gogol.AndroidPublisher.Edits.Apks.Addexternallyhosted
+import Gogol.AndroidPublisher.Edits.Apks.List
+import Gogol.AndroidPublisher.Edits.Apks.Upload
+import Gogol.AndroidPublisher.Edits.Bundles.List
+import Gogol.AndroidPublisher.Edits.Bundles.Upload
+import Gogol.AndroidPublisher.Edits.Commit
+import Gogol.AndroidPublisher.Edits.Countryavailability.Get
+import Gogol.AndroidPublisher.Edits.Delete
+import Gogol.AndroidPublisher.Edits.Deobfuscationfiles.Upload
+import Gogol.AndroidPublisher.Edits.Details.Get
+import Gogol.AndroidPublisher.Edits.Details.Patch
+import Gogol.AndroidPublisher.Edits.Details.Update
+import Gogol.AndroidPublisher.Edits.Expansionfiles.Get
+import Gogol.AndroidPublisher.Edits.Expansionfiles.Patch
+import Gogol.AndroidPublisher.Edits.Expansionfiles.Update
+import Gogol.AndroidPublisher.Edits.Expansionfiles.Upload
+import Gogol.AndroidPublisher.Edits.Get
+import Gogol.AndroidPublisher.Edits.Images.Delete
+import Gogol.AndroidPublisher.Edits.Images.Deleteall
+import Gogol.AndroidPublisher.Edits.Images.List
+import Gogol.AndroidPublisher.Edits.Images.Upload
+import Gogol.AndroidPublisher.Edits.Insert
+import Gogol.AndroidPublisher.Edits.Listings.Delete
+import Gogol.AndroidPublisher.Edits.Listings.Deleteall
+import Gogol.AndroidPublisher.Edits.Listings.Get
+import Gogol.AndroidPublisher.Edits.Listings.List
+import Gogol.AndroidPublisher.Edits.Listings.Patch
+import Gogol.AndroidPublisher.Edits.Listings.Update
+import Gogol.AndroidPublisher.Edits.Testers.Get
+import Gogol.AndroidPublisher.Edits.Testers.Patch
+import Gogol.AndroidPublisher.Edits.Testers.Update
+import Gogol.AndroidPublisher.Edits.Tracks.Create
+import Gogol.AndroidPublisher.Edits.Tracks.Get
+import Gogol.AndroidPublisher.Edits.Tracks.List
+import Gogol.AndroidPublisher.Edits.Tracks.Patch
+import Gogol.AndroidPublisher.Edits.Tracks.Update
+import Gogol.AndroidPublisher.Edits.Validate
+import Gogol.AndroidPublisher.Externaltransactions.Createexternaltransaction
+import Gogol.AndroidPublisher.Externaltransactions.Getexternaltransaction
+import Gogol.AndroidPublisher.Externaltransactions.Refundexternaltransaction
+import Gogol.AndroidPublisher.Generatedapks.Download
+import Gogol.AndroidPublisher.Generatedapks.List
+import Gogol.AndroidPublisher.Grants.Create
+import Gogol.AndroidPublisher.Grants.Delete
+import Gogol.AndroidPublisher.Grants.Patch
+import Gogol.AndroidPublisher.Inappproducts.BatchDelete
+import Gogol.AndroidPublisher.Inappproducts.BatchGet
+import Gogol.AndroidPublisher.Inappproducts.BatchUpdate
+import Gogol.AndroidPublisher.Inappproducts.Delete
+import Gogol.AndroidPublisher.Inappproducts.Get
+import Gogol.AndroidPublisher.Inappproducts.Insert
+import Gogol.AndroidPublisher.Inappproducts.List
+import Gogol.AndroidPublisher.Inappproducts.Patch
+import Gogol.AndroidPublisher.Inappproducts.Update
+import Gogol.AndroidPublisher.Internalappsharingartifacts.Uploadapk
+import Gogol.AndroidPublisher.Internalappsharingartifacts.Uploadbundle
+import Gogol.AndroidPublisher.Monetization.ConvertRegionPrices
+import Gogol.AndroidPublisher.Monetization.Subscriptions.Archive
+import Gogol.AndroidPublisher.Monetization.Subscriptions.BasePlans.Activate
+import Gogol.AndroidPublisher.Monetization.Subscriptions.BasePlans.BatchMigratePrices
+import Gogol.AndroidPublisher.Monetization.Subscriptions.BasePlans.BatchUpdateStates
+import Gogol.AndroidPublisher.Monetization.Subscriptions.BasePlans.Deactivate
+import Gogol.AndroidPublisher.Monetization.Subscriptions.BasePlans.Delete
+import Gogol.AndroidPublisher.Monetization.Subscriptions.BasePlans.MigratePrices
+import Gogol.AndroidPublisher.Monetization.Subscriptions.BasePlans.Offers.Activate
+import Gogol.AndroidPublisher.Monetization.Subscriptions.BasePlans.Offers.BatchGet
+import Gogol.AndroidPublisher.Monetization.Subscriptions.BasePlans.Offers.BatchUpdate
+import Gogol.AndroidPublisher.Monetization.Subscriptions.BasePlans.Offers.BatchUpdateStates
+import Gogol.AndroidPublisher.Monetization.Subscriptions.BasePlans.Offers.Create
+import Gogol.AndroidPublisher.Monetization.Subscriptions.BasePlans.Offers.Deactivate
+import Gogol.AndroidPublisher.Monetization.Subscriptions.BasePlans.Offers.Delete
+import Gogol.AndroidPublisher.Monetization.Subscriptions.BasePlans.Offers.Get
+import Gogol.AndroidPublisher.Monetization.Subscriptions.BasePlans.Offers.List
+import Gogol.AndroidPublisher.Monetization.Subscriptions.BasePlans.Offers.Patch
+import Gogol.AndroidPublisher.Monetization.Subscriptions.BatchGet
+import Gogol.AndroidPublisher.Monetization.Subscriptions.BatchUpdate
+import Gogol.AndroidPublisher.Monetization.Subscriptions.Create
+import Gogol.AndroidPublisher.Monetization.Subscriptions.Delete
+import Gogol.AndroidPublisher.Monetization.Subscriptions.Get
+import Gogol.AndroidPublisher.Monetization.Subscriptions.List
+import Gogol.AndroidPublisher.Monetization.Subscriptions.Patch
+import Gogol.AndroidPublisher.Orders.Refund
+import Gogol.AndroidPublisher.Purchases.Products.Acknowledge
+import Gogol.AndroidPublisher.Purchases.Products.Consume
+import Gogol.AndroidPublisher.Purchases.Products.Get
+import Gogol.AndroidPublisher.Purchases.Subscriptions.Acknowledge
+import Gogol.AndroidPublisher.Purchases.Subscriptions.Cancel
+import Gogol.AndroidPublisher.Purchases.Subscriptions.Defer
+import Gogol.AndroidPublisher.Purchases.Subscriptions.Get
+import Gogol.AndroidPublisher.Purchases.Subscriptions.Refund
+import Gogol.AndroidPublisher.Purchases.Subscriptions.Revoke
+import Gogol.AndroidPublisher.Purchases.Subscriptionsv2.Get
+import Gogol.AndroidPublisher.Purchases.Subscriptionsv2.Revoke
+import Gogol.AndroidPublisher.Purchases.Voidedpurchases.List
+import Gogol.AndroidPublisher.Reviews.Get
+import Gogol.AndroidPublisher.Reviews.List
+import Gogol.AndroidPublisher.Reviews.Reply
+import Gogol.AndroidPublisher.Systemapks.Variants.Create
+import Gogol.AndroidPublisher.Systemapks.Variants.Download
+import Gogol.AndroidPublisher.Systemapks.Variants.Get
+import Gogol.AndroidPublisher.Systemapks.Variants.List
+import Gogol.AndroidPublisher.Types
+import Gogol.AndroidPublisher.Users.Create
+import Gogol.AndroidPublisher.Users.Delete
+import Gogol.AndroidPublisher.Users.List
+import Gogol.AndroidPublisher.Users.Patch
diff --git a/gen/Gogol/AndroidPublisher/Applications/DataSafety.hs b/gen/Gogol/AndroidPublisher/Applications/DataSafety.hs
new file mode 100644
--- /dev/null
+++ b/gen/Gogol/AndroidPublisher/Applications/DataSafety.hs
@@ -0,0 +1,123 @@
+{-# LANGUAGE DataKinds #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE ImportQualifiedPost #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-name-shadowing #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- |
+-- Module      : Gogol.AndroidPublisher.Applications.DataSafety
+-- Copyright   : (c) 2015-2025 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay+gogol@gmail.com>
+--               Toni Cebrián <toni@tonicebrian.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Writes the Safety Labels declaration of an app.
+--
+-- /See:/ <https://developers.google.com/android-publisher Google Play Android Developer API Reference> for @androidpublisher.applications.dataSafety@.
+module Gogol.AndroidPublisher.Applications.DataSafety
+  ( -- * Resource
+    AndroidPublisherApplicationsDataSafetyResource,
+
+    -- ** Constructing a Request
+    AndroidPublisherApplicationsDataSafety (..),
+    newAndroidPublisherApplicationsDataSafety,
+  )
+where
+
+import Gogol.AndroidPublisher.Types
+import Gogol.Prelude qualified as Core
+
+-- | A resource alias for @androidpublisher.applications.dataSafety@ method which the
+-- 'AndroidPublisherApplicationsDataSafety' request conforms to.
+type AndroidPublisherApplicationsDataSafetyResource =
+  "androidpublisher"
+    Core.:> "v3"
+    Core.:> "applications"
+    Core.:> Core.Capture "packageName" Core.Text
+    Core.:> "dataSafety"
+    Core.:> Core.QueryParam "$.xgafv" Xgafv
+    Core.:> Core.QueryParam "access_token" Core.Text
+    Core.:> Core.QueryParam "callback" Core.Text
+    Core.:> Core.QueryParam "uploadType" Core.Text
+    Core.:> Core.QueryParam "upload_protocol" Core.Text
+    Core.:> Core.QueryParam "alt" Core.AltJSON
+    Core.:> Core.ReqBody '[Core.JSON] SafetyLabelsUpdateRequest
+    Core.:> Core.Post '[Core.JSON] SafetyLabelsUpdateResponse
+
+-- | Writes the Safety Labels declaration of an app.
+--
+-- /See:/ 'newAndroidPublisherApplicationsDataSafety' smart constructor.
+data AndroidPublisherApplicationsDataSafety = AndroidPublisherApplicationsDataSafety
+  { -- | V1 error format.
+    xgafv :: (Core.Maybe Xgafv),
+    -- | OAuth access token.
+    accessToken :: (Core.Maybe Core.Text),
+    -- | JSONP
+    callback :: (Core.Maybe Core.Text),
+    -- | Required. Package name of the app.
+    packageName :: Core.Text,
+    -- | Multipart request metadata.
+    payload :: SafetyLabelsUpdateRequest,
+    -- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
+    uploadType :: (Core.Maybe Core.Text),
+    -- | Upload protocol for media (e.g. \"raw\", \"multipart\").
+    uploadProtocol :: (Core.Maybe Core.Text)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'AndroidPublisherApplicationsDataSafety' with the minimum fields required to make a request.
+newAndroidPublisherApplicationsDataSafety ::
+  -- |  Required. Package name of the app. See 'packageName'.
+  Core.Text ->
+  -- |  Multipart request metadata. See 'payload'.
+  SafetyLabelsUpdateRequest ->
+  AndroidPublisherApplicationsDataSafety
+newAndroidPublisherApplicationsDataSafety packageName payload =
+  AndroidPublisherApplicationsDataSafety
+    { xgafv = Core.Nothing,
+      accessToken = Core.Nothing,
+      callback = Core.Nothing,
+      packageName = packageName,
+      payload = payload,
+      uploadType = Core.Nothing,
+      uploadProtocol = Core.Nothing
+    }
+
+instance Core.GoogleRequest AndroidPublisherApplicationsDataSafety where
+  type
+    Rs AndroidPublisherApplicationsDataSafety =
+      SafetyLabelsUpdateResponse
+  type
+    Scopes AndroidPublisherApplicationsDataSafety =
+      '[Androidpublisher'FullControl]
+  requestClient AndroidPublisherApplicationsDataSafety {..} =
+    go
+      packageName
+      xgafv
+      accessToken
+      callback
+      uploadType
+      uploadProtocol
+      (Core.Just Core.AltJSON)
+      payload
+      androidPublisherService
+    where
+      go =
+        Core.buildClient
+          ( Core.Proxy ::
+              Core.Proxy AndroidPublisherApplicationsDataSafetyResource
+          )
+          Core.mempty
diff --git a/gen/Gogol/AndroidPublisher/Applications/DeviceTierConfigs/Create.hs b/gen/Gogol/AndroidPublisher/Applications/DeviceTierConfigs/Create.hs
new file mode 100644
--- /dev/null
+++ b/gen/Gogol/AndroidPublisher/Applications/DeviceTierConfigs/Create.hs
@@ -0,0 +1,136 @@
+{-# LANGUAGE DataKinds #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE ImportQualifiedPost #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-name-shadowing #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- |
+-- Module      : Gogol.AndroidPublisher.Applications.DeviceTierConfigs.Create
+-- Copyright   : (c) 2015-2025 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay+gogol@gmail.com>
+--               Toni Cebrián <toni@tonicebrian.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Creates a new device tier config for an app.
+--
+-- /See:/ <https://developers.google.com/android-publisher Google Play Android Developer API Reference> for @androidpublisher.applications.deviceTierConfigs.create@.
+module Gogol.AndroidPublisher.Applications.DeviceTierConfigs.Create
+  ( -- * Resource
+    AndroidPublisherApplicationsDeviceTierConfigsCreateResource,
+
+    -- ** Constructing a Request
+    AndroidPublisherApplicationsDeviceTierConfigsCreate (..),
+    newAndroidPublisherApplicationsDeviceTierConfigsCreate,
+  )
+where
+
+import Gogol.AndroidPublisher.Types
+import Gogol.Prelude qualified as Core
+
+-- | A resource alias for @androidpublisher.applications.deviceTierConfigs.create@ method which the
+-- 'AndroidPublisherApplicationsDeviceTierConfigsCreate' request conforms to.
+type AndroidPublisherApplicationsDeviceTierConfigsCreateResource =
+  "androidpublisher"
+    Core.:> "v3"
+    Core.:> "applications"
+    Core.:> Core.Capture "packageName" Core.Text
+    Core.:> "deviceTierConfigs"
+    Core.:> Core.QueryParam "$.xgafv" Xgafv
+    Core.:> Core.QueryParam "access_token" Core.Text
+    Core.:> Core.QueryParam "allowUnknownDevices" Core.Bool
+    Core.:> Core.QueryParam "callback" Core.Text
+    Core.:> Core.QueryParam "uploadType" Core.Text
+    Core.:> Core.QueryParam "upload_protocol" Core.Text
+    Core.:> Core.QueryParam "alt" Core.AltJSON
+    Core.:> Core.ReqBody '[Core.JSON] DeviceTierConfig
+    Core.:> Core.Post '[Core.JSON] DeviceTierConfig
+
+-- | Creates a new device tier config for an app.
+--
+-- /See:/ 'newAndroidPublisherApplicationsDeviceTierConfigsCreate' smart constructor.
+data AndroidPublisherApplicationsDeviceTierConfigsCreate = AndroidPublisherApplicationsDeviceTierConfigsCreate
+  { -- | V1 error format.
+    xgafv :: (Core.Maybe Xgafv),
+    -- | OAuth access token.
+    accessToken :: (Core.Maybe Core.Text),
+    -- | Whether the service should accept device IDs that are unknown to Play\'s device catalog.
+    allowUnknownDevices :: (Core.Maybe Core.Bool),
+    -- | JSONP
+    callback :: (Core.Maybe Core.Text),
+    -- | Package name of the app.
+    packageName :: Core.Text,
+    -- | Multipart request metadata.
+    payload :: DeviceTierConfig,
+    -- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
+    uploadType :: (Core.Maybe Core.Text),
+    -- | Upload protocol for media (e.g. \"raw\", \"multipart\").
+    uploadProtocol :: (Core.Maybe Core.Text)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'AndroidPublisherApplicationsDeviceTierConfigsCreate' with the minimum fields required to make a request.
+newAndroidPublisherApplicationsDeviceTierConfigsCreate ::
+  -- |  Package name of the app. See 'packageName'.
+  Core.Text ->
+  -- |  Multipart request metadata. See 'payload'.
+  DeviceTierConfig ->
+  AndroidPublisherApplicationsDeviceTierConfigsCreate
+newAndroidPublisherApplicationsDeviceTierConfigsCreate
+  packageName
+  payload =
+    AndroidPublisherApplicationsDeviceTierConfigsCreate
+      { xgafv =
+          Core.Nothing,
+        accessToken = Core.Nothing,
+        allowUnknownDevices = Core.Nothing,
+        callback = Core.Nothing,
+        packageName = packageName,
+        payload = payload,
+        uploadType = Core.Nothing,
+        uploadProtocol = Core.Nothing
+      }
+
+instance
+  Core.GoogleRequest
+    AndroidPublisherApplicationsDeviceTierConfigsCreate
+  where
+  type
+    Rs AndroidPublisherApplicationsDeviceTierConfigsCreate =
+      DeviceTierConfig
+  type
+    Scopes AndroidPublisherApplicationsDeviceTierConfigsCreate =
+      '[Androidpublisher'FullControl]
+  requestClient
+    AndroidPublisherApplicationsDeviceTierConfigsCreate {..} =
+      go
+        packageName
+        xgafv
+        accessToken
+        allowUnknownDevices
+        callback
+        uploadType
+        uploadProtocol
+        (Core.Just Core.AltJSON)
+        payload
+        androidPublisherService
+      where
+        go =
+          Core.buildClient
+            ( Core.Proxy ::
+                Core.Proxy
+                  AndroidPublisherApplicationsDeviceTierConfigsCreateResource
+            )
+            Core.mempty
diff --git a/gen/Gogol/AndroidPublisher/Applications/DeviceTierConfigs/Get.hs b/gen/Gogol/AndroidPublisher/Applications/DeviceTierConfigs/Get.hs
new file mode 100644
--- /dev/null
+++ b/gen/Gogol/AndroidPublisher/Applications/DeviceTierConfigs/Get.hs
@@ -0,0 +1,130 @@
+{-# LANGUAGE DataKinds #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE ImportQualifiedPost #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-name-shadowing #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- |
+-- Module      : Gogol.AndroidPublisher.Applications.DeviceTierConfigs.Get
+-- Copyright   : (c) 2015-2025 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay+gogol@gmail.com>
+--               Toni Cebrián <toni@tonicebrian.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Returns a particular device tier config.
+--
+-- /See:/ <https://developers.google.com/android-publisher Google Play Android Developer API Reference> for @androidpublisher.applications.deviceTierConfigs.get@.
+module Gogol.AndroidPublisher.Applications.DeviceTierConfigs.Get
+  ( -- * Resource
+    AndroidPublisherApplicationsDeviceTierConfigsGetResource,
+
+    -- ** Constructing a Request
+    AndroidPublisherApplicationsDeviceTierConfigsGet (..),
+    newAndroidPublisherApplicationsDeviceTierConfigsGet,
+  )
+where
+
+import Gogol.AndroidPublisher.Types
+import Gogol.Prelude qualified as Core
+
+-- | A resource alias for @androidpublisher.applications.deviceTierConfigs.get@ method which the
+-- 'AndroidPublisherApplicationsDeviceTierConfigsGet' request conforms to.
+type AndroidPublisherApplicationsDeviceTierConfigsGetResource =
+  "androidpublisher"
+    Core.:> "v3"
+    Core.:> "applications"
+    Core.:> Core.Capture "packageName" Core.Text
+    Core.:> "deviceTierConfigs"
+    Core.:> Core.Capture "deviceTierConfigId" Core.Int64
+    Core.:> Core.QueryParam "$.xgafv" Xgafv
+    Core.:> Core.QueryParam "access_token" Core.Text
+    Core.:> Core.QueryParam "callback" Core.Text
+    Core.:> Core.QueryParam "uploadType" Core.Text
+    Core.:> Core.QueryParam "upload_protocol" Core.Text
+    Core.:> Core.QueryParam "alt" Core.AltJSON
+    Core.:> Core.Get '[Core.JSON] DeviceTierConfig
+
+-- | Returns a particular device tier config.
+--
+-- /See:/ 'newAndroidPublisherApplicationsDeviceTierConfigsGet' smart constructor.
+data AndroidPublisherApplicationsDeviceTierConfigsGet = AndroidPublisherApplicationsDeviceTierConfigsGet
+  { -- | V1 error format.
+    xgafv :: (Core.Maybe Xgafv),
+    -- | OAuth access token.
+    accessToken :: (Core.Maybe Core.Text),
+    -- | JSONP
+    callback :: (Core.Maybe Core.Text),
+    -- | Required. Id of an existing device tier config.
+    deviceTierConfigId :: Core.Int64,
+    -- | Package name of the app.
+    packageName :: Core.Text,
+    -- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
+    uploadType :: (Core.Maybe Core.Text),
+    -- | Upload protocol for media (e.g. \"raw\", \"multipart\").
+    uploadProtocol :: (Core.Maybe Core.Text)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'AndroidPublisherApplicationsDeviceTierConfigsGet' with the minimum fields required to make a request.
+newAndroidPublisherApplicationsDeviceTierConfigsGet ::
+  -- |  Required. Id of an existing device tier config. See 'deviceTierConfigId'.
+  Core.Int64 ->
+  -- |  Package name of the app. See 'packageName'.
+  Core.Text ->
+  AndroidPublisherApplicationsDeviceTierConfigsGet
+newAndroidPublisherApplicationsDeviceTierConfigsGet
+  deviceTierConfigId
+  packageName =
+    AndroidPublisherApplicationsDeviceTierConfigsGet
+      { xgafv =
+          Core.Nothing,
+        accessToken = Core.Nothing,
+        callback = Core.Nothing,
+        deviceTierConfigId = deviceTierConfigId,
+        packageName = packageName,
+        uploadType = Core.Nothing,
+        uploadProtocol = Core.Nothing
+      }
+
+instance
+  Core.GoogleRequest
+    AndroidPublisherApplicationsDeviceTierConfigsGet
+  where
+  type
+    Rs AndroidPublisherApplicationsDeviceTierConfigsGet =
+      DeviceTierConfig
+  type
+    Scopes AndroidPublisherApplicationsDeviceTierConfigsGet =
+      '[Androidpublisher'FullControl]
+  requestClient AndroidPublisherApplicationsDeviceTierConfigsGet {..} =
+    go
+      packageName
+      deviceTierConfigId
+      xgafv
+      accessToken
+      callback
+      uploadType
+      uploadProtocol
+      (Core.Just Core.AltJSON)
+      androidPublisherService
+    where
+      go =
+        Core.buildClient
+          ( Core.Proxy ::
+              Core.Proxy
+                AndroidPublisherApplicationsDeviceTierConfigsGetResource
+          )
+          Core.mempty
diff --git a/gen/Gogol/AndroidPublisher/Applications/DeviceTierConfigs/List.hs b/gen/Gogol/AndroidPublisher/Applications/DeviceTierConfigs/List.hs
new file mode 100644
--- /dev/null
+++ b/gen/Gogol/AndroidPublisher/Applications/DeviceTierConfigs/List.hs
@@ -0,0 +1,131 @@
+{-# LANGUAGE DataKinds #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE ImportQualifiedPost #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-name-shadowing #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- |
+-- Module      : Gogol.AndroidPublisher.Applications.DeviceTierConfigs.List
+-- Copyright   : (c) 2015-2025 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay+gogol@gmail.com>
+--               Toni Cebrián <toni@tonicebrian.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Returns created device tier configs, ordered by descending creation time.
+--
+-- /See:/ <https://developers.google.com/android-publisher Google Play Android Developer API Reference> for @androidpublisher.applications.deviceTierConfigs.list@.
+module Gogol.AndroidPublisher.Applications.DeviceTierConfigs.List
+  ( -- * Resource
+    AndroidPublisherApplicationsDeviceTierConfigsListResource,
+
+    -- ** Constructing a Request
+    AndroidPublisherApplicationsDeviceTierConfigsList (..),
+    newAndroidPublisherApplicationsDeviceTierConfigsList,
+  )
+where
+
+import Gogol.AndroidPublisher.Types
+import Gogol.Prelude qualified as Core
+
+-- | A resource alias for @androidpublisher.applications.deviceTierConfigs.list@ method which the
+-- 'AndroidPublisherApplicationsDeviceTierConfigsList' request conforms to.
+type AndroidPublisherApplicationsDeviceTierConfigsListResource =
+  "androidpublisher"
+    Core.:> "v3"
+    Core.:> "applications"
+    Core.:> Core.Capture "packageName" Core.Text
+    Core.:> "deviceTierConfigs"
+    Core.:> Core.QueryParam "$.xgafv" Xgafv
+    Core.:> Core.QueryParam "access_token" Core.Text
+    Core.:> Core.QueryParam "callback" Core.Text
+    Core.:> Core.QueryParam "pageSize" Core.Int32
+    Core.:> Core.QueryParam "pageToken" Core.Text
+    Core.:> Core.QueryParam "uploadType" Core.Text
+    Core.:> Core.QueryParam "upload_protocol" Core.Text
+    Core.:> Core.QueryParam "alt" Core.AltJSON
+    Core.:> Core.Get '[Core.JSON] ListDeviceTierConfigsResponse
+
+-- | Returns created device tier configs, ordered by descending creation time.
+--
+-- /See:/ 'newAndroidPublisherApplicationsDeviceTierConfigsList' smart constructor.
+data AndroidPublisherApplicationsDeviceTierConfigsList = AndroidPublisherApplicationsDeviceTierConfigsList
+  { -- | V1 error format.
+    xgafv :: (Core.Maybe Xgafv),
+    -- | OAuth access token.
+    accessToken :: (Core.Maybe Core.Text),
+    -- | JSONP
+    callback :: (Core.Maybe Core.Text),
+    -- | Package name of the app.
+    packageName :: Core.Text,
+    -- | The maximum number of device tier configs to return. The service may return fewer than this value. If unspecified, at most 10 device tier configs will be returned. The maximum value for this field is 100; values above 100 will be coerced to 100. Device tier configs will be ordered by descending creation time.
+    pageSize :: (Core.Maybe Core.Int32),
+    -- | A page token, received from a previous @ListDeviceTierConfigs@ call. Provide this to retrieve the subsequent page.
+    pageToken :: (Core.Maybe Core.Text),
+    -- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
+    uploadType :: (Core.Maybe Core.Text),
+    -- | Upload protocol for media (e.g. \"raw\", \"multipart\").
+    uploadProtocol :: (Core.Maybe Core.Text)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'AndroidPublisherApplicationsDeviceTierConfigsList' with the minimum fields required to make a request.
+newAndroidPublisherApplicationsDeviceTierConfigsList ::
+  -- |  Package name of the app. See 'packageName'.
+  Core.Text ->
+  AndroidPublisherApplicationsDeviceTierConfigsList
+newAndroidPublisherApplicationsDeviceTierConfigsList packageName =
+  AndroidPublisherApplicationsDeviceTierConfigsList
+    { xgafv =
+        Core.Nothing,
+      accessToken = Core.Nothing,
+      callback = Core.Nothing,
+      packageName = packageName,
+      pageSize = Core.Nothing,
+      pageToken = Core.Nothing,
+      uploadType = Core.Nothing,
+      uploadProtocol = Core.Nothing
+    }
+
+instance
+  Core.GoogleRequest
+    AndroidPublisherApplicationsDeviceTierConfigsList
+  where
+  type
+    Rs AndroidPublisherApplicationsDeviceTierConfigsList =
+      ListDeviceTierConfigsResponse
+  type
+    Scopes AndroidPublisherApplicationsDeviceTierConfigsList =
+      '[Androidpublisher'FullControl]
+  requestClient AndroidPublisherApplicationsDeviceTierConfigsList {..} =
+    go
+      packageName
+      xgafv
+      accessToken
+      callback
+      pageSize
+      pageToken
+      uploadType
+      uploadProtocol
+      (Core.Just Core.AltJSON)
+      androidPublisherService
+    where
+      go =
+        Core.buildClient
+          ( Core.Proxy ::
+              Core.Proxy
+                AndroidPublisherApplicationsDeviceTierConfigsListResource
+          )
+          Core.mempty
diff --git a/gen/Gogol/AndroidPublisher/Apprecovery/AddTargeting.hs b/gen/Gogol/AndroidPublisher/Apprecovery/AddTargeting.hs
new file mode 100644
--- /dev/null
+++ b/gen/Gogol/AndroidPublisher/Apprecovery/AddTargeting.hs
@@ -0,0 +1,133 @@
+{-# LANGUAGE DataKinds #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE ImportQualifiedPost #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-name-shadowing #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- |
+-- Module      : Gogol.AndroidPublisher.Apprecovery.AddTargeting
+-- Copyright   : (c) 2015-2025 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay+gogol@gmail.com>
+--               Toni Cebrián <toni@tonicebrian.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Incrementally update targeting for a recovery action. Note that only the criteria selected during the creation of recovery action can be expanded.
+--
+-- /See:/ <https://developers.google.com/android-publisher Google Play Android Developer API Reference> for @androidpublisher.apprecovery.addTargeting@.
+module Gogol.AndroidPublisher.Apprecovery.AddTargeting
+  ( -- * Resource
+    AndroidPublisherApprecoveryAddTargetingResource,
+
+    -- ** Constructing a Request
+    AndroidPublisherApprecoveryAddTargeting (..),
+    newAndroidPublisherApprecoveryAddTargeting,
+  )
+where
+
+import Gogol.AndroidPublisher.Types
+import Gogol.Prelude qualified as Core
+
+-- | A resource alias for @androidpublisher.apprecovery.addTargeting@ method which the
+-- 'AndroidPublisherApprecoveryAddTargeting' request conforms to.
+type AndroidPublisherApprecoveryAddTargetingResource =
+  "androidpublisher"
+    Core.:> "v3"
+    Core.:> "applications"
+    Core.:> Core.Capture "packageName" Core.Text
+    Core.:> "appRecoveries"
+    Core.:> Core.CaptureMode "appRecoveryId" "addTargeting" Core.Int64
+    Core.:> Core.QueryParam "$.xgafv" Xgafv
+    Core.:> Core.QueryParam "access_token" Core.Text
+    Core.:> Core.QueryParam "callback" Core.Text
+    Core.:> Core.QueryParam "uploadType" Core.Text
+    Core.:> Core.QueryParam "upload_protocol" Core.Text
+    Core.:> Core.QueryParam "alt" Core.AltJSON
+    Core.:> Core.ReqBody '[Core.JSON] AddTargetingRequest
+    Core.:> Core.Post '[Core.JSON] AddTargetingResponse
+
+-- | Incrementally update targeting for a recovery action. Note that only the criteria selected during the creation of recovery action can be expanded.
+--
+-- /See:/ 'newAndroidPublisherApprecoveryAddTargeting' smart constructor.
+data AndroidPublisherApprecoveryAddTargeting = AndroidPublisherApprecoveryAddTargeting
+  { -- | V1 error format.
+    xgafv :: (Core.Maybe Xgafv),
+    -- | OAuth access token.
+    accessToken :: (Core.Maybe Core.Text),
+    -- | Required. ID corresponding to the app recovery action.
+    appRecoveryId :: Core.Int64,
+    -- | JSONP
+    callback :: (Core.Maybe Core.Text),
+    -- | Required. Package name of the app for which recovery action is to be updated.
+    packageName :: Core.Text,
+    -- | Multipart request metadata.
+    payload :: AddTargetingRequest,
+    -- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
+    uploadType :: (Core.Maybe Core.Text),
+    -- | Upload protocol for media (e.g. \"raw\", \"multipart\").
+    uploadProtocol :: (Core.Maybe Core.Text)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'AndroidPublisherApprecoveryAddTargeting' with the minimum fields required to make a request.
+newAndroidPublisherApprecoveryAddTargeting ::
+  -- |  Required. ID corresponding to the app recovery action. See 'appRecoveryId'.
+  Core.Int64 ->
+  -- |  Required. Package name of the app for which recovery action is to be updated. See 'packageName'.
+  Core.Text ->
+  -- |  Multipart request metadata. See 'payload'.
+  AddTargetingRequest ->
+  AndroidPublisherApprecoveryAddTargeting
+newAndroidPublisherApprecoveryAddTargeting
+  appRecoveryId
+  packageName
+  payload =
+    AndroidPublisherApprecoveryAddTargeting
+      { xgafv = Core.Nothing,
+        accessToken = Core.Nothing,
+        appRecoveryId = appRecoveryId,
+        callback = Core.Nothing,
+        packageName = packageName,
+        payload = payload,
+        uploadType = Core.Nothing,
+        uploadProtocol = Core.Nothing
+      }
+
+instance Core.GoogleRequest AndroidPublisherApprecoveryAddTargeting where
+  type
+    Rs AndroidPublisherApprecoveryAddTargeting =
+      AddTargetingResponse
+  type
+    Scopes AndroidPublisherApprecoveryAddTargeting =
+      '[Androidpublisher'FullControl]
+  requestClient AndroidPublisherApprecoveryAddTargeting {..} =
+    go
+      packageName
+      appRecoveryId
+      xgafv
+      accessToken
+      callback
+      uploadType
+      uploadProtocol
+      (Core.Just Core.AltJSON)
+      payload
+      androidPublisherService
+    where
+      go =
+        Core.buildClient
+          ( Core.Proxy ::
+              Core.Proxy AndroidPublisherApprecoveryAddTargetingResource
+          )
+          Core.mempty
diff --git a/gen/Gogol/AndroidPublisher/Apprecovery/Cancel.hs b/gen/Gogol/AndroidPublisher/Apprecovery/Cancel.hs
new file mode 100644
--- /dev/null
+++ b/gen/Gogol/AndroidPublisher/Apprecovery/Cancel.hs
@@ -0,0 +1,133 @@
+{-# LANGUAGE DataKinds #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE ImportQualifiedPost #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-name-shadowing #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- |
+-- Module      : Gogol.AndroidPublisher.Apprecovery.Cancel
+-- Copyright   : (c) 2015-2025 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay+gogol@gmail.com>
+--               Toni Cebrián <toni@tonicebrian.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Cancel an already executing app recovery action. Note that this action changes status of the recovery action to CANCELED.
+--
+-- /See:/ <https://developers.google.com/android-publisher Google Play Android Developer API Reference> for @androidpublisher.apprecovery.cancel@.
+module Gogol.AndroidPublisher.Apprecovery.Cancel
+  ( -- * Resource
+    AndroidPublisherApprecoveryCancelResource,
+
+    -- ** Constructing a Request
+    AndroidPublisherApprecoveryCancel (..),
+    newAndroidPublisherApprecoveryCancel,
+  )
+where
+
+import Gogol.AndroidPublisher.Types
+import Gogol.Prelude qualified as Core
+
+-- | A resource alias for @androidpublisher.apprecovery.cancel@ method which the
+-- 'AndroidPublisherApprecoveryCancel' request conforms to.
+type AndroidPublisherApprecoveryCancelResource =
+  "androidpublisher"
+    Core.:> "v3"
+    Core.:> "applications"
+    Core.:> Core.Capture "packageName" Core.Text
+    Core.:> "appRecoveries"
+    Core.:> Core.CaptureMode "appRecoveryId" "cancel" Core.Int64
+    Core.:> Core.QueryParam "$.xgafv" Xgafv
+    Core.:> Core.QueryParam "access_token" Core.Text
+    Core.:> Core.QueryParam "callback" Core.Text
+    Core.:> Core.QueryParam "uploadType" Core.Text
+    Core.:> Core.QueryParam "upload_protocol" Core.Text
+    Core.:> Core.QueryParam "alt" Core.AltJSON
+    Core.:> Core.ReqBody '[Core.JSON] CancelAppRecoveryRequest
+    Core.:> Core.Post '[Core.JSON] CancelAppRecoveryResponse
+
+-- | Cancel an already executing app recovery action. Note that this action changes status of the recovery action to CANCELED.
+--
+-- /See:/ 'newAndroidPublisherApprecoveryCancel' smart constructor.
+data AndroidPublisherApprecoveryCancel = AndroidPublisherApprecoveryCancel
+  { -- | V1 error format.
+    xgafv :: (Core.Maybe Xgafv),
+    -- | OAuth access token.
+    accessToken :: (Core.Maybe Core.Text),
+    -- | Required. ID corresponding to the app recovery action.
+    appRecoveryId :: Core.Int64,
+    -- | JSONP
+    callback :: (Core.Maybe Core.Text),
+    -- | Required. Package name of the app for which recovery action cancellation is requested.
+    packageName :: Core.Text,
+    -- | Multipart request metadata.
+    payload :: CancelAppRecoveryRequest,
+    -- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
+    uploadType :: (Core.Maybe Core.Text),
+    -- | Upload protocol for media (e.g. \"raw\", \"multipart\").
+    uploadProtocol :: (Core.Maybe Core.Text)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'AndroidPublisherApprecoveryCancel' with the minimum fields required to make a request.
+newAndroidPublisherApprecoveryCancel ::
+  -- |  Required. ID corresponding to the app recovery action. See 'appRecoveryId'.
+  Core.Int64 ->
+  -- |  Required. Package name of the app for which recovery action cancellation is requested. See 'packageName'.
+  Core.Text ->
+  -- |  Multipart request metadata. See 'payload'.
+  CancelAppRecoveryRequest ->
+  AndroidPublisherApprecoveryCancel
+newAndroidPublisherApprecoveryCancel
+  appRecoveryId
+  packageName
+  payload =
+    AndroidPublisherApprecoveryCancel
+      { xgafv = Core.Nothing,
+        accessToken = Core.Nothing,
+        appRecoveryId = appRecoveryId,
+        callback = Core.Nothing,
+        packageName = packageName,
+        payload = payload,
+        uploadType = Core.Nothing,
+        uploadProtocol = Core.Nothing
+      }
+
+instance Core.GoogleRequest AndroidPublisherApprecoveryCancel where
+  type
+    Rs AndroidPublisherApprecoveryCancel =
+      CancelAppRecoveryResponse
+  type
+    Scopes AndroidPublisherApprecoveryCancel =
+      '[Androidpublisher'FullControl]
+  requestClient AndroidPublisherApprecoveryCancel {..} =
+    go
+      packageName
+      appRecoveryId
+      xgafv
+      accessToken
+      callback
+      uploadType
+      uploadProtocol
+      (Core.Just Core.AltJSON)
+      payload
+      androidPublisherService
+    where
+      go =
+        Core.buildClient
+          ( Core.Proxy ::
+              Core.Proxy AndroidPublisherApprecoveryCancelResource
+          )
+          Core.mempty
diff --git a/gen/Gogol/AndroidPublisher/Apprecovery/Create.hs b/gen/Gogol/AndroidPublisher/Apprecovery/Create.hs
new file mode 100644
--- /dev/null
+++ b/gen/Gogol/AndroidPublisher/Apprecovery/Create.hs
@@ -0,0 +1,121 @@
+{-# LANGUAGE DataKinds #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE ImportQualifiedPost #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-name-shadowing #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- |
+-- Module      : Gogol.AndroidPublisher.Apprecovery.Create
+-- Copyright   : (c) 2015-2025 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay+gogol@gmail.com>
+--               Toni Cebrián <toni@tonicebrian.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Create an app recovery action with recovery status as DRAFT. Note that this action does not execute the recovery action.
+--
+-- /See:/ <https://developers.google.com/android-publisher Google Play Android Developer API Reference> for @androidpublisher.apprecovery.create@.
+module Gogol.AndroidPublisher.Apprecovery.Create
+  ( -- * Resource
+    AndroidPublisherApprecoveryCreateResource,
+
+    -- ** Constructing a Request
+    AndroidPublisherApprecoveryCreate (..),
+    newAndroidPublisherApprecoveryCreate,
+  )
+where
+
+import Gogol.AndroidPublisher.Types
+import Gogol.Prelude qualified as Core
+
+-- | A resource alias for @androidpublisher.apprecovery.create@ method which the
+-- 'AndroidPublisherApprecoveryCreate' request conforms to.
+type AndroidPublisherApprecoveryCreateResource =
+  "androidpublisher"
+    Core.:> "v3"
+    Core.:> "applications"
+    Core.:> Core.Capture "packageName" Core.Text
+    Core.:> "appRecoveries"
+    Core.:> Core.QueryParam "$.xgafv" Xgafv
+    Core.:> Core.QueryParam "access_token" Core.Text
+    Core.:> Core.QueryParam "callback" Core.Text
+    Core.:> Core.QueryParam "uploadType" Core.Text
+    Core.:> Core.QueryParam "upload_protocol" Core.Text
+    Core.:> Core.QueryParam "alt" Core.AltJSON
+    Core.:> Core.ReqBody '[Core.JSON] CreateDraftAppRecoveryRequest
+    Core.:> Core.Post '[Core.JSON] AppRecoveryAction
+
+-- | Create an app recovery action with recovery status as DRAFT. Note that this action does not execute the recovery action.
+--
+-- /See:/ 'newAndroidPublisherApprecoveryCreate' smart constructor.
+data AndroidPublisherApprecoveryCreate = AndroidPublisherApprecoveryCreate
+  { -- | V1 error format.
+    xgafv :: (Core.Maybe Xgafv),
+    -- | OAuth access token.
+    accessToken :: (Core.Maybe Core.Text),
+    -- | JSONP
+    callback :: (Core.Maybe Core.Text),
+    -- | Required. Package name of the app on which recovery action is performed.
+    packageName :: Core.Text,
+    -- | Multipart request metadata.
+    payload :: CreateDraftAppRecoveryRequest,
+    -- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
+    uploadType :: (Core.Maybe Core.Text),
+    -- | Upload protocol for media (e.g. \"raw\", \"multipart\").
+    uploadProtocol :: (Core.Maybe Core.Text)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'AndroidPublisherApprecoveryCreate' with the minimum fields required to make a request.
+newAndroidPublisherApprecoveryCreate ::
+  -- |  Required. Package name of the app on which recovery action is performed. See 'packageName'.
+  Core.Text ->
+  -- |  Multipart request metadata. See 'payload'.
+  CreateDraftAppRecoveryRequest ->
+  AndroidPublisherApprecoveryCreate
+newAndroidPublisherApprecoveryCreate packageName payload =
+  AndroidPublisherApprecoveryCreate
+    { xgafv = Core.Nothing,
+      accessToken = Core.Nothing,
+      callback = Core.Nothing,
+      packageName = packageName,
+      payload = payload,
+      uploadType = Core.Nothing,
+      uploadProtocol = Core.Nothing
+    }
+
+instance Core.GoogleRequest AndroidPublisherApprecoveryCreate where
+  type Rs AndroidPublisherApprecoveryCreate = AppRecoveryAction
+  type
+    Scopes AndroidPublisherApprecoveryCreate =
+      '[Androidpublisher'FullControl]
+  requestClient AndroidPublisherApprecoveryCreate {..} =
+    go
+      packageName
+      xgafv
+      accessToken
+      callback
+      uploadType
+      uploadProtocol
+      (Core.Just Core.AltJSON)
+      payload
+      androidPublisherService
+    where
+      go =
+        Core.buildClient
+          ( Core.Proxy ::
+              Core.Proxy AndroidPublisherApprecoveryCreateResource
+          )
+          Core.mempty
diff --git a/gen/Gogol/AndroidPublisher/Apprecovery/Deploy.hs b/gen/Gogol/AndroidPublisher/Apprecovery/Deploy.hs
new file mode 100644
--- /dev/null
+++ b/gen/Gogol/AndroidPublisher/Apprecovery/Deploy.hs
@@ -0,0 +1,133 @@
+{-# LANGUAGE DataKinds #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE ImportQualifiedPost #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-name-shadowing #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- |
+-- Module      : Gogol.AndroidPublisher.Apprecovery.Deploy
+-- Copyright   : (c) 2015-2025 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay+gogol@gmail.com>
+--               Toni Cebrián <toni@tonicebrian.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Deploy an already created app recovery action with recovery status DRAFT. Note that this action activates the recovery action for all targeted users and changes its status to ACTIVE.
+--
+-- /See:/ <https://developers.google.com/android-publisher Google Play Android Developer API Reference> for @androidpublisher.apprecovery.deploy@.
+module Gogol.AndroidPublisher.Apprecovery.Deploy
+  ( -- * Resource
+    AndroidPublisherApprecoveryDeployResource,
+
+    -- ** Constructing a Request
+    AndroidPublisherApprecoveryDeploy (..),
+    newAndroidPublisherApprecoveryDeploy,
+  )
+where
+
+import Gogol.AndroidPublisher.Types
+import Gogol.Prelude qualified as Core
+
+-- | A resource alias for @androidpublisher.apprecovery.deploy@ method which the
+-- 'AndroidPublisherApprecoveryDeploy' request conforms to.
+type AndroidPublisherApprecoveryDeployResource =
+  "androidpublisher"
+    Core.:> "v3"
+    Core.:> "applications"
+    Core.:> Core.Capture "packageName" Core.Text
+    Core.:> "appRecoveries"
+    Core.:> Core.CaptureMode "appRecoveryId" "deploy" Core.Int64
+    Core.:> Core.QueryParam "$.xgafv" Xgafv
+    Core.:> Core.QueryParam "access_token" Core.Text
+    Core.:> Core.QueryParam "callback" Core.Text
+    Core.:> Core.QueryParam "uploadType" Core.Text
+    Core.:> Core.QueryParam "upload_protocol" Core.Text
+    Core.:> Core.QueryParam "alt" Core.AltJSON
+    Core.:> Core.ReqBody '[Core.JSON] DeployAppRecoveryRequest
+    Core.:> Core.Post '[Core.JSON] DeployAppRecoveryResponse
+
+-- | Deploy an already created app recovery action with recovery status DRAFT. Note that this action activates the recovery action for all targeted users and changes its status to ACTIVE.
+--
+-- /See:/ 'newAndroidPublisherApprecoveryDeploy' smart constructor.
+data AndroidPublisherApprecoveryDeploy = AndroidPublisherApprecoveryDeploy
+  { -- | V1 error format.
+    xgafv :: (Core.Maybe Xgafv),
+    -- | OAuth access token.
+    accessToken :: (Core.Maybe Core.Text),
+    -- | Required. ID corresponding to the app recovery action to deploy.
+    appRecoveryId :: Core.Int64,
+    -- | JSONP
+    callback :: (Core.Maybe Core.Text),
+    -- | Required. Package name of the app for which recovery action is deployed.
+    packageName :: Core.Text,
+    -- | Multipart request metadata.
+    payload :: DeployAppRecoveryRequest,
+    -- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
+    uploadType :: (Core.Maybe Core.Text),
+    -- | Upload protocol for media (e.g. \"raw\", \"multipart\").
+    uploadProtocol :: (Core.Maybe Core.Text)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'AndroidPublisherApprecoveryDeploy' with the minimum fields required to make a request.
+newAndroidPublisherApprecoveryDeploy ::
+  -- |  Required. ID corresponding to the app recovery action to deploy. See 'appRecoveryId'.
+  Core.Int64 ->
+  -- |  Required. Package name of the app for which recovery action is deployed. See 'packageName'.
+  Core.Text ->
+  -- |  Multipart request metadata. See 'payload'.
+  DeployAppRecoveryRequest ->
+  AndroidPublisherApprecoveryDeploy
+newAndroidPublisherApprecoveryDeploy
+  appRecoveryId
+  packageName
+  payload =
+    AndroidPublisherApprecoveryDeploy
+      { xgafv = Core.Nothing,
+        accessToken = Core.Nothing,
+        appRecoveryId = appRecoveryId,
+        callback = Core.Nothing,
+        packageName = packageName,
+        payload = payload,
+        uploadType = Core.Nothing,
+        uploadProtocol = Core.Nothing
+      }
+
+instance Core.GoogleRequest AndroidPublisherApprecoveryDeploy where
+  type
+    Rs AndroidPublisherApprecoveryDeploy =
+      DeployAppRecoveryResponse
+  type
+    Scopes AndroidPublisherApprecoveryDeploy =
+      '[Androidpublisher'FullControl]
+  requestClient AndroidPublisherApprecoveryDeploy {..} =
+    go
+      packageName
+      appRecoveryId
+      xgafv
+      accessToken
+      callback
+      uploadType
+      uploadProtocol
+      (Core.Just Core.AltJSON)
+      payload
+      androidPublisherService
+    where
+      go =
+        Core.buildClient
+          ( Core.Proxy ::
+              Core.Proxy AndroidPublisherApprecoveryDeployResource
+          )
+          Core.mempty
diff --git a/gen/Gogol/AndroidPublisher/Apprecovery/List.hs b/gen/Gogol/AndroidPublisher/Apprecovery/List.hs
new file mode 100644
--- /dev/null
+++ b/gen/Gogol/AndroidPublisher/Apprecovery/List.hs
@@ -0,0 +1,117 @@
+{-# LANGUAGE DataKinds #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE ImportQualifiedPost #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-name-shadowing #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- |
+-- Module      : Gogol.AndroidPublisher.Apprecovery.List
+-- Copyright   : (c) 2015-2025 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay+gogol@gmail.com>
+--               Toni Cebrián <toni@tonicebrian.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- List all app recovery action resources associated with a particular package name and app version.
+--
+-- /See:/ <https://developers.google.com/android-publisher Google Play Android Developer API Reference> for @androidpublisher.apprecovery.list@.
+module Gogol.AndroidPublisher.Apprecovery.List
+  ( -- * Resource
+    AndroidPublisherApprecoveryListResource,
+
+    -- ** Constructing a Request
+    AndroidPublisherApprecoveryList (..),
+    newAndroidPublisherApprecoveryList,
+  )
+where
+
+import Gogol.AndroidPublisher.Types
+import Gogol.Prelude qualified as Core
+
+-- | A resource alias for @androidpublisher.apprecovery.list@ method which the
+-- 'AndroidPublisherApprecoveryList' request conforms to.
+type AndroidPublisherApprecoveryListResource =
+  "androidpublisher"
+    Core.:> "v3"
+    Core.:> "applications"
+    Core.:> Core.Capture "packageName" Core.Text
+    Core.:> "appRecoveries"
+    Core.:> Core.QueryParam "$.xgafv" Xgafv
+    Core.:> Core.QueryParam "access_token" Core.Text
+    Core.:> Core.QueryParam "callback" Core.Text
+    Core.:> Core.QueryParam "uploadType" Core.Text
+    Core.:> Core.QueryParam "upload_protocol" Core.Text
+    Core.:> Core.QueryParam "versionCode" Core.Int64
+    Core.:> Core.QueryParam "alt" Core.AltJSON
+    Core.:> Core.Get '[Core.JSON] ListAppRecoveriesResponse
+
+-- | List all app recovery action resources associated with a particular package name and app version.
+--
+-- /See:/ 'newAndroidPublisherApprecoveryList' smart constructor.
+data AndroidPublisherApprecoveryList = AndroidPublisherApprecoveryList
+  { -- | V1 error format.
+    xgafv :: (Core.Maybe Xgafv),
+    -- | OAuth access token.
+    accessToken :: (Core.Maybe Core.Text),
+    -- | JSONP
+    callback :: (Core.Maybe Core.Text),
+    -- | Required. Package name of the app for which list of recovery actions is requested.
+    packageName :: Core.Text,
+    -- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
+    uploadType :: (Core.Maybe Core.Text),
+    -- | Upload protocol for media (e.g. \"raw\", \"multipart\").
+    uploadProtocol :: (Core.Maybe Core.Text),
+    -- | Required. Version code targeted by the list of recovery actions.
+    versionCode :: (Core.Maybe Core.Int64)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'AndroidPublisherApprecoveryList' with the minimum fields required to make a request.
+newAndroidPublisherApprecoveryList ::
+  -- |  Required. Package name of the app for which list of recovery actions is requested. See 'packageName'.
+  Core.Text ->
+  AndroidPublisherApprecoveryList
+newAndroidPublisherApprecoveryList packageName =
+  AndroidPublisherApprecoveryList
+    { xgafv = Core.Nothing,
+      accessToken = Core.Nothing,
+      callback = Core.Nothing,
+      packageName = packageName,
+      uploadType = Core.Nothing,
+      uploadProtocol = Core.Nothing,
+      versionCode = Core.Nothing
+    }
+
+instance Core.GoogleRequest AndroidPublisherApprecoveryList where
+  type Rs AndroidPublisherApprecoveryList = ListAppRecoveriesResponse
+  type
+    Scopes AndroidPublisherApprecoveryList =
+      '[Androidpublisher'FullControl]
+  requestClient AndroidPublisherApprecoveryList {..} =
+    go
+      packageName
+      xgafv
+      accessToken
+      callback
+      uploadType
+      uploadProtocol
+      versionCode
+      (Core.Just Core.AltJSON)
+      androidPublisherService
+    where
+      go =
+        Core.buildClient
+          (Core.Proxy :: Core.Proxy AndroidPublisherApprecoveryListResource)
+          Core.mempty
diff --git a/gen/Gogol/AndroidPublisher/Edits/Apks/Addexternallyhosted.hs b/gen/Gogol/AndroidPublisher/Edits/Apks/Addexternallyhosted.hs
new file mode 100644
--- /dev/null
+++ b/gen/Gogol/AndroidPublisher/Edits/Apks/Addexternallyhosted.hs
@@ -0,0 +1,139 @@
+{-# LANGUAGE DataKinds #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE ImportQualifiedPost #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-name-shadowing #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- |
+-- Module      : Gogol.AndroidPublisher.Edits.Apks.Addexternallyhosted
+-- Copyright   : (c) 2015-2025 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay+gogol@gmail.com>
+--               Toni Cebrián <toni@tonicebrian.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Creates a new APK without uploading the APK itself to Google Play, instead hosting the APK at a specified URL. This function is only available to organizations using Managed Play whose application is configured to restrict distribution to the organizations.
+--
+-- /See:/ <https://developers.google.com/android-publisher Google Play Android Developer API Reference> for @androidpublisher.edits.apks.addexternallyhosted@.
+module Gogol.AndroidPublisher.Edits.Apks.Addexternallyhosted
+  ( -- * Resource
+    AndroidPublisherEditsApksAddexternallyhostedResource,
+
+    -- ** Constructing a Request
+    AndroidPublisherEditsApksAddexternallyhosted (..),
+    newAndroidPublisherEditsApksAddexternallyhosted,
+  )
+where
+
+import Gogol.AndroidPublisher.Types
+import Gogol.Prelude qualified as Core
+
+-- | A resource alias for @androidpublisher.edits.apks.addexternallyhosted@ method which the
+-- 'AndroidPublisherEditsApksAddexternallyhosted' request conforms to.
+type AndroidPublisherEditsApksAddexternallyhostedResource =
+  "androidpublisher"
+    Core.:> "v3"
+    Core.:> "applications"
+    Core.:> Core.Capture "packageName" Core.Text
+    Core.:> "edits"
+    Core.:> Core.Capture "editId" Core.Text
+    Core.:> "apks"
+    Core.:> "externallyHosted"
+    Core.:> Core.QueryParam "$.xgafv" Xgafv
+    Core.:> Core.QueryParam "access_token" Core.Text
+    Core.:> Core.QueryParam "callback" Core.Text
+    Core.:> Core.QueryParam "uploadType" Core.Text
+    Core.:> Core.QueryParam "upload_protocol" Core.Text
+    Core.:> Core.QueryParam "alt" Core.AltJSON
+    Core.:> Core.ReqBody '[Core.JSON] ApksAddExternallyHostedRequest
+    Core.:> Core.Post '[Core.JSON] ApksAddExternallyHostedResponse
+
+-- | Creates a new APK without uploading the APK itself to Google Play, instead hosting the APK at a specified URL. This function is only available to organizations using Managed Play whose application is configured to restrict distribution to the organizations.
+--
+-- /See:/ 'newAndroidPublisherEditsApksAddexternallyhosted' smart constructor.
+data AndroidPublisherEditsApksAddexternallyhosted = AndroidPublisherEditsApksAddexternallyhosted
+  { -- | V1 error format.
+    xgafv :: (Core.Maybe Xgafv),
+    -- | OAuth access token.
+    accessToken :: (Core.Maybe Core.Text),
+    -- | JSONP
+    callback :: (Core.Maybe Core.Text),
+    -- | Identifier of the edit.
+    editId :: Core.Text,
+    -- | Package name of the app.
+    packageName :: Core.Text,
+    -- | Multipart request metadata.
+    payload :: ApksAddExternallyHostedRequest,
+    -- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
+    uploadType :: (Core.Maybe Core.Text),
+    -- | Upload protocol for media (e.g. \"raw\", \"multipart\").
+    uploadProtocol :: (Core.Maybe Core.Text)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'AndroidPublisherEditsApksAddexternallyhosted' with the minimum fields required to make a request.
+newAndroidPublisherEditsApksAddexternallyhosted ::
+  -- |  Identifier of the edit. See 'editId'.
+  Core.Text ->
+  -- |  Package name of the app. See 'packageName'.
+  Core.Text ->
+  -- |  Multipart request metadata. See 'payload'.
+  ApksAddExternallyHostedRequest ->
+  AndroidPublisherEditsApksAddexternallyhosted
+newAndroidPublisherEditsApksAddexternallyhosted
+  editId
+  packageName
+  payload =
+    AndroidPublisherEditsApksAddexternallyhosted
+      { xgafv =
+          Core.Nothing,
+        accessToken = Core.Nothing,
+        callback = Core.Nothing,
+        editId = editId,
+        packageName = packageName,
+        payload = payload,
+        uploadType = Core.Nothing,
+        uploadProtocol = Core.Nothing
+      }
+
+instance
+  Core.GoogleRequest
+    AndroidPublisherEditsApksAddexternallyhosted
+  where
+  type
+    Rs AndroidPublisherEditsApksAddexternallyhosted =
+      ApksAddExternallyHostedResponse
+  type
+    Scopes AndroidPublisherEditsApksAddexternallyhosted =
+      '[Androidpublisher'FullControl]
+  requestClient AndroidPublisherEditsApksAddexternallyhosted {..} =
+    go
+      packageName
+      editId
+      xgafv
+      accessToken
+      callback
+      uploadType
+      uploadProtocol
+      (Core.Just Core.AltJSON)
+      payload
+      androidPublisherService
+    where
+      go =
+        Core.buildClient
+          ( Core.Proxy ::
+              Core.Proxy AndroidPublisherEditsApksAddexternallyhostedResource
+          )
+          Core.mempty
diff --git a/gen/Gogol/AndroidPublisher/Edits/Apks/List.hs b/gen/Gogol/AndroidPublisher/Edits/Apks/List.hs
new file mode 100644
--- /dev/null
+++ b/gen/Gogol/AndroidPublisher/Edits/Apks/List.hs
@@ -0,0 +1,120 @@
+{-# LANGUAGE DataKinds #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE ImportQualifiedPost #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-name-shadowing #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- |
+-- Module      : Gogol.AndroidPublisher.Edits.Apks.List
+-- Copyright   : (c) 2015-2025 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay+gogol@gmail.com>
+--               Toni Cebrián <toni@tonicebrian.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Lists all current APKs of the app and edit.
+--
+-- /See:/ <https://developers.google.com/android-publisher Google Play Android Developer API Reference> for @androidpublisher.edits.apks.list@.
+module Gogol.AndroidPublisher.Edits.Apks.List
+  ( -- * Resource
+    AndroidPublisherEditsApksListResource,
+
+    -- ** Constructing a Request
+    AndroidPublisherEditsApksList (..),
+    newAndroidPublisherEditsApksList,
+  )
+where
+
+import Gogol.AndroidPublisher.Types
+import Gogol.Prelude qualified as Core
+
+-- | A resource alias for @androidpublisher.edits.apks.list@ method which the
+-- 'AndroidPublisherEditsApksList' request conforms to.
+type AndroidPublisherEditsApksListResource =
+  "androidpublisher"
+    Core.:> "v3"
+    Core.:> "applications"
+    Core.:> Core.Capture "packageName" Core.Text
+    Core.:> "edits"
+    Core.:> Core.Capture "editId" Core.Text
+    Core.:> "apks"
+    Core.:> Core.QueryParam "$.xgafv" Xgafv
+    Core.:> Core.QueryParam "access_token" Core.Text
+    Core.:> Core.QueryParam "callback" Core.Text
+    Core.:> Core.QueryParam "uploadType" Core.Text
+    Core.:> Core.QueryParam "upload_protocol" Core.Text
+    Core.:> Core.QueryParam "alt" Core.AltJSON
+    Core.:> Core.Get '[Core.JSON] ApksListResponse
+
+-- | Lists all current APKs of the app and edit.
+--
+-- /See:/ 'newAndroidPublisherEditsApksList' smart constructor.
+data AndroidPublisherEditsApksList = AndroidPublisherEditsApksList
+  { -- | V1 error format.
+    xgafv :: (Core.Maybe Xgafv),
+    -- | OAuth access token.
+    accessToken :: (Core.Maybe Core.Text),
+    -- | JSONP
+    callback :: (Core.Maybe Core.Text),
+    -- | Identifier of the edit.
+    editId :: Core.Text,
+    -- | Package name of the app.
+    packageName :: Core.Text,
+    -- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
+    uploadType :: (Core.Maybe Core.Text),
+    -- | Upload protocol for media (e.g. \"raw\", \"multipart\").
+    uploadProtocol :: (Core.Maybe Core.Text)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'AndroidPublisherEditsApksList' with the minimum fields required to make a request.
+newAndroidPublisherEditsApksList ::
+  -- |  Identifier of the edit. See 'editId'.
+  Core.Text ->
+  -- |  Package name of the app. See 'packageName'.
+  Core.Text ->
+  AndroidPublisherEditsApksList
+newAndroidPublisherEditsApksList editId packageName =
+  AndroidPublisherEditsApksList
+    { xgafv = Core.Nothing,
+      accessToken = Core.Nothing,
+      callback = Core.Nothing,
+      editId = editId,
+      packageName = packageName,
+      uploadType = Core.Nothing,
+      uploadProtocol = Core.Nothing
+    }
+
+instance Core.GoogleRequest AndroidPublisherEditsApksList where
+  type Rs AndroidPublisherEditsApksList = ApksListResponse
+  type
+    Scopes AndroidPublisherEditsApksList =
+      '[Androidpublisher'FullControl]
+  requestClient AndroidPublisherEditsApksList {..} =
+    go
+      packageName
+      editId
+      xgafv
+      accessToken
+      callback
+      uploadType
+      uploadProtocol
+      (Core.Just Core.AltJSON)
+      androidPublisherService
+    where
+      go =
+        Core.buildClient
+          (Core.Proxy :: Core.Proxy AndroidPublisherEditsApksListResource)
+          Core.mempty
diff --git a/gen/Gogol/AndroidPublisher/Edits/Apks/Upload.hs b/gen/Gogol/AndroidPublisher/Edits/Apks/Upload.hs
new file mode 100644
--- /dev/null
+++ b/gen/Gogol/AndroidPublisher/Edits/Apks/Upload.hs
@@ -0,0 +1,165 @@
+{-# LANGUAGE DataKinds #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE ImportQualifiedPost #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-name-shadowing #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- |
+-- Module      : Gogol.AndroidPublisher.Edits.Apks.Upload
+-- Copyright   : (c) 2015-2025 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay+gogol@gmail.com>
+--               Toni Cebrián <toni@tonicebrian.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Uploads an APK and adds to the current edit.
+--
+-- /See:/ <https://developers.google.com/android-publisher Google Play Android Developer API Reference> for @androidpublisher.edits.apks.upload@.
+module Gogol.AndroidPublisher.Edits.Apks.Upload
+  ( -- * Resource
+    AndroidPublisherEditsApksUploadResource,
+
+    -- ** Constructing a Request
+    AndroidPublisherEditsApksUpload (..),
+    newAndroidPublisherEditsApksUpload,
+  )
+where
+
+import Gogol.AndroidPublisher.Types
+import Gogol.Prelude qualified as Core
+
+-- | A resource alias for @androidpublisher.edits.apks.upload@ method which the
+-- 'AndroidPublisherEditsApksUpload' request conforms to.
+type AndroidPublisherEditsApksUploadResource =
+  "androidpublisher"
+    Core.:> "v3"
+    Core.:> "applications"
+    Core.:> Core.Capture "packageName" Core.Text
+    Core.:> "edits"
+    Core.:> Core.Capture "editId" Core.Text
+    Core.:> "apks"
+    Core.:> Core.QueryParam "$.xgafv" Xgafv
+    Core.:> Core.QueryParam "access_token" Core.Text
+    Core.:> Core.QueryParam "callback" Core.Text
+    Core.:> Core.QueryParam "uploadType" Core.Text
+    Core.:> Core.QueryParam "upload_protocol" Core.Text
+    Core.:> Core.QueryParam "alt" Core.AltJSON
+    Core.:> Core.Post '[Core.JSON] Apk
+    Core.:<|> "upload"
+    Core.:> "androidpublisher"
+    Core.:> "v3"
+    Core.:> "applications"
+    Core.:> Core.Capture "packageName" Core.Text
+    Core.:> "edits"
+    Core.:> Core.Capture "editId" Core.Text
+    Core.:> "apks"
+    Core.:> Core.QueryParam "$.xgafv" Xgafv
+    Core.:> Core.QueryParam "access_token" Core.Text
+    Core.:> Core.QueryParam "callback" Core.Text
+    Core.:> Core.QueryParam "uploadType" Core.Text
+    Core.:> Core.QueryParam "upload_protocol" Core.Text
+    Core.:> Core.QueryParam "alt" Core.AltJSON
+    Core.:> Core.QueryParam "uploadType" Core.AltMedia
+    Core.:> Core.AltMedia
+    Core.:> Core.Post '[Core.JSON] Apk
+
+-- | Uploads an APK and adds to the current edit.
+--
+-- /See:/ 'newAndroidPublisherEditsApksUpload' smart constructor.
+data AndroidPublisherEditsApksUpload = AndroidPublisherEditsApksUpload
+  { -- | V1 error format.
+    xgafv :: (Core.Maybe Xgafv),
+    -- | OAuth access token.
+    accessToken :: (Core.Maybe Core.Text),
+    -- | JSONP
+    callback :: (Core.Maybe Core.Text),
+    -- | Identifier of the edit.
+    editId :: Core.Text,
+    -- | Package name of the app.
+    packageName :: Core.Text,
+    -- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
+    uploadType :: (Core.Maybe Core.Text),
+    -- | Upload protocol for media (e.g. \"raw\", \"multipart\").
+    uploadProtocol :: (Core.Maybe Core.Text)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'AndroidPublisherEditsApksUpload' with the minimum fields required to make a request.
+newAndroidPublisherEditsApksUpload ::
+  -- |  Identifier of the edit. See 'editId'.
+  Core.Text ->
+  -- |  Package name of the app. See 'packageName'.
+  Core.Text ->
+  AndroidPublisherEditsApksUpload
+newAndroidPublisherEditsApksUpload editId packageName =
+  AndroidPublisherEditsApksUpload
+    { xgafv = Core.Nothing,
+      accessToken = Core.Nothing,
+      callback = Core.Nothing,
+      editId = editId,
+      packageName = packageName,
+      uploadType = Core.Nothing,
+      uploadProtocol = Core.Nothing
+    }
+
+instance Core.GoogleRequest AndroidPublisherEditsApksUpload where
+  type Rs AndroidPublisherEditsApksUpload = Apk
+  type
+    Scopes AndroidPublisherEditsApksUpload =
+      '[Androidpublisher'FullControl]
+  requestClient AndroidPublisherEditsApksUpload {..} =
+    go
+      packageName
+      editId
+      xgafv
+      accessToken
+      callback
+      uploadType
+      uploadProtocol
+      (Core.Just Core.AltJSON)
+      androidPublisherService
+    where
+      go Core.:<|> _ =
+        Core.buildClient
+          (Core.Proxy :: Core.Proxy AndroidPublisherEditsApksUploadResource)
+          Core.mempty
+
+instance
+  Core.GoogleRequest
+    (Core.MediaUpload AndroidPublisherEditsApksUpload)
+  where
+  type Rs (Core.MediaUpload AndroidPublisherEditsApksUpload) = Apk
+  type
+    Scopes (Core.MediaUpload AndroidPublisherEditsApksUpload) =
+      Core.Scopes AndroidPublisherEditsApksUpload
+  requestClient
+    (Core.MediaUpload AndroidPublisherEditsApksUpload {..} body) =
+      go
+        packageName
+        editId
+        xgafv
+        accessToken
+        callback
+        uploadType
+        uploadProtocol
+        (Core.Just Core.AltJSON)
+        (Core.Just Core.AltMedia)
+        body
+        androidPublisherService
+      where
+        _ Core.:<|> go =
+          Core.buildClient
+            (Core.Proxy :: Core.Proxy AndroidPublisherEditsApksUploadResource)
+            Core.mempty
diff --git a/gen/Gogol/AndroidPublisher/Edits/Bundles/List.hs b/gen/Gogol/AndroidPublisher/Edits/Bundles/List.hs
new file mode 100644
--- /dev/null
+++ b/gen/Gogol/AndroidPublisher/Edits/Bundles/List.hs
@@ -0,0 +1,120 @@
+{-# LANGUAGE DataKinds #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE ImportQualifiedPost #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-name-shadowing #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- |
+-- Module      : Gogol.AndroidPublisher.Edits.Bundles.List
+-- Copyright   : (c) 2015-2025 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay+gogol@gmail.com>
+--               Toni Cebrián <toni@tonicebrian.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Lists all current Android App Bundles of the app and edit.
+--
+-- /See:/ <https://developers.google.com/android-publisher Google Play Android Developer API Reference> for @androidpublisher.edits.bundles.list@.
+module Gogol.AndroidPublisher.Edits.Bundles.List
+  ( -- * Resource
+    AndroidPublisherEditsBundlesListResource,
+
+    -- ** Constructing a Request
+    AndroidPublisherEditsBundlesList (..),
+    newAndroidPublisherEditsBundlesList,
+  )
+where
+
+import Gogol.AndroidPublisher.Types
+import Gogol.Prelude qualified as Core
+
+-- | A resource alias for @androidpublisher.edits.bundles.list@ method which the
+-- 'AndroidPublisherEditsBundlesList' request conforms to.
+type AndroidPublisherEditsBundlesListResource =
+  "androidpublisher"
+    Core.:> "v3"
+    Core.:> "applications"
+    Core.:> Core.Capture "packageName" Core.Text
+    Core.:> "edits"
+    Core.:> Core.Capture "editId" Core.Text
+    Core.:> "bundles"
+    Core.:> Core.QueryParam "$.xgafv" Xgafv
+    Core.:> Core.QueryParam "access_token" Core.Text
+    Core.:> Core.QueryParam "callback" Core.Text
+    Core.:> Core.QueryParam "uploadType" Core.Text
+    Core.:> Core.QueryParam "upload_protocol" Core.Text
+    Core.:> Core.QueryParam "alt" Core.AltJSON
+    Core.:> Core.Get '[Core.JSON] BundlesListResponse
+
+-- | Lists all current Android App Bundles of the app and edit.
+--
+-- /See:/ 'newAndroidPublisherEditsBundlesList' smart constructor.
+data AndroidPublisherEditsBundlesList = AndroidPublisherEditsBundlesList
+  { -- | V1 error format.
+    xgafv :: (Core.Maybe Xgafv),
+    -- | OAuth access token.
+    accessToken :: (Core.Maybe Core.Text),
+    -- | JSONP
+    callback :: (Core.Maybe Core.Text),
+    -- | Identifier of the edit.
+    editId :: Core.Text,
+    -- | Package name of the app.
+    packageName :: Core.Text,
+    -- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
+    uploadType :: (Core.Maybe Core.Text),
+    -- | Upload protocol for media (e.g. \"raw\", \"multipart\").
+    uploadProtocol :: (Core.Maybe Core.Text)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'AndroidPublisherEditsBundlesList' with the minimum fields required to make a request.
+newAndroidPublisherEditsBundlesList ::
+  -- |  Identifier of the edit. See 'editId'.
+  Core.Text ->
+  -- |  Package name of the app. See 'packageName'.
+  Core.Text ->
+  AndroidPublisherEditsBundlesList
+newAndroidPublisherEditsBundlesList editId packageName =
+  AndroidPublisherEditsBundlesList
+    { xgafv = Core.Nothing,
+      accessToken = Core.Nothing,
+      callback = Core.Nothing,
+      editId = editId,
+      packageName = packageName,
+      uploadType = Core.Nothing,
+      uploadProtocol = Core.Nothing
+    }
+
+instance Core.GoogleRequest AndroidPublisherEditsBundlesList where
+  type Rs AndroidPublisherEditsBundlesList = BundlesListResponse
+  type
+    Scopes AndroidPublisherEditsBundlesList =
+      '[Androidpublisher'FullControl]
+  requestClient AndroidPublisherEditsBundlesList {..} =
+    go
+      packageName
+      editId
+      xgafv
+      accessToken
+      callback
+      uploadType
+      uploadProtocol
+      (Core.Just Core.AltJSON)
+      androidPublisherService
+    where
+      go =
+        Core.buildClient
+          (Core.Proxy :: Core.Proxy AndroidPublisherEditsBundlesListResource)
+          Core.mempty
diff --git a/gen/Gogol/AndroidPublisher/Edits/Bundles/Upload.hs b/gen/Gogol/AndroidPublisher/Edits/Bundles/Upload.hs
new file mode 100644
--- /dev/null
+++ b/gen/Gogol/AndroidPublisher/Edits/Bundles/Upload.hs
@@ -0,0 +1,185 @@
+{-# LANGUAGE DataKinds #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE ImportQualifiedPost #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-name-shadowing #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- |
+-- Module      : Gogol.AndroidPublisher.Edits.Bundles.Upload
+-- Copyright   : (c) 2015-2025 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay+gogol@gmail.com>
+--               Toni Cebrián <toni@tonicebrian.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 Timeouts and Errors> for an example in java.
+--
+-- /See:/ <https://developers.google.com/android-publisher Google Play Android Developer API Reference> for @androidpublisher.edits.bundles.upload@.
+module Gogol.AndroidPublisher.Edits.Bundles.Upload
+  ( -- * Resource
+    AndroidPublisherEditsBundlesUploadResource,
+
+    -- ** Constructing a Request
+    AndroidPublisherEditsBundlesUpload (..),
+    newAndroidPublisherEditsBundlesUpload,
+  )
+where
+
+import Gogol.AndroidPublisher.Types
+import Gogol.Prelude qualified as Core
+
+-- | A resource alias for @androidpublisher.edits.bundles.upload@ method which the
+-- 'AndroidPublisherEditsBundlesUpload' request conforms to.
+type AndroidPublisherEditsBundlesUploadResource =
+  "androidpublisher"
+    Core.:> "v3"
+    Core.:> "applications"
+    Core.:> Core.Capture "packageName" Core.Text
+    Core.:> "edits"
+    Core.:> Core.Capture "editId" Core.Text
+    Core.:> "bundles"
+    Core.:> Core.QueryParam "$.xgafv" Xgafv
+    Core.:> Core.QueryParam "access_token" Core.Text
+    Core.:> Core.QueryParam "ackBundleInstallationWarning" Core.Bool
+    Core.:> Core.QueryParam "callback" Core.Text
+    Core.:> Core.QueryParam "deviceTierConfigId" Core.Text
+    Core.:> Core.QueryParam "uploadType" Core.Text
+    Core.:> Core.QueryParam "upload_protocol" Core.Text
+    Core.:> Core.QueryParam "alt" Core.AltJSON
+    Core.:> Core.Post '[Core.JSON] Bundle
+    Core.:<|> "upload"
+    Core.:> "androidpublisher"
+    Core.:> "v3"
+    Core.:> "applications"
+    Core.:> Core.Capture "packageName" Core.Text
+    Core.:> "edits"
+    Core.:> Core.Capture "editId" Core.Text
+    Core.:> "bundles"
+    Core.:> Core.QueryParam "$.xgafv" Xgafv
+    Core.:> Core.QueryParam "access_token" Core.Text
+    Core.:> Core.QueryParam "ackBundleInstallationWarning" Core.Bool
+    Core.:> Core.QueryParam "callback" Core.Text
+    Core.:> Core.QueryParam "deviceTierConfigId" Core.Text
+    Core.:> Core.QueryParam "uploadType" Core.Text
+    Core.:> Core.QueryParam "upload_protocol" Core.Text
+    Core.:> Core.QueryParam "alt" Core.AltJSON
+    Core.:> Core.QueryParam "uploadType" Core.AltMedia
+    Core.:> Core.AltMedia
+    Core.:> Core.Post '[Core.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 Timeouts and Errors> for an example in java.
+--
+-- /See:/ 'newAndroidPublisherEditsBundlesUpload' smart constructor.
+data AndroidPublisherEditsBundlesUpload = AndroidPublisherEditsBundlesUpload
+  { -- | V1 error format.
+    xgafv :: (Core.Maybe Xgafv),
+    -- | OAuth access token.
+    accessToken :: (Core.Maybe Core.Text),
+    -- | Deprecated. The installation warning has been removed, it\'s not necessary to set this field anymore.
+    ackBundleInstallationWarning :: (Core.Maybe Core.Bool),
+    -- | JSONP
+    callback :: (Core.Maybe Core.Text),
+    -- | Device tier config (DTC) to be used for generating deliverables (APKs). Contains id of the DTC or \"LATEST\" for last uploaded DTC.
+    deviceTierConfigId :: (Core.Maybe Core.Text),
+    -- | Identifier of the edit.
+    editId :: Core.Text,
+    -- | Package name of the app.
+    packageName :: Core.Text,
+    -- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
+    uploadType :: (Core.Maybe Core.Text),
+    -- | Upload protocol for media (e.g. \"raw\", \"multipart\").
+    uploadProtocol :: (Core.Maybe Core.Text)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'AndroidPublisherEditsBundlesUpload' with the minimum fields required to make a request.
+newAndroidPublisherEditsBundlesUpload ::
+  -- |  Identifier of the edit. See 'editId'.
+  Core.Text ->
+  -- |  Package name of the app. See 'packageName'.
+  Core.Text ->
+  AndroidPublisherEditsBundlesUpload
+newAndroidPublisherEditsBundlesUpload editId packageName =
+  AndroidPublisherEditsBundlesUpload
+    { xgafv = Core.Nothing,
+      accessToken = Core.Nothing,
+      ackBundleInstallationWarning = Core.Nothing,
+      callback = Core.Nothing,
+      deviceTierConfigId = Core.Nothing,
+      editId = editId,
+      packageName = packageName,
+      uploadType = Core.Nothing,
+      uploadProtocol = Core.Nothing
+    }
+
+instance Core.GoogleRequest AndroidPublisherEditsBundlesUpload where
+  type Rs AndroidPublisherEditsBundlesUpload = Bundle
+  type
+    Scopes AndroidPublisherEditsBundlesUpload =
+      '[Androidpublisher'FullControl]
+  requestClient AndroidPublisherEditsBundlesUpload {..} =
+    go
+      packageName
+      editId
+      xgafv
+      accessToken
+      ackBundleInstallationWarning
+      callback
+      deviceTierConfigId
+      uploadType
+      uploadProtocol
+      (Core.Just Core.AltJSON)
+      androidPublisherService
+    where
+      go Core.:<|> _ =
+        Core.buildClient
+          ( Core.Proxy ::
+              Core.Proxy AndroidPublisherEditsBundlesUploadResource
+          )
+          Core.mempty
+
+instance
+  Core.GoogleRequest
+    (Core.MediaUpload AndroidPublisherEditsBundlesUpload)
+  where
+  type
+    Rs (Core.MediaUpload AndroidPublisherEditsBundlesUpload) =
+      Bundle
+  type
+    Scopes (Core.MediaUpload AndroidPublisherEditsBundlesUpload) =
+      Core.Scopes AndroidPublisherEditsBundlesUpload
+  requestClient
+    (Core.MediaUpload AndroidPublisherEditsBundlesUpload {..} body) =
+      go
+        packageName
+        editId
+        xgafv
+        accessToken
+        ackBundleInstallationWarning
+        callback
+        deviceTierConfigId
+        uploadType
+        uploadProtocol
+        (Core.Just Core.AltJSON)
+        (Core.Just Core.AltMedia)
+        body
+        androidPublisherService
+      where
+        _ Core.:<|> go =
+          Core.buildClient
+            ( Core.Proxy ::
+                Core.Proxy AndroidPublisherEditsBundlesUploadResource
+            )
+            Core.mempty
diff --git a/gen/Gogol/AndroidPublisher/Edits/Commit.hs b/gen/Gogol/AndroidPublisher/Edits/Commit.hs
new file mode 100644
--- /dev/null
+++ b/gen/Gogol/AndroidPublisher/Edits/Commit.hs
@@ -0,0 +1,124 @@
+{-# LANGUAGE DataKinds #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE ImportQualifiedPost #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-name-shadowing #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- |
+-- Module      : Gogol.AndroidPublisher.Edits.Commit
+-- Copyright   : (c) 2015-2025 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay+gogol@gmail.com>
+--               Toni Cebrián <toni@tonicebrian.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Commits an app edit.
+--
+-- /See:/ <https://developers.google.com/android-publisher Google Play Android Developer API Reference> for @androidpublisher.edits.commit@.
+module Gogol.AndroidPublisher.Edits.Commit
+  ( -- * Resource
+    AndroidPublisherEditsCommitResource,
+
+    -- ** Constructing a Request
+    AndroidPublisherEditsCommit (..),
+    newAndroidPublisherEditsCommit,
+  )
+where
+
+import Gogol.AndroidPublisher.Types
+import Gogol.Prelude qualified as Core
+
+-- | A resource alias for @androidpublisher.edits.commit@ method which the
+-- 'AndroidPublisherEditsCommit' request conforms to.
+type AndroidPublisherEditsCommitResource =
+  "androidpublisher"
+    Core.:> "v3"
+    Core.:> "applications"
+    Core.:> Core.Capture "packageName" Core.Text
+    Core.:> "edits"
+    Core.:> Core.CaptureMode "editId" "commit" Core.Text
+    Core.:> Core.QueryParam "$.xgafv" Xgafv
+    Core.:> Core.QueryParam "access_token" Core.Text
+    Core.:> Core.QueryParam "callback" Core.Text
+    Core.:> Core.QueryParam "changesNotSentForReview" Core.Bool
+    Core.:> Core.QueryParam "uploadType" Core.Text
+    Core.:> Core.QueryParam "upload_protocol" Core.Text
+    Core.:> Core.QueryParam "alt" Core.AltJSON
+    Core.:> Core.Post '[Core.JSON] AppEdit
+
+-- | Commits an app edit.
+--
+-- /See:/ 'newAndroidPublisherEditsCommit' smart constructor.
+data AndroidPublisherEditsCommit = AndroidPublisherEditsCommit
+  { -- | V1 error format.
+    xgafv :: (Core.Maybe Xgafv),
+    -- | OAuth access token.
+    accessToken :: (Core.Maybe Core.Text),
+    -- | JSONP
+    callback :: (Core.Maybe Core.Text),
+    -- | Indicates that the changes in this edit will not be reviewed until they are explicitly sent for review from the Google Play Console UI. These changes will be added to any other changes that are not yet sent for review.
+    changesNotSentForReview :: (Core.Maybe Core.Bool),
+    -- | Identifier of the edit.
+    editId :: Core.Text,
+    -- | Package name of the app.
+    packageName :: Core.Text,
+    -- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
+    uploadType :: (Core.Maybe Core.Text),
+    -- | Upload protocol for media (e.g. \"raw\", \"multipart\").
+    uploadProtocol :: (Core.Maybe Core.Text)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'AndroidPublisherEditsCommit' with the minimum fields required to make a request.
+newAndroidPublisherEditsCommit ::
+  -- |  Identifier of the edit. See 'editId'.
+  Core.Text ->
+  -- |  Package name of the app. See 'packageName'.
+  Core.Text ->
+  AndroidPublisherEditsCommit
+newAndroidPublisherEditsCommit editId packageName =
+  AndroidPublisherEditsCommit
+    { xgafv = Core.Nothing,
+      accessToken = Core.Nothing,
+      callback = Core.Nothing,
+      changesNotSentForReview = Core.Nothing,
+      editId = editId,
+      packageName = packageName,
+      uploadType = Core.Nothing,
+      uploadProtocol = Core.Nothing
+    }
+
+instance Core.GoogleRequest AndroidPublisherEditsCommit where
+  type Rs AndroidPublisherEditsCommit = AppEdit
+  type
+    Scopes AndroidPublisherEditsCommit =
+      '[Androidpublisher'FullControl]
+  requestClient AndroidPublisherEditsCommit {..} =
+    go
+      packageName
+      editId
+      xgafv
+      accessToken
+      callback
+      changesNotSentForReview
+      uploadType
+      uploadProtocol
+      (Core.Just Core.AltJSON)
+      androidPublisherService
+    where
+      go =
+        Core.buildClient
+          (Core.Proxy :: Core.Proxy AndroidPublisherEditsCommitResource)
+          Core.mempty
diff --git a/gen/Gogol/AndroidPublisher/Edits/Countryavailability/Get.hs b/gen/Gogol/AndroidPublisher/Edits/Countryavailability/Get.hs
new file mode 100644
--- /dev/null
+++ b/gen/Gogol/AndroidPublisher/Edits/Countryavailability/Get.hs
@@ -0,0 +1,137 @@
+{-# LANGUAGE DataKinds #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE ImportQualifiedPost #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-name-shadowing #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- |
+-- Module      : Gogol.AndroidPublisher.Edits.Countryavailability.Get
+-- Copyright   : (c) 2015-2025 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay+gogol@gmail.com>
+--               Toni Cebrián <toni@tonicebrian.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Gets country availability.
+--
+-- /See:/ <https://developers.google.com/android-publisher Google Play Android Developer API Reference> for @androidpublisher.edits.countryavailability.get@.
+module Gogol.AndroidPublisher.Edits.Countryavailability.Get
+  ( -- * Resource
+    AndroidPublisherEditsCountryavailabilityGetResource,
+
+    -- ** Constructing a Request
+    AndroidPublisherEditsCountryavailabilityGet (..),
+    newAndroidPublisherEditsCountryavailabilityGet,
+  )
+where
+
+import Gogol.AndroidPublisher.Types
+import Gogol.Prelude qualified as Core
+
+-- | A resource alias for @androidpublisher.edits.countryavailability.get@ method which the
+-- 'AndroidPublisherEditsCountryavailabilityGet' request conforms to.
+type AndroidPublisherEditsCountryavailabilityGetResource =
+  "androidpublisher"
+    Core.:> "v3"
+    Core.:> "applications"
+    Core.:> Core.Capture "packageName" Core.Text
+    Core.:> "edits"
+    Core.:> Core.Capture "editId" Core.Text
+    Core.:> "countryAvailability"
+    Core.:> Core.Capture "track" Core.Text
+    Core.:> Core.QueryParam "$.xgafv" Xgafv
+    Core.:> Core.QueryParam "access_token" Core.Text
+    Core.:> Core.QueryParam "callback" Core.Text
+    Core.:> Core.QueryParam "uploadType" Core.Text
+    Core.:> Core.QueryParam "upload_protocol" Core.Text
+    Core.:> Core.QueryParam "alt" Core.AltJSON
+    Core.:> Core.Get '[Core.JSON] TrackCountryAvailability
+
+-- | Gets country availability.
+--
+-- /See:/ 'newAndroidPublisherEditsCountryavailabilityGet' smart constructor.
+data AndroidPublisherEditsCountryavailabilityGet = AndroidPublisherEditsCountryavailabilityGet
+  { -- | V1 error format.
+    xgafv :: (Core.Maybe Xgafv),
+    -- | OAuth access token.
+    accessToken :: (Core.Maybe Core.Text),
+    -- | JSONP
+    callback :: (Core.Maybe Core.Text),
+    -- | Identifier of the edit.
+    editId :: Core.Text,
+    -- | Package name of the app.
+    packageName :: Core.Text,
+    -- | The track to read from.
+    track :: Core.Text,
+    -- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
+    uploadType :: (Core.Maybe Core.Text),
+    -- | Upload protocol for media (e.g. \"raw\", \"multipart\").
+    uploadProtocol :: (Core.Maybe Core.Text)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'AndroidPublisherEditsCountryavailabilityGet' with the minimum fields required to make a request.
+newAndroidPublisherEditsCountryavailabilityGet ::
+  -- |  Identifier of the edit. See 'editId'.
+  Core.Text ->
+  -- |  Package name of the app. See 'packageName'.
+  Core.Text ->
+  -- |  The track to read from. See 'track'.
+  Core.Text ->
+  AndroidPublisherEditsCountryavailabilityGet
+newAndroidPublisherEditsCountryavailabilityGet
+  editId
+  packageName
+  track =
+    AndroidPublisherEditsCountryavailabilityGet
+      { xgafv = Core.Nothing,
+        accessToken = Core.Nothing,
+        callback = Core.Nothing,
+        editId = editId,
+        packageName = packageName,
+        track = track,
+        uploadType = Core.Nothing,
+        uploadProtocol = Core.Nothing
+      }
+
+instance
+  Core.GoogleRequest
+    AndroidPublisherEditsCountryavailabilityGet
+  where
+  type
+    Rs AndroidPublisherEditsCountryavailabilityGet =
+      TrackCountryAvailability
+  type
+    Scopes AndroidPublisherEditsCountryavailabilityGet =
+      '[Androidpublisher'FullControl]
+  requestClient AndroidPublisherEditsCountryavailabilityGet {..} =
+    go
+      packageName
+      editId
+      track
+      xgafv
+      accessToken
+      callback
+      uploadType
+      uploadProtocol
+      (Core.Just Core.AltJSON)
+      androidPublisherService
+    where
+      go =
+        Core.buildClient
+          ( Core.Proxy ::
+              Core.Proxy AndroidPublisherEditsCountryavailabilityGetResource
+          )
+          Core.mempty
diff --git a/gen/Gogol/AndroidPublisher/Edits/Delete.hs b/gen/Gogol/AndroidPublisher/Edits/Delete.hs
new file mode 100644
--- /dev/null
+++ b/gen/Gogol/AndroidPublisher/Edits/Delete.hs
@@ -0,0 +1,119 @@
+{-# LANGUAGE DataKinds #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE ImportQualifiedPost #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-name-shadowing #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- |
+-- Module      : Gogol.AndroidPublisher.Edits.Delete
+-- Copyright   : (c) 2015-2025 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay+gogol@gmail.com>
+--               Toni Cebrián <toni@tonicebrian.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Deletes an app edit.
+--
+-- /See:/ <https://developers.google.com/android-publisher Google Play Android Developer API Reference> for @androidpublisher.edits.delete@.
+module Gogol.AndroidPublisher.Edits.Delete
+  ( -- * Resource
+    AndroidPublisherEditsDeleteResource,
+
+    -- ** Constructing a Request
+    AndroidPublisherEditsDelete (..),
+    newAndroidPublisherEditsDelete,
+  )
+where
+
+import Gogol.AndroidPublisher.Types
+import Gogol.Prelude qualified as Core
+
+-- | A resource alias for @androidpublisher.edits.delete@ method which the
+-- 'AndroidPublisherEditsDelete' request conforms to.
+type AndroidPublisherEditsDeleteResource =
+  "androidpublisher"
+    Core.:> "v3"
+    Core.:> "applications"
+    Core.:> Core.Capture "packageName" Core.Text
+    Core.:> "edits"
+    Core.:> Core.Capture "editId" Core.Text
+    Core.:> Core.QueryParam "$.xgafv" Xgafv
+    Core.:> Core.QueryParam "access_token" Core.Text
+    Core.:> Core.QueryParam "callback" Core.Text
+    Core.:> Core.QueryParam "uploadType" Core.Text
+    Core.:> Core.QueryParam "upload_protocol" Core.Text
+    Core.:> Core.QueryParam "alt" Core.AltJSON
+    Core.:> Core.Delete '[Core.JSON] ()
+
+-- | Deletes an app edit.
+--
+-- /See:/ 'newAndroidPublisherEditsDelete' smart constructor.
+data AndroidPublisherEditsDelete = AndroidPublisherEditsDelete
+  { -- | V1 error format.
+    xgafv :: (Core.Maybe Xgafv),
+    -- | OAuth access token.
+    accessToken :: (Core.Maybe Core.Text),
+    -- | JSONP
+    callback :: (Core.Maybe Core.Text),
+    -- | Identifier of the edit.
+    editId :: Core.Text,
+    -- | Package name of the app.
+    packageName :: Core.Text,
+    -- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
+    uploadType :: (Core.Maybe Core.Text),
+    -- | Upload protocol for media (e.g. \"raw\", \"multipart\").
+    uploadProtocol :: (Core.Maybe Core.Text)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'AndroidPublisherEditsDelete' with the minimum fields required to make a request.
+newAndroidPublisherEditsDelete ::
+  -- |  Identifier of the edit. See 'editId'.
+  Core.Text ->
+  -- |  Package name of the app. See 'packageName'.
+  Core.Text ->
+  AndroidPublisherEditsDelete
+newAndroidPublisherEditsDelete editId packageName =
+  AndroidPublisherEditsDelete
+    { xgafv = Core.Nothing,
+      accessToken = Core.Nothing,
+      callback = Core.Nothing,
+      editId = editId,
+      packageName = packageName,
+      uploadType = Core.Nothing,
+      uploadProtocol = Core.Nothing
+    }
+
+instance Core.GoogleRequest AndroidPublisherEditsDelete where
+  type Rs AndroidPublisherEditsDelete = ()
+  type
+    Scopes AndroidPublisherEditsDelete =
+      '[Androidpublisher'FullControl]
+  requestClient AndroidPublisherEditsDelete {..} =
+    go
+      packageName
+      editId
+      xgafv
+      accessToken
+      callback
+      uploadType
+      uploadProtocol
+      (Core.Just Core.AltJSON)
+      androidPublisherService
+    where
+      go =
+        Core.buildClient
+          (Core.Proxy :: Core.Proxy AndroidPublisherEditsDeleteResource)
+          Core.mempty
diff --git a/gen/Gogol/AndroidPublisher/Edits/Deobfuscationfiles/Upload.hs b/gen/Gogol/AndroidPublisher/Edits/Deobfuscationfiles/Upload.hs
new file mode 100644
--- /dev/null
+++ b/gen/Gogol/AndroidPublisher/Edits/Deobfuscationfiles/Upload.hs
@@ -0,0 +1,210 @@
+{-# LANGUAGE DataKinds #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE ImportQualifiedPost #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-name-shadowing #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- |
+-- Module      : Gogol.AndroidPublisher.Edits.Deobfuscationfiles.Upload
+-- Copyright   : (c) 2015-2025 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay+gogol@gmail.com>
+--               Toni Cebrián <toni@tonicebrian.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Uploads a new deobfuscation file and attaches to the specified APK.
+--
+-- /See:/ <https://developers.google.com/android-publisher Google Play Android Developer API Reference> for @androidpublisher.edits.deobfuscationfiles.upload@.
+module Gogol.AndroidPublisher.Edits.Deobfuscationfiles.Upload
+  ( -- * Resource
+    AndroidPublisherEditsDeobfuscationfilesUploadResource,
+
+    -- ** Constructing a Request
+    AndroidPublisherEditsDeobfuscationfilesUpload (..),
+    newAndroidPublisherEditsDeobfuscationfilesUpload,
+  )
+where
+
+import Gogol.AndroidPublisher.Types
+import Gogol.Prelude qualified as Core
+
+-- | A resource alias for @androidpublisher.edits.deobfuscationfiles.upload@ method which the
+-- 'AndroidPublisherEditsDeobfuscationfilesUpload' request conforms to.
+type AndroidPublisherEditsDeobfuscationfilesUploadResource =
+  "androidpublisher"
+    Core.:> "v3"
+    Core.:> "applications"
+    Core.:> Core.Capture "packageName" Core.Text
+    Core.:> "edits"
+    Core.:> Core.Capture "editId" Core.Text
+    Core.:> "apks"
+    Core.:> Core.Capture "apkVersionCode" Core.Int32
+    Core.:> "deobfuscationFiles"
+    Core.:> Core.Capture
+              "deobfuscationFileType"
+              EditsDeobfuscationfilesUploadDeobfuscationFileType
+    Core.:> Core.QueryParam "$.xgafv" Xgafv
+    Core.:> Core.QueryParam "access_token" Core.Text
+    Core.:> Core.QueryParam "callback" Core.Text
+    Core.:> Core.QueryParam "uploadType" Core.Text
+    Core.:> Core.QueryParam "upload_protocol" Core.Text
+    Core.:> Core.QueryParam "alt" Core.AltJSON
+    Core.:> Core.Post '[Core.JSON] DeobfuscationFilesUploadResponse
+    Core.:<|> "upload"
+    Core.:> "androidpublisher"
+    Core.:> "v3"
+    Core.:> "applications"
+    Core.:> Core.Capture "packageName" Core.Text
+    Core.:> "edits"
+    Core.:> Core.Capture "editId" Core.Text
+    Core.:> "apks"
+    Core.:> Core.Capture "apkVersionCode" Core.Int32
+    Core.:> "deobfuscationFiles"
+    Core.:> Core.Capture
+              "deobfuscationFileType"
+              EditsDeobfuscationfilesUploadDeobfuscationFileType
+    Core.:> Core.QueryParam "$.xgafv" Xgafv
+    Core.:> Core.QueryParam "access_token" Core.Text
+    Core.:> Core.QueryParam "callback" Core.Text
+    Core.:> Core.QueryParam "uploadType" Core.Text
+    Core.:> Core.QueryParam "upload_protocol" Core.Text
+    Core.:> Core.QueryParam "alt" Core.AltJSON
+    Core.:> Core.QueryParam "uploadType" Core.AltMedia
+    Core.:> Core.AltMedia
+    Core.:> Core.Post '[Core.JSON] DeobfuscationFilesUploadResponse
+
+-- | Uploads a new deobfuscation file and attaches to the specified APK.
+--
+-- /See:/ 'newAndroidPublisherEditsDeobfuscationfilesUpload' smart constructor.
+data AndroidPublisherEditsDeobfuscationfilesUpload = AndroidPublisherEditsDeobfuscationfilesUpload
+  { -- | V1 error format.
+    xgafv :: (Core.Maybe Xgafv),
+    -- | OAuth access token.
+    accessToken :: (Core.Maybe Core.Text),
+    -- | The version code of the APK whose Deobfuscation File is being uploaded.
+    apkVersionCode :: Core.Int32,
+    -- | JSONP
+    callback :: (Core.Maybe Core.Text),
+    -- | The type of the deobfuscation file.
+    deobfuscationFileType :: EditsDeobfuscationfilesUploadDeobfuscationFileType,
+    -- | Unique identifier for this edit.
+    editId :: Core.Text,
+    -- | Unique identifier for the Android app.
+    packageName :: Core.Text,
+    -- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
+    uploadType :: (Core.Maybe Core.Text),
+    -- | Upload protocol for media (e.g. \"raw\", \"multipart\").
+    uploadProtocol :: (Core.Maybe Core.Text)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'AndroidPublisherEditsDeobfuscationfilesUpload' with the minimum fields required to make a request.
+newAndroidPublisherEditsDeobfuscationfilesUpload ::
+  -- |  The version code of the APK whose Deobfuscation File is being uploaded. See 'apkVersionCode'.
+  Core.Int32 ->
+  -- |  The type of the deobfuscation file. See 'deobfuscationFileType'.
+  EditsDeobfuscationfilesUploadDeobfuscationFileType ->
+  -- |  Unique identifier for this edit. See 'editId'.
+  Core.Text ->
+  -- |  Unique identifier for the Android app. See 'packageName'.
+  Core.Text ->
+  AndroidPublisherEditsDeobfuscationfilesUpload
+newAndroidPublisherEditsDeobfuscationfilesUpload
+  apkVersionCode
+  deobfuscationFileType
+  editId
+  packageName =
+    AndroidPublisherEditsDeobfuscationfilesUpload
+      { xgafv =
+          Core.Nothing,
+        accessToken = Core.Nothing,
+        apkVersionCode = apkVersionCode,
+        callback = Core.Nothing,
+        deobfuscationFileType = deobfuscationFileType,
+        editId = editId,
+        packageName = packageName,
+        uploadType = Core.Nothing,
+        uploadProtocol = Core.Nothing
+      }
+
+instance
+  Core.GoogleRequest
+    AndroidPublisherEditsDeobfuscationfilesUpload
+  where
+  type
+    Rs AndroidPublisherEditsDeobfuscationfilesUpload =
+      DeobfuscationFilesUploadResponse
+  type
+    Scopes AndroidPublisherEditsDeobfuscationfilesUpload =
+      '[Androidpublisher'FullControl]
+  requestClient AndroidPublisherEditsDeobfuscationfilesUpload {..} =
+    go
+      packageName
+      editId
+      apkVersionCode
+      deobfuscationFileType
+      xgafv
+      accessToken
+      callback
+      uploadType
+      uploadProtocol
+      (Core.Just Core.AltJSON)
+      androidPublisherService
+    where
+      go Core.:<|> _ =
+        Core.buildClient
+          ( Core.Proxy ::
+              Core.Proxy AndroidPublisherEditsDeobfuscationfilesUploadResource
+          )
+          Core.mempty
+
+instance
+  Core.GoogleRequest
+    (Core.MediaUpload AndroidPublisherEditsDeobfuscationfilesUpload)
+  where
+  type
+    Rs
+      (Core.MediaUpload AndroidPublisherEditsDeobfuscationfilesUpload) =
+      DeobfuscationFilesUploadResponse
+  type
+    Scopes
+      (Core.MediaUpload AndroidPublisherEditsDeobfuscationfilesUpload) =
+      Core.Scopes AndroidPublisherEditsDeobfuscationfilesUpload
+  requestClient
+    ( Core.MediaUpload
+        AndroidPublisherEditsDeobfuscationfilesUpload {..}
+        body
+      ) =
+      go
+        packageName
+        editId
+        apkVersionCode
+        deobfuscationFileType
+        xgafv
+        accessToken
+        callback
+        uploadType
+        uploadProtocol
+        (Core.Just Core.AltJSON)
+        (Core.Just Core.AltMedia)
+        body
+        androidPublisherService
+      where
+        _ Core.:<|> go =
+          Core.buildClient
+            ( Core.Proxy ::
+                Core.Proxy AndroidPublisherEditsDeobfuscationfilesUploadResource
+            )
+            Core.mempty
diff --git a/gen/Gogol/AndroidPublisher/Edits/Details/Get.hs b/gen/Gogol/AndroidPublisher/Edits/Details/Get.hs
new file mode 100644
--- /dev/null
+++ b/gen/Gogol/AndroidPublisher/Edits/Details/Get.hs
@@ -0,0 +1,120 @@
+{-# LANGUAGE DataKinds #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE ImportQualifiedPost #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-name-shadowing #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- |
+-- Module      : Gogol.AndroidPublisher.Edits.Details.Get
+-- Copyright   : (c) 2015-2025 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay+gogol@gmail.com>
+--               Toni Cebrián <toni@tonicebrian.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Gets details of an app.
+--
+-- /See:/ <https://developers.google.com/android-publisher Google Play Android Developer API Reference> for @androidpublisher.edits.details.get@.
+module Gogol.AndroidPublisher.Edits.Details.Get
+  ( -- * Resource
+    AndroidPublisherEditsDetailsGetResource,
+
+    -- ** Constructing a Request
+    AndroidPublisherEditsDetailsGet (..),
+    newAndroidPublisherEditsDetailsGet,
+  )
+where
+
+import Gogol.AndroidPublisher.Types
+import Gogol.Prelude qualified as Core
+
+-- | A resource alias for @androidpublisher.edits.details.get@ method which the
+-- 'AndroidPublisherEditsDetailsGet' request conforms to.
+type AndroidPublisherEditsDetailsGetResource =
+  "androidpublisher"
+    Core.:> "v3"
+    Core.:> "applications"
+    Core.:> Core.Capture "packageName" Core.Text
+    Core.:> "edits"
+    Core.:> Core.Capture "editId" Core.Text
+    Core.:> "details"
+    Core.:> Core.QueryParam "$.xgafv" Xgafv
+    Core.:> Core.QueryParam "access_token" Core.Text
+    Core.:> Core.QueryParam "callback" Core.Text
+    Core.:> Core.QueryParam "uploadType" Core.Text
+    Core.:> Core.QueryParam "upload_protocol" Core.Text
+    Core.:> Core.QueryParam "alt" Core.AltJSON
+    Core.:> Core.Get '[Core.JSON] AppDetails
+
+-- | Gets details of an app.
+--
+-- /See:/ 'newAndroidPublisherEditsDetailsGet' smart constructor.
+data AndroidPublisherEditsDetailsGet = AndroidPublisherEditsDetailsGet
+  { -- | V1 error format.
+    xgafv :: (Core.Maybe Xgafv),
+    -- | OAuth access token.
+    accessToken :: (Core.Maybe Core.Text),
+    -- | JSONP
+    callback :: (Core.Maybe Core.Text),
+    -- | Identifier of the edit.
+    editId :: Core.Text,
+    -- | Package name of the app.
+    packageName :: Core.Text,
+    -- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
+    uploadType :: (Core.Maybe Core.Text),
+    -- | Upload protocol for media (e.g. \"raw\", \"multipart\").
+    uploadProtocol :: (Core.Maybe Core.Text)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'AndroidPublisherEditsDetailsGet' with the minimum fields required to make a request.
+newAndroidPublisherEditsDetailsGet ::
+  -- |  Identifier of the edit. See 'editId'.
+  Core.Text ->
+  -- |  Package name of the app. See 'packageName'.
+  Core.Text ->
+  AndroidPublisherEditsDetailsGet
+newAndroidPublisherEditsDetailsGet editId packageName =
+  AndroidPublisherEditsDetailsGet
+    { xgafv = Core.Nothing,
+      accessToken = Core.Nothing,
+      callback = Core.Nothing,
+      editId = editId,
+      packageName = packageName,
+      uploadType = Core.Nothing,
+      uploadProtocol = Core.Nothing
+    }
+
+instance Core.GoogleRequest AndroidPublisherEditsDetailsGet where
+  type Rs AndroidPublisherEditsDetailsGet = AppDetails
+  type
+    Scopes AndroidPublisherEditsDetailsGet =
+      '[Androidpublisher'FullControl]
+  requestClient AndroidPublisherEditsDetailsGet {..} =
+    go
+      packageName
+      editId
+      xgafv
+      accessToken
+      callback
+      uploadType
+      uploadProtocol
+      (Core.Just Core.AltJSON)
+      androidPublisherService
+    where
+      go =
+        Core.buildClient
+          (Core.Proxy :: Core.Proxy AndroidPublisherEditsDetailsGetResource)
+          Core.mempty
diff --git a/gen/Gogol/AndroidPublisher/Edits/Details/Patch.hs b/gen/Gogol/AndroidPublisher/Edits/Details/Patch.hs
new file mode 100644
--- /dev/null
+++ b/gen/Gogol/AndroidPublisher/Edits/Details/Patch.hs
@@ -0,0 +1,129 @@
+{-# LANGUAGE DataKinds #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE ImportQualifiedPost #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-name-shadowing #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- |
+-- Module      : Gogol.AndroidPublisher.Edits.Details.Patch
+-- Copyright   : (c) 2015-2025 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay+gogol@gmail.com>
+--               Toni Cebrián <toni@tonicebrian.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Patches details of an app.
+--
+-- /See:/ <https://developers.google.com/android-publisher Google Play Android Developer API Reference> for @androidpublisher.edits.details.patch@.
+module Gogol.AndroidPublisher.Edits.Details.Patch
+  ( -- * Resource
+    AndroidPublisherEditsDetailsPatchResource,
+
+    -- ** Constructing a Request
+    AndroidPublisherEditsDetailsPatch (..),
+    newAndroidPublisherEditsDetailsPatch,
+  )
+where
+
+import Gogol.AndroidPublisher.Types
+import Gogol.Prelude qualified as Core
+
+-- | A resource alias for @androidpublisher.edits.details.patch@ method which the
+-- 'AndroidPublisherEditsDetailsPatch' request conforms to.
+type AndroidPublisherEditsDetailsPatchResource =
+  "androidpublisher"
+    Core.:> "v3"
+    Core.:> "applications"
+    Core.:> Core.Capture "packageName" Core.Text
+    Core.:> "edits"
+    Core.:> Core.Capture "editId" Core.Text
+    Core.:> "details"
+    Core.:> Core.QueryParam "$.xgafv" Xgafv
+    Core.:> Core.QueryParam "access_token" Core.Text
+    Core.:> Core.QueryParam "callback" Core.Text
+    Core.:> Core.QueryParam "uploadType" Core.Text
+    Core.:> Core.QueryParam "upload_protocol" Core.Text
+    Core.:> Core.QueryParam "alt" Core.AltJSON
+    Core.:> Core.ReqBody '[Core.JSON] AppDetails
+    Core.:> Core.Patch '[Core.JSON] AppDetails
+
+-- | Patches details of an app.
+--
+-- /See:/ 'newAndroidPublisherEditsDetailsPatch' smart constructor.
+data AndroidPublisherEditsDetailsPatch = AndroidPublisherEditsDetailsPatch
+  { -- | V1 error format.
+    xgafv :: (Core.Maybe Xgafv),
+    -- | OAuth access token.
+    accessToken :: (Core.Maybe Core.Text),
+    -- | JSONP
+    callback :: (Core.Maybe Core.Text),
+    -- | Identifier of the edit.
+    editId :: Core.Text,
+    -- | Package name of the app.
+    packageName :: Core.Text,
+    -- | Multipart request metadata.
+    payload :: AppDetails,
+    -- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
+    uploadType :: (Core.Maybe Core.Text),
+    -- | Upload protocol for media (e.g. \"raw\", \"multipart\").
+    uploadProtocol :: (Core.Maybe Core.Text)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'AndroidPublisherEditsDetailsPatch' with the minimum fields required to make a request.
+newAndroidPublisherEditsDetailsPatch ::
+  -- |  Identifier of the edit. See 'editId'.
+  Core.Text ->
+  -- |  Package name of the app. See 'packageName'.
+  Core.Text ->
+  -- |  Multipart request metadata. See 'payload'.
+  AppDetails ->
+  AndroidPublisherEditsDetailsPatch
+newAndroidPublisherEditsDetailsPatch editId packageName payload =
+  AndroidPublisherEditsDetailsPatch
+    { xgafv = Core.Nothing,
+      accessToken = Core.Nothing,
+      callback = Core.Nothing,
+      editId = editId,
+      packageName = packageName,
+      payload = payload,
+      uploadType = Core.Nothing,
+      uploadProtocol = Core.Nothing
+    }
+
+instance Core.GoogleRequest AndroidPublisherEditsDetailsPatch where
+  type Rs AndroidPublisherEditsDetailsPatch = AppDetails
+  type
+    Scopes AndroidPublisherEditsDetailsPatch =
+      '[Androidpublisher'FullControl]
+  requestClient AndroidPublisherEditsDetailsPatch {..} =
+    go
+      packageName
+      editId
+      xgafv
+      accessToken
+      callback
+      uploadType
+      uploadProtocol
+      (Core.Just Core.AltJSON)
+      payload
+      androidPublisherService
+    where
+      go =
+        Core.buildClient
+          ( Core.Proxy ::
+              Core.Proxy AndroidPublisherEditsDetailsPatchResource
+          )
+          Core.mempty
diff --git a/gen/Gogol/AndroidPublisher/Edits/Details/Update.hs b/gen/Gogol/AndroidPublisher/Edits/Details/Update.hs
new file mode 100644
--- /dev/null
+++ b/gen/Gogol/AndroidPublisher/Edits/Details/Update.hs
@@ -0,0 +1,129 @@
+{-# LANGUAGE DataKinds #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE ImportQualifiedPost #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-name-shadowing #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- |
+-- Module      : Gogol.AndroidPublisher.Edits.Details.Update
+-- Copyright   : (c) 2015-2025 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay+gogol@gmail.com>
+--               Toni Cebrián <toni@tonicebrian.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Updates details of an app.
+--
+-- /See:/ <https://developers.google.com/android-publisher Google Play Android Developer API Reference> for @androidpublisher.edits.details.update@.
+module Gogol.AndroidPublisher.Edits.Details.Update
+  ( -- * Resource
+    AndroidPublisherEditsDetailsUpdateResource,
+
+    -- ** Constructing a Request
+    AndroidPublisherEditsDetailsUpdate (..),
+    newAndroidPublisherEditsDetailsUpdate,
+  )
+where
+
+import Gogol.AndroidPublisher.Types
+import Gogol.Prelude qualified as Core
+
+-- | A resource alias for @androidpublisher.edits.details.update@ method which the
+-- 'AndroidPublisherEditsDetailsUpdate' request conforms to.
+type AndroidPublisherEditsDetailsUpdateResource =
+  "androidpublisher"
+    Core.:> "v3"
+    Core.:> "applications"
+    Core.:> Core.Capture "packageName" Core.Text
+    Core.:> "edits"
+    Core.:> Core.Capture "editId" Core.Text
+    Core.:> "details"
+    Core.:> Core.QueryParam "$.xgafv" Xgafv
+    Core.:> Core.QueryParam "access_token" Core.Text
+    Core.:> Core.QueryParam "callback" Core.Text
+    Core.:> Core.QueryParam "uploadType" Core.Text
+    Core.:> Core.QueryParam "upload_protocol" Core.Text
+    Core.:> Core.QueryParam "alt" Core.AltJSON
+    Core.:> Core.ReqBody '[Core.JSON] AppDetails
+    Core.:> Core.Put '[Core.JSON] AppDetails
+
+-- | Updates details of an app.
+--
+-- /See:/ 'newAndroidPublisherEditsDetailsUpdate' smart constructor.
+data AndroidPublisherEditsDetailsUpdate = AndroidPublisherEditsDetailsUpdate
+  { -- | V1 error format.
+    xgafv :: (Core.Maybe Xgafv),
+    -- | OAuth access token.
+    accessToken :: (Core.Maybe Core.Text),
+    -- | JSONP
+    callback :: (Core.Maybe Core.Text),
+    -- | Identifier of the edit.
+    editId :: Core.Text,
+    -- | Package name of the app.
+    packageName :: Core.Text,
+    -- | Multipart request metadata.
+    payload :: AppDetails,
+    -- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
+    uploadType :: (Core.Maybe Core.Text),
+    -- | Upload protocol for media (e.g. \"raw\", \"multipart\").
+    uploadProtocol :: (Core.Maybe Core.Text)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'AndroidPublisherEditsDetailsUpdate' with the minimum fields required to make a request.
+newAndroidPublisherEditsDetailsUpdate ::
+  -- |  Identifier of the edit. See 'editId'.
+  Core.Text ->
+  -- |  Package name of the app. See 'packageName'.
+  Core.Text ->
+  -- |  Multipart request metadata. See 'payload'.
+  AppDetails ->
+  AndroidPublisherEditsDetailsUpdate
+newAndroidPublisherEditsDetailsUpdate editId packageName payload =
+  AndroidPublisherEditsDetailsUpdate
+    { xgafv = Core.Nothing,
+      accessToken = Core.Nothing,
+      callback = Core.Nothing,
+      editId = editId,
+      packageName = packageName,
+      payload = payload,
+      uploadType = Core.Nothing,
+      uploadProtocol = Core.Nothing
+    }
+
+instance Core.GoogleRequest AndroidPublisherEditsDetailsUpdate where
+  type Rs AndroidPublisherEditsDetailsUpdate = AppDetails
+  type
+    Scopes AndroidPublisherEditsDetailsUpdate =
+      '[Androidpublisher'FullControl]
+  requestClient AndroidPublisherEditsDetailsUpdate {..} =
+    go
+      packageName
+      editId
+      xgafv
+      accessToken
+      callback
+      uploadType
+      uploadProtocol
+      (Core.Just Core.AltJSON)
+      payload
+      androidPublisherService
+    where
+      go =
+        Core.buildClient
+          ( Core.Proxy ::
+              Core.Proxy AndroidPublisherEditsDetailsUpdateResource
+          )
+          Core.mempty
diff --git a/gen/Gogol/AndroidPublisher/Edits/Expansionfiles/Get.hs b/gen/Gogol/AndroidPublisher/Edits/Expansionfiles/Get.hs
new file mode 100644
--- /dev/null
+++ b/gen/Gogol/AndroidPublisher/Edits/Expansionfiles/Get.hs
@@ -0,0 +1,143 @@
+{-# LANGUAGE DataKinds #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE ImportQualifiedPost #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-name-shadowing #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- |
+-- Module      : Gogol.AndroidPublisher.Edits.Expansionfiles.Get
+-- Copyright   : (c) 2015-2025 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay+gogol@gmail.com>
+--               Toni Cebrián <toni@tonicebrian.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Fetches the expansion file configuration for the specified APK.
+--
+-- /See:/ <https://developers.google.com/android-publisher Google Play Android Developer API Reference> for @androidpublisher.edits.expansionfiles.get@.
+module Gogol.AndroidPublisher.Edits.Expansionfiles.Get
+  ( -- * Resource
+    AndroidPublisherEditsExpansionfilesGetResource,
+
+    -- ** Constructing a Request
+    AndroidPublisherEditsExpansionfilesGet (..),
+    newAndroidPublisherEditsExpansionfilesGet,
+  )
+where
+
+import Gogol.AndroidPublisher.Types
+import Gogol.Prelude qualified as Core
+
+-- | A resource alias for @androidpublisher.edits.expansionfiles.get@ method which the
+-- 'AndroidPublisherEditsExpansionfilesGet' request conforms to.
+type AndroidPublisherEditsExpansionfilesGetResource =
+  "androidpublisher"
+    Core.:> "v3"
+    Core.:> "applications"
+    Core.:> Core.Capture "packageName" Core.Text
+    Core.:> "edits"
+    Core.:> Core.Capture "editId" Core.Text
+    Core.:> "apks"
+    Core.:> Core.Capture "apkVersionCode" Core.Int32
+    Core.:> "expansionFiles"
+    Core.:> Core.Capture
+              "expansionFileType"
+              EditsExpansionfilesGetExpansionFileType
+    Core.:> Core.QueryParam "$.xgafv" Xgafv
+    Core.:> Core.QueryParam "access_token" Core.Text
+    Core.:> Core.QueryParam "callback" Core.Text
+    Core.:> Core.QueryParam "uploadType" Core.Text
+    Core.:> Core.QueryParam "upload_protocol" Core.Text
+    Core.:> Core.QueryParam "alt" Core.AltJSON
+    Core.:> Core.Get '[Core.JSON] ExpansionFile
+
+-- | Fetches the expansion file configuration for the specified APK.
+--
+-- /See:/ 'newAndroidPublisherEditsExpansionfilesGet' smart constructor.
+data AndroidPublisherEditsExpansionfilesGet = AndroidPublisherEditsExpansionfilesGet
+  { -- | V1 error format.
+    xgafv :: (Core.Maybe Xgafv),
+    -- | OAuth access token.
+    accessToken :: (Core.Maybe Core.Text),
+    -- | The version code of the APK whose expansion file configuration is being read or modified.
+    apkVersionCode :: Core.Int32,
+    -- | JSONP
+    callback :: (Core.Maybe Core.Text),
+    -- | Identifier of the edit.
+    editId :: Core.Text,
+    -- | The file type of the file configuration which is being read or modified.
+    expansionFileType :: EditsExpansionfilesGetExpansionFileType,
+    -- | Package name of the app.
+    packageName :: Core.Text,
+    -- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
+    uploadType :: (Core.Maybe Core.Text),
+    -- | Upload protocol for media (e.g. \"raw\", \"multipart\").
+    uploadProtocol :: (Core.Maybe Core.Text)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'AndroidPublisherEditsExpansionfilesGet' with the minimum fields required to make a request.
+newAndroidPublisherEditsExpansionfilesGet ::
+  -- |  The version code of the APK whose expansion file configuration is being read or modified. See 'apkVersionCode'.
+  Core.Int32 ->
+  -- |  Identifier of the edit. See 'editId'.
+  Core.Text ->
+  -- |  The file type of the file configuration which is being read or modified. See 'expansionFileType'.
+  EditsExpansionfilesGetExpansionFileType ->
+  -- |  Package name of the app. See 'packageName'.
+  Core.Text ->
+  AndroidPublisherEditsExpansionfilesGet
+newAndroidPublisherEditsExpansionfilesGet
+  apkVersionCode
+  editId
+  expansionFileType
+  packageName =
+    AndroidPublisherEditsExpansionfilesGet
+      { xgafv = Core.Nothing,
+        accessToken = Core.Nothing,
+        apkVersionCode = apkVersionCode,
+        callback = Core.Nothing,
+        editId = editId,
+        expansionFileType = expansionFileType,
+        packageName = packageName,
+        uploadType = Core.Nothing,
+        uploadProtocol = Core.Nothing
+      }
+
+instance Core.GoogleRequest AndroidPublisherEditsExpansionfilesGet where
+  type Rs AndroidPublisherEditsExpansionfilesGet = ExpansionFile
+  type
+    Scopes AndroidPublisherEditsExpansionfilesGet =
+      '[Androidpublisher'FullControl]
+  requestClient AndroidPublisherEditsExpansionfilesGet {..} =
+    go
+      packageName
+      editId
+      apkVersionCode
+      expansionFileType
+      xgafv
+      accessToken
+      callback
+      uploadType
+      uploadProtocol
+      (Core.Just Core.AltJSON)
+      androidPublisherService
+    where
+      go =
+        Core.buildClient
+          ( Core.Proxy ::
+              Core.Proxy AndroidPublisherEditsExpansionfilesGetResource
+          )
+          Core.mempty
diff --git a/gen/Gogol/AndroidPublisher/Edits/Expansionfiles/Patch.hs b/gen/Gogol/AndroidPublisher/Edits/Expansionfiles/Patch.hs
new file mode 100644
--- /dev/null
+++ b/gen/Gogol/AndroidPublisher/Edits/Expansionfiles/Patch.hs
@@ -0,0 +1,154 @@
+{-# LANGUAGE DataKinds #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE ImportQualifiedPost #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-name-shadowing #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- |
+-- Module      : Gogol.AndroidPublisher.Edits.Expansionfiles.Patch
+-- Copyright   : (c) 2015-2025 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay+gogol@gmail.com>
+--               Toni Cebrián <toni@tonicebrian.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Patches the APK\'s expansion file configuration to reference another APK\'s expansion file. To add a new expansion file use the Upload method.
+--
+-- /See:/ <https://developers.google.com/android-publisher Google Play Android Developer API Reference> for @androidpublisher.edits.expansionfiles.patch@.
+module Gogol.AndroidPublisher.Edits.Expansionfiles.Patch
+  ( -- * Resource
+    AndroidPublisherEditsExpansionfilesPatchResource,
+
+    -- ** Constructing a Request
+    AndroidPublisherEditsExpansionfilesPatch (..),
+    newAndroidPublisherEditsExpansionfilesPatch,
+  )
+where
+
+import Gogol.AndroidPublisher.Types
+import Gogol.Prelude qualified as Core
+
+-- | A resource alias for @androidpublisher.edits.expansionfiles.patch@ method which the
+-- 'AndroidPublisherEditsExpansionfilesPatch' request conforms to.
+type AndroidPublisherEditsExpansionfilesPatchResource =
+  "androidpublisher"
+    Core.:> "v3"
+    Core.:> "applications"
+    Core.:> Core.Capture "packageName" Core.Text
+    Core.:> "edits"
+    Core.:> Core.Capture "editId" Core.Text
+    Core.:> "apks"
+    Core.:> Core.Capture "apkVersionCode" Core.Int32
+    Core.:> "expansionFiles"
+    Core.:> Core.Capture
+              "expansionFileType"
+              EditsExpansionfilesPatchExpansionFileType
+    Core.:> Core.QueryParam "$.xgafv" Xgafv
+    Core.:> Core.QueryParam "access_token" Core.Text
+    Core.:> Core.QueryParam "callback" Core.Text
+    Core.:> Core.QueryParam "uploadType" Core.Text
+    Core.:> Core.QueryParam "upload_protocol" Core.Text
+    Core.:> Core.QueryParam "alt" Core.AltJSON
+    Core.:> Core.ReqBody '[Core.JSON] ExpansionFile
+    Core.:> Core.Patch '[Core.JSON] ExpansionFile
+
+-- | Patches the APK\'s expansion file configuration to reference another APK\'s expansion file. To add a new expansion file use the Upload method.
+--
+-- /See:/ 'newAndroidPublisherEditsExpansionfilesPatch' smart constructor.
+data AndroidPublisherEditsExpansionfilesPatch = AndroidPublisherEditsExpansionfilesPatch
+  { -- | V1 error format.
+    xgafv :: (Core.Maybe Xgafv),
+    -- | OAuth access token.
+    accessToken :: (Core.Maybe Core.Text),
+    -- | The version code of the APK whose expansion file configuration is being read or modified.
+    apkVersionCode :: Core.Int32,
+    -- | JSONP
+    callback :: (Core.Maybe Core.Text),
+    -- | Identifier of the edit.
+    editId :: Core.Text,
+    -- | The file type of the expansion file configuration which is being updated.
+    expansionFileType :: EditsExpansionfilesPatchExpansionFileType,
+    -- | Package name of the app.
+    packageName :: Core.Text,
+    -- | Multipart request metadata.
+    payload :: ExpansionFile,
+    -- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
+    uploadType :: (Core.Maybe Core.Text),
+    -- | Upload protocol for media (e.g. \"raw\", \"multipart\").
+    uploadProtocol :: (Core.Maybe Core.Text)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'AndroidPublisherEditsExpansionfilesPatch' with the minimum fields required to make a request.
+newAndroidPublisherEditsExpansionfilesPatch ::
+  -- |  The version code of the APK whose expansion file configuration is being read or modified. See 'apkVersionCode'.
+  Core.Int32 ->
+  -- |  Identifier of the edit. See 'editId'.
+  Core.Text ->
+  -- |  The file type of the expansion file configuration which is being updated. See 'expansionFileType'.
+  EditsExpansionfilesPatchExpansionFileType ->
+  -- |  Package name of the app. See 'packageName'.
+  Core.Text ->
+  -- |  Multipart request metadata. See 'payload'.
+  ExpansionFile ->
+  AndroidPublisherEditsExpansionfilesPatch
+newAndroidPublisherEditsExpansionfilesPatch
+  apkVersionCode
+  editId
+  expansionFileType
+  packageName
+  payload =
+    AndroidPublisherEditsExpansionfilesPatch
+      { xgafv = Core.Nothing,
+        accessToken = Core.Nothing,
+        apkVersionCode = apkVersionCode,
+        callback = Core.Nothing,
+        editId = editId,
+        expansionFileType = expansionFileType,
+        packageName = packageName,
+        payload = payload,
+        uploadType = Core.Nothing,
+        uploadProtocol = Core.Nothing
+      }
+
+instance
+  Core.GoogleRequest
+    AndroidPublisherEditsExpansionfilesPatch
+  where
+  type Rs AndroidPublisherEditsExpansionfilesPatch = ExpansionFile
+  type
+    Scopes AndroidPublisherEditsExpansionfilesPatch =
+      '[Androidpublisher'FullControl]
+  requestClient AndroidPublisherEditsExpansionfilesPatch {..} =
+    go
+      packageName
+      editId
+      apkVersionCode
+      expansionFileType
+      xgafv
+      accessToken
+      callback
+      uploadType
+      uploadProtocol
+      (Core.Just Core.AltJSON)
+      payload
+      androidPublisherService
+    where
+      go =
+        Core.buildClient
+          ( Core.Proxy ::
+              Core.Proxy AndroidPublisherEditsExpansionfilesPatchResource
+          )
+          Core.mempty
diff --git a/gen/Gogol/AndroidPublisher/Edits/Expansionfiles/Update.hs b/gen/Gogol/AndroidPublisher/Edits/Expansionfiles/Update.hs
new file mode 100644
--- /dev/null
+++ b/gen/Gogol/AndroidPublisher/Edits/Expansionfiles/Update.hs
@@ -0,0 +1,154 @@
+{-# LANGUAGE DataKinds #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE ImportQualifiedPost #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-name-shadowing #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- |
+-- Module      : Gogol.AndroidPublisher.Edits.Expansionfiles.Update
+-- Copyright   : (c) 2015-2025 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay+gogol@gmail.com>
+--               Toni Cebrián <toni@tonicebrian.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Updates the APK\'s expansion file configuration to reference another APK\'s expansion file. To add a new expansion file use the Upload method.
+--
+-- /See:/ <https://developers.google.com/android-publisher Google Play Android Developer API Reference> for @androidpublisher.edits.expansionfiles.update@.
+module Gogol.AndroidPublisher.Edits.Expansionfiles.Update
+  ( -- * Resource
+    AndroidPublisherEditsExpansionfilesUpdateResource,
+
+    -- ** Constructing a Request
+    AndroidPublisherEditsExpansionfilesUpdate (..),
+    newAndroidPublisherEditsExpansionfilesUpdate,
+  )
+where
+
+import Gogol.AndroidPublisher.Types
+import Gogol.Prelude qualified as Core
+
+-- | A resource alias for @androidpublisher.edits.expansionfiles.update@ method which the
+-- 'AndroidPublisherEditsExpansionfilesUpdate' request conforms to.
+type AndroidPublisherEditsExpansionfilesUpdateResource =
+  "androidpublisher"
+    Core.:> "v3"
+    Core.:> "applications"
+    Core.:> Core.Capture "packageName" Core.Text
+    Core.:> "edits"
+    Core.:> Core.Capture "editId" Core.Text
+    Core.:> "apks"
+    Core.:> Core.Capture "apkVersionCode" Core.Int32
+    Core.:> "expansionFiles"
+    Core.:> Core.Capture
+              "expansionFileType"
+              EditsExpansionfilesUpdateExpansionFileType
+    Core.:> Core.QueryParam "$.xgafv" Xgafv
+    Core.:> Core.QueryParam "access_token" Core.Text
+    Core.:> Core.QueryParam "callback" Core.Text
+    Core.:> Core.QueryParam "uploadType" Core.Text
+    Core.:> Core.QueryParam "upload_protocol" Core.Text
+    Core.:> Core.QueryParam "alt" Core.AltJSON
+    Core.:> Core.ReqBody '[Core.JSON] ExpansionFile
+    Core.:> Core.Put '[Core.JSON] ExpansionFile
+
+-- | Updates the APK\'s expansion file configuration to reference another APK\'s expansion file. To add a new expansion file use the Upload method.
+--
+-- /See:/ 'newAndroidPublisherEditsExpansionfilesUpdate' smart constructor.
+data AndroidPublisherEditsExpansionfilesUpdate = AndroidPublisherEditsExpansionfilesUpdate
+  { -- | V1 error format.
+    xgafv :: (Core.Maybe Xgafv),
+    -- | OAuth access token.
+    accessToken :: (Core.Maybe Core.Text),
+    -- | The version code of the APK whose expansion file configuration is being read or modified.
+    apkVersionCode :: Core.Int32,
+    -- | JSONP
+    callback :: (Core.Maybe Core.Text),
+    -- | Identifier of the edit.
+    editId :: Core.Text,
+    -- | The file type of the file configuration which is being read or modified.
+    expansionFileType :: EditsExpansionfilesUpdateExpansionFileType,
+    -- | Package name of the app.
+    packageName :: Core.Text,
+    -- | Multipart request metadata.
+    payload :: ExpansionFile,
+    -- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
+    uploadType :: (Core.Maybe Core.Text),
+    -- | Upload protocol for media (e.g. \"raw\", \"multipart\").
+    uploadProtocol :: (Core.Maybe Core.Text)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'AndroidPublisherEditsExpansionfilesUpdate' with the minimum fields required to make a request.
+newAndroidPublisherEditsExpansionfilesUpdate ::
+  -- |  The version code of the APK whose expansion file configuration is being read or modified. See 'apkVersionCode'.
+  Core.Int32 ->
+  -- |  Identifier of the edit. See 'editId'.
+  Core.Text ->
+  -- |  The file type of the file configuration which is being read or modified. See 'expansionFileType'.
+  EditsExpansionfilesUpdateExpansionFileType ->
+  -- |  Package name of the app. See 'packageName'.
+  Core.Text ->
+  -- |  Multipart request metadata. See 'payload'.
+  ExpansionFile ->
+  AndroidPublisherEditsExpansionfilesUpdate
+newAndroidPublisherEditsExpansionfilesUpdate
+  apkVersionCode
+  editId
+  expansionFileType
+  packageName
+  payload =
+    AndroidPublisherEditsExpansionfilesUpdate
+      { xgafv = Core.Nothing,
+        accessToken = Core.Nothing,
+        apkVersionCode = apkVersionCode,
+        callback = Core.Nothing,
+        editId = editId,
+        expansionFileType = expansionFileType,
+        packageName = packageName,
+        payload = payload,
+        uploadType = Core.Nothing,
+        uploadProtocol = Core.Nothing
+      }
+
+instance
+  Core.GoogleRequest
+    AndroidPublisherEditsExpansionfilesUpdate
+  where
+  type Rs AndroidPublisherEditsExpansionfilesUpdate = ExpansionFile
+  type
+    Scopes AndroidPublisherEditsExpansionfilesUpdate =
+      '[Androidpublisher'FullControl]
+  requestClient AndroidPublisherEditsExpansionfilesUpdate {..} =
+    go
+      packageName
+      editId
+      apkVersionCode
+      expansionFileType
+      xgafv
+      accessToken
+      callback
+      uploadType
+      uploadProtocol
+      (Core.Just Core.AltJSON)
+      payload
+      androidPublisherService
+    where
+      go =
+        Core.buildClient
+          ( Core.Proxy ::
+              Core.Proxy AndroidPublisherEditsExpansionfilesUpdateResource
+          )
+          Core.mempty
diff --git a/gen/Gogol/AndroidPublisher/Edits/Expansionfiles/Upload.hs b/gen/Gogol/AndroidPublisher/Edits/Expansionfiles/Upload.hs
new file mode 100644
--- /dev/null
+++ b/gen/Gogol/AndroidPublisher/Edits/Expansionfiles/Upload.hs
@@ -0,0 +1,209 @@
+{-# LANGUAGE DataKinds #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE ImportQualifiedPost #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-name-shadowing #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- |
+-- Module      : Gogol.AndroidPublisher.Edits.Expansionfiles.Upload
+-- Copyright   : (c) 2015-2025 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay+gogol@gmail.com>
+--               Toni Cebrián <toni@tonicebrian.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Uploads a new expansion file and attaches to the specified APK.
+--
+-- /See:/ <https://developers.google.com/android-publisher Google Play Android Developer API Reference> for @androidpublisher.edits.expansionfiles.upload@.
+module Gogol.AndroidPublisher.Edits.Expansionfiles.Upload
+  ( -- * Resource
+    AndroidPublisherEditsExpansionfilesUploadResource,
+
+    -- ** Constructing a Request
+    AndroidPublisherEditsExpansionfilesUpload (..),
+    newAndroidPublisherEditsExpansionfilesUpload,
+  )
+where
+
+import Gogol.AndroidPublisher.Types
+import Gogol.Prelude qualified as Core
+
+-- | A resource alias for @androidpublisher.edits.expansionfiles.upload@ method which the
+-- 'AndroidPublisherEditsExpansionfilesUpload' request conforms to.
+type AndroidPublisherEditsExpansionfilesUploadResource =
+  "androidpublisher"
+    Core.:> "v3"
+    Core.:> "applications"
+    Core.:> Core.Capture "packageName" Core.Text
+    Core.:> "edits"
+    Core.:> Core.Capture "editId" Core.Text
+    Core.:> "apks"
+    Core.:> Core.Capture "apkVersionCode" Core.Int32
+    Core.:> "expansionFiles"
+    Core.:> Core.Capture
+              "expansionFileType"
+              EditsExpansionfilesUploadExpansionFileType
+    Core.:> Core.QueryParam "$.xgafv" Xgafv
+    Core.:> Core.QueryParam "access_token" Core.Text
+    Core.:> Core.QueryParam "callback" Core.Text
+    Core.:> Core.QueryParam "uploadType" Core.Text
+    Core.:> Core.QueryParam "upload_protocol" Core.Text
+    Core.:> Core.QueryParam "alt" Core.AltJSON
+    Core.:> Core.Post '[Core.JSON] ExpansionFilesUploadResponse
+    Core.:<|> "upload"
+    Core.:> "androidpublisher"
+    Core.:> "v3"
+    Core.:> "applications"
+    Core.:> Core.Capture "packageName" Core.Text
+    Core.:> "edits"
+    Core.:> Core.Capture "editId" Core.Text
+    Core.:> "apks"
+    Core.:> Core.Capture "apkVersionCode" Core.Int32
+    Core.:> "expansionFiles"
+    Core.:> Core.Capture
+              "expansionFileType"
+              EditsExpansionfilesUploadExpansionFileType
+    Core.:> Core.QueryParam "$.xgafv" Xgafv
+    Core.:> Core.QueryParam "access_token" Core.Text
+    Core.:> Core.QueryParam "callback" Core.Text
+    Core.:> Core.QueryParam "uploadType" Core.Text
+    Core.:> Core.QueryParam "upload_protocol" Core.Text
+    Core.:> Core.QueryParam "alt" Core.AltJSON
+    Core.:> Core.QueryParam "uploadType" Core.AltMedia
+    Core.:> Core.AltMedia
+    Core.:> Core.Post '[Core.JSON] ExpansionFilesUploadResponse
+
+-- | Uploads a new expansion file and attaches to the specified APK.
+--
+-- /See:/ 'newAndroidPublisherEditsExpansionfilesUpload' smart constructor.
+data AndroidPublisherEditsExpansionfilesUpload = AndroidPublisherEditsExpansionfilesUpload
+  { -- | V1 error format.
+    xgafv :: (Core.Maybe Xgafv),
+    -- | OAuth access token.
+    accessToken :: (Core.Maybe Core.Text),
+    -- | The version code of the APK whose expansion file configuration is being read or modified.
+    apkVersionCode :: Core.Int32,
+    -- | JSONP
+    callback :: (Core.Maybe Core.Text),
+    -- | Identifier of the edit.
+    editId :: Core.Text,
+    -- | The file type of the expansion file configuration which is being updated.
+    expansionFileType :: EditsExpansionfilesUploadExpansionFileType,
+    -- | Package name of the app.
+    packageName :: Core.Text,
+    -- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
+    uploadType :: (Core.Maybe Core.Text),
+    -- | Upload protocol for media (e.g. \"raw\", \"multipart\").
+    uploadProtocol :: (Core.Maybe Core.Text)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'AndroidPublisherEditsExpansionfilesUpload' with the minimum fields required to make a request.
+newAndroidPublisherEditsExpansionfilesUpload ::
+  -- |  The version code of the APK whose expansion file configuration is being read or modified. See 'apkVersionCode'.
+  Core.Int32 ->
+  -- |  Identifier of the edit. See 'editId'.
+  Core.Text ->
+  -- |  The file type of the expansion file configuration which is being updated. See 'expansionFileType'.
+  EditsExpansionfilesUploadExpansionFileType ->
+  -- |  Package name of the app. See 'packageName'.
+  Core.Text ->
+  AndroidPublisherEditsExpansionfilesUpload
+newAndroidPublisherEditsExpansionfilesUpload
+  apkVersionCode
+  editId
+  expansionFileType
+  packageName =
+    AndroidPublisherEditsExpansionfilesUpload
+      { xgafv = Core.Nothing,
+        accessToken = Core.Nothing,
+        apkVersionCode = apkVersionCode,
+        callback = Core.Nothing,
+        editId = editId,
+        expansionFileType = expansionFileType,
+        packageName = packageName,
+        uploadType = Core.Nothing,
+        uploadProtocol = Core.Nothing
+      }
+
+instance
+  Core.GoogleRequest
+    AndroidPublisherEditsExpansionfilesUpload
+  where
+  type
+    Rs AndroidPublisherEditsExpansionfilesUpload =
+      ExpansionFilesUploadResponse
+  type
+    Scopes AndroidPublisherEditsExpansionfilesUpload =
+      '[Androidpublisher'FullControl]
+  requestClient AndroidPublisherEditsExpansionfilesUpload {..} =
+    go
+      packageName
+      editId
+      apkVersionCode
+      expansionFileType
+      xgafv
+      accessToken
+      callback
+      uploadType
+      uploadProtocol
+      (Core.Just Core.AltJSON)
+      androidPublisherService
+    where
+      go Core.:<|> _ =
+        Core.buildClient
+          ( Core.Proxy ::
+              Core.Proxy AndroidPublisherEditsExpansionfilesUploadResource
+          )
+          Core.mempty
+
+instance
+  Core.GoogleRequest
+    (Core.MediaUpload AndroidPublisherEditsExpansionfilesUpload)
+  where
+  type
+    Rs
+      (Core.MediaUpload AndroidPublisherEditsExpansionfilesUpload) =
+      ExpansionFilesUploadResponse
+  type
+    Scopes
+      (Core.MediaUpload AndroidPublisherEditsExpansionfilesUpload) =
+      Core.Scopes AndroidPublisherEditsExpansionfilesUpload
+  requestClient
+    ( Core.MediaUpload
+        AndroidPublisherEditsExpansionfilesUpload {..}
+        body
+      ) =
+      go
+        packageName
+        editId
+        apkVersionCode
+        expansionFileType
+        xgafv
+        accessToken
+        callback
+        uploadType
+        uploadProtocol
+        (Core.Just Core.AltJSON)
+        (Core.Just Core.AltMedia)
+        body
+        androidPublisherService
+      where
+        _ Core.:<|> go =
+          Core.buildClient
+            ( Core.Proxy ::
+                Core.Proxy AndroidPublisherEditsExpansionfilesUploadResource
+            )
+            Core.mempty
diff --git a/gen/Gogol/AndroidPublisher/Edits/Get.hs b/gen/Gogol/AndroidPublisher/Edits/Get.hs
new file mode 100644
--- /dev/null
+++ b/gen/Gogol/AndroidPublisher/Edits/Get.hs
@@ -0,0 +1,119 @@
+{-# LANGUAGE DataKinds #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE ImportQualifiedPost #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-name-shadowing #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- |
+-- Module      : Gogol.AndroidPublisher.Edits.Get
+-- Copyright   : (c) 2015-2025 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay+gogol@gmail.com>
+--               Toni Cebrián <toni@tonicebrian.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Gets an app edit.
+--
+-- /See:/ <https://developers.google.com/android-publisher Google Play Android Developer API Reference> for @androidpublisher.edits.get@.
+module Gogol.AndroidPublisher.Edits.Get
+  ( -- * Resource
+    AndroidPublisherEditsGetResource,
+
+    -- ** Constructing a Request
+    AndroidPublisherEditsGet (..),
+    newAndroidPublisherEditsGet,
+  )
+where
+
+import Gogol.AndroidPublisher.Types
+import Gogol.Prelude qualified as Core
+
+-- | A resource alias for @androidpublisher.edits.get@ method which the
+-- 'AndroidPublisherEditsGet' request conforms to.
+type AndroidPublisherEditsGetResource =
+  "androidpublisher"
+    Core.:> "v3"
+    Core.:> "applications"
+    Core.:> Core.Capture "packageName" Core.Text
+    Core.:> "edits"
+    Core.:> Core.Capture "editId" Core.Text
+    Core.:> Core.QueryParam "$.xgafv" Xgafv
+    Core.:> Core.QueryParam "access_token" Core.Text
+    Core.:> Core.QueryParam "callback" Core.Text
+    Core.:> Core.QueryParam "uploadType" Core.Text
+    Core.:> Core.QueryParam "upload_protocol" Core.Text
+    Core.:> Core.QueryParam "alt" Core.AltJSON
+    Core.:> Core.Get '[Core.JSON] AppEdit
+
+-- | Gets an app edit.
+--
+-- /See:/ 'newAndroidPublisherEditsGet' smart constructor.
+data AndroidPublisherEditsGet = AndroidPublisherEditsGet
+  { -- | V1 error format.
+    xgafv :: (Core.Maybe Xgafv),
+    -- | OAuth access token.
+    accessToken :: (Core.Maybe Core.Text),
+    -- | JSONP
+    callback :: (Core.Maybe Core.Text),
+    -- | Identifier of the edit.
+    editId :: Core.Text,
+    -- | Package name of the app.
+    packageName :: Core.Text,
+    -- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
+    uploadType :: (Core.Maybe Core.Text),
+    -- | Upload protocol for media (e.g. \"raw\", \"multipart\").
+    uploadProtocol :: (Core.Maybe Core.Text)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'AndroidPublisherEditsGet' with the minimum fields required to make a request.
+newAndroidPublisherEditsGet ::
+  -- |  Identifier of the edit. See 'editId'.
+  Core.Text ->
+  -- |  Package name of the app. See 'packageName'.
+  Core.Text ->
+  AndroidPublisherEditsGet
+newAndroidPublisherEditsGet editId packageName =
+  AndroidPublisherEditsGet
+    { xgafv = Core.Nothing,
+      accessToken = Core.Nothing,
+      callback = Core.Nothing,
+      editId = editId,
+      packageName = packageName,
+      uploadType = Core.Nothing,
+      uploadProtocol = Core.Nothing
+    }
+
+instance Core.GoogleRequest AndroidPublisherEditsGet where
+  type Rs AndroidPublisherEditsGet = AppEdit
+  type
+    Scopes AndroidPublisherEditsGet =
+      '[Androidpublisher'FullControl]
+  requestClient AndroidPublisherEditsGet {..} =
+    go
+      packageName
+      editId
+      xgafv
+      accessToken
+      callback
+      uploadType
+      uploadProtocol
+      (Core.Just Core.AltJSON)
+      androidPublisherService
+    where
+      go =
+        Core.buildClient
+          (Core.Proxy :: Core.Proxy AndroidPublisherEditsGetResource)
+          Core.mempty
diff --git a/gen/Gogol/AndroidPublisher/Edits/Images/Delete.hs b/gen/Gogol/AndroidPublisher/Edits/Images/Delete.hs
new file mode 100644
--- /dev/null
+++ b/gen/Gogol/AndroidPublisher/Edits/Images/Delete.hs
@@ -0,0 +1,148 @@
+{-# LANGUAGE DataKinds #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE ImportQualifiedPost #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-name-shadowing #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- |
+-- Module      : Gogol.AndroidPublisher.Edits.Images.Delete
+-- Copyright   : (c) 2015-2025 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay+gogol@gmail.com>
+--               Toni Cebrián <toni@tonicebrian.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Deletes the image (specified by id) from the edit.
+--
+-- /See:/ <https://developers.google.com/android-publisher Google Play Android Developer API Reference> for @androidpublisher.edits.images.delete@.
+module Gogol.AndroidPublisher.Edits.Images.Delete
+  ( -- * Resource
+    AndroidPublisherEditsImagesDeleteResource,
+
+    -- ** Constructing a Request
+    AndroidPublisherEditsImagesDelete (..),
+    newAndroidPublisherEditsImagesDelete,
+  )
+where
+
+import Gogol.AndroidPublisher.Types
+import Gogol.Prelude qualified as Core
+
+-- | A resource alias for @androidpublisher.edits.images.delete@ method which the
+-- 'AndroidPublisherEditsImagesDelete' request conforms to.
+type AndroidPublisherEditsImagesDeleteResource =
+  "androidpublisher"
+    Core.:> "v3"
+    Core.:> "applications"
+    Core.:> Core.Capture "packageName" Core.Text
+    Core.:> "edits"
+    Core.:> Core.Capture "editId" Core.Text
+    Core.:> "listings"
+    Core.:> Core.Capture "language" Core.Text
+    Core.:> Core.Capture "imageType" EditsImagesDeleteImageType
+    Core.:> Core.Capture "imageId" Core.Text
+    Core.:> Core.QueryParam "$.xgafv" Xgafv
+    Core.:> Core.QueryParam "access_token" Core.Text
+    Core.:> Core.QueryParam "callback" Core.Text
+    Core.:> Core.QueryParam "uploadType" Core.Text
+    Core.:> Core.QueryParam "upload_protocol" Core.Text
+    Core.:> Core.QueryParam "alt" Core.AltJSON
+    Core.:> Core.Delete '[Core.JSON] ()
+
+-- | Deletes the image (specified by id) from the edit.
+--
+-- /See:/ 'newAndroidPublisherEditsImagesDelete' smart constructor.
+data AndroidPublisherEditsImagesDelete = AndroidPublisherEditsImagesDelete
+  { -- | V1 error format.
+    xgafv :: (Core.Maybe Xgafv),
+    -- | OAuth access token.
+    accessToken :: (Core.Maybe Core.Text),
+    -- | JSONP
+    callback :: (Core.Maybe Core.Text),
+    -- | Identifier of the edit.
+    editId :: Core.Text,
+    -- | Unique identifier an image within the set of images attached to this edit.
+    imageId :: Core.Text,
+    -- | Type of the Image.
+    imageType :: EditsImagesDeleteImageType,
+    -- | Language localization code (a BCP-47 language tag; for example, \"de-AT\" for Austrian German).
+    language :: Core.Text,
+    -- | Package name of the app.
+    packageName :: Core.Text,
+    -- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
+    uploadType :: (Core.Maybe Core.Text),
+    -- | Upload protocol for media (e.g. \"raw\", \"multipart\").
+    uploadProtocol :: (Core.Maybe Core.Text)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'AndroidPublisherEditsImagesDelete' with the minimum fields required to make a request.
+newAndroidPublisherEditsImagesDelete ::
+  -- |  Identifier of the edit. See 'editId'.
+  Core.Text ->
+  -- |  Unique identifier an image within the set of images attached to this edit. See 'imageId'.
+  Core.Text ->
+  -- |  Type of the Image. See 'imageType'.
+  EditsImagesDeleteImageType ->
+  -- |  Language localization code (a BCP-47 language tag; for example, \"de-AT\" for Austrian German). See 'language'.
+  Core.Text ->
+  -- |  Package name of the app. See 'packageName'.
+  Core.Text ->
+  AndroidPublisherEditsImagesDelete
+newAndroidPublisherEditsImagesDelete
+  editId
+  imageId
+  imageType
+  language
+  packageName =
+    AndroidPublisherEditsImagesDelete
+      { xgafv = Core.Nothing,
+        accessToken = Core.Nothing,
+        callback = Core.Nothing,
+        editId = editId,
+        imageId = imageId,
+        imageType = imageType,
+        language = language,
+        packageName = packageName,
+        uploadType = Core.Nothing,
+        uploadProtocol = Core.Nothing
+      }
+
+instance Core.GoogleRequest AndroidPublisherEditsImagesDelete where
+  type Rs AndroidPublisherEditsImagesDelete = ()
+  type
+    Scopes AndroidPublisherEditsImagesDelete =
+      '[Androidpublisher'FullControl]
+  requestClient AndroidPublisherEditsImagesDelete {..} =
+    go
+      packageName
+      editId
+      language
+      imageType
+      imageId
+      xgafv
+      accessToken
+      callback
+      uploadType
+      uploadProtocol
+      (Core.Just Core.AltJSON)
+      androidPublisherService
+    where
+      go =
+        Core.buildClient
+          ( Core.Proxy ::
+              Core.Proxy AndroidPublisherEditsImagesDeleteResource
+          )
+          Core.mempty
diff --git a/gen/Gogol/AndroidPublisher/Edits/Images/Deleteall.hs b/gen/Gogol/AndroidPublisher/Edits/Images/Deleteall.hs
new file mode 100644
--- /dev/null
+++ b/gen/Gogol/AndroidPublisher/Edits/Images/Deleteall.hs
@@ -0,0 +1,142 @@
+{-# LANGUAGE DataKinds #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE ImportQualifiedPost #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-name-shadowing #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- |
+-- Module      : Gogol.AndroidPublisher.Edits.Images.Deleteall
+-- Copyright   : (c) 2015-2025 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay+gogol@gmail.com>
+--               Toni Cebrián <toni@tonicebrian.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Deletes all images for the specified language and image type. Returns an empty response if no images are found.
+--
+-- /See:/ <https://developers.google.com/android-publisher Google Play Android Developer API Reference> for @androidpublisher.edits.images.deleteall@.
+module Gogol.AndroidPublisher.Edits.Images.Deleteall
+  ( -- * Resource
+    AndroidPublisherEditsImagesDeleteallResource,
+
+    -- ** Constructing a Request
+    AndroidPublisherEditsImagesDeleteall (..),
+    newAndroidPublisherEditsImagesDeleteall,
+  )
+where
+
+import Gogol.AndroidPublisher.Types
+import Gogol.Prelude qualified as Core
+
+-- | A resource alias for @androidpublisher.edits.images.deleteall@ method which the
+-- 'AndroidPublisherEditsImagesDeleteall' request conforms to.
+type AndroidPublisherEditsImagesDeleteallResource =
+  "androidpublisher"
+    Core.:> "v3"
+    Core.:> "applications"
+    Core.:> Core.Capture "packageName" Core.Text
+    Core.:> "edits"
+    Core.:> Core.Capture "editId" Core.Text
+    Core.:> "listings"
+    Core.:> Core.Capture "language" Core.Text
+    Core.:> Core.Capture "imageType" EditsImagesDeleteallImageType
+    Core.:> Core.QueryParam "$.xgafv" Xgafv
+    Core.:> Core.QueryParam "access_token" Core.Text
+    Core.:> Core.QueryParam "callback" Core.Text
+    Core.:> Core.QueryParam "uploadType" Core.Text
+    Core.:> Core.QueryParam "upload_protocol" Core.Text
+    Core.:> Core.QueryParam "alt" Core.AltJSON
+    Core.:> Core.Delete '[Core.JSON] ImagesDeleteAllResponse
+
+-- | Deletes all images for the specified language and image type. Returns an empty response if no images are found.
+--
+-- /See:/ 'newAndroidPublisherEditsImagesDeleteall' smart constructor.
+data AndroidPublisherEditsImagesDeleteall = AndroidPublisherEditsImagesDeleteall
+  { -- | V1 error format.
+    xgafv :: (Core.Maybe Xgafv),
+    -- | OAuth access token.
+    accessToken :: (Core.Maybe Core.Text),
+    -- | JSONP
+    callback :: (Core.Maybe Core.Text),
+    -- | Identifier of the edit.
+    editId :: Core.Text,
+    -- | Type of the Image. Providing an image type that refers to no images is a no-op.
+    imageType :: EditsImagesDeleteallImageType,
+    -- | Language localization code (a BCP-47 language tag; for example, \"de-AT\" for Austrian German). Providing a language that is not supported by the App is a no-op.
+    language :: Core.Text,
+    -- | Package name of the app.
+    packageName :: Core.Text,
+    -- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
+    uploadType :: (Core.Maybe Core.Text),
+    -- | Upload protocol for media (e.g. \"raw\", \"multipart\").
+    uploadProtocol :: (Core.Maybe Core.Text)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'AndroidPublisherEditsImagesDeleteall' with the minimum fields required to make a request.
+newAndroidPublisherEditsImagesDeleteall ::
+  -- |  Identifier of the edit. See 'editId'.
+  Core.Text ->
+  -- |  Type of the Image. Providing an image type that refers to no images is a no-op. See 'imageType'.
+  EditsImagesDeleteallImageType ->
+  -- |  Language localization code (a BCP-47 language tag; for example, \"de-AT\" for Austrian German). Providing a language that is not supported by the App is a no-op. See 'language'.
+  Core.Text ->
+  -- |  Package name of the app. See 'packageName'.
+  Core.Text ->
+  AndroidPublisherEditsImagesDeleteall
+newAndroidPublisherEditsImagesDeleteall
+  editId
+  imageType
+  language
+  packageName =
+    AndroidPublisherEditsImagesDeleteall
+      { xgafv = Core.Nothing,
+        accessToken = Core.Nothing,
+        callback = Core.Nothing,
+        editId = editId,
+        imageType = imageType,
+        language = language,
+        packageName = packageName,
+        uploadType = Core.Nothing,
+        uploadProtocol = Core.Nothing
+      }
+
+instance Core.GoogleRequest AndroidPublisherEditsImagesDeleteall where
+  type
+    Rs AndroidPublisherEditsImagesDeleteall =
+      ImagesDeleteAllResponse
+  type
+    Scopes AndroidPublisherEditsImagesDeleteall =
+      '[Androidpublisher'FullControl]
+  requestClient AndroidPublisherEditsImagesDeleteall {..} =
+    go
+      packageName
+      editId
+      language
+      imageType
+      xgafv
+      accessToken
+      callback
+      uploadType
+      uploadProtocol
+      (Core.Just Core.AltJSON)
+      androidPublisherService
+    where
+      go =
+        Core.buildClient
+          ( Core.Proxy ::
+              Core.Proxy AndroidPublisherEditsImagesDeleteallResource
+          )
+          Core.mempty
diff --git a/gen/Gogol/AndroidPublisher/Edits/Images/List.hs b/gen/Gogol/AndroidPublisher/Edits/Images/List.hs
new file mode 100644
--- /dev/null
+++ b/gen/Gogol/AndroidPublisher/Edits/Images/List.hs
@@ -0,0 +1,138 @@
+{-# LANGUAGE DataKinds #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE ImportQualifiedPost #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-name-shadowing #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- |
+-- Module      : Gogol.AndroidPublisher.Edits.Images.List
+-- Copyright   : (c) 2015-2025 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay+gogol@gmail.com>
+--               Toni Cebrián <toni@tonicebrian.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Lists all images. The response may be empty.
+--
+-- /See:/ <https://developers.google.com/android-publisher Google Play Android Developer API Reference> for @androidpublisher.edits.images.list@.
+module Gogol.AndroidPublisher.Edits.Images.List
+  ( -- * Resource
+    AndroidPublisherEditsImagesListResource,
+
+    -- ** Constructing a Request
+    AndroidPublisherEditsImagesList (..),
+    newAndroidPublisherEditsImagesList,
+  )
+where
+
+import Gogol.AndroidPublisher.Types
+import Gogol.Prelude qualified as Core
+
+-- | A resource alias for @androidpublisher.edits.images.list@ method which the
+-- 'AndroidPublisherEditsImagesList' request conforms to.
+type AndroidPublisherEditsImagesListResource =
+  "androidpublisher"
+    Core.:> "v3"
+    Core.:> "applications"
+    Core.:> Core.Capture "packageName" Core.Text
+    Core.:> "edits"
+    Core.:> Core.Capture "editId" Core.Text
+    Core.:> "listings"
+    Core.:> Core.Capture "language" Core.Text
+    Core.:> Core.Capture "imageType" EditsImagesListImageType
+    Core.:> Core.QueryParam "$.xgafv" Xgafv
+    Core.:> Core.QueryParam "access_token" Core.Text
+    Core.:> Core.QueryParam "callback" Core.Text
+    Core.:> Core.QueryParam "uploadType" Core.Text
+    Core.:> Core.QueryParam "upload_protocol" Core.Text
+    Core.:> Core.QueryParam "alt" Core.AltJSON
+    Core.:> Core.Get '[Core.JSON] ImagesListResponse
+
+-- | Lists all images. The response may be empty.
+--
+-- /See:/ 'newAndroidPublisherEditsImagesList' smart constructor.
+data AndroidPublisherEditsImagesList = AndroidPublisherEditsImagesList
+  { -- | V1 error format.
+    xgafv :: (Core.Maybe Xgafv),
+    -- | OAuth access token.
+    accessToken :: (Core.Maybe Core.Text),
+    -- | JSONP
+    callback :: (Core.Maybe Core.Text),
+    -- | Identifier of the edit.
+    editId :: Core.Text,
+    -- | Type of the Image. Providing an image type that refers to no images will return an empty response.
+    imageType :: EditsImagesListImageType,
+    -- | Language localization code (a BCP-47 language tag; for example, \"de-AT\" for Austrian German). There must be a store listing for the specified language.
+    language :: Core.Text,
+    -- | Package name of the app.
+    packageName :: Core.Text,
+    -- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
+    uploadType :: (Core.Maybe Core.Text),
+    -- | Upload protocol for media (e.g. \"raw\", \"multipart\").
+    uploadProtocol :: (Core.Maybe Core.Text)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'AndroidPublisherEditsImagesList' with the minimum fields required to make a request.
+newAndroidPublisherEditsImagesList ::
+  -- |  Identifier of the edit. See 'editId'.
+  Core.Text ->
+  -- |  Type of the Image. Providing an image type that refers to no images will return an empty response. See 'imageType'.
+  EditsImagesListImageType ->
+  -- |  Language localization code (a BCP-47 language tag; for example, \"de-AT\" for Austrian German). There must be a store listing for the specified language. See 'language'.
+  Core.Text ->
+  -- |  Package name of the app. See 'packageName'.
+  Core.Text ->
+  AndroidPublisherEditsImagesList
+newAndroidPublisherEditsImagesList
+  editId
+  imageType
+  language
+  packageName =
+    AndroidPublisherEditsImagesList
+      { xgafv = Core.Nothing,
+        accessToken = Core.Nothing,
+        callback = Core.Nothing,
+        editId = editId,
+        imageType = imageType,
+        language = language,
+        packageName = packageName,
+        uploadType = Core.Nothing,
+        uploadProtocol = Core.Nothing
+      }
+
+instance Core.GoogleRequest AndroidPublisherEditsImagesList where
+  type Rs AndroidPublisherEditsImagesList = ImagesListResponse
+  type
+    Scopes AndroidPublisherEditsImagesList =
+      '[Androidpublisher'FullControl]
+  requestClient AndroidPublisherEditsImagesList {..} =
+    go
+      packageName
+      editId
+      language
+      imageType
+      xgafv
+      accessToken
+      callback
+      uploadType
+      uploadProtocol
+      (Core.Just Core.AltJSON)
+      androidPublisherService
+    where
+      go =
+        Core.buildClient
+          (Core.Proxy :: Core.Proxy AndroidPublisherEditsImagesListResource)
+          Core.mempty
diff --git a/gen/Gogol/AndroidPublisher/Edits/Images/Upload.hs b/gen/Gogol/AndroidPublisher/Edits/Images/Upload.hs
new file mode 100644
--- /dev/null
+++ b/gen/Gogol/AndroidPublisher/Edits/Images/Upload.hs
@@ -0,0 +1,193 @@
+{-# LANGUAGE DataKinds #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE ImportQualifiedPost #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-name-shadowing #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- |
+-- Module      : Gogol.AndroidPublisher.Edits.Images.Upload
+-- Copyright   : (c) 2015-2025 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay+gogol@gmail.com>
+--               Toni Cebrián <toni@tonicebrian.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Uploads an image of the specified language and image type, and adds to the edit.
+--
+-- /See:/ <https://developers.google.com/android-publisher Google Play Android Developer API Reference> for @androidpublisher.edits.images.upload@.
+module Gogol.AndroidPublisher.Edits.Images.Upload
+  ( -- * Resource
+    AndroidPublisherEditsImagesUploadResource,
+
+    -- ** Constructing a Request
+    AndroidPublisherEditsImagesUpload (..),
+    newAndroidPublisherEditsImagesUpload,
+  )
+where
+
+import Gogol.AndroidPublisher.Types
+import Gogol.Prelude qualified as Core
+
+-- | A resource alias for @androidpublisher.edits.images.upload@ method which the
+-- 'AndroidPublisherEditsImagesUpload' request conforms to.
+type AndroidPublisherEditsImagesUploadResource =
+  "androidpublisher"
+    Core.:> "v3"
+    Core.:> "applications"
+    Core.:> Core.Capture "packageName" Core.Text
+    Core.:> "edits"
+    Core.:> Core.Capture "editId" Core.Text
+    Core.:> "listings"
+    Core.:> Core.Capture "language" Core.Text
+    Core.:> Core.Capture "imageType" EditsImagesUploadImageType
+    Core.:> Core.QueryParam "$.xgafv" Xgafv
+    Core.:> Core.QueryParam "access_token" Core.Text
+    Core.:> Core.QueryParam "callback" Core.Text
+    Core.:> Core.QueryParam "uploadType" Core.Text
+    Core.:> Core.QueryParam "upload_protocol" Core.Text
+    Core.:> Core.QueryParam "alt" Core.AltJSON
+    Core.:> Core.Post '[Core.JSON] ImagesUploadResponse
+    Core.:<|> "upload"
+    Core.:> "androidpublisher"
+    Core.:> "v3"
+    Core.:> "applications"
+    Core.:> Core.Capture "packageName" Core.Text
+    Core.:> "edits"
+    Core.:> Core.Capture "editId" Core.Text
+    Core.:> "listings"
+    Core.:> Core.Capture "language" Core.Text
+    Core.:> Core.Capture "imageType" EditsImagesUploadImageType
+    Core.:> Core.QueryParam "$.xgafv" Xgafv
+    Core.:> Core.QueryParam "access_token" Core.Text
+    Core.:> Core.QueryParam "callback" Core.Text
+    Core.:> Core.QueryParam "uploadType" Core.Text
+    Core.:> Core.QueryParam "upload_protocol" Core.Text
+    Core.:> Core.QueryParam "alt" Core.AltJSON
+    Core.:> Core.QueryParam "uploadType" Core.AltMedia
+    Core.:> Core.AltMedia
+    Core.:> Core.Post '[Core.JSON] ImagesUploadResponse
+
+-- | Uploads an image of the specified language and image type, and adds to the edit.
+--
+-- /See:/ 'newAndroidPublisherEditsImagesUpload' smart constructor.
+data AndroidPublisherEditsImagesUpload = AndroidPublisherEditsImagesUpload
+  { -- | V1 error format.
+    xgafv :: (Core.Maybe Xgafv),
+    -- | OAuth access token.
+    accessToken :: (Core.Maybe Core.Text),
+    -- | JSONP
+    callback :: (Core.Maybe Core.Text),
+    -- | Identifier of the edit.
+    editId :: Core.Text,
+    -- | Type of the Image.
+    imageType :: EditsImagesUploadImageType,
+    -- | Language localization code (a BCP-47 language tag; for example, \"de-AT\" for Austrian German). Providing a language that is not supported by the App is a no-op.
+    language :: Core.Text,
+    -- | Package name of the app.
+    packageName :: Core.Text,
+    -- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
+    uploadType :: (Core.Maybe Core.Text),
+    -- | Upload protocol for media (e.g. \"raw\", \"multipart\").
+    uploadProtocol :: (Core.Maybe Core.Text)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'AndroidPublisherEditsImagesUpload' with the minimum fields required to make a request.
+newAndroidPublisherEditsImagesUpload ::
+  -- |  Identifier of the edit. See 'editId'.
+  Core.Text ->
+  -- |  Type of the Image. See 'imageType'.
+  EditsImagesUploadImageType ->
+  -- |  Language localization code (a BCP-47 language tag; for example, \"de-AT\" for Austrian German). Providing a language that is not supported by the App is a no-op. See 'language'.
+  Core.Text ->
+  -- |  Package name of the app. See 'packageName'.
+  Core.Text ->
+  AndroidPublisherEditsImagesUpload
+newAndroidPublisherEditsImagesUpload
+  editId
+  imageType
+  language
+  packageName =
+    AndroidPublisherEditsImagesUpload
+      { xgafv = Core.Nothing,
+        accessToken = Core.Nothing,
+        callback = Core.Nothing,
+        editId = editId,
+        imageType = imageType,
+        language = language,
+        packageName = packageName,
+        uploadType = Core.Nothing,
+        uploadProtocol = Core.Nothing
+      }
+
+instance Core.GoogleRequest AndroidPublisherEditsImagesUpload where
+  type Rs AndroidPublisherEditsImagesUpload = ImagesUploadResponse
+  type
+    Scopes AndroidPublisherEditsImagesUpload =
+      '[Androidpublisher'FullControl]
+  requestClient AndroidPublisherEditsImagesUpload {..} =
+    go
+      packageName
+      editId
+      language
+      imageType
+      xgafv
+      accessToken
+      callback
+      uploadType
+      uploadProtocol
+      (Core.Just Core.AltJSON)
+      androidPublisherService
+    where
+      go Core.:<|> _ =
+        Core.buildClient
+          ( Core.Proxy ::
+              Core.Proxy AndroidPublisherEditsImagesUploadResource
+          )
+          Core.mempty
+
+instance
+  Core.GoogleRequest
+    (Core.MediaUpload AndroidPublisherEditsImagesUpload)
+  where
+  type
+    Rs (Core.MediaUpload AndroidPublisherEditsImagesUpload) =
+      ImagesUploadResponse
+  type
+    Scopes (Core.MediaUpload AndroidPublisherEditsImagesUpload) =
+      Core.Scopes AndroidPublisherEditsImagesUpload
+  requestClient
+    (Core.MediaUpload AndroidPublisherEditsImagesUpload {..} body) =
+      go
+        packageName
+        editId
+        language
+        imageType
+        xgafv
+        accessToken
+        callback
+        uploadType
+        uploadProtocol
+        (Core.Just Core.AltJSON)
+        (Core.Just Core.AltMedia)
+        body
+        androidPublisherService
+      where
+        _ Core.:<|> go =
+          Core.buildClient
+            ( Core.Proxy ::
+                Core.Proxy AndroidPublisherEditsImagesUploadResource
+            )
+            Core.mempty
diff --git a/gen/Gogol/AndroidPublisher/Edits/Insert.hs b/gen/Gogol/AndroidPublisher/Edits/Insert.hs
new file mode 100644
--- /dev/null
+++ b/gen/Gogol/AndroidPublisher/Edits/Insert.hs
@@ -0,0 +1,119 @@
+{-# LANGUAGE DataKinds #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE ImportQualifiedPost #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-name-shadowing #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- |
+-- Module      : Gogol.AndroidPublisher.Edits.Insert
+-- Copyright   : (c) 2015-2025 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay+gogol@gmail.com>
+--               Toni Cebrián <toni@tonicebrian.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Creates a new edit for an app.
+--
+-- /See:/ <https://developers.google.com/android-publisher Google Play Android Developer API Reference> for @androidpublisher.edits.insert@.
+module Gogol.AndroidPublisher.Edits.Insert
+  ( -- * Resource
+    AndroidPublisherEditsInsertResource,
+
+    -- ** Constructing a Request
+    AndroidPublisherEditsInsert (..),
+    newAndroidPublisherEditsInsert,
+  )
+where
+
+import Gogol.AndroidPublisher.Types
+import Gogol.Prelude qualified as Core
+
+-- | A resource alias for @androidpublisher.edits.insert@ method which the
+-- 'AndroidPublisherEditsInsert' request conforms to.
+type AndroidPublisherEditsInsertResource =
+  "androidpublisher"
+    Core.:> "v3"
+    Core.:> "applications"
+    Core.:> Core.Capture "packageName" Core.Text
+    Core.:> "edits"
+    Core.:> Core.QueryParam "$.xgafv" Xgafv
+    Core.:> Core.QueryParam "access_token" Core.Text
+    Core.:> Core.QueryParam "callback" Core.Text
+    Core.:> Core.QueryParam "uploadType" Core.Text
+    Core.:> Core.QueryParam "upload_protocol" Core.Text
+    Core.:> Core.QueryParam "alt" Core.AltJSON
+    Core.:> Core.ReqBody '[Core.JSON] AppEdit
+    Core.:> Core.Post '[Core.JSON] AppEdit
+
+-- | Creates a new edit for an app.
+--
+-- /See:/ 'newAndroidPublisherEditsInsert' smart constructor.
+data AndroidPublisherEditsInsert = AndroidPublisherEditsInsert
+  { -- | V1 error format.
+    xgafv :: (Core.Maybe Xgafv),
+    -- | OAuth access token.
+    accessToken :: (Core.Maybe Core.Text),
+    -- | JSONP
+    callback :: (Core.Maybe Core.Text),
+    -- | Package name of the app.
+    packageName :: Core.Text,
+    -- | Multipart request metadata.
+    payload :: AppEdit,
+    -- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
+    uploadType :: (Core.Maybe Core.Text),
+    -- | Upload protocol for media (e.g. \"raw\", \"multipart\").
+    uploadProtocol :: (Core.Maybe Core.Text)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'AndroidPublisherEditsInsert' with the minimum fields required to make a request.
+newAndroidPublisherEditsInsert ::
+  -- |  Package name of the app. See 'packageName'.
+  Core.Text ->
+  -- |  Multipart request metadata. See 'payload'.
+  AppEdit ->
+  AndroidPublisherEditsInsert
+newAndroidPublisherEditsInsert packageName payload =
+  AndroidPublisherEditsInsert
+    { xgafv = Core.Nothing,
+      accessToken = Core.Nothing,
+      callback = Core.Nothing,
+      packageName = packageName,
+      payload = payload,
+      uploadType = Core.Nothing,
+      uploadProtocol = Core.Nothing
+    }
+
+instance Core.GoogleRequest AndroidPublisherEditsInsert where
+  type Rs AndroidPublisherEditsInsert = AppEdit
+  type
+    Scopes AndroidPublisherEditsInsert =
+      '[Androidpublisher'FullControl]
+  requestClient AndroidPublisherEditsInsert {..} =
+    go
+      packageName
+      xgafv
+      accessToken
+      callback
+      uploadType
+      uploadProtocol
+      (Core.Just Core.AltJSON)
+      payload
+      androidPublisherService
+    where
+      go =
+        Core.buildClient
+          (Core.Proxy :: Core.Proxy AndroidPublisherEditsInsertResource)
+          Core.mempty
diff --git a/gen/Gogol/AndroidPublisher/Edits/Listings/Delete.hs b/gen/Gogol/AndroidPublisher/Edits/Listings/Delete.hs
new file mode 100644
--- /dev/null
+++ b/gen/Gogol/AndroidPublisher/Edits/Listings/Delete.hs
@@ -0,0 +1,129 @@
+{-# LANGUAGE DataKinds #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE ImportQualifiedPost #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-name-shadowing #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- |
+-- Module      : Gogol.AndroidPublisher.Edits.Listings.Delete
+-- Copyright   : (c) 2015-2025 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay+gogol@gmail.com>
+--               Toni Cebrián <toni@tonicebrian.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Deletes a localized store listing.
+--
+-- /See:/ <https://developers.google.com/android-publisher Google Play Android Developer API Reference> for @androidpublisher.edits.listings.delete@.
+module Gogol.AndroidPublisher.Edits.Listings.Delete
+  ( -- * Resource
+    AndroidPublisherEditsListingsDeleteResource,
+
+    -- ** Constructing a Request
+    AndroidPublisherEditsListingsDelete (..),
+    newAndroidPublisherEditsListingsDelete,
+  )
+where
+
+import Gogol.AndroidPublisher.Types
+import Gogol.Prelude qualified as Core
+
+-- | A resource alias for @androidpublisher.edits.listings.delete@ method which the
+-- 'AndroidPublisherEditsListingsDelete' request conforms to.
+type AndroidPublisherEditsListingsDeleteResource =
+  "androidpublisher"
+    Core.:> "v3"
+    Core.:> "applications"
+    Core.:> Core.Capture "packageName" Core.Text
+    Core.:> "edits"
+    Core.:> Core.Capture "editId" Core.Text
+    Core.:> "listings"
+    Core.:> Core.Capture "language" Core.Text
+    Core.:> Core.QueryParam "$.xgafv" Xgafv
+    Core.:> Core.QueryParam "access_token" Core.Text
+    Core.:> Core.QueryParam "callback" Core.Text
+    Core.:> Core.QueryParam "uploadType" Core.Text
+    Core.:> Core.QueryParam "upload_protocol" Core.Text
+    Core.:> Core.QueryParam "alt" Core.AltJSON
+    Core.:> Core.Delete '[Core.JSON] ()
+
+-- | Deletes a localized store listing.
+--
+-- /See:/ 'newAndroidPublisherEditsListingsDelete' smart constructor.
+data AndroidPublisherEditsListingsDelete = AndroidPublisherEditsListingsDelete
+  { -- | V1 error format.
+    xgafv :: (Core.Maybe Xgafv),
+    -- | OAuth access token.
+    accessToken :: (Core.Maybe Core.Text),
+    -- | JSONP
+    callback :: (Core.Maybe Core.Text),
+    -- | Identifier of the edit.
+    editId :: Core.Text,
+    -- | Language localization code (a BCP-47 language tag; for example, \"de-AT\" for Austrian German).
+    language :: Core.Text,
+    -- | Package name of the app.
+    packageName :: Core.Text,
+    -- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
+    uploadType :: (Core.Maybe Core.Text),
+    -- | Upload protocol for media (e.g. \"raw\", \"multipart\").
+    uploadProtocol :: (Core.Maybe Core.Text)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'AndroidPublisherEditsListingsDelete' with the minimum fields required to make a request.
+newAndroidPublisherEditsListingsDelete ::
+  -- |  Identifier of the edit. See 'editId'.
+  Core.Text ->
+  -- |  Language localization code (a BCP-47 language tag; for example, \"de-AT\" for Austrian German). See 'language'.
+  Core.Text ->
+  -- |  Package name of the app. See 'packageName'.
+  Core.Text ->
+  AndroidPublisherEditsListingsDelete
+newAndroidPublisherEditsListingsDelete editId language packageName =
+  AndroidPublisherEditsListingsDelete
+    { xgafv = Core.Nothing,
+      accessToken = Core.Nothing,
+      callback = Core.Nothing,
+      editId = editId,
+      language = language,
+      packageName = packageName,
+      uploadType = Core.Nothing,
+      uploadProtocol = Core.Nothing
+    }
+
+instance Core.GoogleRequest AndroidPublisherEditsListingsDelete where
+  type Rs AndroidPublisherEditsListingsDelete = ()
+  type
+    Scopes AndroidPublisherEditsListingsDelete =
+      '[Androidpublisher'FullControl]
+  requestClient AndroidPublisherEditsListingsDelete {..} =
+    go
+      packageName
+      editId
+      language
+      xgafv
+      accessToken
+      callback
+      uploadType
+      uploadProtocol
+      (Core.Just Core.AltJSON)
+      androidPublisherService
+    where
+      go =
+        Core.buildClient
+          ( Core.Proxy ::
+              Core.Proxy AndroidPublisherEditsListingsDeleteResource
+          )
+          Core.mempty
diff --git a/gen/Gogol/AndroidPublisher/Edits/Listings/Deleteall.hs b/gen/Gogol/AndroidPublisher/Edits/Listings/Deleteall.hs
new file mode 100644
--- /dev/null
+++ b/gen/Gogol/AndroidPublisher/Edits/Listings/Deleteall.hs
@@ -0,0 +1,122 @@
+{-# LANGUAGE DataKinds #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE ImportQualifiedPost #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-name-shadowing #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- |
+-- Module      : Gogol.AndroidPublisher.Edits.Listings.Deleteall
+-- Copyright   : (c) 2015-2025 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay+gogol@gmail.com>
+--               Toni Cebrián <toni@tonicebrian.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Deletes all store listings.
+--
+-- /See:/ <https://developers.google.com/android-publisher Google Play Android Developer API Reference> for @androidpublisher.edits.listings.deleteall@.
+module Gogol.AndroidPublisher.Edits.Listings.Deleteall
+  ( -- * Resource
+    AndroidPublisherEditsListingsDeleteallResource,
+
+    -- ** Constructing a Request
+    AndroidPublisherEditsListingsDeleteall (..),
+    newAndroidPublisherEditsListingsDeleteall,
+  )
+where
+
+import Gogol.AndroidPublisher.Types
+import Gogol.Prelude qualified as Core
+
+-- | A resource alias for @androidpublisher.edits.listings.deleteall@ method which the
+-- 'AndroidPublisherEditsListingsDeleteall' request conforms to.
+type AndroidPublisherEditsListingsDeleteallResource =
+  "androidpublisher"
+    Core.:> "v3"
+    Core.:> "applications"
+    Core.:> Core.Capture "packageName" Core.Text
+    Core.:> "edits"
+    Core.:> Core.Capture "editId" Core.Text
+    Core.:> "listings"
+    Core.:> Core.QueryParam "$.xgafv" Xgafv
+    Core.:> Core.QueryParam "access_token" Core.Text
+    Core.:> Core.QueryParam "callback" Core.Text
+    Core.:> Core.QueryParam "uploadType" Core.Text
+    Core.:> Core.QueryParam "upload_protocol" Core.Text
+    Core.:> Core.QueryParam "alt" Core.AltJSON
+    Core.:> Core.Delete '[Core.JSON] ()
+
+-- | Deletes all store listings.
+--
+-- /See:/ 'newAndroidPublisherEditsListingsDeleteall' smart constructor.
+data AndroidPublisherEditsListingsDeleteall = AndroidPublisherEditsListingsDeleteall
+  { -- | V1 error format.
+    xgafv :: (Core.Maybe Xgafv),
+    -- | OAuth access token.
+    accessToken :: (Core.Maybe Core.Text),
+    -- | JSONP
+    callback :: (Core.Maybe Core.Text),
+    -- | Identifier of the edit.
+    editId :: Core.Text,
+    -- | Package name of the app.
+    packageName :: Core.Text,
+    -- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
+    uploadType :: (Core.Maybe Core.Text),
+    -- | Upload protocol for media (e.g. \"raw\", \"multipart\").
+    uploadProtocol :: (Core.Maybe Core.Text)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'AndroidPublisherEditsListingsDeleteall' with the minimum fields required to make a request.
+newAndroidPublisherEditsListingsDeleteall ::
+  -- |  Identifier of the edit. See 'editId'.
+  Core.Text ->
+  -- |  Package name of the app. See 'packageName'.
+  Core.Text ->
+  AndroidPublisherEditsListingsDeleteall
+newAndroidPublisherEditsListingsDeleteall editId packageName =
+  AndroidPublisherEditsListingsDeleteall
+    { xgafv = Core.Nothing,
+      accessToken = Core.Nothing,
+      callback = Core.Nothing,
+      editId = editId,
+      packageName = packageName,
+      uploadType = Core.Nothing,
+      uploadProtocol = Core.Nothing
+    }
+
+instance Core.GoogleRequest AndroidPublisherEditsListingsDeleteall where
+  type Rs AndroidPublisherEditsListingsDeleteall = ()
+  type
+    Scopes AndroidPublisherEditsListingsDeleteall =
+      '[Androidpublisher'FullControl]
+  requestClient AndroidPublisherEditsListingsDeleteall {..} =
+    go
+      packageName
+      editId
+      xgafv
+      accessToken
+      callback
+      uploadType
+      uploadProtocol
+      (Core.Just Core.AltJSON)
+      androidPublisherService
+    where
+      go =
+        Core.buildClient
+          ( Core.Proxy ::
+              Core.Proxy AndroidPublisherEditsListingsDeleteallResource
+          )
+          Core.mempty
diff --git a/gen/Gogol/AndroidPublisher/Edits/Listings/Get.hs b/gen/Gogol/AndroidPublisher/Edits/Listings/Get.hs
new file mode 100644
--- /dev/null
+++ b/gen/Gogol/AndroidPublisher/Edits/Listings/Get.hs
@@ -0,0 +1,127 @@
+{-# LANGUAGE DataKinds #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE ImportQualifiedPost #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-name-shadowing #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- |
+-- Module      : Gogol.AndroidPublisher.Edits.Listings.Get
+-- Copyright   : (c) 2015-2025 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay+gogol@gmail.com>
+--               Toni Cebrián <toni@tonicebrian.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Gets a localized store listing.
+--
+-- /See:/ <https://developers.google.com/android-publisher Google Play Android Developer API Reference> for @androidpublisher.edits.listings.get@.
+module Gogol.AndroidPublisher.Edits.Listings.Get
+  ( -- * Resource
+    AndroidPublisherEditsListingsGetResource,
+
+    -- ** Constructing a Request
+    AndroidPublisherEditsListingsGet (..),
+    newAndroidPublisherEditsListingsGet,
+  )
+where
+
+import Gogol.AndroidPublisher.Types
+import Gogol.Prelude qualified as Core
+
+-- | A resource alias for @androidpublisher.edits.listings.get@ method which the
+-- 'AndroidPublisherEditsListingsGet' request conforms to.
+type AndroidPublisherEditsListingsGetResource =
+  "androidpublisher"
+    Core.:> "v3"
+    Core.:> "applications"
+    Core.:> Core.Capture "packageName" Core.Text
+    Core.:> "edits"
+    Core.:> Core.Capture "editId" Core.Text
+    Core.:> "listings"
+    Core.:> Core.Capture "language" Core.Text
+    Core.:> Core.QueryParam "$.xgafv" Xgafv
+    Core.:> Core.QueryParam "access_token" Core.Text
+    Core.:> Core.QueryParam "callback" Core.Text
+    Core.:> Core.QueryParam "uploadType" Core.Text
+    Core.:> Core.QueryParam "upload_protocol" Core.Text
+    Core.:> Core.QueryParam "alt" Core.AltJSON
+    Core.:> Core.Get '[Core.JSON] Listing
+
+-- | Gets a localized store listing.
+--
+-- /See:/ 'newAndroidPublisherEditsListingsGet' smart constructor.
+data AndroidPublisherEditsListingsGet = AndroidPublisherEditsListingsGet
+  { -- | V1 error format.
+    xgafv :: (Core.Maybe Xgafv),
+    -- | OAuth access token.
+    accessToken :: (Core.Maybe Core.Text),
+    -- | JSONP
+    callback :: (Core.Maybe Core.Text),
+    -- | Identifier of the edit.
+    editId :: Core.Text,
+    -- | Language localization code (a BCP-47 language tag; for example, \"de-AT\" for Austrian German).
+    language :: Core.Text,
+    -- | Package name of the app.
+    packageName :: Core.Text,
+    -- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
+    uploadType :: (Core.Maybe Core.Text),
+    -- | Upload protocol for media (e.g. \"raw\", \"multipart\").
+    uploadProtocol :: (Core.Maybe Core.Text)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'AndroidPublisherEditsListingsGet' with the minimum fields required to make a request.
+newAndroidPublisherEditsListingsGet ::
+  -- |  Identifier of the edit. See 'editId'.
+  Core.Text ->
+  -- |  Language localization code (a BCP-47 language tag; for example, \"de-AT\" for Austrian German). See 'language'.
+  Core.Text ->
+  -- |  Package name of the app. See 'packageName'.
+  Core.Text ->
+  AndroidPublisherEditsListingsGet
+newAndroidPublisherEditsListingsGet editId language packageName =
+  AndroidPublisherEditsListingsGet
+    { xgafv = Core.Nothing,
+      accessToken = Core.Nothing,
+      callback = Core.Nothing,
+      editId = editId,
+      language = language,
+      packageName = packageName,
+      uploadType = Core.Nothing,
+      uploadProtocol = Core.Nothing
+    }
+
+instance Core.GoogleRequest AndroidPublisherEditsListingsGet where
+  type Rs AndroidPublisherEditsListingsGet = Listing
+  type
+    Scopes AndroidPublisherEditsListingsGet =
+      '[Androidpublisher'FullControl]
+  requestClient AndroidPublisherEditsListingsGet {..} =
+    go
+      packageName
+      editId
+      language
+      xgafv
+      accessToken
+      callback
+      uploadType
+      uploadProtocol
+      (Core.Just Core.AltJSON)
+      androidPublisherService
+    where
+      go =
+        Core.buildClient
+          (Core.Proxy :: Core.Proxy AndroidPublisherEditsListingsGetResource)
+          Core.mempty
diff --git a/gen/Gogol/AndroidPublisher/Edits/Listings/List.hs b/gen/Gogol/AndroidPublisher/Edits/Listings/List.hs
new file mode 100644
--- /dev/null
+++ b/gen/Gogol/AndroidPublisher/Edits/Listings/List.hs
@@ -0,0 +1,122 @@
+{-# LANGUAGE DataKinds #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE ImportQualifiedPost #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-name-shadowing #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- |
+-- Module      : Gogol.AndroidPublisher.Edits.Listings.List
+-- Copyright   : (c) 2015-2025 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay+gogol@gmail.com>
+--               Toni Cebrián <toni@tonicebrian.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Lists all localized store listings.
+--
+-- /See:/ <https://developers.google.com/android-publisher Google Play Android Developer API Reference> for @androidpublisher.edits.listings.list@.
+module Gogol.AndroidPublisher.Edits.Listings.List
+  ( -- * Resource
+    AndroidPublisherEditsListingsListResource,
+
+    -- ** Constructing a Request
+    AndroidPublisherEditsListingsList (..),
+    newAndroidPublisherEditsListingsList,
+  )
+where
+
+import Gogol.AndroidPublisher.Types
+import Gogol.Prelude qualified as Core
+
+-- | A resource alias for @androidpublisher.edits.listings.list@ method which the
+-- 'AndroidPublisherEditsListingsList' request conforms to.
+type AndroidPublisherEditsListingsListResource =
+  "androidpublisher"
+    Core.:> "v3"
+    Core.:> "applications"
+    Core.:> Core.Capture "packageName" Core.Text
+    Core.:> "edits"
+    Core.:> Core.Capture "editId" Core.Text
+    Core.:> "listings"
+    Core.:> Core.QueryParam "$.xgafv" Xgafv
+    Core.:> Core.QueryParam "access_token" Core.Text
+    Core.:> Core.QueryParam "callback" Core.Text
+    Core.:> Core.QueryParam "uploadType" Core.Text
+    Core.:> Core.QueryParam "upload_protocol" Core.Text
+    Core.:> Core.QueryParam "alt" Core.AltJSON
+    Core.:> Core.Get '[Core.JSON] ListingsListResponse
+
+-- | Lists all localized store listings.
+--
+-- /See:/ 'newAndroidPublisherEditsListingsList' smart constructor.
+data AndroidPublisherEditsListingsList = AndroidPublisherEditsListingsList
+  { -- | V1 error format.
+    xgafv :: (Core.Maybe Xgafv),
+    -- | OAuth access token.
+    accessToken :: (Core.Maybe Core.Text),
+    -- | JSONP
+    callback :: (Core.Maybe Core.Text),
+    -- | Identifier of the edit.
+    editId :: Core.Text,
+    -- | Package name of the app.
+    packageName :: Core.Text,
+    -- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
+    uploadType :: (Core.Maybe Core.Text),
+    -- | Upload protocol for media (e.g. \"raw\", \"multipart\").
+    uploadProtocol :: (Core.Maybe Core.Text)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'AndroidPublisherEditsListingsList' with the minimum fields required to make a request.
+newAndroidPublisherEditsListingsList ::
+  -- |  Identifier of the edit. See 'editId'.
+  Core.Text ->
+  -- |  Package name of the app. See 'packageName'.
+  Core.Text ->
+  AndroidPublisherEditsListingsList
+newAndroidPublisherEditsListingsList editId packageName =
+  AndroidPublisherEditsListingsList
+    { xgafv = Core.Nothing,
+      accessToken = Core.Nothing,
+      callback = Core.Nothing,
+      editId = editId,
+      packageName = packageName,
+      uploadType = Core.Nothing,
+      uploadProtocol = Core.Nothing
+    }
+
+instance Core.GoogleRequest AndroidPublisherEditsListingsList where
+  type Rs AndroidPublisherEditsListingsList = ListingsListResponse
+  type
+    Scopes AndroidPublisherEditsListingsList =
+      '[Androidpublisher'FullControl]
+  requestClient AndroidPublisherEditsListingsList {..} =
+    go
+      packageName
+      editId
+      xgafv
+      accessToken
+      callback
+      uploadType
+      uploadProtocol
+      (Core.Just Core.AltJSON)
+      androidPublisherService
+    where
+      go =
+        Core.buildClient
+          ( Core.Proxy ::
+              Core.Proxy AndroidPublisherEditsListingsListResource
+          )
+          Core.mempty
diff --git a/gen/Gogol/AndroidPublisher/Edits/Listings/Patch.hs b/gen/Gogol/AndroidPublisher/Edits/Listings/Patch.hs
new file mode 100644
--- /dev/null
+++ b/gen/Gogol/AndroidPublisher/Edits/Listings/Patch.hs
@@ -0,0 +1,140 @@
+{-# LANGUAGE DataKinds #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE ImportQualifiedPost #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-name-shadowing #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- |
+-- Module      : Gogol.AndroidPublisher.Edits.Listings.Patch
+-- Copyright   : (c) 2015-2025 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay+gogol@gmail.com>
+--               Toni Cebrián <toni@tonicebrian.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Patches a localized store listing.
+--
+-- /See:/ <https://developers.google.com/android-publisher Google Play Android Developer API Reference> for @androidpublisher.edits.listings.patch@.
+module Gogol.AndroidPublisher.Edits.Listings.Patch
+  ( -- * Resource
+    AndroidPublisherEditsListingsPatchResource,
+
+    -- ** Constructing a Request
+    AndroidPublisherEditsListingsPatch (..),
+    newAndroidPublisherEditsListingsPatch,
+  )
+where
+
+import Gogol.AndroidPublisher.Types
+import Gogol.Prelude qualified as Core
+
+-- | A resource alias for @androidpublisher.edits.listings.patch@ method which the
+-- 'AndroidPublisherEditsListingsPatch' request conforms to.
+type AndroidPublisherEditsListingsPatchResource =
+  "androidpublisher"
+    Core.:> "v3"
+    Core.:> "applications"
+    Core.:> Core.Capture "packageName" Core.Text
+    Core.:> "edits"
+    Core.:> Core.Capture "editId" Core.Text
+    Core.:> "listings"
+    Core.:> Core.Capture "language" Core.Text
+    Core.:> Core.QueryParam "$.xgafv" Xgafv
+    Core.:> Core.QueryParam "access_token" Core.Text
+    Core.:> Core.QueryParam "callback" Core.Text
+    Core.:> Core.QueryParam "uploadType" Core.Text
+    Core.:> Core.QueryParam "upload_protocol" Core.Text
+    Core.:> Core.QueryParam "alt" Core.AltJSON
+    Core.:> Core.ReqBody '[Core.JSON] Listing
+    Core.:> Core.Patch '[Core.JSON] Listing
+
+-- | Patches a localized store listing.
+--
+-- /See:/ 'newAndroidPublisherEditsListingsPatch' smart constructor.
+data AndroidPublisherEditsListingsPatch = AndroidPublisherEditsListingsPatch
+  { -- | V1 error format.
+    xgafv :: (Core.Maybe Xgafv),
+    -- | OAuth access token.
+    accessToken :: (Core.Maybe Core.Text),
+    -- | JSONP
+    callback :: (Core.Maybe Core.Text),
+    -- | Identifier of the edit.
+    editId :: Core.Text,
+    -- | Language localization code (a BCP-47 language tag; for example, \"de-AT\" for Austrian German).
+    language :: Core.Text,
+    -- | Package name of the app.
+    packageName :: Core.Text,
+    -- | Multipart request metadata.
+    payload :: Listing,
+    -- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
+    uploadType :: (Core.Maybe Core.Text),
+    -- | Upload protocol for media (e.g. \"raw\", \"multipart\").
+    uploadProtocol :: (Core.Maybe Core.Text)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'AndroidPublisherEditsListingsPatch' with the minimum fields required to make a request.
+newAndroidPublisherEditsListingsPatch ::
+  -- |  Identifier of the edit. See 'editId'.
+  Core.Text ->
+  -- |  Language localization code (a BCP-47 language tag; for example, \"de-AT\" for Austrian German). See 'language'.
+  Core.Text ->
+  -- |  Package name of the app. See 'packageName'.
+  Core.Text ->
+  -- |  Multipart request metadata. See 'payload'.
+  Listing ->
+  AndroidPublisherEditsListingsPatch
+newAndroidPublisherEditsListingsPatch
+  editId
+  language
+  packageName
+  payload =
+    AndroidPublisherEditsListingsPatch
+      { xgafv = Core.Nothing,
+        accessToken = Core.Nothing,
+        callback = Core.Nothing,
+        editId = editId,
+        language = language,
+        packageName = packageName,
+        payload = payload,
+        uploadType = Core.Nothing,
+        uploadProtocol = Core.Nothing
+      }
+
+instance Core.GoogleRequest AndroidPublisherEditsListingsPatch where
+  type Rs AndroidPublisherEditsListingsPatch = Listing
+  type
+    Scopes AndroidPublisherEditsListingsPatch =
+      '[Androidpublisher'FullControl]
+  requestClient AndroidPublisherEditsListingsPatch {..} =
+    go
+      packageName
+      editId
+      language
+      xgafv
+      accessToken
+      callback
+      uploadType
+      uploadProtocol
+      (Core.Just Core.AltJSON)
+      payload
+      androidPublisherService
+    where
+      go =
+        Core.buildClient
+          ( Core.Proxy ::
+              Core.Proxy AndroidPublisherEditsListingsPatchResource
+          )
+          Core.mempty
diff --git a/gen/Gogol/AndroidPublisher/Edits/Listings/Update.hs b/gen/Gogol/AndroidPublisher/Edits/Listings/Update.hs
new file mode 100644
--- /dev/null
+++ b/gen/Gogol/AndroidPublisher/Edits/Listings/Update.hs
@@ -0,0 +1,140 @@
+{-# LANGUAGE DataKinds #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE ImportQualifiedPost #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-name-shadowing #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- |
+-- Module      : Gogol.AndroidPublisher.Edits.Listings.Update
+-- Copyright   : (c) 2015-2025 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay+gogol@gmail.com>
+--               Toni Cebrián <toni@tonicebrian.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Creates or updates a localized store listing.
+--
+-- /See:/ <https://developers.google.com/android-publisher Google Play Android Developer API Reference> for @androidpublisher.edits.listings.update@.
+module Gogol.AndroidPublisher.Edits.Listings.Update
+  ( -- * Resource
+    AndroidPublisherEditsListingsUpdateResource,
+
+    -- ** Constructing a Request
+    AndroidPublisherEditsListingsUpdate (..),
+    newAndroidPublisherEditsListingsUpdate,
+  )
+where
+
+import Gogol.AndroidPublisher.Types
+import Gogol.Prelude qualified as Core
+
+-- | A resource alias for @androidpublisher.edits.listings.update@ method which the
+-- 'AndroidPublisherEditsListingsUpdate' request conforms to.
+type AndroidPublisherEditsListingsUpdateResource =
+  "androidpublisher"
+    Core.:> "v3"
+    Core.:> "applications"
+    Core.:> Core.Capture "packageName" Core.Text
+    Core.:> "edits"
+    Core.:> Core.Capture "editId" Core.Text
+    Core.:> "listings"
+    Core.:> Core.Capture "language" Core.Text
+    Core.:> Core.QueryParam "$.xgafv" Xgafv
+    Core.:> Core.QueryParam "access_token" Core.Text
+    Core.:> Core.QueryParam "callback" Core.Text
+    Core.:> Core.QueryParam "uploadType" Core.Text
+    Core.:> Core.QueryParam "upload_protocol" Core.Text
+    Core.:> Core.QueryParam "alt" Core.AltJSON
+    Core.:> Core.ReqBody '[Core.JSON] Listing
+    Core.:> Core.Put '[Core.JSON] Listing
+
+-- | Creates or updates a localized store listing.
+--
+-- /See:/ 'newAndroidPublisherEditsListingsUpdate' smart constructor.
+data AndroidPublisherEditsListingsUpdate = AndroidPublisherEditsListingsUpdate
+  { -- | V1 error format.
+    xgafv :: (Core.Maybe Xgafv),
+    -- | OAuth access token.
+    accessToken :: (Core.Maybe Core.Text),
+    -- | JSONP
+    callback :: (Core.Maybe Core.Text),
+    -- | Identifier of the edit.
+    editId :: Core.Text,
+    -- | Language localization code (a BCP-47 language tag; for example, \"de-AT\" for Austrian German).
+    language :: Core.Text,
+    -- | Package name of the app.
+    packageName :: Core.Text,
+    -- | Multipart request metadata.
+    payload :: Listing,
+    -- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
+    uploadType :: (Core.Maybe Core.Text),
+    -- | Upload protocol for media (e.g. \"raw\", \"multipart\").
+    uploadProtocol :: (Core.Maybe Core.Text)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'AndroidPublisherEditsListingsUpdate' with the minimum fields required to make a request.
+newAndroidPublisherEditsListingsUpdate ::
+  -- |  Identifier of the edit. See 'editId'.
+  Core.Text ->
+  -- |  Language localization code (a BCP-47 language tag; for example, \"de-AT\" for Austrian German). See 'language'.
+  Core.Text ->
+  -- |  Package name of the app. See 'packageName'.
+  Core.Text ->
+  -- |  Multipart request metadata. See 'payload'.
+  Listing ->
+  AndroidPublisherEditsListingsUpdate
+newAndroidPublisherEditsListingsUpdate
+  editId
+  language
+  packageName
+  payload =
+    AndroidPublisherEditsListingsUpdate
+      { xgafv = Core.Nothing,
+        accessToken = Core.Nothing,
+        callback = Core.Nothing,
+        editId = editId,
+        language = language,
+        packageName = packageName,
+        payload = payload,
+        uploadType = Core.Nothing,
+        uploadProtocol = Core.Nothing
+      }
+
+instance Core.GoogleRequest AndroidPublisherEditsListingsUpdate where
+  type Rs AndroidPublisherEditsListingsUpdate = Listing
+  type
+    Scopes AndroidPublisherEditsListingsUpdate =
+      '[Androidpublisher'FullControl]
+  requestClient AndroidPublisherEditsListingsUpdate {..} =
+    go
+      packageName
+      editId
+      language
+      xgafv
+      accessToken
+      callback
+      uploadType
+      uploadProtocol
+      (Core.Just Core.AltJSON)
+      payload
+      androidPublisherService
+    where
+      go =
+        Core.buildClient
+          ( Core.Proxy ::
+              Core.Proxy AndroidPublisherEditsListingsUpdateResource
+          )
+          Core.mempty
diff --git a/gen/Gogol/AndroidPublisher/Edits/Testers/Get.hs b/gen/Gogol/AndroidPublisher/Edits/Testers/Get.hs
new file mode 100644
--- /dev/null
+++ b/gen/Gogol/AndroidPublisher/Edits/Testers/Get.hs
@@ -0,0 +1,127 @@
+{-# LANGUAGE DataKinds #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE ImportQualifiedPost #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-name-shadowing #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- |
+-- Module      : Gogol.AndroidPublisher.Edits.Testers.Get
+-- Copyright   : (c) 2015-2025 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay+gogol@gmail.com>
+--               Toni Cebrián <toni@tonicebrian.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Gets testers. Note: Testers resource does not support email lists.
+--
+-- /See:/ <https://developers.google.com/android-publisher Google Play Android Developer API Reference> for @androidpublisher.edits.testers.get@.
+module Gogol.AndroidPublisher.Edits.Testers.Get
+  ( -- * Resource
+    AndroidPublisherEditsTestersGetResource,
+
+    -- ** Constructing a Request
+    AndroidPublisherEditsTestersGet (..),
+    newAndroidPublisherEditsTestersGet,
+  )
+where
+
+import Gogol.AndroidPublisher.Types
+import Gogol.Prelude qualified as Core
+
+-- | A resource alias for @androidpublisher.edits.testers.get@ method which the
+-- 'AndroidPublisherEditsTestersGet' request conforms to.
+type AndroidPublisherEditsTestersGetResource =
+  "androidpublisher"
+    Core.:> "v3"
+    Core.:> "applications"
+    Core.:> Core.Capture "packageName" Core.Text
+    Core.:> "edits"
+    Core.:> Core.Capture "editId" Core.Text
+    Core.:> "testers"
+    Core.:> Core.Capture "track" Core.Text
+    Core.:> Core.QueryParam "$.xgafv" Xgafv
+    Core.:> Core.QueryParam "access_token" Core.Text
+    Core.:> Core.QueryParam "callback" Core.Text
+    Core.:> Core.QueryParam "uploadType" Core.Text
+    Core.:> Core.QueryParam "upload_protocol" Core.Text
+    Core.:> Core.QueryParam "alt" Core.AltJSON
+    Core.:> Core.Get '[Core.JSON] Testers
+
+-- | Gets testers. Note: Testers resource does not support email lists.
+--
+-- /See:/ 'newAndroidPublisherEditsTestersGet' smart constructor.
+data AndroidPublisherEditsTestersGet = AndroidPublisherEditsTestersGet
+  { -- | V1 error format.
+    xgafv :: (Core.Maybe Xgafv),
+    -- | OAuth access token.
+    accessToken :: (Core.Maybe Core.Text),
+    -- | JSONP
+    callback :: (Core.Maybe Core.Text),
+    -- | Identifier of the edit.
+    editId :: Core.Text,
+    -- | Package name of the app.
+    packageName :: Core.Text,
+    -- | The track to read from.
+    track :: Core.Text,
+    -- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
+    uploadType :: (Core.Maybe Core.Text),
+    -- | Upload protocol for media (e.g. \"raw\", \"multipart\").
+    uploadProtocol :: (Core.Maybe Core.Text)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'AndroidPublisherEditsTestersGet' with the minimum fields required to make a request.
+newAndroidPublisherEditsTestersGet ::
+  -- |  Identifier of the edit. See 'editId'.
+  Core.Text ->
+  -- |  Package name of the app. See 'packageName'.
+  Core.Text ->
+  -- |  The track to read from. See 'track'.
+  Core.Text ->
+  AndroidPublisherEditsTestersGet
+newAndroidPublisherEditsTestersGet editId packageName track =
+  AndroidPublisherEditsTestersGet
+    { xgafv = Core.Nothing,
+      accessToken = Core.Nothing,
+      callback = Core.Nothing,
+      editId = editId,
+      packageName = packageName,
+      track = track,
+      uploadType = Core.Nothing,
+      uploadProtocol = Core.Nothing
+    }
+
+instance Core.GoogleRequest AndroidPublisherEditsTestersGet where
+  type Rs AndroidPublisherEditsTestersGet = Testers
+  type
+    Scopes AndroidPublisherEditsTestersGet =
+      '[Androidpublisher'FullControl]
+  requestClient AndroidPublisherEditsTestersGet {..} =
+    go
+      packageName
+      editId
+      track
+      xgafv
+      accessToken
+      callback
+      uploadType
+      uploadProtocol
+      (Core.Just Core.AltJSON)
+      androidPublisherService
+    where
+      go =
+        Core.buildClient
+          (Core.Proxy :: Core.Proxy AndroidPublisherEditsTestersGetResource)
+          Core.mempty
diff --git a/gen/Gogol/AndroidPublisher/Edits/Testers/Patch.hs b/gen/Gogol/AndroidPublisher/Edits/Testers/Patch.hs
new file mode 100644
--- /dev/null
+++ b/gen/Gogol/AndroidPublisher/Edits/Testers/Patch.hs
@@ -0,0 +1,140 @@
+{-# LANGUAGE DataKinds #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE ImportQualifiedPost #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-name-shadowing #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- |
+-- Module      : Gogol.AndroidPublisher.Edits.Testers.Patch
+-- Copyright   : (c) 2015-2025 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay+gogol@gmail.com>
+--               Toni Cebrián <toni@tonicebrian.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Patches testers. Note: Testers resource does not support email lists.
+--
+-- /See:/ <https://developers.google.com/android-publisher Google Play Android Developer API Reference> for @androidpublisher.edits.testers.patch@.
+module Gogol.AndroidPublisher.Edits.Testers.Patch
+  ( -- * Resource
+    AndroidPublisherEditsTestersPatchResource,
+
+    -- ** Constructing a Request
+    AndroidPublisherEditsTestersPatch (..),
+    newAndroidPublisherEditsTestersPatch,
+  )
+where
+
+import Gogol.AndroidPublisher.Types
+import Gogol.Prelude qualified as Core
+
+-- | A resource alias for @androidpublisher.edits.testers.patch@ method which the
+-- 'AndroidPublisherEditsTestersPatch' request conforms to.
+type AndroidPublisherEditsTestersPatchResource =
+  "androidpublisher"
+    Core.:> "v3"
+    Core.:> "applications"
+    Core.:> Core.Capture "packageName" Core.Text
+    Core.:> "edits"
+    Core.:> Core.Capture "editId" Core.Text
+    Core.:> "testers"
+    Core.:> Core.Capture "track" Core.Text
+    Core.:> Core.QueryParam "$.xgafv" Xgafv
+    Core.:> Core.QueryParam "access_token" Core.Text
+    Core.:> Core.QueryParam "callback" Core.Text
+    Core.:> Core.QueryParam "uploadType" Core.Text
+    Core.:> Core.QueryParam "upload_protocol" Core.Text
+    Core.:> Core.QueryParam "alt" Core.AltJSON
+    Core.:> Core.ReqBody '[Core.JSON] Testers
+    Core.:> Core.Patch '[Core.JSON] Testers
+
+-- | Patches testers. Note: Testers resource does not support email lists.
+--
+-- /See:/ 'newAndroidPublisherEditsTestersPatch' smart constructor.
+data AndroidPublisherEditsTestersPatch = AndroidPublisherEditsTestersPatch
+  { -- | V1 error format.
+    xgafv :: (Core.Maybe Xgafv),
+    -- | OAuth access token.
+    accessToken :: (Core.Maybe Core.Text),
+    -- | JSONP
+    callback :: (Core.Maybe Core.Text),
+    -- | Identifier of the edit.
+    editId :: Core.Text,
+    -- | Package name of the app.
+    packageName :: Core.Text,
+    -- | Multipart request metadata.
+    payload :: Testers,
+    -- | The track to update.
+    track :: Core.Text,
+    -- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
+    uploadType :: (Core.Maybe Core.Text),
+    -- | Upload protocol for media (e.g. \"raw\", \"multipart\").
+    uploadProtocol :: (Core.Maybe Core.Text)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'AndroidPublisherEditsTestersPatch' with the minimum fields required to make a request.
+newAndroidPublisherEditsTestersPatch ::
+  -- |  Identifier of the edit. See 'editId'.
+  Core.Text ->
+  -- |  Package name of the app. See 'packageName'.
+  Core.Text ->
+  -- |  Multipart request metadata. See 'payload'.
+  Testers ->
+  -- |  The track to update. See 'track'.
+  Core.Text ->
+  AndroidPublisherEditsTestersPatch
+newAndroidPublisherEditsTestersPatch
+  editId
+  packageName
+  payload
+  track =
+    AndroidPublisherEditsTestersPatch
+      { xgafv = Core.Nothing,
+        accessToken = Core.Nothing,
+        callback = Core.Nothing,
+        editId = editId,
+        packageName = packageName,
+        payload = payload,
+        track = track,
+        uploadType = Core.Nothing,
+        uploadProtocol = Core.Nothing
+      }
+
+instance Core.GoogleRequest AndroidPublisherEditsTestersPatch where
+  type Rs AndroidPublisherEditsTestersPatch = Testers
+  type
+    Scopes AndroidPublisherEditsTestersPatch =
+      '[Androidpublisher'FullControl]
+  requestClient AndroidPublisherEditsTestersPatch {..} =
+    go
+      packageName
+      editId
+      track
+      xgafv
+      accessToken
+      callback
+      uploadType
+      uploadProtocol
+      (Core.Just Core.AltJSON)
+      payload
+      androidPublisherService
+    where
+      go =
+        Core.buildClient
+          ( Core.Proxy ::
+              Core.Proxy AndroidPublisherEditsTestersPatchResource
+          )
+          Core.mempty
diff --git a/gen/Gogol/AndroidPublisher/Edits/Testers/Update.hs b/gen/Gogol/AndroidPublisher/Edits/Testers/Update.hs
new file mode 100644
--- /dev/null
+++ b/gen/Gogol/AndroidPublisher/Edits/Testers/Update.hs
@@ -0,0 +1,140 @@
+{-# LANGUAGE DataKinds #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE ImportQualifiedPost #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-name-shadowing #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- |
+-- Module      : Gogol.AndroidPublisher.Edits.Testers.Update
+-- Copyright   : (c) 2015-2025 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay+gogol@gmail.com>
+--               Toni Cebrián <toni@tonicebrian.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Updates testers. Note: Testers resource does not support email lists.
+--
+-- /See:/ <https://developers.google.com/android-publisher Google Play Android Developer API Reference> for @androidpublisher.edits.testers.update@.
+module Gogol.AndroidPublisher.Edits.Testers.Update
+  ( -- * Resource
+    AndroidPublisherEditsTestersUpdateResource,
+
+    -- ** Constructing a Request
+    AndroidPublisherEditsTestersUpdate (..),
+    newAndroidPublisherEditsTestersUpdate,
+  )
+where
+
+import Gogol.AndroidPublisher.Types
+import Gogol.Prelude qualified as Core
+
+-- | A resource alias for @androidpublisher.edits.testers.update@ method which the
+-- 'AndroidPublisherEditsTestersUpdate' request conforms to.
+type AndroidPublisherEditsTestersUpdateResource =
+  "androidpublisher"
+    Core.:> "v3"
+    Core.:> "applications"
+    Core.:> Core.Capture "packageName" Core.Text
+    Core.:> "edits"
+    Core.:> Core.Capture "editId" Core.Text
+    Core.:> "testers"
+    Core.:> Core.Capture "track" Core.Text
+    Core.:> Core.QueryParam "$.xgafv" Xgafv
+    Core.:> Core.QueryParam "access_token" Core.Text
+    Core.:> Core.QueryParam "callback" Core.Text
+    Core.:> Core.QueryParam "uploadType" Core.Text
+    Core.:> Core.QueryParam "upload_protocol" Core.Text
+    Core.:> Core.QueryParam "alt" Core.AltJSON
+    Core.:> Core.ReqBody '[Core.JSON] Testers
+    Core.:> Core.Put '[Core.JSON] Testers
+
+-- | Updates testers. Note: Testers resource does not support email lists.
+--
+-- /See:/ 'newAndroidPublisherEditsTestersUpdate' smart constructor.
+data AndroidPublisherEditsTestersUpdate = AndroidPublisherEditsTestersUpdate
+  { -- | V1 error format.
+    xgafv :: (Core.Maybe Xgafv),
+    -- | OAuth access token.
+    accessToken :: (Core.Maybe Core.Text),
+    -- | JSONP
+    callback :: (Core.Maybe Core.Text),
+    -- | Identifier of the edit.
+    editId :: Core.Text,
+    -- | Package name of the app.
+    packageName :: Core.Text,
+    -- | Multipart request metadata.
+    payload :: Testers,
+    -- | The track to update.
+    track :: Core.Text,
+    -- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
+    uploadType :: (Core.Maybe Core.Text),
+    -- | Upload protocol for media (e.g. \"raw\", \"multipart\").
+    uploadProtocol :: (Core.Maybe Core.Text)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'AndroidPublisherEditsTestersUpdate' with the minimum fields required to make a request.
+newAndroidPublisherEditsTestersUpdate ::
+  -- |  Identifier of the edit. See 'editId'.
+  Core.Text ->
+  -- |  Package name of the app. See 'packageName'.
+  Core.Text ->
+  -- |  Multipart request metadata. See 'payload'.
+  Testers ->
+  -- |  The track to update. See 'track'.
+  Core.Text ->
+  AndroidPublisherEditsTestersUpdate
+newAndroidPublisherEditsTestersUpdate
+  editId
+  packageName
+  payload
+  track =
+    AndroidPublisherEditsTestersUpdate
+      { xgafv = Core.Nothing,
+        accessToken = Core.Nothing,
+        callback = Core.Nothing,
+        editId = editId,
+        packageName = packageName,
+        payload = payload,
+        track = track,
+        uploadType = Core.Nothing,
+        uploadProtocol = Core.Nothing
+      }
+
+instance Core.GoogleRequest AndroidPublisherEditsTestersUpdate where
+  type Rs AndroidPublisherEditsTestersUpdate = Testers
+  type
+    Scopes AndroidPublisherEditsTestersUpdate =
+      '[Androidpublisher'FullControl]
+  requestClient AndroidPublisherEditsTestersUpdate {..} =
+    go
+      packageName
+      editId
+      track
+      xgafv
+      accessToken
+      callback
+      uploadType
+      uploadProtocol
+      (Core.Just Core.AltJSON)
+      payload
+      androidPublisherService
+    where
+      go =
+        Core.buildClient
+          ( Core.Proxy ::
+              Core.Proxy AndroidPublisherEditsTestersUpdateResource
+          )
+          Core.mempty
diff --git a/gen/Gogol/AndroidPublisher/Edits/Tracks/Create.hs b/gen/Gogol/AndroidPublisher/Edits/Tracks/Create.hs
new file mode 100644
--- /dev/null
+++ b/gen/Gogol/AndroidPublisher/Edits/Tracks/Create.hs
@@ -0,0 +1,129 @@
+{-# LANGUAGE DataKinds #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE ImportQualifiedPost #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-name-shadowing #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- |
+-- Module      : Gogol.AndroidPublisher.Edits.Tracks.Create
+-- Copyright   : (c) 2015-2025 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay+gogol@gmail.com>
+--               Toni Cebrián <toni@tonicebrian.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Creates a new track.
+--
+-- /See:/ <https://developers.google.com/android-publisher Google Play Android Developer API Reference> for @androidpublisher.edits.tracks.create@.
+module Gogol.AndroidPublisher.Edits.Tracks.Create
+  ( -- * Resource
+    AndroidPublisherEditsTracksCreateResource,
+
+    -- ** Constructing a Request
+    AndroidPublisherEditsTracksCreate (..),
+    newAndroidPublisherEditsTracksCreate,
+  )
+where
+
+import Gogol.AndroidPublisher.Types
+import Gogol.Prelude qualified as Core
+
+-- | A resource alias for @androidpublisher.edits.tracks.create@ method which the
+-- 'AndroidPublisherEditsTracksCreate' request conforms to.
+type AndroidPublisherEditsTracksCreateResource =
+  "androidpublisher"
+    Core.:> "v3"
+    Core.:> "applications"
+    Core.:> Core.Capture "packageName" Core.Text
+    Core.:> "edits"
+    Core.:> Core.Capture "editId" Core.Text
+    Core.:> "tracks"
+    Core.:> Core.QueryParam "$.xgafv" Xgafv
+    Core.:> Core.QueryParam "access_token" Core.Text
+    Core.:> Core.QueryParam "callback" Core.Text
+    Core.:> Core.QueryParam "uploadType" Core.Text
+    Core.:> Core.QueryParam "upload_protocol" Core.Text
+    Core.:> Core.QueryParam "alt" Core.AltJSON
+    Core.:> Core.ReqBody '[Core.JSON] TrackConfig
+    Core.:> Core.Post '[Core.JSON] Track
+
+-- | Creates a new track.
+--
+-- /See:/ 'newAndroidPublisherEditsTracksCreate' smart constructor.
+data AndroidPublisherEditsTracksCreate = AndroidPublisherEditsTracksCreate
+  { -- | V1 error format.
+    xgafv :: (Core.Maybe Xgafv),
+    -- | OAuth access token.
+    accessToken :: (Core.Maybe Core.Text),
+    -- | JSONP
+    callback :: (Core.Maybe Core.Text),
+    -- | Required. Identifier of the edit.
+    editId :: Core.Text,
+    -- | Required. Package name of the app.
+    packageName :: Core.Text,
+    -- | Multipart request metadata.
+    payload :: TrackConfig,
+    -- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
+    uploadType :: (Core.Maybe Core.Text),
+    -- | Upload protocol for media (e.g. \"raw\", \"multipart\").
+    uploadProtocol :: (Core.Maybe Core.Text)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'AndroidPublisherEditsTracksCreate' with the minimum fields required to make a request.
+newAndroidPublisherEditsTracksCreate ::
+  -- |  Required. Identifier of the edit. See 'editId'.
+  Core.Text ->
+  -- |  Required. Package name of the app. See 'packageName'.
+  Core.Text ->
+  -- |  Multipart request metadata. See 'payload'.
+  TrackConfig ->
+  AndroidPublisherEditsTracksCreate
+newAndroidPublisherEditsTracksCreate editId packageName payload =
+  AndroidPublisherEditsTracksCreate
+    { xgafv = Core.Nothing,
+      accessToken = Core.Nothing,
+      callback = Core.Nothing,
+      editId = editId,
+      packageName = packageName,
+      payload = payload,
+      uploadType = Core.Nothing,
+      uploadProtocol = Core.Nothing
+    }
+
+instance Core.GoogleRequest AndroidPublisherEditsTracksCreate where
+  type Rs AndroidPublisherEditsTracksCreate = Track
+  type
+    Scopes AndroidPublisherEditsTracksCreate =
+      '[Androidpublisher'FullControl]
+  requestClient AndroidPublisherEditsTracksCreate {..} =
+    go
+      packageName
+      editId
+      xgafv
+      accessToken
+      callback
+      uploadType
+      uploadProtocol
+      (Core.Just Core.AltJSON)
+      payload
+      androidPublisherService
+    where
+      go =
+        Core.buildClient
+          ( Core.Proxy ::
+              Core.Proxy AndroidPublisherEditsTracksCreateResource
+          )
+          Core.mempty
diff --git a/gen/Gogol/AndroidPublisher/Edits/Tracks/Get.hs b/gen/Gogol/AndroidPublisher/Edits/Tracks/Get.hs
new file mode 100644
--- /dev/null
+++ b/gen/Gogol/AndroidPublisher/Edits/Tracks/Get.hs
@@ -0,0 +1,127 @@
+{-# LANGUAGE DataKinds #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE ImportQualifiedPost #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-name-shadowing #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- |
+-- Module      : Gogol.AndroidPublisher.Edits.Tracks.Get
+-- Copyright   : (c) 2015-2025 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay+gogol@gmail.com>
+--               Toni Cebrián <toni@tonicebrian.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Gets a track.
+--
+-- /See:/ <https://developers.google.com/android-publisher Google Play Android Developer API Reference> for @androidpublisher.edits.tracks.get@.
+module Gogol.AndroidPublisher.Edits.Tracks.Get
+  ( -- * Resource
+    AndroidPublisherEditsTracksGetResource,
+
+    -- ** Constructing a Request
+    AndroidPublisherEditsTracksGet (..),
+    newAndroidPublisherEditsTracksGet,
+  )
+where
+
+import Gogol.AndroidPublisher.Types
+import Gogol.Prelude qualified as Core
+
+-- | A resource alias for @androidpublisher.edits.tracks.get@ method which the
+-- 'AndroidPublisherEditsTracksGet' request conforms to.
+type AndroidPublisherEditsTracksGetResource =
+  "androidpublisher"
+    Core.:> "v3"
+    Core.:> "applications"
+    Core.:> Core.Capture "packageName" Core.Text
+    Core.:> "edits"
+    Core.:> Core.Capture "editId" Core.Text
+    Core.:> "tracks"
+    Core.:> Core.Capture "track" Core.Text
+    Core.:> Core.QueryParam "$.xgafv" Xgafv
+    Core.:> Core.QueryParam "access_token" Core.Text
+    Core.:> Core.QueryParam "callback" Core.Text
+    Core.:> Core.QueryParam "uploadType" Core.Text
+    Core.:> Core.QueryParam "upload_protocol" Core.Text
+    Core.:> Core.QueryParam "alt" Core.AltJSON
+    Core.:> Core.Get '[Core.JSON] Track
+
+-- | Gets a track.
+--
+-- /See:/ 'newAndroidPublisherEditsTracksGet' smart constructor.
+data AndroidPublisherEditsTracksGet = AndroidPublisherEditsTracksGet
+  { -- | V1 error format.
+    xgafv :: (Core.Maybe Xgafv),
+    -- | OAuth access token.
+    accessToken :: (Core.Maybe Core.Text),
+    -- | JSONP
+    callback :: (Core.Maybe Core.Text),
+    -- | Identifier of the edit.
+    editId :: Core.Text,
+    -- | Package name of the app.
+    packageName :: Core.Text,
+    -- | Identifier of the track. <https://developers.google.com/android-publisher/tracks#ff-track-name More on track name>
+    track :: Core.Text,
+    -- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
+    uploadType :: (Core.Maybe Core.Text),
+    -- | Upload protocol for media (e.g. \"raw\", \"multipart\").
+    uploadProtocol :: (Core.Maybe Core.Text)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'AndroidPublisherEditsTracksGet' with the minimum fields required to make a request.
+newAndroidPublisherEditsTracksGet ::
+  -- |  Identifier of the edit. See 'editId'.
+  Core.Text ->
+  -- |  Package name of the app. See 'packageName'.
+  Core.Text ->
+  -- |  Identifier of the track. <https://developers.google.com/android-publisher/tracks#ff-track-name More on track name> See 'track'.
+  Core.Text ->
+  AndroidPublisherEditsTracksGet
+newAndroidPublisherEditsTracksGet editId packageName track =
+  AndroidPublisherEditsTracksGet
+    { xgafv = Core.Nothing,
+      accessToken = Core.Nothing,
+      callback = Core.Nothing,
+      editId = editId,
+      packageName = packageName,
+      track = track,
+      uploadType = Core.Nothing,
+      uploadProtocol = Core.Nothing
+    }
+
+instance Core.GoogleRequest AndroidPublisherEditsTracksGet where
+  type Rs AndroidPublisherEditsTracksGet = Track
+  type
+    Scopes AndroidPublisherEditsTracksGet =
+      '[Androidpublisher'FullControl]
+  requestClient AndroidPublisherEditsTracksGet {..} =
+    go
+      packageName
+      editId
+      track
+      xgafv
+      accessToken
+      callback
+      uploadType
+      uploadProtocol
+      (Core.Just Core.AltJSON)
+      androidPublisherService
+    where
+      go =
+        Core.buildClient
+          (Core.Proxy :: Core.Proxy AndroidPublisherEditsTracksGetResource)
+          Core.mempty
diff --git a/gen/Gogol/AndroidPublisher/Edits/Tracks/List.hs b/gen/Gogol/AndroidPublisher/Edits/Tracks/List.hs
new file mode 100644
--- /dev/null
+++ b/gen/Gogol/AndroidPublisher/Edits/Tracks/List.hs
@@ -0,0 +1,120 @@
+{-# LANGUAGE DataKinds #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE ImportQualifiedPost #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-name-shadowing #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- |
+-- Module      : Gogol.AndroidPublisher.Edits.Tracks.List
+-- Copyright   : (c) 2015-2025 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay+gogol@gmail.com>
+--               Toni Cebrián <toni@tonicebrian.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Lists all tracks.
+--
+-- /See:/ <https://developers.google.com/android-publisher Google Play Android Developer API Reference> for @androidpublisher.edits.tracks.list@.
+module Gogol.AndroidPublisher.Edits.Tracks.List
+  ( -- * Resource
+    AndroidPublisherEditsTracksListResource,
+
+    -- ** Constructing a Request
+    AndroidPublisherEditsTracksList (..),
+    newAndroidPublisherEditsTracksList,
+  )
+where
+
+import Gogol.AndroidPublisher.Types
+import Gogol.Prelude qualified as Core
+
+-- | A resource alias for @androidpublisher.edits.tracks.list@ method which the
+-- 'AndroidPublisherEditsTracksList' request conforms to.
+type AndroidPublisherEditsTracksListResource =
+  "androidpublisher"
+    Core.:> "v3"
+    Core.:> "applications"
+    Core.:> Core.Capture "packageName" Core.Text
+    Core.:> "edits"
+    Core.:> Core.Capture "editId" Core.Text
+    Core.:> "tracks"
+    Core.:> Core.QueryParam "$.xgafv" Xgafv
+    Core.:> Core.QueryParam "access_token" Core.Text
+    Core.:> Core.QueryParam "callback" Core.Text
+    Core.:> Core.QueryParam "uploadType" Core.Text
+    Core.:> Core.QueryParam "upload_protocol" Core.Text
+    Core.:> Core.QueryParam "alt" Core.AltJSON
+    Core.:> Core.Get '[Core.JSON] TracksListResponse
+
+-- | Lists all tracks.
+--
+-- /See:/ 'newAndroidPublisherEditsTracksList' smart constructor.
+data AndroidPublisherEditsTracksList = AndroidPublisherEditsTracksList
+  { -- | V1 error format.
+    xgafv :: (Core.Maybe Xgafv),
+    -- | OAuth access token.
+    accessToken :: (Core.Maybe Core.Text),
+    -- | JSONP
+    callback :: (Core.Maybe Core.Text),
+    -- | Identifier of the edit.
+    editId :: Core.Text,
+    -- | Package name of the app.
+    packageName :: Core.Text,
+    -- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
+    uploadType :: (Core.Maybe Core.Text),
+    -- | Upload protocol for media (e.g. \"raw\", \"multipart\").
+    uploadProtocol :: (Core.Maybe Core.Text)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'AndroidPublisherEditsTracksList' with the minimum fields required to make a request.
+newAndroidPublisherEditsTracksList ::
+  -- |  Identifier of the edit. See 'editId'.
+  Core.Text ->
+  -- |  Package name of the app. See 'packageName'.
+  Core.Text ->
+  AndroidPublisherEditsTracksList
+newAndroidPublisherEditsTracksList editId packageName =
+  AndroidPublisherEditsTracksList
+    { xgafv = Core.Nothing,
+      accessToken = Core.Nothing,
+      callback = Core.Nothing,
+      editId = editId,
+      packageName = packageName,
+      uploadType = Core.Nothing,
+      uploadProtocol = Core.Nothing
+    }
+
+instance Core.GoogleRequest AndroidPublisherEditsTracksList where
+  type Rs AndroidPublisherEditsTracksList = TracksListResponse
+  type
+    Scopes AndroidPublisherEditsTracksList =
+      '[Androidpublisher'FullControl]
+  requestClient AndroidPublisherEditsTracksList {..} =
+    go
+      packageName
+      editId
+      xgafv
+      accessToken
+      callback
+      uploadType
+      uploadProtocol
+      (Core.Just Core.AltJSON)
+      androidPublisherService
+    where
+      go =
+        Core.buildClient
+          (Core.Proxy :: Core.Proxy AndroidPublisherEditsTracksListResource)
+          Core.mempty
diff --git a/gen/Gogol/AndroidPublisher/Edits/Tracks/Patch.hs b/gen/Gogol/AndroidPublisher/Edits/Tracks/Patch.hs
new file mode 100644
--- /dev/null
+++ b/gen/Gogol/AndroidPublisher/Edits/Tracks/Patch.hs
@@ -0,0 +1,138 @@
+{-# LANGUAGE DataKinds #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE ImportQualifiedPost #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-name-shadowing #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- |
+-- Module      : Gogol.AndroidPublisher.Edits.Tracks.Patch
+-- Copyright   : (c) 2015-2025 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay+gogol@gmail.com>
+--               Toni Cebrián <toni@tonicebrian.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Patches a track.
+--
+-- /See:/ <https://developers.google.com/android-publisher Google Play Android Developer API Reference> for @androidpublisher.edits.tracks.patch@.
+module Gogol.AndroidPublisher.Edits.Tracks.Patch
+  ( -- * Resource
+    AndroidPublisherEditsTracksPatchResource,
+
+    -- ** Constructing a Request
+    AndroidPublisherEditsTracksPatch (..),
+    newAndroidPublisherEditsTracksPatch,
+  )
+where
+
+import Gogol.AndroidPublisher.Types
+import Gogol.Prelude qualified as Core
+
+-- | A resource alias for @androidpublisher.edits.tracks.patch@ method which the
+-- 'AndroidPublisherEditsTracksPatch' request conforms to.
+type AndroidPublisherEditsTracksPatchResource =
+  "androidpublisher"
+    Core.:> "v3"
+    Core.:> "applications"
+    Core.:> Core.Capture "packageName" Core.Text
+    Core.:> "edits"
+    Core.:> Core.Capture "editId" Core.Text
+    Core.:> "tracks"
+    Core.:> Core.Capture "track" Core.Text
+    Core.:> Core.QueryParam "$.xgafv" Xgafv
+    Core.:> Core.QueryParam "access_token" Core.Text
+    Core.:> Core.QueryParam "callback" Core.Text
+    Core.:> Core.QueryParam "uploadType" Core.Text
+    Core.:> Core.QueryParam "upload_protocol" Core.Text
+    Core.:> Core.QueryParam "alt" Core.AltJSON
+    Core.:> Core.ReqBody '[Core.JSON] Track
+    Core.:> Core.Patch '[Core.JSON] Track
+
+-- | Patches a track.
+--
+-- /See:/ 'newAndroidPublisherEditsTracksPatch' smart constructor.
+data AndroidPublisherEditsTracksPatch = AndroidPublisherEditsTracksPatch
+  { -- | V1 error format.
+    xgafv :: (Core.Maybe Xgafv),
+    -- | OAuth access token.
+    accessToken :: (Core.Maybe Core.Text),
+    -- | JSONP
+    callback :: (Core.Maybe Core.Text),
+    -- | Identifier of the edit.
+    editId :: Core.Text,
+    -- | Package name of the app.
+    packageName :: Core.Text,
+    -- | Multipart request metadata.
+    payload :: Track,
+    -- | Identifier of the track. <https://developers.google.com/android-publisher/tracks#ff-track-name More on track name>
+    track :: Core.Text,
+    -- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
+    uploadType :: (Core.Maybe Core.Text),
+    -- | Upload protocol for media (e.g. \"raw\", \"multipart\").
+    uploadProtocol :: (Core.Maybe Core.Text)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'AndroidPublisherEditsTracksPatch' with the minimum fields required to make a request.
+newAndroidPublisherEditsTracksPatch ::
+  -- |  Identifier of the edit. See 'editId'.
+  Core.Text ->
+  -- |  Package name of the app. See 'packageName'.
+  Core.Text ->
+  -- |  Multipart request metadata. See 'payload'.
+  Track ->
+  -- |  Identifier of the track. <https://developers.google.com/android-publisher/tracks#ff-track-name More on track name> See 'track'.
+  Core.Text ->
+  AndroidPublisherEditsTracksPatch
+newAndroidPublisherEditsTracksPatch
+  editId
+  packageName
+  payload
+  track =
+    AndroidPublisherEditsTracksPatch
+      { xgafv = Core.Nothing,
+        accessToken = Core.Nothing,
+        callback = Core.Nothing,
+        editId = editId,
+        packageName = packageName,
+        payload = payload,
+        track = track,
+        uploadType = Core.Nothing,
+        uploadProtocol = Core.Nothing
+      }
+
+instance Core.GoogleRequest AndroidPublisherEditsTracksPatch where
+  type Rs AndroidPublisherEditsTracksPatch = Track
+  type
+    Scopes AndroidPublisherEditsTracksPatch =
+      '[Androidpublisher'FullControl]
+  requestClient AndroidPublisherEditsTracksPatch {..} =
+    go
+      packageName
+      editId
+      track
+      xgafv
+      accessToken
+      callback
+      uploadType
+      uploadProtocol
+      (Core.Just Core.AltJSON)
+      payload
+      androidPublisherService
+    where
+      go =
+        Core.buildClient
+          (Core.Proxy :: Core.Proxy AndroidPublisherEditsTracksPatchResource)
+          Core.mempty
diff --git a/gen/Gogol/AndroidPublisher/Edits/Tracks/Update.hs b/gen/Gogol/AndroidPublisher/Edits/Tracks/Update.hs
new file mode 100644
--- /dev/null
+++ b/gen/Gogol/AndroidPublisher/Edits/Tracks/Update.hs
@@ -0,0 +1,140 @@
+{-# LANGUAGE DataKinds #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE ImportQualifiedPost #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-name-shadowing #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- |
+-- Module      : Gogol.AndroidPublisher.Edits.Tracks.Update
+-- Copyright   : (c) 2015-2025 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay+gogol@gmail.com>
+--               Toni Cebrián <toni@tonicebrian.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Updates a track.
+--
+-- /See:/ <https://developers.google.com/android-publisher Google Play Android Developer API Reference> for @androidpublisher.edits.tracks.update@.
+module Gogol.AndroidPublisher.Edits.Tracks.Update
+  ( -- * Resource
+    AndroidPublisherEditsTracksUpdateResource,
+
+    -- ** Constructing a Request
+    AndroidPublisherEditsTracksUpdate (..),
+    newAndroidPublisherEditsTracksUpdate,
+  )
+where
+
+import Gogol.AndroidPublisher.Types
+import Gogol.Prelude qualified as Core
+
+-- | A resource alias for @androidpublisher.edits.tracks.update@ method which the
+-- 'AndroidPublisherEditsTracksUpdate' request conforms to.
+type AndroidPublisherEditsTracksUpdateResource =
+  "androidpublisher"
+    Core.:> "v3"
+    Core.:> "applications"
+    Core.:> Core.Capture "packageName" Core.Text
+    Core.:> "edits"
+    Core.:> Core.Capture "editId" Core.Text
+    Core.:> "tracks"
+    Core.:> Core.Capture "track" Core.Text
+    Core.:> Core.QueryParam "$.xgafv" Xgafv
+    Core.:> Core.QueryParam "access_token" Core.Text
+    Core.:> Core.QueryParam "callback" Core.Text
+    Core.:> Core.QueryParam "uploadType" Core.Text
+    Core.:> Core.QueryParam "upload_protocol" Core.Text
+    Core.:> Core.QueryParam "alt" Core.AltJSON
+    Core.:> Core.ReqBody '[Core.JSON] Track
+    Core.:> Core.Put '[Core.JSON] Track
+
+-- | Updates a track.
+--
+-- /See:/ 'newAndroidPublisherEditsTracksUpdate' smart constructor.
+data AndroidPublisherEditsTracksUpdate = AndroidPublisherEditsTracksUpdate
+  { -- | V1 error format.
+    xgafv :: (Core.Maybe Xgafv),
+    -- | OAuth access token.
+    accessToken :: (Core.Maybe Core.Text),
+    -- | JSONP
+    callback :: (Core.Maybe Core.Text),
+    -- | Identifier of the edit.
+    editId :: Core.Text,
+    -- | Package name of the app.
+    packageName :: Core.Text,
+    -- | Multipart request metadata.
+    payload :: Track,
+    -- | Identifier of the track. <https://developers.google.com/android-publisher/tracks#ff-track-name More on track name>
+    track :: Core.Text,
+    -- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
+    uploadType :: (Core.Maybe Core.Text),
+    -- | Upload protocol for media (e.g. \"raw\", \"multipart\").
+    uploadProtocol :: (Core.Maybe Core.Text)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'AndroidPublisherEditsTracksUpdate' with the minimum fields required to make a request.
+newAndroidPublisherEditsTracksUpdate ::
+  -- |  Identifier of the edit. See 'editId'.
+  Core.Text ->
+  -- |  Package name of the app. See 'packageName'.
+  Core.Text ->
+  -- |  Multipart request metadata. See 'payload'.
+  Track ->
+  -- |  Identifier of the track. <https://developers.google.com/android-publisher/tracks#ff-track-name More on track name> See 'track'.
+  Core.Text ->
+  AndroidPublisherEditsTracksUpdate
+newAndroidPublisherEditsTracksUpdate
+  editId
+  packageName
+  payload
+  track =
+    AndroidPublisherEditsTracksUpdate
+      { xgafv = Core.Nothing,
+        accessToken = Core.Nothing,
+        callback = Core.Nothing,
+        editId = editId,
+        packageName = packageName,
+        payload = payload,
+        track = track,
+        uploadType = Core.Nothing,
+        uploadProtocol = Core.Nothing
+      }
+
+instance Core.GoogleRequest AndroidPublisherEditsTracksUpdate where
+  type Rs AndroidPublisherEditsTracksUpdate = Track
+  type
+    Scopes AndroidPublisherEditsTracksUpdate =
+      '[Androidpublisher'FullControl]
+  requestClient AndroidPublisherEditsTracksUpdate {..} =
+    go
+      packageName
+      editId
+      track
+      xgafv
+      accessToken
+      callback
+      uploadType
+      uploadProtocol
+      (Core.Just Core.AltJSON)
+      payload
+      androidPublisherService
+    where
+      go =
+        Core.buildClient
+          ( Core.Proxy ::
+              Core.Proxy AndroidPublisherEditsTracksUpdateResource
+          )
+          Core.mempty
diff --git a/gen/Gogol/AndroidPublisher/Edits/Validate.hs b/gen/Gogol/AndroidPublisher/Edits/Validate.hs
new file mode 100644
--- /dev/null
+++ b/gen/Gogol/AndroidPublisher/Edits/Validate.hs
@@ -0,0 +1,119 @@
+{-# LANGUAGE DataKinds #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE ImportQualifiedPost #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-name-shadowing #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- |
+-- Module      : Gogol.AndroidPublisher.Edits.Validate
+-- Copyright   : (c) 2015-2025 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay+gogol@gmail.com>
+--               Toni Cebrián <toni@tonicebrian.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Validates an app edit.
+--
+-- /See:/ <https://developers.google.com/android-publisher Google Play Android Developer API Reference> for @androidpublisher.edits.validate@.
+module Gogol.AndroidPublisher.Edits.Validate
+  ( -- * Resource
+    AndroidPublisherEditsValidateResource,
+
+    -- ** Constructing a Request
+    AndroidPublisherEditsValidate (..),
+    newAndroidPublisherEditsValidate,
+  )
+where
+
+import Gogol.AndroidPublisher.Types
+import Gogol.Prelude qualified as Core
+
+-- | A resource alias for @androidpublisher.edits.validate@ method which the
+-- 'AndroidPublisherEditsValidate' request conforms to.
+type AndroidPublisherEditsValidateResource =
+  "androidpublisher"
+    Core.:> "v3"
+    Core.:> "applications"
+    Core.:> Core.Capture "packageName" Core.Text
+    Core.:> "edits"
+    Core.:> Core.CaptureMode "editId" "validate" Core.Text
+    Core.:> Core.QueryParam "$.xgafv" Xgafv
+    Core.:> Core.QueryParam "access_token" Core.Text
+    Core.:> Core.QueryParam "callback" Core.Text
+    Core.:> Core.QueryParam "uploadType" Core.Text
+    Core.:> Core.QueryParam "upload_protocol" Core.Text
+    Core.:> Core.QueryParam "alt" Core.AltJSON
+    Core.:> Core.Post '[Core.JSON] AppEdit
+
+-- | Validates an app edit.
+--
+-- /See:/ 'newAndroidPublisherEditsValidate' smart constructor.
+data AndroidPublisherEditsValidate = AndroidPublisherEditsValidate
+  { -- | V1 error format.
+    xgafv :: (Core.Maybe Xgafv),
+    -- | OAuth access token.
+    accessToken :: (Core.Maybe Core.Text),
+    -- | JSONP
+    callback :: (Core.Maybe Core.Text),
+    -- | Identifier of the edit.
+    editId :: Core.Text,
+    -- | Package name of the app.
+    packageName :: Core.Text,
+    -- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
+    uploadType :: (Core.Maybe Core.Text),
+    -- | Upload protocol for media (e.g. \"raw\", \"multipart\").
+    uploadProtocol :: (Core.Maybe Core.Text)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'AndroidPublisherEditsValidate' with the minimum fields required to make a request.
+newAndroidPublisherEditsValidate ::
+  -- |  Identifier of the edit. See 'editId'.
+  Core.Text ->
+  -- |  Package name of the app. See 'packageName'.
+  Core.Text ->
+  AndroidPublisherEditsValidate
+newAndroidPublisherEditsValidate editId packageName =
+  AndroidPublisherEditsValidate
+    { xgafv = Core.Nothing,
+      accessToken = Core.Nothing,
+      callback = Core.Nothing,
+      editId = editId,
+      packageName = packageName,
+      uploadType = Core.Nothing,
+      uploadProtocol = Core.Nothing
+    }
+
+instance Core.GoogleRequest AndroidPublisherEditsValidate where
+  type Rs AndroidPublisherEditsValidate = AppEdit
+  type
+    Scopes AndroidPublisherEditsValidate =
+      '[Androidpublisher'FullControl]
+  requestClient AndroidPublisherEditsValidate {..} =
+    go
+      packageName
+      editId
+      xgafv
+      accessToken
+      callback
+      uploadType
+      uploadProtocol
+      (Core.Just Core.AltJSON)
+      androidPublisherService
+    where
+      go =
+        Core.buildClient
+          (Core.Proxy :: Core.Proxy AndroidPublisherEditsValidateResource)
+          Core.mempty
diff --git a/gen/Gogol/AndroidPublisher/Externaltransactions/Createexternaltransaction.hs b/gen/Gogol/AndroidPublisher/Externaltransactions/Createexternaltransaction.hs
new file mode 100644
--- /dev/null
+++ b/gen/Gogol/AndroidPublisher/Externaltransactions/Createexternaltransaction.hs
@@ -0,0 +1,138 @@
+{-# LANGUAGE DataKinds #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE ImportQualifiedPost #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-name-shadowing #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- |
+-- Module      : Gogol.AndroidPublisher.Externaltransactions.Createexternaltransaction
+-- Copyright   : (c) 2015-2025 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay+gogol@gmail.com>
+--               Toni Cebrián <toni@tonicebrian.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Creates a new external transaction.
+--
+-- /See:/ <https://developers.google.com/android-publisher Google Play Android Developer API Reference> for @androidpublisher.externaltransactions.createexternaltransaction@.
+module Gogol.AndroidPublisher.Externaltransactions.Createexternaltransaction
+  ( -- * Resource
+    AndroidPublisherExternaltransactionsCreateexternaltransactionResource,
+
+    -- ** Constructing a Request
+    AndroidPublisherExternaltransactionsCreateexternaltransaction (..),
+    newAndroidPublisherExternaltransactionsCreateexternaltransaction,
+  )
+where
+
+import Gogol.AndroidPublisher.Types
+import Gogol.Prelude qualified as Core
+
+-- | A resource alias for @androidpublisher.externaltransactions.createexternaltransaction@ method which the
+-- 'AndroidPublisherExternaltransactionsCreateexternaltransaction' request conforms to.
+type AndroidPublisherExternaltransactionsCreateexternaltransactionResource =
+  "androidpublisher"
+    Core.:> "v3"
+    Core.:> Core.Capture "parent" Core.Text
+    Core.:> "externalTransactions"
+    Core.:> Core.QueryParam "$.xgafv" Xgafv
+    Core.:> Core.QueryParam "access_token" Core.Text
+    Core.:> Core.QueryParam "callback" Core.Text
+    Core.:> Core.QueryParam "externalTransactionId" Core.Text
+    Core.:> Core.QueryParam "uploadType" Core.Text
+    Core.:> Core.QueryParam "upload_protocol" Core.Text
+    Core.:> Core.QueryParam "alt" Core.AltJSON
+    Core.:> Core.ReqBody '[Core.JSON] ExternalTransaction
+    Core.:> Core.Post '[Core.JSON] ExternalTransaction
+
+-- | Creates a new external transaction.
+--
+-- /See:/ 'newAndroidPublisherExternaltransactionsCreateexternaltransaction' smart constructor.
+data AndroidPublisherExternaltransactionsCreateexternaltransaction = AndroidPublisherExternaltransactionsCreateexternaltransaction
+  { -- | V1 error format.
+    xgafv :: (Core.Maybe Xgafv),
+    -- | OAuth access token.
+    accessToken :: (Core.Maybe Core.Text),
+    -- | JSONP
+    callback :: (Core.Maybe Core.Text),
+    -- | Required. The id to use for the external transaction. Must be unique across all other transactions for the app. This value should be 1-63 characters and valid characters are \/a-zA-Z0-9_-\/. Do not use this field to store any Personally Identifiable Information (PII) such as emails. Attempting to store PII in this field may result in requests being blocked.
+    externalTransactionId :: (Core.Maybe Core.Text),
+    -- | Required. The parent resource where this external transaction will be created. Format: applications\/{package_name}
+    parent :: Core.Text,
+    -- | Multipart request metadata.
+    payload :: ExternalTransaction,
+    -- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
+    uploadType :: (Core.Maybe Core.Text),
+    -- | Upload protocol for media (e.g. \"raw\", \"multipart\").
+    uploadProtocol :: (Core.Maybe Core.Text)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'AndroidPublisherExternaltransactionsCreateexternaltransaction' with the minimum fields required to make a request.
+newAndroidPublisherExternaltransactionsCreateexternaltransaction ::
+  -- |  Required. The parent resource where this external transaction will be created. Format: applications\/{package_name} See 'parent'.
+  Core.Text ->
+  -- |  Multipart request metadata. See 'payload'.
+  ExternalTransaction ->
+  AndroidPublisherExternaltransactionsCreateexternaltransaction
+newAndroidPublisherExternaltransactionsCreateexternaltransaction
+  parent
+  payload =
+    AndroidPublisherExternaltransactionsCreateexternaltransaction
+      { xgafv =
+          Core.Nothing,
+        accessToken = Core.Nothing,
+        callback = Core.Nothing,
+        externalTransactionId =
+          Core.Nothing,
+        parent = parent,
+        payload = payload,
+        uploadType = Core.Nothing,
+        uploadProtocol = Core.Nothing
+      }
+
+instance
+  Core.GoogleRequest
+    AndroidPublisherExternaltransactionsCreateexternaltransaction
+  where
+  type
+    Rs
+      AndroidPublisherExternaltransactionsCreateexternaltransaction =
+      ExternalTransaction
+  type
+    Scopes
+      AndroidPublisherExternaltransactionsCreateexternaltransaction =
+      '[Androidpublisher'FullControl]
+  requestClient
+    AndroidPublisherExternaltransactionsCreateexternaltransaction {..} =
+      go
+        parent
+        xgafv
+        accessToken
+        callback
+        externalTransactionId
+        uploadType
+        uploadProtocol
+        (Core.Just Core.AltJSON)
+        payload
+        androidPublisherService
+      where
+        go =
+          Core.buildClient
+            ( Core.Proxy ::
+                Core.Proxy
+                  AndroidPublisherExternaltransactionsCreateexternaltransactionResource
+            )
+            Core.mempty
diff --git a/gen/Gogol/AndroidPublisher/Externaltransactions/Getexternaltransaction.hs b/gen/Gogol/AndroidPublisher/Externaltransactions/Getexternaltransaction.hs
new file mode 100644
--- /dev/null
+++ b/gen/Gogol/AndroidPublisher/Externaltransactions/Getexternaltransaction.hs
@@ -0,0 +1,121 @@
+{-# LANGUAGE DataKinds #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE ImportQualifiedPost #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-name-shadowing #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- |
+-- Module      : Gogol.AndroidPublisher.Externaltransactions.Getexternaltransaction
+-- Copyright   : (c) 2015-2025 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay+gogol@gmail.com>
+--               Toni Cebrián <toni@tonicebrian.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Gets an existing external transaction.
+--
+-- /See:/ <https://developers.google.com/android-publisher Google Play Android Developer API Reference> for @androidpublisher.externaltransactions.getexternaltransaction@.
+module Gogol.AndroidPublisher.Externaltransactions.Getexternaltransaction
+  ( -- * Resource
+    AndroidPublisherExternaltransactionsGetexternaltransactionResource,
+
+    -- ** Constructing a Request
+    AndroidPublisherExternaltransactionsGetexternaltransaction (..),
+    newAndroidPublisherExternaltransactionsGetexternaltransaction,
+  )
+where
+
+import Gogol.AndroidPublisher.Types
+import Gogol.Prelude qualified as Core
+
+-- | A resource alias for @androidpublisher.externaltransactions.getexternaltransaction@ method which the
+-- 'AndroidPublisherExternaltransactionsGetexternaltransaction' request conforms to.
+type AndroidPublisherExternaltransactionsGetexternaltransactionResource =
+  "androidpublisher"
+    Core.:> "v3"
+    Core.:> Core.Capture "name" Core.Text
+    Core.:> Core.QueryParam "$.xgafv" Xgafv
+    Core.:> Core.QueryParam "access_token" Core.Text
+    Core.:> Core.QueryParam "callback" Core.Text
+    Core.:> Core.QueryParam "uploadType" Core.Text
+    Core.:> Core.QueryParam "upload_protocol" Core.Text
+    Core.:> Core.QueryParam "alt" Core.AltJSON
+    Core.:> Core.Get '[Core.JSON] ExternalTransaction
+
+-- | Gets an existing external transaction.
+--
+-- /See:/ 'newAndroidPublisherExternaltransactionsGetexternaltransaction' smart constructor.
+data AndroidPublisherExternaltransactionsGetexternaltransaction = AndroidPublisherExternaltransactionsGetexternaltransaction
+  { -- | V1 error format.
+    xgafv :: (Core.Maybe Xgafv),
+    -- | OAuth access token.
+    accessToken :: (Core.Maybe Core.Text),
+    -- | JSONP
+    callback :: (Core.Maybe Core.Text),
+    -- | Required. The name of the external transaction to retrieve. Format: applications\/{package/name}\/externalTransactions\/{external/transaction}
+    name :: Core.Text,
+    -- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
+    uploadType :: (Core.Maybe Core.Text),
+    -- | Upload protocol for media (e.g. \"raw\", \"multipart\").
+    uploadProtocol :: (Core.Maybe Core.Text)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'AndroidPublisherExternaltransactionsGetexternaltransaction' with the minimum fields required to make a request.
+newAndroidPublisherExternaltransactionsGetexternaltransaction ::
+  -- |  Required. The name of the external transaction to retrieve. Format: applications\/{package/name}\/externalTransactions\/{external/transaction} See 'name'.
+  Core.Text ->
+  AndroidPublisherExternaltransactionsGetexternaltransaction
+newAndroidPublisherExternaltransactionsGetexternaltransaction name =
+  AndroidPublisherExternaltransactionsGetexternaltransaction
+    { xgafv =
+        Core.Nothing,
+      accessToken = Core.Nothing,
+      callback = Core.Nothing,
+      name = name,
+      uploadType = Core.Nothing,
+      uploadProtocol = Core.Nothing
+    }
+
+instance
+  Core.GoogleRequest
+    AndroidPublisherExternaltransactionsGetexternaltransaction
+  where
+  type
+    Rs AndroidPublisherExternaltransactionsGetexternaltransaction =
+      ExternalTransaction
+  type
+    Scopes
+      AndroidPublisherExternaltransactionsGetexternaltransaction =
+      '[Androidpublisher'FullControl]
+  requestClient
+    AndroidPublisherExternaltransactionsGetexternaltransaction {..} =
+      go
+        name
+        xgafv
+        accessToken
+        callback
+        uploadType
+        uploadProtocol
+        (Core.Just Core.AltJSON)
+        androidPublisherService
+      where
+        go =
+          Core.buildClient
+            ( Core.Proxy ::
+                Core.Proxy
+                  AndroidPublisherExternaltransactionsGetexternaltransactionResource
+            )
+            Core.mempty
diff --git a/gen/Gogol/AndroidPublisher/Externaltransactions/Refundexternaltransaction.hs b/gen/Gogol/AndroidPublisher/Externaltransactions/Refundexternaltransaction.hs
new file mode 100644
--- /dev/null
+++ b/gen/Gogol/AndroidPublisher/Externaltransactions/Refundexternaltransaction.hs
@@ -0,0 +1,131 @@
+{-# LANGUAGE DataKinds #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE ImportQualifiedPost #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-name-shadowing #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- |
+-- Module      : Gogol.AndroidPublisher.Externaltransactions.Refundexternaltransaction
+-- Copyright   : (c) 2015-2025 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay+gogol@gmail.com>
+--               Toni Cebrián <toni@tonicebrian.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Refunds or partially refunds an existing external transaction.
+--
+-- /See:/ <https://developers.google.com/android-publisher Google Play Android Developer API Reference> for @androidpublisher.externaltransactions.refundexternaltransaction@.
+module Gogol.AndroidPublisher.Externaltransactions.Refundexternaltransaction
+  ( -- * Resource
+    AndroidPublisherExternaltransactionsRefundexternaltransactionResource,
+
+    -- ** Constructing a Request
+    AndroidPublisherExternaltransactionsRefundexternaltransaction (..),
+    newAndroidPublisherExternaltransactionsRefundexternaltransaction,
+  )
+where
+
+import Gogol.AndroidPublisher.Types
+import Gogol.Prelude qualified as Core
+
+-- | A resource alias for @androidpublisher.externaltransactions.refundexternaltransaction@ method which the
+-- 'AndroidPublisherExternaltransactionsRefundexternaltransaction' request conforms to.
+type AndroidPublisherExternaltransactionsRefundexternaltransactionResource =
+  "androidpublisher"
+    Core.:> "v3"
+    Core.:> Core.CaptureMode "name" "refund" Core.Text
+    Core.:> Core.QueryParam "$.xgafv" Xgafv
+    Core.:> Core.QueryParam "access_token" Core.Text
+    Core.:> Core.QueryParam "callback" Core.Text
+    Core.:> Core.QueryParam "uploadType" Core.Text
+    Core.:> Core.QueryParam "upload_protocol" Core.Text
+    Core.:> Core.QueryParam "alt" Core.AltJSON
+    Core.:> Core.ReqBody '[Core.JSON] RefundExternalTransactionRequest
+    Core.:> Core.Post '[Core.JSON] ExternalTransaction
+
+-- | Refunds or partially refunds an existing external transaction.
+--
+-- /See:/ 'newAndroidPublisherExternaltransactionsRefundexternaltransaction' smart constructor.
+data AndroidPublisherExternaltransactionsRefundexternaltransaction = AndroidPublisherExternaltransactionsRefundexternaltransaction
+  { -- | V1 error format.
+    xgafv :: (Core.Maybe Xgafv),
+    -- | OAuth access token.
+    accessToken :: (Core.Maybe Core.Text),
+    -- | JSONP
+    callback :: (Core.Maybe Core.Text),
+    -- | Required. The name of the external transaction that will be refunded. Format: applications\/{package/name}\/externalTransactions\/{external/transaction}
+    name :: Core.Text,
+    -- | Multipart request metadata.
+    payload :: RefundExternalTransactionRequest,
+    -- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
+    uploadType :: (Core.Maybe Core.Text),
+    -- | Upload protocol for media (e.g. \"raw\", \"multipart\").
+    uploadProtocol :: (Core.Maybe Core.Text)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'AndroidPublisherExternaltransactionsRefundexternaltransaction' with the minimum fields required to make a request.
+newAndroidPublisherExternaltransactionsRefundexternaltransaction ::
+  -- |  Required. The name of the external transaction that will be refunded. Format: applications\/{package/name}\/externalTransactions\/{external/transaction} See 'name'.
+  Core.Text ->
+  -- |  Multipart request metadata. See 'payload'.
+  RefundExternalTransactionRequest ->
+  AndroidPublisherExternaltransactionsRefundexternaltransaction
+newAndroidPublisherExternaltransactionsRefundexternaltransaction
+  name
+  payload =
+    AndroidPublisherExternaltransactionsRefundexternaltransaction
+      { xgafv =
+          Core.Nothing,
+        accessToken = Core.Nothing,
+        callback = Core.Nothing,
+        name = name,
+        payload = payload,
+        uploadType = Core.Nothing,
+        uploadProtocol = Core.Nothing
+      }
+
+instance
+  Core.GoogleRequest
+    AndroidPublisherExternaltransactionsRefundexternaltransaction
+  where
+  type
+    Rs
+      AndroidPublisherExternaltransactionsRefundexternaltransaction =
+      ExternalTransaction
+  type
+    Scopes
+      AndroidPublisherExternaltransactionsRefundexternaltransaction =
+      '[Androidpublisher'FullControl]
+  requestClient
+    AndroidPublisherExternaltransactionsRefundexternaltransaction {..} =
+      go
+        name
+        xgafv
+        accessToken
+        callback
+        uploadType
+        uploadProtocol
+        (Core.Just Core.AltJSON)
+        payload
+        androidPublisherService
+      where
+        go =
+          Core.buildClient
+            ( Core.Proxy ::
+                Core.Proxy
+                  AndroidPublisherExternaltransactionsRefundexternaltransactionResource
+            )
+            Core.mempty
diff --git a/gen/Gogol/AndroidPublisher/Generatedapks/Download.hs b/gen/Gogol/AndroidPublisher/Generatedapks/Download.hs
new file mode 100644
--- /dev/null
+++ b/gen/Gogol/AndroidPublisher/Generatedapks/Download.hs
@@ -0,0 +1,179 @@
+{-# LANGUAGE DataKinds #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE ImportQualifiedPost #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-name-shadowing #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- |
+-- Module      : Gogol.AndroidPublisher.Generatedapks.Download
+-- Copyright   : (c) 2015-2025 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay+gogol@gmail.com>
+--               Toni Cebrián <toni@tonicebrian.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Downloads a single signed APK generated from an app bundle.
+--
+-- /See:/ <https://developers.google.com/android-publisher Google Play Android Developer API Reference> for @androidpublisher.generatedapks.download@.
+module Gogol.AndroidPublisher.Generatedapks.Download
+  ( -- * Resource
+    AndroidPublisherGeneratedapksDownloadResource,
+
+    -- ** Constructing a Request
+    AndroidPublisherGeneratedapksDownload (..),
+    newAndroidPublisherGeneratedapksDownload,
+  )
+where
+
+import Gogol.AndroidPublisher.Types
+import Gogol.Prelude qualified as Core
+
+-- | A resource alias for @androidpublisher.generatedapks.download@ method which the
+-- 'AndroidPublisherGeneratedapksDownload' request conforms to.
+type AndroidPublisherGeneratedapksDownloadResource =
+  "androidpublisher"
+    Core.:> "v3"
+    Core.:> "applications"
+    Core.:> Core.Capture "packageName" Core.Text
+    Core.:> "generatedApks"
+    Core.:> Core.Capture "versionCode" Core.Int32
+    Core.:> "downloads"
+    Core.:> Core.CaptureMode "downloadId" "download" Core.Text
+    Core.:> Core.QueryParam "$.xgafv" Xgafv
+    Core.:> Core.QueryParam "access_token" Core.Text
+    Core.:> Core.QueryParam "callback" Core.Text
+    Core.:> Core.QueryParam "uploadType" Core.Text
+    Core.:> Core.QueryParam "upload_protocol" Core.Text
+    Core.:> Core.QueryParam "alt" Core.AltJSON
+    Core.:> Core.Get '[Core.JSON] ()
+    Core.:<|> "androidpublisher"
+    Core.:> "v3"
+    Core.:> "applications"
+    Core.:> Core.Capture "packageName" Core.Text
+    Core.:> "generatedApks"
+    Core.:> Core.Capture "versionCode" Core.Int32
+    Core.:> "downloads"
+    Core.:> Core.CaptureMode "downloadId" "download" Core.Text
+    Core.:> Core.QueryParam "$.xgafv" Xgafv
+    Core.:> Core.QueryParam "access_token" Core.Text
+    Core.:> Core.QueryParam "callback" Core.Text
+    Core.:> Core.QueryParam "uploadType" Core.Text
+    Core.:> Core.QueryParam "upload_protocol" Core.Text
+    Core.:> Core.QueryParam "alt" Core.AltMedia
+    Core.:> Core.Get '[Core.OctetStream] Core.Stream
+
+-- | Downloads a single signed APK generated from an app bundle.
+--
+-- /See:/ 'newAndroidPublisherGeneratedapksDownload' smart constructor.
+data AndroidPublisherGeneratedapksDownload = AndroidPublisherGeneratedapksDownload
+  { -- | V1 error format.
+    xgafv :: (Core.Maybe Xgafv),
+    -- | OAuth access token.
+    accessToken :: (Core.Maybe Core.Text),
+    -- | JSONP
+    callback :: (Core.Maybe Core.Text),
+    -- | Download ID, which uniquely identifies the APK to download. Can be obtained from the response of @generatedapks.list@ method.
+    downloadId :: Core.Text,
+    -- | Package name of the app.
+    packageName :: Core.Text,
+    -- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
+    uploadType :: (Core.Maybe Core.Text),
+    -- | Upload protocol for media (e.g. \"raw\", \"multipart\").
+    uploadProtocol :: (Core.Maybe Core.Text),
+    -- | Version code of the app bundle.
+    versionCode :: Core.Int32
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'AndroidPublisherGeneratedapksDownload' with the minimum fields required to make a request.
+newAndroidPublisherGeneratedapksDownload ::
+  -- |  Download ID, which uniquely identifies the APK to download. Can be obtained from the response of @generatedapks.list@ method. See 'downloadId'.
+  Core.Text ->
+  -- |  Package name of the app. See 'packageName'.
+  Core.Text ->
+  -- |  Version code of the app bundle. See 'versionCode'.
+  Core.Int32 ->
+  AndroidPublisherGeneratedapksDownload
+newAndroidPublisherGeneratedapksDownload
+  downloadId
+  packageName
+  versionCode =
+    AndroidPublisherGeneratedapksDownload
+      { xgafv = Core.Nothing,
+        accessToken = Core.Nothing,
+        callback = Core.Nothing,
+        downloadId = downloadId,
+        packageName = packageName,
+        uploadType = Core.Nothing,
+        uploadProtocol = Core.Nothing,
+        versionCode = versionCode
+      }
+
+instance Core.GoogleRequest AndroidPublisherGeneratedapksDownload where
+  type Rs AndroidPublisherGeneratedapksDownload = ()
+  type
+    Scopes AndroidPublisherGeneratedapksDownload =
+      '[Androidpublisher'FullControl]
+  requestClient AndroidPublisherGeneratedapksDownload {..} =
+    go
+      packageName
+      versionCode
+      downloadId
+      xgafv
+      accessToken
+      callback
+      uploadType
+      uploadProtocol
+      (Core.Just Core.AltJSON)
+      androidPublisherService
+    where
+      go Core.:<|> _ =
+        Core.buildClient
+          ( Core.Proxy ::
+              Core.Proxy AndroidPublisherGeneratedapksDownloadResource
+          )
+          Core.mempty
+
+instance
+  Core.GoogleRequest
+    (Core.MediaDownload AndroidPublisherGeneratedapksDownload)
+  where
+  type
+    Rs (Core.MediaDownload AndroidPublisherGeneratedapksDownload) =
+      Core.Stream
+  type
+    Scopes
+      (Core.MediaDownload AndroidPublisherGeneratedapksDownload) =
+      Core.Scopes AndroidPublisherGeneratedapksDownload
+  requestClient
+    (Core.MediaDownload AndroidPublisherGeneratedapksDownload {..}) =
+      go
+        packageName
+        versionCode
+        downloadId
+        xgafv
+        accessToken
+        callback
+        uploadType
+        uploadProtocol
+        (Core.Just Core.AltMedia)
+        androidPublisherService
+      where
+        _ Core.:<|> go =
+          Core.buildClient
+            ( Core.Proxy ::
+                Core.Proxy AndroidPublisherGeneratedapksDownloadResource
+            )
+            Core.mempty
diff --git a/gen/Gogol/AndroidPublisher/Generatedapks/List.hs b/gen/Gogol/AndroidPublisher/Generatedapks/List.hs
new file mode 100644
--- /dev/null
+++ b/gen/Gogol/AndroidPublisher/Generatedapks/List.hs
@@ -0,0 +1,123 @@
+{-# LANGUAGE DataKinds #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE ImportQualifiedPost #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-name-shadowing #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- |
+-- Module      : Gogol.AndroidPublisher.Generatedapks.List
+-- Copyright   : (c) 2015-2025 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay+gogol@gmail.com>
+--               Toni Cebrián <toni@tonicebrian.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Returns download metadata for all APKs that were generated from a given app bundle.
+--
+-- /See:/ <https://developers.google.com/android-publisher Google Play Android Developer API Reference> for @androidpublisher.generatedapks.list@.
+module Gogol.AndroidPublisher.Generatedapks.List
+  ( -- * Resource
+    AndroidPublisherGeneratedapksListResource,
+
+    -- ** Constructing a Request
+    AndroidPublisherGeneratedapksList (..),
+    newAndroidPublisherGeneratedapksList,
+  )
+where
+
+import Gogol.AndroidPublisher.Types
+import Gogol.Prelude qualified as Core
+
+-- | A resource alias for @androidpublisher.generatedapks.list@ method which the
+-- 'AndroidPublisherGeneratedapksList' request conforms to.
+type AndroidPublisherGeneratedapksListResource =
+  "androidpublisher"
+    Core.:> "v3"
+    Core.:> "applications"
+    Core.:> Core.Capture "packageName" Core.Text
+    Core.:> "generatedApks"
+    Core.:> Core.Capture "versionCode" Core.Int32
+    Core.:> Core.QueryParam "$.xgafv" Xgafv
+    Core.:> Core.QueryParam "access_token" Core.Text
+    Core.:> Core.QueryParam "callback" Core.Text
+    Core.:> Core.QueryParam "uploadType" Core.Text
+    Core.:> Core.QueryParam "upload_protocol" Core.Text
+    Core.:> Core.QueryParam "alt" Core.AltJSON
+    Core.:> Core.Get '[Core.JSON] GeneratedApksListResponse
+
+-- | Returns download metadata for all APKs that were generated from a given app bundle.
+--
+-- /See:/ 'newAndroidPublisherGeneratedapksList' smart constructor.
+data AndroidPublisherGeneratedapksList = AndroidPublisherGeneratedapksList
+  { -- | V1 error format.
+    xgafv :: (Core.Maybe Xgafv),
+    -- | OAuth access token.
+    accessToken :: (Core.Maybe Core.Text),
+    -- | JSONP
+    callback :: (Core.Maybe Core.Text),
+    -- | Package name of the app.
+    packageName :: Core.Text,
+    -- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
+    uploadType :: (Core.Maybe Core.Text),
+    -- | Upload protocol for media (e.g. \"raw\", \"multipart\").
+    uploadProtocol :: (Core.Maybe Core.Text),
+    -- | Version code of the app bundle.
+    versionCode :: Core.Int32
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'AndroidPublisherGeneratedapksList' with the minimum fields required to make a request.
+newAndroidPublisherGeneratedapksList ::
+  -- |  Package name of the app. See 'packageName'.
+  Core.Text ->
+  -- |  Version code of the app bundle. See 'versionCode'.
+  Core.Int32 ->
+  AndroidPublisherGeneratedapksList
+newAndroidPublisherGeneratedapksList packageName versionCode =
+  AndroidPublisherGeneratedapksList
+    { xgafv = Core.Nothing,
+      accessToken = Core.Nothing,
+      callback = Core.Nothing,
+      packageName = packageName,
+      uploadType = Core.Nothing,
+      uploadProtocol = Core.Nothing,
+      versionCode = versionCode
+    }
+
+instance Core.GoogleRequest AndroidPublisherGeneratedapksList where
+  type
+    Rs AndroidPublisherGeneratedapksList =
+      GeneratedApksListResponse
+  type
+    Scopes AndroidPublisherGeneratedapksList =
+      '[Androidpublisher'FullControl]
+  requestClient AndroidPublisherGeneratedapksList {..} =
+    go
+      packageName
+      versionCode
+      xgafv
+      accessToken
+      callback
+      uploadType
+      uploadProtocol
+      (Core.Just Core.AltJSON)
+      androidPublisherService
+    where
+      go =
+        Core.buildClient
+          ( Core.Proxy ::
+              Core.Proxy AndroidPublisherGeneratedapksListResource
+          )
+          Core.mempty
diff --git a/gen/Gogol/AndroidPublisher/Grants/Create.hs b/gen/Gogol/AndroidPublisher/Grants/Create.hs
new file mode 100644
--- /dev/null
+++ b/gen/Gogol/AndroidPublisher/Grants/Create.hs
@@ -0,0 +1,118 @@
+{-# LANGUAGE DataKinds #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE ImportQualifiedPost #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-name-shadowing #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- |
+-- Module      : Gogol.AndroidPublisher.Grants.Create
+-- Copyright   : (c) 2015-2025 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay+gogol@gmail.com>
+--               Toni Cebrián <toni@tonicebrian.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Grant access for a user to the given package.
+--
+-- /See:/ <https://developers.google.com/android-publisher Google Play Android Developer API Reference> for @androidpublisher.grants.create@.
+module Gogol.AndroidPublisher.Grants.Create
+  ( -- * Resource
+    AndroidPublisherGrantsCreateResource,
+
+    -- ** Constructing a Request
+    AndroidPublisherGrantsCreate (..),
+    newAndroidPublisherGrantsCreate,
+  )
+where
+
+import Gogol.AndroidPublisher.Types
+import Gogol.Prelude qualified as Core
+
+-- | A resource alias for @androidpublisher.grants.create@ method which the
+-- 'AndroidPublisherGrantsCreate' request conforms to.
+type AndroidPublisherGrantsCreateResource =
+  "androidpublisher"
+    Core.:> "v3"
+    Core.:> Core.Capture "parent" Core.Text
+    Core.:> "grants"
+    Core.:> Core.QueryParam "$.xgafv" Xgafv
+    Core.:> Core.QueryParam "access_token" Core.Text
+    Core.:> Core.QueryParam "callback" Core.Text
+    Core.:> Core.QueryParam "uploadType" Core.Text
+    Core.:> Core.QueryParam "upload_protocol" Core.Text
+    Core.:> Core.QueryParam "alt" Core.AltJSON
+    Core.:> Core.ReqBody '[Core.JSON] Grant
+    Core.:> Core.Post '[Core.JSON] Grant
+
+-- | Grant access for a user to the given package.
+--
+-- /See:/ 'newAndroidPublisherGrantsCreate' smart constructor.
+data AndroidPublisherGrantsCreate = AndroidPublisherGrantsCreate
+  { -- | V1 error format.
+    xgafv :: (Core.Maybe Xgafv),
+    -- | OAuth access token.
+    accessToken :: (Core.Maybe Core.Text),
+    -- | JSONP
+    callback :: (Core.Maybe Core.Text),
+    -- | Required. The user which needs permission. Format: developers\/{developer}\/users\/{user}
+    parent :: Core.Text,
+    -- | Multipart request metadata.
+    payload :: Grant,
+    -- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
+    uploadType :: (Core.Maybe Core.Text),
+    -- | Upload protocol for media (e.g. \"raw\", \"multipart\").
+    uploadProtocol :: (Core.Maybe Core.Text)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'AndroidPublisherGrantsCreate' with the minimum fields required to make a request.
+newAndroidPublisherGrantsCreate ::
+  -- |  Required. The user which needs permission. Format: developers\/{developer}\/users\/{user} See 'parent'.
+  Core.Text ->
+  -- |  Multipart request metadata. See 'payload'.
+  Grant ->
+  AndroidPublisherGrantsCreate
+newAndroidPublisherGrantsCreate parent payload =
+  AndroidPublisherGrantsCreate
+    { xgafv = Core.Nothing,
+      accessToken = Core.Nothing,
+      callback = Core.Nothing,
+      parent = parent,
+      payload = payload,
+      uploadType = Core.Nothing,
+      uploadProtocol = Core.Nothing
+    }
+
+instance Core.GoogleRequest AndroidPublisherGrantsCreate where
+  type Rs AndroidPublisherGrantsCreate = Grant
+  type
+    Scopes AndroidPublisherGrantsCreate =
+      '[Androidpublisher'FullControl]
+  requestClient AndroidPublisherGrantsCreate {..} =
+    go
+      parent
+      xgafv
+      accessToken
+      callback
+      uploadType
+      uploadProtocol
+      (Core.Just Core.AltJSON)
+      payload
+      androidPublisherService
+    where
+      go =
+        Core.buildClient
+          (Core.Proxy :: Core.Proxy AndroidPublisherGrantsCreateResource)
+          Core.mempty
diff --git a/gen/Gogol/AndroidPublisher/Grants/Delete.hs b/gen/Gogol/AndroidPublisher/Grants/Delete.hs
new file mode 100644
--- /dev/null
+++ b/gen/Gogol/AndroidPublisher/Grants/Delete.hs
@@ -0,0 +1,110 @@
+{-# LANGUAGE DataKinds #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE ImportQualifiedPost #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-name-shadowing #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- |
+-- Module      : Gogol.AndroidPublisher.Grants.Delete
+-- Copyright   : (c) 2015-2025 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay+gogol@gmail.com>
+--               Toni Cebrián <toni@tonicebrian.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Removes all access for the user to the given package or developer account.
+--
+-- /See:/ <https://developers.google.com/android-publisher Google Play Android Developer API Reference> for @androidpublisher.grants.delete@.
+module Gogol.AndroidPublisher.Grants.Delete
+  ( -- * Resource
+    AndroidPublisherGrantsDeleteResource,
+
+    -- ** Constructing a Request
+    AndroidPublisherGrantsDelete (..),
+    newAndroidPublisherGrantsDelete,
+  )
+where
+
+import Gogol.AndroidPublisher.Types
+import Gogol.Prelude qualified as Core
+
+-- | A resource alias for @androidpublisher.grants.delete@ method which the
+-- 'AndroidPublisherGrantsDelete' request conforms to.
+type AndroidPublisherGrantsDeleteResource =
+  "androidpublisher"
+    Core.:> "v3"
+    Core.:> Core.Capture "name" Core.Text
+    Core.:> Core.QueryParam "$.xgafv" Xgafv
+    Core.:> Core.QueryParam "access_token" Core.Text
+    Core.:> Core.QueryParam "callback" Core.Text
+    Core.:> Core.QueryParam "uploadType" Core.Text
+    Core.:> Core.QueryParam "upload_protocol" Core.Text
+    Core.:> Core.QueryParam "alt" Core.AltJSON
+    Core.:> Core.Delete '[Core.JSON] ()
+
+-- | Removes all access for the user to the given package or developer account.
+--
+-- /See:/ 'newAndroidPublisherGrantsDelete' smart constructor.
+data AndroidPublisherGrantsDelete = AndroidPublisherGrantsDelete
+  { -- | V1 error format.
+    xgafv :: (Core.Maybe Xgafv),
+    -- | OAuth access token.
+    accessToken :: (Core.Maybe Core.Text),
+    -- | JSONP
+    callback :: (Core.Maybe Core.Text),
+    -- | Required. The name of the grant to delete. Format: developers\/{developer}\/users\/{email}\/grants\/{package_name}
+    name :: Core.Text,
+    -- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
+    uploadType :: (Core.Maybe Core.Text),
+    -- | Upload protocol for media (e.g. \"raw\", \"multipart\").
+    uploadProtocol :: (Core.Maybe Core.Text)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'AndroidPublisherGrantsDelete' with the minimum fields required to make a request.
+newAndroidPublisherGrantsDelete ::
+  -- |  Required. The name of the grant to delete. Format: developers\/{developer}\/users\/{email}\/grants\/{package_name} See 'name'.
+  Core.Text ->
+  AndroidPublisherGrantsDelete
+newAndroidPublisherGrantsDelete name =
+  AndroidPublisherGrantsDelete
+    { xgafv = Core.Nothing,
+      accessToken = Core.Nothing,
+      callback = Core.Nothing,
+      name = name,
+      uploadType = Core.Nothing,
+      uploadProtocol = Core.Nothing
+    }
+
+instance Core.GoogleRequest AndroidPublisherGrantsDelete where
+  type Rs AndroidPublisherGrantsDelete = ()
+  type
+    Scopes AndroidPublisherGrantsDelete =
+      '[Androidpublisher'FullControl]
+  requestClient AndroidPublisherGrantsDelete {..} =
+    go
+      name
+      xgafv
+      accessToken
+      callback
+      uploadType
+      uploadProtocol
+      (Core.Just Core.AltJSON)
+      androidPublisherService
+    where
+      go =
+        Core.buildClient
+          (Core.Proxy :: Core.Proxy AndroidPublisherGrantsDeleteResource)
+          Core.mempty
diff --git a/gen/Gogol/AndroidPublisher/Grants/Patch.hs b/gen/Gogol/AndroidPublisher/Grants/Patch.hs
new file mode 100644
--- /dev/null
+++ b/gen/Gogol/AndroidPublisher/Grants/Patch.hs
@@ -0,0 +1,122 @@
+{-# LANGUAGE DataKinds #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE ImportQualifiedPost #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-name-shadowing #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- |
+-- Module      : Gogol.AndroidPublisher.Grants.Patch
+-- Copyright   : (c) 2015-2025 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay+gogol@gmail.com>
+--               Toni Cebrián <toni@tonicebrian.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Updates access for the user to the given package.
+--
+-- /See:/ <https://developers.google.com/android-publisher Google Play Android Developer API Reference> for @androidpublisher.grants.patch@.
+module Gogol.AndroidPublisher.Grants.Patch
+  ( -- * Resource
+    AndroidPublisherGrantsPatchResource,
+
+    -- ** Constructing a Request
+    AndroidPublisherGrantsPatch (..),
+    newAndroidPublisherGrantsPatch,
+  )
+where
+
+import Gogol.AndroidPublisher.Types
+import Gogol.Prelude qualified as Core
+
+-- | A resource alias for @androidpublisher.grants.patch@ method which the
+-- 'AndroidPublisherGrantsPatch' request conforms to.
+type AndroidPublisherGrantsPatchResource =
+  "androidpublisher"
+    Core.:> "v3"
+    Core.:> Core.Capture "name" Core.Text
+    Core.:> Core.QueryParam "$.xgafv" Xgafv
+    Core.:> Core.QueryParam "access_token" Core.Text
+    Core.:> Core.QueryParam "callback" Core.Text
+    Core.:> Core.QueryParam "updateMask" Core.FieldMask
+    Core.:> Core.QueryParam "uploadType" Core.Text
+    Core.:> Core.QueryParam "upload_protocol" Core.Text
+    Core.:> Core.QueryParam "alt" Core.AltJSON
+    Core.:> Core.ReqBody '[Core.JSON] Grant
+    Core.:> Core.Patch '[Core.JSON] Grant
+
+-- | Updates access for the user to the given package.
+--
+-- /See:/ 'newAndroidPublisherGrantsPatch' smart constructor.
+data AndroidPublisherGrantsPatch = AndroidPublisherGrantsPatch
+  { -- | V1 error format.
+    xgafv :: (Core.Maybe Xgafv),
+    -- | OAuth access token.
+    accessToken :: (Core.Maybe Core.Text),
+    -- | JSONP
+    callback :: (Core.Maybe Core.Text),
+    -- | Required. Resource name for this grant, following the pattern \"developers\/{developer}\/users\/{email}\/grants\/{package_name}\". If this grant is for a draft app, the app ID will be used in this resource name instead of the package name.
+    name :: Core.Text,
+    -- | Multipart request metadata.
+    payload :: Grant,
+    -- | Optional. The list of fields to be updated.
+    updateMask :: (Core.Maybe Core.FieldMask),
+    -- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
+    uploadType :: (Core.Maybe Core.Text),
+    -- | Upload protocol for media (e.g. \"raw\", \"multipart\").
+    uploadProtocol :: (Core.Maybe Core.Text)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'AndroidPublisherGrantsPatch' with the minimum fields required to make a request.
+newAndroidPublisherGrantsPatch ::
+  -- |  Required. Resource name for this grant, following the pattern \"developers\/{developer}\/users\/{email}\/grants\/{package_name}\". If this grant is for a draft app, the app ID will be used in this resource name instead of the package name. See 'name'.
+  Core.Text ->
+  -- |  Multipart request metadata. See 'payload'.
+  Grant ->
+  AndroidPublisherGrantsPatch
+newAndroidPublisherGrantsPatch name payload =
+  AndroidPublisherGrantsPatch
+    { xgafv = Core.Nothing,
+      accessToken = Core.Nothing,
+      callback = Core.Nothing,
+      name = name,
+      payload = payload,
+      updateMask = Core.Nothing,
+      uploadType = Core.Nothing,
+      uploadProtocol = Core.Nothing
+    }
+
+instance Core.GoogleRequest AndroidPublisherGrantsPatch where
+  type Rs AndroidPublisherGrantsPatch = Grant
+  type
+    Scopes AndroidPublisherGrantsPatch =
+      '[Androidpublisher'FullControl]
+  requestClient AndroidPublisherGrantsPatch {..} =
+    go
+      name
+      xgafv
+      accessToken
+      callback
+      updateMask
+      uploadType
+      uploadProtocol
+      (Core.Just Core.AltJSON)
+      payload
+      androidPublisherService
+    where
+      go =
+        Core.buildClient
+          (Core.Proxy :: Core.Proxy AndroidPublisherGrantsPatchResource)
+          Core.mempty
diff --git a/gen/Gogol/AndroidPublisher/Inappproducts/BatchDelete.hs b/gen/Gogol/AndroidPublisher/Inappproducts/BatchDelete.hs
new file mode 100644
--- /dev/null
+++ b/gen/Gogol/AndroidPublisher/Inappproducts/BatchDelete.hs
@@ -0,0 +1,124 @@
+{-# LANGUAGE DataKinds #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE ImportQualifiedPost #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-name-shadowing #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- |
+-- Module      : Gogol.AndroidPublisher.Inappproducts.BatchDelete
+-- Copyright   : (c) 2015-2025 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay+gogol@gmail.com>
+--               Toni Cebrián <toni@tonicebrian.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Deletes in-app products (managed products or subscriptions). Set the latencyTolerance field on nested requests to PRODUCT/UPDATE/LATENCY/TOLERANCE/LATENCY_TOLERANT to achieve maximum update throughput. This method should not be used to delete subscriptions. See <https://android-developers.googleblog.com/2023/06/changes-to-google-play-developer-api-june-2023.html this article> for more information.
+--
+-- /See:/ <https://developers.google.com/android-publisher Google Play Android Developer API Reference> for @androidpublisher.inappproducts.batchDelete@.
+module Gogol.AndroidPublisher.Inappproducts.BatchDelete
+  ( -- * Resource
+    AndroidPublisherInappproductsBatchDeleteResource,
+
+    -- ** Constructing a Request
+    AndroidPublisherInappproductsBatchDelete (..),
+    newAndroidPublisherInappproductsBatchDelete,
+  )
+where
+
+import Gogol.AndroidPublisher.Types
+import Gogol.Prelude qualified as Core
+
+-- | A resource alias for @androidpublisher.inappproducts.batchDelete@ method which the
+-- 'AndroidPublisherInappproductsBatchDelete' request conforms to.
+type AndroidPublisherInappproductsBatchDeleteResource =
+  "androidpublisher"
+    Core.:> "v3"
+    Core.:> "applications"
+    Core.:> Core.Capture "packageName" Core.Text
+    Core.:> "inappproducts:batchDelete"
+    Core.:> Core.QueryParam "$.xgafv" Xgafv
+    Core.:> Core.QueryParam "access_token" Core.Text
+    Core.:> Core.QueryParam "callback" Core.Text
+    Core.:> Core.QueryParam "uploadType" Core.Text
+    Core.:> Core.QueryParam "upload_protocol" Core.Text
+    Core.:> Core.QueryParam "alt" Core.AltJSON
+    Core.:> Core.ReqBody '[Core.JSON] InappproductsBatchDeleteRequest
+    Core.:> Core.Post '[Core.JSON] ()
+
+-- | Deletes in-app products (managed products or subscriptions). Set the latencyTolerance field on nested requests to PRODUCT/UPDATE/LATENCY/TOLERANCE/LATENCY_TOLERANT to achieve maximum update throughput. This method should not be used to delete subscriptions. See <https://android-developers.googleblog.com/2023/06/changes-to-google-play-developer-api-june-2023.html this article> for more information.
+--
+-- /See:/ 'newAndroidPublisherInappproductsBatchDelete' smart constructor.
+data AndroidPublisherInappproductsBatchDelete = AndroidPublisherInappproductsBatchDelete
+  { -- | V1 error format.
+    xgafv :: (Core.Maybe Xgafv),
+    -- | OAuth access token.
+    accessToken :: (Core.Maybe Core.Text),
+    -- | JSONP
+    callback :: (Core.Maybe Core.Text),
+    -- | Package name of the app.
+    packageName :: Core.Text,
+    -- | Multipart request metadata.
+    payload :: InappproductsBatchDeleteRequest,
+    -- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
+    uploadType :: (Core.Maybe Core.Text),
+    -- | Upload protocol for media (e.g. \"raw\", \"multipart\").
+    uploadProtocol :: (Core.Maybe Core.Text)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'AndroidPublisherInappproductsBatchDelete' with the minimum fields required to make a request.
+newAndroidPublisherInappproductsBatchDelete ::
+  -- |  Package name of the app. See 'packageName'.
+  Core.Text ->
+  -- |  Multipart request metadata. See 'payload'.
+  InappproductsBatchDeleteRequest ->
+  AndroidPublisherInappproductsBatchDelete
+newAndroidPublisherInappproductsBatchDelete packageName payload =
+  AndroidPublisherInappproductsBatchDelete
+    { xgafv = Core.Nothing,
+      accessToken = Core.Nothing,
+      callback = Core.Nothing,
+      packageName = packageName,
+      payload = payload,
+      uploadType = Core.Nothing,
+      uploadProtocol = Core.Nothing
+    }
+
+instance
+  Core.GoogleRequest
+    AndroidPublisherInappproductsBatchDelete
+  where
+  type Rs AndroidPublisherInappproductsBatchDelete = ()
+  type
+    Scopes AndroidPublisherInappproductsBatchDelete =
+      '[Androidpublisher'FullControl]
+  requestClient AndroidPublisherInappproductsBatchDelete {..} =
+    go
+      packageName
+      xgafv
+      accessToken
+      callback
+      uploadType
+      uploadProtocol
+      (Core.Just Core.AltJSON)
+      payload
+      androidPublisherService
+    where
+      go =
+        Core.buildClient
+          ( Core.Proxy ::
+              Core.Proxy AndroidPublisherInappproductsBatchDeleteResource
+          )
+          Core.mempty
diff --git a/gen/Gogol/AndroidPublisher/Inappproducts/BatchGet.hs b/gen/Gogol/AndroidPublisher/Inappproducts/BatchGet.hs
new file mode 100644
--- /dev/null
+++ b/gen/Gogol/AndroidPublisher/Inappproducts/BatchGet.hs
@@ -0,0 +1,121 @@
+{-# LANGUAGE DataKinds #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE ImportQualifiedPost #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-name-shadowing #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- |
+-- Module      : Gogol.AndroidPublisher.Inappproducts.BatchGet
+-- Copyright   : (c) 2015-2025 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay+gogol@gmail.com>
+--               Toni Cebrián <toni@tonicebrian.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Reads multiple in-app products, which can be managed products or subscriptions. This method should not be used to retrieve subscriptions. See <https://android-developers.googleblog.com/2023/06/changes-to-google-play-developer-api-june-2023.html this article> for more information.
+--
+-- /See:/ <https://developers.google.com/android-publisher Google Play Android Developer API Reference> for @androidpublisher.inappproducts.batchGet@.
+module Gogol.AndroidPublisher.Inappproducts.BatchGet
+  ( -- * Resource
+    AndroidPublisherInappproductsBatchGetResource,
+
+    -- ** Constructing a Request
+    AndroidPublisherInappproductsBatchGet (..),
+    newAndroidPublisherInappproductsBatchGet,
+  )
+where
+
+import Gogol.AndroidPublisher.Types
+import Gogol.Prelude qualified as Core
+
+-- | A resource alias for @androidpublisher.inappproducts.batchGet@ method which the
+-- 'AndroidPublisherInappproductsBatchGet' request conforms to.
+type AndroidPublisherInappproductsBatchGetResource =
+  "androidpublisher"
+    Core.:> "v3"
+    Core.:> "applications"
+    Core.:> Core.Capture "packageName" Core.Text
+    Core.:> "inappproducts:batchGet"
+    Core.:> Core.QueryParam "$.xgafv" Xgafv
+    Core.:> Core.QueryParam "access_token" Core.Text
+    Core.:> Core.QueryParam "callback" Core.Text
+    Core.:> Core.QueryParams "sku" Core.Text
+    Core.:> Core.QueryParam "uploadType" Core.Text
+    Core.:> Core.QueryParam "upload_protocol" Core.Text
+    Core.:> Core.QueryParam "alt" Core.AltJSON
+    Core.:> Core.Get '[Core.JSON] InappproductsBatchGetResponse
+
+-- | Reads multiple in-app products, which can be managed products or subscriptions. This method should not be used to retrieve subscriptions. See <https://android-developers.googleblog.com/2023/06/changes-to-google-play-developer-api-june-2023.html this article> for more information.
+--
+-- /See:/ 'newAndroidPublisherInappproductsBatchGet' smart constructor.
+data AndroidPublisherInappproductsBatchGet = AndroidPublisherInappproductsBatchGet
+  { -- | V1 error format.
+    xgafv :: (Core.Maybe Xgafv),
+    -- | OAuth access token.
+    accessToken :: (Core.Maybe Core.Text),
+    -- | JSONP
+    callback :: (Core.Maybe Core.Text),
+    -- | Package name of the app.
+    packageName :: Core.Text,
+    -- | Unique identifier for the in-app products.
+    sku :: (Core.Maybe [Core.Text]),
+    -- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
+    uploadType :: (Core.Maybe Core.Text),
+    -- | Upload protocol for media (e.g. \"raw\", \"multipart\").
+    uploadProtocol :: (Core.Maybe Core.Text)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'AndroidPublisherInappproductsBatchGet' with the minimum fields required to make a request.
+newAndroidPublisherInappproductsBatchGet ::
+  -- |  Package name of the app. See 'packageName'.
+  Core.Text ->
+  AndroidPublisherInappproductsBatchGet
+newAndroidPublisherInappproductsBatchGet packageName =
+  AndroidPublisherInappproductsBatchGet
+    { xgafv = Core.Nothing,
+      accessToken = Core.Nothing,
+      callback = Core.Nothing,
+      packageName = packageName,
+      sku = Core.Nothing,
+      uploadType = Core.Nothing,
+      uploadProtocol = Core.Nothing
+    }
+
+instance Core.GoogleRequest AndroidPublisherInappproductsBatchGet where
+  type
+    Rs AndroidPublisherInappproductsBatchGet =
+      InappproductsBatchGetResponse
+  type
+    Scopes AndroidPublisherInappproductsBatchGet =
+      '[Androidpublisher'FullControl]
+  requestClient AndroidPublisherInappproductsBatchGet {..} =
+    go
+      packageName
+      xgafv
+      accessToken
+      callback
+      (sku Core.^. Core._Default)
+      uploadType
+      uploadProtocol
+      (Core.Just Core.AltJSON)
+      androidPublisherService
+    where
+      go =
+        Core.buildClient
+          ( Core.Proxy ::
+              Core.Proxy AndroidPublisherInappproductsBatchGetResource
+          )
+          Core.mempty
diff --git a/gen/Gogol/AndroidPublisher/Inappproducts/BatchUpdate.hs b/gen/Gogol/AndroidPublisher/Inappproducts/BatchUpdate.hs
new file mode 100644
--- /dev/null
+++ b/gen/Gogol/AndroidPublisher/Inappproducts/BatchUpdate.hs
@@ -0,0 +1,126 @@
+{-# LANGUAGE DataKinds #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE ImportQualifiedPost #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-name-shadowing #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- |
+-- Module      : Gogol.AndroidPublisher.Inappproducts.BatchUpdate
+-- Copyright   : (c) 2015-2025 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay+gogol@gmail.com>
+--               Toni Cebrián <toni@tonicebrian.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Updates or inserts one or more in-app products (managed products or subscriptions). Set the latencyTolerance field on nested requests to PRODUCT/UPDATE/LATENCY/TOLERANCE/LATENCY_TOLERANT to achieve maximum update throughput. This method should no longer be used to update subscriptions. See <https://android-developers.googleblog.com/2023/06/changes-to-google-play-developer-api-june-2023.html this article> for more information.
+--
+-- /See:/ <https://developers.google.com/android-publisher Google Play Android Developer API Reference> for @androidpublisher.inappproducts.batchUpdate@.
+module Gogol.AndroidPublisher.Inappproducts.BatchUpdate
+  ( -- * Resource
+    AndroidPublisherInappproductsBatchUpdateResource,
+
+    -- ** Constructing a Request
+    AndroidPublisherInappproductsBatchUpdate (..),
+    newAndroidPublisherInappproductsBatchUpdate,
+  )
+where
+
+import Gogol.AndroidPublisher.Types
+import Gogol.Prelude qualified as Core
+
+-- | A resource alias for @androidpublisher.inappproducts.batchUpdate@ method which the
+-- 'AndroidPublisherInappproductsBatchUpdate' request conforms to.
+type AndroidPublisherInappproductsBatchUpdateResource =
+  "androidpublisher"
+    Core.:> "v3"
+    Core.:> "applications"
+    Core.:> Core.Capture "packageName" Core.Text
+    Core.:> "inappproducts:batchUpdate"
+    Core.:> Core.QueryParam "$.xgafv" Xgafv
+    Core.:> Core.QueryParam "access_token" Core.Text
+    Core.:> Core.QueryParam "callback" Core.Text
+    Core.:> Core.QueryParam "uploadType" Core.Text
+    Core.:> Core.QueryParam "upload_protocol" Core.Text
+    Core.:> Core.QueryParam "alt" Core.AltJSON
+    Core.:> Core.ReqBody '[Core.JSON] InappproductsBatchUpdateRequest
+    Core.:> Core.Post '[Core.JSON] InappproductsBatchUpdateResponse
+
+-- | Updates or inserts one or more in-app products (managed products or subscriptions). Set the latencyTolerance field on nested requests to PRODUCT/UPDATE/LATENCY/TOLERANCE/LATENCY_TOLERANT to achieve maximum update throughput. This method should no longer be used to update subscriptions. See <https://android-developers.googleblog.com/2023/06/changes-to-google-play-developer-api-june-2023.html this article> for more information.
+--
+-- /See:/ 'newAndroidPublisherInappproductsBatchUpdate' smart constructor.
+data AndroidPublisherInappproductsBatchUpdate = AndroidPublisherInappproductsBatchUpdate
+  { -- | V1 error format.
+    xgafv :: (Core.Maybe Xgafv),
+    -- | OAuth access token.
+    accessToken :: (Core.Maybe Core.Text),
+    -- | JSONP
+    callback :: (Core.Maybe Core.Text),
+    -- | Package name of the app.
+    packageName :: Core.Text,
+    -- | Multipart request metadata.
+    payload :: InappproductsBatchUpdateRequest,
+    -- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
+    uploadType :: (Core.Maybe Core.Text),
+    -- | Upload protocol for media (e.g. \"raw\", \"multipart\").
+    uploadProtocol :: (Core.Maybe Core.Text)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'AndroidPublisherInappproductsBatchUpdate' with the minimum fields required to make a request.
+newAndroidPublisherInappproductsBatchUpdate ::
+  -- |  Package name of the app. See 'packageName'.
+  Core.Text ->
+  -- |  Multipart request metadata. See 'payload'.
+  InappproductsBatchUpdateRequest ->
+  AndroidPublisherInappproductsBatchUpdate
+newAndroidPublisherInappproductsBatchUpdate packageName payload =
+  AndroidPublisherInappproductsBatchUpdate
+    { xgafv = Core.Nothing,
+      accessToken = Core.Nothing,
+      callback = Core.Nothing,
+      packageName = packageName,
+      payload = payload,
+      uploadType = Core.Nothing,
+      uploadProtocol = Core.Nothing
+    }
+
+instance
+  Core.GoogleRequest
+    AndroidPublisherInappproductsBatchUpdate
+  where
+  type
+    Rs AndroidPublisherInappproductsBatchUpdate =
+      InappproductsBatchUpdateResponse
+  type
+    Scopes AndroidPublisherInappproductsBatchUpdate =
+      '[Androidpublisher'FullControl]
+  requestClient AndroidPublisherInappproductsBatchUpdate {..} =
+    go
+      packageName
+      xgafv
+      accessToken
+      callback
+      uploadType
+      uploadProtocol
+      (Core.Just Core.AltJSON)
+      payload
+      androidPublisherService
+    where
+      go =
+        Core.buildClient
+          ( Core.Proxy ::
+              Core.Proxy AndroidPublisherInappproductsBatchUpdateResource
+          )
+          Core.mempty
diff --git a/gen/Gogol/AndroidPublisher/Inappproducts/Delete.hs b/gen/Gogol/AndroidPublisher/Inappproducts/Delete.hs
new file mode 100644
--- /dev/null
+++ b/gen/Gogol/AndroidPublisher/Inappproducts/Delete.hs
@@ -0,0 +1,128 @@
+{-# LANGUAGE DataKinds #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE ImportQualifiedPost #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-name-shadowing #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- |
+-- Module      : Gogol.AndroidPublisher.Inappproducts.Delete
+-- Copyright   : (c) 2015-2025 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay+gogol@gmail.com>
+--               Toni Cebrián <toni@tonicebrian.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Deletes an in-app product (a managed product or a subscription). This method should no longer be used to delete subscriptions. See <https://android-developers.googleblog.com/2023/06/changes-to-google-play-developer-api-june-2023.html this article> for more information.
+--
+-- /See:/ <https://developers.google.com/android-publisher Google Play Android Developer API Reference> for @androidpublisher.inappproducts.delete@.
+module Gogol.AndroidPublisher.Inappproducts.Delete
+  ( -- * Resource
+    AndroidPublisherInappproductsDeleteResource,
+
+    -- ** Constructing a Request
+    AndroidPublisherInappproductsDelete (..),
+    newAndroidPublisherInappproductsDelete,
+  )
+where
+
+import Gogol.AndroidPublisher.Types
+import Gogol.Prelude qualified as Core
+
+-- | A resource alias for @androidpublisher.inappproducts.delete@ method which the
+-- 'AndroidPublisherInappproductsDelete' request conforms to.
+type AndroidPublisherInappproductsDeleteResource =
+  "androidpublisher"
+    Core.:> "v3"
+    Core.:> "applications"
+    Core.:> Core.Capture "packageName" Core.Text
+    Core.:> "inappproducts"
+    Core.:> Core.Capture "sku" Core.Text
+    Core.:> Core.QueryParam "$.xgafv" Xgafv
+    Core.:> Core.QueryParam "access_token" Core.Text
+    Core.:> Core.QueryParam "callback" Core.Text
+    Core.:> Core.QueryParam
+              "latencyTolerance"
+              InappproductsDeleteLatencyTolerance
+    Core.:> Core.QueryParam "uploadType" Core.Text
+    Core.:> Core.QueryParam "upload_protocol" Core.Text
+    Core.:> Core.QueryParam "alt" Core.AltJSON
+    Core.:> Core.Delete '[Core.JSON] ()
+
+-- | Deletes an in-app product (a managed product or a subscription). This method should no longer be used to delete subscriptions. See <https://android-developers.googleblog.com/2023/06/changes-to-google-play-developer-api-june-2023.html this article> for more information.
+--
+-- /See:/ 'newAndroidPublisherInappproductsDelete' smart constructor.
+data AndroidPublisherInappproductsDelete = AndroidPublisherInappproductsDelete
+  { -- | V1 error format.
+    xgafv :: (Core.Maybe Xgafv),
+    -- | OAuth access token.
+    accessToken :: (Core.Maybe Core.Text),
+    -- | JSONP
+    callback :: (Core.Maybe Core.Text),
+    -- | Optional. The latency tolerance for the propagation of this product update. Defaults to latency-sensitive.
+    latencyTolerance :: (Core.Maybe InappproductsDeleteLatencyTolerance),
+    -- | Package name of the app.
+    packageName :: Core.Text,
+    -- | Unique identifier for the in-app product.
+    sku :: Core.Text,
+    -- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
+    uploadType :: (Core.Maybe Core.Text),
+    -- | Upload protocol for media (e.g. \"raw\", \"multipart\").
+    uploadProtocol :: (Core.Maybe Core.Text)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'AndroidPublisherInappproductsDelete' with the minimum fields required to make a request.
+newAndroidPublisherInappproductsDelete ::
+  -- |  Package name of the app. See 'packageName'.
+  Core.Text ->
+  -- |  Unique identifier for the in-app product. See 'sku'.
+  Core.Text ->
+  AndroidPublisherInappproductsDelete
+newAndroidPublisherInappproductsDelete packageName sku =
+  AndroidPublisherInappproductsDelete
+    { xgafv = Core.Nothing,
+      accessToken = Core.Nothing,
+      callback = Core.Nothing,
+      latencyTolerance = Core.Nothing,
+      packageName = packageName,
+      sku = sku,
+      uploadType = Core.Nothing,
+      uploadProtocol = Core.Nothing
+    }
+
+instance Core.GoogleRequest AndroidPublisherInappproductsDelete where
+  type Rs AndroidPublisherInappproductsDelete = ()
+  type
+    Scopes AndroidPublisherInappproductsDelete =
+      '[Androidpublisher'FullControl]
+  requestClient AndroidPublisherInappproductsDelete {..} =
+    go
+      packageName
+      sku
+      xgafv
+      accessToken
+      callback
+      latencyTolerance
+      uploadType
+      uploadProtocol
+      (Core.Just Core.AltJSON)
+      androidPublisherService
+    where
+      go =
+        Core.buildClient
+          ( Core.Proxy ::
+              Core.Proxy AndroidPublisherInappproductsDeleteResource
+          )
+          Core.mempty
diff --git a/gen/Gogol/AndroidPublisher/Inappproducts/Get.hs b/gen/Gogol/AndroidPublisher/Inappproducts/Get.hs
new file mode 100644
--- /dev/null
+++ b/gen/Gogol/AndroidPublisher/Inappproducts/Get.hs
@@ -0,0 +1,119 @@
+{-# LANGUAGE DataKinds #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE ImportQualifiedPost #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-name-shadowing #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- |
+-- Module      : Gogol.AndroidPublisher.Inappproducts.Get
+-- Copyright   : (c) 2015-2025 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay+gogol@gmail.com>
+--               Toni Cebrián <toni@tonicebrian.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Gets an in-app product, which can be a managed product or a subscription. This method should no longer be used to retrieve subscriptions. See <https://android-developers.googleblog.com/2023/06/changes-to-google-play-developer-api-june-2023.html this article> for more information.
+--
+-- /See:/ <https://developers.google.com/android-publisher Google Play Android Developer API Reference> for @androidpublisher.inappproducts.get@.
+module Gogol.AndroidPublisher.Inappproducts.Get
+  ( -- * Resource
+    AndroidPublisherInappproductsGetResource,
+
+    -- ** Constructing a Request
+    AndroidPublisherInappproductsGet (..),
+    newAndroidPublisherInappproductsGet,
+  )
+where
+
+import Gogol.AndroidPublisher.Types
+import Gogol.Prelude qualified as Core
+
+-- | A resource alias for @androidpublisher.inappproducts.get@ method which the
+-- 'AndroidPublisherInappproductsGet' request conforms to.
+type AndroidPublisherInappproductsGetResource =
+  "androidpublisher"
+    Core.:> "v3"
+    Core.:> "applications"
+    Core.:> Core.Capture "packageName" Core.Text
+    Core.:> "inappproducts"
+    Core.:> Core.Capture "sku" Core.Text
+    Core.:> Core.QueryParam "$.xgafv" Xgafv
+    Core.:> Core.QueryParam "access_token" Core.Text
+    Core.:> Core.QueryParam "callback" Core.Text
+    Core.:> Core.QueryParam "uploadType" Core.Text
+    Core.:> Core.QueryParam "upload_protocol" Core.Text
+    Core.:> Core.QueryParam "alt" Core.AltJSON
+    Core.:> Core.Get '[Core.JSON] InAppProduct
+
+-- | Gets an in-app product, which can be a managed product or a subscription. This method should no longer be used to retrieve subscriptions. See <https://android-developers.googleblog.com/2023/06/changes-to-google-play-developer-api-june-2023.html this article> for more information.
+--
+-- /See:/ 'newAndroidPublisherInappproductsGet' smart constructor.
+data AndroidPublisherInappproductsGet = AndroidPublisherInappproductsGet
+  { -- | V1 error format.
+    xgafv :: (Core.Maybe Xgafv),
+    -- | OAuth access token.
+    accessToken :: (Core.Maybe Core.Text),
+    -- | JSONP
+    callback :: (Core.Maybe Core.Text),
+    -- | Package name of the app.
+    packageName :: Core.Text,
+    -- | Unique identifier for the in-app product.
+    sku :: Core.Text,
+    -- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
+    uploadType :: (Core.Maybe Core.Text),
+    -- | Upload protocol for media (e.g. \"raw\", \"multipart\").
+    uploadProtocol :: (Core.Maybe Core.Text)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'AndroidPublisherInappproductsGet' with the minimum fields required to make a request.
+newAndroidPublisherInappproductsGet ::
+  -- |  Package name of the app. See 'packageName'.
+  Core.Text ->
+  -- |  Unique identifier for the in-app product. See 'sku'.
+  Core.Text ->
+  AndroidPublisherInappproductsGet
+newAndroidPublisherInappproductsGet packageName sku =
+  AndroidPublisherInappproductsGet
+    { xgafv = Core.Nothing,
+      accessToken = Core.Nothing,
+      callback = Core.Nothing,
+      packageName = packageName,
+      sku = sku,
+      uploadType = Core.Nothing,
+      uploadProtocol = Core.Nothing
+    }
+
+instance Core.GoogleRequest AndroidPublisherInappproductsGet where
+  type Rs AndroidPublisherInappproductsGet = InAppProduct
+  type
+    Scopes AndroidPublisherInappproductsGet =
+      '[Androidpublisher'FullControl]
+  requestClient AndroidPublisherInappproductsGet {..} =
+    go
+      packageName
+      sku
+      xgafv
+      accessToken
+      callback
+      uploadType
+      uploadProtocol
+      (Core.Just Core.AltJSON)
+      androidPublisherService
+    where
+      go =
+        Core.buildClient
+          (Core.Proxy :: Core.Proxy AndroidPublisherInappproductsGetResource)
+          Core.mempty
diff --git a/gen/Gogol/AndroidPublisher/Inappproducts/Insert.hs b/gen/Gogol/AndroidPublisher/Inappproducts/Insert.hs
new file mode 100644
--- /dev/null
+++ b/gen/Gogol/AndroidPublisher/Inappproducts/Insert.hs
@@ -0,0 +1,126 @@
+{-# LANGUAGE DataKinds #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE ImportQualifiedPost #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-name-shadowing #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- |
+-- Module      : Gogol.AndroidPublisher.Inappproducts.Insert
+-- Copyright   : (c) 2015-2025 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay+gogol@gmail.com>
+--               Toni Cebrián <toni@tonicebrian.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Creates an in-app product (a managed product or a subscription). This method should no longer be used to create subscriptions. See <https://android-developers.googleblog.com/2023/06/changes-to-google-play-developer-api-june-2023.html this article> for more information.
+--
+-- /See:/ <https://developers.google.com/android-publisher Google Play Android Developer API Reference> for @androidpublisher.inappproducts.insert@.
+module Gogol.AndroidPublisher.Inappproducts.Insert
+  ( -- * Resource
+    AndroidPublisherInappproductsInsertResource,
+
+    -- ** Constructing a Request
+    AndroidPublisherInappproductsInsert (..),
+    newAndroidPublisherInappproductsInsert,
+  )
+where
+
+import Gogol.AndroidPublisher.Types
+import Gogol.Prelude qualified as Core
+
+-- | A resource alias for @androidpublisher.inappproducts.insert@ method which the
+-- 'AndroidPublisherInappproductsInsert' request conforms to.
+type AndroidPublisherInappproductsInsertResource =
+  "androidpublisher"
+    Core.:> "v3"
+    Core.:> "applications"
+    Core.:> Core.Capture "packageName" Core.Text
+    Core.:> "inappproducts"
+    Core.:> Core.QueryParam "$.xgafv" Xgafv
+    Core.:> Core.QueryParam "access_token" Core.Text
+    Core.:> Core.QueryParam "autoConvertMissingPrices" Core.Bool
+    Core.:> Core.QueryParam "callback" Core.Text
+    Core.:> Core.QueryParam "uploadType" Core.Text
+    Core.:> Core.QueryParam "upload_protocol" Core.Text
+    Core.:> Core.QueryParam "alt" Core.AltJSON
+    Core.:> Core.ReqBody '[Core.JSON] InAppProduct
+    Core.:> Core.Post '[Core.JSON] InAppProduct
+
+-- | Creates an in-app product (a managed product or a subscription). This method should no longer be used to create subscriptions. See <https://android-developers.googleblog.com/2023/06/changes-to-google-play-developer-api-june-2023.html this article> for more information.
+--
+-- /See:/ 'newAndroidPublisherInappproductsInsert' smart constructor.
+data AndroidPublisherInappproductsInsert = AndroidPublisherInappproductsInsert
+  { -- | V1 error format.
+    xgafv :: (Core.Maybe Xgafv),
+    -- | OAuth access token.
+    accessToken :: (Core.Maybe Core.Text),
+    -- | If true the prices for all regions targeted by the parent app that don\'t have a price specified for this in-app product will be auto converted to the target currency based on the default price. Defaults to false.
+    autoConvertMissingPrices :: (Core.Maybe Core.Bool),
+    -- | JSONP
+    callback :: (Core.Maybe Core.Text),
+    -- | Package name of the app.
+    packageName :: Core.Text,
+    -- | Multipart request metadata.
+    payload :: InAppProduct,
+    -- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
+    uploadType :: (Core.Maybe Core.Text),
+    -- | Upload protocol for media (e.g. \"raw\", \"multipart\").
+    uploadProtocol :: (Core.Maybe Core.Text)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'AndroidPublisherInappproductsInsert' with the minimum fields required to make a request.
+newAndroidPublisherInappproductsInsert ::
+  -- |  Package name of the app. See 'packageName'.
+  Core.Text ->
+  -- |  Multipart request metadata. See 'payload'.
+  InAppProduct ->
+  AndroidPublisherInappproductsInsert
+newAndroidPublisherInappproductsInsert packageName payload =
+  AndroidPublisherInappproductsInsert
+    { xgafv = Core.Nothing,
+      accessToken = Core.Nothing,
+      autoConvertMissingPrices = Core.Nothing,
+      callback = Core.Nothing,
+      packageName = packageName,
+      payload = payload,
+      uploadType = Core.Nothing,
+      uploadProtocol = Core.Nothing
+    }
+
+instance Core.GoogleRequest AndroidPublisherInappproductsInsert where
+  type Rs AndroidPublisherInappproductsInsert = InAppProduct
+  type
+    Scopes AndroidPublisherInappproductsInsert =
+      '[Androidpublisher'FullControl]
+  requestClient AndroidPublisherInappproductsInsert {..} =
+    go
+      packageName
+      xgafv
+      accessToken
+      autoConvertMissingPrices
+      callback
+      uploadType
+      uploadProtocol
+      (Core.Just Core.AltJSON)
+      payload
+      androidPublisherService
+    where
+      go =
+        Core.buildClient
+          ( Core.Proxy ::
+              Core.Proxy AndroidPublisherInappproductsInsertResource
+          )
+          Core.mempty
diff --git a/gen/Gogol/AndroidPublisher/Inappproducts/List.hs b/gen/Gogol/AndroidPublisher/Inappproducts/List.hs
new file mode 100644
--- /dev/null
+++ b/gen/Gogol/AndroidPublisher/Inappproducts/List.hs
@@ -0,0 +1,131 @@
+{-# LANGUAGE DataKinds #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE ImportQualifiedPost #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-name-shadowing #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- |
+-- Module      : Gogol.AndroidPublisher.Inappproducts.List
+-- Copyright   : (c) 2015-2025 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay+gogol@gmail.com>
+--               Toni Cebrián <toni@tonicebrian.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Lists all in-app products - both managed products and subscriptions. If an app has a large number of in-app products, the response may be paginated. In this case the response field @tokenPagination.nextPageToken@ will be set and the caller should provide its value as a @token@ request parameter to retrieve the next page. This method should no longer be used to retrieve subscriptions. See <https://android-developers.googleblog.com/2023/06/changes-to-google-play-developer-api-june-2023.html this article> for more information.
+--
+-- /See:/ <https://developers.google.com/android-publisher Google Play Android Developer API Reference> for @androidpublisher.inappproducts.list@.
+module Gogol.AndroidPublisher.Inappproducts.List
+  ( -- * Resource
+    AndroidPublisherInappproductsListResource,
+
+    -- ** Constructing a Request
+    AndroidPublisherInappproductsList (..),
+    newAndroidPublisherInappproductsList,
+  )
+where
+
+import Gogol.AndroidPublisher.Types
+import Gogol.Prelude qualified as Core
+
+-- | A resource alias for @androidpublisher.inappproducts.list@ method which the
+-- 'AndroidPublisherInappproductsList' request conforms to.
+type AndroidPublisherInappproductsListResource =
+  "androidpublisher"
+    Core.:> "v3"
+    Core.:> "applications"
+    Core.:> Core.Capture "packageName" Core.Text
+    Core.:> "inappproducts"
+    Core.:> Core.QueryParam "$.xgafv" Xgafv
+    Core.:> Core.QueryParam "access_token" Core.Text
+    Core.:> Core.QueryParam "callback" Core.Text
+    Core.:> Core.QueryParam "maxResults" Core.Word32
+    Core.:> Core.QueryParam "startIndex" Core.Word32
+    Core.:> Core.QueryParam "token" Core.Text
+    Core.:> Core.QueryParam "uploadType" Core.Text
+    Core.:> Core.QueryParam "upload_protocol" Core.Text
+    Core.:> Core.QueryParam "alt" Core.AltJSON
+    Core.:> Core.Get '[Core.JSON] InappproductsListResponse
+
+-- | Lists all in-app products - both managed products and subscriptions. If an app has a large number of in-app products, the response may be paginated. In this case the response field @tokenPagination.nextPageToken@ will be set and the caller should provide its value as a @token@ request parameter to retrieve the next page. This method should no longer be used to retrieve subscriptions. See <https://android-developers.googleblog.com/2023/06/changes-to-google-play-developer-api-june-2023.html this article> for more information.
+--
+-- /See:/ 'newAndroidPublisherInappproductsList' smart constructor.
+data AndroidPublisherInappproductsList = AndroidPublisherInappproductsList
+  { -- | V1 error format.
+    xgafv :: (Core.Maybe Xgafv),
+    -- | OAuth access token.
+    accessToken :: (Core.Maybe Core.Text),
+    -- | JSONP
+    callback :: (Core.Maybe Core.Text),
+    -- | Deprecated and ignored. The page size is determined by the server.
+    maxResults :: (Core.Maybe Core.Word32),
+    -- | Package name of the app.
+    packageName :: Core.Text,
+    -- | Deprecated and ignored. Set the @token@ parameter to retrieve the next page.
+    startIndex :: (Core.Maybe Core.Word32),
+    -- | Pagination token. If empty, list starts at the first product.
+    token :: (Core.Maybe Core.Text),
+    -- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
+    uploadType :: (Core.Maybe Core.Text),
+    -- | Upload protocol for media (e.g. \"raw\", \"multipart\").
+    uploadProtocol :: (Core.Maybe Core.Text)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'AndroidPublisherInappproductsList' with the minimum fields required to make a request.
+newAndroidPublisherInappproductsList ::
+  -- |  Package name of the app. See 'packageName'.
+  Core.Text ->
+  AndroidPublisherInappproductsList
+newAndroidPublisherInappproductsList packageName =
+  AndroidPublisherInappproductsList
+    { xgafv = Core.Nothing,
+      accessToken = Core.Nothing,
+      callback = Core.Nothing,
+      maxResults = Core.Nothing,
+      packageName = packageName,
+      startIndex = Core.Nothing,
+      token = Core.Nothing,
+      uploadType = Core.Nothing,
+      uploadProtocol = Core.Nothing
+    }
+
+instance Core.GoogleRequest AndroidPublisherInappproductsList where
+  type
+    Rs AndroidPublisherInappproductsList =
+      InappproductsListResponse
+  type
+    Scopes AndroidPublisherInappproductsList =
+      '[Androidpublisher'FullControl]
+  requestClient AndroidPublisherInappproductsList {..} =
+    go
+      packageName
+      xgafv
+      accessToken
+      callback
+      maxResults
+      startIndex
+      token
+      uploadType
+      uploadProtocol
+      (Core.Just Core.AltJSON)
+      androidPublisherService
+    where
+      go =
+        Core.buildClient
+          ( Core.Proxy ::
+              Core.Proxy AndroidPublisherInappproductsListResource
+          )
+          Core.mempty
diff --git a/gen/Gogol/AndroidPublisher/Inappproducts/Patch.hs b/gen/Gogol/AndroidPublisher/Inappproducts/Patch.hs
new file mode 100644
--- /dev/null
+++ b/gen/Gogol/AndroidPublisher/Inappproducts/Patch.hs
@@ -0,0 +1,140 @@
+{-# LANGUAGE DataKinds #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE ImportQualifiedPost #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-name-shadowing #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- |
+-- Module      : Gogol.AndroidPublisher.Inappproducts.Patch
+-- Copyright   : (c) 2015-2025 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay+gogol@gmail.com>
+--               Toni Cebrián <toni@tonicebrian.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Patches an in-app product (a managed product or a subscription). This method should no longer be used to update subscriptions. See <https://android-developers.googleblog.com/2023/06/changes-to-google-play-developer-api-june-2023.html this article> for more information.
+--
+-- /See:/ <https://developers.google.com/android-publisher Google Play Android Developer API Reference> for @androidpublisher.inappproducts.patch@.
+module Gogol.AndroidPublisher.Inappproducts.Patch
+  ( -- * Resource
+    AndroidPublisherInappproductsPatchResource,
+
+    -- ** Constructing a Request
+    AndroidPublisherInappproductsPatch (..),
+    newAndroidPublisherInappproductsPatch,
+  )
+where
+
+import Gogol.AndroidPublisher.Types
+import Gogol.Prelude qualified as Core
+
+-- | A resource alias for @androidpublisher.inappproducts.patch@ method which the
+-- 'AndroidPublisherInappproductsPatch' request conforms to.
+type AndroidPublisherInappproductsPatchResource =
+  "androidpublisher"
+    Core.:> "v3"
+    Core.:> "applications"
+    Core.:> Core.Capture "packageName" Core.Text
+    Core.:> "inappproducts"
+    Core.:> Core.Capture "sku" Core.Text
+    Core.:> Core.QueryParam "$.xgafv" Xgafv
+    Core.:> Core.QueryParam "access_token" Core.Text
+    Core.:> Core.QueryParam "autoConvertMissingPrices" Core.Bool
+    Core.:> Core.QueryParam "callback" Core.Text
+    Core.:> Core.QueryParam
+              "latencyTolerance"
+              InappproductsPatchLatencyTolerance
+    Core.:> Core.QueryParam "uploadType" Core.Text
+    Core.:> Core.QueryParam "upload_protocol" Core.Text
+    Core.:> Core.QueryParam "alt" Core.AltJSON
+    Core.:> Core.ReqBody '[Core.JSON] InAppProduct
+    Core.:> Core.Patch '[Core.JSON] InAppProduct
+
+-- | Patches an in-app product (a managed product or a subscription). This method should no longer be used to update subscriptions. See <https://android-developers.googleblog.com/2023/06/changes-to-google-play-developer-api-june-2023.html this article> for more information.
+--
+-- /See:/ 'newAndroidPublisherInappproductsPatch' smart constructor.
+data AndroidPublisherInappproductsPatch = AndroidPublisherInappproductsPatch
+  { -- | V1 error format.
+    xgafv :: (Core.Maybe Xgafv),
+    -- | OAuth access token.
+    accessToken :: (Core.Maybe Core.Text),
+    -- | If true the prices for all regions targeted by the parent app that don\'t have a price specified for this in-app product will be auto converted to the target currency based on the default price. Defaults to false.
+    autoConvertMissingPrices :: (Core.Maybe Core.Bool),
+    -- | JSONP
+    callback :: (Core.Maybe Core.Text),
+    -- | Optional. The latency tolerance for the propagation of this product update. Defaults to latency-sensitive.
+    latencyTolerance :: (Core.Maybe InappproductsPatchLatencyTolerance),
+    -- | Package name of the app.
+    packageName :: Core.Text,
+    -- | Multipart request metadata.
+    payload :: InAppProduct,
+    -- | Unique identifier for the in-app product.
+    sku :: Core.Text,
+    -- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
+    uploadType :: (Core.Maybe Core.Text),
+    -- | Upload protocol for media (e.g. \"raw\", \"multipart\").
+    uploadProtocol :: (Core.Maybe Core.Text)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'AndroidPublisherInappproductsPatch' with the minimum fields required to make a request.
+newAndroidPublisherInappproductsPatch ::
+  -- |  Package name of the app. See 'packageName'.
+  Core.Text ->
+  -- |  Multipart request metadata. See 'payload'.
+  InAppProduct ->
+  -- |  Unique identifier for the in-app product. See 'sku'.
+  Core.Text ->
+  AndroidPublisherInappproductsPatch
+newAndroidPublisherInappproductsPatch packageName payload sku =
+  AndroidPublisherInappproductsPatch
+    { xgafv = Core.Nothing,
+      accessToken = Core.Nothing,
+      autoConvertMissingPrices = Core.Nothing,
+      callback = Core.Nothing,
+      latencyTolerance = Core.Nothing,
+      packageName = packageName,
+      payload = payload,
+      sku = sku,
+      uploadType = Core.Nothing,
+      uploadProtocol = Core.Nothing
+    }
+
+instance Core.GoogleRequest AndroidPublisherInappproductsPatch where
+  type Rs AndroidPublisherInappproductsPatch = InAppProduct
+  type
+    Scopes AndroidPublisherInappproductsPatch =
+      '[Androidpublisher'FullControl]
+  requestClient AndroidPublisherInappproductsPatch {..} =
+    go
+      packageName
+      sku
+      xgafv
+      accessToken
+      autoConvertMissingPrices
+      callback
+      latencyTolerance
+      uploadType
+      uploadProtocol
+      (Core.Just Core.AltJSON)
+      payload
+      androidPublisherService
+    where
+      go =
+        Core.buildClient
+          ( Core.Proxy ::
+              Core.Proxy AndroidPublisherInappproductsPatchResource
+          )
+          Core.mempty
diff --git a/gen/Gogol/AndroidPublisher/Inappproducts/Update.hs b/gen/Gogol/AndroidPublisher/Inappproducts/Update.hs
new file mode 100644
--- /dev/null
+++ b/gen/Gogol/AndroidPublisher/Inappproducts/Update.hs
@@ -0,0 +1,145 @@
+{-# LANGUAGE DataKinds #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE ImportQualifiedPost #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-name-shadowing #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- |
+-- Module      : Gogol.AndroidPublisher.Inappproducts.Update
+-- Copyright   : (c) 2015-2025 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay+gogol@gmail.com>
+--               Toni Cebrián <toni@tonicebrian.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Updates an in-app product (a managed product or a subscription). This method should no longer be used to update subscriptions. See <https://android-developers.googleblog.com/2023/06/changes-to-google-play-developer-api-june-2023.html this article> for more information.
+--
+-- /See:/ <https://developers.google.com/android-publisher Google Play Android Developer API Reference> for @androidpublisher.inappproducts.update@.
+module Gogol.AndroidPublisher.Inappproducts.Update
+  ( -- * Resource
+    AndroidPublisherInappproductsUpdateResource,
+
+    -- ** Constructing a Request
+    AndroidPublisherInappproductsUpdate (..),
+    newAndroidPublisherInappproductsUpdate,
+  )
+where
+
+import Gogol.AndroidPublisher.Types
+import Gogol.Prelude qualified as Core
+
+-- | A resource alias for @androidpublisher.inappproducts.update@ method which the
+-- 'AndroidPublisherInappproductsUpdate' request conforms to.
+type AndroidPublisherInappproductsUpdateResource =
+  "androidpublisher"
+    Core.:> "v3"
+    Core.:> "applications"
+    Core.:> Core.Capture "packageName" Core.Text
+    Core.:> "inappproducts"
+    Core.:> Core.Capture "sku" Core.Text
+    Core.:> Core.QueryParam "$.xgafv" Xgafv
+    Core.:> Core.QueryParam "access_token" Core.Text
+    Core.:> Core.QueryParam "allowMissing" Core.Bool
+    Core.:> Core.QueryParam "autoConvertMissingPrices" Core.Bool
+    Core.:> Core.QueryParam "callback" Core.Text
+    Core.:> Core.QueryParam
+              "latencyTolerance"
+              InappproductsUpdateLatencyTolerance
+    Core.:> Core.QueryParam "uploadType" Core.Text
+    Core.:> Core.QueryParam "upload_protocol" Core.Text
+    Core.:> Core.QueryParam "alt" Core.AltJSON
+    Core.:> Core.ReqBody '[Core.JSON] InAppProduct
+    Core.:> Core.Put '[Core.JSON] InAppProduct
+
+-- | Updates an in-app product (a managed product or a subscription). This method should no longer be used to update subscriptions. See <https://android-developers.googleblog.com/2023/06/changes-to-google-play-developer-api-june-2023.html this article> for more information.
+--
+-- /See:/ 'newAndroidPublisherInappproductsUpdate' smart constructor.
+data AndroidPublisherInappproductsUpdate = AndroidPublisherInappproductsUpdate
+  { -- | V1 error format.
+    xgafv :: (Core.Maybe Xgafv),
+    -- | OAuth access token.
+    accessToken :: (Core.Maybe Core.Text),
+    -- | If set to true, and the in-app product with the given package_name and sku doesn\'t exist, the in-app product will be created.
+    allowMissing :: (Core.Maybe Core.Bool),
+    -- | If true the prices for all regions targeted by the parent app that don\'t have a price specified for this in-app product will be auto converted to the target currency based on the default price. Defaults to false.
+    autoConvertMissingPrices :: (Core.Maybe Core.Bool),
+    -- | JSONP
+    callback :: (Core.Maybe Core.Text),
+    -- | Optional. The latency tolerance for the propagation of this product update. Defaults to latency-sensitive.
+    latencyTolerance :: (Core.Maybe InappproductsUpdateLatencyTolerance),
+    -- | Package name of the app.
+    packageName :: Core.Text,
+    -- | Multipart request metadata.
+    payload :: InAppProduct,
+    -- | Unique identifier for the in-app product.
+    sku :: Core.Text,
+    -- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
+    uploadType :: (Core.Maybe Core.Text),
+    -- | Upload protocol for media (e.g. \"raw\", \"multipart\").
+    uploadProtocol :: (Core.Maybe Core.Text)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'AndroidPublisherInappproductsUpdate' with the minimum fields required to make a request.
+newAndroidPublisherInappproductsUpdate ::
+  -- |  Package name of the app. See 'packageName'.
+  Core.Text ->
+  -- |  Multipart request metadata. See 'payload'.
+  InAppProduct ->
+  -- |  Unique identifier for the in-app product. See 'sku'.
+  Core.Text ->
+  AndroidPublisherInappproductsUpdate
+newAndroidPublisherInappproductsUpdate packageName payload sku =
+  AndroidPublisherInappproductsUpdate
+    { xgafv = Core.Nothing,
+      accessToken = Core.Nothing,
+      allowMissing = Core.Nothing,
+      autoConvertMissingPrices = Core.Nothing,
+      callback = Core.Nothing,
+      latencyTolerance = Core.Nothing,
+      packageName = packageName,
+      payload = payload,
+      sku = sku,
+      uploadType = Core.Nothing,
+      uploadProtocol = Core.Nothing
+    }
+
+instance Core.GoogleRequest AndroidPublisherInappproductsUpdate where
+  type Rs AndroidPublisherInappproductsUpdate = InAppProduct
+  type
+    Scopes AndroidPublisherInappproductsUpdate =
+      '[Androidpublisher'FullControl]
+  requestClient AndroidPublisherInappproductsUpdate {..} =
+    go
+      packageName
+      sku
+      xgafv
+      accessToken
+      allowMissing
+      autoConvertMissingPrices
+      callback
+      latencyTolerance
+      uploadType
+      uploadProtocol
+      (Core.Just Core.AltJSON)
+      payload
+      androidPublisherService
+    where
+      go =
+        Core.buildClient
+          ( Core.Proxy ::
+              Core.Proxy AndroidPublisherInappproductsUpdateResource
+          )
+          Core.mempty
diff --git a/gen/Gogol/AndroidPublisher/Internal/Product.hs b/gen/Gogol/AndroidPublisher/Internal/Product.hs
new file mode 100644
--- /dev/null
+++ b/gen/Gogol/AndroidPublisher/Internal/Product.hs
@@ -0,0 +1,10801 @@
+{-# LANGUAGE DataKinds #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE ImportQualifiedPost #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-name-shadowing #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- |
+-- Module      : Gogol.AndroidPublisher.Internal.Product
+-- Copyright   : (c) 2015-2025 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay+gogol@gmail.com>
+--               Toni Cebrián <toni@tonicebrian.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Gogol.AndroidPublisher.Internal.Product
+  ( -- * Abi
+    Abi (..),
+    newAbi,
+
+    -- * AbiTargeting
+    AbiTargeting (..),
+    newAbiTargeting,
+
+    -- * AcquisitionTargetingRule
+    AcquisitionTargetingRule (..),
+    newAcquisitionTargetingRule,
+
+    -- * ActivateBasePlanRequest
+    ActivateBasePlanRequest (..),
+    newActivateBasePlanRequest,
+
+    -- * ActivateSubscriptionOfferRequest
+    ActivateSubscriptionOfferRequest (..),
+    newActivateSubscriptionOfferRequest,
+
+    -- * AddTargetingRequest
+    AddTargetingRequest (..),
+    newAddTargetingRequest,
+
+    -- * AddTargetingResponse
+    AddTargetingResponse (..),
+    newAddTargetingResponse,
+
+    -- * AllUsers
+    AllUsers (..),
+    newAllUsers,
+
+    -- * AndroidSdks
+    AndroidSdks (..),
+    newAndroidSdks,
+
+    -- * Apk
+    Apk (..),
+    newApk,
+
+    -- * ApkBinary
+    ApkBinary (..),
+    newApkBinary,
+
+    -- * ApkDescription
+    ApkDescription (..),
+    newApkDescription,
+
+    -- * ApkSet
+    ApkSet (..),
+    newApkSet,
+
+    -- * ApkTargeting
+    ApkTargeting (..),
+    newApkTargeting,
+
+    -- * ApksAddExternallyHostedRequest
+    ApksAddExternallyHostedRequest (..),
+    newApksAddExternallyHostedRequest,
+
+    -- * ApksAddExternallyHostedResponse
+    ApksAddExternallyHostedResponse (..),
+    newApksAddExternallyHostedResponse,
+
+    -- * ApksListResponse
+    ApksListResponse (..),
+    newApksListResponse,
+
+    -- * AppDetails
+    AppDetails (..),
+    newAppDetails,
+
+    -- * AppEdit
+    AppEdit (..),
+    newAppEdit,
+
+    -- * AppRecoveryAction
+    AppRecoveryAction (..),
+    newAppRecoveryAction,
+
+    -- * AppVersionList
+    AppVersionList (..),
+    newAppVersionList,
+
+    -- * AppVersionRange
+    AppVersionRange (..),
+    newAppVersionRange,
+
+    -- * ArchiveSubscriptionRequest
+    ArchiveSubscriptionRequest (..),
+    newArchiveSubscriptionRequest,
+
+    -- * AssetModuleMetadata
+    AssetModuleMetadata (..),
+    newAssetModuleMetadata,
+
+    -- * AssetSliceSet
+    AssetSliceSet (..),
+    newAssetSliceSet,
+
+    -- * AutoRenewingBasePlanType
+    AutoRenewingBasePlanType (..),
+    newAutoRenewingBasePlanType,
+
+    -- * AutoRenewingPlan
+    AutoRenewingPlan (..),
+    newAutoRenewingPlan,
+
+    -- * BasePlan
+    BasePlan (..),
+    newBasePlan,
+
+    -- * BatchGetSubscriptionOffersRequest
+    BatchGetSubscriptionOffersRequest (..),
+    newBatchGetSubscriptionOffersRequest,
+
+    -- * BatchGetSubscriptionOffersResponse
+    BatchGetSubscriptionOffersResponse (..),
+    newBatchGetSubscriptionOffersResponse,
+
+    -- * BatchGetSubscriptionsResponse
+    BatchGetSubscriptionsResponse (..),
+    newBatchGetSubscriptionsResponse,
+
+    -- * BatchMigrateBasePlanPricesRequest
+    BatchMigrateBasePlanPricesRequest (..),
+    newBatchMigrateBasePlanPricesRequest,
+
+    -- * BatchMigrateBasePlanPricesResponse
+    BatchMigrateBasePlanPricesResponse (..),
+    newBatchMigrateBasePlanPricesResponse,
+
+    -- * BatchUpdateBasePlanStatesRequest
+    BatchUpdateBasePlanStatesRequest (..),
+    newBatchUpdateBasePlanStatesRequest,
+
+    -- * BatchUpdateBasePlanStatesResponse
+    BatchUpdateBasePlanStatesResponse (..),
+    newBatchUpdateBasePlanStatesResponse,
+
+    -- * BatchUpdateSubscriptionOfferStatesRequest
+    BatchUpdateSubscriptionOfferStatesRequest (..),
+    newBatchUpdateSubscriptionOfferStatesRequest,
+
+    -- * BatchUpdateSubscriptionOfferStatesResponse
+    BatchUpdateSubscriptionOfferStatesResponse (..),
+    newBatchUpdateSubscriptionOfferStatesResponse,
+
+    -- * BatchUpdateSubscriptionOffersRequest
+    BatchUpdateSubscriptionOffersRequest (..),
+    newBatchUpdateSubscriptionOffersRequest,
+
+    -- * BatchUpdateSubscriptionOffersResponse
+    BatchUpdateSubscriptionOffersResponse (..),
+    newBatchUpdateSubscriptionOffersResponse,
+
+    -- * BatchUpdateSubscriptionsRequest
+    BatchUpdateSubscriptionsRequest (..),
+    newBatchUpdateSubscriptionsRequest,
+
+    -- * BatchUpdateSubscriptionsResponse
+    BatchUpdateSubscriptionsResponse (..),
+    newBatchUpdateSubscriptionsResponse,
+
+    -- * Bundle
+    Bundle (..),
+    newBundle,
+
+    -- * BundlesListResponse
+    BundlesListResponse (..),
+    newBundlesListResponse,
+
+    -- * CancelAppRecoveryRequest
+    CancelAppRecoveryRequest (..),
+    newCancelAppRecoveryRequest,
+
+    -- * CancelAppRecoveryResponse
+    CancelAppRecoveryResponse (..),
+    newCancelAppRecoveryResponse,
+
+    -- * CancelSurveyResult
+    CancelSurveyResult (..),
+    newCancelSurveyResult,
+
+    -- * CanceledStateContext
+    CanceledStateContext (..),
+    newCanceledStateContext,
+
+    -- * Comment
+    Comment (..),
+    newComment,
+
+    -- * ConvertRegionPricesRequest
+    ConvertRegionPricesRequest (..),
+    newConvertRegionPricesRequest,
+
+    -- * ConvertRegionPricesResponse
+    ConvertRegionPricesResponse (..),
+    newConvertRegionPricesResponse,
+
+    -- * ConvertRegionPricesResponse_ConvertedRegionPrices
+    ConvertRegionPricesResponse_ConvertedRegionPrices (..),
+    newConvertRegionPricesResponse_ConvertedRegionPrices,
+
+    -- * ConvertedOtherRegionsPrice
+    ConvertedOtherRegionsPrice (..),
+    newConvertedOtherRegionsPrice,
+
+    -- * ConvertedRegionPrice
+    ConvertedRegionPrice (..),
+    newConvertedRegionPrice,
+
+    -- * CountryTargeting
+    CountryTargeting (..),
+    newCountryTargeting,
+
+    -- * CreateDraftAppRecoveryRequest
+    CreateDraftAppRecoveryRequest (..),
+    newCreateDraftAppRecoveryRequest,
+
+    -- * DeactivateBasePlanRequest
+    DeactivateBasePlanRequest (..),
+    newDeactivateBasePlanRequest,
+
+    -- * DeactivateSubscriptionOfferRequest
+    DeactivateSubscriptionOfferRequest (..),
+    newDeactivateSubscriptionOfferRequest,
+
+    -- * DeferredItemReplacement
+    DeferredItemReplacement (..),
+    newDeferredItemReplacement,
+
+    -- * DeobfuscationFile
+    DeobfuscationFile (..),
+    newDeobfuscationFile,
+
+    -- * DeobfuscationFilesUploadResponse
+    DeobfuscationFilesUploadResponse (..),
+    newDeobfuscationFilesUploadResponse,
+
+    -- * DeployAppRecoveryRequest
+    DeployAppRecoveryRequest (..),
+    newDeployAppRecoveryRequest,
+
+    -- * DeployAppRecoveryResponse
+    DeployAppRecoveryResponse (..),
+    newDeployAppRecoveryResponse,
+
+    -- * DeveloperComment
+    DeveloperComment (..),
+    newDeveloperComment,
+
+    -- * DeveloperInitiatedCancellation
+    DeveloperInitiatedCancellation (..),
+    newDeveloperInitiatedCancellation,
+
+    -- * DeviceFeature
+    DeviceFeature (..),
+    newDeviceFeature,
+
+    -- * DeviceFeatureTargeting
+    DeviceFeatureTargeting (..),
+    newDeviceFeatureTargeting,
+
+    -- * DeviceGroup
+    DeviceGroup (..),
+    newDeviceGroup,
+
+    -- * DeviceId
+    DeviceId (..),
+    newDeviceId,
+
+    -- * DeviceMetadata
+    DeviceMetadata (..),
+    newDeviceMetadata,
+
+    -- * DeviceRam
+    DeviceRam (..),
+    newDeviceRam,
+
+    -- * DeviceSelector
+    DeviceSelector (..),
+    newDeviceSelector,
+
+    -- * DeviceSpec
+    DeviceSpec (..),
+    newDeviceSpec,
+
+    -- * DeviceTier
+    DeviceTier (..),
+    newDeviceTier,
+
+    -- * DeviceTierConfig
+    DeviceTierConfig (..),
+    newDeviceTierConfig,
+
+    -- * DeviceTierSet
+    DeviceTierSet (..),
+    newDeviceTierSet,
+
+    -- * ExpansionFile
+    ExpansionFile (..),
+    newExpansionFile,
+
+    -- * ExpansionFilesUploadResponse
+    ExpansionFilesUploadResponse (..),
+    newExpansionFilesUploadResponse,
+
+    -- * ExternalAccountIdentifiers
+    ExternalAccountIdentifiers (..),
+    newExternalAccountIdentifiers,
+
+    -- * ExternalSubscription
+    ExternalSubscription (..),
+    newExternalSubscription,
+
+    -- * ExternalTransaction
+    ExternalTransaction (..),
+    newExternalTransaction,
+
+    -- * ExternalTransactionAddress
+    ExternalTransactionAddress (..),
+    newExternalTransactionAddress,
+
+    -- * ExternalTransactionTestPurchase
+    ExternalTransactionTestPurchase (..),
+    newExternalTransactionTestPurchase,
+
+    -- * ExternallyHostedApk
+    ExternallyHostedApk (..),
+    newExternallyHostedApk,
+
+    -- * FullRefund
+    FullRefund (..),
+    newFullRefund,
+
+    -- * GeneratedApksListResponse
+    GeneratedApksListResponse (..),
+    newGeneratedApksListResponse,
+
+    -- * GeneratedApksPerSigningKey
+    GeneratedApksPerSigningKey (..),
+    newGeneratedApksPerSigningKey,
+
+    -- * GeneratedAssetPackSlice
+    GeneratedAssetPackSlice (..),
+    newGeneratedAssetPackSlice,
+
+    -- * GeneratedRecoveryApk
+    GeneratedRecoveryApk (..),
+    newGeneratedRecoveryApk,
+
+    -- * GeneratedSplitApk
+    GeneratedSplitApk (..),
+    newGeneratedSplitApk,
+
+    -- * GeneratedStandaloneApk
+    GeneratedStandaloneApk (..),
+    newGeneratedStandaloneApk,
+
+    -- * GeneratedUniversalApk
+    GeneratedUniversalApk (..),
+    newGeneratedUniversalApk,
+
+    -- * GetSubscriptionOfferRequest
+    GetSubscriptionOfferRequest (..),
+    newGetSubscriptionOfferRequest,
+
+    -- * Grant
+    Grant (..),
+    newGrant,
+
+    -- * Image
+    Image (..),
+    newImage,
+
+    -- * ImagesDeleteAllResponse
+    ImagesDeleteAllResponse (..),
+    newImagesDeleteAllResponse,
+
+    -- * ImagesListResponse
+    ImagesListResponse (..),
+    newImagesListResponse,
+
+    -- * ImagesUploadResponse
+    ImagesUploadResponse (..),
+    newImagesUploadResponse,
+
+    -- * InAppProduct
+    InAppProduct (..),
+    newInAppProduct,
+
+    -- * InAppProduct_Listings
+    InAppProduct_Listings (..),
+    newInAppProduct_Listings,
+
+    -- * InAppProduct_Prices
+    InAppProduct_Prices (..),
+    newInAppProduct_Prices,
+
+    -- * InAppProductListing
+    InAppProductListing (..),
+    newInAppProductListing,
+
+    -- * InappproductsBatchDeleteRequest
+    InappproductsBatchDeleteRequest (..),
+    newInappproductsBatchDeleteRequest,
+
+    -- * InappproductsBatchGetResponse
+    InappproductsBatchGetResponse (..),
+    newInappproductsBatchGetResponse,
+
+    -- * InappproductsBatchUpdateRequest
+    InappproductsBatchUpdateRequest (..),
+    newInappproductsBatchUpdateRequest,
+
+    -- * InappproductsBatchUpdateResponse
+    InappproductsBatchUpdateResponse (..),
+    newInappproductsBatchUpdateResponse,
+
+    -- * InappproductsDeleteRequest
+    InappproductsDeleteRequest (..),
+    newInappproductsDeleteRequest,
+
+    -- * InappproductsListResponse
+    InappproductsListResponse (..),
+    newInappproductsListResponse,
+
+    -- * InappproductsUpdateRequest
+    InappproductsUpdateRequest (..),
+    newInappproductsUpdateRequest,
+
+    -- * InstallmentPlan
+    InstallmentPlan (..),
+    newInstallmentPlan,
+
+    -- * InstallmentsBasePlanType
+    InstallmentsBasePlanType (..),
+    newInstallmentsBasePlanType,
+
+    -- * InternalAppSharingArtifact
+    InternalAppSharingArtifact (..),
+    newInternalAppSharingArtifact,
+
+    -- * IntroductoryPriceInfo
+    IntroductoryPriceInfo (..),
+    newIntroductoryPriceInfo,
+
+    -- * LanguageTargeting
+    LanguageTargeting (..),
+    newLanguageTargeting,
+
+    -- * ListAppRecoveriesResponse
+    ListAppRecoveriesResponse (..),
+    newListAppRecoveriesResponse,
+
+    -- * ListDeviceTierConfigsResponse
+    ListDeviceTierConfigsResponse (..),
+    newListDeviceTierConfigsResponse,
+
+    -- * ListSubscriptionOffersResponse
+    ListSubscriptionOffersResponse (..),
+    newListSubscriptionOffersResponse,
+
+    -- * ListSubscriptionsResponse
+    ListSubscriptionsResponse (..),
+    newListSubscriptionsResponse,
+
+    -- * ListUsersResponse
+    ListUsersResponse (..),
+    newListUsersResponse,
+
+    -- * Listing
+    Listing (..),
+    newListing,
+
+    -- * ListingsListResponse
+    ListingsListResponse (..),
+    newListingsListResponse,
+
+    -- * LocalizedText
+    LocalizedText (..),
+    newLocalizedText,
+
+    -- * ManagedProductTaxAndComplianceSettings
+    ManagedProductTaxAndComplianceSettings (..),
+    newManagedProductTaxAndComplianceSettings,
+
+    -- * ManagedProductTaxAndComplianceSettings_TaxRateInfoByRegionCode
+    ManagedProductTaxAndComplianceSettings_TaxRateInfoByRegionCode (..),
+    newManagedProductTaxAndComplianceSettings_TaxRateInfoByRegionCode,
+
+    -- * MigrateBasePlanPricesRequest
+    MigrateBasePlanPricesRequest (..),
+    newMigrateBasePlanPricesRequest,
+
+    -- * MigrateBasePlanPricesResponse
+    MigrateBasePlanPricesResponse (..),
+    newMigrateBasePlanPricesResponse,
+
+    -- * ModuleMetadata
+    ModuleMetadata (..),
+    newModuleMetadata,
+
+    -- * ModuleTargeting
+    ModuleTargeting (..),
+    newModuleTargeting,
+
+    -- * Money
+    Money (..),
+    newMoney,
+
+    -- * MultiAbi
+    MultiAbi (..),
+    newMultiAbi,
+
+    -- * MultiAbiTargeting
+    MultiAbiTargeting (..),
+    newMultiAbiTargeting,
+
+    -- * OfferDetails
+    OfferDetails (..),
+    newOfferDetails,
+
+    -- * OfferTag
+    OfferTag (..),
+    newOfferTag,
+
+    -- * OneTimeCode
+    OneTimeCode (..),
+    newOneTimeCode,
+
+    -- * OneTimeExternalTransaction
+    OneTimeExternalTransaction (..),
+    newOneTimeExternalTransaction,
+
+    -- * OtherRecurringProduct
+    OtherRecurringProduct (..),
+    newOtherRecurringProduct,
+
+    -- * OtherRegionsBasePlanConfig
+    OtherRegionsBasePlanConfig (..),
+    newOtherRegionsBasePlanConfig,
+
+    -- * OtherRegionsSubscriptionOfferConfig
+    OtherRegionsSubscriptionOfferConfig (..),
+    newOtherRegionsSubscriptionOfferConfig,
+
+    -- * OtherRegionsSubscriptionOfferPhaseConfig
+    OtherRegionsSubscriptionOfferPhaseConfig (..),
+    newOtherRegionsSubscriptionOfferPhaseConfig,
+
+    -- * OtherRegionsSubscriptionOfferPhaseFreePriceOverride
+    OtherRegionsSubscriptionOfferPhaseFreePriceOverride (..),
+    newOtherRegionsSubscriptionOfferPhaseFreePriceOverride,
+
+    -- * OtherRegionsSubscriptionOfferPhasePrices
+    OtherRegionsSubscriptionOfferPhasePrices (..),
+    newOtherRegionsSubscriptionOfferPhasePrices,
+
+    -- * PageInfo
+    PageInfo (..),
+    newPageInfo,
+
+    -- * PartialRefund
+    PartialRefund (..),
+    newPartialRefund,
+
+    -- * PausedStateContext
+    PausedStateContext (..),
+    newPausedStateContext,
+
+    -- * PendingCancellation
+    PendingCancellation (..),
+    newPendingCancellation,
+
+    -- * PrepaidBasePlanType
+    PrepaidBasePlanType (..),
+    newPrepaidBasePlanType,
+
+    -- * PrepaidPlan
+    PrepaidPlan (..),
+    newPrepaidPlan,
+
+    -- * Price
+    Price (..),
+    newPrice,
+
+    -- * ProductPurchase
+    ProductPurchase (..),
+    newProductPurchase,
+
+    -- * ProductPurchasesAcknowledgeRequest
+    ProductPurchasesAcknowledgeRequest (..),
+    newProductPurchasesAcknowledgeRequest,
+
+    -- * RecurringExternalTransaction
+    RecurringExternalTransaction (..),
+    newRecurringExternalTransaction,
+
+    -- * RefundExternalTransactionRequest
+    RefundExternalTransactionRequest (..),
+    newRefundExternalTransactionRequest,
+
+    -- * RegionalBasePlanConfig
+    RegionalBasePlanConfig (..),
+    newRegionalBasePlanConfig,
+
+    -- * RegionalPriceMigrationConfig
+    RegionalPriceMigrationConfig (..),
+    newRegionalPriceMigrationConfig,
+
+    -- * RegionalSubscriptionOfferConfig
+    RegionalSubscriptionOfferConfig (..),
+    newRegionalSubscriptionOfferConfig,
+
+    -- * RegionalSubscriptionOfferPhaseConfig
+    RegionalSubscriptionOfferPhaseConfig (..),
+    newRegionalSubscriptionOfferPhaseConfig,
+
+    -- * RegionalSubscriptionOfferPhaseFreePriceOverride
+    RegionalSubscriptionOfferPhaseFreePriceOverride (..),
+    newRegionalSubscriptionOfferPhaseFreePriceOverride,
+
+    -- * RegionalTaxRateInfo
+    RegionalTaxRateInfo (..),
+    newRegionalTaxRateInfo,
+
+    -- * Regions
+    Regions (..),
+    newRegions,
+
+    -- * RegionsVersion
+    RegionsVersion (..),
+    newRegionsVersion,
+
+    -- * RemoteInAppUpdate
+    RemoteInAppUpdate (..),
+    newRemoteInAppUpdate,
+
+    -- * RemoteInAppUpdateData
+    RemoteInAppUpdateData (..),
+    newRemoteInAppUpdateData,
+
+    -- * RemoteInAppUpdateDataPerBundle
+    RemoteInAppUpdateDataPerBundle (..),
+    newRemoteInAppUpdateDataPerBundle,
+
+    -- * ReplacementCancellation
+    ReplacementCancellation (..),
+    newReplacementCancellation,
+
+    -- * RestrictedPaymentCountries
+    RestrictedPaymentCountries (..),
+    newRestrictedPaymentCountries,
+
+    -- * Review
+    Review (..),
+    newReview,
+
+    -- * ReviewReplyResult
+    ReviewReplyResult (..),
+    newReviewReplyResult,
+
+    -- * ReviewsListResponse
+    ReviewsListResponse (..),
+    newReviewsListResponse,
+
+    -- * ReviewsReplyRequest
+    ReviewsReplyRequest (..),
+    newReviewsReplyRequest,
+
+    -- * ReviewsReplyResponse
+    ReviewsReplyResponse (..),
+    newReviewsReplyResponse,
+
+    -- * RevocationContext
+    RevocationContext (..),
+    newRevocationContext,
+
+    -- * RevocationContextFullRefund
+    RevocationContextFullRefund (..),
+    newRevocationContextFullRefund,
+
+    -- * RevocationContextProratedRefund
+    RevocationContextProratedRefund (..),
+    newRevocationContextProratedRefund,
+
+    -- * RevokeSubscriptionPurchaseRequest
+    RevokeSubscriptionPurchaseRequest (..),
+    newRevokeSubscriptionPurchaseRequest,
+
+    -- * RevokeSubscriptionPurchaseResponse
+    RevokeSubscriptionPurchaseResponse (..),
+    newRevokeSubscriptionPurchaseResponse,
+
+    -- * SafetyLabelsUpdateRequest
+    SafetyLabelsUpdateRequest (..),
+    newSafetyLabelsUpdateRequest,
+
+    -- * SafetyLabelsUpdateResponse
+    SafetyLabelsUpdateResponse (..),
+    newSafetyLabelsUpdateResponse,
+
+    -- * ScreenDensity
+    ScreenDensity (..),
+    newScreenDensity,
+
+    -- * ScreenDensityTargeting
+    ScreenDensityTargeting (..),
+    newScreenDensityTargeting,
+
+    -- * SdkVersion
+    SdkVersion (..),
+    newSdkVersion,
+
+    -- * SdkVersionTargeting
+    SdkVersionTargeting (..),
+    newSdkVersionTargeting,
+
+    -- * SignupPromotion
+    SignupPromotion (..),
+    newSignupPromotion,
+
+    -- * SplitApkMetadata
+    SplitApkMetadata (..),
+    newSplitApkMetadata,
+
+    -- * SplitApkVariant
+    SplitApkVariant (..),
+    newSplitApkVariant,
+
+    -- * StandaloneApkMetadata
+    StandaloneApkMetadata (..),
+    newStandaloneApkMetadata,
+
+    -- * SubscribeWithGoogleInfo
+    SubscribeWithGoogleInfo (..),
+    newSubscribeWithGoogleInfo,
+
+    -- * Subscription
+    Subscription (..),
+    newSubscription,
+
+    -- * SubscriptionCancelSurveyResult
+    SubscriptionCancelSurveyResult (..),
+    newSubscriptionCancelSurveyResult,
+
+    -- * SubscriptionDeferralInfo
+    SubscriptionDeferralInfo (..),
+    newSubscriptionDeferralInfo,
+
+    -- * SubscriptionItemPriceChangeDetails
+    SubscriptionItemPriceChangeDetails (..),
+    newSubscriptionItemPriceChangeDetails,
+
+    -- * SubscriptionListing
+    SubscriptionListing (..),
+    newSubscriptionListing,
+
+    -- * SubscriptionOffer
+    SubscriptionOffer (..),
+    newSubscriptionOffer,
+
+    -- * SubscriptionOfferPhase
+    SubscriptionOfferPhase (..),
+    newSubscriptionOfferPhase,
+
+    -- * SubscriptionOfferTargeting
+    SubscriptionOfferTargeting (..),
+    newSubscriptionOfferTargeting,
+
+    -- * SubscriptionPriceChange
+    SubscriptionPriceChange (..),
+    newSubscriptionPriceChange,
+
+    -- * SubscriptionPurchase
+    SubscriptionPurchase (..),
+    newSubscriptionPurchase,
+
+    -- * SubscriptionPurchaseLineItem
+    SubscriptionPurchaseLineItem (..),
+    newSubscriptionPurchaseLineItem,
+
+    -- * SubscriptionPurchaseV2
+    SubscriptionPurchaseV2 (..),
+    newSubscriptionPurchaseV2,
+
+    -- * SubscriptionPurchasesAcknowledgeRequest
+    SubscriptionPurchasesAcknowledgeRequest (..),
+    newSubscriptionPurchasesAcknowledgeRequest,
+
+    -- * SubscriptionPurchasesDeferRequest
+    SubscriptionPurchasesDeferRequest (..),
+    newSubscriptionPurchasesDeferRequest,
+
+    -- * SubscriptionPurchasesDeferResponse
+    SubscriptionPurchasesDeferResponse (..),
+    newSubscriptionPurchasesDeferResponse,
+
+    -- * SubscriptionTaxAndComplianceSettings
+    SubscriptionTaxAndComplianceSettings (..),
+    newSubscriptionTaxAndComplianceSettings,
+
+    -- * SubscriptionTaxAndComplianceSettings_TaxRateInfoByRegionCode
+    SubscriptionTaxAndComplianceSettings_TaxRateInfoByRegionCode (..),
+    newSubscriptionTaxAndComplianceSettings_TaxRateInfoByRegionCode,
+
+    -- * SystemApkOptions
+    SystemApkOptions (..),
+    newSystemApkOptions,
+
+    -- * SystemApksListResponse
+    SystemApksListResponse (..),
+    newSystemApksListResponse,
+
+    -- * SystemFeature
+    SystemFeature (..),
+    newSystemFeature,
+
+    -- * SystemInitiatedCancellation
+    SystemInitiatedCancellation (..),
+    newSystemInitiatedCancellation,
+
+    -- * SystemOnChip
+    SystemOnChip (..),
+    newSystemOnChip,
+
+    -- * Targeting
+    Targeting (..),
+    newTargeting,
+
+    -- * TargetingInfo
+    TargetingInfo (..),
+    newTargetingInfo,
+
+    -- * TargetingRuleScope
+    TargetingRuleScope (..),
+    newTargetingRuleScope,
+
+    -- * TargetingRuleScopeAnySubscriptionInApp
+    TargetingRuleScopeAnySubscriptionInApp (..),
+    newTargetingRuleScopeAnySubscriptionInApp,
+
+    -- * TargetingRuleScopeThisSubscription
+    TargetingRuleScopeThisSubscription (..),
+    newTargetingRuleScopeThisSubscription,
+
+    -- * TargetingUpdate
+    TargetingUpdate (..),
+    newTargetingUpdate,
+
+    -- * TestPurchase
+    TestPurchase (..),
+    newTestPurchase,
+
+    -- * Testers
+    Testers (..),
+    newTesters,
+
+    -- * TextureCompressionFormat
+    TextureCompressionFormat (..),
+    newTextureCompressionFormat,
+
+    -- * TextureCompressionFormatTargeting
+    TextureCompressionFormatTargeting (..),
+    newTextureCompressionFormatTargeting,
+
+    -- * Timestamp
+    Timestamp (..),
+    newTimestamp,
+
+    -- * TokenPagination
+    TokenPagination (..),
+    newTokenPagination,
+
+    -- * Track
+    Track (..),
+    newTrack,
+
+    -- * TrackConfig
+    TrackConfig (..),
+    newTrackConfig,
+
+    -- * TrackCountryAvailability
+    TrackCountryAvailability (..),
+    newTrackCountryAvailability,
+
+    -- * TrackRelease
+    TrackRelease (..),
+    newTrackRelease,
+
+    -- * TrackTargetedCountry
+    TrackTargetedCountry (..),
+    newTrackTargetedCountry,
+
+    -- * TracksListResponse
+    TracksListResponse (..),
+    newTracksListResponse,
+
+    -- * UpdateBasePlanStateRequest
+    UpdateBasePlanStateRequest (..),
+    newUpdateBasePlanStateRequest,
+
+    -- * UpdateSubscriptionOfferRequest
+    UpdateSubscriptionOfferRequest (..),
+    newUpdateSubscriptionOfferRequest,
+
+    -- * UpdateSubscriptionOfferStateRequest
+    UpdateSubscriptionOfferStateRequest (..),
+    newUpdateSubscriptionOfferStateRequest,
+
+    -- * UpdateSubscriptionRequest
+    UpdateSubscriptionRequest (..),
+    newUpdateSubscriptionRequest,
+
+    -- * UpgradeTargetingRule
+    UpgradeTargetingRule (..),
+    newUpgradeTargetingRule,
+
+    -- * User
+    User (..),
+    newUser,
+
+    -- * UserComment
+    UserComment (..),
+    newUserComment,
+
+    -- * UserCountriesTargeting
+    UserCountriesTargeting (..),
+    newUserCountriesTargeting,
+
+    -- * UserCountrySet
+    UserCountrySet (..),
+    newUserCountrySet,
+
+    -- * UserInitiatedCancellation
+    UserInitiatedCancellation (..),
+    newUserInitiatedCancellation,
+
+    -- * UsesPermission
+    UsesPermission (..),
+    newUsesPermission,
+
+    -- * VanityCode
+    VanityCode (..),
+    newVanityCode,
+
+    -- * Variant
+    Variant (..),
+    newVariant,
+
+    -- * VariantTargeting
+    VariantTargeting (..),
+    newVariantTargeting,
+
+    -- * VoidedPurchase
+    VoidedPurchase (..),
+    newVoidedPurchase,
+
+    -- * VoidedPurchasesListResponse
+    VoidedPurchasesListResponse (..),
+    newVoidedPurchasesListResponse,
+  )
+where
+
+import Gogol.AndroidPublisher.Internal.Sum
+import Gogol.Prelude qualified as Core
+
+-- | Represents an Abi.
+--
+-- /See:/ 'newAbi' smart constructor.
+newtype Abi = Abi
+  { -- | Alias for an abi.
+    alias :: (Core.Maybe Abi_Alias)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'Abi' with the minimum fields required to make a request.
+newAbi ::
+  Abi
+newAbi = Abi {alias = Core.Nothing}
+
+instance Core.FromJSON Abi where
+  parseJSON =
+    Core.withObject "Abi" (\o -> Abi Core.<$> (o Core..:? "alias"))
+
+instance Core.ToJSON Abi where
+  toJSON Abi {..} =
+    Core.object (Core.catMaybes [("alias" Core..=) Core.<$> alias])
+
+-- | Targeting based on Abi.
+--
+-- /See:/ 'newAbiTargeting' smart constructor.
+data AbiTargeting = AbiTargeting
+  { -- | Targeting of other sibling directories that were in the Bundle. For main splits this is targeting of other main splits.
+    alternatives :: (Core.Maybe [Abi]),
+    -- | Value of an abi.
+    value :: (Core.Maybe [Abi])
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'AbiTargeting' with the minimum fields required to make a request.
+newAbiTargeting ::
+  AbiTargeting
+newAbiTargeting =
+  AbiTargeting {alternatives = Core.Nothing, value = Core.Nothing}
+
+instance Core.FromJSON AbiTargeting where
+  parseJSON =
+    Core.withObject
+      "AbiTargeting"
+      ( \o ->
+          AbiTargeting
+            Core.<$> (o Core..:? "alternatives")
+            Core.<*> (o Core..:? "value")
+      )
+
+instance Core.ToJSON AbiTargeting where
+  toJSON AbiTargeting {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("alternatives" Core..=) Core.<$> alternatives,
+            ("value" Core..=) Core.<$> value
+          ]
+      )
+
+-- | Represents a targeting rule of the form: User never had {scope} before.
+--
+-- /See:/ 'newAcquisitionTargetingRule' smart constructor.
+newtype AcquisitionTargetingRule = AcquisitionTargetingRule
+  { -- | Required. The scope of subscriptions this rule considers. Only allows \"this subscription\" and \"any subscription in app\".
+    scope :: (Core.Maybe TargetingRuleScope)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'AcquisitionTargetingRule' with the minimum fields required to make a request.
+newAcquisitionTargetingRule ::
+  AcquisitionTargetingRule
+newAcquisitionTargetingRule =
+  AcquisitionTargetingRule {scope = Core.Nothing}
+
+instance Core.FromJSON AcquisitionTargetingRule where
+  parseJSON =
+    Core.withObject
+      "AcquisitionTargetingRule"
+      (\o -> AcquisitionTargetingRule Core.<$> (o Core..:? "scope"))
+
+instance Core.ToJSON AcquisitionTargetingRule where
+  toJSON AcquisitionTargetingRule {..} =
+    Core.object (Core.catMaybes [("scope" Core..=) Core.<$> scope])
+
+-- | Request message for ActivateBasePlan.
+--
+-- /See:/ 'newActivateBasePlanRequest' smart constructor.
+data ActivateBasePlanRequest = ActivateBasePlanRequest
+  { -- | Required. The unique base plan ID of the base plan to activate.
+    basePlanId :: (Core.Maybe Core.Text),
+    -- | Optional. The latency tolerance for the propagation of this product update. Defaults to latency-sensitive.
+    latencyTolerance :: (Core.Maybe ActivateBasePlanRequest_LatencyTolerance),
+    -- | Required. The parent app (package name) of the base plan to activate.
+    packageName :: (Core.Maybe Core.Text),
+    -- | Required. The parent subscription (ID) of the base plan to activate.
+    productId :: (Core.Maybe Core.Text)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'ActivateBasePlanRequest' with the minimum fields required to make a request.
+newActivateBasePlanRequest ::
+  ActivateBasePlanRequest
+newActivateBasePlanRequest =
+  ActivateBasePlanRequest
+    { basePlanId = Core.Nothing,
+      latencyTolerance = Core.Nothing,
+      packageName = Core.Nothing,
+      productId = Core.Nothing
+    }
+
+instance Core.FromJSON ActivateBasePlanRequest where
+  parseJSON =
+    Core.withObject
+      "ActivateBasePlanRequest"
+      ( \o ->
+          ActivateBasePlanRequest
+            Core.<$> (o Core..:? "basePlanId")
+            Core.<*> (o Core..:? "latencyTolerance")
+            Core.<*> (o Core..:? "packageName")
+            Core.<*> (o Core..:? "productId")
+      )
+
+instance Core.ToJSON ActivateBasePlanRequest where
+  toJSON ActivateBasePlanRequest {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("basePlanId" Core..=) Core.<$> basePlanId,
+            ("latencyTolerance" Core..=) Core.<$> latencyTolerance,
+            ("packageName" Core..=) Core.<$> packageName,
+            ("productId" Core..=) Core.<$> productId
+          ]
+      )
+
+-- | Request message for ActivateSubscriptionOffer.
+--
+-- /See:/ 'newActivateSubscriptionOfferRequest' smart constructor.
+data ActivateSubscriptionOfferRequest = ActivateSubscriptionOfferRequest
+  { -- | Required. The parent base plan (ID) of the offer to activate.
+    basePlanId :: (Core.Maybe Core.Text),
+    -- | Optional. The latency tolerance for the propagation of this product update. Defaults to latency-sensitive.
+    latencyTolerance :: (Core.Maybe ActivateSubscriptionOfferRequest_LatencyTolerance),
+    -- | Required. The unique offer ID of the offer to activate.
+    offerId :: (Core.Maybe Core.Text),
+    -- | Required. The parent app (package name) of the offer to activate.
+    packageName :: (Core.Maybe Core.Text),
+    -- | Required. The parent subscription (ID) of the offer to activate.
+    productId :: (Core.Maybe Core.Text)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'ActivateSubscriptionOfferRequest' with the minimum fields required to make a request.
+newActivateSubscriptionOfferRequest ::
+  ActivateSubscriptionOfferRequest
+newActivateSubscriptionOfferRequest =
+  ActivateSubscriptionOfferRequest
+    { basePlanId = Core.Nothing,
+      latencyTolerance = Core.Nothing,
+      offerId = Core.Nothing,
+      packageName = Core.Nothing,
+      productId = Core.Nothing
+    }
+
+instance Core.FromJSON ActivateSubscriptionOfferRequest where
+  parseJSON =
+    Core.withObject
+      "ActivateSubscriptionOfferRequest"
+      ( \o ->
+          ActivateSubscriptionOfferRequest
+            Core.<$> (o Core..:? "basePlanId")
+            Core.<*> (o Core..:? "latencyTolerance")
+            Core.<*> (o Core..:? "offerId")
+            Core.<*> (o Core..:? "packageName")
+            Core.<*> (o Core..:? "productId")
+      )
+
+instance Core.ToJSON ActivateSubscriptionOfferRequest where
+  toJSON ActivateSubscriptionOfferRequest {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("basePlanId" Core..=) Core.<$> basePlanId,
+            ("latencyTolerance" Core..=) Core.<$> latencyTolerance,
+            ("offerId" Core..=) Core.<$> offerId,
+            ("packageName" Core..=) Core.<$> packageName,
+            ("productId" Core..=) Core.<$> productId
+          ]
+      )
+
+-- | Request message for AddTargeting.
+--
+-- /See:/ 'newAddTargetingRequest' smart constructor.
+newtype AddTargetingRequest = AddTargetingRequest
+  { -- | Specifies targeting updates such as regions, android sdk versions etc.
+    targetingUpdate :: (Core.Maybe TargetingUpdate)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'AddTargetingRequest' with the minimum fields required to make a request.
+newAddTargetingRequest ::
+  AddTargetingRequest
+newAddTargetingRequest =
+  AddTargetingRequest {targetingUpdate = Core.Nothing}
+
+instance Core.FromJSON AddTargetingRequest where
+  parseJSON =
+    Core.withObject
+      "AddTargetingRequest"
+      ( \o ->
+          AddTargetingRequest Core.<$> (o Core..:? "targetingUpdate")
+      )
+
+instance Core.ToJSON AddTargetingRequest where
+  toJSON AddTargetingRequest {..} =
+    Core.object
+      ( Core.catMaybes
+          [("targetingUpdate" Core..=) Core.<$> targetingUpdate]
+      )
+
+-- | Response message for AddTargeting.
+--
+-- /See:/ 'newAddTargetingResponse' smart constructor.
+data AddTargetingResponse = AddTargetingResponse
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'AddTargetingResponse' with the minimum fields required to make a request.
+newAddTargetingResponse ::
+  AddTargetingResponse
+newAddTargetingResponse = AddTargetingResponse
+
+instance Core.FromJSON AddTargetingResponse where
+  parseJSON =
+    Core.withObject
+      "AddTargetingResponse"
+      (\o -> Core.pure AddTargetingResponse)
+
+instance Core.ToJSON AddTargetingResponse where
+  toJSON = Core.const Core.emptyObject
+
+-- | Object representation to describe all set of users.
+--
+-- /See:/ 'newAllUsers' smart constructor.
+newtype AllUsers = AllUsers
+  { -- | Required. Set to true if all set of users are needed.
+    isAllUsersRequested :: (Core.Maybe Core.Bool)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'AllUsers' with the minimum fields required to make a request.
+newAllUsers ::
+  AllUsers
+newAllUsers = AllUsers {isAllUsersRequested = Core.Nothing}
+
+instance Core.FromJSON AllUsers where
+  parseJSON =
+    Core.withObject
+      "AllUsers"
+      (\o -> AllUsers Core.<$> (o Core..:? "isAllUsersRequested"))
+
+instance Core.ToJSON AllUsers where
+  toJSON AllUsers {..} =
+    Core.object
+      ( Core.catMaybes
+          [("isAllUsersRequested" Core..=) Core.<$> isAllUsersRequested]
+      )
+
+-- | Android api level targeting data for app recovery action targeting.
+--
+-- /See:/ 'newAndroidSdks' smart constructor.
+newtype AndroidSdks = AndroidSdks
+  { -- | Android api levels of devices targeted by recovery action. See https:\/\/developer.android.com\/guide\/topics\/manifest\/uses-sdk-element#ApiLevels for different api levels in android.
+    sdkLevels :: (Core.Maybe [Core.Int64])
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'AndroidSdks' with the minimum fields required to make a request.
+newAndroidSdks ::
+  AndroidSdks
+newAndroidSdks = AndroidSdks {sdkLevels = Core.Nothing}
+
+instance Core.FromJSON AndroidSdks where
+  parseJSON =
+    Core.withObject
+      "AndroidSdks"
+      ( \o ->
+          AndroidSdks
+            Core.<$> ( o
+                         Core..:? "sdkLevels"
+                         Core.<&> Core.fmap (Core.fmap Core.fromAsText)
+                     )
+      )
+
+instance Core.ToJSON AndroidSdks where
+  toJSON AndroidSdks {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("sdkLevels" Core..=)
+              Core.. Core.fmap Core.AsText
+              Core.<$> sdkLevels
+          ]
+      )
+
+-- | Information about an APK. The resource for ApksService.
+--
+-- /See:/ 'newApk' smart constructor.
+data Apk = Apk
+  { -- | Information about the binary payload of this APK.
+    binary :: (Core.Maybe ApkBinary),
+    -- | The version code of the APK, as specified in the manifest file.
+    versionCode :: (Core.Maybe Core.Int32)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'Apk' with the minimum fields required to make a request.
+newApk ::
+  Apk
+newApk = Apk {binary = Core.Nothing, versionCode = Core.Nothing}
+
+instance Core.FromJSON Apk where
+  parseJSON =
+    Core.withObject
+      "Apk"
+      ( \o ->
+          Apk
+            Core.<$> (o Core..:? "binary")
+            Core.<*> (o Core..:? "versionCode")
+      )
+
+instance Core.ToJSON Apk where
+  toJSON Apk {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("binary" Core..=) Core.<$> binary,
+            ("versionCode" Core..=) Core.<$> versionCode
+          ]
+      )
+
+-- | Represents the binary payload of an APK.
+--
+-- /See:/ 'newApkBinary' smart constructor.
+data ApkBinary = ApkBinary
+  { -- | A sha1 hash of the APK payload, encoded as a hex string and matching the output of the sha1sum command.
+    sha1 :: (Core.Maybe Core.Text),
+    -- | A sha256 hash of the APK payload, encoded as a hex string and matching the output of the sha256sum command.
+    sha256 :: (Core.Maybe Core.Text)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'ApkBinary' with the minimum fields required to make a request.
+newApkBinary ::
+  ApkBinary
+newApkBinary =
+  ApkBinary {sha1 = Core.Nothing, sha256 = Core.Nothing}
+
+instance Core.FromJSON ApkBinary where
+  parseJSON =
+    Core.withObject
+      "ApkBinary"
+      ( \o ->
+          ApkBinary
+            Core.<$> (o Core..:? "sha1")
+            Core.<*> (o Core..:? "sha256")
+      )
+
+instance Core.ToJSON ApkBinary where
+  toJSON ApkBinary {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("sha1" Core..=) Core.<$> sha1,
+            ("sha256" Core..=) Core.<$> sha256
+          ]
+      )
+
+-- | Description of the created apks.
+--
+-- /See:/ 'newApkDescription' smart constructor.
+data ApkDescription = ApkDescription
+  { -- | Set only for asset slices.
+    assetSliceMetadata :: (Core.Maybe SplitApkMetadata),
+    -- | Set only for Instant split APKs.
+    instantApkMetadata :: (Core.Maybe SplitApkMetadata),
+    -- | Path of the Apk, will be in the following format: .apk where DownloadId is the ID used to download the apk using GeneratedApks.Download API.
+    path :: (Core.Maybe Core.Text),
+    -- | Set only for Split APKs.
+    splitApkMetadata :: (Core.Maybe SplitApkMetadata),
+    -- | Set only for standalone APKs.
+    standaloneApkMetadata :: (Core.Maybe StandaloneApkMetadata),
+    -- | Apk-level targeting.
+    targeting :: (Core.Maybe ApkTargeting)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'ApkDescription' with the minimum fields required to make a request.
+newApkDescription ::
+  ApkDescription
+newApkDescription =
+  ApkDescription
+    { assetSliceMetadata = Core.Nothing,
+      instantApkMetadata = Core.Nothing,
+      path = Core.Nothing,
+      splitApkMetadata = Core.Nothing,
+      standaloneApkMetadata = Core.Nothing,
+      targeting = Core.Nothing
+    }
+
+instance Core.FromJSON ApkDescription where
+  parseJSON =
+    Core.withObject
+      "ApkDescription"
+      ( \o ->
+          ApkDescription
+            Core.<$> (o Core..:? "assetSliceMetadata")
+            Core.<*> (o Core..:? "instantApkMetadata")
+            Core.<*> (o Core..:? "path")
+            Core.<*> (o Core..:? "splitApkMetadata")
+            Core.<*> (o Core..:? "standaloneApkMetadata")
+            Core.<*> (o Core..:? "targeting")
+      )
+
+instance Core.ToJSON ApkDescription where
+  toJSON ApkDescription {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("assetSliceMetadata" Core..=) Core.<$> assetSliceMetadata,
+            ("instantApkMetadata" Core..=) Core.<$> instantApkMetadata,
+            ("path" Core..=) Core.<$> path,
+            ("splitApkMetadata" Core..=) Core.<$> splitApkMetadata,
+            ("standaloneApkMetadata" Core..=) Core.<$> standaloneApkMetadata,
+            ("targeting" Core..=) Core.<$> targeting
+          ]
+      )
+
+-- | A set of apks representing a module.
+--
+-- /See:/ 'newApkSet' smart constructor.
+data ApkSet = ApkSet
+  { -- | Description of the generated apks.
+    apkDescription :: (Core.Maybe [ApkDescription]),
+    -- | Metadata about the module represented by this ApkSet
+    moduleMetadata :: (Core.Maybe ModuleMetadata)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'ApkSet' with the minimum fields required to make a request.
+newApkSet ::
+  ApkSet
+newApkSet =
+  ApkSet
+    { apkDescription = Core.Nothing,
+      moduleMetadata = Core.Nothing
+    }
+
+instance Core.FromJSON ApkSet where
+  parseJSON =
+    Core.withObject
+      "ApkSet"
+      ( \o ->
+          ApkSet
+            Core.<$> (o Core..:? "apkDescription")
+            Core.<*> (o Core..:? "moduleMetadata")
+      )
+
+instance Core.ToJSON ApkSet where
+  toJSON ApkSet {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("apkDescription" Core..=) Core.<$> apkDescription,
+            ("moduleMetadata" Core..=) Core.<$> moduleMetadata
+          ]
+      )
+
+-- | Represents a set of apk-level targetings.
+--
+-- /See:/ 'newApkTargeting' smart constructor.
+data ApkTargeting = ApkTargeting
+  { -- | The abi that the apk targets
+    abiTargeting :: (Core.Maybe AbiTargeting),
+    -- | The language that the apk targets
+    languageTargeting :: (Core.Maybe LanguageTargeting),
+    -- | Multi-api-level targeting.
+    multiAbiTargeting :: (Core.Maybe MultiAbiTargeting),
+    -- | The screen density that this apk supports.
+    screenDensityTargeting :: (Core.Maybe ScreenDensityTargeting),
+    -- | The sdk version that the apk targets
+    sdkVersionTargeting :: (Core.Maybe SdkVersionTargeting),
+    -- | Texture-compression-format-level targeting
+    textureCompressionFormatTargeting :: (Core.Maybe TextureCompressionFormatTargeting)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'ApkTargeting' with the minimum fields required to make a request.
+newApkTargeting ::
+  ApkTargeting
+newApkTargeting =
+  ApkTargeting
+    { abiTargeting = Core.Nothing,
+      languageTargeting = Core.Nothing,
+      multiAbiTargeting = Core.Nothing,
+      screenDensityTargeting = Core.Nothing,
+      sdkVersionTargeting = Core.Nothing,
+      textureCompressionFormatTargeting = Core.Nothing
+    }
+
+instance Core.FromJSON ApkTargeting where
+  parseJSON =
+    Core.withObject
+      "ApkTargeting"
+      ( \o ->
+          ApkTargeting
+            Core.<$> (o Core..:? "abiTargeting")
+            Core.<*> (o Core..:? "languageTargeting")
+            Core.<*> (o Core..:? "multiAbiTargeting")
+            Core.<*> (o Core..:? "screenDensityTargeting")
+            Core.<*> (o Core..:? "sdkVersionTargeting")
+            Core.<*> (o Core..:? "textureCompressionFormatTargeting")
+      )
+
+instance Core.ToJSON ApkTargeting where
+  toJSON ApkTargeting {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("abiTargeting" Core..=) Core.<$> abiTargeting,
+            ("languageTargeting" Core..=) Core.<$> languageTargeting,
+            ("multiAbiTargeting" Core..=) Core.<$> multiAbiTargeting,
+            ("screenDensityTargeting" Core..=) Core.<$> screenDensityTargeting,
+            ("sdkVersionTargeting" Core..=) Core.<$> sdkVersionTargeting,
+            ("textureCompressionFormatTargeting" Core..=)
+              Core.<$> textureCompressionFormatTargeting
+          ]
+      )
+
+-- | Request to create a new externally hosted APK.
+--
+-- /See:/ 'newApksAddExternallyHostedRequest' smart constructor.
+newtype ApksAddExternallyHostedRequest = ApksAddExternallyHostedRequest
+  { -- | The definition of the externally-hosted APK and where it is located.
+    externallyHostedApk :: (Core.Maybe ExternallyHostedApk)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'ApksAddExternallyHostedRequest' with the minimum fields required to make a request.
+newApksAddExternallyHostedRequest ::
+  ApksAddExternallyHostedRequest
+newApksAddExternallyHostedRequest =
+  ApksAddExternallyHostedRequest
+    { externallyHostedApk =
+        Core.Nothing
+    }
+
+instance Core.FromJSON ApksAddExternallyHostedRequest where
+  parseJSON =
+    Core.withObject
+      "ApksAddExternallyHostedRequest"
+      ( \o ->
+          ApksAddExternallyHostedRequest
+            Core.<$> (o Core..:? "externallyHostedApk")
+      )
+
+instance Core.ToJSON ApksAddExternallyHostedRequest where
+  toJSON ApksAddExternallyHostedRequest {..} =
+    Core.object
+      ( Core.catMaybes
+          [("externallyHostedApk" Core..=) Core.<$> externallyHostedApk]
+      )
+
+-- | Response for creating a new externally hosted APK.
+--
+-- /See:/ 'newApksAddExternallyHostedResponse' smart constructor.
+newtype ApksAddExternallyHostedResponse = ApksAddExternallyHostedResponse
+  { -- | The definition of the externally-hosted APK and where it is located.
+    externallyHostedApk :: (Core.Maybe ExternallyHostedApk)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'ApksAddExternallyHostedResponse' with the minimum fields required to make a request.
+newApksAddExternallyHostedResponse ::
+  ApksAddExternallyHostedResponse
+newApksAddExternallyHostedResponse =
+  ApksAddExternallyHostedResponse
+    { externallyHostedApk =
+        Core.Nothing
+    }
+
+instance Core.FromJSON ApksAddExternallyHostedResponse where
+  parseJSON =
+    Core.withObject
+      "ApksAddExternallyHostedResponse"
+      ( \o ->
+          ApksAddExternallyHostedResponse
+            Core.<$> (o Core..:? "externallyHostedApk")
+      )
+
+instance Core.ToJSON ApksAddExternallyHostedResponse where
+  toJSON ApksAddExternallyHostedResponse {..} =
+    Core.object
+      ( Core.catMaybes
+          [("externallyHostedApk" Core..=) Core.<$> externallyHostedApk]
+      )
+
+-- | Response listing all APKs.
+--
+-- /See:/ 'newApksListResponse' smart constructor.
+data ApksListResponse = ApksListResponse
+  { -- | All APKs.
+    apks :: (Core.Maybe [Apk]),
+    -- | The kind of this response (\"androidpublisher#apksListResponse\").
+    kind :: (Core.Maybe Core.Text)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'ApksListResponse' with the minimum fields required to make a request.
+newApksListResponse ::
+  ApksListResponse
+newApksListResponse =
+  ApksListResponse {apks = Core.Nothing, kind = Core.Nothing}
+
+instance Core.FromJSON ApksListResponse where
+  parseJSON =
+    Core.withObject
+      "ApksListResponse"
+      ( \o ->
+          ApksListResponse
+            Core.<$> (o Core..:? "apks")
+            Core.<*> (o Core..:? "kind")
+      )
+
+instance Core.ToJSON ApksListResponse where
+  toJSON ApksListResponse {..} =
+    Core.object
+      ( Core.catMaybes
+          [("apks" Core..=) Core.<$> apks, ("kind" Core..=) Core.<$> kind]
+      )
+
+-- | The app details. The resource for DetailsService.
+--
+-- /See:/ 'newAppDetails' smart constructor.
+data AppDetails = AppDetails
+  { -- | The user-visible support email for this app.
+    contactEmail :: (Core.Maybe Core.Text),
+    -- | The user-visible support telephone number for this app.
+    contactPhone :: (Core.Maybe Core.Text),
+    -- | The user-visible website for this app.
+    contactWebsite :: (Core.Maybe Core.Text),
+    -- | Default language code, in BCP 47 format (eg \"en-US\").
+    defaultLanguage :: (Core.Maybe Core.Text)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'AppDetails' with the minimum fields required to make a request.
+newAppDetails ::
+  AppDetails
+newAppDetails =
+  AppDetails
+    { contactEmail = Core.Nothing,
+      contactPhone = Core.Nothing,
+      contactWebsite = Core.Nothing,
+      defaultLanguage = Core.Nothing
+    }
+
+instance Core.FromJSON AppDetails where
+  parseJSON =
+    Core.withObject
+      "AppDetails"
+      ( \o ->
+          AppDetails
+            Core.<$> (o Core..:? "contactEmail")
+            Core.<*> (o Core..:? "contactPhone")
+            Core.<*> (o Core..:? "contactWebsite")
+            Core.<*> (o Core..:? "defaultLanguage")
+      )
+
+instance Core.ToJSON AppDetails where
+  toJSON AppDetails {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("contactEmail" Core..=) Core.<$> contactEmail,
+            ("contactPhone" Core..=) Core.<$> contactPhone,
+            ("contactWebsite" Core..=) Core.<$> contactWebsite,
+            ("defaultLanguage" Core..=) Core.<$> defaultLanguage
+          ]
+      )
+
+-- | An app edit. The resource for EditsService.
+--
+-- /See:/ 'newAppEdit' smart constructor.
+data AppEdit = AppEdit
+  { -- | Output only. The time (as seconds since Epoch) at which the edit will expire and will be no longer valid for use.
+    expiryTimeSeconds :: (Core.Maybe Core.Text),
+    -- | Output only. Identifier of the edit. Can be used in subsequent API calls.
+    id :: (Core.Maybe Core.Text)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'AppEdit' with the minimum fields required to make a request.
+newAppEdit ::
+  AppEdit
+newAppEdit =
+  AppEdit {expiryTimeSeconds = Core.Nothing, id = Core.Nothing}
+
+instance Core.FromJSON AppEdit where
+  parseJSON =
+    Core.withObject
+      "AppEdit"
+      ( \o ->
+          AppEdit
+            Core.<$> (o Core..:? "expiryTimeSeconds")
+            Core.<*> (o Core..:? "id")
+      )
+
+instance Core.ToJSON AppEdit where
+  toJSON AppEdit {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("expiryTimeSeconds" Core..=) Core.<$> expiryTimeSeconds,
+            ("id" Core..=) Core.<$> id
+          ]
+      )
+
+-- | Information about an app recovery action.
+--
+-- /See:/ 'newAppRecoveryAction' smart constructor.
+data AppRecoveryAction = AppRecoveryAction
+  { -- | ID corresponding to the app recovery action.
+    appRecoveryId :: (Core.Maybe Core.Int64),
+    -- | Timestamp of when the app recovery action is canceled by the developer. Only set if the recovery action has been canceled.
+    cancelTime :: (Core.Maybe Core.DateTime),
+    -- | Timestamp of when the app recovery action is created by the developer. It is always set after creation of the recovery action.
+    createTime :: (Core.Maybe Core.DateTime),
+    -- | Timestamp of when the app recovery action is deployed to the users. Only set if the recovery action has been deployed.
+    deployTime :: (Core.Maybe Core.DateTime),
+    -- | Timestamp of when the developer last updated recovery action. In case the action is cancelled, it corresponds to cancellation time. It is always set after creation of the recovery action.
+    lastUpdateTime :: (Core.Maybe Core.DateTime),
+    -- | Data about the remote in-app update action such as such as recovered user base, recoverable user base etc. Set only if the recovery action type is Remote In-App Update.
+    remoteInAppUpdateData :: (Core.Maybe RemoteInAppUpdateData),
+    -- | The status of the recovery action.
+    status :: (Core.Maybe AppRecoveryAction_Status),
+    -- | Specifies targeting criteria for the recovery action such as regions, android sdk versions, app versions etc.
+    targeting :: (Core.Maybe Targeting)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'AppRecoveryAction' with the minimum fields required to make a request.
+newAppRecoveryAction ::
+  AppRecoveryAction
+newAppRecoveryAction =
+  AppRecoveryAction
+    { appRecoveryId = Core.Nothing,
+      cancelTime = Core.Nothing,
+      createTime = Core.Nothing,
+      deployTime = Core.Nothing,
+      lastUpdateTime = Core.Nothing,
+      remoteInAppUpdateData = Core.Nothing,
+      status = Core.Nothing,
+      targeting = Core.Nothing
+    }
+
+instance Core.FromJSON AppRecoveryAction where
+  parseJSON =
+    Core.withObject
+      "AppRecoveryAction"
+      ( \o ->
+          AppRecoveryAction
+            Core.<$> (o Core..:? "appRecoveryId" Core.<&> Core.fmap Core.fromAsText)
+            Core.<*> (o Core..:? "cancelTime")
+            Core.<*> (o Core..:? "createTime")
+            Core.<*> (o Core..:? "deployTime")
+            Core.<*> (o Core..:? "lastUpdateTime")
+            Core.<*> (o Core..:? "remoteInAppUpdateData")
+            Core.<*> (o Core..:? "status")
+            Core.<*> (o Core..:? "targeting")
+      )
+
+instance Core.ToJSON AppRecoveryAction where
+  toJSON AppRecoveryAction {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("appRecoveryId" Core..=)
+              Core.. Core.AsText
+              Core.<$> appRecoveryId,
+            ("cancelTime" Core..=) Core.<$> cancelTime,
+            ("createTime" Core..=) Core.<$> createTime,
+            ("deployTime" Core..=) Core.<$> deployTime,
+            ("lastUpdateTime" Core..=) Core.<$> lastUpdateTime,
+            ("remoteInAppUpdateData" Core..=) Core.<$> remoteInAppUpdateData,
+            ("status" Core..=) Core.<$> status,
+            ("targeting" Core..=) Core.<$> targeting
+          ]
+      )
+
+-- | Data format for a list of app versions.
+--
+-- /See:/ 'newAppVersionList' smart constructor.
+newtype AppVersionList = AppVersionList
+  { -- | List of app version codes.
+    versionCodes :: (Core.Maybe [Core.Int64])
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'AppVersionList' with the minimum fields required to make a request.
+newAppVersionList ::
+  AppVersionList
+newAppVersionList = AppVersionList {versionCodes = Core.Nothing}
+
+instance Core.FromJSON AppVersionList where
+  parseJSON =
+    Core.withObject
+      "AppVersionList"
+      ( \o ->
+          AppVersionList
+            Core.<$> ( o
+                         Core..:? "versionCodes"
+                         Core.<&> Core.fmap (Core.fmap Core.fromAsText)
+                     )
+      )
+
+instance Core.ToJSON AppVersionList where
+  toJSON AppVersionList {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("versionCodes" Core..=)
+              Core.. Core.fmap Core.AsText
+              Core.<$> versionCodes
+          ]
+      )
+
+-- | Data format for a continuous range of app versions.
+--
+-- /See:/ 'newAppVersionRange' smart constructor.
+data AppVersionRange = AppVersionRange
+  { -- | Highest app version in the range, inclusive.
+    versionCodeEnd :: (Core.Maybe Core.Int64),
+    -- | Lowest app version in the range, inclusive.
+    versionCodeStart :: (Core.Maybe Core.Int64)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'AppVersionRange' with the minimum fields required to make a request.
+newAppVersionRange ::
+  AppVersionRange
+newAppVersionRange =
+  AppVersionRange
+    { versionCodeEnd = Core.Nothing,
+      versionCodeStart = Core.Nothing
+    }
+
+instance Core.FromJSON AppVersionRange where
+  parseJSON =
+    Core.withObject
+      "AppVersionRange"
+      ( \o ->
+          AppVersionRange
+            Core.<$> (o Core..:? "versionCodeEnd" Core.<&> Core.fmap Core.fromAsText)
+            Core.<*> (o Core..:? "versionCodeStart" Core.<&> Core.fmap Core.fromAsText)
+      )
+
+instance Core.ToJSON AppVersionRange where
+  toJSON AppVersionRange {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("versionCodeEnd" Core..=)
+              Core.. Core.AsText
+              Core.<$> versionCodeEnd,
+            ("versionCodeStart" Core..=)
+              Core.. Core.AsText
+              Core.<$> versionCodeStart
+          ]
+      )
+
+-- | Deprecated: subscription archiving is not supported.
+--
+-- /See:/ 'newArchiveSubscriptionRequest' smart constructor.
+data ArchiveSubscriptionRequest = ArchiveSubscriptionRequest
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'ArchiveSubscriptionRequest' with the minimum fields required to make a request.
+newArchiveSubscriptionRequest ::
+  ArchiveSubscriptionRequest
+newArchiveSubscriptionRequest = ArchiveSubscriptionRequest
+
+instance Core.FromJSON ArchiveSubscriptionRequest where
+  parseJSON =
+    Core.withObject
+      "ArchiveSubscriptionRequest"
+      (\o -> Core.pure ArchiveSubscriptionRequest)
+
+instance Core.ToJSON ArchiveSubscriptionRequest where
+  toJSON = Core.const Core.emptyObject
+
+-- | Metadata of an asset module.
+--
+-- /See:/ 'newAssetModuleMetadata' smart constructor.
+data AssetModuleMetadata = AssetModuleMetadata
+  { -- | Indicates the delivery type for persistent install.
+    deliveryType :: (Core.Maybe AssetModuleMetadata_DeliveryType),
+    -- | Module name.
+    name :: (Core.Maybe Core.Text)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'AssetModuleMetadata' with the minimum fields required to make a request.
+newAssetModuleMetadata ::
+  AssetModuleMetadata
+newAssetModuleMetadata =
+  AssetModuleMetadata
+    { deliveryType = Core.Nothing,
+      name = Core.Nothing
+    }
+
+instance Core.FromJSON AssetModuleMetadata where
+  parseJSON =
+    Core.withObject
+      "AssetModuleMetadata"
+      ( \o ->
+          AssetModuleMetadata
+            Core.<$> (o Core..:? "deliveryType")
+            Core.<*> (o Core..:? "name")
+      )
+
+instance Core.ToJSON AssetModuleMetadata where
+  toJSON AssetModuleMetadata {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("deliveryType" Core..=) Core.<$> deliveryType,
+            ("name" Core..=) Core.<$> name
+          ]
+      )
+
+-- | Set of asset slices belonging to a single asset module.
+--
+-- /See:/ 'newAssetSliceSet' smart constructor.
+data AssetSliceSet = AssetSliceSet
+  { -- | Asset slices.
+    apkDescription :: (Core.Maybe [ApkDescription]),
+    -- | Module level metadata.
+    assetModuleMetadata :: (Core.Maybe AssetModuleMetadata)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'AssetSliceSet' with the minimum fields required to make a request.
+newAssetSliceSet ::
+  AssetSliceSet
+newAssetSliceSet =
+  AssetSliceSet
+    { apkDescription = Core.Nothing,
+      assetModuleMetadata = Core.Nothing
+    }
+
+instance Core.FromJSON AssetSliceSet where
+  parseJSON =
+    Core.withObject
+      "AssetSliceSet"
+      ( \o ->
+          AssetSliceSet
+            Core.<$> (o Core..:? "apkDescription")
+            Core.<*> (o Core..:? "assetModuleMetadata")
+      )
+
+instance Core.ToJSON AssetSliceSet where
+  toJSON AssetSliceSet {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("apkDescription" Core..=) Core.<$> apkDescription,
+            ("assetModuleMetadata" Core..=) Core.<$> assetModuleMetadata
+          ]
+      )
+
+-- | Represents a base plan that automatically renews at the end of its subscription period.
+--
+-- /See:/ 'newAutoRenewingBasePlanType' smart constructor.
+data AutoRenewingBasePlanType = AutoRenewingBasePlanType
+  { -- | Optional. Account hold period of the subscription, specified in ISO 8601 format. Acceptable values must be in days and between P0D and P60D. If not specified, the default value is P30D. The sum of gracePeriodDuration and accountHoldDuration must be between P30D and P60D days, inclusive.
+    accountHoldDuration :: (Core.Maybe Core.Text),
+    -- | Required. Immutable. Subscription period, specified in ISO 8601 format. For a list of acceptable billing periods, refer to the help center. The duration is immutable after the base plan is created.
+    billingPeriodDuration :: (Core.Maybe Core.Text),
+    -- | Grace period of the subscription, specified in ISO 8601 format. Acceptable values must be in days and between P0D and the lesser of 30D and base plan billing period. If not specified, a default value will be used based on the billing period. The sum of gracePeriodDuration and accountHoldDuration must be between P30D and P60D days, inclusive.
+    gracePeriodDuration :: (Core.Maybe Core.Text),
+    -- | Whether the renewing base plan is backward compatible. The backward compatible base plan is returned by the Google Play Billing Library deprecated method querySkuDetailsAsync(). Only one renewing base plan can be marked as legacy compatible for a given subscription.
+    legacyCompatible :: (Core.Maybe Core.Bool),
+    -- | Subscription offer id which is legacy compatible. The backward compatible subscription offer is returned by the Google Play Billing Library deprecated method querySkuDetailsAsync(). Only one subscription offer can be marked as legacy compatible for a given renewing base plan. To have no Subscription offer as legacy compatible set this field as empty string.
+    legacyCompatibleSubscriptionOfferId :: (Core.Maybe Core.Text),
+    -- | The proration mode for the base plan determines what happens when a user switches to this plan from another base plan. If unspecified, defaults to CHARGE/ON/NEXT/BILLING/DATE.
+    prorationMode :: (Core.Maybe AutoRenewingBasePlanType_ProrationMode),
+    -- | Whether users should be able to resubscribe to this base plan in Google Play surfaces. Defaults to RESUBSCRIBE/STATE/ACTIVE if not specified.
+    resubscribeState :: (Core.Maybe AutoRenewingBasePlanType_ResubscribeState)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'AutoRenewingBasePlanType' with the minimum fields required to make a request.
+newAutoRenewingBasePlanType ::
+  AutoRenewingBasePlanType
+newAutoRenewingBasePlanType =
+  AutoRenewingBasePlanType
+    { accountHoldDuration = Core.Nothing,
+      billingPeriodDuration = Core.Nothing,
+      gracePeriodDuration = Core.Nothing,
+      legacyCompatible = Core.Nothing,
+      legacyCompatibleSubscriptionOfferId = Core.Nothing,
+      prorationMode = Core.Nothing,
+      resubscribeState = Core.Nothing
+    }
+
+instance Core.FromJSON AutoRenewingBasePlanType where
+  parseJSON =
+    Core.withObject
+      "AutoRenewingBasePlanType"
+      ( \o ->
+          AutoRenewingBasePlanType
+            Core.<$> (o Core..:? "accountHoldDuration")
+            Core.<*> (o Core..:? "billingPeriodDuration")
+            Core.<*> (o Core..:? "gracePeriodDuration")
+            Core.<*> (o Core..:? "legacyCompatible")
+            Core.<*> (o Core..:? "legacyCompatibleSubscriptionOfferId")
+            Core.<*> (o Core..:? "prorationMode")
+            Core.<*> (o Core..:? "resubscribeState")
+      )
+
+instance Core.ToJSON AutoRenewingBasePlanType where
+  toJSON AutoRenewingBasePlanType {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("accountHoldDuration" Core..=) Core.<$> accountHoldDuration,
+            ("billingPeriodDuration" Core..=) Core.<$> billingPeriodDuration,
+            ("gracePeriodDuration" Core..=) Core.<$> gracePeriodDuration,
+            ("legacyCompatible" Core..=) Core.<$> legacyCompatible,
+            ("legacyCompatibleSubscriptionOfferId" Core..=)
+              Core.<$> legacyCompatibleSubscriptionOfferId,
+            ("prorationMode" Core..=) Core.<$> prorationMode,
+            ("resubscribeState" Core..=) Core.<$> resubscribeState
+          ]
+      )
+
+-- | Information related to an auto renewing plan.
+--
+-- /See:/ 'newAutoRenewingPlan' smart constructor.
+data AutoRenewingPlan = AutoRenewingPlan
+  { -- | If the subscription is currently set to auto-renew, e.g. the user has not canceled the subscription
+    autoRenewEnabled :: (Core.Maybe Core.Bool),
+    -- | The installment plan commitment and state related info for the auto renewing plan.
+    installmentDetails :: (Core.Maybe InstallmentPlan),
+    -- | The information of the last price change for the item since subscription signup.
+    priceChangeDetails :: (Core.Maybe SubscriptionItemPriceChangeDetails),
+    -- | The current recurring price of the auto renewing plan.
+    recurringPrice :: (Core.Maybe Money)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'AutoRenewingPlan' with the minimum fields required to make a request.
+newAutoRenewingPlan ::
+  AutoRenewingPlan
+newAutoRenewingPlan =
+  AutoRenewingPlan
+    { autoRenewEnabled = Core.Nothing,
+      installmentDetails = Core.Nothing,
+      priceChangeDetails = Core.Nothing,
+      recurringPrice = Core.Nothing
+    }
+
+instance Core.FromJSON AutoRenewingPlan where
+  parseJSON =
+    Core.withObject
+      "AutoRenewingPlan"
+      ( \o ->
+          AutoRenewingPlan
+            Core.<$> (o Core..:? "autoRenewEnabled")
+            Core.<*> (o Core..:? "installmentDetails")
+            Core.<*> (o Core..:? "priceChangeDetails")
+            Core.<*> (o Core..:? "recurringPrice")
+      )
+
+instance Core.ToJSON AutoRenewingPlan where
+  toJSON AutoRenewingPlan {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("autoRenewEnabled" Core..=) Core.<$> autoRenewEnabled,
+            ("installmentDetails" Core..=) Core.<$> installmentDetails,
+            ("priceChangeDetails" Core..=) Core.<$> priceChangeDetails,
+            ("recurringPrice" Core..=) Core.<$> recurringPrice
+          ]
+      )
+
+-- | A single base plan for a subscription.
+--
+-- /See:/ 'newBasePlan' smart constructor.
+data BasePlan = BasePlan
+  { -- | Set when the base plan automatically renews at a regular interval.
+    autoRenewingBasePlanType :: (Core.Maybe AutoRenewingBasePlanType),
+    -- | Required. Immutable. The unique identifier of this base plan. Must be unique within the subscription, and conform with RFC-1034. That is, this ID can only contain lower-case letters (a-z), numbers (0-9), and hyphens (-), and be at most 63 characters.
+    basePlanId :: (Core.Maybe Core.Text),
+    -- | Set for installments base plans where a user is committed to a specified number of payments.
+    installmentsBasePlanType :: (Core.Maybe InstallmentsBasePlanType),
+    -- | List of up to 20 custom tags specified for this base plan, and returned to the app through the billing library. Subscription offers for this base plan will also receive these offer tags in the billing library.
+    offerTags :: (Core.Maybe [OfferTag]),
+    -- | Pricing information for any new locations Play may launch in the future. If omitted, the BasePlan will not be automatically available any new locations Play may launch in the future.
+    otherRegionsConfig :: (Core.Maybe OtherRegionsBasePlanConfig),
+    -- | Set when the base plan does not automatically renew at the end of the billing period.
+    prepaidBasePlanType :: (Core.Maybe PrepaidBasePlanType),
+    -- | Region-specific information for this base plan.
+    regionalConfigs :: (Core.Maybe [RegionalBasePlanConfig]),
+    -- | Output only. The state of the base plan, i.e. whether it\'s active. Draft and inactive base plans can be activated or deleted. Active base plans can be made inactive. Inactive base plans can be canceled. This field cannot be changed by updating the resource. Use the dedicated endpoints instead.
+    state :: (Core.Maybe BasePlan_State)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'BasePlan' with the minimum fields required to make a request.
+newBasePlan ::
+  BasePlan
+newBasePlan =
+  BasePlan
+    { autoRenewingBasePlanType = Core.Nothing,
+      basePlanId = Core.Nothing,
+      installmentsBasePlanType = Core.Nothing,
+      offerTags = Core.Nothing,
+      otherRegionsConfig = Core.Nothing,
+      prepaidBasePlanType = Core.Nothing,
+      regionalConfigs = Core.Nothing,
+      state = Core.Nothing
+    }
+
+instance Core.FromJSON BasePlan where
+  parseJSON =
+    Core.withObject
+      "BasePlan"
+      ( \o ->
+          BasePlan
+            Core.<$> (o Core..:? "autoRenewingBasePlanType")
+            Core.<*> (o Core..:? "basePlanId")
+            Core.<*> (o Core..:? "installmentsBasePlanType")
+            Core.<*> (o Core..:? "offerTags")
+            Core.<*> (o Core..:? "otherRegionsConfig")
+            Core.<*> (o Core..:? "prepaidBasePlanType")
+            Core.<*> (o Core..:? "regionalConfigs")
+            Core.<*> (o Core..:? "state")
+      )
+
+instance Core.ToJSON BasePlan where
+  toJSON BasePlan {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("autoRenewingBasePlanType" Core..=)
+              Core.<$> autoRenewingBasePlanType,
+            ("basePlanId" Core..=) Core.<$> basePlanId,
+            ("installmentsBasePlanType" Core..=)
+              Core.<$> installmentsBasePlanType,
+            ("offerTags" Core..=) Core.<$> offerTags,
+            ("otherRegionsConfig" Core..=) Core.<$> otherRegionsConfig,
+            ("prepaidBasePlanType" Core..=) Core.<$> prepaidBasePlanType,
+            ("regionalConfigs" Core..=) Core.<$> regionalConfigs,
+            ("state" Core..=) Core.<$> state
+          ]
+      )
+
+-- | Request message for BatchGetSubscriptionOffers endpoint.
+--
+-- /See:/ 'newBatchGetSubscriptionOffersRequest' smart constructor.
+newtype BatchGetSubscriptionOffersRequest = BatchGetSubscriptionOffersRequest
+  { -- | Required. A list of update requests of up to 100 elements. All requests must update different subscriptions.
+    requests :: (Core.Maybe [GetSubscriptionOfferRequest])
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'BatchGetSubscriptionOffersRequest' with the minimum fields required to make a request.
+newBatchGetSubscriptionOffersRequest ::
+  BatchGetSubscriptionOffersRequest
+newBatchGetSubscriptionOffersRequest =
+  BatchGetSubscriptionOffersRequest {requests = Core.Nothing}
+
+instance Core.FromJSON BatchGetSubscriptionOffersRequest where
+  parseJSON =
+    Core.withObject
+      "BatchGetSubscriptionOffersRequest"
+      ( \o ->
+          BatchGetSubscriptionOffersRequest Core.<$> (o Core..:? "requests")
+      )
+
+instance Core.ToJSON BatchGetSubscriptionOffersRequest where
+  toJSON BatchGetSubscriptionOffersRequest {..} =
+    Core.object
+      (Core.catMaybes [("requests" Core..=) Core.<$> requests])
+
+-- | Response message for BatchGetSubscriptionOffers endpoint.
+--
+-- /See:/ 'newBatchGetSubscriptionOffersResponse' smart constructor.
+newtype BatchGetSubscriptionOffersResponse = BatchGetSubscriptionOffersResponse
+  { subscriptionOffers :: (Core.Maybe [SubscriptionOffer])
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'BatchGetSubscriptionOffersResponse' with the minimum fields required to make a request.
+newBatchGetSubscriptionOffersResponse ::
+  BatchGetSubscriptionOffersResponse
+newBatchGetSubscriptionOffersResponse =
+  BatchGetSubscriptionOffersResponse
+    { subscriptionOffers =
+        Core.Nothing
+    }
+
+instance Core.FromJSON BatchGetSubscriptionOffersResponse where
+  parseJSON =
+    Core.withObject
+      "BatchGetSubscriptionOffersResponse"
+      ( \o ->
+          BatchGetSubscriptionOffersResponse
+            Core.<$> (o Core..:? "subscriptionOffers")
+      )
+
+instance Core.ToJSON BatchGetSubscriptionOffersResponse where
+  toJSON BatchGetSubscriptionOffersResponse {..} =
+    Core.object
+      ( Core.catMaybes
+          [("subscriptionOffers" Core..=) Core.<$> subscriptionOffers]
+      )
+
+-- | Response message for BatchGetSubscriptions endpoint.
+--
+-- /See:/ 'newBatchGetSubscriptionsResponse' smart constructor.
+newtype BatchGetSubscriptionsResponse = BatchGetSubscriptionsResponse
+  { -- | The list of requested subscriptions, in the same order as the request.
+    subscriptions :: (Core.Maybe [Subscription])
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'BatchGetSubscriptionsResponse' with the minimum fields required to make a request.
+newBatchGetSubscriptionsResponse ::
+  BatchGetSubscriptionsResponse
+newBatchGetSubscriptionsResponse =
+  BatchGetSubscriptionsResponse {subscriptions = Core.Nothing}
+
+instance Core.FromJSON BatchGetSubscriptionsResponse where
+  parseJSON =
+    Core.withObject
+      "BatchGetSubscriptionsResponse"
+      ( \o ->
+          BatchGetSubscriptionsResponse
+            Core.<$> (o Core..:? "subscriptions")
+      )
+
+instance Core.ToJSON BatchGetSubscriptionsResponse where
+  toJSON BatchGetSubscriptionsResponse {..} =
+    Core.object
+      (Core.catMaybes [("subscriptions" Core..=) Core.<$> subscriptions])
+
+-- | Request message for BatchMigrateBasePlanPrices.
+--
+-- /See:/ 'newBatchMigrateBasePlanPricesRequest' smart constructor.
+newtype BatchMigrateBasePlanPricesRequest = BatchMigrateBasePlanPricesRequest
+  { -- | Required. Up to 100 price migration requests. All requests must update different base plans.
+    requests :: (Core.Maybe [MigrateBasePlanPricesRequest])
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'BatchMigrateBasePlanPricesRequest' with the minimum fields required to make a request.
+newBatchMigrateBasePlanPricesRequest ::
+  BatchMigrateBasePlanPricesRequest
+newBatchMigrateBasePlanPricesRequest =
+  BatchMigrateBasePlanPricesRequest {requests = Core.Nothing}
+
+instance Core.FromJSON BatchMigrateBasePlanPricesRequest where
+  parseJSON =
+    Core.withObject
+      "BatchMigrateBasePlanPricesRequest"
+      ( \o ->
+          BatchMigrateBasePlanPricesRequest Core.<$> (o Core..:? "requests")
+      )
+
+instance Core.ToJSON BatchMigrateBasePlanPricesRequest where
+  toJSON BatchMigrateBasePlanPricesRequest {..} =
+    Core.object
+      (Core.catMaybes [("requests" Core..=) Core.<$> requests])
+
+-- | Response message for BatchMigrateBasePlanPrices.
+--
+-- /See:/ 'newBatchMigrateBasePlanPricesResponse' smart constructor.
+newtype BatchMigrateBasePlanPricesResponse = BatchMigrateBasePlanPricesResponse
+  { -- | Contains one response per requested price migration, in the same order as the request.
+    responses :: (Core.Maybe [MigrateBasePlanPricesResponse])
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'BatchMigrateBasePlanPricesResponse' with the minimum fields required to make a request.
+newBatchMigrateBasePlanPricesResponse ::
+  BatchMigrateBasePlanPricesResponse
+newBatchMigrateBasePlanPricesResponse =
+  BatchMigrateBasePlanPricesResponse {responses = Core.Nothing}
+
+instance Core.FromJSON BatchMigrateBasePlanPricesResponse where
+  parseJSON =
+    Core.withObject
+      "BatchMigrateBasePlanPricesResponse"
+      ( \o ->
+          BatchMigrateBasePlanPricesResponse
+            Core.<$> (o Core..:? "responses")
+      )
+
+instance Core.ToJSON BatchMigrateBasePlanPricesResponse where
+  toJSON BatchMigrateBasePlanPricesResponse {..} =
+    Core.object
+      (Core.catMaybes [("responses" Core..=) Core.<$> responses])
+
+-- | Request message for BatchUpdateBasePlanStates.
+--
+-- /See:/ 'newBatchUpdateBasePlanStatesRequest' smart constructor.
+newtype BatchUpdateBasePlanStatesRequest = BatchUpdateBasePlanStatesRequest
+  { -- | Required. The update request list of up to 100 elements. All requests must update different base plans.
+    requests :: (Core.Maybe [UpdateBasePlanStateRequest])
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'BatchUpdateBasePlanStatesRequest' with the minimum fields required to make a request.
+newBatchUpdateBasePlanStatesRequest ::
+  BatchUpdateBasePlanStatesRequest
+newBatchUpdateBasePlanStatesRequest =
+  BatchUpdateBasePlanStatesRequest {requests = Core.Nothing}
+
+instance Core.FromJSON BatchUpdateBasePlanStatesRequest where
+  parseJSON =
+    Core.withObject
+      "BatchUpdateBasePlanStatesRequest"
+      ( \o ->
+          BatchUpdateBasePlanStatesRequest Core.<$> (o Core..:? "requests")
+      )
+
+instance Core.ToJSON BatchUpdateBasePlanStatesRequest where
+  toJSON BatchUpdateBasePlanStatesRequest {..} =
+    Core.object
+      (Core.catMaybes [("requests" Core..=) Core.<$> requests])
+
+-- | Response message for BatchUpdateBasePlanStates.
+--
+-- /See:/ 'newBatchUpdateBasePlanStatesResponse' smart constructor.
+newtype BatchUpdateBasePlanStatesResponse = BatchUpdateBasePlanStatesResponse
+  { -- | The list of updated subscriptions. This list will match the requests one to one, in the same order.
+    subscriptions :: (Core.Maybe [Subscription])
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'BatchUpdateBasePlanStatesResponse' with the minimum fields required to make a request.
+newBatchUpdateBasePlanStatesResponse ::
+  BatchUpdateBasePlanStatesResponse
+newBatchUpdateBasePlanStatesResponse =
+  BatchUpdateBasePlanStatesResponse {subscriptions = Core.Nothing}
+
+instance Core.FromJSON BatchUpdateBasePlanStatesResponse where
+  parseJSON =
+    Core.withObject
+      "BatchUpdateBasePlanStatesResponse"
+      ( \o ->
+          BatchUpdateBasePlanStatesResponse
+            Core.<$> (o Core..:? "subscriptions")
+      )
+
+instance Core.ToJSON BatchUpdateBasePlanStatesResponse where
+  toJSON BatchUpdateBasePlanStatesResponse {..} =
+    Core.object
+      (Core.catMaybes [("subscriptions" Core..=) Core.<$> subscriptions])
+
+-- | Request message for BatchUpdateSubscriptionOfferStates.
+--
+-- /See:/ 'newBatchUpdateSubscriptionOfferStatesRequest' smart constructor.
+newtype BatchUpdateSubscriptionOfferStatesRequest = BatchUpdateSubscriptionOfferStatesRequest
+  { -- | Required. The update request list of up to 100 elements. All requests must update different offers.
+    requests :: (Core.Maybe [UpdateSubscriptionOfferStateRequest])
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'BatchUpdateSubscriptionOfferStatesRequest' with the minimum fields required to make a request.
+newBatchUpdateSubscriptionOfferStatesRequest ::
+  BatchUpdateSubscriptionOfferStatesRequest
+newBatchUpdateSubscriptionOfferStatesRequest =
+  BatchUpdateSubscriptionOfferStatesRequest
+    { requests =
+        Core.Nothing
+    }
+
+instance Core.FromJSON BatchUpdateSubscriptionOfferStatesRequest where
+  parseJSON =
+    Core.withObject
+      "BatchUpdateSubscriptionOfferStatesRequest"
+      ( \o ->
+          BatchUpdateSubscriptionOfferStatesRequest
+            Core.<$> (o Core..:? "requests")
+      )
+
+instance Core.ToJSON BatchUpdateSubscriptionOfferStatesRequest where
+  toJSON BatchUpdateSubscriptionOfferStatesRequest {..} =
+    Core.object
+      (Core.catMaybes [("requests" Core..=) Core.<$> requests])
+
+-- | Response message for BatchUpdateSubscriptionOfferStates.
+--
+-- /See:/ 'newBatchUpdateSubscriptionOfferStatesResponse' smart constructor.
+newtype BatchUpdateSubscriptionOfferStatesResponse = BatchUpdateSubscriptionOfferStatesResponse
+  { -- | The updated subscription offers list.
+    subscriptionOffers :: (Core.Maybe [SubscriptionOffer])
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'BatchUpdateSubscriptionOfferStatesResponse' with the minimum fields required to make a request.
+newBatchUpdateSubscriptionOfferStatesResponse ::
+  BatchUpdateSubscriptionOfferStatesResponse
+newBatchUpdateSubscriptionOfferStatesResponse =
+  BatchUpdateSubscriptionOfferStatesResponse
+    { subscriptionOffers =
+        Core.Nothing
+    }
+
+instance Core.FromJSON BatchUpdateSubscriptionOfferStatesResponse where
+  parseJSON =
+    Core.withObject
+      "BatchUpdateSubscriptionOfferStatesResponse"
+      ( \o ->
+          BatchUpdateSubscriptionOfferStatesResponse
+            Core.<$> (o Core..:? "subscriptionOffers")
+      )
+
+instance Core.ToJSON BatchUpdateSubscriptionOfferStatesResponse where
+  toJSON BatchUpdateSubscriptionOfferStatesResponse {..} =
+    Core.object
+      ( Core.catMaybes
+          [("subscriptionOffers" Core..=) Core.<$> subscriptionOffers]
+      )
+
+-- | Request message for BatchUpdateSubscriptionOffers.
+--
+-- /See:/ 'newBatchUpdateSubscriptionOffersRequest' smart constructor.
+newtype BatchUpdateSubscriptionOffersRequest = BatchUpdateSubscriptionOffersRequest
+  { -- | Required. A list of update requests of up to 100 elements. All requests must update different subscription offers.
+    requests :: (Core.Maybe [UpdateSubscriptionOfferRequest])
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'BatchUpdateSubscriptionOffersRequest' with the minimum fields required to make a request.
+newBatchUpdateSubscriptionOffersRequest ::
+  BatchUpdateSubscriptionOffersRequest
+newBatchUpdateSubscriptionOffersRequest =
+  BatchUpdateSubscriptionOffersRequest {requests = Core.Nothing}
+
+instance Core.FromJSON BatchUpdateSubscriptionOffersRequest where
+  parseJSON =
+    Core.withObject
+      "BatchUpdateSubscriptionOffersRequest"
+      ( \o ->
+          BatchUpdateSubscriptionOffersRequest
+            Core.<$> (o Core..:? "requests")
+      )
+
+instance Core.ToJSON BatchUpdateSubscriptionOffersRequest where
+  toJSON BatchUpdateSubscriptionOffersRequest {..} =
+    Core.object
+      (Core.catMaybes [("requests" Core..=) Core.<$> requests])
+
+-- | Response message for BatchUpdateSubscriptionOffers.
+--
+-- /See:/ 'newBatchUpdateSubscriptionOffersResponse' smart constructor.
+newtype BatchUpdateSubscriptionOffersResponse = BatchUpdateSubscriptionOffersResponse
+  { -- | The updated subscription offers list.
+    subscriptionOffers :: (Core.Maybe [SubscriptionOffer])
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'BatchUpdateSubscriptionOffersResponse' with the minimum fields required to make a request.
+newBatchUpdateSubscriptionOffersResponse ::
+  BatchUpdateSubscriptionOffersResponse
+newBatchUpdateSubscriptionOffersResponse =
+  BatchUpdateSubscriptionOffersResponse
+    { subscriptionOffers =
+        Core.Nothing
+    }
+
+instance Core.FromJSON BatchUpdateSubscriptionOffersResponse where
+  parseJSON =
+    Core.withObject
+      "BatchUpdateSubscriptionOffersResponse"
+      ( \o ->
+          BatchUpdateSubscriptionOffersResponse
+            Core.<$> (o Core..:? "subscriptionOffers")
+      )
+
+instance Core.ToJSON BatchUpdateSubscriptionOffersResponse where
+  toJSON BatchUpdateSubscriptionOffersResponse {..} =
+    Core.object
+      ( Core.catMaybes
+          [("subscriptionOffers" Core..=) Core.<$> subscriptionOffers]
+      )
+
+-- | Request message for BatchUpdateSubscription.
+--
+-- /See:/ 'newBatchUpdateSubscriptionsRequest' smart constructor.
+newtype BatchUpdateSubscriptionsRequest = BatchUpdateSubscriptionsRequest
+  { -- | Required. A list of update requests of up to 100 elements. All requests must update different subscriptions.
+    requests :: (Core.Maybe [UpdateSubscriptionRequest])
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'BatchUpdateSubscriptionsRequest' with the minimum fields required to make a request.
+newBatchUpdateSubscriptionsRequest ::
+  BatchUpdateSubscriptionsRequest
+newBatchUpdateSubscriptionsRequest =
+  BatchUpdateSubscriptionsRequest {requests = Core.Nothing}
+
+instance Core.FromJSON BatchUpdateSubscriptionsRequest where
+  parseJSON =
+    Core.withObject
+      "BatchUpdateSubscriptionsRequest"
+      ( \o ->
+          BatchUpdateSubscriptionsRequest Core.<$> (o Core..:? "requests")
+      )
+
+instance Core.ToJSON BatchUpdateSubscriptionsRequest where
+  toJSON BatchUpdateSubscriptionsRequest {..} =
+    Core.object
+      (Core.catMaybes [("requests" Core..=) Core.<$> requests])
+
+-- | Response message for BatchUpdateSubscription.
+--
+-- /See:/ 'newBatchUpdateSubscriptionsResponse' smart constructor.
+newtype BatchUpdateSubscriptionsResponse = BatchUpdateSubscriptionsResponse
+  { -- | The updated subscriptions list.
+    subscriptions :: (Core.Maybe [Subscription])
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'BatchUpdateSubscriptionsResponse' with the minimum fields required to make a request.
+newBatchUpdateSubscriptionsResponse ::
+  BatchUpdateSubscriptionsResponse
+newBatchUpdateSubscriptionsResponse =
+  BatchUpdateSubscriptionsResponse {subscriptions = Core.Nothing}
+
+instance Core.FromJSON BatchUpdateSubscriptionsResponse where
+  parseJSON =
+    Core.withObject
+      "BatchUpdateSubscriptionsResponse"
+      ( \o ->
+          BatchUpdateSubscriptionsResponse
+            Core.<$> (o Core..:? "subscriptions")
+      )
+
+instance Core.ToJSON BatchUpdateSubscriptionsResponse where
+  toJSON BatchUpdateSubscriptionsResponse {..} =
+    Core.object
+      (Core.catMaybes [("subscriptions" Core..=) Core.<$> subscriptions])
+
+-- | Information about an app bundle. The resource for BundlesService.
+--
+-- /See:/ 'newBundle' smart constructor.
+data Bundle = Bundle
+  { -- | A sha1 hash of the upload payload, encoded as a hex string and matching the output of the sha1sum command.
+    sha1 :: (Core.Maybe Core.Text),
+    -- | A sha256 hash of the upload payload, encoded as a hex string and matching the output of the sha256sum command.
+    sha256 :: (Core.Maybe Core.Text),
+    -- | The version code of the Android App Bundle, as specified in the Android App Bundle\'s base module APK manifest file.
+    versionCode :: (Core.Maybe Core.Int32)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'Bundle' with the minimum fields required to make a request.
+newBundle ::
+  Bundle
+newBundle =
+  Bundle
+    { sha1 = Core.Nothing,
+      sha256 = Core.Nothing,
+      versionCode = Core.Nothing
+    }
+
+instance Core.FromJSON Bundle where
+  parseJSON =
+    Core.withObject
+      "Bundle"
+      ( \o ->
+          Bundle
+            Core.<$> (o Core..:? "sha1")
+            Core.<*> (o Core..:? "sha256")
+            Core.<*> (o Core..:? "versionCode")
+      )
+
+instance Core.ToJSON Bundle where
+  toJSON Bundle {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("sha1" Core..=) Core.<$> sha1,
+            ("sha256" Core..=) Core.<$> sha256,
+            ("versionCode" Core..=) Core.<$> versionCode
+          ]
+      )
+
+-- | Response listing all app bundles.
+--
+-- /See:/ 'newBundlesListResponse' smart constructor.
+data BundlesListResponse = BundlesListResponse
+  { -- | All app bundles.
+    bundles :: (Core.Maybe [Bundle]),
+    -- | The kind of this response (\"androidpublisher#bundlesListResponse\").
+    kind :: (Core.Maybe Core.Text)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'BundlesListResponse' with the minimum fields required to make a request.
+newBundlesListResponse ::
+  BundlesListResponse
+newBundlesListResponse =
+  BundlesListResponse {bundles = Core.Nothing, kind = Core.Nothing}
+
+instance Core.FromJSON BundlesListResponse where
+  parseJSON =
+    Core.withObject
+      "BundlesListResponse"
+      ( \o ->
+          BundlesListResponse
+            Core.<$> (o Core..:? "bundles")
+            Core.<*> (o Core..:? "kind")
+      )
+
+instance Core.ToJSON BundlesListResponse where
+  toJSON BundlesListResponse {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("bundles" Core..=) Core.<$> bundles,
+            ("kind" Core..=) Core.<$> kind
+          ]
+      )
+
+-- | Request message for CancelAppRecovery.
+--
+-- /See:/ 'newCancelAppRecoveryRequest' smart constructor.
+data CancelAppRecoveryRequest = CancelAppRecoveryRequest
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'CancelAppRecoveryRequest' with the minimum fields required to make a request.
+newCancelAppRecoveryRequest ::
+  CancelAppRecoveryRequest
+newCancelAppRecoveryRequest = CancelAppRecoveryRequest
+
+instance Core.FromJSON CancelAppRecoveryRequest where
+  parseJSON =
+    Core.withObject
+      "CancelAppRecoveryRequest"
+      (\o -> Core.pure CancelAppRecoveryRequest)
+
+instance Core.ToJSON CancelAppRecoveryRequest where
+  toJSON = Core.const Core.emptyObject
+
+-- | Response message for CancelAppRecovery.
+--
+-- /See:/ 'newCancelAppRecoveryResponse' smart constructor.
+data CancelAppRecoveryResponse = CancelAppRecoveryResponse
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'CancelAppRecoveryResponse' with the minimum fields required to make a request.
+newCancelAppRecoveryResponse ::
+  CancelAppRecoveryResponse
+newCancelAppRecoveryResponse = CancelAppRecoveryResponse
+
+instance Core.FromJSON CancelAppRecoveryResponse where
+  parseJSON =
+    Core.withObject
+      "CancelAppRecoveryResponse"
+      (\o -> Core.pure CancelAppRecoveryResponse)
+
+instance Core.ToJSON CancelAppRecoveryResponse where
+  toJSON = Core.const Core.emptyObject
+
+-- | Result of the cancel survey when the subscription was canceled by the user.
+--
+-- /See:/ 'newCancelSurveyResult' smart constructor.
+data CancelSurveyResult = CancelSurveyResult
+  { -- | The reason the user selected in the cancel survey.
+    reason :: (Core.Maybe CancelSurveyResult_Reason),
+    -- | Only set for CANCEL/SURVEY/REASON_OTHERS. This is the user\'s freeform response to the survey.
+    reasonUserInput :: (Core.Maybe Core.Text)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'CancelSurveyResult' with the minimum fields required to make a request.
+newCancelSurveyResult ::
+  CancelSurveyResult
+newCancelSurveyResult =
+  CancelSurveyResult
+    { reason = Core.Nothing,
+      reasonUserInput = Core.Nothing
+    }
+
+instance Core.FromJSON CancelSurveyResult where
+  parseJSON =
+    Core.withObject
+      "CancelSurveyResult"
+      ( \o ->
+          CancelSurveyResult
+            Core.<$> (o Core..:? "reason")
+            Core.<*> (o Core..:? "reasonUserInput")
+      )
+
+instance Core.ToJSON CancelSurveyResult where
+  toJSON CancelSurveyResult {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("reason" Core..=) Core.<$> reason,
+            ("reasonUserInput" Core..=) Core.<$> reasonUserInput
+          ]
+      )
+
+-- | Information specific to a subscription in the SUBSCRIPTION/STATE/CANCELED or SUBSCRIPTION/STATE/EXPIRED state.
+--
+-- /See:/ 'newCanceledStateContext' smart constructor.
+data CanceledStateContext = CanceledStateContext
+  { -- | Subscription was canceled by the developer.
+    developerInitiatedCancellation :: (Core.Maybe DeveloperInitiatedCancellation),
+    -- | Subscription was replaced by a new subscription.
+    replacementCancellation :: (Core.Maybe ReplacementCancellation),
+    -- | Subscription was canceled by the system, for example because of a billing problem.
+    systemInitiatedCancellation :: (Core.Maybe SystemInitiatedCancellation),
+    -- | Subscription was canceled by user.
+    userInitiatedCancellation :: (Core.Maybe UserInitiatedCancellation)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'CanceledStateContext' with the minimum fields required to make a request.
+newCanceledStateContext ::
+  CanceledStateContext
+newCanceledStateContext =
+  CanceledStateContext
+    { developerInitiatedCancellation =
+        Core.Nothing,
+      replacementCancellation = Core.Nothing,
+      systemInitiatedCancellation = Core.Nothing,
+      userInitiatedCancellation = Core.Nothing
+    }
+
+instance Core.FromJSON CanceledStateContext where
+  parseJSON =
+    Core.withObject
+      "CanceledStateContext"
+      ( \o ->
+          CanceledStateContext
+            Core.<$> (o Core..:? "developerInitiatedCancellation")
+            Core.<*> (o Core..:? "replacementCancellation")
+            Core.<*> (o Core..:? "systemInitiatedCancellation")
+            Core.<*> (o Core..:? "userInitiatedCancellation")
+      )
+
+instance Core.ToJSON CanceledStateContext where
+  toJSON CanceledStateContext {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("developerInitiatedCancellation" Core..=)
+              Core.<$> developerInitiatedCancellation,
+            ("replacementCancellation" Core..=)
+              Core.<$> replacementCancellation,
+            ("systemInitiatedCancellation" Core..=)
+              Core.<$> systemInitiatedCancellation,
+            ("userInitiatedCancellation" Core..=)
+              Core.<$> userInitiatedCancellation
+          ]
+      )
+
+-- | An entry of conversation between user and developer.
+--
+-- /See:/ 'newComment' smart constructor.
+data Comment = Comment
+  { -- | A comment from a developer.
+    developerComment :: (Core.Maybe DeveloperComment),
+    -- | A comment from a user.
+    userComment :: (Core.Maybe UserComment)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'Comment' with the minimum fields required to make a request.
+newComment ::
+  Comment
+newComment =
+  Comment
+    { developerComment = Core.Nothing,
+      userComment = Core.Nothing
+    }
+
+instance Core.FromJSON Comment where
+  parseJSON =
+    Core.withObject
+      "Comment"
+      ( \o ->
+          Comment
+            Core.<$> (o Core..:? "developerComment")
+            Core.<*> (o Core..:? "userComment")
+      )
+
+instance Core.ToJSON Comment where
+  toJSON Comment {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("developerComment" Core..=) Core.<$> developerComment,
+            ("userComment" Core..=) Core.<$> userComment
+          ]
+      )
+
+-- | Request message for ConvertRegionPrices.
+--
+-- /See:/ 'newConvertRegionPricesRequest' smart constructor.
+newtype ConvertRegionPricesRequest = ConvertRegionPricesRequest
+  { -- | The intital price to convert other regions from. Tax exclusive.
+    price :: (Core.Maybe Money)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'ConvertRegionPricesRequest' with the minimum fields required to make a request.
+newConvertRegionPricesRequest ::
+  ConvertRegionPricesRequest
+newConvertRegionPricesRequest =
+  ConvertRegionPricesRequest {price = Core.Nothing}
+
+instance Core.FromJSON ConvertRegionPricesRequest where
+  parseJSON =
+    Core.withObject
+      "ConvertRegionPricesRequest"
+      (\o -> ConvertRegionPricesRequest Core.<$> (o Core..:? "price"))
+
+instance Core.ToJSON ConvertRegionPricesRequest where
+  toJSON ConvertRegionPricesRequest {..} =
+    Core.object (Core.catMaybes [("price" Core..=) Core.<$> price])
+
+-- | Response message for ConvertRegionPrices.
+--
+-- /See:/ 'newConvertRegionPricesResponse' smart constructor.
+data ConvertRegionPricesResponse = ConvertRegionPricesResponse
+  { -- | Converted other regions prices in USD and EUR, to use for countries where Play doesn\'t support a country\'s local currency.
+    convertedOtherRegionsPrice :: (Core.Maybe ConvertedOtherRegionsPrice),
+    -- | Map from region code to converted region price.
+    convertedRegionPrices :: (Core.Maybe ConvertRegionPricesResponse_ConvertedRegionPrices),
+    -- | The region version at which the prices were generated.
+    regionVersion :: (Core.Maybe RegionsVersion)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'ConvertRegionPricesResponse' with the minimum fields required to make a request.
+newConvertRegionPricesResponse ::
+  ConvertRegionPricesResponse
+newConvertRegionPricesResponse =
+  ConvertRegionPricesResponse
+    { convertedOtherRegionsPrice =
+        Core.Nothing,
+      convertedRegionPrices = Core.Nothing,
+      regionVersion = Core.Nothing
+    }
+
+instance Core.FromJSON ConvertRegionPricesResponse where
+  parseJSON =
+    Core.withObject
+      "ConvertRegionPricesResponse"
+      ( \o ->
+          ConvertRegionPricesResponse
+            Core.<$> (o Core..:? "convertedOtherRegionsPrice")
+            Core.<*> (o Core..:? "convertedRegionPrices")
+            Core.<*> (o Core..:? "regionVersion")
+      )
+
+instance Core.ToJSON ConvertRegionPricesResponse where
+  toJSON ConvertRegionPricesResponse {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("convertedOtherRegionsPrice" Core..=)
+              Core.<$> convertedOtherRegionsPrice,
+            ("convertedRegionPrices" Core..=) Core.<$> convertedRegionPrices,
+            ("regionVersion" Core..=) Core.<$> regionVersion
+          ]
+      )
+
+-- | Map from region code to converted region price.
+--
+-- /See:/ 'newConvertRegionPricesResponse_ConvertedRegionPrices' smart constructor.
+newtype ConvertRegionPricesResponse_ConvertedRegionPrices = ConvertRegionPricesResponse_ConvertedRegionPrices
+  { additional :: (Core.HashMap Core.Text ConvertedRegionPrice)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'ConvertRegionPricesResponse_ConvertedRegionPrices' with the minimum fields required to make a request.
+newConvertRegionPricesResponse_ConvertedRegionPrices ::
+  -- |  See 'additional'.
+  Core.HashMap Core.Text ConvertedRegionPrice ->
+  ConvertRegionPricesResponse_ConvertedRegionPrices
+newConvertRegionPricesResponse_ConvertedRegionPrices additional =
+  ConvertRegionPricesResponse_ConvertedRegionPrices
+    { additional =
+        additional
+    }
+
+instance
+  Core.FromJSON
+    ConvertRegionPricesResponse_ConvertedRegionPrices
+  where
+  parseJSON =
+    Core.withObject
+      "ConvertRegionPricesResponse_ConvertedRegionPrices"
+      ( \o ->
+          ConvertRegionPricesResponse_ConvertedRegionPrices
+            Core.<$> (Core.parseJSONObject o)
+      )
+
+instance
+  Core.ToJSON
+    ConvertRegionPricesResponse_ConvertedRegionPrices
+  where
+  toJSON ConvertRegionPricesResponse_ConvertedRegionPrices {..} =
+    Core.toJSON additional
+
+-- | Converted other regions prices.
+--
+-- /See:/ 'newConvertedOtherRegionsPrice' smart constructor.
+data ConvertedOtherRegionsPrice = ConvertedOtherRegionsPrice
+  { -- | Price in EUR to use for the \"Other regions\" location exclusive of taxes.
+    eurPrice :: (Core.Maybe Money),
+    -- | Price in USD to use for the \"Other regions\" location exclusive of taxes.
+    usdPrice :: (Core.Maybe Money)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'ConvertedOtherRegionsPrice' with the minimum fields required to make a request.
+newConvertedOtherRegionsPrice ::
+  ConvertedOtherRegionsPrice
+newConvertedOtherRegionsPrice =
+  ConvertedOtherRegionsPrice
+    { eurPrice = Core.Nothing,
+      usdPrice = Core.Nothing
+    }
+
+instance Core.FromJSON ConvertedOtherRegionsPrice where
+  parseJSON =
+    Core.withObject
+      "ConvertedOtherRegionsPrice"
+      ( \o ->
+          ConvertedOtherRegionsPrice
+            Core.<$> (o Core..:? "eurPrice")
+            Core.<*> (o Core..:? "usdPrice")
+      )
+
+instance Core.ToJSON ConvertedOtherRegionsPrice where
+  toJSON ConvertedOtherRegionsPrice {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("eurPrice" Core..=) Core.<$> eurPrice,
+            ("usdPrice" Core..=) Core.<$> usdPrice
+          ]
+      )
+
+-- | A converted region price.
+--
+-- /See:/ 'newConvertedRegionPrice' smart constructor.
+data ConvertedRegionPrice = ConvertedRegionPrice
+  { -- | The converted price tax inclusive.
+    price :: (Core.Maybe Money),
+    -- | The region code of the region.
+    regionCode :: (Core.Maybe Core.Text),
+    -- | The tax amount of the converted price.
+    taxAmount :: (Core.Maybe Money)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'ConvertedRegionPrice' with the minimum fields required to make a request.
+newConvertedRegionPrice ::
+  ConvertedRegionPrice
+newConvertedRegionPrice =
+  ConvertedRegionPrice
+    { price = Core.Nothing,
+      regionCode = Core.Nothing,
+      taxAmount = Core.Nothing
+    }
+
+instance Core.FromJSON ConvertedRegionPrice where
+  parseJSON =
+    Core.withObject
+      "ConvertedRegionPrice"
+      ( \o ->
+          ConvertedRegionPrice
+            Core.<$> (o Core..:? "price")
+            Core.<*> (o Core..:? "regionCode")
+            Core.<*> (o Core..:? "taxAmount")
+      )
+
+instance Core.ToJSON ConvertedRegionPrice where
+  toJSON ConvertedRegionPrice {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("price" Core..=) Core.<$> price,
+            ("regionCode" Core..=) Core.<$> regionCode,
+            ("taxAmount" Core..=) Core.<$> taxAmount
+          ]
+      )
+
+-- | Country targeting specification.
+--
+-- /See:/ 'newCountryTargeting' smart constructor.
+data CountryTargeting = CountryTargeting
+  { -- | Countries to target, specified as two letter <https://unicode.org/cldr/charts/latest/supplemental/territory_containment_un_m_49.html CLDR codes>.
+    countries :: (Core.Maybe [Core.Text]),
+    -- | Include \"rest of world\" as well as explicitly targeted countries.
+    includeRestOfWorld :: (Core.Maybe Core.Bool)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'CountryTargeting' with the minimum fields required to make a request.
+newCountryTargeting ::
+  CountryTargeting
+newCountryTargeting =
+  CountryTargeting
+    { countries = Core.Nothing,
+      includeRestOfWorld = Core.Nothing
+    }
+
+instance Core.FromJSON CountryTargeting where
+  parseJSON =
+    Core.withObject
+      "CountryTargeting"
+      ( \o ->
+          CountryTargeting
+            Core.<$> (o Core..:? "countries")
+            Core.<*> (o Core..:? "includeRestOfWorld")
+      )
+
+instance Core.ToJSON CountryTargeting where
+  toJSON CountryTargeting {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("countries" Core..=) Core.<$> countries,
+            ("includeRestOfWorld" Core..=) Core.<$> includeRestOfWorld
+          ]
+      )
+
+-- | Request message for CreateDraftAppRecovery.
+--
+-- /See:/ 'newCreateDraftAppRecoveryRequest' smart constructor.
+data CreateDraftAppRecoveryRequest = CreateDraftAppRecoveryRequest
+  { -- | Action type is remote in-app update. As a consequence of this action, a downloadable recovery module is also created for testing purposes.
+    remoteInAppUpdate :: (Core.Maybe RemoteInAppUpdate),
+    -- | Specifies targeting criteria for the recovery action such as regions, android sdk versions, app versions etc.
+    targeting :: (Core.Maybe Targeting)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'CreateDraftAppRecoveryRequest' with the minimum fields required to make a request.
+newCreateDraftAppRecoveryRequest ::
+  CreateDraftAppRecoveryRequest
+newCreateDraftAppRecoveryRequest =
+  CreateDraftAppRecoveryRequest
+    { remoteInAppUpdate = Core.Nothing,
+      targeting = Core.Nothing
+    }
+
+instance Core.FromJSON CreateDraftAppRecoveryRequest where
+  parseJSON =
+    Core.withObject
+      "CreateDraftAppRecoveryRequest"
+      ( \o ->
+          CreateDraftAppRecoveryRequest
+            Core.<$> (o Core..:? "remoteInAppUpdate")
+            Core.<*> (o Core..:? "targeting")
+      )
+
+instance Core.ToJSON CreateDraftAppRecoveryRequest where
+  toJSON CreateDraftAppRecoveryRequest {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("remoteInAppUpdate" Core..=) Core.<$> remoteInAppUpdate,
+            ("targeting" Core..=) Core.<$> targeting
+          ]
+      )
+
+-- | Request message for DeactivateBasePlan.
+--
+-- /See:/ 'newDeactivateBasePlanRequest' smart constructor.
+data DeactivateBasePlanRequest = DeactivateBasePlanRequest
+  { -- | Required. The unique base plan ID of the base plan to deactivate.
+    basePlanId :: (Core.Maybe Core.Text),
+    -- | Optional. The latency tolerance for the propagation of this product update. Defaults to latency-sensitive.
+    latencyTolerance :: (Core.Maybe DeactivateBasePlanRequest_LatencyTolerance),
+    -- | Required. The parent app (package name) of the base plan to deactivate.
+    packageName :: (Core.Maybe Core.Text),
+    -- | Required. The parent subscription (ID) of the base plan to deactivate.
+    productId :: (Core.Maybe Core.Text)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'DeactivateBasePlanRequest' with the minimum fields required to make a request.
+newDeactivateBasePlanRequest ::
+  DeactivateBasePlanRequest
+newDeactivateBasePlanRequest =
+  DeactivateBasePlanRequest
+    { basePlanId = Core.Nothing,
+      latencyTolerance = Core.Nothing,
+      packageName = Core.Nothing,
+      productId = Core.Nothing
+    }
+
+instance Core.FromJSON DeactivateBasePlanRequest where
+  parseJSON =
+    Core.withObject
+      "DeactivateBasePlanRequest"
+      ( \o ->
+          DeactivateBasePlanRequest
+            Core.<$> (o Core..:? "basePlanId")
+            Core.<*> (o Core..:? "latencyTolerance")
+            Core.<*> (o Core..:? "packageName")
+            Core.<*> (o Core..:? "productId")
+      )
+
+instance Core.ToJSON DeactivateBasePlanRequest where
+  toJSON DeactivateBasePlanRequest {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("basePlanId" Core..=) Core.<$> basePlanId,
+            ("latencyTolerance" Core..=) Core.<$> latencyTolerance,
+            ("packageName" Core..=) Core.<$> packageName,
+            ("productId" Core..=) Core.<$> productId
+          ]
+      )
+
+-- | Request message for DeactivateSubscriptionOffer.
+--
+-- /See:/ 'newDeactivateSubscriptionOfferRequest' smart constructor.
+data DeactivateSubscriptionOfferRequest = DeactivateSubscriptionOfferRequest
+  { -- | Required. The parent base plan (ID) of the offer to deactivate.
+    basePlanId :: (Core.Maybe Core.Text),
+    -- | Optional. The latency tolerance for the propagation of this product update. Defaults to latency-sensitive.
+    latencyTolerance :: (Core.Maybe DeactivateSubscriptionOfferRequest_LatencyTolerance),
+    -- | Required. The unique offer ID of the offer to deactivate.
+    offerId :: (Core.Maybe Core.Text),
+    -- | Required. The parent app (package name) of the offer to deactivate.
+    packageName :: (Core.Maybe Core.Text),
+    -- | Required. The parent subscription (ID) of the offer to deactivate.
+    productId :: (Core.Maybe Core.Text)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'DeactivateSubscriptionOfferRequest' with the minimum fields required to make a request.
+newDeactivateSubscriptionOfferRequest ::
+  DeactivateSubscriptionOfferRequest
+newDeactivateSubscriptionOfferRequest =
+  DeactivateSubscriptionOfferRequest
+    { basePlanId = Core.Nothing,
+      latencyTolerance = Core.Nothing,
+      offerId = Core.Nothing,
+      packageName = Core.Nothing,
+      productId = Core.Nothing
+    }
+
+instance Core.FromJSON DeactivateSubscriptionOfferRequest where
+  parseJSON =
+    Core.withObject
+      "DeactivateSubscriptionOfferRequest"
+      ( \o ->
+          DeactivateSubscriptionOfferRequest
+            Core.<$> (o Core..:? "basePlanId")
+            Core.<*> (o Core..:? "latencyTolerance")
+            Core.<*> (o Core..:? "offerId")
+            Core.<*> (o Core..:? "packageName")
+            Core.<*> (o Core..:? "productId")
+      )
+
+instance Core.ToJSON DeactivateSubscriptionOfferRequest where
+  toJSON DeactivateSubscriptionOfferRequest {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("basePlanId" Core..=) Core.<$> basePlanId,
+            ("latencyTolerance" Core..=) Core.<$> latencyTolerance,
+            ("offerId" Core..=) Core.<$> offerId,
+            ("packageName" Core..=) Core.<$> packageName,
+            ("productId" Core..=) Core.<$> productId
+          ]
+      )
+
+-- | Information related to deferred item replacement.
+--
+-- /See:/ 'newDeferredItemReplacement' smart constructor.
+newtype DeferredItemReplacement = DeferredItemReplacement
+  { -- | The product/id going to replace the existing product/id.
+    productId :: (Core.Maybe Core.Text)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'DeferredItemReplacement' with the minimum fields required to make a request.
+newDeferredItemReplacement ::
+  DeferredItemReplacement
+newDeferredItemReplacement =
+  DeferredItemReplacement {productId = Core.Nothing}
+
+instance Core.FromJSON DeferredItemReplacement where
+  parseJSON =
+    Core.withObject
+      "DeferredItemReplacement"
+      (\o -> DeferredItemReplacement Core.<$> (o Core..:? "productId"))
+
+instance Core.ToJSON DeferredItemReplacement where
+  toJSON DeferredItemReplacement {..} =
+    Core.object
+      (Core.catMaybes [("productId" Core..=) Core.<$> productId])
+
+-- | Represents a deobfuscation file.
+--
+-- /See:/ 'newDeobfuscationFile' smart constructor.
+newtype DeobfuscationFile = DeobfuscationFile
+  { -- | The type of the deobfuscation file.
+    symbolType :: (Core.Maybe DeobfuscationFile_SymbolType)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'DeobfuscationFile' with the minimum fields required to make a request.
+newDeobfuscationFile ::
+  DeobfuscationFile
+newDeobfuscationFile = DeobfuscationFile {symbolType = Core.Nothing}
+
+instance Core.FromJSON DeobfuscationFile where
+  parseJSON =
+    Core.withObject
+      "DeobfuscationFile"
+      (\o -> DeobfuscationFile Core.<$> (o Core..:? "symbolType"))
+
+instance Core.ToJSON DeobfuscationFile where
+  toJSON DeobfuscationFile {..} =
+    Core.object
+      (Core.catMaybes [("symbolType" Core..=) Core.<$> symbolType])
+
+-- | Responses for the upload.
+--
+-- /See:/ 'newDeobfuscationFilesUploadResponse' smart constructor.
+newtype DeobfuscationFilesUploadResponse = DeobfuscationFilesUploadResponse
+  { -- | The uploaded Deobfuscation File configuration.
+    deobfuscationFile :: (Core.Maybe DeobfuscationFile)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'DeobfuscationFilesUploadResponse' with the minimum fields required to make a request.
+newDeobfuscationFilesUploadResponse ::
+  DeobfuscationFilesUploadResponse
+newDeobfuscationFilesUploadResponse =
+  DeobfuscationFilesUploadResponse
+    { deobfuscationFile =
+        Core.Nothing
+    }
+
+instance Core.FromJSON DeobfuscationFilesUploadResponse where
+  parseJSON =
+    Core.withObject
+      "DeobfuscationFilesUploadResponse"
+      ( \o ->
+          DeobfuscationFilesUploadResponse
+            Core.<$> (o Core..:? "deobfuscationFile")
+      )
+
+instance Core.ToJSON DeobfuscationFilesUploadResponse where
+  toJSON DeobfuscationFilesUploadResponse {..} =
+    Core.object
+      ( Core.catMaybes
+          [("deobfuscationFile" Core..=) Core.<$> deobfuscationFile]
+      )
+
+-- | Request message for DeployAppRecovery.
+--
+-- /See:/ 'newDeployAppRecoveryRequest' smart constructor.
+data DeployAppRecoveryRequest = DeployAppRecoveryRequest
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'DeployAppRecoveryRequest' with the minimum fields required to make a request.
+newDeployAppRecoveryRequest ::
+  DeployAppRecoveryRequest
+newDeployAppRecoveryRequest = DeployAppRecoveryRequest
+
+instance Core.FromJSON DeployAppRecoveryRequest where
+  parseJSON =
+    Core.withObject
+      "DeployAppRecoveryRequest"
+      (\o -> Core.pure DeployAppRecoveryRequest)
+
+instance Core.ToJSON DeployAppRecoveryRequest where
+  toJSON = Core.const Core.emptyObject
+
+-- | Response message for DeployAppRecovery.
+--
+-- /See:/ 'newDeployAppRecoveryResponse' smart constructor.
+data DeployAppRecoveryResponse = DeployAppRecoveryResponse
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'DeployAppRecoveryResponse' with the minimum fields required to make a request.
+newDeployAppRecoveryResponse ::
+  DeployAppRecoveryResponse
+newDeployAppRecoveryResponse = DeployAppRecoveryResponse
+
+instance Core.FromJSON DeployAppRecoveryResponse where
+  parseJSON =
+    Core.withObject
+      "DeployAppRecoveryResponse"
+      (\o -> Core.pure DeployAppRecoveryResponse)
+
+instance Core.ToJSON DeployAppRecoveryResponse where
+  toJSON = Core.const Core.emptyObject
+
+-- | Developer entry from conversation between user and developer.
+--
+-- /See:/ 'newDeveloperComment' smart constructor.
+data DeveloperComment = DeveloperComment
+  { -- | The last time at which this comment was updated.
+    lastModified :: (Core.Maybe Timestamp),
+    -- | The content of the comment, i.e. reply body.
+    text :: (Core.Maybe Core.Text)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'DeveloperComment' with the minimum fields required to make a request.
+newDeveloperComment ::
+  DeveloperComment
+newDeveloperComment =
+  DeveloperComment
+    { lastModified = Core.Nothing,
+      text = Core.Nothing
+    }
+
+instance Core.FromJSON DeveloperComment where
+  parseJSON =
+    Core.withObject
+      "DeveloperComment"
+      ( \o ->
+          DeveloperComment
+            Core.<$> (o Core..:? "lastModified")
+            Core.<*> (o Core..:? "text")
+      )
+
+instance Core.ToJSON DeveloperComment where
+  toJSON DeveloperComment {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("lastModified" Core..=) Core.<$> lastModified,
+            ("text" Core..=) Core.<$> text
+          ]
+      )
+
+-- | Information specific to cancellations initiated by developers.
+--
+-- /See:/ 'newDeveloperInitiatedCancellation' smart constructor.
+data DeveloperInitiatedCancellation = DeveloperInitiatedCancellation
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'DeveloperInitiatedCancellation' with the minimum fields required to make a request.
+newDeveloperInitiatedCancellation ::
+  DeveloperInitiatedCancellation
+newDeveloperInitiatedCancellation = DeveloperInitiatedCancellation
+
+instance Core.FromJSON DeveloperInitiatedCancellation where
+  parseJSON =
+    Core.withObject
+      "DeveloperInitiatedCancellation"
+      (\o -> Core.pure DeveloperInitiatedCancellation)
+
+instance Core.ToJSON DeveloperInitiatedCancellation where
+  toJSON = Core.const Core.emptyObject
+
+-- | Represents a device feature.
+--
+-- /See:/ 'newDeviceFeature' smart constructor.
+data DeviceFeature = DeviceFeature
+  { -- | Name of the feature.
+    featureName :: (Core.Maybe Core.Text),
+    -- | The feature version specified by android:glEsVersion or android:version in in the AndroidManifest.
+    featureVersion :: (Core.Maybe Core.Int32)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'DeviceFeature' with the minimum fields required to make a request.
+newDeviceFeature ::
+  DeviceFeature
+newDeviceFeature =
+  DeviceFeature
+    { featureName = Core.Nothing,
+      featureVersion = Core.Nothing
+    }
+
+instance Core.FromJSON DeviceFeature where
+  parseJSON =
+    Core.withObject
+      "DeviceFeature"
+      ( \o ->
+          DeviceFeature
+            Core.<$> (o Core..:? "featureName")
+            Core.<*> (o Core..:? "featureVersion")
+      )
+
+instance Core.ToJSON DeviceFeature where
+  toJSON DeviceFeature {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("featureName" Core..=) Core.<$> featureName,
+            ("featureVersion" Core..=) Core.<$> featureVersion
+          ]
+      )
+
+-- | Targeting for a device feature.
+--
+-- /See:/ 'newDeviceFeatureTargeting' smart constructor.
+newtype DeviceFeatureTargeting = DeviceFeatureTargeting
+  { -- | Feature of the device.
+    requiredFeature :: (Core.Maybe DeviceFeature)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'DeviceFeatureTargeting' with the minimum fields required to make a request.
+newDeviceFeatureTargeting ::
+  DeviceFeatureTargeting
+newDeviceFeatureTargeting =
+  DeviceFeatureTargeting {requiredFeature = Core.Nothing}
+
+instance Core.FromJSON DeviceFeatureTargeting where
+  parseJSON =
+    Core.withObject
+      "DeviceFeatureTargeting"
+      ( \o ->
+          DeviceFeatureTargeting Core.<$> (o Core..:? "requiredFeature")
+      )
+
+instance Core.ToJSON DeviceFeatureTargeting where
+  toJSON DeviceFeatureTargeting {..} =
+    Core.object
+      ( Core.catMaybes
+          [("requiredFeature" Core..=) Core.<$> requiredFeature]
+      )
+
+-- | A group of devices. A group is defined by a set of device selectors. A device belongs to the group if it matches any selector (logical OR).
+--
+-- /See:/ 'newDeviceGroup' smart constructor.
+data DeviceGroup = DeviceGroup
+  { -- | Device selectors for this group. A device matching any of the selectors is included in this group.
+    deviceSelectors :: (Core.Maybe [DeviceSelector]),
+    -- | The name of the group.
+    name :: (Core.Maybe Core.Text)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'DeviceGroup' with the minimum fields required to make a request.
+newDeviceGroup ::
+  DeviceGroup
+newDeviceGroup =
+  DeviceGroup {deviceSelectors = Core.Nothing, name = Core.Nothing}
+
+instance Core.FromJSON DeviceGroup where
+  parseJSON =
+    Core.withObject
+      "DeviceGroup"
+      ( \o ->
+          DeviceGroup
+            Core.<$> (o Core..:? "deviceSelectors")
+            Core.<*> (o Core..:? "name")
+      )
+
+instance Core.ToJSON DeviceGroup where
+  toJSON DeviceGroup {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("deviceSelectors" Core..=) Core.<$> deviceSelectors,
+            ("name" Core..=) Core.<$> name
+          ]
+      )
+
+-- | Identifier of a device.
+--
+-- /See:/ 'newDeviceId' smart constructor.
+data DeviceId = DeviceId
+  { -- | Value of Build.BRAND.
+    buildBrand :: (Core.Maybe Core.Text),
+    -- | Value of Build.DEVICE.
+    buildDevice :: (Core.Maybe Core.Text)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'DeviceId' with the minimum fields required to make a request.
+newDeviceId ::
+  DeviceId
+newDeviceId =
+  DeviceId {buildBrand = Core.Nothing, buildDevice = Core.Nothing}
+
+instance Core.FromJSON DeviceId where
+  parseJSON =
+    Core.withObject
+      "DeviceId"
+      ( \o ->
+          DeviceId
+            Core.<$> (o Core..:? "buildBrand")
+            Core.<*> (o Core..:? "buildDevice")
+      )
+
+instance Core.ToJSON DeviceId where
+  toJSON DeviceId {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("buildBrand" Core..=) Core.<$> buildBrand,
+            ("buildDevice" Core..=) Core.<$> buildDevice
+          ]
+      )
+
+-- | Characteristics of the user\'s device.
+--
+-- /See:/ 'newDeviceMetadata' smart constructor.
+data DeviceMetadata = DeviceMetadata
+  { -- | Device CPU make, e.g. \"Qualcomm\"
+    cpuMake :: (Core.Maybe Core.Text),
+    -- | Device CPU model, e.g. \"MSM8974\"
+    cpuModel :: (Core.Maybe Core.Text),
+    -- | Device class (e.g. tablet)
+    deviceClass :: (Core.Maybe Core.Text),
+    -- | OpenGL version
+    glEsVersion :: (Core.Maybe Core.Int32),
+    -- | Device manufacturer (e.g. Motorola)
+    manufacturer :: (Core.Maybe Core.Text),
+    -- | Comma separated list of native platforms (e.g. \"arm\", \"arm7\")
+    nativePlatform :: (Core.Maybe Core.Text),
+    -- | Device model name (e.g. Droid)
+    productName :: (Core.Maybe Core.Text),
+    -- | Device RAM in Megabytes, e.g. \"2048\"
+    ramMb :: (Core.Maybe Core.Int32),
+    -- | Screen density in DPI
+    screenDensityDpi :: (Core.Maybe Core.Int32),
+    -- | Screen height in pixels
+    screenHeightPx :: (Core.Maybe Core.Int32),
+    -- | Screen width in pixels
+    screenWidthPx :: (Core.Maybe Core.Int32)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'DeviceMetadata' with the minimum fields required to make a request.
+newDeviceMetadata ::
+  DeviceMetadata
+newDeviceMetadata =
+  DeviceMetadata
+    { cpuMake = Core.Nothing,
+      cpuModel = Core.Nothing,
+      deviceClass = Core.Nothing,
+      glEsVersion = Core.Nothing,
+      manufacturer = Core.Nothing,
+      nativePlatform = Core.Nothing,
+      productName = Core.Nothing,
+      ramMb = Core.Nothing,
+      screenDensityDpi = Core.Nothing,
+      screenHeightPx = Core.Nothing,
+      screenWidthPx = Core.Nothing
+    }
+
+instance Core.FromJSON DeviceMetadata where
+  parseJSON =
+    Core.withObject
+      "DeviceMetadata"
+      ( \o ->
+          DeviceMetadata
+            Core.<$> (o Core..:? "cpuMake")
+            Core.<*> (o Core..:? "cpuModel")
+            Core.<*> (o Core..:? "deviceClass")
+            Core.<*> (o Core..:? "glEsVersion")
+            Core.<*> (o Core..:? "manufacturer")
+            Core.<*> (o Core..:? "nativePlatform")
+            Core.<*> (o Core..:? "productName")
+            Core.<*> (o Core..:? "ramMb")
+            Core.<*> (o Core..:? "screenDensityDpi")
+            Core.<*> (o Core..:? "screenHeightPx")
+            Core.<*> (o Core..:? "screenWidthPx")
+      )
+
+instance Core.ToJSON DeviceMetadata where
+  toJSON DeviceMetadata {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("cpuMake" Core..=) Core.<$> cpuMake,
+            ("cpuModel" Core..=) Core.<$> cpuModel,
+            ("deviceClass" Core..=) Core.<$> deviceClass,
+            ("glEsVersion" Core..=) Core.<$> glEsVersion,
+            ("manufacturer" Core..=) Core.<$> manufacturer,
+            ("nativePlatform" Core..=) Core.<$> nativePlatform,
+            ("productName" Core..=) Core.<$> productName,
+            ("ramMb" Core..=) Core.<$> ramMb,
+            ("screenDensityDpi" Core..=) Core.<$> screenDensityDpi,
+            ("screenHeightPx" Core..=) Core.<$> screenHeightPx,
+            ("screenWidthPx" Core..=) Core.<$> screenWidthPx
+          ]
+      )
+
+-- | Conditions about a device\'s RAM capabilities.
+--
+-- /See:/ 'newDeviceRam' smart constructor.
+data DeviceRam = DeviceRam
+  { -- | Maximum RAM in bytes (bound excluded).
+    maxBytes :: (Core.Maybe Core.Int64),
+    -- | Minimum RAM in bytes (bound included).
+    minBytes :: (Core.Maybe Core.Int64)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'DeviceRam' with the minimum fields required to make a request.
+newDeviceRam ::
+  DeviceRam
+newDeviceRam =
+  DeviceRam {maxBytes = Core.Nothing, minBytes = Core.Nothing}
+
+instance Core.FromJSON DeviceRam where
+  parseJSON =
+    Core.withObject
+      "DeviceRam"
+      ( \o ->
+          DeviceRam
+            Core.<$> (o Core..:? "maxBytes" Core.<&> Core.fmap Core.fromAsText)
+            Core.<*> (o Core..:? "minBytes" Core.<&> Core.fmap Core.fromAsText)
+      )
+
+instance Core.ToJSON DeviceRam where
+  toJSON DeviceRam {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("maxBytes" Core..=) Core.. Core.AsText Core.<$> maxBytes,
+            ("minBytes" Core..=) Core.. Core.AsText Core.<$> minBytes
+          ]
+      )
+
+-- | Selector for a device group. A selector consists of a set of conditions on the device that should all match (logical AND) to determine a device group eligibility. For instance, if a selector specifies RAM conditions, device model inclusion and device model exclusion, a device is considered to match if: device matches RAM conditions AND device matches one of the included device models AND device doesn\'t match excluded device models
+--
+-- /See:/ 'newDeviceSelector' smart constructor.
+data DeviceSelector = DeviceSelector
+  { -- | Conditions on the device\'s RAM.
+    deviceRam :: (Core.Maybe DeviceRam),
+    -- | Device models excluded by this selector, even if they match all other conditions.
+    excludedDeviceIds :: (Core.Maybe [DeviceId]),
+    -- | A device that has any of these system features is excluded by this selector, even if it matches all other conditions.
+    forbiddenSystemFeatures :: (Core.Maybe [SystemFeature]),
+    -- | Device models included by this selector.
+    includedDeviceIds :: (Core.Maybe [DeviceId]),
+    -- | A device needs to have all these system features to be included by the selector.
+    requiredSystemFeatures :: (Core.Maybe [SystemFeature]),
+    -- | Optional. The SoCs included by this selector. Only works for Android S+ devices.
+    systemOnChips :: (Core.Maybe [SystemOnChip])
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'DeviceSelector' with the minimum fields required to make a request.
+newDeviceSelector ::
+  DeviceSelector
+newDeviceSelector =
+  DeviceSelector
+    { deviceRam = Core.Nothing,
+      excludedDeviceIds = Core.Nothing,
+      forbiddenSystemFeatures = Core.Nothing,
+      includedDeviceIds = Core.Nothing,
+      requiredSystemFeatures = Core.Nothing,
+      systemOnChips = Core.Nothing
+    }
+
+instance Core.FromJSON DeviceSelector where
+  parseJSON =
+    Core.withObject
+      "DeviceSelector"
+      ( \o ->
+          DeviceSelector
+            Core.<$> (o Core..:? "deviceRam")
+            Core.<*> (o Core..:? "excludedDeviceIds")
+            Core.<*> (o Core..:? "forbiddenSystemFeatures")
+            Core.<*> (o Core..:? "includedDeviceIds")
+            Core.<*> (o Core..:? "requiredSystemFeatures")
+            Core.<*> (o Core..:? "systemOnChips")
+      )
+
+instance Core.ToJSON DeviceSelector where
+  toJSON DeviceSelector {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("deviceRam" Core..=) Core.<$> deviceRam,
+            ("excludedDeviceIds" Core..=) Core.<$> excludedDeviceIds,
+            ("forbiddenSystemFeatures" Core..=)
+              Core.<$> forbiddenSystemFeatures,
+            ("includedDeviceIds" Core..=) Core.<$> includedDeviceIds,
+            ("requiredSystemFeatures" Core..=) Core.<$> requiredSystemFeatures,
+            ("systemOnChips" Core..=) Core.<$> systemOnChips
+          ]
+      )
+
+-- | The device spec used to generate a system APK.
+--
+-- /See:/ 'newDeviceSpec' smart constructor.
+data DeviceSpec = DeviceSpec
+  { -- | Screen dpi.
+    screenDensity :: (Core.Maybe Core.Word32),
+    -- | Supported ABI architectures in the order of preference. The values should be the string as reported by the platform, e.g. \"armeabi-v7a\", \"x86_64\".
+    supportedAbis :: (Core.Maybe [Core.Text]),
+    -- | All installed locales represented as BCP-47 strings, e.g. \"en-US\".
+    supportedLocales :: (Core.Maybe [Core.Text])
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'DeviceSpec' with the minimum fields required to make a request.
+newDeviceSpec ::
+  DeviceSpec
+newDeviceSpec =
+  DeviceSpec
+    { screenDensity = Core.Nothing,
+      supportedAbis = Core.Nothing,
+      supportedLocales = Core.Nothing
+    }
+
+instance Core.FromJSON DeviceSpec where
+  parseJSON =
+    Core.withObject
+      "DeviceSpec"
+      ( \o ->
+          DeviceSpec
+            Core.<$> (o Core..:? "screenDensity")
+            Core.<*> (o Core..:? "supportedAbis")
+            Core.<*> (o Core..:? "supportedLocales")
+      )
+
+instance Core.ToJSON DeviceSpec where
+  toJSON DeviceSpec {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("screenDensity" Core..=) Core.<$> screenDensity,
+            ("supportedAbis" Core..=) Core.<$> supportedAbis,
+            ("supportedLocales" Core..=) Core.<$> supportedLocales
+          ]
+      )
+
+-- | A single device tier. Devices matching any of the device groups in device/group/names are considered to match the tier.
+--
+-- /See:/ 'newDeviceTier' smart constructor.
+data DeviceTier = DeviceTier
+  { -- | Groups of devices included in this tier. These groups must be defined explicitly under device_groups in this configuration.
+    deviceGroupNames :: (Core.Maybe [Core.Text]),
+    -- | The priority level of the tier. Tiers are evaluated in descending order of level: the highest level tier has the highest priority. The highest tier matching a given device is selected for that device. You should use a contiguous range of levels for your tiers in a tier set; tier levels in a tier set must be unique. For instance, if your tier set has 4 tiers (including the global fallback), you should define tiers 1, 2 and 3 in this configuration. Note: tier 0 is implicitly defined as a global fallback and selected for devices that don\'t match any of the tiers explicitly defined here. You mustn\'t define level 0 explicitly in this configuration.
+    level :: (Core.Maybe Core.Int32)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'DeviceTier' with the minimum fields required to make a request.
+newDeviceTier ::
+  DeviceTier
+newDeviceTier =
+  DeviceTier {deviceGroupNames = Core.Nothing, level = Core.Nothing}
+
+instance Core.FromJSON DeviceTier where
+  parseJSON =
+    Core.withObject
+      "DeviceTier"
+      ( \o ->
+          DeviceTier
+            Core.<$> (o Core..:? "deviceGroupNames")
+            Core.<*> (o Core..:? "level")
+      )
+
+instance Core.ToJSON DeviceTier where
+  toJSON DeviceTier {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("deviceGroupNames" Core..=) Core.<$> deviceGroupNames,
+            ("level" Core..=) Core.<$> level
+          ]
+      )
+
+-- | Configuration describing device targeting criteria for the content of an app.
+--
+-- /See:/ 'newDeviceTierConfig' smart constructor.
+data DeviceTierConfig = DeviceTierConfig
+  { -- | Definition of device groups for the app.
+    deviceGroups :: (Core.Maybe [DeviceGroup]),
+    -- | Output only. The device tier config ID.
+    deviceTierConfigId :: (Core.Maybe Core.Int64),
+    -- | Definition of the set of device tiers for the app.
+    deviceTierSet :: (Core.Maybe DeviceTierSet),
+    -- | Definition of user country sets for the app.
+    userCountrySets :: (Core.Maybe [UserCountrySet])
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'DeviceTierConfig' with the minimum fields required to make a request.
+newDeviceTierConfig ::
+  DeviceTierConfig
+newDeviceTierConfig =
+  DeviceTierConfig
+    { deviceGroups = Core.Nothing,
+      deviceTierConfigId = Core.Nothing,
+      deviceTierSet = Core.Nothing,
+      userCountrySets = Core.Nothing
+    }
+
+instance Core.FromJSON DeviceTierConfig where
+  parseJSON =
+    Core.withObject
+      "DeviceTierConfig"
+      ( \o ->
+          DeviceTierConfig
+            Core.<$> (o Core..:? "deviceGroups")
+            Core.<*> ( o
+                         Core..:? "deviceTierConfigId"
+                         Core.<&> Core.fmap Core.fromAsText
+                     )
+            Core.<*> (o Core..:? "deviceTierSet")
+            Core.<*> (o Core..:? "userCountrySets")
+      )
+
+instance Core.ToJSON DeviceTierConfig where
+  toJSON DeviceTierConfig {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("deviceGroups" Core..=) Core.<$> deviceGroups,
+            ("deviceTierConfigId" Core..=)
+              Core.. Core.AsText
+              Core.<$> deviceTierConfigId,
+            ("deviceTierSet" Core..=) Core.<$> deviceTierSet,
+            ("userCountrySets" Core..=) Core.<$> userCountrySets
+          ]
+      )
+
+-- | A set of device tiers. A tier set determines what variation of app content gets served to a specific device, for device-targeted content. You should assign a priority level to each tier, which determines the ordering by which they are evaluated by Play. See the documentation of DeviceTier.level for more details.
+--
+-- /See:/ 'newDeviceTierSet' smart constructor.
+newtype DeviceTierSet = DeviceTierSet
+  { -- | Device tiers belonging to the set.
+    deviceTiers :: (Core.Maybe [DeviceTier])
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'DeviceTierSet' with the minimum fields required to make a request.
+newDeviceTierSet ::
+  DeviceTierSet
+newDeviceTierSet = DeviceTierSet {deviceTiers = Core.Nothing}
+
+instance Core.FromJSON DeviceTierSet where
+  parseJSON =
+    Core.withObject
+      "DeviceTierSet"
+      (\o -> DeviceTierSet Core.<$> (o Core..:? "deviceTiers"))
+
+instance Core.ToJSON DeviceTierSet where
+  toJSON DeviceTierSet {..} =
+    Core.object
+      (Core.catMaybes [("deviceTiers" Core..=) Core.<$> deviceTiers])
+
+-- | An expansion file. The resource for ExpansionFilesService.
+--
+-- /See:/ 'newExpansionFile' smart constructor.
+data ExpansionFile = ExpansionFile
+  { -- | 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.
+    fileSize :: (Core.Maybe Core.Int64),
+    -- | If set, this APK\'s expansion file references another APK\'s expansion file. The file_size field will not be set.
+    referencesVersion :: (Core.Maybe Core.Int32)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'ExpansionFile' with the minimum fields required to make a request.
+newExpansionFile ::
+  ExpansionFile
+newExpansionFile =
+  ExpansionFile
+    { fileSize = Core.Nothing,
+      referencesVersion = Core.Nothing
+    }
+
+instance Core.FromJSON ExpansionFile where
+  parseJSON =
+    Core.withObject
+      "ExpansionFile"
+      ( \o ->
+          ExpansionFile
+            Core.<$> (o Core..:? "fileSize" Core.<&> Core.fmap Core.fromAsText)
+            Core.<*> (o Core..:? "referencesVersion")
+      )
+
+instance Core.ToJSON ExpansionFile where
+  toJSON ExpansionFile {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("fileSize" Core..=) Core.. Core.AsText Core.<$> fileSize,
+            ("referencesVersion" Core..=) Core.<$> referencesVersion
+          ]
+      )
+
+-- | Response for uploading an expansion file.
+--
+-- /See:/ 'newExpansionFilesUploadResponse' smart constructor.
+newtype ExpansionFilesUploadResponse = ExpansionFilesUploadResponse
+  { -- | The uploaded expansion file configuration.
+    expansionFile :: (Core.Maybe ExpansionFile)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'ExpansionFilesUploadResponse' with the minimum fields required to make a request.
+newExpansionFilesUploadResponse ::
+  ExpansionFilesUploadResponse
+newExpansionFilesUploadResponse =
+  ExpansionFilesUploadResponse {expansionFile = Core.Nothing}
+
+instance Core.FromJSON ExpansionFilesUploadResponse where
+  parseJSON =
+    Core.withObject
+      "ExpansionFilesUploadResponse"
+      ( \o ->
+          ExpansionFilesUploadResponse Core.<$> (o Core..:? "expansionFile")
+      )
+
+instance Core.ToJSON ExpansionFilesUploadResponse where
+  toJSON ExpansionFilesUploadResponse {..} =
+    Core.object
+      (Core.catMaybes [("expansionFile" Core..=) Core.<$> expansionFile])
+
+-- | User account identifier in the third-party service.
+--
+-- /See:/ 'newExternalAccountIdentifiers' smart constructor.
+data ExternalAccountIdentifiers = ExternalAccountIdentifiers
+  { -- | User account identifier in the third-party service. Only present if account linking happened as part of the subscription purchase flow.
+    externalAccountId :: (Core.Maybe Core.Text),
+    -- | An obfuscated version of the id that is uniquely associated with the user\'s account in your app. Present for the following purchases: * If account linking happened as part of the subscription purchase flow. * It was specified using https:\/\/developer.android.com\/reference\/com\/android\/billingclient\/api\/BillingFlowParams.Builder#setobfuscatedaccountid when the purchase was made.
+    obfuscatedExternalAccountId :: (Core.Maybe Core.Text),
+    -- | An obfuscated version of the id that is uniquely associated with the user\'s profile in your app. Only present if specified using https:\/\/developer.android.com\/reference\/com\/android\/billingclient\/api\/BillingFlowParams.Builder#setobfuscatedprofileid when the purchase was made.
+    obfuscatedExternalProfileId :: (Core.Maybe Core.Text)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'ExternalAccountIdentifiers' with the minimum fields required to make a request.
+newExternalAccountIdentifiers ::
+  ExternalAccountIdentifiers
+newExternalAccountIdentifiers =
+  ExternalAccountIdentifiers
+    { externalAccountId = Core.Nothing,
+      obfuscatedExternalAccountId = Core.Nothing,
+      obfuscatedExternalProfileId = Core.Nothing
+    }
+
+instance Core.FromJSON ExternalAccountIdentifiers where
+  parseJSON =
+    Core.withObject
+      "ExternalAccountIdentifiers"
+      ( \o ->
+          ExternalAccountIdentifiers
+            Core.<$> (o Core..:? "externalAccountId")
+            Core.<*> (o Core..:? "obfuscatedExternalAccountId")
+            Core.<*> (o Core..:? "obfuscatedExternalProfileId")
+      )
+
+instance Core.ToJSON ExternalAccountIdentifiers where
+  toJSON ExternalAccountIdentifiers {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("externalAccountId" Core..=) Core.<$> externalAccountId,
+            ("obfuscatedExternalAccountId" Core..=)
+              Core.<$> obfuscatedExternalAccountId,
+            ("obfuscatedExternalProfileId" Core..=)
+              Core.<$> obfuscatedExternalProfileId
+          ]
+      )
+
+-- | Details of an external subscription.
+--
+-- /See:/ 'newExternalSubscription' smart constructor.
+newtype ExternalSubscription = ExternalSubscription
+  { -- | Required. The type of the external subscription.
+    subscriptionType :: (Core.Maybe ExternalSubscription_SubscriptionType)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'ExternalSubscription' with the minimum fields required to make a request.
+newExternalSubscription ::
+  ExternalSubscription
+newExternalSubscription =
+  ExternalSubscription {subscriptionType = Core.Nothing}
+
+instance Core.FromJSON ExternalSubscription where
+  parseJSON =
+    Core.withObject
+      "ExternalSubscription"
+      ( \o ->
+          ExternalSubscription Core.<$> (o Core..:? "subscriptionType")
+      )
+
+instance Core.ToJSON ExternalSubscription where
+  toJSON ExternalSubscription {..} =
+    Core.object
+      ( Core.catMaybes
+          [("subscriptionType" Core..=) Core.<$> subscriptionType]
+      )
+
+-- | The details of an external transaction.
+--
+-- /See:/ 'newExternalTransaction' smart constructor.
+data ExternalTransaction = ExternalTransaction
+  { -- | Output only. The time when this transaction was created. This is the time when Google was notified of the transaction.
+    createTime :: (Core.Maybe Core.DateTime),
+    -- | Output only. The current transaction amount before tax. This represents the current pre-tax amount including any refunds that may have been applied to this transaction.
+    currentPreTaxAmount :: (Core.Maybe Price),
+    -- | Output only. The current tax amount. This represents the current tax amount including any refunds that may have been applied to this transaction.
+    currentTaxAmount :: (Core.Maybe Price),
+    -- | Output only. The id of this transaction. All transaction ids under the same package name must be unique. Set when creating the external transaction.
+    externalTransactionId :: (Core.Maybe Core.Text),
+    -- | This is a one-time transaction and not part of a subscription.
+    oneTimeTransaction :: (Core.Maybe OneTimeExternalTransaction),
+    -- | Required. The original transaction amount before taxes. This represents the pre-tax amount originally notified to Google before any refunds were applied.
+    originalPreTaxAmount :: (Core.Maybe Price),
+    -- | Required. The original tax amount. This represents the tax amount originally notified to Google before any refunds were applied.
+    originalTaxAmount :: (Core.Maybe Price),
+    -- | Output only. The resource name of the external transaction. The package name of the application the inapp products were sold (for example, \'com.some.app\').
+    packageName :: (Core.Maybe Core.Text),
+    -- | This transaction is part of a recurring series of transactions.
+    recurringTransaction :: (Core.Maybe RecurringExternalTransaction),
+    -- | Output only. If set, this transaction was a test purchase. Google will not charge for a test transaction.
+    testPurchase :: (Core.Maybe ExternalTransactionTestPurchase),
+    -- | Optional. The transaction program code, used to help determine service fee for eligible apps participating in partner programs. Developers participating in the Play Media Experience Program (https:\/\/play.google.com\/console\/about\/programs\/mediaprogram\/) must provide the program code when reporting alternative billing transactions. If you are an eligible developer, please contact your BDM for more information on how to set this field. Note: this field can not be used for external offers transactions.
+    transactionProgramCode :: (Core.Maybe Core.Int32),
+    -- | Output only. The current state of the transaction.
+    transactionState :: (Core.Maybe ExternalTransaction_TransactionState),
+    -- | Required. The time when the transaction was completed.
+    transactionTime :: (Core.Maybe Core.DateTime),
+    -- | Required. User address for tax computation.
+    userTaxAddress :: (Core.Maybe ExternalTransactionAddress)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'ExternalTransaction' with the minimum fields required to make a request.
+newExternalTransaction ::
+  ExternalTransaction
+newExternalTransaction =
+  ExternalTransaction
+    { createTime = Core.Nothing,
+      currentPreTaxAmount = Core.Nothing,
+      currentTaxAmount = Core.Nothing,
+      externalTransactionId = Core.Nothing,
+      oneTimeTransaction = Core.Nothing,
+      originalPreTaxAmount = Core.Nothing,
+      originalTaxAmount = Core.Nothing,
+      packageName = Core.Nothing,
+      recurringTransaction = Core.Nothing,
+      testPurchase = Core.Nothing,
+      transactionProgramCode = Core.Nothing,
+      transactionState = Core.Nothing,
+      transactionTime = Core.Nothing,
+      userTaxAddress = Core.Nothing
+    }
+
+instance Core.FromJSON ExternalTransaction where
+  parseJSON =
+    Core.withObject
+      "ExternalTransaction"
+      ( \o ->
+          ExternalTransaction
+            Core.<$> (o Core..:? "createTime")
+            Core.<*> (o Core..:? "currentPreTaxAmount")
+            Core.<*> (o Core..:? "currentTaxAmount")
+            Core.<*> (o Core..:? "externalTransactionId")
+            Core.<*> (o Core..:? "oneTimeTransaction")
+            Core.<*> (o Core..:? "originalPreTaxAmount")
+            Core.<*> (o Core..:? "originalTaxAmount")
+            Core.<*> (o Core..:? "packageName")
+            Core.<*> (o Core..:? "recurringTransaction")
+            Core.<*> (o Core..:? "testPurchase")
+            Core.<*> (o Core..:? "transactionProgramCode")
+            Core.<*> (o Core..:? "transactionState")
+            Core.<*> (o Core..:? "transactionTime")
+            Core.<*> (o Core..:? "userTaxAddress")
+      )
+
+instance Core.ToJSON ExternalTransaction where
+  toJSON ExternalTransaction {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("createTime" Core..=) Core.<$> createTime,
+            ("currentPreTaxAmount" Core..=) Core.<$> currentPreTaxAmount,
+            ("currentTaxAmount" Core..=) Core.<$> currentTaxAmount,
+            ("externalTransactionId" Core..=) Core.<$> externalTransactionId,
+            ("oneTimeTransaction" Core..=) Core.<$> oneTimeTransaction,
+            ("originalPreTaxAmount" Core..=) Core.<$> originalPreTaxAmount,
+            ("originalTaxAmount" Core..=) Core.<$> originalTaxAmount,
+            ("packageName" Core..=) Core.<$> packageName,
+            ("recurringTransaction" Core..=) Core.<$> recurringTransaction,
+            ("testPurchase" Core..=) Core.<$> testPurchase,
+            ("transactionProgramCode" Core..=) Core.<$> transactionProgramCode,
+            ("transactionState" Core..=) Core.<$> transactionState,
+            ("transactionTime" Core..=) Core.<$> transactionTime,
+            ("userTaxAddress" Core..=) Core.<$> userTaxAddress
+          ]
+      )
+
+-- | User\'s address for the external transaction.
+--
+-- /See:/ 'newExternalTransactionAddress' smart constructor.
+data ExternalTransactionAddress = ExternalTransactionAddress
+  { -- | Optional. Top-level administrative subdivision of the country\/region. Only required for transactions in India. Valid values are \"ANDAMAN AND NICOBAR ISLANDS\", \"ANDHRA PRADESH\", \"ARUNACHAL PRADESH\", \"ASSAM\", \"BIHAR\", \"CHANDIGARH\", \"CHHATTISGARH\", \"DADRA AND NAGAR HAVELI\", \"DADRA AND NAGAR HAVELI AND DAMAN AND DIU\", \"DAMAN AND DIU\", \"DELHI\", \"GOA\", \"GUJARAT\", \"HARYANA\", \"HIMACHAL PRADESH\", \"JAMMU AND KASHMIR\", \"JHARKHAND\", \"KARNATAKA\", \"KERALA\", \"LADAKH\", \"LAKSHADWEEP\", \"MADHYA PRADESH\", \"MAHARASHTRA\", \"MANIPUR\", \"MEGHALAYA\", \"MIZORAM\", \"NAGALAND\", \"ODISHA\", \"PUDUCHERRY\", \"PUNJAB\", \"RAJASTHAN\", \"SIKKIM\", \"TAMIL NADU\", \"TELANGANA\", \"TRIPURA\", \"UTTAR PRADESH\", \"UTTARAKHAND\", and \"WEST BENGAL\".
+    administrativeArea :: (Core.Maybe Core.Text),
+    -- | Required. Two letter region code based on ISO-3166-1 Alpha-2 (UN region codes).
+    regionCode :: (Core.Maybe Core.Text)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'ExternalTransactionAddress' with the minimum fields required to make a request.
+newExternalTransactionAddress ::
+  ExternalTransactionAddress
+newExternalTransactionAddress =
+  ExternalTransactionAddress
+    { administrativeArea = Core.Nothing,
+      regionCode = Core.Nothing
+    }
+
+instance Core.FromJSON ExternalTransactionAddress where
+  parseJSON =
+    Core.withObject
+      "ExternalTransactionAddress"
+      ( \o ->
+          ExternalTransactionAddress
+            Core.<$> (o Core..:? "administrativeArea")
+            Core.<*> (o Core..:? "regionCode")
+      )
+
+instance Core.ToJSON ExternalTransactionAddress where
+  toJSON ExternalTransactionAddress {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("administrativeArea" Core..=) Core.<$> administrativeArea,
+            ("regionCode" Core..=) Core.<$> regionCode
+          ]
+      )
+
+-- | Represents a transaction performed using a test account. These transactions will not be charged by Google.
+--
+-- /See:/ 'newExternalTransactionTestPurchase' smart constructor.
+data ExternalTransactionTestPurchase = ExternalTransactionTestPurchase
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'ExternalTransactionTestPurchase' with the minimum fields required to make a request.
+newExternalTransactionTestPurchase ::
+  ExternalTransactionTestPurchase
+newExternalTransactionTestPurchase =
+  ExternalTransactionTestPurchase
+
+instance Core.FromJSON ExternalTransactionTestPurchase where
+  parseJSON =
+    Core.withObject
+      "ExternalTransactionTestPurchase"
+      (\o -> Core.pure ExternalTransactionTestPurchase)
+
+instance Core.ToJSON ExternalTransactionTestPurchase where
+  toJSON = Core.const Core.emptyObject
+
+-- | Defines an APK available for this application that is hosted externally and not uploaded to Google Play. This function is only available to organizations using Managed Play whose application is configured to restrict distribution to the organizations.
+--
+-- /See:/ 'newExternallyHostedApk' smart constructor.
+data ExternallyHostedApk = ExternallyHostedApk
+  { -- | The application label.
+    applicationLabel :: (Core.Maybe Core.Text),
+    -- | A certificate (or array of certificates if a certificate-chain is used) used to sign this APK, represented as a base64 encoded byte array.
+    certificateBase64s :: (Core.Maybe [Core.Text]),
+    -- | The URL at which the APK is hosted. This must be an https URL.
+    externallyHostedUrl :: (Core.Maybe Core.Text),
+    -- | The sha1 checksum of this APK, represented as a base64 encoded byte array.
+    fileSha1Base64 :: (Core.Maybe Core.Text),
+    -- | The sha256 checksum of this APK, represented as a base64 encoded byte array.
+    fileSha256Base64 :: (Core.Maybe Core.Text),
+    -- | The file size in bytes of this APK.
+    fileSize :: (Core.Maybe Core.Int64),
+    -- | The icon image from the APK, as a base64 encoded byte array.
+    iconBase64 :: (Core.Maybe Core.Text),
+    -- | The maximum SDK supported by this APK (optional).
+    maximumSdk :: (Core.Maybe Core.Int32),
+    -- | The minimum SDK targeted by this APK.
+    minimumSdk :: (Core.Maybe Core.Int32),
+    -- | The native code environments supported by this APK (optional).
+    nativeCodes :: (Core.Maybe [Core.Text]),
+    -- | The package name.
+    packageName :: (Core.Maybe Core.Text),
+    -- | The features required by this APK (optional).
+    usesFeatures :: (Core.Maybe [Core.Text]),
+    -- | The permissions requested by this APK.
+    usesPermissions :: (Core.Maybe [UsesPermission]),
+    -- | The version code of this APK.
+    versionCode :: (Core.Maybe Core.Int32),
+    -- | The version name of this APK.
+    versionName :: (Core.Maybe Core.Text)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'ExternallyHostedApk' with the minimum fields required to make a request.
+newExternallyHostedApk ::
+  ExternallyHostedApk
+newExternallyHostedApk =
+  ExternallyHostedApk
+    { applicationLabel = Core.Nothing,
+      certificateBase64s = Core.Nothing,
+      externallyHostedUrl = Core.Nothing,
+      fileSha1Base64 = Core.Nothing,
+      fileSha256Base64 = Core.Nothing,
+      fileSize = Core.Nothing,
+      iconBase64 = Core.Nothing,
+      maximumSdk = Core.Nothing,
+      minimumSdk = Core.Nothing,
+      nativeCodes = Core.Nothing,
+      packageName = Core.Nothing,
+      usesFeatures = Core.Nothing,
+      usesPermissions = Core.Nothing,
+      versionCode = Core.Nothing,
+      versionName = Core.Nothing
+    }
+
+instance Core.FromJSON ExternallyHostedApk where
+  parseJSON =
+    Core.withObject
+      "ExternallyHostedApk"
+      ( \o ->
+          ExternallyHostedApk
+            Core.<$> (o Core..:? "applicationLabel")
+            Core.<*> (o Core..:? "certificateBase64s")
+            Core.<*> (o Core..:? "externallyHostedUrl")
+            Core.<*> (o Core..:? "fileSha1Base64")
+            Core.<*> (o Core..:? "fileSha256Base64")
+            Core.<*> (o Core..:? "fileSize" Core.<&> Core.fmap Core.fromAsText)
+            Core.<*> (o Core..:? "iconBase64")
+            Core.<*> (o Core..:? "maximumSdk")
+            Core.<*> (o Core..:? "minimumSdk")
+            Core.<*> (o Core..:? "nativeCodes")
+            Core.<*> (o Core..:? "packageName")
+            Core.<*> (o Core..:? "usesFeatures")
+            Core.<*> (o Core..:? "usesPermissions")
+            Core.<*> (o Core..:? "versionCode")
+            Core.<*> (o Core..:? "versionName")
+      )
+
+instance Core.ToJSON ExternallyHostedApk where
+  toJSON ExternallyHostedApk {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("applicationLabel" Core..=) Core.<$> applicationLabel,
+            ("certificateBase64s" Core..=) Core.<$> certificateBase64s,
+            ("externallyHostedUrl" Core..=) Core.<$> externallyHostedUrl,
+            ("fileSha1Base64" Core..=) Core.<$> fileSha1Base64,
+            ("fileSha256Base64" Core..=) Core.<$> fileSha256Base64,
+            ("fileSize" Core..=) Core.. Core.AsText Core.<$> fileSize,
+            ("iconBase64" Core..=) Core.<$> iconBase64,
+            ("maximumSdk" Core..=) Core.<$> maximumSdk,
+            ("minimumSdk" Core..=) Core.<$> minimumSdk,
+            ("nativeCodes" Core..=) Core.<$> nativeCodes,
+            ("packageName" Core..=) Core.<$> packageName,
+            ("usesFeatures" Core..=) Core.<$> usesFeatures,
+            ("usesPermissions" Core..=) Core.<$> usesPermissions,
+            ("versionCode" Core..=) Core.<$> versionCode,
+            ("versionName" Core..=) Core.<$> versionName
+          ]
+      )
+
+-- | A full refund of the remaining amount of a transaction.
+--
+-- /See:/ 'newFullRefund' smart constructor.
+data FullRefund = FullRefund
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'FullRefund' with the minimum fields required to make a request.
+newFullRefund ::
+  FullRefund
+newFullRefund = FullRefund
+
+instance Core.FromJSON FullRefund where
+  parseJSON =
+    Core.withObject "FullRefund" (\o -> Core.pure FullRefund)
+
+instance Core.ToJSON FullRefund where
+  toJSON = Core.const Core.emptyObject
+
+-- | Response to list generated APKs.
+--
+-- /See:/ 'newGeneratedApksListResponse' smart constructor.
+newtype GeneratedApksListResponse = GeneratedApksListResponse
+  { -- | All generated APKs, grouped by the APK signing key.
+    generatedApks :: (Core.Maybe [GeneratedApksPerSigningKey])
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'GeneratedApksListResponse' with the minimum fields required to make a request.
+newGeneratedApksListResponse ::
+  GeneratedApksListResponse
+newGeneratedApksListResponse =
+  GeneratedApksListResponse {generatedApks = Core.Nothing}
+
+instance Core.FromJSON GeneratedApksListResponse where
+  parseJSON =
+    Core.withObject
+      "GeneratedApksListResponse"
+      ( \o ->
+          GeneratedApksListResponse Core.<$> (o Core..:? "generatedApks")
+      )
+
+instance Core.ToJSON GeneratedApksListResponse where
+  toJSON GeneratedApksListResponse {..} =
+    Core.object
+      (Core.catMaybes [("generatedApks" Core..=) Core.<$> generatedApks])
+
+-- | Download metadata for split, standalone and universal APKs, as well as asset pack slices, signed with a given key.
+--
+-- /See:/ 'newGeneratedApksPerSigningKey' smart constructor.
+data GeneratedApksPerSigningKey = GeneratedApksPerSigningKey
+  { -- | SHA256 hash of the APK signing public key certificate.
+    certificateSha256Hash :: (Core.Maybe Core.Text),
+    -- | List of asset pack slices which will be served for this app bundle, signed with a key corresponding to certificate/sha256/hash.
+    generatedAssetPackSlices :: (Core.Maybe [GeneratedAssetPackSlice]),
+    -- | Generated recovery apks for recovery actions signed with a key corresponding to certificate/sha256/hash. This includes all generated recovery APKs, also those in draft or cancelled state. This field is not set if no recovery actions were created for this signing key.
+    generatedRecoveryModules :: (Core.Maybe [GeneratedRecoveryApk]),
+    -- | List of generated split APKs, signed with a key corresponding to certificate/sha256/hash.
+    generatedSplitApks :: (Core.Maybe [GeneratedSplitApk]),
+    -- | List of generated standalone APKs, signed with a key corresponding to certificate/sha256/hash.
+    generatedStandaloneApks :: (Core.Maybe [GeneratedStandaloneApk]),
+    -- | Generated universal APK, signed with a key corresponding to certificate/sha256/hash. This field is not set if no universal APK was generated for this signing key.
+    generatedUniversalApk :: (Core.Maybe GeneratedUniversalApk),
+    -- | Contains targeting information about the generated apks.
+    targetingInfo :: (Core.Maybe TargetingInfo)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'GeneratedApksPerSigningKey' with the minimum fields required to make a request.
+newGeneratedApksPerSigningKey ::
+  GeneratedApksPerSigningKey
+newGeneratedApksPerSigningKey =
+  GeneratedApksPerSigningKey
+    { certificateSha256Hash = Core.Nothing,
+      generatedAssetPackSlices = Core.Nothing,
+      generatedRecoveryModules = Core.Nothing,
+      generatedSplitApks = Core.Nothing,
+      generatedStandaloneApks = Core.Nothing,
+      generatedUniversalApk = Core.Nothing,
+      targetingInfo = Core.Nothing
+    }
+
+instance Core.FromJSON GeneratedApksPerSigningKey where
+  parseJSON =
+    Core.withObject
+      "GeneratedApksPerSigningKey"
+      ( \o ->
+          GeneratedApksPerSigningKey
+            Core.<$> (o Core..:? "certificateSha256Hash")
+            Core.<*> (o Core..:? "generatedAssetPackSlices")
+            Core.<*> (o Core..:? "generatedRecoveryModules")
+            Core.<*> (o Core..:? "generatedSplitApks")
+            Core.<*> (o Core..:? "generatedStandaloneApks")
+            Core.<*> (o Core..:? "generatedUniversalApk")
+            Core.<*> (o Core..:? "targetingInfo")
+      )
+
+instance Core.ToJSON GeneratedApksPerSigningKey where
+  toJSON GeneratedApksPerSigningKey {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("certificateSha256Hash" Core..=) Core.<$> certificateSha256Hash,
+            ("generatedAssetPackSlices" Core..=)
+              Core.<$> generatedAssetPackSlices,
+            ("generatedRecoveryModules" Core..=)
+              Core.<$> generatedRecoveryModules,
+            ("generatedSplitApks" Core..=) Core.<$> generatedSplitApks,
+            ("generatedStandaloneApks" Core..=)
+              Core.<$> generatedStandaloneApks,
+            ("generatedUniversalApk" Core..=) Core.<$> generatedUniversalApk,
+            ("targetingInfo" Core..=) Core.<$> targetingInfo
+          ]
+      )
+
+-- | Download metadata for an asset pack slice.
+--
+-- /See:/ 'newGeneratedAssetPackSlice' smart constructor.
+data GeneratedAssetPackSlice = GeneratedAssetPackSlice
+  { -- | Download ID, which uniquely identifies the APK to download. Should be supplied to @generatedapks.download@ method.
+    downloadId :: (Core.Maybe Core.Text),
+    -- | Name of the module that this asset slice belongs to.
+    moduleName :: (Core.Maybe Core.Text),
+    -- | Asset slice ID.
+    sliceId :: (Core.Maybe Core.Text),
+    -- | Asset module version.
+    version :: (Core.Maybe Core.Int64)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'GeneratedAssetPackSlice' with the minimum fields required to make a request.
+newGeneratedAssetPackSlice ::
+  GeneratedAssetPackSlice
+newGeneratedAssetPackSlice =
+  GeneratedAssetPackSlice
+    { downloadId = Core.Nothing,
+      moduleName = Core.Nothing,
+      sliceId = Core.Nothing,
+      version = Core.Nothing
+    }
+
+instance Core.FromJSON GeneratedAssetPackSlice where
+  parseJSON =
+    Core.withObject
+      "GeneratedAssetPackSlice"
+      ( \o ->
+          GeneratedAssetPackSlice
+            Core.<$> (o Core..:? "downloadId")
+            Core.<*> (o Core..:? "moduleName")
+            Core.<*> (o Core..:? "sliceId")
+            Core.<*> (o Core..:? "version" Core.<&> Core.fmap Core.fromAsText)
+      )
+
+instance Core.ToJSON GeneratedAssetPackSlice where
+  toJSON GeneratedAssetPackSlice {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("downloadId" Core..=) Core.<$> downloadId,
+            ("moduleName" Core..=) Core.<$> moduleName,
+            ("sliceId" Core..=) Core.<$> sliceId,
+            ("version" Core..=) Core.. Core.AsText Core.<$> version
+          ]
+      )
+
+-- | Download metadata for an app recovery module.
+--
+-- /See:/ 'newGeneratedRecoveryApk' smart constructor.
+data GeneratedRecoveryApk = GeneratedRecoveryApk
+  { -- | Download ID, which uniquely identifies the APK to download. Should be supplied to @generatedapks.download@ method.
+    downloadId :: (Core.Maybe Core.Text),
+    -- | Name of the module which recovery apk belongs to.
+    moduleName :: (Core.Maybe Core.Text),
+    -- | ID of the recovery action.
+    recoveryId :: (Core.Maybe Core.Int64),
+    -- | The status of the recovery action corresponding to the recovery apk.
+    recoveryStatus :: (Core.Maybe GeneratedRecoveryApk_RecoveryStatus)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'GeneratedRecoveryApk' with the minimum fields required to make a request.
+newGeneratedRecoveryApk ::
+  GeneratedRecoveryApk
+newGeneratedRecoveryApk =
+  GeneratedRecoveryApk
+    { downloadId = Core.Nothing,
+      moduleName = Core.Nothing,
+      recoveryId = Core.Nothing,
+      recoveryStatus = Core.Nothing
+    }
+
+instance Core.FromJSON GeneratedRecoveryApk where
+  parseJSON =
+    Core.withObject
+      "GeneratedRecoveryApk"
+      ( \o ->
+          GeneratedRecoveryApk
+            Core.<$> (o Core..:? "downloadId")
+            Core.<*> (o Core..:? "moduleName")
+            Core.<*> (o Core..:? "recoveryId" Core.<&> Core.fmap Core.fromAsText)
+            Core.<*> (o Core..:? "recoveryStatus")
+      )
+
+instance Core.ToJSON GeneratedRecoveryApk where
+  toJSON GeneratedRecoveryApk {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("downloadId" Core..=) Core.<$> downloadId,
+            ("moduleName" Core..=) Core.<$> moduleName,
+            ("recoveryId" Core..=) Core.. Core.AsText Core.<$> recoveryId,
+            ("recoveryStatus" Core..=) Core.<$> recoveryStatus
+          ]
+      )
+
+-- | Download metadata for a split APK.
+--
+-- /See:/ 'newGeneratedSplitApk' smart constructor.
+data GeneratedSplitApk = GeneratedSplitApk
+  { -- | Download ID, which uniquely identifies the APK to download. Should be supplied to @generatedapks.download@ method.
+    downloadId :: (Core.Maybe Core.Text),
+    -- | Name of the module that this APK belongs to.
+    moduleName :: (Core.Maybe Core.Text),
+    -- | Split ID. Empty for the main split of the base module.
+    splitId :: (Core.Maybe Core.Text),
+    -- | ID of the generated variant.
+    variantId :: (Core.Maybe Core.Int32)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'GeneratedSplitApk' with the minimum fields required to make a request.
+newGeneratedSplitApk ::
+  GeneratedSplitApk
+newGeneratedSplitApk =
+  GeneratedSplitApk
+    { downloadId = Core.Nothing,
+      moduleName = Core.Nothing,
+      splitId = Core.Nothing,
+      variantId = Core.Nothing
+    }
+
+instance Core.FromJSON GeneratedSplitApk where
+  parseJSON =
+    Core.withObject
+      "GeneratedSplitApk"
+      ( \o ->
+          GeneratedSplitApk
+            Core.<$> (o Core..:? "downloadId")
+            Core.<*> (o Core..:? "moduleName")
+            Core.<*> (o Core..:? "splitId")
+            Core.<*> (o Core..:? "variantId")
+      )
+
+instance Core.ToJSON GeneratedSplitApk where
+  toJSON GeneratedSplitApk {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("downloadId" Core..=) Core.<$> downloadId,
+            ("moduleName" Core..=) Core.<$> moduleName,
+            ("splitId" Core..=) Core.<$> splitId,
+            ("variantId" Core..=) Core.<$> variantId
+          ]
+      )
+
+-- | Download metadata for a standalone APK.
+--
+-- /See:/ 'newGeneratedStandaloneApk' smart constructor.
+data GeneratedStandaloneApk = GeneratedStandaloneApk
+  { -- | Download ID, which uniquely identifies the APK to download. Should be supplied to @generatedapks.download@ method.
+    downloadId :: (Core.Maybe Core.Text),
+    -- | ID of the generated variant.
+    variantId :: (Core.Maybe Core.Int32)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'GeneratedStandaloneApk' with the minimum fields required to make a request.
+newGeneratedStandaloneApk ::
+  GeneratedStandaloneApk
+newGeneratedStandaloneApk =
+  GeneratedStandaloneApk
+    { downloadId = Core.Nothing,
+      variantId = Core.Nothing
+    }
+
+instance Core.FromJSON GeneratedStandaloneApk where
+  parseJSON =
+    Core.withObject
+      "GeneratedStandaloneApk"
+      ( \o ->
+          GeneratedStandaloneApk
+            Core.<$> (o Core..:? "downloadId")
+            Core.<*> (o Core..:? "variantId")
+      )
+
+instance Core.ToJSON GeneratedStandaloneApk where
+  toJSON GeneratedStandaloneApk {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("downloadId" Core..=) Core.<$> downloadId,
+            ("variantId" Core..=) Core.<$> variantId
+          ]
+      )
+
+-- | Download metadata for a universal APK.
+--
+-- /See:/ 'newGeneratedUniversalApk' smart constructor.
+newtype GeneratedUniversalApk = GeneratedUniversalApk
+  { -- | Download ID, which uniquely identifies the APK to download. Should be supplied to @generatedapks.download@ method.
+    downloadId :: (Core.Maybe Core.Text)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'GeneratedUniversalApk' with the minimum fields required to make a request.
+newGeneratedUniversalApk ::
+  GeneratedUniversalApk
+newGeneratedUniversalApk =
+  GeneratedUniversalApk {downloadId = Core.Nothing}
+
+instance Core.FromJSON GeneratedUniversalApk where
+  parseJSON =
+    Core.withObject
+      "GeneratedUniversalApk"
+      (\o -> GeneratedUniversalApk Core.<$> (o Core..:? "downloadId"))
+
+instance Core.ToJSON GeneratedUniversalApk where
+  toJSON GeneratedUniversalApk {..} =
+    Core.object
+      (Core.catMaybes [("downloadId" Core..=) Core.<$> downloadId])
+
+-- | Request message for GetSubscriptionOffer.
+--
+-- /See:/ 'newGetSubscriptionOfferRequest' smart constructor.
+data GetSubscriptionOfferRequest = GetSubscriptionOfferRequest
+  { -- | Required. The parent base plan (ID) of the offer to get.
+    basePlanId :: (Core.Maybe Core.Text),
+    -- | Required. The unique offer ID of the offer to get.
+    offerId :: (Core.Maybe Core.Text),
+    -- | Required. The parent app (package name) of the offer to get.
+    packageName :: (Core.Maybe Core.Text),
+    -- | Required. The parent subscription (ID) of the offer to get.
+    productId :: (Core.Maybe Core.Text)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'GetSubscriptionOfferRequest' with the minimum fields required to make a request.
+newGetSubscriptionOfferRequest ::
+  GetSubscriptionOfferRequest
+newGetSubscriptionOfferRequest =
+  GetSubscriptionOfferRequest
+    { basePlanId = Core.Nothing,
+      offerId = Core.Nothing,
+      packageName = Core.Nothing,
+      productId = Core.Nothing
+    }
+
+instance Core.FromJSON GetSubscriptionOfferRequest where
+  parseJSON =
+    Core.withObject
+      "GetSubscriptionOfferRequest"
+      ( \o ->
+          GetSubscriptionOfferRequest
+            Core.<$> (o Core..:? "basePlanId")
+            Core.<*> (o Core..:? "offerId")
+            Core.<*> (o Core..:? "packageName")
+            Core.<*> (o Core..:? "productId")
+      )
+
+instance Core.ToJSON GetSubscriptionOfferRequest where
+  toJSON GetSubscriptionOfferRequest {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("basePlanId" Core..=) Core.<$> basePlanId,
+            ("offerId" Core..=) Core.<$> offerId,
+            ("packageName" Core..=) Core.<$> packageName,
+            ("productId" Core..=) Core.<$> productId
+          ]
+      )
+
+-- | An access grant resource.
+--
+-- /See:/ 'newGrant' smart constructor.
+data Grant = Grant
+  { -- | The permissions granted to the user for this app.
+    appLevelPermissions :: (Core.Maybe [Grant_AppLevelPermissionsItem]),
+    -- | Required. Resource name for this grant, following the pattern \"developers\/{developer}\/users\/{email}\/grants\/{package_name}\". If this grant is for a draft app, the app ID will be used in this resource name instead of the package name.
+    name :: (Core.Maybe Core.Text),
+    -- | Immutable. The package name of the app. This will be empty for draft apps.
+    packageName :: (Core.Maybe Core.Text)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'Grant' with the minimum fields required to make a request.
+newGrant ::
+  Grant
+newGrant =
+  Grant
+    { appLevelPermissions = Core.Nothing,
+      name = Core.Nothing,
+      packageName = Core.Nothing
+    }
+
+instance Core.FromJSON Grant where
+  parseJSON =
+    Core.withObject
+      "Grant"
+      ( \o ->
+          Grant
+            Core.<$> (o Core..:? "appLevelPermissions")
+            Core.<*> (o Core..:? "name")
+            Core.<*> (o Core..:? "packageName")
+      )
+
+instance Core.ToJSON Grant where
+  toJSON Grant {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("appLevelPermissions" Core..=) Core.<$> appLevelPermissions,
+            ("name" Core..=) Core.<$> name,
+            ("packageName" Core..=) Core.<$> packageName
+          ]
+      )
+
+-- | An uploaded image. The resource for ImagesService.
+--
+-- /See:/ 'newImage' smart constructor.
+data Image = Image
+  { -- | A unique id representing this image.
+    id :: (Core.Maybe Core.Text),
+    -- | A sha1 hash of the image.
+    sha1 :: (Core.Maybe Core.Text),
+    -- | A sha256 hash of the image.
+    sha256 :: (Core.Maybe Core.Text),
+    -- | A URL that will serve a preview of the image.
+    url :: (Core.Maybe Core.Text)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'Image' with the minimum fields required to make a request.
+newImage ::
+  Image
+newImage =
+  Image
+    { id = Core.Nothing,
+      sha1 = Core.Nothing,
+      sha256 = Core.Nothing,
+      url = Core.Nothing
+    }
+
+instance Core.FromJSON Image where
+  parseJSON =
+    Core.withObject
+      "Image"
+      ( \o ->
+          Image
+            Core.<$> (o Core..:? "id")
+            Core.<*> (o Core..:? "sha1")
+            Core.<*> (o Core..:? "sha256")
+            Core.<*> (o Core..:? "url")
+      )
+
+instance Core.ToJSON Image where
+  toJSON Image {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("id" Core..=) Core.<$> id,
+            ("sha1" Core..=) Core.<$> sha1,
+            ("sha256" Core..=) Core.<$> sha256,
+            ("url" Core..=) Core.<$> url
+          ]
+      )
+
+-- | Response for deleting all images.
+--
+-- /See:/ 'newImagesDeleteAllResponse' smart constructor.
+newtype ImagesDeleteAllResponse = ImagesDeleteAllResponse
+  { -- | The deleted images.
+    deleted :: (Core.Maybe [Image])
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'ImagesDeleteAllResponse' with the minimum fields required to make a request.
+newImagesDeleteAllResponse ::
+  ImagesDeleteAllResponse
+newImagesDeleteAllResponse =
+  ImagesDeleteAllResponse {deleted = Core.Nothing}
+
+instance Core.FromJSON ImagesDeleteAllResponse where
+  parseJSON =
+    Core.withObject
+      "ImagesDeleteAllResponse"
+      (\o -> ImagesDeleteAllResponse Core.<$> (o Core..:? "deleted"))
+
+instance Core.ToJSON ImagesDeleteAllResponse where
+  toJSON ImagesDeleteAllResponse {..} =
+    Core.object
+      (Core.catMaybes [("deleted" Core..=) Core.<$> deleted])
+
+-- | Response listing all images.
+--
+-- /See:/ 'newImagesListResponse' smart constructor.
+newtype ImagesListResponse = ImagesListResponse
+  { -- | All listed Images.
+    images :: (Core.Maybe [Image])
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'ImagesListResponse' with the minimum fields required to make a request.
+newImagesListResponse ::
+  ImagesListResponse
+newImagesListResponse = ImagesListResponse {images = Core.Nothing}
+
+instance Core.FromJSON ImagesListResponse where
+  parseJSON =
+    Core.withObject
+      "ImagesListResponse"
+      (\o -> ImagesListResponse Core.<$> (o Core..:? "images"))
+
+instance Core.ToJSON ImagesListResponse where
+  toJSON ImagesListResponse {..} =
+    Core.object (Core.catMaybes [("images" Core..=) Core.<$> images])
+
+-- | Response for uploading an image.
+--
+-- /See:/ 'newImagesUploadResponse' smart constructor.
+newtype ImagesUploadResponse = ImagesUploadResponse
+  { -- | The uploaded image.
+    image :: (Core.Maybe Image)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'ImagesUploadResponse' with the minimum fields required to make a request.
+newImagesUploadResponse ::
+  ImagesUploadResponse
+newImagesUploadResponse =
+  ImagesUploadResponse {image = Core.Nothing}
+
+instance Core.FromJSON ImagesUploadResponse where
+  parseJSON =
+    Core.withObject
+      "ImagesUploadResponse"
+      (\o -> ImagesUploadResponse Core.<$> (o Core..:? "image"))
+
+instance Core.ToJSON ImagesUploadResponse where
+  toJSON ImagesUploadResponse {..} =
+    Core.object (Core.catMaybes [("image" Core..=) Core.<$> image])
+
+-- | An in-app product. The resource for InappproductsService.
+--
+-- /See:/ 'newInAppProduct' smart constructor.
+data InAppProduct = InAppProduct
+  { -- | Default language of the localized data, as defined by BCP-47. e.g. \"en-US\".
+    defaultLanguage :: (Core.Maybe Core.Text),
+    -- | Default price. Cannot be zero, as in-app products are never free. Always in the developer\'s Checkout merchant currency.
+    defaultPrice :: (Core.Maybe Price),
+    -- | Grace period of the subscription, specified in ISO 8601 format. Allows developers to give their subscribers a grace period when the payment for the new recurrence period is declined. Acceptable values are P0D (zero days), P3D (three days), P7D (seven days), P14D (14 days), and P30D (30 days).
+    gracePeriod :: (Core.Maybe Core.Text),
+    -- | List of localized title and description data. Map key is the language of the localized data, as defined by BCP-47, e.g. \"en-US\".
+    listings :: (Core.Maybe InAppProduct_Listings),
+    -- | Details about taxes and legal compliance. Only applicable to managed products.
+    managedProductTaxesAndComplianceSettings :: (Core.Maybe ManagedProductTaxAndComplianceSettings),
+    -- | Package name of the parent app.
+    packageName :: (Core.Maybe Core.Text),
+    -- | Prices per buyer region. None of these can be zero, as in-app products are never free. Map key is region code, as defined by ISO 3166-2.
+    prices :: (Core.Maybe InAppProduct_Prices),
+    -- | The type of the product, e.g. a recurring subscription.
+    purchaseType :: (Core.Maybe InAppProduct_PurchaseType),
+    -- | Stock-keeping-unit (SKU) of the product, unique within an app.
+    sku :: (Core.Maybe Core.Text),
+    -- | The status of the product, e.g. whether it\'s active.
+    status :: (Core.Maybe InAppProduct_Status),
+    -- | 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).
+    subscriptionPeriod :: (Core.Maybe Core.Text),
+    -- | Details about taxes and legal compliance. Only applicable to subscription products.
+    subscriptionTaxesAndComplianceSettings :: (Core.Maybe SubscriptionTaxAndComplianceSettings),
+    -- | Trial period, specified in ISO 8601 format. Acceptable values are anything between P7D (seven days) and P999D (999 days).
+    trialPeriod :: (Core.Maybe Core.Text)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'InAppProduct' with the minimum fields required to make a request.
+newInAppProduct ::
+  InAppProduct
+newInAppProduct =
+  InAppProduct
+    { defaultLanguage = Core.Nothing,
+      defaultPrice = Core.Nothing,
+      gracePeriod = Core.Nothing,
+      listings = Core.Nothing,
+      managedProductTaxesAndComplianceSettings = Core.Nothing,
+      packageName = Core.Nothing,
+      prices = Core.Nothing,
+      purchaseType = Core.Nothing,
+      sku = Core.Nothing,
+      status = Core.Nothing,
+      subscriptionPeriod = Core.Nothing,
+      subscriptionTaxesAndComplianceSettings = Core.Nothing,
+      trialPeriod = Core.Nothing
+    }
+
+instance Core.FromJSON InAppProduct where
+  parseJSON =
+    Core.withObject
+      "InAppProduct"
+      ( \o ->
+          InAppProduct
+            Core.<$> (o Core..:? "defaultLanguage")
+            Core.<*> (o Core..:? "defaultPrice")
+            Core.<*> (o Core..:? "gracePeriod")
+            Core.<*> (o Core..:? "listings")
+            Core.<*> (o Core..:? "managedProductTaxesAndComplianceSettings")
+            Core.<*> (o Core..:? "packageName")
+            Core.<*> (o Core..:? "prices")
+            Core.<*> (o Core..:? "purchaseType")
+            Core.<*> (o Core..:? "sku")
+            Core.<*> (o Core..:? "status")
+            Core.<*> (o Core..:? "subscriptionPeriod")
+            Core.<*> (o Core..:? "subscriptionTaxesAndComplianceSettings")
+            Core.<*> (o Core..:? "trialPeriod")
+      )
+
+instance Core.ToJSON InAppProduct where
+  toJSON InAppProduct {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("defaultLanguage" Core..=) Core.<$> defaultLanguage,
+            ("defaultPrice" Core..=) Core.<$> defaultPrice,
+            ("gracePeriod" Core..=) Core.<$> gracePeriod,
+            ("listings" Core..=) Core.<$> listings,
+            ("managedProductTaxesAndComplianceSettings" Core..=)
+              Core.<$> managedProductTaxesAndComplianceSettings,
+            ("packageName" Core..=) Core.<$> packageName,
+            ("prices" Core..=) Core.<$> prices,
+            ("purchaseType" Core..=) Core.<$> purchaseType,
+            ("sku" Core..=) Core.<$> sku,
+            ("status" Core..=) Core.<$> status,
+            ("subscriptionPeriod" Core..=) Core.<$> subscriptionPeriod,
+            ("subscriptionTaxesAndComplianceSettings" Core..=)
+              Core.<$> subscriptionTaxesAndComplianceSettings,
+            ("trialPeriod" Core..=) Core.<$> trialPeriod
+          ]
+      )
+
+-- | List of localized title and description data. Map key is the language of the localized data, as defined by BCP-47, e.g. \"en-US\".
+--
+-- /See:/ 'newInAppProduct_Listings' smart constructor.
+newtype InAppProduct_Listings = InAppProduct_Listings
+  { additional :: (Core.HashMap Core.Text InAppProductListing)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'InAppProduct_Listings' with the minimum fields required to make a request.
+newInAppProduct_Listings ::
+  -- |  See 'additional'.
+  Core.HashMap Core.Text InAppProductListing ->
+  InAppProduct_Listings
+newInAppProduct_Listings additional =
+  InAppProduct_Listings {additional = additional}
+
+instance Core.FromJSON InAppProduct_Listings where
+  parseJSON =
+    Core.withObject
+      "InAppProduct_Listings"
+      (\o -> InAppProduct_Listings Core.<$> (Core.parseJSONObject o))
+
+instance Core.ToJSON InAppProduct_Listings where
+  toJSON InAppProduct_Listings {..} = Core.toJSON additional
+
+-- | Prices per buyer region. None of these can be zero, as in-app products are never free. Map key is region code, as defined by ISO 3166-2.
+--
+-- /See:/ 'newInAppProduct_Prices' smart constructor.
+newtype InAppProduct_Prices = InAppProduct_Prices
+  { additional :: (Core.HashMap Core.Text Price)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'InAppProduct_Prices' with the minimum fields required to make a request.
+newInAppProduct_Prices ::
+  -- |  See 'additional'.
+  Core.HashMap Core.Text Price ->
+  InAppProduct_Prices
+newInAppProduct_Prices additional =
+  InAppProduct_Prices {additional = additional}
+
+instance Core.FromJSON InAppProduct_Prices where
+  parseJSON =
+    Core.withObject
+      "InAppProduct_Prices"
+      (\o -> InAppProduct_Prices Core.<$> (Core.parseJSONObject o))
+
+instance Core.ToJSON InAppProduct_Prices where
+  toJSON InAppProduct_Prices {..} = Core.toJSON additional
+
+-- | Store listing of a single in-app product.
+--
+-- /See:/ 'newInAppProductListing' smart constructor.
+data InAppProductListing = InAppProductListing
+  { -- | Localized entitlement benefits for a subscription.
+    benefits :: (Core.Maybe [Core.Text]),
+    -- | Description for the store listing.
+    description :: (Core.Maybe Core.Text),
+    -- | Title for the store listing.
+    title :: (Core.Maybe Core.Text)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'InAppProductListing' with the minimum fields required to make a request.
+newInAppProductListing ::
+  InAppProductListing
+newInAppProductListing =
+  InAppProductListing
+    { benefits = Core.Nothing,
+      description = Core.Nothing,
+      title = Core.Nothing
+    }
+
+instance Core.FromJSON InAppProductListing where
+  parseJSON =
+    Core.withObject
+      "InAppProductListing"
+      ( \o ->
+          InAppProductListing
+            Core.<$> (o Core..:? "benefits")
+            Core.<*> (o Core..:? "description")
+            Core.<*> (o Core..:? "title")
+      )
+
+instance Core.ToJSON InAppProductListing where
+  toJSON InAppProductListing {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("benefits" Core..=) Core.<$> benefits,
+            ("description" Core..=) Core.<$> description,
+            ("title" Core..=) Core.<$> title
+          ]
+      )
+
+-- | Request to delete multiple in-app products.
+--
+-- /See:/ 'newInappproductsBatchDeleteRequest' smart constructor.
+newtype InappproductsBatchDeleteRequest = InappproductsBatchDeleteRequest
+  { -- | Individual delete requests. At least one request is required. Can contain up to 100 requests. All requests must correspond to different in-app products.
+    requests :: (Core.Maybe [InappproductsDeleteRequest])
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'InappproductsBatchDeleteRequest' with the minimum fields required to make a request.
+newInappproductsBatchDeleteRequest ::
+  InappproductsBatchDeleteRequest
+newInappproductsBatchDeleteRequest =
+  InappproductsBatchDeleteRequest {requests = Core.Nothing}
+
+instance Core.FromJSON InappproductsBatchDeleteRequest where
+  parseJSON =
+    Core.withObject
+      "InappproductsBatchDeleteRequest"
+      ( \o ->
+          InappproductsBatchDeleteRequest Core.<$> (o Core..:? "requests")
+      )
+
+instance Core.ToJSON InappproductsBatchDeleteRequest where
+  toJSON InappproductsBatchDeleteRequest {..} =
+    Core.object
+      (Core.catMaybes [("requests" Core..=) Core.<$> requests])
+
+-- | Response message for BatchGetSubscriptions endpoint.
+--
+-- /See:/ 'newInappproductsBatchGetResponse' smart constructor.
+newtype InappproductsBatchGetResponse = InappproductsBatchGetResponse
+  { -- | The list of requested in-app products, in the same order as the request.
+    inappproduct :: (Core.Maybe [InAppProduct])
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'InappproductsBatchGetResponse' with the minimum fields required to make a request.
+newInappproductsBatchGetResponse ::
+  InappproductsBatchGetResponse
+newInappproductsBatchGetResponse =
+  InappproductsBatchGetResponse {inappproduct = Core.Nothing}
+
+instance Core.FromJSON InappproductsBatchGetResponse where
+  parseJSON =
+    Core.withObject
+      "InappproductsBatchGetResponse"
+      ( \o ->
+          InappproductsBatchGetResponse Core.<$> (o Core..:? "inappproduct")
+      )
+
+instance Core.ToJSON InappproductsBatchGetResponse where
+  toJSON InappproductsBatchGetResponse {..} =
+    Core.object
+      (Core.catMaybes [("inappproduct" Core..=) Core.<$> inappproduct])
+
+-- | Request to update or insert one or more in-app products.
+--
+-- /See:/ 'newInappproductsBatchUpdateRequest' smart constructor.
+newtype InappproductsBatchUpdateRequest = InappproductsBatchUpdateRequest
+  { -- | Required. Individual update requests. At least one request is required. Can contain up to 100 requests. All requests must correspond to different in-app products.
+    requests :: (Core.Maybe [InappproductsUpdateRequest])
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'InappproductsBatchUpdateRequest' with the minimum fields required to make a request.
+newInappproductsBatchUpdateRequest ::
+  InappproductsBatchUpdateRequest
+newInappproductsBatchUpdateRequest =
+  InappproductsBatchUpdateRequest {requests = Core.Nothing}
+
+instance Core.FromJSON InappproductsBatchUpdateRequest where
+  parseJSON =
+    Core.withObject
+      "InappproductsBatchUpdateRequest"
+      ( \o ->
+          InappproductsBatchUpdateRequest Core.<$> (o Core..:? "requests")
+      )
+
+instance Core.ToJSON InappproductsBatchUpdateRequest where
+  toJSON InappproductsBatchUpdateRequest {..} =
+    Core.object
+      (Core.catMaybes [("requests" Core..=) Core.<$> requests])
+
+-- | Response for a batch in-app product update.
+--
+-- /See:/ 'newInappproductsBatchUpdateResponse' smart constructor.
+newtype InappproductsBatchUpdateResponse = InappproductsBatchUpdateResponse
+  { -- | The updated or inserted in-app products.
+    inappproducts :: (Core.Maybe [InAppProduct])
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'InappproductsBatchUpdateResponse' with the minimum fields required to make a request.
+newInappproductsBatchUpdateResponse ::
+  InappproductsBatchUpdateResponse
+newInappproductsBatchUpdateResponse =
+  InappproductsBatchUpdateResponse {inappproducts = Core.Nothing}
+
+instance Core.FromJSON InappproductsBatchUpdateResponse where
+  parseJSON =
+    Core.withObject
+      "InappproductsBatchUpdateResponse"
+      ( \o ->
+          InappproductsBatchUpdateResponse
+            Core.<$> (o Core..:? "inappproducts")
+      )
+
+instance Core.ToJSON InappproductsBatchUpdateResponse where
+  toJSON InappproductsBatchUpdateResponse {..} =
+    Core.object
+      (Core.catMaybes [("inappproducts" Core..=) Core.<$> inappproducts])
+
+-- | Request to delete an in-app product.
+--
+-- /See:/ 'newInappproductsDeleteRequest' smart constructor.
+data InappproductsDeleteRequest = InappproductsDeleteRequest
+  { -- | Optional. The latency tolerance for the propagation of this product update. Defaults to latency-sensitive.
+    latencyTolerance :: (Core.Maybe InappproductsDeleteRequest_LatencyTolerance),
+    -- | Package name of the app.
+    packageName :: (Core.Maybe Core.Text),
+    -- | Unique identifier for the in-app product.
+    sku :: (Core.Maybe Core.Text)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'InappproductsDeleteRequest' with the minimum fields required to make a request.
+newInappproductsDeleteRequest ::
+  InappproductsDeleteRequest
+newInappproductsDeleteRequest =
+  InappproductsDeleteRequest
+    { latencyTolerance = Core.Nothing,
+      packageName = Core.Nothing,
+      sku = Core.Nothing
+    }
+
+instance Core.FromJSON InappproductsDeleteRequest where
+  parseJSON =
+    Core.withObject
+      "InappproductsDeleteRequest"
+      ( \o ->
+          InappproductsDeleteRequest
+            Core.<$> (o Core..:? "latencyTolerance")
+            Core.<*> (o Core..:? "packageName")
+            Core.<*> (o Core..:? "sku")
+      )
+
+instance Core.ToJSON InappproductsDeleteRequest where
+  toJSON InappproductsDeleteRequest {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("latencyTolerance" Core..=) Core.<$> latencyTolerance,
+            ("packageName" Core..=) Core.<$> packageName,
+            ("sku" Core..=) Core.<$> sku
+          ]
+      )
+
+-- | Response listing all in-app products.
+--
+-- /See:/ 'newInappproductsListResponse' smart constructor.
+data InappproductsListResponse = InappproductsListResponse
+  { -- | All in-app products.
+    inappproduct :: (Core.Maybe [InAppProduct]),
+    -- | The kind of this response (\"androidpublisher#inappproductsListResponse\").
+    kind :: (Core.Maybe Core.Text),
+    -- | Deprecated and unset.
+    pageInfo :: (Core.Maybe PageInfo),
+    -- | Pagination token, to handle a number of products that is over one page.
+    tokenPagination :: (Core.Maybe TokenPagination)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'InappproductsListResponse' with the minimum fields required to make a request.
+newInappproductsListResponse ::
+  InappproductsListResponse
+newInappproductsListResponse =
+  InappproductsListResponse
+    { inappproduct = Core.Nothing,
+      kind = Core.Nothing,
+      pageInfo = Core.Nothing,
+      tokenPagination = Core.Nothing
+    }
+
+instance Core.FromJSON InappproductsListResponse where
+  parseJSON =
+    Core.withObject
+      "InappproductsListResponse"
+      ( \o ->
+          InappproductsListResponse
+            Core.<$> (o Core..:? "inappproduct")
+            Core.<*> (o Core..:? "kind")
+            Core.<*> (o Core..:? "pageInfo")
+            Core.<*> (o Core..:? "tokenPagination")
+      )
+
+instance Core.ToJSON InappproductsListResponse where
+  toJSON InappproductsListResponse {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("inappproduct" Core..=) Core.<$> inappproduct,
+            ("kind" Core..=) Core.<$> kind,
+            ("pageInfo" Core..=) Core.<$> pageInfo,
+            ("tokenPagination" Core..=) Core.<$> tokenPagination
+          ]
+      )
+
+-- | Request to update an in-app product.
+--
+-- /See:/ 'newInappproductsUpdateRequest' smart constructor.
+data InappproductsUpdateRequest = InappproductsUpdateRequest
+  { -- | If set to true, and the in-app product with the given package_name and sku doesn\'t exist, the in-app product will be created.
+    allowMissing :: (Core.Maybe Core.Bool),
+    -- | If true the prices for all regions targeted by the parent app that don\'t have a price specified for this in-app product will be auto converted to the target currency based on the default price. Defaults to false.
+    autoConvertMissingPrices :: (Core.Maybe Core.Bool),
+    -- | The new in-app product.
+    inappproduct :: (Core.Maybe InAppProduct),
+    -- | Optional. The latency tolerance for the propagation of this product update. Defaults to latency-sensitive.
+    latencyTolerance :: (Core.Maybe InappproductsUpdateRequest_LatencyTolerance),
+    -- | Package name of the app.
+    packageName :: (Core.Maybe Core.Text),
+    -- | Unique identifier for the in-app product.
+    sku :: (Core.Maybe Core.Text)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'InappproductsUpdateRequest' with the minimum fields required to make a request.
+newInappproductsUpdateRequest ::
+  InappproductsUpdateRequest
+newInappproductsUpdateRequest =
+  InappproductsUpdateRequest
+    { allowMissing = Core.Nothing,
+      autoConvertMissingPrices = Core.Nothing,
+      inappproduct = Core.Nothing,
+      latencyTolerance = Core.Nothing,
+      packageName = Core.Nothing,
+      sku = Core.Nothing
+    }
+
+instance Core.FromJSON InappproductsUpdateRequest where
+  parseJSON =
+    Core.withObject
+      "InappproductsUpdateRequest"
+      ( \o ->
+          InappproductsUpdateRequest
+            Core.<$> (o Core..:? "allowMissing")
+            Core.<*> (o Core..:? "autoConvertMissingPrices")
+            Core.<*> (o Core..:? "inappproduct")
+            Core.<*> (o Core..:? "latencyTolerance")
+            Core.<*> (o Core..:? "packageName")
+            Core.<*> (o Core..:? "sku")
+      )
+
+instance Core.ToJSON InappproductsUpdateRequest where
+  toJSON InappproductsUpdateRequest {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("allowMissing" Core..=) Core.<$> allowMissing,
+            ("autoConvertMissingPrices" Core..=)
+              Core.<$> autoConvertMissingPrices,
+            ("inappproduct" Core..=) Core.<$> inappproduct,
+            ("latencyTolerance" Core..=) Core.<$> latencyTolerance,
+            ("packageName" Core..=) Core.<$> packageName,
+            ("sku" Core..=) Core.<$> sku
+          ]
+      )
+
+-- | Information to a installment plan.
+--
+-- /See:/ 'newInstallmentPlan' smart constructor.
+data InstallmentPlan = InstallmentPlan
+  { -- | Total number of payments the user is initially committed for.
+    initialCommittedPaymentsCount :: (Core.Maybe Core.Int32),
+    -- | If present, this installment plan is pending to be canceled. The cancellation will happen only after the user finished all committed payments.
+    pendingCancellation :: (Core.Maybe PendingCancellation),
+    -- | Total number of committed payments remaining to be paid for in this renewal cycle.
+    remainingCommittedPaymentsCount :: (Core.Maybe Core.Int32),
+    -- | Total number of payments the user will be committed for after each commitment period. Empty means the installment plan will fall back to a normal auto-renew subscription after initial commitment.
+    subsequentCommittedPaymentsCount :: (Core.Maybe Core.Int32)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'InstallmentPlan' with the minimum fields required to make a request.
+newInstallmentPlan ::
+  InstallmentPlan
+newInstallmentPlan =
+  InstallmentPlan
+    { initialCommittedPaymentsCount = Core.Nothing,
+      pendingCancellation = Core.Nothing,
+      remainingCommittedPaymentsCount = Core.Nothing,
+      subsequentCommittedPaymentsCount = Core.Nothing
+    }
+
+instance Core.FromJSON InstallmentPlan where
+  parseJSON =
+    Core.withObject
+      "InstallmentPlan"
+      ( \o ->
+          InstallmentPlan
+            Core.<$> (o Core..:? "initialCommittedPaymentsCount")
+            Core.<*> (o Core..:? "pendingCancellation")
+            Core.<*> (o Core..:? "remainingCommittedPaymentsCount")
+            Core.<*> (o Core..:? "subsequentCommittedPaymentsCount")
+      )
+
+instance Core.ToJSON InstallmentPlan where
+  toJSON InstallmentPlan {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("initialCommittedPaymentsCount" Core..=)
+              Core.<$> initialCommittedPaymentsCount,
+            ("pendingCancellation" Core..=) Core.<$> pendingCancellation,
+            ("remainingCommittedPaymentsCount" Core..=)
+              Core.<$> remainingCommittedPaymentsCount,
+            ("subsequentCommittedPaymentsCount" Core..=)
+              Core.<$> subsequentCommittedPaymentsCount
+          ]
+      )
+
+-- | Represents an installments base plan where a user commits to a specified number of payments.
+--
+-- /See:/ 'newInstallmentsBasePlanType' smart constructor.
+data InstallmentsBasePlanType = InstallmentsBasePlanType
+  { -- | Optional. Account hold period of the subscription, specified in ISO 8601 format. Acceptable values must be in days and between P0D and P60D. If not specified, the default value is P30D. The sum of gracePeriodDuration and accountHoldDuration must be between P30D and P60D days, inclusive.
+    accountHoldDuration :: (Core.Maybe Core.Text),
+    -- | Required. Immutable. Subscription period, specified in ISO 8601 format. For a list of acceptable billing periods, refer to the help center. The duration is immutable after the base plan is created.
+    billingPeriodDuration :: (Core.Maybe Core.Text),
+    -- | Required. Immutable. The number of payments the user is committed to. It is immutable after the base plan is created.
+    committedPaymentsCount :: (Core.Maybe Core.Int32),
+    -- | Grace period of the subscription, specified in ISO 8601 format. Acceptable values must be in days and between P0D and the lesser of 30D and base plan billing period. If not specified, a default value will be used based on the billing period. The sum of gracePeriodDuration and accountHoldDuration must be between P30D and P60D days, inclusive.
+    gracePeriodDuration :: (Core.Maybe Core.Text),
+    -- | The proration mode for the base plan determines what happens when a user switches to this plan from another base plan. If unspecified, defaults to CHARGE/ON/NEXT/BILLING/DATE.
+    prorationMode :: (Core.Maybe InstallmentsBasePlanType_ProrationMode),
+    -- | Required. Immutable. Installments base plan renewal type. Determines the behavior at the end of the initial commitment. The renewal type is immutable after the base plan is created.
+    renewalType :: (Core.Maybe InstallmentsBasePlanType_RenewalType),
+    -- | Whether users should be able to resubscribe to this base plan in Google Play surfaces. Defaults to RESUBSCRIBE/STATE/ACTIVE if not specified.
+    resubscribeState :: (Core.Maybe InstallmentsBasePlanType_ResubscribeState)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'InstallmentsBasePlanType' with the minimum fields required to make a request.
+newInstallmentsBasePlanType ::
+  InstallmentsBasePlanType
+newInstallmentsBasePlanType =
+  InstallmentsBasePlanType
+    { accountHoldDuration = Core.Nothing,
+      billingPeriodDuration = Core.Nothing,
+      committedPaymentsCount = Core.Nothing,
+      gracePeriodDuration = Core.Nothing,
+      prorationMode = Core.Nothing,
+      renewalType = Core.Nothing,
+      resubscribeState = Core.Nothing
+    }
+
+instance Core.FromJSON InstallmentsBasePlanType where
+  parseJSON =
+    Core.withObject
+      "InstallmentsBasePlanType"
+      ( \o ->
+          InstallmentsBasePlanType
+            Core.<$> (o Core..:? "accountHoldDuration")
+            Core.<*> (o Core..:? "billingPeriodDuration")
+            Core.<*> (o Core..:? "committedPaymentsCount")
+            Core.<*> (o Core..:? "gracePeriodDuration")
+            Core.<*> (o Core..:? "prorationMode")
+            Core.<*> (o Core..:? "renewalType")
+            Core.<*> (o Core..:? "resubscribeState")
+      )
+
+instance Core.ToJSON InstallmentsBasePlanType where
+  toJSON InstallmentsBasePlanType {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("accountHoldDuration" Core..=) Core.<$> accountHoldDuration,
+            ("billingPeriodDuration" Core..=) Core.<$> billingPeriodDuration,
+            ("committedPaymentsCount" Core..=) Core.<$> committedPaymentsCount,
+            ("gracePeriodDuration" Core..=) Core.<$> gracePeriodDuration,
+            ("prorationMode" Core..=) Core.<$> prorationMode,
+            ("renewalType" Core..=) Core.<$> renewalType,
+            ("resubscribeState" Core..=) Core.<$> resubscribeState
+          ]
+      )
+
+-- | An artifact resource which gets created when uploading an APK or Android App Bundle through internal app sharing.
+--
+-- /See:/ 'newInternalAppSharingArtifact' smart constructor.
+data InternalAppSharingArtifact = InternalAppSharingArtifact
+  { -- | The sha256 fingerprint of the certificate used to sign the generated artifact.
+    certificateFingerprint :: (Core.Maybe Core.Text),
+    -- | The download URL generated for the uploaded artifact. Users that are authorized to download can follow the link to the Play Store app to install it.
+    downloadUrl :: (Core.Maybe Core.Text),
+    -- | The sha256 hash of the artifact represented as a lowercase hexadecimal number, matching the output of the sha256sum command.
+    sha256 :: (Core.Maybe Core.Text)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'InternalAppSharingArtifact' with the minimum fields required to make a request.
+newInternalAppSharingArtifact ::
+  InternalAppSharingArtifact
+newInternalAppSharingArtifact =
+  InternalAppSharingArtifact
+    { certificateFingerprint = Core.Nothing,
+      downloadUrl = Core.Nothing,
+      sha256 = Core.Nothing
+    }
+
+instance Core.FromJSON InternalAppSharingArtifact where
+  parseJSON =
+    Core.withObject
+      "InternalAppSharingArtifact"
+      ( \o ->
+          InternalAppSharingArtifact
+            Core.<$> (o Core..:? "certificateFingerprint")
+            Core.<*> (o Core..:? "downloadUrl")
+            Core.<*> (o Core..:? "sha256")
+      )
+
+instance Core.ToJSON InternalAppSharingArtifact where
+  toJSON InternalAppSharingArtifact {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("certificateFingerprint" Core..=)
+              Core.<$> certificateFingerprint,
+            ("downloadUrl" Core..=) Core.<$> downloadUrl,
+            ("sha256" Core..=) Core.<$> sha256
+          ]
+      )
+
+-- | Contains the introductory price information for a subscription.
+--
+-- /See:/ 'newIntroductoryPriceInfo' smart constructor.
+data IntroductoryPriceInfo = IntroductoryPriceInfo
+  { -- | Introductory price of the subscription, not including tax. The currency is the same as price/currency/code. 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.
+    introductoryPriceAmountMicros :: (Core.Maybe Core.Int64),
+    -- | ISO 4217 currency code for the introductory subscription price. For example, if the price is specified in British pounds sterling, price/currency/code is \"GBP\".
+    introductoryPriceCurrencyCode :: (Core.Maybe Core.Text),
+    -- | The number of billing period to offer introductory pricing.
+    introductoryPriceCycles :: (Core.Maybe Core.Int32),
+    -- | Introductory price period, specified in ISO 8601 format. Common values are (but not limited to) \"P1W\" (one week), \"P1M\" (one month), \"P3M\" (three months), \"P6M\" (six months), and \"P1Y\" (one year).
+    introductoryPricePeriod :: (Core.Maybe Core.Text)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'IntroductoryPriceInfo' with the minimum fields required to make a request.
+newIntroductoryPriceInfo ::
+  IntroductoryPriceInfo
+newIntroductoryPriceInfo =
+  IntroductoryPriceInfo
+    { introductoryPriceAmountMicros =
+        Core.Nothing,
+      introductoryPriceCurrencyCode = Core.Nothing,
+      introductoryPriceCycles = Core.Nothing,
+      introductoryPricePeriod = Core.Nothing
+    }
+
+instance Core.FromJSON IntroductoryPriceInfo where
+  parseJSON =
+    Core.withObject
+      "IntroductoryPriceInfo"
+      ( \o ->
+          IntroductoryPriceInfo
+            Core.<$> ( o
+                         Core..:? "introductoryPriceAmountMicros"
+                         Core.<&> Core.fmap Core.fromAsText
+                     )
+            Core.<*> (o Core..:? "introductoryPriceCurrencyCode")
+            Core.<*> (o Core..:? "introductoryPriceCycles")
+            Core.<*> (o Core..:? "introductoryPricePeriod")
+      )
+
+instance Core.ToJSON IntroductoryPriceInfo where
+  toJSON IntroductoryPriceInfo {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("introductoryPriceAmountMicros" Core..=)
+              Core.. Core.AsText
+              Core.<$> introductoryPriceAmountMicros,
+            ("introductoryPriceCurrencyCode" Core..=)
+              Core.<$> introductoryPriceCurrencyCode,
+            ("introductoryPriceCycles" Core..=)
+              Core.<$> introductoryPriceCycles,
+            ("introductoryPricePeriod" Core..=)
+              Core.<$> introductoryPricePeriod
+          ]
+      )
+
+-- | Targeting based on language.
+--
+-- /See:/ 'newLanguageTargeting' smart constructor.
+data LanguageTargeting = LanguageTargeting
+  { -- | Alternative languages.
+    alternatives :: (Core.Maybe [Core.Text]),
+    -- | ISO-639: 2 or 3 letter language code.
+    value :: (Core.Maybe [Core.Text])
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'LanguageTargeting' with the minimum fields required to make a request.
+newLanguageTargeting ::
+  LanguageTargeting
+newLanguageTargeting =
+  LanguageTargeting
+    { alternatives = Core.Nothing,
+      value = Core.Nothing
+    }
+
+instance Core.FromJSON LanguageTargeting where
+  parseJSON =
+    Core.withObject
+      "LanguageTargeting"
+      ( \o ->
+          LanguageTargeting
+            Core.<$> (o Core..:? "alternatives")
+            Core.<*> (o Core..:? "value")
+      )
+
+instance Core.ToJSON LanguageTargeting where
+  toJSON LanguageTargeting {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("alternatives" Core..=) Core.<$> alternatives,
+            ("value" Core..=) Core.<$> value
+          ]
+      )
+
+-- | Response message for ListAppRecoveries. -- api-linter: core::0158::response-next-page-token-field=disabled
+--
+-- /See:/ 'newListAppRecoveriesResponse' smart constructor.
+newtype ListAppRecoveriesResponse = ListAppRecoveriesResponse
+  { -- | List of recovery actions associated with the requested package name.
+    recoveryActions :: (Core.Maybe [AppRecoveryAction])
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'ListAppRecoveriesResponse' with the minimum fields required to make a request.
+newListAppRecoveriesResponse ::
+  ListAppRecoveriesResponse
+newListAppRecoveriesResponse =
+  ListAppRecoveriesResponse {recoveryActions = Core.Nothing}
+
+instance Core.FromJSON ListAppRecoveriesResponse where
+  parseJSON =
+    Core.withObject
+      "ListAppRecoveriesResponse"
+      ( \o ->
+          ListAppRecoveriesResponse Core.<$> (o Core..:? "recoveryActions")
+      )
+
+instance Core.ToJSON ListAppRecoveriesResponse where
+  toJSON ListAppRecoveriesResponse {..} =
+    Core.object
+      ( Core.catMaybes
+          [("recoveryActions" Core..=) Core.<$> recoveryActions]
+      )
+
+-- | Response listing existing device tier configs.
+--
+-- /See:/ 'newListDeviceTierConfigsResponse' smart constructor.
+data ListDeviceTierConfigsResponse = ListDeviceTierConfigsResponse
+  { -- | Device tier configs created by the developer.
+    deviceTierConfigs :: (Core.Maybe [DeviceTierConfig]),
+    -- | A token, which can be sent as @page_token@ to retrieve the next page. If this field is omitted, there are no subsequent pages.
+    nextPageToken :: (Core.Maybe Core.Text)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'ListDeviceTierConfigsResponse' with the minimum fields required to make a request.
+newListDeviceTierConfigsResponse ::
+  ListDeviceTierConfigsResponse
+newListDeviceTierConfigsResponse =
+  ListDeviceTierConfigsResponse
+    { deviceTierConfigs = Core.Nothing,
+      nextPageToken = Core.Nothing
+    }
+
+instance Core.FromJSON ListDeviceTierConfigsResponse where
+  parseJSON =
+    Core.withObject
+      "ListDeviceTierConfigsResponse"
+      ( \o ->
+          ListDeviceTierConfigsResponse
+            Core.<$> (o Core..:? "deviceTierConfigs")
+            Core.<*> (o Core..:? "nextPageToken")
+      )
+
+instance Core.ToJSON ListDeviceTierConfigsResponse where
+  toJSON ListDeviceTierConfigsResponse {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("deviceTierConfigs" Core..=) Core.<$> deviceTierConfigs,
+            ("nextPageToken" Core..=) Core.<$> nextPageToken
+          ]
+      )
+
+-- | Response message for ListSubscriptionOffers.
+--
+-- /See:/ 'newListSubscriptionOffersResponse' smart constructor.
+data ListSubscriptionOffersResponse = ListSubscriptionOffersResponse
+  { -- | A token, which can be sent as @page_token@ to retrieve the next page. If this field is omitted, there are no subsequent pages.
+    nextPageToken :: (Core.Maybe Core.Text),
+    -- | The subscription offers from the specified subscription.
+    subscriptionOffers :: (Core.Maybe [SubscriptionOffer])
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'ListSubscriptionOffersResponse' with the minimum fields required to make a request.
+newListSubscriptionOffersResponse ::
+  ListSubscriptionOffersResponse
+newListSubscriptionOffersResponse =
+  ListSubscriptionOffersResponse
+    { nextPageToken = Core.Nothing,
+      subscriptionOffers = Core.Nothing
+    }
+
+instance Core.FromJSON ListSubscriptionOffersResponse where
+  parseJSON =
+    Core.withObject
+      "ListSubscriptionOffersResponse"
+      ( \o ->
+          ListSubscriptionOffersResponse
+            Core.<$> (o Core..:? "nextPageToken")
+            Core.<*> (o Core..:? "subscriptionOffers")
+      )
+
+instance Core.ToJSON ListSubscriptionOffersResponse where
+  toJSON ListSubscriptionOffersResponse {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("nextPageToken" Core..=) Core.<$> nextPageToken,
+            ("subscriptionOffers" Core..=) Core.<$> subscriptionOffers
+          ]
+      )
+
+-- | Response message for ListSubscriptions.
+--
+-- /See:/ 'newListSubscriptionsResponse' smart constructor.
+data ListSubscriptionsResponse = ListSubscriptionsResponse
+  { -- | A token, which can be sent as @page_token@ to retrieve the next page. If this field is omitted, there are no subsequent pages.
+    nextPageToken :: (Core.Maybe Core.Text),
+    -- | The subscriptions from the specified app.
+    subscriptions :: (Core.Maybe [Subscription])
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'ListSubscriptionsResponse' with the minimum fields required to make a request.
+newListSubscriptionsResponse ::
+  ListSubscriptionsResponse
+newListSubscriptionsResponse =
+  ListSubscriptionsResponse
+    { nextPageToken = Core.Nothing,
+      subscriptions = Core.Nothing
+    }
+
+instance Core.FromJSON ListSubscriptionsResponse where
+  parseJSON =
+    Core.withObject
+      "ListSubscriptionsResponse"
+      ( \o ->
+          ListSubscriptionsResponse
+            Core.<$> (o Core..:? "nextPageToken")
+            Core.<*> (o Core..:? "subscriptions")
+      )
+
+instance Core.ToJSON ListSubscriptionsResponse where
+  toJSON ListSubscriptionsResponse {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("nextPageToken" Core..=) Core.<$> nextPageToken,
+            ("subscriptions" Core..=) Core.<$> subscriptions
+          ]
+      )
+
+-- | A response containing one or more users with access to an account.
+--
+-- /See:/ 'newListUsersResponse' smart constructor.
+data ListUsersResponse = ListUsersResponse
+  { -- | A token to pass to subsequent calls in order to retrieve subsequent results. This will not be set if there are no more results to return.
+    nextPageToken :: (Core.Maybe Core.Text),
+    -- | The resulting users.
+    users :: (Core.Maybe [User])
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'ListUsersResponse' with the minimum fields required to make a request.
+newListUsersResponse ::
+  ListUsersResponse
+newListUsersResponse =
+  ListUsersResponse
+    { nextPageToken = Core.Nothing,
+      users = Core.Nothing
+    }
+
+instance Core.FromJSON ListUsersResponse where
+  parseJSON =
+    Core.withObject
+      "ListUsersResponse"
+      ( \o ->
+          ListUsersResponse
+            Core.<$> (o Core..:? "nextPageToken")
+            Core.<*> (o Core..:? "users")
+      )
+
+instance Core.ToJSON ListUsersResponse where
+  toJSON ListUsersResponse {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("nextPageToken" Core..=) Core.<$> nextPageToken,
+            ("users" Core..=) Core.<$> users
+          ]
+      )
+
+-- | A localized store listing. The resource for ListingsService.
+--
+-- /See:/ 'newListing' smart constructor.
+data Listing = Listing
+  { -- | Full description of the app.
+    fullDescription :: (Core.Maybe Core.Text),
+    -- | Language localization code (a BCP-47 language tag; for example, \"de-AT\" for Austrian German).
+    language :: (Core.Maybe Core.Text),
+    -- | Short description of the app.
+    shortDescription :: (Core.Maybe Core.Text),
+    -- | Localized title of the app.
+    title :: (Core.Maybe Core.Text),
+    -- | URL of a promotional YouTube video for the app.
+    video :: (Core.Maybe Core.Text)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'Listing' with the minimum fields required to make a request.
+newListing ::
+  Listing
+newListing =
+  Listing
+    { fullDescription = Core.Nothing,
+      language = Core.Nothing,
+      shortDescription = Core.Nothing,
+      title = Core.Nothing,
+      video = Core.Nothing
+    }
+
+instance Core.FromJSON Listing where
+  parseJSON =
+    Core.withObject
+      "Listing"
+      ( \o ->
+          Listing
+            Core.<$> (o Core..:? "fullDescription")
+            Core.<*> (o Core..:? "language")
+            Core.<*> (o Core..:? "shortDescription")
+            Core.<*> (o Core..:? "title")
+            Core.<*> (o Core..:? "video")
+      )
+
+instance Core.ToJSON Listing where
+  toJSON Listing {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("fullDescription" Core..=) Core.<$> fullDescription,
+            ("language" Core..=) Core.<$> language,
+            ("shortDescription" Core..=) Core.<$> shortDescription,
+            ("title" Core..=) Core.<$> title,
+            ("video" Core..=) Core.<$> video
+          ]
+      )
+
+-- | Response listing all localized listings.
+--
+-- /See:/ 'newListingsListResponse' smart constructor.
+data ListingsListResponse = ListingsListResponse
+  { -- | The kind of this response (\"androidpublisher#listingsListResponse\").
+    kind :: (Core.Maybe Core.Text),
+    -- | All localized listings.
+    listings :: (Core.Maybe [Listing])
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'ListingsListResponse' with the minimum fields required to make a request.
+newListingsListResponse ::
+  ListingsListResponse
+newListingsListResponse =
+  ListingsListResponse
+    { kind = Core.Nothing,
+      listings = Core.Nothing
+    }
+
+instance Core.FromJSON ListingsListResponse where
+  parseJSON =
+    Core.withObject
+      "ListingsListResponse"
+      ( \o ->
+          ListingsListResponse
+            Core.<$> (o Core..:? "kind")
+            Core.<*> (o Core..:? "listings")
+      )
+
+instance Core.ToJSON ListingsListResponse where
+  toJSON ListingsListResponse {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("kind" Core..=) Core.<$> kind,
+            ("listings" Core..=) Core.<$> listings
+          ]
+      )
+
+-- | Localized text in given language.
+--
+-- /See:/ 'newLocalizedText' smart constructor.
+data LocalizedText = LocalizedText
+  { -- | Language localization code (a BCP-47 language tag; for example, \"de-AT\" for Austrian German).
+    language :: (Core.Maybe Core.Text),
+    -- | The text in the given language.
+    text :: (Core.Maybe Core.Text)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'LocalizedText' with the minimum fields required to make a request.
+newLocalizedText ::
+  LocalizedText
+newLocalizedText =
+  LocalizedText {language = Core.Nothing, text = Core.Nothing}
+
+instance Core.FromJSON LocalizedText where
+  parseJSON =
+    Core.withObject
+      "LocalizedText"
+      ( \o ->
+          LocalizedText
+            Core.<$> (o Core..:? "language")
+            Core.<*> (o Core..:? "text")
+      )
+
+instance Core.ToJSON LocalizedText where
+  toJSON LocalizedText {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("language" Core..=) Core.<$> language,
+            ("text" Core..=) Core.<$> text
+          ]
+      )
+
+-- | Details about taxation and legal compliance for managed products.
+--
+-- /See:/ 'newManagedProductTaxAndComplianceSettings' smart constructor.
+data ManagedProductTaxAndComplianceSettings = ManagedProductTaxAndComplianceSettings
+  { -- | Digital content or service classification for products distributed to users in the European Economic Area (EEA). The withdrawal regime under EEA consumer laws depends on this classification. Refer to the <https://support.google.com/googleplay/android-developer/answer/10463498 Help Center article> for more information.
+    eeaWithdrawalRightType ::
+      ( Core.Maybe
+          ManagedProductTaxAndComplianceSettings_EeaWithdrawalRightType
+      ),
+    -- | Whether this in-app product is declared as a product representing a tokenized digital asset.
+    isTokenizedDigitalAsset :: (Core.Maybe Core.Bool),
+    -- | A mapping from region code to tax rate details. The keys are region codes as defined by Unicode\'s \"CLDR\".
+    taxRateInfoByRegionCode ::
+      ( Core.Maybe
+          ManagedProductTaxAndComplianceSettings_TaxRateInfoByRegionCode
+      )
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'ManagedProductTaxAndComplianceSettings' with the minimum fields required to make a request.
+newManagedProductTaxAndComplianceSettings ::
+  ManagedProductTaxAndComplianceSettings
+newManagedProductTaxAndComplianceSettings =
+  ManagedProductTaxAndComplianceSettings
+    { eeaWithdrawalRightType =
+        Core.Nothing,
+      isTokenizedDigitalAsset = Core.Nothing,
+      taxRateInfoByRegionCode = Core.Nothing
+    }
+
+instance Core.FromJSON ManagedProductTaxAndComplianceSettings where
+  parseJSON =
+    Core.withObject
+      "ManagedProductTaxAndComplianceSettings"
+      ( \o ->
+          ManagedProductTaxAndComplianceSettings
+            Core.<$> (o Core..:? "eeaWithdrawalRightType")
+            Core.<*> (o Core..:? "isTokenizedDigitalAsset")
+            Core.<*> (o Core..:? "taxRateInfoByRegionCode")
+      )
+
+instance Core.ToJSON ManagedProductTaxAndComplianceSettings where
+  toJSON ManagedProductTaxAndComplianceSettings {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("eeaWithdrawalRightType" Core..=)
+              Core.<$> eeaWithdrawalRightType,
+            ("isTokenizedDigitalAsset" Core..=)
+              Core.<$> isTokenizedDigitalAsset,
+            ("taxRateInfoByRegionCode" Core..=)
+              Core.<$> taxRateInfoByRegionCode
+          ]
+      )
+
+-- | A mapping from region code to tax rate details. The keys are region codes as defined by Unicode\'s \"CLDR\".
+--
+-- /See:/ 'newManagedProductTaxAndComplianceSettings_TaxRateInfoByRegionCode' smart constructor.
+newtype ManagedProductTaxAndComplianceSettings_TaxRateInfoByRegionCode = ManagedProductTaxAndComplianceSettings_TaxRateInfoByRegionCode
+  { additional :: (Core.HashMap Core.Text RegionalTaxRateInfo)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'ManagedProductTaxAndComplianceSettings_TaxRateInfoByRegionCode' with the minimum fields required to make a request.
+newManagedProductTaxAndComplianceSettings_TaxRateInfoByRegionCode ::
+  -- |  See 'additional'.
+  Core.HashMap
+    Core.Text
+    RegionalTaxRateInfo ->
+  ManagedProductTaxAndComplianceSettings_TaxRateInfoByRegionCode
+newManagedProductTaxAndComplianceSettings_TaxRateInfoByRegionCode
+  additional =
+    ManagedProductTaxAndComplianceSettings_TaxRateInfoByRegionCode
+      { additional =
+          additional
+      }
+
+instance
+  Core.FromJSON
+    ManagedProductTaxAndComplianceSettings_TaxRateInfoByRegionCode
+  where
+  parseJSON =
+    Core.withObject
+      "ManagedProductTaxAndComplianceSettings_TaxRateInfoByRegionCode"
+      ( \o ->
+          ManagedProductTaxAndComplianceSettings_TaxRateInfoByRegionCode
+            Core.<$> (Core.parseJSONObject o)
+      )
+
+instance
+  Core.ToJSON
+    ManagedProductTaxAndComplianceSettings_TaxRateInfoByRegionCode
+  where
+  toJSON
+    ManagedProductTaxAndComplianceSettings_TaxRateInfoByRegionCode {..} =
+      Core.toJSON additional
+
+-- | Request message for MigrateBasePlanPrices.
+--
+-- /See:/ 'newMigrateBasePlanPricesRequest' smart constructor.
+data MigrateBasePlanPricesRequest = MigrateBasePlanPricesRequest
+  { -- | Required. The unique base plan ID of the base plan to update prices on.
+    basePlanId :: (Core.Maybe Core.Text),
+    -- | Optional. The latency tolerance for the propagation of this product update. Defaults to latency-sensitive.
+    latencyTolerance :: (Core.Maybe MigrateBasePlanPricesRequest_LatencyTolerance),
+    -- | Required. Package name of the parent app. Must be equal to the package_name field on the Subscription resource.
+    packageName :: (Core.Maybe Core.Text),
+    -- | Required. The ID of the subscription to update. Must be equal to the product_id field on the Subscription resource.
+    productId :: (Core.Maybe Core.Text),
+    -- | Required. The regional prices to update.
+    regionalPriceMigrations :: (Core.Maybe [RegionalPriceMigrationConfig]),
+    -- | Required. The version of the available regions being used for the regional/price/migrations.
+    regionsVersion :: (Core.Maybe RegionsVersion)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'MigrateBasePlanPricesRequest' with the minimum fields required to make a request.
+newMigrateBasePlanPricesRequest ::
+  MigrateBasePlanPricesRequest
+newMigrateBasePlanPricesRequest =
+  MigrateBasePlanPricesRequest
+    { basePlanId = Core.Nothing,
+      latencyTolerance = Core.Nothing,
+      packageName = Core.Nothing,
+      productId = Core.Nothing,
+      regionalPriceMigrations = Core.Nothing,
+      regionsVersion = Core.Nothing
+    }
+
+instance Core.FromJSON MigrateBasePlanPricesRequest where
+  parseJSON =
+    Core.withObject
+      "MigrateBasePlanPricesRequest"
+      ( \o ->
+          MigrateBasePlanPricesRequest
+            Core.<$> (o Core..:? "basePlanId")
+            Core.<*> (o Core..:? "latencyTolerance")
+            Core.<*> (o Core..:? "packageName")
+            Core.<*> (o Core..:? "productId")
+            Core.<*> (o Core..:? "regionalPriceMigrations")
+            Core.<*> (o Core..:? "regionsVersion")
+      )
+
+instance Core.ToJSON MigrateBasePlanPricesRequest where
+  toJSON MigrateBasePlanPricesRequest {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("basePlanId" Core..=) Core.<$> basePlanId,
+            ("latencyTolerance" Core..=) Core.<$> latencyTolerance,
+            ("packageName" Core..=) Core.<$> packageName,
+            ("productId" Core..=) Core.<$> productId,
+            ("regionalPriceMigrations" Core..=)
+              Core.<$> regionalPriceMigrations,
+            ("regionsVersion" Core..=) Core.<$> regionsVersion
+          ]
+      )
+
+-- | Response message for MigrateBasePlanPrices.
+--
+-- /See:/ 'newMigrateBasePlanPricesResponse' smart constructor.
+data MigrateBasePlanPricesResponse = MigrateBasePlanPricesResponse
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'MigrateBasePlanPricesResponse' with the minimum fields required to make a request.
+newMigrateBasePlanPricesResponse ::
+  MigrateBasePlanPricesResponse
+newMigrateBasePlanPricesResponse = MigrateBasePlanPricesResponse
+
+instance Core.FromJSON MigrateBasePlanPricesResponse where
+  parseJSON =
+    Core.withObject
+      "MigrateBasePlanPricesResponse"
+      (\o -> Core.pure MigrateBasePlanPricesResponse)
+
+instance Core.ToJSON MigrateBasePlanPricesResponse where
+  toJSON = Core.const Core.emptyObject
+
+-- | Metadata of a module.
+--
+-- /See:/ 'newModuleMetadata' smart constructor.
+data ModuleMetadata = ModuleMetadata
+  { -- | Indicates the delivery type (e.g. on-demand) of the module.
+    deliveryType :: (Core.Maybe ModuleMetadata_DeliveryType),
+    -- | Names of the modules that this module directly depends on. Each module implicitly depends on the base module.
+    dependencies :: (Core.Maybe [Core.Text]),
+    -- | Indicates the type of this feature module.
+    moduleType :: (Core.Maybe ModuleMetadata_ModuleType),
+    -- | Module name.
+    name :: (Core.Maybe Core.Text),
+    -- | The targeting that makes a conditional module installed. Relevant only for Split APKs.
+    targeting :: (Core.Maybe ModuleTargeting)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'ModuleMetadata' with the minimum fields required to make a request.
+newModuleMetadata ::
+  ModuleMetadata
+newModuleMetadata =
+  ModuleMetadata
+    { deliveryType = Core.Nothing,
+      dependencies = Core.Nothing,
+      moduleType = Core.Nothing,
+      name = Core.Nothing,
+      targeting = Core.Nothing
+    }
+
+instance Core.FromJSON ModuleMetadata where
+  parseJSON =
+    Core.withObject
+      "ModuleMetadata"
+      ( \o ->
+          ModuleMetadata
+            Core.<$> (o Core..:? "deliveryType")
+            Core.<*> (o Core..:? "dependencies")
+            Core.<*> (o Core..:? "moduleType")
+            Core.<*> (o Core..:? "name")
+            Core.<*> (o Core..:? "targeting")
+      )
+
+instance Core.ToJSON ModuleMetadata where
+  toJSON ModuleMetadata {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("deliveryType" Core..=) Core.<$> deliveryType,
+            ("dependencies" Core..=) Core.<$> dependencies,
+            ("moduleType" Core..=) Core.<$> moduleType,
+            ("name" Core..=) Core.<$> name,
+            ("targeting" Core..=) Core.<$> targeting
+          ]
+      )
+
+-- | Targeting on the module level.
+--
+-- /See:/ 'newModuleTargeting' smart constructor.
+data ModuleTargeting = ModuleTargeting
+  { -- | Targeting for device features.
+    deviceFeatureTargeting :: (Core.Maybe [DeviceFeatureTargeting]),
+    -- | The sdk version that the variant targets
+    sdkVersionTargeting :: (Core.Maybe SdkVersionTargeting),
+    -- | Countries-level targeting
+    userCountriesTargeting :: (Core.Maybe UserCountriesTargeting)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'ModuleTargeting' with the minimum fields required to make a request.
+newModuleTargeting ::
+  ModuleTargeting
+newModuleTargeting =
+  ModuleTargeting
+    { deviceFeatureTargeting = Core.Nothing,
+      sdkVersionTargeting = Core.Nothing,
+      userCountriesTargeting = Core.Nothing
+    }
+
+instance Core.FromJSON ModuleTargeting where
+  parseJSON =
+    Core.withObject
+      "ModuleTargeting"
+      ( \o ->
+          ModuleTargeting
+            Core.<$> (o Core..:? "deviceFeatureTargeting")
+            Core.<*> (o Core..:? "sdkVersionTargeting")
+            Core.<*> (o Core..:? "userCountriesTargeting")
+      )
+
+instance Core.ToJSON ModuleTargeting where
+  toJSON ModuleTargeting {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("deviceFeatureTargeting" Core..=)
+              Core.<$> deviceFeatureTargeting,
+            ("sdkVersionTargeting" Core..=) Core.<$> sdkVersionTargeting,
+            ("userCountriesTargeting" Core..=)
+              Core.<$> userCountriesTargeting
+          ]
+      )
+
+-- | Represents an amount of money with its currency type.
+--
+-- /See:/ 'newMoney' smart constructor.
+data Money = Money
+  { -- | The three-letter currency code defined in ISO 4217.
+    currencyCode :: (Core.Maybe Core.Text),
+    -- | Number of nano (10^-9) units of the amount. The value must be between -999,999,999 and +999,999,999 inclusive. If @units@ is positive, @nanos@ must be positive or zero. If @units@ is zero, @nanos@ can be positive, zero, or negative. If @units@ is negative, @nanos@ must be negative or zero. For example $-1.75 is represented as @units@=-1 and @nanos@=-750,000,000.
+    nanos :: (Core.Maybe Core.Int32),
+    -- | The whole units of the amount. For example if @currencyCode@ is @\"USD\"@, then 1 unit is one US dollar.
+    units :: (Core.Maybe Core.Int64)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'Money' with the minimum fields required to make a request.
+newMoney ::
+  Money
+newMoney =
+  Money
+    { currencyCode = Core.Nothing,
+      nanos = Core.Nothing,
+      units = Core.Nothing
+    }
+
+instance Core.FromJSON Money where
+  parseJSON =
+    Core.withObject
+      "Money"
+      ( \o ->
+          Money
+            Core.<$> (o Core..:? "currencyCode")
+            Core.<*> (o Core..:? "nanos")
+            Core.<*> (o Core..:? "units" Core.<&> Core.fmap Core.fromAsText)
+      )
+
+instance Core.ToJSON Money where
+  toJSON Money {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("currencyCode" Core..=) Core.<$> currencyCode,
+            ("nanos" Core..=) Core.<$> nanos,
+            ("units" Core..=) Core.. Core.AsText Core.<$> units
+          ]
+      )
+
+-- | Represents a list of ABIs.
+--
+-- /See:/ 'newMultiAbi' smart constructor.
+newtype MultiAbi = MultiAbi
+  { -- | A list of targeted ABIs, as represented by the Android Platform
+    abi :: (Core.Maybe [Abi])
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'MultiAbi' with the minimum fields required to make a request.
+newMultiAbi ::
+  MultiAbi
+newMultiAbi = MultiAbi {abi = Core.Nothing}
+
+instance Core.FromJSON MultiAbi where
+  parseJSON =
+    Core.withObject
+      "MultiAbi"
+      (\o -> MultiAbi Core.<$> (o Core..:? "abi"))
+
+instance Core.ToJSON MultiAbi where
+  toJSON MultiAbi {..} =
+    Core.object (Core.catMaybes [("abi" Core..=) Core.<$> abi])
+
+-- | Targeting based on multiple abis.
+--
+-- /See:/ 'newMultiAbiTargeting' smart constructor.
+data MultiAbiTargeting = MultiAbiTargeting
+  { -- | Targeting of other sibling directories that were in the Bundle. For main splits this is targeting of other main splits.
+    alternatives :: (Core.Maybe [MultiAbi]),
+    -- | Value of a multi abi.
+    value :: (Core.Maybe [MultiAbi])
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'MultiAbiTargeting' with the minimum fields required to make a request.
+newMultiAbiTargeting ::
+  MultiAbiTargeting
+newMultiAbiTargeting =
+  MultiAbiTargeting
+    { alternatives = Core.Nothing,
+      value = Core.Nothing
+    }
+
+instance Core.FromJSON MultiAbiTargeting where
+  parseJSON =
+    Core.withObject
+      "MultiAbiTargeting"
+      ( \o ->
+          MultiAbiTargeting
+            Core.<$> (o Core..:? "alternatives")
+            Core.<*> (o Core..:? "value")
+      )
+
+instance Core.ToJSON MultiAbiTargeting where
+  toJSON MultiAbiTargeting {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("alternatives" Core..=) Core.<$> alternatives,
+            ("value" Core..=) Core.<$> value
+          ]
+      )
+
+-- | Offer details information related to a purchase line item.
+--
+-- /See:/ 'newOfferDetails' smart constructor.
+data OfferDetails = OfferDetails
+  { -- | The base plan ID. Present for all base plan and offers.
+    basePlanId :: (Core.Maybe Core.Text),
+    -- | The offer ID. Only present for discounted offers.
+    offerId :: (Core.Maybe Core.Text),
+    -- | The latest offer tags associated with the offer. It includes tags inherited from the base plan.
+    offerTags :: (Core.Maybe [Core.Text])
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'OfferDetails' with the minimum fields required to make a request.
+newOfferDetails ::
+  OfferDetails
+newOfferDetails =
+  OfferDetails
+    { basePlanId = Core.Nothing,
+      offerId = Core.Nothing,
+      offerTags = Core.Nothing
+    }
+
+instance Core.FromJSON OfferDetails where
+  parseJSON =
+    Core.withObject
+      "OfferDetails"
+      ( \o ->
+          OfferDetails
+            Core.<$> (o Core..:? "basePlanId")
+            Core.<*> (o Core..:? "offerId")
+            Core.<*> (o Core..:? "offerTags")
+      )
+
+instance Core.ToJSON OfferDetails where
+  toJSON OfferDetails {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("basePlanId" Core..=) Core.<$> basePlanId,
+            ("offerId" Core..=) Core.<$> offerId,
+            ("offerTags" Core..=) Core.<$> offerTags
+          ]
+      )
+
+-- | Represents a custom tag specified for a product offer.
+--
+-- /See:/ 'newOfferTag' smart constructor.
+newtype OfferTag = OfferTag
+  { -- | Must conform with RFC-1034. That is, this string can only contain lower-case letters (a-z), numbers (0-9), and hyphens (-), and be at most 20 characters.
+    tag :: (Core.Maybe Core.Text)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'OfferTag' with the minimum fields required to make a request.
+newOfferTag ::
+  OfferTag
+newOfferTag = OfferTag {tag = Core.Nothing}
+
+instance Core.FromJSON OfferTag where
+  parseJSON =
+    Core.withObject
+      "OfferTag"
+      (\o -> OfferTag Core.<$> (o Core..:? "tag"))
+
+instance Core.ToJSON OfferTag where
+  toJSON OfferTag {..} =
+    Core.object (Core.catMaybes [("tag" Core..=) Core.<$> tag])
+
+-- | A single use promotion code.
+--
+-- /See:/ 'newOneTimeCode' smart constructor.
+data OneTimeCode = OneTimeCode
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'OneTimeCode' with the minimum fields required to make a request.
+newOneTimeCode ::
+  OneTimeCode
+newOneTimeCode = OneTimeCode
+
+instance Core.FromJSON OneTimeCode where
+  parseJSON =
+    Core.withObject "OneTimeCode" (\o -> Core.pure OneTimeCode)
+
+instance Core.ToJSON OneTimeCode where
+  toJSON = Core.const Core.emptyObject
+
+-- | Represents a one-time transaction.
+--
+-- /See:/ 'newOneTimeExternalTransaction' smart constructor.
+newtype OneTimeExternalTransaction = OneTimeExternalTransaction
+  { -- | Input only. Provided during the call to Create. Retrieved from the client when the alternative billing flow is launched.
+    externalTransactionToken :: (Core.Maybe Core.Text)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'OneTimeExternalTransaction' with the minimum fields required to make a request.
+newOneTimeExternalTransaction ::
+  OneTimeExternalTransaction
+newOneTimeExternalTransaction =
+  OneTimeExternalTransaction
+    { externalTransactionToken =
+        Core.Nothing
+    }
+
+instance Core.FromJSON OneTimeExternalTransaction where
+  parseJSON =
+    Core.withObject
+      "OneTimeExternalTransaction"
+      ( \o ->
+          OneTimeExternalTransaction
+            Core.<$> (o Core..:? "externalTransactionToken")
+      )
+
+instance Core.ToJSON OneTimeExternalTransaction where
+  toJSON OneTimeExternalTransaction {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("externalTransactionToken" Core..=)
+              Core.<$> externalTransactionToken
+          ]
+      )
+
+-- | Details of a recurring external transaction product which doesn\'t belong to any other more specific category.
+--
+-- /See:/ 'newOtherRecurringProduct' smart constructor.
+data OtherRecurringProduct = OtherRecurringProduct
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'OtherRecurringProduct' with the minimum fields required to make a request.
+newOtherRecurringProduct ::
+  OtherRecurringProduct
+newOtherRecurringProduct = OtherRecurringProduct
+
+instance Core.FromJSON OtherRecurringProduct where
+  parseJSON =
+    Core.withObject
+      "OtherRecurringProduct"
+      (\o -> Core.pure OtherRecurringProduct)
+
+instance Core.ToJSON OtherRecurringProduct where
+  toJSON = Core.const Core.emptyObject
+
+-- | Pricing information for any new locations Play may launch in.
+--
+-- /See:/ 'newOtherRegionsBasePlanConfig' smart constructor.
+data OtherRegionsBasePlanConfig = OtherRegionsBasePlanConfig
+  { -- | Required. Price in EUR to use for any new locations Play may launch in.
+    eurPrice :: (Core.Maybe Money),
+    -- | Whether the base plan is available for new subscribers in any new locations Play may launch in. If not specified, this will default to false.
+    newSubscriberAvailability' :: (Core.Maybe Core.Bool),
+    -- | Required. Price in USD to use for any new locations Play may launch in.
+    usdPrice :: (Core.Maybe Money)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'OtherRegionsBasePlanConfig' with the minimum fields required to make a request.
+newOtherRegionsBasePlanConfig ::
+  OtherRegionsBasePlanConfig
+newOtherRegionsBasePlanConfig =
+  OtherRegionsBasePlanConfig
+    { eurPrice = Core.Nothing,
+      newSubscriberAvailability' = Core.Nothing,
+      usdPrice = Core.Nothing
+    }
+
+instance Core.FromJSON OtherRegionsBasePlanConfig where
+  parseJSON =
+    Core.withObject
+      "OtherRegionsBasePlanConfig"
+      ( \o ->
+          OtherRegionsBasePlanConfig
+            Core.<$> (o Core..:? "eurPrice")
+            Core.<*> (o Core..:? "newSubscriberAvailability")
+            Core.<*> (o Core..:? "usdPrice")
+      )
+
+instance Core.ToJSON OtherRegionsBasePlanConfig where
+  toJSON OtherRegionsBasePlanConfig {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("eurPrice" Core..=) Core.<$> eurPrice,
+            ("newSubscriberAvailability" Core..=)
+              Core.<$> newSubscriberAvailability',
+            ("usdPrice" Core..=) Core.<$> usdPrice
+          ]
+      )
+
+-- | Configuration for any new locations Play may launch in specified on a subscription offer.
+--
+-- /See:/ 'newOtherRegionsSubscriptionOfferConfig' smart constructor.
+newtype OtherRegionsSubscriptionOfferConfig = OtherRegionsSubscriptionOfferConfig
+  { -- | Whether the subscription offer in any new locations Play may launch in the future. If not specified, this will default to false.
+    otherRegionsNewSubscriberAvailability :: (Core.Maybe Core.Bool)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'OtherRegionsSubscriptionOfferConfig' with the minimum fields required to make a request.
+newOtherRegionsSubscriptionOfferConfig ::
+  OtherRegionsSubscriptionOfferConfig
+newOtherRegionsSubscriptionOfferConfig =
+  OtherRegionsSubscriptionOfferConfig
+    { otherRegionsNewSubscriberAvailability =
+        Core.Nothing
+    }
+
+instance Core.FromJSON OtherRegionsSubscriptionOfferConfig where
+  parseJSON =
+    Core.withObject
+      "OtherRegionsSubscriptionOfferConfig"
+      ( \o ->
+          OtherRegionsSubscriptionOfferConfig
+            Core.<$> (o Core..:? "otherRegionsNewSubscriberAvailability")
+      )
+
+instance Core.ToJSON OtherRegionsSubscriptionOfferConfig where
+  toJSON OtherRegionsSubscriptionOfferConfig {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("otherRegionsNewSubscriberAvailability" Core..=)
+              Core.<$> otherRegionsNewSubscriberAvailability
+          ]
+      )
+
+-- | Configuration for any new locations Play may launch in for a single offer phase.
+--
+-- /See:/ 'newOtherRegionsSubscriptionOfferPhaseConfig' smart constructor.
+data OtherRegionsSubscriptionOfferPhaseConfig = OtherRegionsSubscriptionOfferPhaseConfig
+  { -- | The absolute amount of money subtracted from the base plan price prorated over the phase duration that the user pays for this offer phase. For example, if the base plan price for this region is $12 for a period of 1 year, then a $1 absolute discount for a phase of a duration of 3 months would correspond to a price of $2. The resulting price may not be smaller than the minimum price allowed for any new locations Play may launch in.
+    absoluteDiscounts :: (Core.Maybe OtherRegionsSubscriptionOfferPhasePrices),
+    -- | Set to specify this offer is free to obtain.
+    free :: (Core.Maybe OtherRegionsSubscriptionOfferPhaseFreePriceOverride),
+    -- | The absolute price the user pays for this offer phase. The price must not be smaller than the minimum price allowed for any new locations Play may launch in.
+    otherRegionsPrices :: (Core.Maybe OtherRegionsSubscriptionOfferPhasePrices),
+    -- | The fraction of the base plan price prorated over the phase duration that the user pays for this offer phase. For example, if the base plan price for this region is $12 for a period of 1 year, then a 50% discount for a phase of a duration of 3 months would correspond to a price of $1.50. The discount must be specified as a fraction strictly larger than 0 and strictly smaller than 1. The resulting price will be rounded to the nearest billable unit (e.g. cents for USD). The relative discount is considered invalid if the discounted price ends up being smaller than the minimum price allowed in any new locations Play may launch in.
+    relativeDiscount :: (Core.Maybe Core.Double)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'OtherRegionsSubscriptionOfferPhaseConfig' with the minimum fields required to make a request.
+newOtherRegionsSubscriptionOfferPhaseConfig ::
+  OtherRegionsSubscriptionOfferPhaseConfig
+newOtherRegionsSubscriptionOfferPhaseConfig =
+  OtherRegionsSubscriptionOfferPhaseConfig
+    { absoluteDiscounts =
+        Core.Nothing,
+      free = Core.Nothing,
+      otherRegionsPrices = Core.Nothing,
+      relativeDiscount = Core.Nothing
+    }
+
+instance Core.FromJSON OtherRegionsSubscriptionOfferPhaseConfig where
+  parseJSON =
+    Core.withObject
+      "OtherRegionsSubscriptionOfferPhaseConfig"
+      ( \o ->
+          OtherRegionsSubscriptionOfferPhaseConfig
+            Core.<$> (o Core..:? "absoluteDiscounts")
+            Core.<*> (o Core..:? "free")
+            Core.<*> (o Core..:? "otherRegionsPrices")
+            Core.<*> (o Core..:? "relativeDiscount")
+      )
+
+instance Core.ToJSON OtherRegionsSubscriptionOfferPhaseConfig where
+  toJSON OtherRegionsSubscriptionOfferPhaseConfig {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("absoluteDiscounts" Core..=) Core.<$> absoluteDiscounts,
+            ("free" Core..=) Core.<$> free,
+            ("otherRegionsPrices" Core..=) Core.<$> otherRegionsPrices,
+            ("relativeDiscount" Core..=) Core.<$> relativeDiscount
+          ]
+      )
+
+-- | Represents the free price override configuration for any new locations Play may launch for a single offer phase.
+--
+-- /See:/ 'newOtherRegionsSubscriptionOfferPhaseFreePriceOverride' smart constructor.
+data OtherRegionsSubscriptionOfferPhaseFreePriceOverride = OtherRegionsSubscriptionOfferPhaseFreePriceOverride
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'OtherRegionsSubscriptionOfferPhaseFreePriceOverride' with the minimum fields required to make a request.
+newOtherRegionsSubscriptionOfferPhaseFreePriceOverride ::
+  OtherRegionsSubscriptionOfferPhaseFreePriceOverride
+newOtherRegionsSubscriptionOfferPhaseFreePriceOverride =
+  OtherRegionsSubscriptionOfferPhaseFreePriceOverride
+
+instance
+  Core.FromJSON
+    OtherRegionsSubscriptionOfferPhaseFreePriceOverride
+  where
+  parseJSON =
+    Core.withObject
+      "OtherRegionsSubscriptionOfferPhaseFreePriceOverride"
+      ( \o ->
+          Core.pure OtherRegionsSubscriptionOfferPhaseFreePriceOverride
+      )
+
+instance
+  Core.ToJSON
+    OtherRegionsSubscriptionOfferPhaseFreePriceOverride
+  where
+  toJSON = Core.const Core.emptyObject
+
+-- | Pricing information for any new locations Play may launch in.
+--
+-- /See:/ 'newOtherRegionsSubscriptionOfferPhasePrices' smart constructor.
+data OtherRegionsSubscriptionOfferPhasePrices = OtherRegionsSubscriptionOfferPhasePrices
+  { -- | Required. Price in EUR to use for any new locations Play may launch in.
+    eurPrice :: (Core.Maybe Money),
+    -- | Required. Price in USD to use for any new locations Play may launch in.
+    usdPrice :: (Core.Maybe Money)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'OtherRegionsSubscriptionOfferPhasePrices' with the minimum fields required to make a request.
+newOtherRegionsSubscriptionOfferPhasePrices ::
+  OtherRegionsSubscriptionOfferPhasePrices
+newOtherRegionsSubscriptionOfferPhasePrices =
+  OtherRegionsSubscriptionOfferPhasePrices
+    { eurPrice = Core.Nothing,
+      usdPrice = Core.Nothing
+    }
+
+instance Core.FromJSON OtherRegionsSubscriptionOfferPhasePrices where
+  parseJSON =
+    Core.withObject
+      "OtherRegionsSubscriptionOfferPhasePrices"
+      ( \o ->
+          OtherRegionsSubscriptionOfferPhasePrices
+            Core.<$> (o Core..:? "eurPrice")
+            Core.<*> (o Core..:? "usdPrice")
+      )
+
+instance Core.ToJSON OtherRegionsSubscriptionOfferPhasePrices where
+  toJSON OtherRegionsSubscriptionOfferPhasePrices {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("eurPrice" Core..=) Core.<$> eurPrice,
+            ("usdPrice" Core..=) Core.<$> usdPrice
+          ]
+      )
+
+-- | Information about the current page. List operations that supports paging return only one \"page\" of results. This protocol buffer message describes the page that has been returned.
+--
+-- /See:/ 'newPageInfo' smart constructor.
+data PageInfo = PageInfo
+  { -- | Maximum number of results returned in one page. ! The number of results included in the API response.
+    resultPerPage :: (Core.Maybe Core.Int32),
+    -- | Index of the first result returned in the current page.
+    startIndex :: (Core.Maybe Core.Int32),
+    -- | Total number of results available on the backend ! The total number of results in the result set.
+    totalResults :: (Core.Maybe Core.Int32)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'PageInfo' with the minimum fields required to make a request.
+newPageInfo ::
+  PageInfo
+newPageInfo =
+  PageInfo
+    { resultPerPage = Core.Nothing,
+      startIndex = Core.Nothing,
+      totalResults = Core.Nothing
+    }
+
+instance Core.FromJSON PageInfo where
+  parseJSON =
+    Core.withObject
+      "PageInfo"
+      ( \o ->
+          PageInfo
+            Core.<$> (o Core..:? "resultPerPage")
+            Core.<*> (o Core..:? "startIndex")
+            Core.<*> (o Core..:? "totalResults")
+      )
+
+instance Core.ToJSON PageInfo where
+  toJSON PageInfo {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("resultPerPage" Core..=) Core.<$> resultPerPage,
+            ("startIndex" Core..=) Core.<$> startIndex,
+            ("totalResults" Core..=) Core.<$> totalResults
+          ]
+      )
+
+-- | A partial refund of a transaction.
+--
+-- /See:/ 'newPartialRefund' smart constructor.
+data PartialRefund = PartialRefund
+  { -- | Required. A unique id distinguishing this partial refund. If the refund is successful, subsequent refunds with the same id will fail. Must be unique across refunds for one individual transaction.
+    refundId :: (Core.Maybe Core.Text),
+    -- | Required. The pre-tax amount of the partial refund. Should be less than the remaining pre-tax amount of the transaction.
+    refundPreTaxAmount :: (Core.Maybe Price)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'PartialRefund' with the minimum fields required to make a request.
+newPartialRefund ::
+  PartialRefund
+newPartialRefund =
+  PartialRefund
+    { refundId = Core.Nothing,
+      refundPreTaxAmount = Core.Nothing
+    }
+
+instance Core.FromJSON PartialRefund where
+  parseJSON =
+    Core.withObject
+      "PartialRefund"
+      ( \o ->
+          PartialRefund
+            Core.<$> (o Core..:? "refundId")
+            Core.<*> (o Core..:? "refundPreTaxAmount")
+      )
+
+instance Core.ToJSON PartialRefund where
+  toJSON PartialRefund {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("refundId" Core..=) Core.<$> refundId,
+            ("refundPreTaxAmount" Core..=) Core.<$> refundPreTaxAmount
+          ]
+      )
+
+-- | Information specific to a subscription in paused state.
+--
+-- /See:/ 'newPausedStateContext' smart constructor.
+newtype PausedStateContext = PausedStateContext
+  { -- | Time at which the subscription will be automatically resumed.
+    autoResumeTime :: (Core.Maybe Core.DateTime)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'PausedStateContext' with the minimum fields required to make a request.
+newPausedStateContext ::
+  PausedStateContext
+newPausedStateContext =
+  PausedStateContext {autoResumeTime = Core.Nothing}
+
+instance Core.FromJSON PausedStateContext where
+  parseJSON =
+    Core.withObject
+      "PausedStateContext"
+      (\o -> PausedStateContext Core.<$> (o Core..:? "autoResumeTime"))
+
+instance Core.ToJSON PausedStateContext where
+  toJSON PausedStateContext {..} =
+    Core.object
+      ( Core.catMaybes
+          [("autoResumeTime" Core..=) Core.<$> autoResumeTime]
+      )
+
+-- | This is an indicator of whether there is a pending cancellation on the virtual installment plan. The cancellation will happen only after the user finished all committed payments.
+--
+-- /See:/ 'newPendingCancellation' smart constructor.
+data PendingCancellation = PendingCancellation
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'PendingCancellation' with the minimum fields required to make a request.
+newPendingCancellation ::
+  PendingCancellation
+newPendingCancellation = PendingCancellation
+
+instance Core.FromJSON PendingCancellation where
+  parseJSON =
+    Core.withObject
+      "PendingCancellation"
+      (\o -> Core.pure PendingCancellation)
+
+instance Core.ToJSON PendingCancellation where
+  toJSON = Core.const Core.emptyObject
+
+-- | Represents a base plan that does not automatically renew at the end of the base plan, and must be manually renewed by the user.
+--
+-- /See:/ 'newPrepaidBasePlanType' smart constructor.
+data PrepaidBasePlanType = PrepaidBasePlanType
+  { -- | Required. Immutable. Subscription period, specified in ISO 8601 format. For a list of acceptable billing periods, refer to the help center. The duration is immutable after the base plan is created.
+    billingPeriodDuration :: (Core.Maybe Core.Text),
+    -- | Whether users should be able to extend this prepaid base plan in Google Play surfaces. Defaults to TIME/EXTENSION/ACTIVE if not specified.
+    timeExtension :: (Core.Maybe PrepaidBasePlanType_TimeExtension)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'PrepaidBasePlanType' with the minimum fields required to make a request.
+newPrepaidBasePlanType ::
+  PrepaidBasePlanType
+newPrepaidBasePlanType =
+  PrepaidBasePlanType
+    { billingPeriodDuration = Core.Nothing,
+      timeExtension = Core.Nothing
+    }
+
+instance Core.FromJSON PrepaidBasePlanType where
+  parseJSON =
+    Core.withObject
+      "PrepaidBasePlanType"
+      ( \o ->
+          PrepaidBasePlanType
+            Core.<$> (o Core..:? "billingPeriodDuration")
+            Core.<*> (o Core..:? "timeExtension")
+      )
+
+instance Core.ToJSON PrepaidBasePlanType where
+  toJSON PrepaidBasePlanType {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("billingPeriodDuration" Core..=) Core.<$> billingPeriodDuration,
+            ("timeExtension" Core..=) Core.<$> timeExtension
+          ]
+      )
+
+-- | Information related to a prepaid plan.
+--
+-- /See:/ 'newPrepaidPlan' smart constructor.
+newtype PrepaidPlan = PrepaidPlan
+  { -- | If present, this is the time after which top up purchases are allowed for the prepaid plan. Will not be present for expired prepaid plans.
+    allowExtendAfterTime :: (Core.Maybe Core.DateTime)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'PrepaidPlan' with the minimum fields required to make a request.
+newPrepaidPlan ::
+  PrepaidPlan
+newPrepaidPlan = PrepaidPlan {allowExtendAfterTime = Core.Nothing}
+
+instance Core.FromJSON PrepaidPlan where
+  parseJSON =
+    Core.withObject
+      "PrepaidPlan"
+      (\o -> PrepaidPlan Core.<$> (o Core..:? "allowExtendAfterTime"))
+
+instance Core.ToJSON PrepaidPlan where
+  toJSON PrepaidPlan {..} =
+    Core.object
+      ( Core.catMaybes
+          [("allowExtendAfterTime" Core..=) Core.<$> allowExtendAfterTime]
+      )
+
+-- | Definition of a price, i.e. currency and units.
+--
+-- /See:/ 'newPrice' smart constructor.
+data Price = Price
+  { -- | 3 letter Currency code, as defined by ISO 4217. See java\/com\/google\/common\/money\/CurrencyCode.java
+    currency :: (Core.Maybe Core.Text),
+    -- | Price in 1\/million of the currency base unit, represented as a string.
+    priceMicros :: (Core.Maybe Core.Text)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'Price' with the minimum fields required to make a request.
+newPrice ::
+  Price
+newPrice =
+  Price {currency = Core.Nothing, priceMicros = Core.Nothing}
+
+instance Core.FromJSON Price where
+  parseJSON =
+    Core.withObject
+      "Price"
+      ( \o ->
+          Price
+            Core.<$> (o Core..:? "currency")
+            Core.<*> (o Core..:? "priceMicros")
+      )
+
+instance Core.ToJSON Price where
+  toJSON Price {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("currency" Core..=) Core.<$> currency,
+            ("priceMicros" Core..=) Core.<$> priceMicros
+          ]
+      )
+
+-- | A ProductPurchase resource indicates the status of a user\'s inapp product purchase.
+--
+-- /See:/ 'newProductPurchase' smart constructor.
+data ProductPurchase = ProductPurchase
+  { -- | The acknowledgement state of the inapp product. Possible values are: 0. Yet to be acknowledged 1. Acknowledged
+    acknowledgementState :: (Core.Maybe Core.Int32),
+    -- | The consumption state of the inapp product. Possible values are: 0. Yet to be consumed 1. Consumed
+    consumptionState :: (Core.Maybe Core.Int32),
+    -- | A developer-specified string that contains supplemental information about an order.
+    developerPayload :: (Core.Maybe Core.Text),
+    -- | This kind represents an inappPurchase object in the androidpublisher service.
+    kind :: (Core.Maybe Core.Text),
+    -- | An obfuscated version of the id that is uniquely associated with the user\'s account in your app. Only present if specified using https:\/\/developer.android.com\/reference\/com\/android\/billingclient\/api\/BillingFlowParams.Builder#setobfuscatedaccountid when the purchase was made.
+    obfuscatedExternalAccountId :: (Core.Maybe Core.Text),
+    -- | An obfuscated version of the id that is uniquely associated with the user\'s profile in your app. Only present if specified using https:\/\/developer.android.com\/reference\/com\/android\/billingclient\/api\/BillingFlowParams.Builder#setobfuscatedprofileid when the purchase was made.
+    obfuscatedExternalProfileId :: (Core.Maybe Core.Text),
+    -- | The order id associated with the purchase of the inapp product.
+    orderId :: (Core.Maybe Core.Text),
+    -- | The inapp product SKU. May not be present.
+    productId :: (Core.Maybe Core.Text),
+    -- | The purchase state of the order. Possible values are: 0. Purchased 1. Canceled 2. Pending
+    purchaseState :: (Core.Maybe Core.Int32),
+    -- | The time the product was purchased, in milliseconds since the epoch (Jan 1, 1970).
+    purchaseTimeMillis :: (Core.Maybe Core.Int64),
+    -- | The purchase token generated to identify this purchase. May not be present.
+    purchaseToken :: (Core.Maybe Core.Text),
+    -- | 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: 0. Test (i.e. purchased from a license testing account) 1. Promo (i.e. purchased using a promo code). Does not include Play Points purchases. 2. Rewarded (i.e. from watching a video ad instead of paying)
+    purchaseType :: (Core.Maybe Core.Int32),
+    -- | The quantity associated with the purchase of the inapp product. If not present, the quantity is 1.
+    quantity :: (Core.Maybe Core.Int32),
+    -- | The quantity eligible for refund, i.e. quantity that hasn\'t been refunded. The value reflects quantity-based partial refunds and full refunds.
+    refundableQuantity :: (Core.Maybe Core.Int32),
+    -- | ISO 3166-1 alpha-2 billing region code of the user at the time the product was granted.
+    regionCode :: (Core.Maybe Core.Text)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'ProductPurchase' with the minimum fields required to make a request.
+newProductPurchase ::
+  ProductPurchase
+newProductPurchase =
+  ProductPurchase
+    { acknowledgementState = Core.Nothing,
+      consumptionState = Core.Nothing,
+      developerPayload = Core.Nothing,
+      kind = Core.Nothing,
+      obfuscatedExternalAccountId = Core.Nothing,
+      obfuscatedExternalProfileId = Core.Nothing,
+      orderId = Core.Nothing,
+      productId = Core.Nothing,
+      purchaseState = Core.Nothing,
+      purchaseTimeMillis = Core.Nothing,
+      purchaseToken = Core.Nothing,
+      purchaseType = Core.Nothing,
+      quantity = Core.Nothing,
+      refundableQuantity = Core.Nothing,
+      regionCode = Core.Nothing
+    }
+
+instance Core.FromJSON ProductPurchase where
+  parseJSON =
+    Core.withObject
+      "ProductPurchase"
+      ( \o ->
+          ProductPurchase
+            Core.<$> (o Core..:? "acknowledgementState")
+            Core.<*> (o Core..:? "consumptionState")
+            Core.<*> (o Core..:? "developerPayload")
+            Core.<*> (o Core..:? "kind")
+            Core.<*> (o Core..:? "obfuscatedExternalAccountId")
+            Core.<*> (o Core..:? "obfuscatedExternalProfileId")
+            Core.<*> (o Core..:? "orderId")
+            Core.<*> (o Core..:? "productId")
+            Core.<*> (o Core..:? "purchaseState")
+            Core.<*> ( o
+                         Core..:? "purchaseTimeMillis"
+                         Core.<&> Core.fmap Core.fromAsText
+                     )
+            Core.<*> (o Core..:? "purchaseToken")
+            Core.<*> (o Core..:? "purchaseType")
+            Core.<*> (o Core..:? "quantity")
+            Core.<*> (o Core..:? "refundableQuantity")
+            Core.<*> (o Core..:? "regionCode")
+      )
+
+instance Core.ToJSON ProductPurchase where
+  toJSON ProductPurchase {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("acknowledgementState" Core..=) Core.<$> acknowledgementState,
+            ("consumptionState" Core..=) Core.<$> consumptionState,
+            ("developerPayload" Core..=) Core.<$> developerPayload,
+            ("kind" Core..=) Core.<$> kind,
+            ("obfuscatedExternalAccountId" Core..=)
+              Core.<$> obfuscatedExternalAccountId,
+            ("obfuscatedExternalProfileId" Core..=)
+              Core.<$> obfuscatedExternalProfileId,
+            ("orderId" Core..=) Core.<$> orderId,
+            ("productId" Core..=) Core.<$> productId,
+            ("purchaseState" Core..=) Core.<$> purchaseState,
+            ("purchaseTimeMillis" Core..=)
+              Core.. Core.AsText
+              Core.<$> purchaseTimeMillis,
+            ("purchaseToken" Core..=) Core.<$> purchaseToken,
+            ("purchaseType" Core..=) Core.<$> purchaseType,
+            ("quantity" Core..=) Core.<$> quantity,
+            ("refundableQuantity" Core..=) Core.<$> refundableQuantity,
+            ("regionCode" Core..=) Core.<$> regionCode
+          ]
+      )
+
+-- | Request for the product.purchases.acknowledge API.
+--
+-- /See:/ 'newProductPurchasesAcknowledgeRequest' smart constructor.
+newtype ProductPurchasesAcknowledgeRequest = ProductPurchasesAcknowledgeRequest
+  { -- | Payload to attach to the purchase.
+    developerPayload :: (Core.Maybe Core.Text)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'ProductPurchasesAcknowledgeRequest' with the minimum fields required to make a request.
+newProductPurchasesAcknowledgeRequest ::
+  ProductPurchasesAcknowledgeRequest
+newProductPurchasesAcknowledgeRequest =
+  ProductPurchasesAcknowledgeRequest
+    { developerPayload =
+        Core.Nothing
+    }
+
+instance Core.FromJSON ProductPurchasesAcknowledgeRequest where
+  parseJSON =
+    Core.withObject
+      "ProductPurchasesAcknowledgeRequest"
+      ( \o ->
+          ProductPurchasesAcknowledgeRequest
+            Core.<$> (o Core..:? "developerPayload")
+      )
+
+instance Core.ToJSON ProductPurchasesAcknowledgeRequest where
+  toJSON ProductPurchasesAcknowledgeRequest {..} =
+    Core.object
+      ( Core.catMaybes
+          [("developerPayload" Core..=) Core.<$> developerPayload]
+      )
+
+-- | Represents a transaction that is part of a recurring series of payments. This can be a subscription or a one-time product with multiple payments (such as preorder).
+--
+-- /See:/ 'newRecurringExternalTransaction' smart constructor.
+data RecurringExternalTransaction = RecurringExternalTransaction
+  { -- | Details of an external subscription.
+    externalSubscription :: (Core.Maybe ExternalSubscription),
+    -- | Input only. Provided during the call to Create. Retrieved from the client when the alternative billing flow is launched. Required only for the initial purchase.
+    externalTransactionToken :: (Core.Maybe Core.Text),
+    -- | The external transaction id of the first transaction of this recurring series of transactions. For example, for a subscription this would be the transaction id of the first payment. Required when creating recurring external transactions.
+    initialExternalTransactionId :: (Core.Maybe Core.Text),
+    -- | Input only. Provided during the call to Create. Must only be used when migrating a subscription from manual monthly reporting to automated reporting.
+    migratedTransactionProgram ::
+      ( Core.Maybe
+          RecurringExternalTransaction_MigratedTransactionProgram
+      ),
+    -- | Details of a recurring external transaction product which doesn\'t belong to any other specific category.
+    otherRecurringProduct :: (Core.Maybe OtherRecurringProduct)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'RecurringExternalTransaction' with the minimum fields required to make a request.
+newRecurringExternalTransaction ::
+  RecurringExternalTransaction
+newRecurringExternalTransaction =
+  RecurringExternalTransaction
+    { externalSubscription = Core.Nothing,
+      externalTransactionToken = Core.Nothing,
+      initialExternalTransactionId = Core.Nothing,
+      migratedTransactionProgram = Core.Nothing,
+      otherRecurringProduct = Core.Nothing
+    }
+
+instance Core.FromJSON RecurringExternalTransaction where
+  parseJSON =
+    Core.withObject
+      "RecurringExternalTransaction"
+      ( \o ->
+          RecurringExternalTransaction
+            Core.<$> (o Core..:? "externalSubscription")
+            Core.<*> (o Core..:? "externalTransactionToken")
+            Core.<*> (o Core..:? "initialExternalTransactionId")
+            Core.<*> (o Core..:? "migratedTransactionProgram")
+            Core.<*> (o Core..:? "otherRecurringProduct")
+      )
+
+instance Core.ToJSON RecurringExternalTransaction where
+  toJSON RecurringExternalTransaction {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("externalSubscription" Core..=) Core.<$> externalSubscription,
+            ("externalTransactionToken" Core..=)
+              Core.<$> externalTransactionToken,
+            ("initialExternalTransactionId" Core..=)
+              Core.<$> initialExternalTransactionId,
+            ("migratedTransactionProgram" Core..=)
+              Core.<$> migratedTransactionProgram,
+            ("otherRecurringProduct" Core..=) Core.<$> otherRecurringProduct
+          ]
+      )
+
+-- | A request to refund an existing external transaction.
+--
+-- /See:/ 'newRefundExternalTransactionRequest' smart constructor.
+data RefundExternalTransactionRequest = RefundExternalTransactionRequest
+  { -- | A full-amount refund.
+    fullRefund :: (Core.Maybe FullRefund),
+    -- | A partial refund.
+    partialRefund :: (Core.Maybe PartialRefund),
+    -- | Required. The time that the transaction was refunded.
+    refundTime :: (Core.Maybe Core.DateTime)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'RefundExternalTransactionRequest' with the minimum fields required to make a request.
+newRefundExternalTransactionRequest ::
+  RefundExternalTransactionRequest
+newRefundExternalTransactionRequest =
+  RefundExternalTransactionRequest
+    { fullRefund = Core.Nothing,
+      partialRefund = Core.Nothing,
+      refundTime = Core.Nothing
+    }
+
+instance Core.FromJSON RefundExternalTransactionRequest where
+  parseJSON =
+    Core.withObject
+      "RefundExternalTransactionRequest"
+      ( \o ->
+          RefundExternalTransactionRequest
+            Core.<$> (o Core..:? "fullRefund")
+            Core.<*> (o Core..:? "partialRefund")
+            Core.<*> (o Core..:? "refundTime")
+      )
+
+instance Core.ToJSON RefundExternalTransactionRequest where
+  toJSON RefundExternalTransactionRequest {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("fullRefund" Core..=) Core.<$> fullRefund,
+            ("partialRefund" Core..=) Core.<$> partialRefund,
+            ("refundTime" Core..=) Core.<$> refundTime
+          ]
+      )
+
+-- | Configuration for a base plan specific to a region.
+--
+-- /See:/ 'newRegionalBasePlanConfig' smart constructor.
+data RegionalBasePlanConfig = RegionalBasePlanConfig
+  { -- | Whether the base plan in the specified region is available for new subscribers. Existing subscribers will not have their subscription canceled if this value is set to false. If not specified, this will default to false.
+    newSubscriberAvailability' :: (Core.Maybe Core.Bool),
+    -- | The price of the base plan in the specified region. Must be set if the base plan is available to new subscribers. Must be set in the currency that is linked to the specified region.
+    price :: (Core.Maybe Money),
+    -- | Required. Region code this configuration applies to, as defined by ISO 3166-2, e.g. \"US\".
+    regionCode :: (Core.Maybe Core.Text)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'RegionalBasePlanConfig' with the minimum fields required to make a request.
+newRegionalBasePlanConfig ::
+  RegionalBasePlanConfig
+newRegionalBasePlanConfig =
+  RegionalBasePlanConfig
+    { newSubscriberAvailability' = Core.Nothing,
+      price = Core.Nothing,
+      regionCode = Core.Nothing
+    }
+
+instance Core.FromJSON RegionalBasePlanConfig where
+  parseJSON =
+    Core.withObject
+      "RegionalBasePlanConfig"
+      ( \o ->
+          RegionalBasePlanConfig
+            Core.<$> (o Core..:? "newSubscriberAvailability")
+            Core.<*> (o Core..:? "price")
+            Core.<*> (o Core..:? "regionCode")
+      )
+
+instance Core.ToJSON RegionalBasePlanConfig where
+  toJSON RegionalBasePlanConfig {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("newSubscriberAvailability" Core..=)
+              Core.<$> newSubscriberAvailability',
+            ("price" Core..=) Core.<$> price,
+            ("regionCode" Core..=) Core.<$> regionCode
+          ]
+      )
+
+-- | Configuration for migration of a legacy price cohort.
+--
+-- /See:/ 'newRegionalPriceMigrationConfig' smart constructor.
+data RegionalPriceMigrationConfig = RegionalPriceMigrationConfig
+  { -- | Required. Subscribers in all legacy price cohorts before this time will be migrated to the current price. Subscribers in any newer price cohorts are unaffected. Affected subscribers will receive one or more notifications from Google Play about the price change. Price decreases occur at the subscriber\'s next billing date. Price increases occur at the subscriber\'s next billing date following a notification period that varies by region and price increase type.
+    oldestAllowedPriceVersionTime :: (Core.Maybe Core.DateTime),
+    -- | Optional. The requested type of price increase
+    priceIncreaseType :: (Core.Maybe RegionalPriceMigrationConfig_PriceIncreaseType),
+    -- | Required. Region code this configuration applies to, as defined by ISO 3166-2, e.g. \"US\".
+    regionCode :: (Core.Maybe Core.Text)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'RegionalPriceMigrationConfig' with the minimum fields required to make a request.
+newRegionalPriceMigrationConfig ::
+  RegionalPriceMigrationConfig
+newRegionalPriceMigrationConfig =
+  RegionalPriceMigrationConfig
+    { oldestAllowedPriceVersionTime =
+        Core.Nothing,
+      priceIncreaseType = Core.Nothing,
+      regionCode = Core.Nothing
+    }
+
+instance Core.FromJSON RegionalPriceMigrationConfig where
+  parseJSON =
+    Core.withObject
+      "RegionalPriceMigrationConfig"
+      ( \o ->
+          RegionalPriceMigrationConfig
+            Core.<$> (o Core..:? "oldestAllowedPriceVersionTime")
+            Core.<*> (o Core..:? "priceIncreaseType")
+            Core.<*> (o Core..:? "regionCode")
+      )
+
+instance Core.ToJSON RegionalPriceMigrationConfig where
+  toJSON RegionalPriceMigrationConfig {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("oldestAllowedPriceVersionTime" Core..=)
+              Core.<$> oldestAllowedPriceVersionTime,
+            ("priceIncreaseType" Core..=) Core.<$> priceIncreaseType,
+            ("regionCode" Core..=) Core.<$> regionCode
+          ]
+      )
+
+-- | Configuration for a subscription offer in a single region.
+--
+-- /See:/ 'newRegionalSubscriptionOfferConfig' smart constructor.
+data RegionalSubscriptionOfferConfig = RegionalSubscriptionOfferConfig
+  { -- | Whether the subscription offer in the specified region is available for new subscribers. Existing subscribers will not have their subscription cancelled if this value is set to false. If not specified, this will default to false.
+    newSubscriberAvailability' :: (Core.Maybe Core.Bool),
+    -- | Required. Immutable. Region code this configuration applies to, as defined by ISO 3166-2, e.g. \"US\".
+    regionCode :: (Core.Maybe Core.Text)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'RegionalSubscriptionOfferConfig' with the minimum fields required to make a request.
+newRegionalSubscriptionOfferConfig ::
+  RegionalSubscriptionOfferConfig
+newRegionalSubscriptionOfferConfig =
+  RegionalSubscriptionOfferConfig
+    { newSubscriberAvailability' =
+        Core.Nothing,
+      regionCode = Core.Nothing
+    }
+
+instance Core.FromJSON RegionalSubscriptionOfferConfig where
+  parseJSON =
+    Core.withObject
+      "RegionalSubscriptionOfferConfig"
+      ( \o ->
+          RegionalSubscriptionOfferConfig
+            Core.<$> (o Core..:? "newSubscriberAvailability")
+            Core.<*> (o Core..:? "regionCode")
+      )
+
+instance Core.ToJSON RegionalSubscriptionOfferConfig where
+  toJSON RegionalSubscriptionOfferConfig {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("newSubscriberAvailability" Core..=)
+              Core.<$> newSubscriberAvailability',
+            ("regionCode" Core..=) Core.<$> regionCode
+          ]
+      )
+
+-- | Configuration for a single phase of a subscription offer in a single region.
+--
+-- /See:/ 'newRegionalSubscriptionOfferPhaseConfig' smart constructor.
+data RegionalSubscriptionOfferPhaseConfig = RegionalSubscriptionOfferPhaseConfig
+  { -- | The absolute amount of money subtracted from the base plan price prorated over the phase duration that the user pays for this offer phase. For example, if the base plan price for this region is $12 for a period of 1 year, then a $1 absolute discount for a phase of a duration of 3 months would correspond to a price of $2. The resulting price may not be smaller than the minimum price allowed for this region.
+    absoluteDiscount :: (Core.Maybe Money),
+    -- | Set to specify this offer is free to obtain.
+    free :: (Core.Maybe RegionalSubscriptionOfferPhaseFreePriceOverride),
+    -- | The absolute price the user pays for this offer phase. The price must not be smaller than the minimum price allowed for this region.
+    price :: (Core.Maybe Money),
+    -- | Required. Immutable. The region to which this config applies.
+    regionCode :: (Core.Maybe Core.Text),
+    -- | The fraction of the base plan price prorated over the phase duration that the user pays for this offer phase. For example, if the base plan price for this region is $12 for a period of 1 year, then a 50% discount for a phase of a duration of 3 months would correspond to a price of $1.50. The discount must be specified as a fraction strictly larger than 0 and strictly smaller than 1. The resulting price will be rounded to the nearest billable unit (e.g. cents for USD). The relative discount is considered invalid if the discounted price ends up being smaller than the minimum price allowed in this region.
+    relativeDiscount :: (Core.Maybe Core.Double)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'RegionalSubscriptionOfferPhaseConfig' with the minimum fields required to make a request.
+newRegionalSubscriptionOfferPhaseConfig ::
+  RegionalSubscriptionOfferPhaseConfig
+newRegionalSubscriptionOfferPhaseConfig =
+  RegionalSubscriptionOfferPhaseConfig
+    { absoluteDiscount =
+        Core.Nothing,
+      free = Core.Nothing,
+      price = Core.Nothing,
+      regionCode = Core.Nothing,
+      relativeDiscount = Core.Nothing
+    }
+
+instance Core.FromJSON RegionalSubscriptionOfferPhaseConfig where
+  parseJSON =
+    Core.withObject
+      "RegionalSubscriptionOfferPhaseConfig"
+      ( \o ->
+          RegionalSubscriptionOfferPhaseConfig
+            Core.<$> (o Core..:? "absoluteDiscount")
+            Core.<*> (o Core..:? "free")
+            Core.<*> (o Core..:? "price")
+            Core.<*> (o Core..:? "regionCode")
+            Core.<*> (o Core..:? "relativeDiscount")
+      )
+
+instance Core.ToJSON RegionalSubscriptionOfferPhaseConfig where
+  toJSON RegionalSubscriptionOfferPhaseConfig {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("absoluteDiscount" Core..=) Core.<$> absoluteDiscount,
+            ("free" Core..=) Core.<$> free,
+            ("price" Core..=) Core.<$> price,
+            ("regionCode" Core..=) Core.<$> regionCode,
+            ("relativeDiscount" Core..=) Core.<$> relativeDiscount
+          ]
+      )
+
+-- | Represents the free price override configuration for a single phase of a subscription offer
+--
+-- /See:/ 'newRegionalSubscriptionOfferPhaseFreePriceOverride' smart constructor.
+data RegionalSubscriptionOfferPhaseFreePriceOverride = RegionalSubscriptionOfferPhaseFreePriceOverride
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'RegionalSubscriptionOfferPhaseFreePriceOverride' with the minimum fields required to make a request.
+newRegionalSubscriptionOfferPhaseFreePriceOverride ::
+  RegionalSubscriptionOfferPhaseFreePriceOverride
+newRegionalSubscriptionOfferPhaseFreePriceOverride =
+  RegionalSubscriptionOfferPhaseFreePriceOverride
+
+instance
+  Core.FromJSON
+    RegionalSubscriptionOfferPhaseFreePriceOverride
+  where
+  parseJSON =
+    Core.withObject
+      "RegionalSubscriptionOfferPhaseFreePriceOverride"
+      (\o -> Core.pure RegionalSubscriptionOfferPhaseFreePriceOverride)
+
+instance
+  Core.ToJSON
+    RegionalSubscriptionOfferPhaseFreePriceOverride
+  where
+  toJSON = Core.const Core.emptyObject
+
+-- | Specified details about taxation in a given geographical region.
+--
+-- /See:/ 'newRegionalTaxRateInfo' smart constructor.
+data RegionalTaxRateInfo = RegionalTaxRateInfo
+  { -- | You must tell us if your app contains streaming products to correctly charge US state and local sales tax. Field only supported in the United States.
+    eligibleForStreamingServiceTaxRate :: (Core.Maybe Core.Bool),
+    -- | To collect communications or amusement taxes in the United States, choose the appropriate tax category. <https://support.google.com/googleplay/android-developer/answer/10463498#streaming_tax Learn more>.
+    streamingTaxType :: (Core.Maybe RegionalTaxRateInfo_StreamingTaxType),
+    -- | Tax tier to specify reduced tax rate. Developers who sell digital news, magazines, newspapers, books, or audiobooks in various regions may be eligible for reduced tax rates. <https://support.google.com/googleplay/android-developer/answer/10463498 Learn more>.
+    taxTier :: (Core.Maybe RegionalTaxRateInfo_TaxTier)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'RegionalTaxRateInfo' with the minimum fields required to make a request.
+newRegionalTaxRateInfo ::
+  RegionalTaxRateInfo
+newRegionalTaxRateInfo =
+  RegionalTaxRateInfo
+    { eligibleForStreamingServiceTaxRate =
+        Core.Nothing,
+      streamingTaxType = Core.Nothing,
+      taxTier = Core.Nothing
+    }
+
+instance Core.FromJSON RegionalTaxRateInfo where
+  parseJSON =
+    Core.withObject
+      "RegionalTaxRateInfo"
+      ( \o ->
+          RegionalTaxRateInfo
+            Core.<$> (o Core..:? "eligibleForStreamingServiceTaxRate")
+            Core.<*> (o Core..:? "streamingTaxType")
+            Core.<*> (o Core..:? "taxTier")
+      )
+
+instance Core.ToJSON RegionalTaxRateInfo where
+  toJSON RegionalTaxRateInfo {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("eligibleForStreamingServiceTaxRate" Core..=)
+              Core.<$> eligibleForStreamingServiceTaxRate,
+            ("streamingTaxType" Core..=) Core.<$> streamingTaxType,
+            ("taxTier" Core..=) Core.<$> taxTier
+          ]
+      )
+
+-- | Region targeting data for app recovery action targeting.
+--
+-- /See:/ 'newRegions' smart constructor.
+newtype Regions = Regions
+  { -- | Regions targeted by the recovery action. Region codes are ISO 3166 Alpha-2 country codes. For example, US stands for United States of America. See https:\/\/www.iso.org\/iso-3166-country-codes.html for the complete list of country codes.
+    regionCode :: (Core.Maybe [Core.Text])
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'Regions' with the minimum fields required to make a request.
+newRegions ::
+  Regions
+newRegions = Regions {regionCode = Core.Nothing}
+
+instance Core.FromJSON Regions where
+  parseJSON =
+    Core.withObject
+      "Regions"
+      (\o -> Regions Core.<$> (o Core..:? "regionCode"))
+
+instance Core.ToJSON Regions where
+  toJSON Regions {..} =
+    Core.object
+      (Core.catMaybes [("regionCode" Core..=) Core.<$> regionCode])
+
+-- | The version of the available regions being used for the specified resource.
+--
+-- /See:/ 'newRegionsVersion' smart constructor.
+newtype RegionsVersion = RegionsVersion
+  { -- | Required. A string representing the version of available regions being used for the specified resource. Regional prices for the resource have to be specified according to the information published in <https://support.google.com/googleplay/android-developer/answer/10532353 this article>. Each time the supported locations substantially change, the version will be incremented. Using this field will ensure that creating and updating the resource with an older region\'s version and set of regional prices and currencies will succeed even though a new version is available. The latest version is 2022\/02.
+    version :: (Core.Maybe Core.Text)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'RegionsVersion' with the minimum fields required to make a request.
+newRegionsVersion ::
+  RegionsVersion
+newRegionsVersion = RegionsVersion {version = Core.Nothing}
+
+instance Core.FromJSON RegionsVersion where
+  parseJSON =
+    Core.withObject
+      "RegionsVersion"
+      (\o -> RegionsVersion Core.<$> (o Core..:? "version"))
+
+instance Core.ToJSON RegionsVersion where
+  toJSON RegionsVersion {..} =
+    Core.object
+      (Core.catMaybes [("version" Core..=) Core.<$> version])
+
+-- | Object representation for Remote in-app update action type.
+--
+-- /See:/ 'newRemoteInAppUpdate' smart constructor.
+newtype RemoteInAppUpdate = RemoteInAppUpdate
+  { -- | Required. Set to true if Remote In-App Update action type is needed.
+    isRemoteInAppUpdateRequested :: (Core.Maybe Core.Bool)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'RemoteInAppUpdate' with the minimum fields required to make a request.
+newRemoteInAppUpdate ::
+  RemoteInAppUpdate
+newRemoteInAppUpdate =
+  RemoteInAppUpdate {isRemoteInAppUpdateRequested = Core.Nothing}
+
+instance Core.FromJSON RemoteInAppUpdate where
+  parseJSON =
+    Core.withObject
+      "RemoteInAppUpdate"
+      ( \o ->
+          RemoteInAppUpdate
+            Core.<$> (o Core..:? "isRemoteInAppUpdateRequested")
+      )
+
+instance Core.ToJSON RemoteInAppUpdate where
+  toJSON RemoteInAppUpdate {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("isRemoteInAppUpdateRequested" Core..=)
+              Core.<$> isRemoteInAppUpdateRequested
+          ]
+      )
+
+-- | Data related to Remote In-App Update action such as recovered user count, affected user count etc.
+--
+-- /See:/ 'newRemoteInAppUpdateData' smart constructor.
+newtype RemoteInAppUpdateData = RemoteInAppUpdateData
+  { -- | Data related to the recovery action at bundle level.
+    remoteAppUpdateDataPerBundle :: (Core.Maybe [RemoteInAppUpdateDataPerBundle])
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'RemoteInAppUpdateData' with the minimum fields required to make a request.
+newRemoteInAppUpdateData ::
+  RemoteInAppUpdateData
+newRemoteInAppUpdateData =
+  RemoteInAppUpdateData
+    { remoteAppUpdateDataPerBundle =
+        Core.Nothing
+    }
+
+instance Core.FromJSON RemoteInAppUpdateData where
+  parseJSON =
+    Core.withObject
+      "RemoteInAppUpdateData"
+      ( \o ->
+          RemoteInAppUpdateData
+            Core.<$> (o Core..:? "remoteAppUpdateDataPerBundle")
+      )
+
+instance Core.ToJSON RemoteInAppUpdateData where
+  toJSON RemoteInAppUpdateData {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("remoteAppUpdateDataPerBundle" Core..=)
+              Core.<$> remoteAppUpdateDataPerBundle
+          ]
+      )
+
+-- | Data related to the recovery action at bundle level.
+--
+-- /See:/ 'newRemoteInAppUpdateDataPerBundle' smart constructor.
+data RemoteInAppUpdateDataPerBundle = RemoteInAppUpdateDataPerBundle
+  { -- | Total number of devices which have been rescued.
+    recoveredDeviceCount :: (Core.Maybe Core.Int64),
+    -- | Total number of devices affected by this recovery action associated with bundle of the app.
+    totalDeviceCount :: (Core.Maybe Core.Int64),
+    -- | Version Code corresponding to the target bundle.
+    versionCode :: (Core.Maybe Core.Int64)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'RemoteInAppUpdateDataPerBundle' with the minimum fields required to make a request.
+newRemoteInAppUpdateDataPerBundle ::
+  RemoteInAppUpdateDataPerBundle
+newRemoteInAppUpdateDataPerBundle =
+  RemoteInAppUpdateDataPerBundle
+    { recoveredDeviceCount =
+        Core.Nothing,
+      totalDeviceCount = Core.Nothing,
+      versionCode = Core.Nothing
+    }
+
+instance Core.FromJSON RemoteInAppUpdateDataPerBundle where
+  parseJSON =
+    Core.withObject
+      "RemoteInAppUpdateDataPerBundle"
+      ( \o ->
+          RemoteInAppUpdateDataPerBundle
+            Core.<$> ( o
+                         Core..:? "recoveredDeviceCount"
+                         Core.<&> Core.fmap Core.fromAsText
+                     )
+            Core.<*> (o Core..:? "totalDeviceCount" Core.<&> Core.fmap Core.fromAsText)
+            Core.<*> (o Core..:? "versionCode" Core.<&> Core.fmap Core.fromAsText)
+      )
+
+instance Core.ToJSON RemoteInAppUpdateDataPerBundle where
+  toJSON RemoteInAppUpdateDataPerBundle {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("recoveredDeviceCount" Core..=)
+              Core.. Core.AsText
+              Core.<$> recoveredDeviceCount,
+            ("totalDeviceCount" Core..=)
+              Core.. Core.AsText
+              Core.<$> totalDeviceCount,
+            ("versionCode" Core..=) Core.. Core.AsText Core.<$> versionCode
+          ]
+      )
+
+-- | Information specific to cancellations caused by subscription replacement.
+--
+-- /See:/ 'newReplacementCancellation' smart constructor.
+data ReplacementCancellation = ReplacementCancellation
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'ReplacementCancellation' with the minimum fields required to make a request.
+newReplacementCancellation ::
+  ReplacementCancellation
+newReplacementCancellation = ReplacementCancellation
+
+instance Core.FromJSON ReplacementCancellation where
+  parseJSON =
+    Core.withObject
+      "ReplacementCancellation"
+      (\o -> Core.pure ReplacementCancellation)
+
+instance Core.ToJSON ReplacementCancellation where
+  toJSON = Core.const Core.emptyObject
+
+-- | Countries where the purchase of this product is restricted to payment methods registered in the same country. If empty, no payment location restrictions are imposed.
+--
+-- /See:/ 'newRestrictedPaymentCountries' smart constructor.
+newtype RestrictedPaymentCountries = RestrictedPaymentCountries
+  { -- | Required. Region codes to impose payment restrictions on, as defined by ISO 3166-2, e.g. \"US\".
+    regionCodes :: (Core.Maybe [Core.Text])
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'RestrictedPaymentCountries' with the minimum fields required to make a request.
+newRestrictedPaymentCountries ::
+  RestrictedPaymentCountries
+newRestrictedPaymentCountries =
+  RestrictedPaymentCountries {regionCodes = Core.Nothing}
+
+instance Core.FromJSON RestrictedPaymentCountries where
+  parseJSON =
+    Core.withObject
+      "RestrictedPaymentCountries"
+      ( \o ->
+          RestrictedPaymentCountries Core.<$> (o Core..:? "regionCodes")
+      )
+
+instance Core.ToJSON RestrictedPaymentCountries where
+  toJSON RestrictedPaymentCountries {..} =
+    Core.object
+      (Core.catMaybes [("regionCodes" Core..=) Core.<$> regionCodes])
+
+-- | An Android app review.
+--
+-- /See:/ 'newReview' smart constructor.
+data Review = Review
+  { -- | The name of the user who wrote the review.
+    authorName :: (Core.Maybe Core.Text),
+    -- | A repeated field containing comments for the review.
+    comments :: (Core.Maybe [Comment]),
+    -- | Unique identifier for this review.
+    reviewId :: (Core.Maybe Core.Text)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'Review' with the minimum fields required to make a request.
+newReview ::
+  Review
+newReview =
+  Review
+    { authorName = Core.Nothing,
+      comments = Core.Nothing,
+      reviewId = Core.Nothing
+    }
+
+instance Core.FromJSON Review where
+  parseJSON =
+    Core.withObject
+      "Review"
+      ( \o ->
+          Review
+            Core.<$> (o Core..:? "authorName")
+            Core.<*> (o Core..:? "comments")
+            Core.<*> (o Core..:? "reviewId")
+      )
+
+instance Core.ToJSON Review where
+  toJSON Review {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("authorName" Core..=) Core.<$> authorName,
+            ("comments" Core..=) Core.<$> comments,
+            ("reviewId" Core..=) Core.<$> reviewId
+          ]
+      )
+
+-- | The result of replying\/updating a reply to review.
+--
+-- /See:/ 'newReviewReplyResult' smart constructor.
+data ReviewReplyResult = ReviewReplyResult
+  { -- | The time at which the reply took effect.
+    lastEdited :: (Core.Maybe Timestamp),
+    -- | The reply text that was applied.
+    replyText :: (Core.Maybe Core.Text)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'ReviewReplyResult' with the minimum fields required to make a request.
+newReviewReplyResult ::
+  ReviewReplyResult
+newReviewReplyResult =
+  ReviewReplyResult
+    { lastEdited = Core.Nothing,
+      replyText = Core.Nothing
+    }
+
+instance Core.FromJSON ReviewReplyResult where
+  parseJSON =
+    Core.withObject
+      "ReviewReplyResult"
+      ( \o ->
+          ReviewReplyResult
+            Core.<$> (o Core..:? "lastEdited")
+            Core.<*> (o Core..:? "replyText")
+      )
+
+instance Core.ToJSON ReviewReplyResult where
+  toJSON ReviewReplyResult {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("lastEdited" Core..=) Core.<$> lastEdited,
+            ("replyText" Core..=) Core.<$> replyText
+          ]
+      )
+
+-- | Response listing reviews.
+--
+-- /See:/ 'newReviewsListResponse' smart constructor.
+data ReviewsListResponse = ReviewsListResponse
+  { -- | Information about the current page.
+    pageInfo :: (Core.Maybe PageInfo),
+    -- | List of reviews.
+    reviews :: (Core.Maybe [Review]),
+    -- | Pagination token, to handle a number of products that is over one page.
+    tokenPagination :: (Core.Maybe TokenPagination)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'ReviewsListResponse' with the minimum fields required to make a request.
+newReviewsListResponse ::
+  ReviewsListResponse
+newReviewsListResponse =
+  ReviewsListResponse
+    { pageInfo = Core.Nothing,
+      reviews = Core.Nothing,
+      tokenPagination = Core.Nothing
+    }
+
+instance Core.FromJSON ReviewsListResponse where
+  parseJSON =
+    Core.withObject
+      "ReviewsListResponse"
+      ( \o ->
+          ReviewsListResponse
+            Core.<$> (o Core..:? "pageInfo")
+            Core.<*> (o Core..:? "reviews")
+            Core.<*> (o Core..:? "tokenPagination")
+      )
+
+instance Core.ToJSON ReviewsListResponse where
+  toJSON ReviewsListResponse {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("pageInfo" Core..=) Core.<$> pageInfo,
+            ("reviews" Core..=) Core.<$> reviews,
+            ("tokenPagination" Core..=) Core.<$> tokenPagination
+          ]
+      )
+
+-- | Request to reply to review or update existing reply.
+--
+-- /See:/ 'newReviewsReplyRequest' smart constructor.
+newtype ReviewsReplyRequest = ReviewsReplyRequest
+  { -- | The text to set as the reply. Replies of more than approximately 350 characters will be rejected. HTML tags will be stripped.
+    replyText :: (Core.Maybe Core.Text)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'ReviewsReplyRequest' with the minimum fields required to make a request.
+newReviewsReplyRequest ::
+  ReviewsReplyRequest
+newReviewsReplyRequest =
+  ReviewsReplyRequest {replyText = Core.Nothing}
+
+instance Core.FromJSON ReviewsReplyRequest where
+  parseJSON =
+    Core.withObject
+      "ReviewsReplyRequest"
+      (\o -> ReviewsReplyRequest Core.<$> (o Core..:? "replyText"))
+
+instance Core.ToJSON ReviewsReplyRequest where
+  toJSON ReviewsReplyRequest {..} =
+    Core.object
+      (Core.catMaybes [("replyText" Core..=) Core.<$> replyText])
+
+-- | Response on status of replying to a review.
+--
+-- /See:/ 'newReviewsReplyResponse' smart constructor.
+newtype ReviewsReplyResponse = ReviewsReplyResponse
+  { -- | The result of replying\/updating a reply to review.
+    result :: (Core.Maybe ReviewReplyResult)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'ReviewsReplyResponse' with the minimum fields required to make a request.
+newReviewsReplyResponse ::
+  ReviewsReplyResponse
+newReviewsReplyResponse =
+  ReviewsReplyResponse {result = Core.Nothing}
+
+instance Core.FromJSON ReviewsReplyResponse where
+  parseJSON =
+    Core.withObject
+      "ReviewsReplyResponse"
+      (\o -> ReviewsReplyResponse Core.<$> (o Core..:? "result"))
+
+instance Core.ToJSON ReviewsReplyResponse where
+  toJSON ReviewsReplyResponse {..} =
+    Core.object (Core.catMaybes [("result" Core..=) Core.<$> result])
+
+-- | Revocation context of the purchases.subscriptionsv2.revoke API.
+--
+-- /See:/ 'newRevocationContext' smart constructor.
+data RevocationContext = RevocationContext
+  { -- | Optional. Used when users should be refunded the full amount of the latest order of the subscription.
+    fullRefund :: (Core.Maybe RevocationContextFullRefund),
+    -- | Optional. Used when users should be refunded a prorated amount they paid for their subscription based on the amount of time remaining in a subscription.
+    proratedRefund :: (Core.Maybe RevocationContextProratedRefund)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'RevocationContext' with the minimum fields required to make a request.
+newRevocationContext ::
+  RevocationContext
+newRevocationContext =
+  RevocationContext
+    { fullRefund = Core.Nothing,
+      proratedRefund = Core.Nothing
+    }
+
+instance Core.FromJSON RevocationContext where
+  parseJSON =
+    Core.withObject
+      "RevocationContext"
+      ( \o ->
+          RevocationContext
+            Core.<$> (o Core..:? "fullRefund")
+            Core.<*> (o Core..:? "proratedRefund")
+      )
+
+instance Core.ToJSON RevocationContext where
+  toJSON RevocationContext {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("fullRefund" Core..=) Core.<$> fullRefund,
+            ("proratedRefund" Core..=) Core.<$> proratedRefund
+          ]
+      )
+
+-- | Used to determine if the refund type in the RevocationContext is a full refund.
+--
+-- /See:/ 'newRevocationContextFullRefund' smart constructor.
+data RevocationContextFullRefund = RevocationContextFullRefund
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'RevocationContextFullRefund' with the minimum fields required to make a request.
+newRevocationContextFullRefund ::
+  RevocationContextFullRefund
+newRevocationContextFullRefund = RevocationContextFullRefund
+
+instance Core.FromJSON RevocationContextFullRefund where
+  parseJSON =
+    Core.withObject
+      "RevocationContextFullRefund"
+      (\o -> Core.pure RevocationContextFullRefund)
+
+instance Core.ToJSON RevocationContextFullRefund where
+  toJSON = Core.const Core.emptyObject
+
+-- | Used to determine if the refund type in the RevocationContext is a prorated refund.
+--
+-- /See:/ 'newRevocationContextProratedRefund' smart constructor.
+data RevocationContextProratedRefund = RevocationContextProratedRefund
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'RevocationContextProratedRefund' with the minimum fields required to make a request.
+newRevocationContextProratedRefund ::
+  RevocationContextProratedRefund
+newRevocationContextProratedRefund =
+  RevocationContextProratedRefund
+
+instance Core.FromJSON RevocationContextProratedRefund where
+  parseJSON =
+    Core.withObject
+      "RevocationContextProratedRefund"
+      (\o -> Core.pure RevocationContextProratedRefund)
+
+instance Core.ToJSON RevocationContextProratedRefund where
+  toJSON = Core.const Core.emptyObject
+
+-- | Request for the purchases.subscriptionsv2.revoke API.
+--
+-- /See:/ 'newRevokeSubscriptionPurchaseRequest' smart constructor.
+newtype RevokeSubscriptionPurchaseRequest = RevokeSubscriptionPurchaseRequest
+  { -- | Required. Additional details around the subscription revocation.
+    revocationContext :: (Core.Maybe RevocationContext)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'RevokeSubscriptionPurchaseRequest' with the minimum fields required to make a request.
+newRevokeSubscriptionPurchaseRequest ::
+  RevokeSubscriptionPurchaseRequest
+newRevokeSubscriptionPurchaseRequest =
+  RevokeSubscriptionPurchaseRequest
+    { revocationContext =
+        Core.Nothing
+    }
+
+instance Core.FromJSON RevokeSubscriptionPurchaseRequest where
+  parseJSON =
+    Core.withObject
+      "RevokeSubscriptionPurchaseRequest"
+      ( \o ->
+          RevokeSubscriptionPurchaseRequest
+            Core.<$> (o Core..:? "revocationContext")
+      )
+
+instance Core.ToJSON RevokeSubscriptionPurchaseRequest where
+  toJSON RevokeSubscriptionPurchaseRequest {..} =
+    Core.object
+      ( Core.catMaybes
+          [("revocationContext" Core..=) Core.<$> revocationContext]
+      )
+
+-- | Response for the purchases.subscriptionsv2.revoke API.
+--
+-- /See:/ 'newRevokeSubscriptionPurchaseResponse' smart constructor.
+data RevokeSubscriptionPurchaseResponse = RevokeSubscriptionPurchaseResponse
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'RevokeSubscriptionPurchaseResponse' with the minimum fields required to make a request.
+newRevokeSubscriptionPurchaseResponse ::
+  RevokeSubscriptionPurchaseResponse
+newRevokeSubscriptionPurchaseResponse =
+  RevokeSubscriptionPurchaseResponse
+
+instance Core.FromJSON RevokeSubscriptionPurchaseResponse where
+  parseJSON =
+    Core.withObject
+      "RevokeSubscriptionPurchaseResponse"
+      (\o -> Core.pure RevokeSubscriptionPurchaseResponse)
+
+instance Core.ToJSON RevokeSubscriptionPurchaseResponse where
+  toJSON = Core.const Core.emptyObject
+
+-- | Request to update Safety Labels of an app.
+--
+-- /See:/ 'newSafetyLabelsUpdateRequest' smart constructor.
+newtype SafetyLabelsUpdateRequest = SafetyLabelsUpdateRequest
+  { -- | Required. Contents of the CSV file containing Data Safety responses. For the format of this file, see the Help Center documentation at https:\/\/support.google.com\/googleplay\/android-developer\/answer\/10787469?#zippy=%2Cunderstand-the-csv-format To download an up to date template, follow the steps at https:\/\/support.google.com\/googleplay\/android-developer\/answer\/10787469?#zippy=%2Cexport-to-a-csv-file
+    safetyLabels :: (Core.Maybe Core.Text)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'SafetyLabelsUpdateRequest' with the minimum fields required to make a request.
+newSafetyLabelsUpdateRequest ::
+  SafetyLabelsUpdateRequest
+newSafetyLabelsUpdateRequest =
+  SafetyLabelsUpdateRequest {safetyLabels = Core.Nothing}
+
+instance Core.FromJSON SafetyLabelsUpdateRequest where
+  parseJSON =
+    Core.withObject
+      "SafetyLabelsUpdateRequest"
+      ( \o ->
+          SafetyLabelsUpdateRequest Core.<$> (o Core..:? "safetyLabels")
+      )
+
+instance Core.ToJSON SafetyLabelsUpdateRequest where
+  toJSON SafetyLabelsUpdateRequest {..} =
+    Core.object
+      (Core.catMaybes [("safetyLabels" Core..=) Core.<$> safetyLabels])
+
+-- | Response for SafetyLabelsUpdate rpc.
+--
+-- /See:/ 'newSafetyLabelsUpdateResponse' smart constructor.
+data SafetyLabelsUpdateResponse = SafetyLabelsUpdateResponse
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'SafetyLabelsUpdateResponse' with the minimum fields required to make a request.
+newSafetyLabelsUpdateResponse ::
+  SafetyLabelsUpdateResponse
+newSafetyLabelsUpdateResponse = SafetyLabelsUpdateResponse
+
+instance Core.FromJSON SafetyLabelsUpdateResponse where
+  parseJSON =
+    Core.withObject
+      "SafetyLabelsUpdateResponse"
+      (\o -> Core.pure SafetyLabelsUpdateResponse)
+
+instance Core.ToJSON SafetyLabelsUpdateResponse where
+  toJSON = Core.const Core.emptyObject
+
+-- | Represents a screen density.
+--
+-- /See:/ 'newScreenDensity' smart constructor.
+data ScreenDensity = ScreenDensity
+  { -- | Alias for a screen density.
+    densityAlias :: (Core.Maybe ScreenDensity_DensityAlias),
+    -- | Value for density dpi.
+    densityDpi :: (Core.Maybe Core.Int32)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'ScreenDensity' with the minimum fields required to make a request.
+newScreenDensity ::
+  ScreenDensity
+newScreenDensity =
+  ScreenDensity
+    { densityAlias = Core.Nothing,
+      densityDpi = Core.Nothing
+    }
+
+instance Core.FromJSON ScreenDensity where
+  parseJSON =
+    Core.withObject
+      "ScreenDensity"
+      ( \o ->
+          ScreenDensity
+            Core.<$> (o Core..:? "densityAlias")
+            Core.<*> (o Core..:? "densityDpi")
+      )
+
+instance Core.ToJSON ScreenDensity where
+  toJSON ScreenDensity {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("densityAlias" Core..=) Core.<$> densityAlias,
+            ("densityDpi" Core..=) Core.<$> densityDpi
+          ]
+      )
+
+-- | Targeting based on screen density.
+--
+-- /See:/ 'newScreenDensityTargeting' smart constructor.
+data ScreenDensityTargeting = ScreenDensityTargeting
+  { -- | Targeting of other sibling directories that were in the Bundle. For main splits this is targeting of other main splits.
+    alternatives :: (Core.Maybe [ScreenDensity]),
+    -- | Value of a screen density.
+    value :: (Core.Maybe [ScreenDensity])
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'ScreenDensityTargeting' with the minimum fields required to make a request.
+newScreenDensityTargeting ::
+  ScreenDensityTargeting
+newScreenDensityTargeting =
+  ScreenDensityTargeting
+    { alternatives = Core.Nothing,
+      value = Core.Nothing
+    }
+
+instance Core.FromJSON ScreenDensityTargeting where
+  parseJSON =
+    Core.withObject
+      "ScreenDensityTargeting"
+      ( \o ->
+          ScreenDensityTargeting
+            Core.<$> (o Core..:? "alternatives")
+            Core.<*> (o Core..:? "value")
+      )
+
+instance Core.ToJSON ScreenDensityTargeting where
+  toJSON ScreenDensityTargeting {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("alternatives" Core..=) Core.<$> alternatives,
+            ("value" Core..=) Core.<$> value
+          ]
+      )
+
+-- | Represents an sdk version.
+--
+-- /See:/ 'newSdkVersion' smart constructor.
+newtype SdkVersion = SdkVersion
+  { -- | Inclusive minimum value of an sdk version.
+    min :: (Core.Maybe Core.Int32)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'SdkVersion' with the minimum fields required to make a request.
+newSdkVersion ::
+  SdkVersion
+newSdkVersion = SdkVersion {min = Core.Nothing}
+
+instance Core.FromJSON SdkVersion where
+  parseJSON =
+    Core.withObject
+      "SdkVersion"
+      (\o -> SdkVersion Core.<$> (o Core..:? "min"))
+
+instance Core.ToJSON SdkVersion where
+  toJSON SdkVersion {..} =
+    Core.object (Core.catMaybes [("min" Core..=) Core.<$> min])
+
+-- | Targeting based on sdk version.
+--
+-- /See:/ 'newSdkVersionTargeting' smart constructor.
+data SdkVersionTargeting = SdkVersionTargeting
+  { -- | Targeting of other sibling directories that were in the Bundle. For main splits this is targeting of other main splits.
+    alternatives :: (Core.Maybe [SdkVersion]),
+    -- | Value of an sdk version.
+    value :: (Core.Maybe [SdkVersion])
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'SdkVersionTargeting' with the minimum fields required to make a request.
+newSdkVersionTargeting ::
+  SdkVersionTargeting
+newSdkVersionTargeting =
+  SdkVersionTargeting
+    { alternatives = Core.Nothing,
+      value = Core.Nothing
+    }
+
+instance Core.FromJSON SdkVersionTargeting where
+  parseJSON =
+    Core.withObject
+      "SdkVersionTargeting"
+      ( \o ->
+          SdkVersionTargeting
+            Core.<$> (o Core..:? "alternatives")
+            Core.<*> (o Core..:? "value")
+      )
+
+instance Core.ToJSON SdkVersionTargeting where
+  toJSON SdkVersionTargeting {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("alternatives" Core..=) Core.<$> alternatives,
+            ("value" Core..=) Core.<$> value
+          ]
+      )
+
+-- | The promotion applied on this item when purchased.
+--
+-- /See:/ 'newSignupPromotion' smart constructor.
+data SignupPromotion = SignupPromotion
+  { -- | A one-time code was applied.
+    oneTimeCode :: (Core.Maybe OneTimeCode),
+    -- | A vanity code was applied.
+    vanityCode :: (Core.Maybe VanityCode)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'SignupPromotion' with the minimum fields required to make a request.
+newSignupPromotion ::
+  SignupPromotion
+newSignupPromotion =
+  SignupPromotion
+    { oneTimeCode = Core.Nothing,
+      vanityCode = Core.Nothing
+    }
+
+instance Core.FromJSON SignupPromotion where
+  parseJSON =
+    Core.withObject
+      "SignupPromotion"
+      ( \o ->
+          SignupPromotion
+            Core.<$> (o Core..:? "oneTimeCode")
+            Core.<*> (o Core..:? "vanityCode")
+      )
+
+instance Core.ToJSON SignupPromotion where
+  toJSON SignupPromotion {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("oneTimeCode" Core..=) Core.<$> oneTimeCode,
+            ("vanityCode" Core..=) Core.<$> vanityCode
+          ]
+      )
+
+-- | Holds data specific to Split APKs.
+--
+-- /See:/ 'newSplitApkMetadata' smart constructor.
+data SplitApkMetadata = SplitApkMetadata
+  { -- | Indicates whether this APK is the main split of the module.
+    isMasterSplit :: (Core.Maybe Core.Bool),
+    -- | Id of the split.
+    splitId :: (Core.Maybe Core.Text)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'SplitApkMetadata' with the minimum fields required to make a request.
+newSplitApkMetadata ::
+  SplitApkMetadata
+newSplitApkMetadata =
+  SplitApkMetadata
+    { isMasterSplit = Core.Nothing,
+      splitId = Core.Nothing
+    }
+
+instance Core.FromJSON SplitApkMetadata where
+  parseJSON =
+    Core.withObject
+      "SplitApkMetadata"
+      ( \o ->
+          SplitApkMetadata
+            Core.<$> (o Core..:? "isMasterSplit")
+            Core.<*> (o Core..:? "splitId")
+      )
+
+instance Core.ToJSON SplitApkMetadata where
+  toJSON SplitApkMetadata {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("isMasterSplit" Core..=) Core.<$> isMasterSplit,
+            ("splitId" Core..=) Core.<$> splitId
+          ]
+      )
+
+-- | Variant is a group of APKs that covers a part of the device configuration space. APKs from multiple variants are never combined on one device.
+--
+-- /See:/ 'newSplitApkVariant' smart constructor.
+data SplitApkVariant = SplitApkVariant
+  { -- | Set of APKs, one set per module.
+    apkSet :: (Core.Maybe [ApkSet]),
+    -- | Variant-level targeting.
+    targeting :: (Core.Maybe VariantTargeting),
+    -- | Number of the variant, starting at 0 (unless overridden). A device will receive APKs from the first variant that matches the device configuration, with higher variant numbers having priority over lower variant numbers.
+    variantNumber :: (Core.Maybe Core.Int32)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'SplitApkVariant' with the minimum fields required to make a request.
+newSplitApkVariant ::
+  SplitApkVariant
+newSplitApkVariant =
+  SplitApkVariant
+    { apkSet = Core.Nothing,
+      targeting = Core.Nothing,
+      variantNumber = Core.Nothing
+    }
+
+instance Core.FromJSON SplitApkVariant where
+  parseJSON =
+    Core.withObject
+      "SplitApkVariant"
+      ( \o ->
+          SplitApkVariant
+            Core.<$> (o Core..:? "apkSet")
+            Core.<*> (o Core..:? "targeting")
+            Core.<*> (o Core..:? "variantNumber")
+      )
+
+instance Core.ToJSON SplitApkVariant where
+  toJSON SplitApkVariant {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("apkSet" Core..=) Core.<$> apkSet,
+            ("targeting" Core..=) Core.<$> targeting,
+            ("variantNumber" Core..=) Core.<$> variantNumber
+          ]
+      )
+
+-- | Holds data specific to Standalone APKs.
+--
+-- /See:/ 'newStandaloneApkMetadata' smart constructor.
+newtype StandaloneApkMetadata = StandaloneApkMetadata
+  { -- | Names of the modules fused in this standalone APK.
+    fusedModuleName :: (Core.Maybe [Core.Text])
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'StandaloneApkMetadata' with the minimum fields required to make a request.
+newStandaloneApkMetadata ::
+  StandaloneApkMetadata
+newStandaloneApkMetadata =
+  StandaloneApkMetadata {fusedModuleName = Core.Nothing}
+
+instance Core.FromJSON StandaloneApkMetadata where
+  parseJSON =
+    Core.withObject
+      "StandaloneApkMetadata"
+      ( \o ->
+          StandaloneApkMetadata Core.<$> (o Core..:? "fusedModuleName")
+      )
+
+instance Core.ToJSON StandaloneApkMetadata where
+  toJSON StandaloneApkMetadata {..} =
+    Core.object
+      ( Core.catMaybes
+          [("fusedModuleName" Core..=) Core.<$> fusedModuleName]
+      )
+
+-- | Information associated with purchases made with \'Subscribe with Google\'.
+--
+-- /See:/ 'newSubscribeWithGoogleInfo' smart constructor.
+data SubscribeWithGoogleInfo = SubscribeWithGoogleInfo
+  { -- | The email address of the user when the subscription was purchased.
+    emailAddress :: (Core.Maybe Core.Text),
+    -- | The family name of the user when the subscription was purchased.
+    familyName :: (Core.Maybe Core.Text),
+    -- | The given name of the user when the subscription was purchased.
+    givenName :: (Core.Maybe Core.Text),
+    -- | The Google profile id of the user when the subscription was purchased.
+    profileId :: (Core.Maybe Core.Text),
+    -- | The profile name of the user when the subscription was purchased.
+    profileName :: (Core.Maybe Core.Text)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'SubscribeWithGoogleInfo' with the minimum fields required to make a request.
+newSubscribeWithGoogleInfo ::
+  SubscribeWithGoogleInfo
+newSubscribeWithGoogleInfo =
+  SubscribeWithGoogleInfo
+    { emailAddress = Core.Nothing,
+      familyName = Core.Nothing,
+      givenName = Core.Nothing,
+      profileId = Core.Nothing,
+      profileName = Core.Nothing
+    }
+
+instance Core.FromJSON SubscribeWithGoogleInfo where
+  parseJSON =
+    Core.withObject
+      "SubscribeWithGoogleInfo"
+      ( \o ->
+          SubscribeWithGoogleInfo
+            Core.<$> (o Core..:? "emailAddress")
+            Core.<*> (o Core..:? "familyName")
+            Core.<*> (o Core..:? "givenName")
+            Core.<*> (o Core..:? "profileId")
+            Core.<*> (o Core..:? "profileName")
+      )
+
+instance Core.ToJSON SubscribeWithGoogleInfo where
+  toJSON SubscribeWithGoogleInfo {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("emailAddress" Core..=) Core.<$> emailAddress,
+            ("familyName" Core..=) Core.<$> familyName,
+            ("givenName" Core..=) Core.<$> givenName,
+            ("profileId" Core..=) Core.<$> profileId,
+            ("profileName" Core..=) Core.<$> profileName
+          ]
+      )
+
+-- | A single subscription for an app.
+--
+-- /See:/ 'newSubscription' smart constructor.
+data Subscription = Subscription
+  { -- | Output only. Deprecated: subscription archiving is not supported.
+    archived :: (Core.Maybe Core.Bool),
+    -- | The set of base plans for this subscription. Represents the prices and duration of the subscription if no other offers apply.
+    basePlans :: (Core.Maybe [BasePlan]),
+    -- | Required. List of localized listings for this subscription. Must contain at least an entry for the default language of the parent app.
+    listings :: (Core.Maybe [SubscriptionListing]),
+    -- | Immutable. Package name of the parent app.
+    packageName :: (Core.Maybe Core.Text),
+    -- | Immutable. Unique product ID of the product. Unique within the parent app. Product IDs must be composed of lower-case letters (a-z), numbers (0-9), underscores (_) and dots (.). It must start with a lower-case letter or number, and be between 1 and 40 (inclusive) characters in length.
+    productId :: (Core.Maybe Core.Text),
+    -- | Optional. Countries where the purchase of this subscription is restricted to payment methods registered in the same country. If empty, no payment location restrictions are imposed.
+    restrictedPaymentCountries :: (Core.Maybe RestrictedPaymentCountries),
+    -- | Details about taxes and legal compliance.
+    taxAndComplianceSettings :: (Core.Maybe SubscriptionTaxAndComplianceSettings)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'Subscription' with the minimum fields required to make a request.
+newSubscription ::
+  Subscription
+newSubscription =
+  Subscription
+    { archived = Core.Nothing,
+      basePlans = Core.Nothing,
+      listings = Core.Nothing,
+      packageName = Core.Nothing,
+      productId = Core.Nothing,
+      restrictedPaymentCountries = Core.Nothing,
+      taxAndComplianceSettings = Core.Nothing
+    }
+
+instance Core.FromJSON Subscription where
+  parseJSON =
+    Core.withObject
+      "Subscription"
+      ( \o ->
+          Subscription
+            Core.<$> (o Core..:? "archived")
+            Core.<*> (o Core..:? "basePlans")
+            Core.<*> (o Core..:? "listings")
+            Core.<*> (o Core..:? "packageName")
+            Core.<*> (o Core..:? "productId")
+            Core.<*> (o Core..:? "restrictedPaymentCountries")
+            Core.<*> (o Core..:? "taxAndComplianceSettings")
+      )
+
+instance Core.ToJSON Subscription where
+  toJSON Subscription {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("archived" Core..=) Core.<$> archived,
+            ("basePlans" Core..=) Core.<$> basePlans,
+            ("listings" Core..=) Core.<$> listings,
+            ("packageName" Core..=) Core.<$> packageName,
+            ("productId" Core..=) Core.<$> productId,
+            ("restrictedPaymentCountries" Core..=)
+              Core.<$> restrictedPaymentCountries,
+            ("taxAndComplianceSettings" Core..=)
+              Core.<$> taxAndComplianceSettings
+          ]
+      )
+
+-- | Information provided by the user when they complete the subscription cancellation flow (cancellation reason survey).
+--
+-- /See:/ 'newSubscriptionCancelSurveyResult' smart constructor.
+data SubscriptionCancelSurveyResult = SubscriptionCancelSurveyResult
+  { -- | The cancellation reason the user chose in the survey. Possible values are: 0. Other 1. I don\'t use this service enough 2. Technical issues 3. Cost-related reasons 4. I found a better app
+    cancelSurveyReason :: (Core.Maybe Core.Int32),
+    -- | The customized input cancel reason from the user. Only present when cancelReason is 0.
+    userInputCancelReason :: (Core.Maybe Core.Text)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'SubscriptionCancelSurveyResult' with the minimum fields required to make a request.
+newSubscriptionCancelSurveyResult ::
+  SubscriptionCancelSurveyResult
+newSubscriptionCancelSurveyResult =
+  SubscriptionCancelSurveyResult
+    { cancelSurveyReason = Core.Nothing,
+      userInputCancelReason = Core.Nothing
+    }
+
+instance Core.FromJSON SubscriptionCancelSurveyResult where
+  parseJSON =
+    Core.withObject
+      "SubscriptionCancelSurveyResult"
+      ( \o ->
+          SubscriptionCancelSurveyResult
+            Core.<$> (o Core..:? "cancelSurveyReason")
+            Core.<*> (o Core..:? "userInputCancelReason")
+      )
+
+instance Core.ToJSON SubscriptionCancelSurveyResult where
+  toJSON SubscriptionCancelSurveyResult {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("cancelSurveyReason" Core..=) Core.<$> cancelSurveyReason,
+            ("userInputCancelReason" Core..=) Core.<$> userInputCancelReason
+          ]
+      )
+
+-- | A SubscriptionDeferralInfo contains the data needed to defer a subscription purchase to a future expiry time.
+--
+-- /See:/ 'newSubscriptionDeferralInfo' smart constructor.
+data SubscriptionDeferralInfo = SubscriptionDeferralInfo
+  { -- | 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.
+    desiredExpiryTimeMillis :: (Core.Maybe Core.Int64),
+    -- | 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.
+    expectedExpiryTimeMillis :: (Core.Maybe Core.Int64)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'SubscriptionDeferralInfo' with the minimum fields required to make a request.
+newSubscriptionDeferralInfo ::
+  SubscriptionDeferralInfo
+newSubscriptionDeferralInfo =
+  SubscriptionDeferralInfo
+    { desiredExpiryTimeMillis = Core.Nothing,
+      expectedExpiryTimeMillis = Core.Nothing
+    }
+
+instance Core.FromJSON SubscriptionDeferralInfo where
+  parseJSON =
+    Core.withObject
+      "SubscriptionDeferralInfo"
+      ( \o ->
+          SubscriptionDeferralInfo
+            Core.<$> ( o
+                         Core..:? "desiredExpiryTimeMillis"
+                         Core.<&> Core.fmap Core.fromAsText
+                     )
+            Core.<*> ( o
+                         Core..:? "expectedExpiryTimeMillis"
+                         Core.<&> Core.fmap Core.fromAsText
+                     )
+      )
+
+instance Core.ToJSON SubscriptionDeferralInfo where
+  toJSON SubscriptionDeferralInfo {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("desiredExpiryTimeMillis" Core..=)
+              Core.. Core.AsText
+              Core.<$> desiredExpiryTimeMillis,
+            ("expectedExpiryTimeMillis" Core..=)
+              Core.. Core.AsText
+              Core.<$> expectedExpiryTimeMillis
+          ]
+      )
+
+-- | Price change related information of a subscription item.
+--
+-- /See:/ 'newSubscriptionItemPriceChangeDetails' smart constructor.
+data SubscriptionItemPriceChangeDetails = SubscriptionItemPriceChangeDetails
+  { -- | The renewal time at which the price change will become effective for the user. This is subject to change(to a future time) due to cases where the renewal time shifts like pause. This field is only populated if the price change has not taken effect.
+    expectedNewPriceChargeTime :: (Core.Maybe Core.DateTime),
+    -- | New recurring price for the subscription item.
+    newPrice' :: (Core.Maybe Money),
+    -- | Price change mode specifies how the subscription item price is changing.
+    priceChangeMode :: (Core.Maybe SubscriptionItemPriceChangeDetails_PriceChangeMode),
+    -- | State the price change is currently in.
+    priceChangeState :: (Core.Maybe SubscriptionItemPriceChangeDetails_PriceChangeState)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'SubscriptionItemPriceChangeDetails' with the minimum fields required to make a request.
+newSubscriptionItemPriceChangeDetails ::
+  SubscriptionItemPriceChangeDetails
+newSubscriptionItemPriceChangeDetails =
+  SubscriptionItemPriceChangeDetails
+    { expectedNewPriceChargeTime =
+        Core.Nothing,
+      newPrice' = Core.Nothing,
+      priceChangeMode = Core.Nothing,
+      priceChangeState = Core.Nothing
+    }
+
+instance Core.FromJSON SubscriptionItemPriceChangeDetails where
+  parseJSON =
+    Core.withObject
+      "SubscriptionItemPriceChangeDetails"
+      ( \o ->
+          SubscriptionItemPriceChangeDetails
+            Core.<$> (o Core..:? "expectedNewPriceChargeTime")
+            Core.<*> (o Core..:? "newPrice")
+            Core.<*> (o Core..:? "priceChangeMode")
+            Core.<*> (o Core..:? "priceChangeState")
+      )
+
+instance Core.ToJSON SubscriptionItemPriceChangeDetails where
+  toJSON SubscriptionItemPriceChangeDetails {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("expectedNewPriceChargeTime" Core..=)
+              Core.<$> expectedNewPriceChargeTime,
+            ("newPrice" Core..=) Core.<$> newPrice',
+            ("priceChangeMode" Core..=) Core.<$> priceChangeMode,
+            ("priceChangeState" Core..=) Core.<$> priceChangeState
+          ]
+      )
+
+-- | The consumer-visible metadata of a subscription.
+--
+-- /See:/ 'newSubscriptionListing' smart constructor.
+data SubscriptionListing = SubscriptionListing
+  { -- | A list of benefits shown to the user on platforms such as the Play Store and in restoration flows in the language of this listing. Plain text. Ordered list of at most four benefits.
+    benefits :: (Core.Maybe [Core.Text]),
+    -- | The description of this subscription in the language of this listing. Maximum length - 80 characters. Plain text.
+    description :: (Core.Maybe Core.Text),
+    -- | Required. The language of this listing, as defined by BCP-47, e.g. \"en-US\".
+    languageCode :: (Core.Maybe Core.Text),
+    -- | Required. The title of this subscription in the language of this listing. Plain text.
+    title :: (Core.Maybe Core.Text)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'SubscriptionListing' with the minimum fields required to make a request.
+newSubscriptionListing ::
+  SubscriptionListing
+newSubscriptionListing =
+  SubscriptionListing
+    { benefits = Core.Nothing,
+      description = Core.Nothing,
+      languageCode = Core.Nothing,
+      title = Core.Nothing
+    }
+
+instance Core.FromJSON SubscriptionListing where
+  parseJSON =
+    Core.withObject
+      "SubscriptionListing"
+      ( \o ->
+          SubscriptionListing
+            Core.<$> (o Core..:? "benefits")
+            Core.<*> (o Core..:? "description")
+            Core.<*> (o Core..:? "languageCode")
+            Core.<*> (o Core..:? "title")
+      )
+
+instance Core.ToJSON SubscriptionListing where
+  toJSON SubscriptionListing {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("benefits" Core..=) Core.<$> benefits,
+            ("description" Core..=) Core.<$> description,
+            ("languageCode" Core..=) Core.<$> languageCode,
+            ("title" Core..=) Core.<$> title
+          ]
+      )
+
+-- | A single, temporary offer
+--
+-- /See:/ 'newSubscriptionOffer' smart constructor.
+data SubscriptionOffer = SubscriptionOffer
+  { -- | Required. Immutable. The ID of the base plan to which this offer is an extension.
+    basePlanId :: (Core.Maybe Core.Text),
+    -- | Required. Immutable. Unique ID of this subscription offer. Must be unique within the base plan.
+    offerId :: (Core.Maybe Core.Text),
+    -- | List of up to 20 custom tags specified for this offer, and returned to the app through the billing library.
+    offerTags :: (Core.Maybe [OfferTag]),
+    -- | The configuration for any new locations Play may launch in the future.
+    otherRegionsConfig :: (Core.Maybe OtherRegionsSubscriptionOfferConfig),
+    -- | Required. Immutable. The package name of the app the parent subscription belongs to.
+    packageName :: (Core.Maybe Core.Text),
+    -- | Required. The phases of this subscription offer. Must contain at least one and at most two entries. Users will always receive all these phases in the specified order.
+    phases :: (Core.Maybe [SubscriptionOfferPhase]),
+    -- | Required. Immutable. The ID of the parent subscription this offer belongs to.
+    productId :: (Core.Maybe Core.Text),
+    -- | Required. The region-specific configuration of this offer. Must contain at least one entry.
+    regionalConfigs :: (Core.Maybe [RegionalSubscriptionOfferConfig]),
+    -- | Output only. The current state of this offer. Can be changed using Activate and Deactivate actions. NB: the base plan state supersedes this state, so an active offer may not be available if the base plan is not active.
+    state :: (Core.Maybe SubscriptionOffer_State),
+    -- | The requirements that users need to fulfil to be eligible for this offer. Represents the requirements that Play will evaluate to decide whether an offer should be returned. Developers may further filter these offers themselves.
+    targeting :: (Core.Maybe SubscriptionOfferTargeting)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'SubscriptionOffer' with the minimum fields required to make a request.
+newSubscriptionOffer ::
+  SubscriptionOffer
+newSubscriptionOffer =
+  SubscriptionOffer
+    { basePlanId = Core.Nothing,
+      offerId = Core.Nothing,
+      offerTags = Core.Nothing,
+      otherRegionsConfig = Core.Nothing,
+      packageName = Core.Nothing,
+      phases = Core.Nothing,
+      productId = Core.Nothing,
+      regionalConfigs = Core.Nothing,
+      state = Core.Nothing,
+      targeting = Core.Nothing
+    }
+
+instance Core.FromJSON SubscriptionOffer where
+  parseJSON =
+    Core.withObject
+      "SubscriptionOffer"
+      ( \o ->
+          SubscriptionOffer
+            Core.<$> (o Core..:? "basePlanId")
+            Core.<*> (o Core..:? "offerId")
+            Core.<*> (o Core..:? "offerTags")
+            Core.<*> (o Core..:? "otherRegionsConfig")
+            Core.<*> (o Core..:? "packageName")
+            Core.<*> (o Core..:? "phases")
+            Core.<*> (o Core..:? "productId")
+            Core.<*> (o Core..:? "regionalConfigs")
+            Core.<*> (o Core..:? "state")
+            Core.<*> (o Core..:? "targeting")
+      )
+
+instance Core.ToJSON SubscriptionOffer where
+  toJSON SubscriptionOffer {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("basePlanId" Core..=) Core.<$> basePlanId,
+            ("offerId" Core..=) Core.<$> offerId,
+            ("offerTags" Core..=) Core.<$> offerTags,
+            ("otherRegionsConfig" Core..=) Core.<$> otherRegionsConfig,
+            ("packageName" Core..=) Core.<$> packageName,
+            ("phases" Core..=) Core.<$> phases,
+            ("productId" Core..=) Core.<$> productId,
+            ("regionalConfigs" Core..=) Core.<$> regionalConfigs,
+            ("state" Core..=) Core.<$> state,
+            ("targeting" Core..=) Core.<$> targeting
+          ]
+      )
+
+-- | A single phase of a subscription offer.
+--
+-- /See:/ 'newSubscriptionOfferPhase' smart constructor.
+data SubscriptionOfferPhase = SubscriptionOfferPhase
+  { -- | Required. The duration of a single recurrence of this phase. Specified in ISO 8601 format.
+    duration :: (Core.Maybe Core.Text),
+    -- | Pricing information for any new locations Play may launch in.
+    otherRegionsConfig :: (Core.Maybe OtherRegionsSubscriptionOfferPhaseConfig),
+    -- | Required. The number of times this phase repeats. If this offer phase is not free, each recurrence charges the user the price of this offer phase.
+    recurrenceCount :: (Core.Maybe Core.Int32),
+    -- | Required. The region-specific configuration of this offer phase. This list must contain exactly one entry for each region for which the subscription offer has a regional config.
+    regionalConfigs :: (Core.Maybe [RegionalSubscriptionOfferPhaseConfig])
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'SubscriptionOfferPhase' with the minimum fields required to make a request.
+newSubscriptionOfferPhase ::
+  SubscriptionOfferPhase
+newSubscriptionOfferPhase =
+  SubscriptionOfferPhase
+    { duration = Core.Nothing,
+      otherRegionsConfig = Core.Nothing,
+      recurrenceCount = Core.Nothing,
+      regionalConfigs = Core.Nothing
+    }
+
+instance Core.FromJSON SubscriptionOfferPhase where
+  parseJSON =
+    Core.withObject
+      "SubscriptionOfferPhase"
+      ( \o ->
+          SubscriptionOfferPhase
+            Core.<$> (o Core..:? "duration")
+            Core.<*> (o Core..:? "otherRegionsConfig")
+            Core.<*> (o Core..:? "recurrenceCount")
+            Core.<*> (o Core..:? "regionalConfigs")
+      )
+
+instance Core.ToJSON SubscriptionOfferPhase where
+  toJSON SubscriptionOfferPhase {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("duration" Core..=) Core.<$> duration,
+            ("otherRegionsConfig" Core..=) Core.<$> otherRegionsConfig,
+            ("recurrenceCount" Core..=) Core.<$> recurrenceCount,
+            ("regionalConfigs" Core..=) Core.<$> regionalConfigs
+          ]
+      )
+
+-- | Defines the rule a user needs to satisfy to receive this offer.
+--
+-- /See:/ 'newSubscriptionOfferTargeting' smart constructor.
+data SubscriptionOfferTargeting = SubscriptionOfferTargeting
+  { -- | Offer targeting rule for new user acquisition.
+    acquisitionRule :: (Core.Maybe AcquisitionTargetingRule),
+    -- | Offer targeting rule for upgrading users\' existing plans.
+    upgradeRule :: (Core.Maybe UpgradeTargetingRule)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'SubscriptionOfferTargeting' with the minimum fields required to make a request.
+newSubscriptionOfferTargeting ::
+  SubscriptionOfferTargeting
+newSubscriptionOfferTargeting =
+  SubscriptionOfferTargeting
+    { acquisitionRule = Core.Nothing,
+      upgradeRule = Core.Nothing
+    }
+
+instance Core.FromJSON SubscriptionOfferTargeting where
+  parseJSON =
+    Core.withObject
+      "SubscriptionOfferTargeting"
+      ( \o ->
+          SubscriptionOfferTargeting
+            Core.<$> (o Core..:? "acquisitionRule")
+            Core.<*> (o Core..:? "upgradeRule")
+      )
+
+instance Core.ToJSON SubscriptionOfferTargeting where
+  toJSON SubscriptionOfferTargeting {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("acquisitionRule" Core..=) Core.<$> acquisitionRule,
+            ("upgradeRule" Core..=) Core.<$> upgradeRule
+          ]
+      )
+
+-- | 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:/ 'newSubscriptionPriceChange' smart constructor.
+data SubscriptionPriceChange = SubscriptionPriceChange
+  { -- | The new price the subscription will renew with if the price change is accepted by the user.
+    newPrice' :: (Core.Maybe Price),
+    -- | The current state of the price change. Possible values are: 0. 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. 1. 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.
+    state :: (Core.Maybe Core.Int32)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'SubscriptionPriceChange' with the minimum fields required to make a request.
+newSubscriptionPriceChange ::
+  SubscriptionPriceChange
+newSubscriptionPriceChange =
+  SubscriptionPriceChange
+    { newPrice' = Core.Nothing,
+      state = Core.Nothing
+    }
+
+instance Core.FromJSON SubscriptionPriceChange where
+  parseJSON =
+    Core.withObject
+      "SubscriptionPriceChange"
+      ( \o ->
+          SubscriptionPriceChange
+            Core.<$> (o Core..:? "newPrice")
+            Core.<*> (o Core..:? "state")
+      )
+
+instance Core.ToJSON SubscriptionPriceChange where
+  toJSON SubscriptionPriceChange {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("newPrice" Core..=) Core.<$> newPrice',
+            ("state" Core..=) Core.<$> state
+          ]
+      )
+
+-- | A SubscriptionPurchase resource indicates the status of a user\'s subscription purchase.
+--
+-- /See:/ 'newSubscriptionPurchase' smart constructor.
+data SubscriptionPurchase = SubscriptionPurchase
+  { -- | The acknowledgement state of the subscription product. Possible values are: 0. Yet to be acknowledged 1. Acknowledged
+    acknowledgementState :: (Core.Maybe Core.Int32),
+    -- | Whether the subscription will automatically be renewed when it reaches its current expiry time.
+    autoRenewing :: (Core.Maybe Core.Bool),
+    -- | 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.
+    autoResumeTimeMillis :: (Core.Maybe Core.Int64),
+    -- | The reason why a subscription was canceled or is not auto-renewing. Possible values are: 0. User canceled the subscription 1. Subscription was canceled by the system, for example because of a billing problem 2. Subscription was replaced with a new subscription 3. Subscription was canceled by the developer
+    cancelReason :: (Core.Maybe Core.Int32),
+    -- | Information provided by the user when they complete the subscription cancellation flow (cancellation reason survey).
+    cancelSurveyResult :: (Core.Maybe SubscriptionCancelSurveyResult),
+    -- | ISO 3166-1 alpha-2 billing country\/region code of the user at the time the subscription was granted.
+    countryCode :: (Core.Maybe Core.Text),
+    -- | A developer-specified string that contains supplemental information about an order.
+    developerPayload :: (Core.Maybe Core.Text),
+    -- | The email address of the user when the subscription was purchased. Only present for purchases made with \'Subscribe with Google\'.
+    emailAddress :: (Core.Maybe Core.Text),
+    -- | Time at which the subscription will expire, in milliseconds since the Epoch.
+    expiryTimeMillis :: (Core.Maybe Core.Int64),
+    -- | User account identifier in the third-party service. Only present if account linking happened as part of the subscription purchase flow.
+    externalAccountId :: (Core.Maybe Core.Text),
+    -- | The family name of the user when the subscription was purchased. Only present for purchases made with \'Subscribe with Google\'.
+    familyName :: (Core.Maybe Core.Text),
+    -- | The given name of the user when the subscription was purchased. Only present for purchases made with \'Subscribe with Google\'.
+    givenName :: (Core.Maybe Core.Text),
+    -- | Introductory price information of the subscription. This is only present when the subscription was purchased with an introductory price. This field does not indicate the subscription is currently in introductory price period.
+    introductoryPriceInfo :: (Core.Maybe IntroductoryPriceInfo),
+    -- | This kind represents a subscriptionPurchase object in the androidpublisher service.
+    kind :: (Core.Maybe Core.Text),
+    -- | The purchase token of the originating purchase if this subscription is one of the following: 0. Re-signup of a canceled but non-lapsed subscription 1. 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.
+    linkedPurchaseToken :: (Core.Maybe Core.Text),
+    -- | An obfuscated version of the id that is uniquely associated with the user\'s account in your app. Present for the following purchases: * If account linking happened as part of the subscription purchase flow. * It was specified using https:\/\/developer.android.com\/reference\/com\/android\/billingclient\/api\/BillingFlowParams.Builder#setobfuscatedaccountid when the purchase was made.
+    obfuscatedExternalAccountId :: (Core.Maybe Core.Text),
+    -- | An obfuscated version of the id that is uniquely associated with the user\'s profile in your app. Only present if specified using https:\/\/developer.android.com\/reference\/com\/android\/billingclient\/api\/BillingFlowParams.Builder#setobfuscatedprofileid when the purchase was made.
+    obfuscatedExternalProfileId :: (Core.Maybe Core.Text),
+    -- | The order id of the latest recurring order associated with the purchase of the subscription. If the subscription was canceled because payment was declined, this will be the order id from the payment declined order.
+    orderId :: (Core.Maybe Core.Text),
+    -- | The payment state of the subscription. Possible values are: 0. Payment pending 1. Payment received 2. Free trial 3. Pending deferred upgrade\/downgrade Not present for canceled, expired subscriptions.
+    paymentState :: (Core.Maybe Core.Int32),
+    -- | Price of the subscription, For tax exclusive countries, the price doesn\'t include tax. For tax inclusive countries, the price includes 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.
+    priceAmountMicros :: (Core.Maybe Core.Int64),
+    -- | 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.
+    priceChange :: (Core.Maybe SubscriptionPriceChange),
+    -- | ISO 4217 currency code for the subscription price. For example, if the price is specified in British pounds sterling, price/currency/code is \"GBP\".
+    priceCurrencyCode :: (Core.Maybe Core.Text),
+    -- | The Google profile id of the user when the subscription was purchased. Only present for purchases made with \'Subscribe with Google\'.
+    profileId :: (Core.Maybe Core.Text),
+    -- | The profile name of the user when the subscription was purchased. Only present for purchases made with \'Subscribe with Google\'.
+    profileName :: (Core.Maybe Core.Text),
+    -- | The promotion code applied on this purchase. This field is only set if a vanity code promotion is applied when the subscription was purchased.
+    promotionCode :: (Core.Maybe Core.Text),
+    -- | The type of promotion applied on this purchase. This field is only set if a promotion is applied when the subscription was purchased. Possible values are: 0. One time code 1. Vanity code
+    promotionType :: (Core.Maybe Core.Int32),
+    -- | 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: 0. Test (i.e. purchased from a license testing account) 1. Promo (i.e. purchased using a promo code)
+    purchaseType :: (Core.Maybe Core.Int32),
+    -- | Time at which the subscription was granted, in milliseconds since the Epoch.
+    startTimeMillis :: (Core.Maybe Core.Int64),
+    -- | The time at which the subscription was canceled by the user, in milliseconds since the epoch. Only present if cancelReason is 0.
+    userCancellationTimeMillis :: (Core.Maybe Core.Int64)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'SubscriptionPurchase' with the minimum fields required to make a request.
+newSubscriptionPurchase ::
+  SubscriptionPurchase
+newSubscriptionPurchase =
+  SubscriptionPurchase
+    { acknowledgementState = Core.Nothing,
+      autoRenewing = Core.Nothing,
+      autoResumeTimeMillis = Core.Nothing,
+      cancelReason = Core.Nothing,
+      cancelSurveyResult = Core.Nothing,
+      countryCode = Core.Nothing,
+      developerPayload = Core.Nothing,
+      emailAddress = Core.Nothing,
+      expiryTimeMillis = Core.Nothing,
+      externalAccountId = Core.Nothing,
+      familyName = Core.Nothing,
+      givenName = Core.Nothing,
+      introductoryPriceInfo = Core.Nothing,
+      kind = Core.Nothing,
+      linkedPurchaseToken = Core.Nothing,
+      obfuscatedExternalAccountId = Core.Nothing,
+      obfuscatedExternalProfileId = Core.Nothing,
+      orderId = Core.Nothing,
+      paymentState = Core.Nothing,
+      priceAmountMicros = Core.Nothing,
+      priceChange = Core.Nothing,
+      priceCurrencyCode = Core.Nothing,
+      profileId = Core.Nothing,
+      profileName = Core.Nothing,
+      promotionCode = Core.Nothing,
+      promotionType = Core.Nothing,
+      purchaseType = Core.Nothing,
+      startTimeMillis = Core.Nothing,
+      userCancellationTimeMillis = Core.Nothing
+    }
+
+instance Core.FromJSON SubscriptionPurchase where
+  parseJSON =
+    Core.withObject
+      "SubscriptionPurchase"
+      ( \o ->
+          SubscriptionPurchase
+            Core.<$> (o Core..:? "acknowledgementState")
+            Core.<*> (o Core..:? "autoRenewing")
+            Core.<*> ( o
+                         Core..:? "autoResumeTimeMillis"
+                         Core.<&> Core.fmap Core.fromAsText
+                     )
+            Core.<*> (o Core..:? "cancelReason")
+            Core.<*> (o Core..:? "cancelSurveyResult")
+            Core.<*> (o Core..:? "countryCode")
+            Core.<*> (o Core..:? "developerPayload")
+            Core.<*> (o Core..:? "emailAddress")
+            Core.<*> (o Core..:? "expiryTimeMillis" Core.<&> Core.fmap Core.fromAsText)
+            Core.<*> (o Core..:? "externalAccountId")
+            Core.<*> (o Core..:? "familyName")
+            Core.<*> (o Core..:? "givenName")
+            Core.<*> (o Core..:? "introductoryPriceInfo")
+            Core.<*> (o Core..:? "kind")
+            Core.<*> (o Core..:? "linkedPurchaseToken")
+            Core.<*> (o Core..:? "obfuscatedExternalAccountId")
+            Core.<*> (o Core..:? "obfuscatedExternalProfileId")
+            Core.<*> (o Core..:? "orderId")
+            Core.<*> (o Core..:? "paymentState")
+            Core.<*> (o Core..:? "priceAmountMicros" Core.<&> Core.fmap Core.fromAsText)
+            Core.<*> (o Core..:? "priceChange")
+            Core.<*> (o Core..:? "priceCurrencyCode")
+            Core.<*> (o Core..:? "profileId")
+            Core.<*> (o Core..:? "profileName")
+            Core.<*> (o Core..:? "promotionCode")
+            Core.<*> (o Core..:? "promotionType")
+            Core.<*> (o Core..:? "purchaseType")
+            Core.<*> (o Core..:? "startTimeMillis" Core.<&> Core.fmap Core.fromAsText)
+            Core.<*> ( o
+                         Core..:? "userCancellationTimeMillis"
+                         Core.<&> Core.fmap Core.fromAsText
+                     )
+      )
+
+instance Core.ToJSON SubscriptionPurchase where
+  toJSON SubscriptionPurchase {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("acknowledgementState" Core..=) Core.<$> acknowledgementState,
+            ("autoRenewing" Core..=) Core.<$> autoRenewing,
+            ("autoResumeTimeMillis" Core..=)
+              Core.. Core.AsText
+              Core.<$> autoResumeTimeMillis,
+            ("cancelReason" Core..=) Core.<$> cancelReason,
+            ("cancelSurveyResult" Core..=) Core.<$> cancelSurveyResult,
+            ("countryCode" Core..=) Core.<$> countryCode,
+            ("developerPayload" Core..=) Core.<$> developerPayload,
+            ("emailAddress" Core..=) Core.<$> emailAddress,
+            ("expiryTimeMillis" Core..=)
+              Core.. Core.AsText
+              Core.<$> expiryTimeMillis,
+            ("externalAccountId" Core..=) Core.<$> externalAccountId,
+            ("familyName" Core..=) Core.<$> familyName,
+            ("givenName" Core..=) Core.<$> givenName,
+            ("introductoryPriceInfo" Core..=) Core.<$> introductoryPriceInfo,
+            ("kind" Core..=) Core.<$> kind,
+            ("linkedPurchaseToken" Core..=) Core.<$> linkedPurchaseToken,
+            ("obfuscatedExternalAccountId" Core..=)
+              Core.<$> obfuscatedExternalAccountId,
+            ("obfuscatedExternalProfileId" Core..=)
+              Core.<$> obfuscatedExternalProfileId,
+            ("orderId" Core..=) Core.<$> orderId,
+            ("paymentState" Core..=) Core.<$> paymentState,
+            ("priceAmountMicros" Core..=)
+              Core.. Core.AsText
+              Core.<$> priceAmountMicros,
+            ("priceChange" Core..=) Core.<$> priceChange,
+            ("priceCurrencyCode" Core..=) Core.<$> priceCurrencyCode,
+            ("profileId" Core..=) Core.<$> profileId,
+            ("profileName" Core..=) Core.<$> profileName,
+            ("promotionCode" Core..=) Core.<$> promotionCode,
+            ("promotionType" Core..=) Core.<$> promotionType,
+            ("purchaseType" Core..=) Core.<$> purchaseType,
+            ("startTimeMillis" Core..=)
+              Core.. Core.AsText
+              Core.<$> startTimeMillis,
+            ("userCancellationTimeMillis" Core..=)
+              Core.. Core.AsText
+              Core.<$> userCancellationTimeMillis
+          ]
+      )
+
+-- | Item-level info for a subscription purchase.
+--
+-- /See:/ 'newSubscriptionPurchaseLineItem' smart constructor.
+data SubscriptionPurchaseLineItem = SubscriptionPurchaseLineItem
+  { -- | The item is auto renewing.
+    autoRenewingPlan :: (Core.Maybe AutoRenewingPlan),
+    -- | Information for deferred item replacement.
+    deferredItemReplacement :: (Core.Maybe DeferredItemReplacement),
+    -- | Time at which the subscription expired or will expire unless the access is extended (ex. renews).
+    expiryTime :: (Core.Maybe Core.DateTime),
+    -- | The offer details for this item.
+    offerDetails :: (Core.Maybe OfferDetails),
+    -- | The item is prepaid.
+    prepaidPlan :: (Core.Maybe PrepaidPlan),
+    -- | The purchased product ID (for example, \'monthly001\').
+    productId :: (Core.Maybe Core.Text),
+    -- | Promotion details about this item. Only set if a promotion was applied during signup.
+    signupPromotion :: (Core.Maybe SignupPromotion)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'SubscriptionPurchaseLineItem' with the minimum fields required to make a request.
+newSubscriptionPurchaseLineItem ::
+  SubscriptionPurchaseLineItem
+newSubscriptionPurchaseLineItem =
+  SubscriptionPurchaseLineItem
+    { autoRenewingPlan = Core.Nothing,
+      deferredItemReplacement = Core.Nothing,
+      expiryTime = Core.Nothing,
+      offerDetails = Core.Nothing,
+      prepaidPlan = Core.Nothing,
+      productId = Core.Nothing,
+      signupPromotion = Core.Nothing
+    }
+
+instance Core.FromJSON SubscriptionPurchaseLineItem where
+  parseJSON =
+    Core.withObject
+      "SubscriptionPurchaseLineItem"
+      ( \o ->
+          SubscriptionPurchaseLineItem
+            Core.<$> (o Core..:? "autoRenewingPlan")
+            Core.<*> (o Core..:? "deferredItemReplacement")
+            Core.<*> (o Core..:? "expiryTime")
+            Core.<*> (o Core..:? "offerDetails")
+            Core.<*> (o Core..:? "prepaidPlan")
+            Core.<*> (o Core..:? "productId")
+            Core.<*> (o Core..:? "signupPromotion")
+      )
+
+instance Core.ToJSON SubscriptionPurchaseLineItem where
+  toJSON SubscriptionPurchaseLineItem {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("autoRenewingPlan" Core..=) Core.<$> autoRenewingPlan,
+            ("deferredItemReplacement" Core..=)
+              Core.<$> deferredItemReplacement,
+            ("expiryTime" Core..=) Core.<$> expiryTime,
+            ("offerDetails" Core..=) Core.<$> offerDetails,
+            ("prepaidPlan" Core..=) Core.<$> prepaidPlan,
+            ("productId" Core..=) Core.<$> productId,
+            ("signupPromotion" Core..=) Core.<$> signupPromotion
+          ]
+      )
+
+-- | Indicates the status of a user\'s subscription purchase.
+--
+-- /See:/ 'newSubscriptionPurchaseV2' smart constructor.
+data SubscriptionPurchaseV2 = SubscriptionPurchaseV2
+  { -- | The acknowledgement state of the subscription.
+    acknowledgementState :: (Core.Maybe SubscriptionPurchaseV2_AcknowledgementState),
+    -- | Additional context around canceled subscriptions. Only present if the subscription currently has subscription/state SUBSCRIPTION/STATE/CANCELED or SUBSCRIPTION/STATE_EXPIRED.
+    canceledStateContext :: (Core.Maybe CanceledStateContext),
+    -- | User account identifier in the third-party service.
+    externalAccountIdentifiers :: (Core.Maybe ExternalAccountIdentifiers),
+    -- | This kind represents a SubscriptionPurchaseV2 object in the androidpublisher service.
+    kind :: (Core.Maybe Core.Text),
+    -- | The order id of the latest order associated with the purchase of the subscription. For autoRenewing subscription, this is the order id of signup order if it is not renewed yet, or the last recurring order id (success, pending, or declined order). For prepaid subscription, this is the order id associated with the queried purchase token.
+    latestOrderId :: (Core.Maybe Core.Text),
+    -- | Item-level info for a subscription purchase. The items in the same purchase should be either all with AutoRenewingPlan or all with PrepaidPlan.
+    lineItems :: (Core.Maybe [SubscriptionPurchaseLineItem]),
+    -- | The purchase token of the old subscription if this subscription is one of the following: * Re-signup of a canceled but non-lapsed subscription * Upgrade\/downgrade from a previous subscription. * Convert from prepaid to auto renewing subscription. * Convert from an auto renewing subscription to prepaid. * Topup a prepaid subscription.
+    linkedPurchaseToken :: (Core.Maybe Core.Text),
+    -- | Additional context around paused subscriptions. Only present if the subscription currently has subscription/state SUBSCRIPTION/STATE_PAUSED.
+    pausedStateContext :: (Core.Maybe PausedStateContext),
+    -- | ISO 3166-1 alpha-2 billing country\/region code of the user at the time the subscription was granted.
+    regionCode :: (Core.Maybe Core.Text),
+    -- | Time at which the subscription was granted. Not set for pending subscriptions (subscription was created but awaiting payment during signup).
+    startTime :: (Core.Maybe Core.DateTime),
+    -- | User profile associated with purchases made with \'Subscribe with Google\'.
+    subscribeWithGoogleInfo :: (Core.Maybe SubscribeWithGoogleInfo),
+    -- | The current state of the subscription.
+    subscriptionState :: (Core.Maybe SubscriptionPurchaseV2_SubscriptionState),
+    -- | Only present if this subscription purchase is a test purchase.
+    testPurchase :: (Core.Maybe TestPurchase)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'SubscriptionPurchaseV2' with the minimum fields required to make a request.
+newSubscriptionPurchaseV2 ::
+  SubscriptionPurchaseV2
+newSubscriptionPurchaseV2 =
+  SubscriptionPurchaseV2
+    { acknowledgementState = Core.Nothing,
+      canceledStateContext = Core.Nothing,
+      externalAccountIdentifiers = Core.Nothing,
+      kind = Core.Nothing,
+      latestOrderId = Core.Nothing,
+      lineItems = Core.Nothing,
+      linkedPurchaseToken = Core.Nothing,
+      pausedStateContext = Core.Nothing,
+      regionCode = Core.Nothing,
+      startTime = Core.Nothing,
+      subscribeWithGoogleInfo = Core.Nothing,
+      subscriptionState = Core.Nothing,
+      testPurchase = Core.Nothing
+    }
+
+instance Core.FromJSON SubscriptionPurchaseV2 where
+  parseJSON =
+    Core.withObject
+      "SubscriptionPurchaseV2"
+      ( \o ->
+          SubscriptionPurchaseV2
+            Core.<$> (o Core..:? "acknowledgementState")
+            Core.<*> (o Core..:? "canceledStateContext")
+            Core.<*> (o Core..:? "externalAccountIdentifiers")
+            Core.<*> (o Core..:? "kind")
+            Core.<*> (o Core..:? "latestOrderId")
+            Core.<*> (o Core..:? "lineItems")
+            Core.<*> (o Core..:? "linkedPurchaseToken")
+            Core.<*> (o Core..:? "pausedStateContext")
+            Core.<*> (o Core..:? "regionCode")
+            Core.<*> (o Core..:? "startTime")
+            Core.<*> (o Core..:? "subscribeWithGoogleInfo")
+            Core.<*> (o Core..:? "subscriptionState")
+            Core.<*> (o Core..:? "testPurchase")
+      )
+
+instance Core.ToJSON SubscriptionPurchaseV2 where
+  toJSON SubscriptionPurchaseV2 {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("acknowledgementState" Core..=) Core.<$> acknowledgementState,
+            ("canceledStateContext" Core..=) Core.<$> canceledStateContext,
+            ("externalAccountIdentifiers" Core..=)
+              Core.<$> externalAccountIdentifiers,
+            ("kind" Core..=) Core.<$> kind,
+            ("latestOrderId" Core..=) Core.<$> latestOrderId,
+            ("lineItems" Core..=) Core.<$> lineItems,
+            ("linkedPurchaseToken" Core..=) Core.<$> linkedPurchaseToken,
+            ("pausedStateContext" Core..=) Core.<$> pausedStateContext,
+            ("regionCode" Core..=) Core.<$> regionCode,
+            ("startTime" Core..=) Core.<$> startTime,
+            ("subscribeWithGoogleInfo" Core..=)
+              Core.<$> subscribeWithGoogleInfo,
+            ("subscriptionState" Core..=) Core.<$> subscriptionState,
+            ("testPurchase" Core..=) Core.<$> testPurchase
+          ]
+      )
+
+-- | Request for the purchases.subscriptions.acknowledge API.
+--
+-- /See:/ 'newSubscriptionPurchasesAcknowledgeRequest' smart constructor.
+newtype SubscriptionPurchasesAcknowledgeRequest = SubscriptionPurchasesAcknowledgeRequest
+  { -- | Payload to attach to the purchase.
+    developerPayload :: (Core.Maybe Core.Text)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'SubscriptionPurchasesAcknowledgeRequest' with the minimum fields required to make a request.
+newSubscriptionPurchasesAcknowledgeRequest ::
+  SubscriptionPurchasesAcknowledgeRequest
+newSubscriptionPurchasesAcknowledgeRequest =
+  SubscriptionPurchasesAcknowledgeRequest
+    { developerPayload =
+        Core.Nothing
+    }
+
+instance Core.FromJSON SubscriptionPurchasesAcknowledgeRequest where
+  parseJSON =
+    Core.withObject
+      "SubscriptionPurchasesAcknowledgeRequest"
+      ( \o ->
+          SubscriptionPurchasesAcknowledgeRequest
+            Core.<$> (o Core..:? "developerPayload")
+      )
+
+instance Core.ToJSON SubscriptionPurchasesAcknowledgeRequest where
+  toJSON SubscriptionPurchasesAcknowledgeRequest {..} =
+    Core.object
+      ( Core.catMaybes
+          [("developerPayload" Core..=) Core.<$> developerPayload]
+      )
+
+-- | Request for the purchases.subscriptions.defer API.
+--
+-- /See:/ 'newSubscriptionPurchasesDeferRequest' smart constructor.
+newtype SubscriptionPurchasesDeferRequest = SubscriptionPurchasesDeferRequest
+  { -- | The information about the new desired expiry time for the subscription.
+    deferralInfo :: (Core.Maybe SubscriptionDeferralInfo)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'SubscriptionPurchasesDeferRequest' with the minimum fields required to make a request.
+newSubscriptionPurchasesDeferRequest ::
+  SubscriptionPurchasesDeferRequest
+newSubscriptionPurchasesDeferRequest =
+  SubscriptionPurchasesDeferRequest {deferralInfo = Core.Nothing}
+
+instance Core.FromJSON SubscriptionPurchasesDeferRequest where
+  parseJSON =
+    Core.withObject
+      "SubscriptionPurchasesDeferRequest"
+      ( \o ->
+          SubscriptionPurchasesDeferRequest
+            Core.<$> (o Core..:? "deferralInfo")
+      )
+
+instance Core.ToJSON SubscriptionPurchasesDeferRequest where
+  toJSON SubscriptionPurchasesDeferRequest {..} =
+    Core.object
+      (Core.catMaybes [("deferralInfo" Core..=) Core.<$> deferralInfo])
+
+-- | Response for the purchases.subscriptions.defer API.
+--
+-- /See:/ 'newSubscriptionPurchasesDeferResponse' smart constructor.
+newtype SubscriptionPurchasesDeferResponse = SubscriptionPurchasesDeferResponse
+  { -- | The new expiry time for the subscription in milliseconds since the Epoch.
+    newExpiryTimeMillis' :: (Core.Maybe Core.Int64)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'SubscriptionPurchasesDeferResponse' with the minimum fields required to make a request.
+newSubscriptionPurchasesDeferResponse ::
+  SubscriptionPurchasesDeferResponse
+newSubscriptionPurchasesDeferResponse =
+  SubscriptionPurchasesDeferResponse
+    { newExpiryTimeMillis' =
+        Core.Nothing
+    }
+
+instance Core.FromJSON SubscriptionPurchasesDeferResponse where
+  parseJSON =
+    Core.withObject
+      "SubscriptionPurchasesDeferResponse"
+      ( \o ->
+          SubscriptionPurchasesDeferResponse
+            Core.<$> ( o
+                         Core..:? "newExpiryTimeMillis"
+                         Core.<&> Core.fmap Core.fromAsText
+                     )
+      )
+
+instance Core.ToJSON SubscriptionPurchasesDeferResponse where
+  toJSON SubscriptionPurchasesDeferResponse {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("newExpiryTimeMillis" Core..=)
+              Core.. Core.AsText
+              Core.<$> newExpiryTimeMillis'
+          ]
+      )
+
+-- | Details about taxation, Google Play policy and legal compliance for subscription products.
+--
+-- /See:/ 'newSubscriptionTaxAndComplianceSettings' smart constructor.
+data SubscriptionTaxAndComplianceSettings = SubscriptionTaxAndComplianceSettings
+  { -- | Digital content or service classification for products distributed to users in the European Economic Area (EEA). The withdrawal regime under EEA consumer laws depends on this classification. Refer to the <https://support.google.com/googleplay/android-developer/answer/10463498 Help Center article> for more information.
+    eeaWithdrawalRightType ::
+      ( Core.Maybe
+          SubscriptionTaxAndComplianceSettings_EeaWithdrawalRightType
+      ),
+    -- | Whether this subscription is declared as a product representing a tokenized digital asset.
+    isTokenizedDigitalAsset :: (Core.Maybe Core.Bool),
+    -- | A mapping from region code to tax rate details. The keys are region codes as defined by Unicode\'s \"CLDR\".
+    taxRateInfoByRegionCode ::
+      ( Core.Maybe
+          SubscriptionTaxAndComplianceSettings_TaxRateInfoByRegionCode
+      )
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'SubscriptionTaxAndComplianceSettings' with the minimum fields required to make a request.
+newSubscriptionTaxAndComplianceSettings ::
+  SubscriptionTaxAndComplianceSettings
+newSubscriptionTaxAndComplianceSettings =
+  SubscriptionTaxAndComplianceSettings
+    { eeaWithdrawalRightType =
+        Core.Nothing,
+      isTokenizedDigitalAsset = Core.Nothing,
+      taxRateInfoByRegionCode = Core.Nothing
+    }
+
+instance Core.FromJSON SubscriptionTaxAndComplianceSettings where
+  parseJSON =
+    Core.withObject
+      "SubscriptionTaxAndComplianceSettings"
+      ( \o ->
+          SubscriptionTaxAndComplianceSettings
+            Core.<$> (o Core..:? "eeaWithdrawalRightType")
+            Core.<*> (o Core..:? "isTokenizedDigitalAsset")
+            Core.<*> (o Core..:? "taxRateInfoByRegionCode")
+      )
+
+instance Core.ToJSON SubscriptionTaxAndComplianceSettings where
+  toJSON SubscriptionTaxAndComplianceSettings {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("eeaWithdrawalRightType" Core..=)
+              Core.<$> eeaWithdrawalRightType,
+            ("isTokenizedDigitalAsset" Core..=)
+              Core.<$> isTokenizedDigitalAsset,
+            ("taxRateInfoByRegionCode" Core..=)
+              Core.<$> taxRateInfoByRegionCode
+          ]
+      )
+
+-- | A mapping from region code to tax rate details. The keys are region codes as defined by Unicode\'s \"CLDR\".
+--
+-- /See:/ 'newSubscriptionTaxAndComplianceSettings_TaxRateInfoByRegionCode' smart constructor.
+newtype SubscriptionTaxAndComplianceSettings_TaxRateInfoByRegionCode = SubscriptionTaxAndComplianceSettings_TaxRateInfoByRegionCode
+  { additional :: (Core.HashMap Core.Text RegionalTaxRateInfo)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'SubscriptionTaxAndComplianceSettings_TaxRateInfoByRegionCode' with the minimum fields required to make a request.
+newSubscriptionTaxAndComplianceSettings_TaxRateInfoByRegionCode ::
+  -- |  See 'additional'.
+  Core.HashMap
+    Core.Text
+    RegionalTaxRateInfo ->
+  SubscriptionTaxAndComplianceSettings_TaxRateInfoByRegionCode
+newSubscriptionTaxAndComplianceSettings_TaxRateInfoByRegionCode
+  additional =
+    SubscriptionTaxAndComplianceSettings_TaxRateInfoByRegionCode
+      { additional =
+          additional
+      }
+
+instance
+  Core.FromJSON
+    SubscriptionTaxAndComplianceSettings_TaxRateInfoByRegionCode
+  where
+  parseJSON =
+    Core.withObject
+      "SubscriptionTaxAndComplianceSettings_TaxRateInfoByRegionCode"
+      ( \o ->
+          SubscriptionTaxAndComplianceSettings_TaxRateInfoByRegionCode
+            Core.<$> (Core.parseJSONObject o)
+      )
+
+instance
+  Core.ToJSON
+    SubscriptionTaxAndComplianceSettings_TaxRateInfoByRegionCode
+  where
+  toJSON
+    SubscriptionTaxAndComplianceSettings_TaxRateInfoByRegionCode {..} =
+      Core.toJSON additional
+
+-- | Options for system APKs.
+--
+-- /See:/ 'newSystemApkOptions' smart constructor.
+data SystemApkOptions = SystemApkOptions
+  { -- | Whether to use the rotated key for signing the system APK.
+    rotated :: (Core.Maybe Core.Bool),
+    -- | Whether system APK was generated with uncompressed dex files.
+    uncompressedDexFiles :: (Core.Maybe Core.Bool),
+    -- | Whether system APK was generated with uncompressed native libraries.
+    uncompressedNativeLibraries :: (Core.Maybe Core.Bool)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'SystemApkOptions' with the minimum fields required to make a request.
+newSystemApkOptions ::
+  SystemApkOptions
+newSystemApkOptions =
+  SystemApkOptions
+    { rotated = Core.Nothing,
+      uncompressedDexFiles = Core.Nothing,
+      uncompressedNativeLibraries = Core.Nothing
+    }
+
+instance Core.FromJSON SystemApkOptions where
+  parseJSON =
+    Core.withObject
+      "SystemApkOptions"
+      ( \o ->
+          SystemApkOptions
+            Core.<$> (o Core..:? "rotated")
+            Core.<*> (o Core..:? "uncompressedDexFiles")
+            Core.<*> (o Core..:? "uncompressedNativeLibraries")
+      )
+
+instance Core.ToJSON SystemApkOptions where
+  toJSON SystemApkOptions {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("rotated" Core..=) Core.<$> rotated,
+            ("uncompressedDexFiles" Core..=) Core.<$> uncompressedDexFiles,
+            ("uncompressedNativeLibraries" Core..=)
+              Core.<$> uncompressedNativeLibraries
+          ]
+      )
+
+-- | Response to list previously created system APK variants.
+--
+-- /See:/ 'newSystemApksListResponse' smart constructor.
+newtype SystemApksListResponse = SystemApksListResponse
+  { -- | All system APK variants created.
+    variants :: (Core.Maybe [Variant])
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'SystemApksListResponse' with the minimum fields required to make a request.
+newSystemApksListResponse ::
+  SystemApksListResponse
+newSystemApksListResponse =
+  SystemApksListResponse {variants = Core.Nothing}
+
+instance Core.FromJSON SystemApksListResponse where
+  parseJSON =
+    Core.withObject
+      "SystemApksListResponse"
+      (\o -> SystemApksListResponse Core.<$> (o Core..:? "variants"))
+
+instance Core.ToJSON SystemApksListResponse where
+  toJSON SystemApksListResponse {..} =
+    Core.object
+      (Core.catMaybes [("variants" Core..=) Core.<$> variants])
+
+-- | Representation of a system feature.
+--
+-- /See:/ 'newSystemFeature' smart constructor.
+newtype SystemFeature = SystemFeature
+  { -- | The name of the feature.
+    name :: (Core.Maybe Core.Text)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'SystemFeature' with the minimum fields required to make a request.
+newSystemFeature ::
+  SystemFeature
+newSystemFeature = SystemFeature {name = Core.Nothing}
+
+instance Core.FromJSON SystemFeature where
+  parseJSON =
+    Core.withObject
+      "SystemFeature"
+      (\o -> SystemFeature Core.<$> (o Core..:? "name"))
+
+instance Core.ToJSON SystemFeature where
+  toJSON SystemFeature {..} =
+    Core.object (Core.catMaybes [("name" Core..=) Core.<$> name])
+
+-- | Information specific to cancellations initiated by Google system.
+--
+-- /See:/ 'newSystemInitiatedCancellation' smart constructor.
+data SystemInitiatedCancellation = SystemInitiatedCancellation
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'SystemInitiatedCancellation' with the minimum fields required to make a request.
+newSystemInitiatedCancellation ::
+  SystemInitiatedCancellation
+newSystemInitiatedCancellation = SystemInitiatedCancellation
+
+instance Core.FromJSON SystemInitiatedCancellation where
+  parseJSON =
+    Core.withObject
+      "SystemInitiatedCancellation"
+      (\o -> Core.pure SystemInitiatedCancellation)
+
+instance Core.ToJSON SystemInitiatedCancellation where
+  toJSON = Core.const Core.emptyObject
+
+-- | Representation of a System-on-Chip (SoC) of an Android device. Can be used to target S+ devices.
+--
+-- /See:/ 'newSystemOnChip' smart constructor.
+data SystemOnChip = SystemOnChip
+  { -- | Required. The designer of the SoC, eg. \"Google\" Value of build property \"ro.soc.manufacturer\" https:\/\/developer.android.com\/reference\/android\/os\/Build#SOC_MANUFACTURER Required.
+    manufacturer :: (Core.Maybe Core.Text),
+    -- | Required. The model of the SoC, eg. \"Tensor\" Value of build property \"ro.soc.model\" https:\/\/developer.android.com\/reference\/android\/os\/Build#SOC_MODEL Required.
+    model :: (Core.Maybe Core.Text)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'SystemOnChip' with the minimum fields required to make a request.
+newSystemOnChip ::
+  SystemOnChip
+newSystemOnChip =
+  SystemOnChip {manufacturer = Core.Nothing, model = Core.Nothing}
+
+instance Core.FromJSON SystemOnChip where
+  parseJSON =
+    Core.withObject
+      "SystemOnChip"
+      ( \o ->
+          SystemOnChip
+            Core.<$> (o Core..:? "manufacturer")
+            Core.<*> (o Core..:? "model")
+      )
+
+instance Core.ToJSON SystemOnChip where
+  toJSON SystemOnChip {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("manufacturer" Core..=) Core.<$> manufacturer,
+            ("model" Core..=) Core.<$> model
+          ]
+      )
+
+-- | Targeting details for a recovery action such as regions, android sdk levels, app versions etc.
+--
+-- /See:/ 'newTargeting' smart constructor.
+data Targeting = Targeting
+  { -- | All users are targeted.
+    allUsers :: (Core.Maybe AllUsers),
+    -- | Targeting is based on android api levels of devices.
+    androidSdks :: (Core.Maybe AndroidSdks),
+    -- | Targeting is based on the user account region.
+    regions :: (Core.Maybe Regions),
+    -- | Target version codes as a list.
+    versionList :: (Core.Maybe AppVersionList),
+    -- | Target version codes as a range.
+    versionRange :: (Core.Maybe AppVersionRange)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'Targeting' with the minimum fields required to make a request.
+newTargeting ::
+  Targeting
+newTargeting =
+  Targeting
+    { allUsers = Core.Nothing,
+      androidSdks = Core.Nothing,
+      regions = Core.Nothing,
+      versionList = Core.Nothing,
+      versionRange = Core.Nothing
+    }
+
+instance Core.FromJSON Targeting where
+  parseJSON =
+    Core.withObject
+      "Targeting"
+      ( \o ->
+          Targeting
+            Core.<$> (o Core..:? "allUsers")
+            Core.<*> (o Core..:? "androidSdks")
+            Core.<*> (o Core..:? "regions")
+            Core.<*> (o Core..:? "versionList")
+            Core.<*> (o Core..:? "versionRange")
+      )
+
+instance Core.ToJSON Targeting where
+  toJSON Targeting {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("allUsers" Core..=) Core.<$> allUsers,
+            ("androidSdks" Core..=) Core.<$> androidSdks,
+            ("regions" Core..=) Core.<$> regions,
+            ("versionList" Core..=) Core.<$> versionList,
+            ("versionRange" Core..=) Core.<$> versionRange
+          ]
+      )
+
+-- | Targeting information about the generated apks.
+--
+-- /See:/ 'newTargetingInfo' smart constructor.
+data TargetingInfo = TargetingInfo
+  { -- | List of created asset slices.
+    assetSliceSet :: (Core.Maybe [AssetSliceSet]),
+    -- | The package name of this app.
+    packageName :: (Core.Maybe Core.Text),
+    -- | List of the created variants.
+    variant :: (Core.Maybe [SplitApkVariant])
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'TargetingInfo' with the minimum fields required to make a request.
+newTargetingInfo ::
+  TargetingInfo
+newTargetingInfo =
+  TargetingInfo
+    { assetSliceSet = Core.Nothing,
+      packageName = Core.Nothing,
+      variant = Core.Nothing
+    }
+
+instance Core.FromJSON TargetingInfo where
+  parseJSON =
+    Core.withObject
+      "TargetingInfo"
+      ( \o ->
+          TargetingInfo
+            Core.<$> (o Core..:? "assetSliceSet")
+            Core.<*> (o Core..:? "packageName")
+            Core.<*> (o Core..:? "variant")
+      )
+
+instance Core.ToJSON TargetingInfo where
+  toJSON TargetingInfo {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("assetSliceSet" Core..=) Core.<$> assetSliceSet,
+            ("packageName" Core..=) Core.<$> packageName,
+            ("variant" Core..=) Core.<$> variant
+          ]
+      )
+
+-- | Defines the scope of subscriptions which a targeting rule can match to target offers to users based on past or current entitlement.
+--
+-- /See:/ 'newTargetingRuleScope' smart constructor.
+data TargetingRuleScope = TargetingRuleScope
+  { -- | The scope of the current targeting rule is any subscription in the parent app.
+    anySubscriptionInApp :: (Core.Maybe TargetingRuleScopeAnySubscriptionInApp),
+    -- | The scope of the current targeting rule is the subscription with the specified subscription ID. Must be a subscription within the same parent app.
+    specificSubscriptionInApp :: (Core.Maybe Core.Text),
+    -- | The scope of the current targeting rule is the subscription in which this offer is defined.
+    thisSubscription :: (Core.Maybe TargetingRuleScopeThisSubscription)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'TargetingRuleScope' with the minimum fields required to make a request.
+newTargetingRuleScope ::
+  TargetingRuleScope
+newTargetingRuleScope =
+  TargetingRuleScope
+    { anySubscriptionInApp = Core.Nothing,
+      specificSubscriptionInApp = Core.Nothing,
+      thisSubscription = Core.Nothing
+    }
+
+instance Core.FromJSON TargetingRuleScope where
+  parseJSON =
+    Core.withObject
+      "TargetingRuleScope"
+      ( \o ->
+          TargetingRuleScope
+            Core.<$> (o Core..:? "anySubscriptionInApp")
+            Core.<*> (o Core..:? "specificSubscriptionInApp")
+            Core.<*> (o Core..:? "thisSubscription")
+      )
+
+instance Core.ToJSON TargetingRuleScope where
+  toJSON TargetingRuleScope {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("anySubscriptionInApp" Core..=) Core.<$> anySubscriptionInApp,
+            ("specificSubscriptionInApp" Core..=)
+              Core.<$> specificSubscriptionInApp,
+            ("thisSubscription" Core..=) Core.<$> thisSubscription
+          ]
+      )
+
+-- | Represents the targeting rule scope corresponding to any subscription in the parent app.
+--
+-- /See:/ 'newTargetingRuleScopeAnySubscriptionInApp' smart constructor.
+data TargetingRuleScopeAnySubscriptionInApp = TargetingRuleScopeAnySubscriptionInApp
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'TargetingRuleScopeAnySubscriptionInApp' with the minimum fields required to make a request.
+newTargetingRuleScopeAnySubscriptionInApp ::
+  TargetingRuleScopeAnySubscriptionInApp
+newTargetingRuleScopeAnySubscriptionInApp =
+  TargetingRuleScopeAnySubscriptionInApp
+
+instance Core.FromJSON TargetingRuleScopeAnySubscriptionInApp where
+  parseJSON =
+    Core.withObject
+      "TargetingRuleScopeAnySubscriptionInApp"
+      (\o -> Core.pure TargetingRuleScopeAnySubscriptionInApp)
+
+instance Core.ToJSON TargetingRuleScopeAnySubscriptionInApp where
+  toJSON = Core.const Core.emptyObject
+
+-- | Represents the targeting rule scope corresponding to the subscriptions in which this offer is defined.
+--
+-- /See:/ 'newTargetingRuleScopeThisSubscription' smart constructor.
+data TargetingRuleScopeThisSubscription = TargetingRuleScopeThisSubscription
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'TargetingRuleScopeThisSubscription' with the minimum fields required to make a request.
+newTargetingRuleScopeThisSubscription ::
+  TargetingRuleScopeThisSubscription
+newTargetingRuleScopeThisSubscription =
+  TargetingRuleScopeThisSubscription
+
+instance Core.FromJSON TargetingRuleScopeThisSubscription where
+  parseJSON =
+    Core.withObject
+      "TargetingRuleScopeThisSubscription"
+      (\o -> Core.pure TargetingRuleScopeThisSubscription)
+
+instance Core.ToJSON TargetingRuleScopeThisSubscription where
+  toJSON = Core.const Core.emptyObject
+
+-- | Update type for targeting. Note it is always a subset Targeting.
+--
+-- /See:/ 'newTargetingUpdate' smart constructor.
+data TargetingUpdate = TargetingUpdate
+  { -- | All users are targeted.
+    allUsers :: (Core.Maybe AllUsers),
+    -- | Additional android sdk levels are targeted by the recovery action.
+    androidSdks :: (Core.Maybe AndroidSdks),
+    -- | Additional regions are targeted by the recovery action.
+    regions :: (Core.Maybe Regions)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'TargetingUpdate' with the minimum fields required to make a request.
+newTargetingUpdate ::
+  TargetingUpdate
+newTargetingUpdate =
+  TargetingUpdate
+    { allUsers = Core.Nothing,
+      androidSdks = Core.Nothing,
+      regions = Core.Nothing
+    }
+
+instance Core.FromJSON TargetingUpdate where
+  parseJSON =
+    Core.withObject
+      "TargetingUpdate"
+      ( \o ->
+          TargetingUpdate
+            Core.<$> (o Core..:? "allUsers")
+            Core.<*> (o Core..:? "androidSdks")
+            Core.<*> (o Core..:? "regions")
+      )
+
+instance Core.ToJSON TargetingUpdate where
+  toJSON TargetingUpdate {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("allUsers" Core..=) Core.<$> allUsers,
+            ("androidSdks" Core..=) Core.<$> androidSdks,
+            ("regions" Core..=) Core.<$> regions
+          ]
+      )
+
+-- | Whether this subscription purchase is a test purchase.
+--
+-- /See:/ 'newTestPurchase' smart constructor.
+data TestPurchase = TestPurchase
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'TestPurchase' with the minimum fields required to make a request.
+newTestPurchase ::
+  TestPurchase
+newTestPurchase = TestPurchase
+
+instance Core.FromJSON TestPurchase where
+  parseJSON =
+    Core.withObject "TestPurchase" (\o -> Core.pure TestPurchase)
+
+instance Core.ToJSON TestPurchase where
+  toJSON = Core.const Core.emptyObject
+
+-- | The testers of an app. The resource for TestersService. Note: while it is possible in the Play Console UI to add testers via email lists, email lists are not supported by this resource.
+--
+-- /See:/ 'newTesters' smart constructor.
+newtype Testers = Testers
+  { -- | All testing Google Groups, as email addresses.
+    googleGroups :: (Core.Maybe [Core.Text])
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'Testers' with the minimum fields required to make a request.
+newTesters ::
+  Testers
+newTesters = Testers {googleGroups = Core.Nothing}
+
+instance Core.FromJSON Testers where
+  parseJSON =
+    Core.withObject
+      "Testers"
+      (\o -> Testers Core.<$> (o Core..:? "googleGroups"))
+
+instance Core.ToJSON Testers where
+  toJSON Testers {..} =
+    Core.object
+      (Core.catMaybes [("googleGroups" Core..=) Core.<$> googleGroups])
+
+-- | Represents texture compression format.
+--
+-- /See:/ 'newTextureCompressionFormat' smart constructor.
+newtype TextureCompressionFormat = TextureCompressionFormat
+  { -- | Alias for texture compression format.
+    alias :: (Core.Maybe TextureCompressionFormat_Alias)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'TextureCompressionFormat' with the minimum fields required to make a request.
+newTextureCompressionFormat ::
+  TextureCompressionFormat
+newTextureCompressionFormat =
+  TextureCompressionFormat {alias = Core.Nothing}
+
+instance Core.FromJSON TextureCompressionFormat where
+  parseJSON =
+    Core.withObject
+      "TextureCompressionFormat"
+      (\o -> TextureCompressionFormat Core.<$> (o Core..:? "alias"))
+
+instance Core.ToJSON TextureCompressionFormat where
+  toJSON TextureCompressionFormat {..} =
+    Core.object (Core.catMaybes [("alias" Core..=) Core.<$> alias])
+
+-- | Targeting by a texture compression format.
+--
+-- /See:/ 'newTextureCompressionFormatTargeting' smart constructor.
+data TextureCompressionFormatTargeting = TextureCompressionFormatTargeting
+  { -- | List of alternative TCFs (TCFs targeted by the sibling splits).
+    alternatives :: (Core.Maybe [TextureCompressionFormat]),
+    -- | The list of targeted TCFs. Should not be empty.
+    value :: (Core.Maybe [TextureCompressionFormat])
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'TextureCompressionFormatTargeting' with the minimum fields required to make a request.
+newTextureCompressionFormatTargeting ::
+  TextureCompressionFormatTargeting
+newTextureCompressionFormatTargeting =
+  TextureCompressionFormatTargeting
+    { alternatives = Core.Nothing,
+      value = Core.Nothing
+    }
+
+instance Core.FromJSON TextureCompressionFormatTargeting where
+  parseJSON =
+    Core.withObject
+      "TextureCompressionFormatTargeting"
+      ( \o ->
+          TextureCompressionFormatTargeting
+            Core.<$> (o Core..:? "alternatives")
+            Core.<*> (o Core..:? "value")
+      )
+
+instance Core.ToJSON TextureCompressionFormatTargeting where
+  toJSON TextureCompressionFormatTargeting {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("alternatives" Core..=) Core.<$> alternatives,
+            ("value" Core..=) Core.<$> value
+          ]
+      )
+
+-- | A Timestamp represents a point in time independent of any time zone or local calendar, encoded as a count of seconds and fractions of seconds at nanosecond resolution. The count is relative to an epoch at UTC midnight on January 1, 1970.
+--
+-- /See:/ 'newTimestamp' smart constructor.
+data Timestamp = Timestamp
+  { -- | Non-negative fractions of a second at nanosecond resolution. Must be from 0 to 999,999,999 inclusive.
+    nanos :: (Core.Maybe Core.Int32),
+    -- | Represents seconds of UTC time since Unix epoch.
+    seconds :: (Core.Maybe Core.Int64)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'Timestamp' with the minimum fields required to make a request.
+newTimestamp ::
+  Timestamp
+newTimestamp =
+  Timestamp {nanos = Core.Nothing, seconds = Core.Nothing}
+
+instance Core.FromJSON Timestamp where
+  parseJSON =
+    Core.withObject
+      "Timestamp"
+      ( \o ->
+          Timestamp
+            Core.<$> (o Core..:? "nanos")
+            Core.<*> (o Core..:? "seconds" Core.<&> Core.fmap Core.fromAsText)
+      )
+
+instance Core.ToJSON Timestamp where
+  toJSON Timestamp {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("nanos" Core..=) Core.<$> nanos,
+            ("seconds" Core..=) Core.. Core.AsText Core.<$> seconds
+          ]
+      )
+
+-- | Pagination information returned by a List operation when token pagination is enabled. List operations that supports paging return only one \"page\" of results. This protocol buffer message describes the page that has been returned. When using token pagination, clients should use the next\/previous token to get another page of the result. The presence or absence of next\/previous token indicates whether a next\/previous page is available and provides a mean of accessing this page. ListRequest.page/token should be set to either next/page/token or previous/page_token to access another page.
+--
+-- /See:/ 'newTokenPagination' smart constructor.
+data TokenPagination = TokenPagination
+  { -- | Tokens to pass to the standard list field \'page/token\'. Whenever available, tokens are preferred over manipulating start/index.
+    nextPageToken :: (Core.Maybe Core.Text),
+    previousPageToken :: (Core.Maybe Core.Text)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'TokenPagination' with the minimum fields required to make a request.
+newTokenPagination ::
+  TokenPagination
+newTokenPagination =
+  TokenPagination
+    { nextPageToken = Core.Nothing,
+      previousPageToken = Core.Nothing
+    }
+
+instance Core.FromJSON TokenPagination where
+  parseJSON =
+    Core.withObject
+      "TokenPagination"
+      ( \o ->
+          TokenPagination
+            Core.<$> (o Core..:? "nextPageToken")
+            Core.<*> (o Core..:? "previousPageToken")
+      )
+
+instance Core.ToJSON TokenPagination where
+  toJSON TokenPagination {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("nextPageToken" Core..=) Core.<$> nextPageToken,
+            ("previousPageToken" Core..=) Core.<$> previousPageToken
+          ]
+      )
+
+-- | A track configuration. The resource for TracksService.
+--
+-- /See:/ 'newTrack' smart constructor.
+data Track = Track
+  { -- | In a read request, represents all active releases in the track. In an update request, represents desired changes.
+    releases :: (Core.Maybe [TrackRelease]),
+    -- | Identifier of the track. Form factor tracks have a special prefix as an identifier, for example @wear:production@, @automotive:production@. <https://developers.google.com/android-publisher/tracks#ff-track-name More on track name>
+    track :: (Core.Maybe Core.Text)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'Track' with the minimum fields required to make a request.
+newTrack ::
+  Track
+newTrack = Track {releases = Core.Nothing, track = Core.Nothing}
+
+instance Core.FromJSON Track where
+  parseJSON =
+    Core.withObject
+      "Track"
+      ( \o ->
+          Track
+            Core.<$> (o Core..:? "releases")
+            Core.<*> (o Core..:? "track")
+      )
+
+instance Core.ToJSON Track where
+  toJSON Track {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("releases" Core..=) Core.<$> releases,
+            ("track" Core..=) Core.<$> track
+          ]
+      )
+
+-- | Configurations of the new track.
+--
+-- /See:/ 'newTrackConfig' smart constructor.
+data TrackConfig = TrackConfig
+  { -- | Required. Form factor of the new track. Defaults to the default track.
+    formFactor :: (Core.Maybe TrackConfig_FormFactor),
+    -- | Required. Identifier of the new track. For default tracks, this field consists of the track alias only. Form factor tracks have a special prefix as an identifier, for example @wear:production@, @automotive:production@. This prefix must match the value of the @form_factor@ field, if it is not a default track. <https://developers.google.com/android-publisher/tracks#ff-track-name More on track name>
+    track :: (Core.Maybe Core.Text),
+    -- | Required. Type of the new track. Currently, the only supported value is closedTesting.
+    type' :: (Core.Maybe TrackConfig_Type)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'TrackConfig' with the minimum fields required to make a request.
+newTrackConfig ::
+  TrackConfig
+newTrackConfig =
+  TrackConfig
+    { formFactor = Core.Nothing,
+      track = Core.Nothing,
+      type' = Core.Nothing
+    }
+
+instance Core.FromJSON TrackConfig where
+  parseJSON =
+    Core.withObject
+      "TrackConfig"
+      ( \o ->
+          TrackConfig
+            Core.<$> (o Core..:? "formFactor")
+            Core.<*> (o Core..:? "track")
+            Core.<*> (o Core..:? "type")
+      )
+
+instance Core.ToJSON TrackConfig where
+  toJSON TrackConfig {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("formFactor" Core..=) Core.<$> formFactor,
+            ("track" Core..=) Core.<$> track,
+            ("type" Core..=) Core.<$> type'
+          ]
+      )
+
+-- | Resource for per-track country availability information.
+--
+-- /See:/ 'newTrackCountryAvailability' smart constructor.
+data TrackCountryAvailability = TrackCountryAvailability
+  { -- | A list of one or more countries where artifacts in this track are available. This list includes all countries that are targeted by the track, even if only specific carriers are targeted in that country.
+    countries :: (Core.Maybe [TrackTargetedCountry]),
+    -- | Whether artifacts in this track are available to \"rest of the world\" countries.
+    restOfWorld :: (Core.Maybe Core.Bool),
+    -- | Whether this track\'s availability is synced with the default production track. See https:\/\/support.google.com\/googleplay\/android-developer\/answer\/7550024 for more information on syncing country availability with production. Note that if this is true, the returned \"countries\" and \"rest/of/world\" fields will reflect the values for the default production track.
+    syncWithProduction :: (Core.Maybe Core.Bool)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'TrackCountryAvailability' with the minimum fields required to make a request.
+newTrackCountryAvailability ::
+  TrackCountryAvailability
+newTrackCountryAvailability =
+  TrackCountryAvailability
+    { countries = Core.Nothing,
+      restOfWorld = Core.Nothing,
+      syncWithProduction = Core.Nothing
+    }
+
+instance Core.FromJSON TrackCountryAvailability where
+  parseJSON =
+    Core.withObject
+      "TrackCountryAvailability"
+      ( \o ->
+          TrackCountryAvailability
+            Core.<$> (o Core..:? "countries")
+            Core.<*> (o Core..:? "restOfWorld")
+            Core.<*> (o Core..:? "syncWithProduction")
+      )
+
+instance Core.ToJSON TrackCountryAvailability where
+  toJSON TrackCountryAvailability {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("countries" Core..=) Core.<$> countries,
+            ("restOfWorld" Core..=) Core.<$> restOfWorld,
+            ("syncWithProduction" Core..=) Core.<$> syncWithProduction
+          ]
+      )
+
+-- | A release within a track.
+--
+-- /See:/ 'newTrackRelease' smart constructor.
+data TrackRelease = TrackRelease
+  { -- | Restricts a release to a specific set of countries.
+    countryTargeting :: (Core.Maybe CountryTargeting),
+    -- | In-app update priority of the release. All newly added APKs in the release will be considered at this priority. Can take values in the range [0, 5], with 5 the highest priority. Defaults to 0. in/app/update_priority can not be updated once the release is rolled out. See https:\/\/developer.android.com\/guide\/playcore\/in-app-updates.
+    inAppUpdatePriority :: (Core.Maybe Core.Int32),
+    -- | The release name. Not required to be unique. If not set, the name is generated from the APK\'s version_name. If the release contains multiple APKs, the name is generated from the date.
+    name :: (Core.Maybe Core.Text),
+    -- | A description of what is new in this release.
+    releaseNotes :: (Core.Maybe [LocalizedText]),
+    -- | The status of the release.
+    status :: (Core.Maybe TrackRelease_Status),
+    -- | Fraction of users who are eligible for a staged release. 0 \< fraction \< 1. Can only be set when status is \"inProgress\" or \"halted\".
+    userFraction :: (Core.Maybe Core.Double),
+    -- | Version codes of all APKs in the release. Must include version codes to retain from previous releases.
+    versionCodes :: (Core.Maybe [Core.Int64])
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'TrackRelease' with the minimum fields required to make a request.
+newTrackRelease ::
+  TrackRelease
+newTrackRelease =
+  TrackRelease
+    { countryTargeting = Core.Nothing,
+      inAppUpdatePriority = Core.Nothing,
+      name = Core.Nothing,
+      releaseNotes = Core.Nothing,
+      status = Core.Nothing,
+      userFraction = Core.Nothing,
+      versionCodes = Core.Nothing
+    }
+
+instance Core.FromJSON TrackRelease where
+  parseJSON =
+    Core.withObject
+      "TrackRelease"
+      ( \o ->
+          TrackRelease
+            Core.<$> (o Core..:? "countryTargeting")
+            Core.<*> (o Core..:? "inAppUpdatePriority")
+            Core.<*> (o Core..:? "name")
+            Core.<*> (o Core..:? "releaseNotes")
+            Core.<*> (o Core..:? "status")
+            Core.<*> (o Core..:? "userFraction")
+            Core.<*> ( o
+                         Core..:? "versionCodes"
+                         Core.<&> Core.fmap (Core.fmap Core.fromAsText)
+                     )
+      )
+
+instance Core.ToJSON TrackRelease where
+  toJSON TrackRelease {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("countryTargeting" Core..=) Core.<$> countryTargeting,
+            ("inAppUpdatePriority" Core..=) Core.<$> inAppUpdatePriority,
+            ("name" Core..=) Core.<$> name,
+            ("releaseNotes" Core..=) Core.<$> releaseNotes,
+            ("status" Core..=) Core.<$> status,
+            ("userFraction" Core..=) Core.<$> userFraction,
+            ("versionCodes" Core..=)
+              Core.. Core.fmap Core.AsText
+              Core.<$> versionCodes
+          ]
+      )
+
+-- | Representation of a single country where the contents of a track are available.
+--
+-- /See:/ 'newTrackTargetedCountry' smart constructor.
+newtype TrackTargetedCountry = TrackTargetedCountry
+  { -- | The country to target, as a two-letter CLDR code.
+    countryCode :: (Core.Maybe Core.Text)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'TrackTargetedCountry' with the minimum fields required to make a request.
+newTrackTargetedCountry ::
+  TrackTargetedCountry
+newTrackTargetedCountry =
+  TrackTargetedCountry {countryCode = Core.Nothing}
+
+instance Core.FromJSON TrackTargetedCountry where
+  parseJSON =
+    Core.withObject
+      "TrackTargetedCountry"
+      (\o -> TrackTargetedCountry Core.<$> (o Core..:? "countryCode"))
+
+instance Core.ToJSON TrackTargetedCountry where
+  toJSON TrackTargetedCountry {..} =
+    Core.object
+      (Core.catMaybes [("countryCode" Core..=) Core.<$> countryCode])
+
+-- | Response listing all tracks.
+--
+-- /See:/ 'newTracksListResponse' smart constructor.
+data TracksListResponse = TracksListResponse
+  { -- | The kind of this response (\"androidpublisher#tracksListResponse\").
+    kind :: (Core.Maybe Core.Text),
+    -- | All tracks (including tracks with no releases).
+    tracks :: (Core.Maybe [Track])
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'TracksListResponse' with the minimum fields required to make a request.
+newTracksListResponse ::
+  TracksListResponse
+newTracksListResponse =
+  TracksListResponse {kind = Core.Nothing, tracks = Core.Nothing}
+
+instance Core.FromJSON TracksListResponse where
+  parseJSON =
+    Core.withObject
+      "TracksListResponse"
+      ( \o ->
+          TracksListResponse
+            Core.<$> (o Core..:? "kind")
+            Core.<*> (o Core..:? "tracks")
+      )
+
+instance Core.ToJSON TracksListResponse where
+  toJSON TracksListResponse {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("kind" Core..=) Core.<$> kind,
+            ("tracks" Core..=) Core.<$> tracks
+          ]
+      )
+
+-- | Request message to update the state of a subscription base plan.
+--
+-- /See:/ 'newUpdateBasePlanStateRequest' smart constructor.
+data UpdateBasePlanStateRequest = UpdateBasePlanStateRequest
+  { -- | Activates a base plan. Once activated, base plans will be available to new subscribers.
+    activateBasePlanRequest :: (Core.Maybe ActivateBasePlanRequest),
+    -- | Deactivates a base plan. Once deactivated, the base plan will become unavailable to new subscribers, but existing subscribers will maintain their subscription
+    deactivateBasePlanRequest :: (Core.Maybe DeactivateBasePlanRequest)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'UpdateBasePlanStateRequest' with the minimum fields required to make a request.
+newUpdateBasePlanStateRequest ::
+  UpdateBasePlanStateRequest
+newUpdateBasePlanStateRequest =
+  UpdateBasePlanStateRequest
+    { activateBasePlanRequest =
+        Core.Nothing,
+      deactivateBasePlanRequest = Core.Nothing
+    }
+
+instance Core.FromJSON UpdateBasePlanStateRequest where
+  parseJSON =
+    Core.withObject
+      "UpdateBasePlanStateRequest"
+      ( \o ->
+          UpdateBasePlanStateRequest
+            Core.<$> (o Core..:? "activateBasePlanRequest")
+            Core.<*> (o Core..:? "deactivateBasePlanRequest")
+      )
+
+instance Core.ToJSON UpdateBasePlanStateRequest where
+  toJSON UpdateBasePlanStateRequest {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("activateBasePlanRequest" Core..=)
+              Core.<$> activateBasePlanRequest,
+            ("deactivateBasePlanRequest" Core..=)
+              Core.<$> deactivateBasePlanRequest
+          ]
+      )
+
+-- | Request message for UpdateSubscriptionOffer.
+--
+-- /See:/ 'newUpdateSubscriptionOfferRequest' smart constructor.
+data UpdateSubscriptionOfferRequest = UpdateSubscriptionOfferRequest
+  { -- | Optional. If set to true, and the subscription offer with the given package/name, product/id, base/plan/id and offer/id doesn\'t exist, an offer will be created. If a new offer is created, update/mask is ignored.
+    allowMissing :: (Core.Maybe Core.Bool),
+    -- | Optional. The latency tolerance for the propagation of this product update. Defaults to latency-sensitive.
+    latencyTolerance :: (Core.Maybe UpdateSubscriptionOfferRequest_LatencyTolerance),
+    -- | Required. The version of the available regions being used for the subscription_offer.
+    regionsVersion :: (Core.Maybe RegionsVersion),
+    -- | Required. The subscription offer to update.
+    subscriptionOffer :: (Core.Maybe SubscriptionOffer),
+    -- | Required. The list of fields to be updated.
+    updateMask :: (Core.Maybe Core.FieldMask)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'UpdateSubscriptionOfferRequest' with the minimum fields required to make a request.
+newUpdateSubscriptionOfferRequest ::
+  UpdateSubscriptionOfferRequest
+newUpdateSubscriptionOfferRequest =
+  UpdateSubscriptionOfferRequest
+    { allowMissing = Core.Nothing,
+      latencyTolerance = Core.Nothing,
+      regionsVersion = Core.Nothing,
+      subscriptionOffer = Core.Nothing,
+      updateMask = Core.Nothing
+    }
+
+instance Core.FromJSON UpdateSubscriptionOfferRequest where
+  parseJSON =
+    Core.withObject
+      "UpdateSubscriptionOfferRequest"
+      ( \o ->
+          UpdateSubscriptionOfferRequest
+            Core.<$> (o Core..:? "allowMissing")
+            Core.<*> (o Core..:? "latencyTolerance")
+            Core.<*> (o Core..:? "regionsVersion")
+            Core.<*> (o Core..:? "subscriptionOffer")
+            Core.<*> (o Core..:? "updateMask")
+      )
+
+instance Core.ToJSON UpdateSubscriptionOfferRequest where
+  toJSON UpdateSubscriptionOfferRequest {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("allowMissing" Core..=) Core.<$> allowMissing,
+            ("latencyTolerance" Core..=) Core.<$> latencyTolerance,
+            ("regionsVersion" Core..=) Core.<$> regionsVersion,
+            ("subscriptionOffer" Core..=) Core.<$> subscriptionOffer,
+            ("updateMask" Core..=) Core.<$> updateMask
+          ]
+      )
+
+-- | Request message to update the state of a subscription offer.
+--
+-- /See:/ 'newUpdateSubscriptionOfferStateRequest' smart constructor.
+data UpdateSubscriptionOfferStateRequest = UpdateSubscriptionOfferStateRequest
+  { -- | Activates an offer. Once activated, the offer will be available to new subscribers.
+    activateSubscriptionOfferRequest :: (Core.Maybe ActivateSubscriptionOfferRequest),
+    -- | Deactivates an offer. Once deactivated, the offer will become unavailable to new subscribers, but existing subscribers will maintain their subscription
+    deactivateSubscriptionOfferRequest :: (Core.Maybe DeactivateSubscriptionOfferRequest)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'UpdateSubscriptionOfferStateRequest' with the minimum fields required to make a request.
+newUpdateSubscriptionOfferStateRequest ::
+  UpdateSubscriptionOfferStateRequest
+newUpdateSubscriptionOfferStateRequest =
+  UpdateSubscriptionOfferStateRequest
+    { activateSubscriptionOfferRequest =
+        Core.Nothing,
+      deactivateSubscriptionOfferRequest = Core.Nothing
+    }
+
+instance Core.FromJSON UpdateSubscriptionOfferStateRequest where
+  parseJSON =
+    Core.withObject
+      "UpdateSubscriptionOfferStateRequest"
+      ( \o ->
+          UpdateSubscriptionOfferStateRequest
+            Core.<$> (o Core..:? "activateSubscriptionOfferRequest")
+            Core.<*> (o Core..:? "deactivateSubscriptionOfferRequest")
+      )
+
+instance Core.ToJSON UpdateSubscriptionOfferStateRequest where
+  toJSON UpdateSubscriptionOfferStateRequest {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("activateSubscriptionOfferRequest" Core..=)
+              Core.<$> activateSubscriptionOfferRequest,
+            ("deactivateSubscriptionOfferRequest" Core..=)
+              Core.<$> deactivateSubscriptionOfferRequest
+          ]
+      )
+
+-- | Request message for UpdateSubscription.
+--
+-- /See:/ 'newUpdateSubscriptionRequest' smart constructor.
+data UpdateSubscriptionRequest = UpdateSubscriptionRequest
+  { -- | Optional. If set to true, and the subscription with the given package/name and product/id doesn\'t exist, the subscription will be created. If a new subscription is created, update_mask is ignored.
+    allowMissing :: (Core.Maybe Core.Bool),
+    -- | Optional. The latency tolerance for the propagation of this product update. Defaults to latency-sensitive.
+    latencyTolerance :: (Core.Maybe UpdateSubscriptionRequest_LatencyTolerance),
+    -- | Required. The version of the available regions being used for the subscription.
+    regionsVersion :: (Core.Maybe RegionsVersion),
+    -- | Required. The subscription to update.
+    subscription :: (Core.Maybe Subscription),
+    -- | Required. The list of fields to be updated.
+    updateMask :: (Core.Maybe Core.FieldMask)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'UpdateSubscriptionRequest' with the minimum fields required to make a request.
+newUpdateSubscriptionRequest ::
+  UpdateSubscriptionRequest
+newUpdateSubscriptionRequest =
+  UpdateSubscriptionRequest
+    { allowMissing = Core.Nothing,
+      latencyTolerance = Core.Nothing,
+      regionsVersion = Core.Nothing,
+      subscription = Core.Nothing,
+      updateMask = Core.Nothing
+    }
+
+instance Core.FromJSON UpdateSubscriptionRequest where
+  parseJSON =
+    Core.withObject
+      "UpdateSubscriptionRequest"
+      ( \o ->
+          UpdateSubscriptionRequest
+            Core.<$> (o Core..:? "allowMissing")
+            Core.<*> (o Core..:? "latencyTolerance")
+            Core.<*> (o Core..:? "regionsVersion")
+            Core.<*> (o Core..:? "subscription")
+            Core.<*> (o Core..:? "updateMask")
+      )
+
+instance Core.ToJSON UpdateSubscriptionRequest where
+  toJSON UpdateSubscriptionRequest {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("allowMissing" Core..=) Core.<$> allowMissing,
+            ("latencyTolerance" Core..=) Core.<$> latencyTolerance,
+            ("regionsVersion" Core..=) Core.<$> regionsVersion,
+            ("subscription" Core..=) Core.<$> subscription,
+            ("updateMask" Core..=) Core.<$> updateMask
+          ]
+      )
+
+-- | Represents a targeting rule of the form: User currently has {scope} [with billing period {billing_period}].
+--
+-- /See:/ 'newUpgradeTargetingRule' smart constructor.
+data UpgradeTargetingRule = UpgradeTargetingRule
+  { -- | The specific billing period duration, specified in ISO 8601 format, that a user must be currently subscribed to to be eligible for this rule. If not specified, users subscribed to any billing period are matched.
+    billingPeriodDuration :: (Core.Maybe Core.Text),
+    -- | Limit this offer to only once per user. If set to true, a user can never be eligible for this offer again if they ever subscribed to this offer.
+    oncePerUser :: (Core.Maybe Core.Bool),
+    -- | Required. The scope of subscriptions this rule considers. Only allows \"this subscription\" and \"specific subscription in app\".
+    scope :: (Core.Maybe TargetingRuleScope)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'UpgradeTargetingRule' with the minimum fields required to make a request.
+newUpgradeTargetingRule ::
+  UpgradeTargetingRule
+newUpgradeTargetingRule =
+  UpgradeTargetingRule
+    { billingPeriodDuration = Core.Nothing,
+      oncePerUser = Core.Nothing,
+      scope = Core.Nothing
+    }
+
+instance Core.FromJSON UpgradeTargetingRule where
+  parseJSON =
+    Core.withObject
+      "UpgradeTargetingRule"
+      ( \o ->
+          UpgradeTargetingRule
+            Core.<$> (o Core..:? "billingPeriodDuration")
+            Core.<*> (o Core..:? "oncePerUser")
+            Core.<*> (o Core..:? "scope")
+      )
+
+instance Core.ToJSON UpgradeTargetingRule where
+  toJSON UpgradeTargetingRule {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("billingPeriodDuration" Core..=) Core.<$> billingPeriodDuration,
+            ("oncePerUser" Core..=) Core.<$> oncePerUser,
+            ("scope" Core..=) Core.<$> scope
+          ]
+      )
+
+-- | A user resource.
+--
+-- /See:/ 'newUser' smart constructor.
+data User = User
+  { -- | Output only. The state of the user\'s access to the Play Console.
+    accessState :: (Core.Maybe User_AccessState),
+    -- | Permissions for the user which apply across the developer account.
+    developerAccountPermissions :: (Core.Maybe [User_DeveloperAccountPermissionsItem]),
+    -- | Immutable. The user\'s email address.
+    email :: (Core.Maybe Core.Text),
+    -- | The time at which the user\'s access expires, if set. When setting this value, it must always be in the future.
+    expirationTime :: (Core.Maybe Core.DateTime),
+    -- | Output only. Per-app permissions for the user.
+    grants :: (Core.Maybe [Grant]),
+    -- | Required. Resource name for this user, following the pattern \"developers\/{developer}\/users\/{email}\".
+    name :: (Core.Maybe Core.Text),
+    -- | Output only. Whether there are more permissions for the user that are not represented here. This can happen if the caller does not have permission to manage all apps in the account. This is also @true@ if this user is the account owner. If this field is @true@, it should be taken as a signal that this user cannot be fully managed via the API. That is, the API caller is not be able to manage all of the permissions this user holds, either because it doesn\'t know about them or because the user is the account owner.
+    partial :: (Core.Maybe Core.Bool)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'User' with the minimum fields required to make a request.
+newUser ::
+  User
+newUser =
+  User
+    { accessState = Core.Nothing,
+      developerAccountPermissions = Core.Nothing,
+      email = Core.Nothing,
+      expirationTime = Core.Nothing,
+      grants = Core.Nothing,
+      name = Core.Nothing,
+      partial = Core.Nothing
+    }
+
+instance Core.FromJSON User where
+  parseJSON =
+    Core.withObject
+      "User"
+      ( \o ->
+          User
+            Core.<$> (o Core..:? "accessState")
+            Core.<*> (o Core..:? "developerAccountPermissions")
+            Core.<*> (o Core..:? "email")
+            Core.<*> (o Core..:? "expirationTime")
+            Core.<*> (o Core..:? "grants")
+            Core.<*> (o Core..:? "name")
+            Core.<*> (o Core..:? "partial")
+      )
+
+instance Core.ToJSON User where
+  toJSON User {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("accessState" Core..=) Core.<$> accessState,
+            ("developerAccountPermissions" Core..=)
+              Core.<$> developerAccountPermissions,
+            ("email" Core..=) Core.<$> email,
+            ("expirationTime" Core..=) Core.<$> expirationTime,
+            ("grants" Core..=) Core.<$> grants,
+            ("name" Core..=) Core.<$> name,
+            ("partial" Core..=) Core.<$> partial
+          ]
+      )
+
+-- | User entry from conversation between user and developer.
+--
+-- /See:/ 'newUserComment' smart constructor.
+data UserComment = UserComment
+  { -- | Integer Android SDK version of the user\'s device at the time the review was written, e.g. 23 is Marshmallow. May be absent.
+    androidOsVersion :: (Core.Maybe Core.Int32),
+    -- | Integer version code of the app as installed at the time the review was written. May be absent.
+    appVersionCode :: (Core.Maybe Core.Int32),
+    -- | String version name of the app as installed at the time the review was written. May be absent.
+    appVersionName :: (Core.Maybe Core.Text),
+    -- | Codename for the reviewer\'s device, e.g. klte, flounder. May be absent.
+    device :: (Core.Maybe Core.Text),
+    -- | Information about the characteristics of the user\'s device.
+    deviceMetadata :: (Core.Maybe DeviceMetadata),
+    -- | The last time at which this comment was updated.
+    lastModified :: (Core.Maybe Timestamp),
+    -- | Untranslated text of the review, where the review was translated. If the review was not translated this is left blank.
+    originalText :: (Core.Maybe Core.Text),
+    -- | 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.
+    reviewerLanguage :: (Core.Maybe Core.Text),
+    -- | The star rating associated with the review, from 1 to 5.
+    starRating :: (Core.Maybe Core.Int32),
+    -- | 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.
+    text :: (Core.Maybe Core.Text),
+    -- | Number of users who have given this review a thumbs down.
+    thumbsDownCount :: (Core.Maybe Core.Int32),
+    -- | Number of users who have given this review a thumbs up.
+    thumbsUpCount :: (Core.Maybe Core.Int32)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'UserComment' with the minimum fields required to make a request.
+newUserComment ::
+  UserComment
+newUserComment =
+  UserComment
+    { androidOsVersion = Core.Nothing,
+      appVersionCode = Core.Nothing,
+      appVersionName = Core.Nothing,
+      device = Core.Nothing,
+      deviceMetadata = Core.Nothing,
+      lastModified = Core.Nothing,
+      originalText = Core.Nothing,
+      reviewerLanguage = Core.Nothing,
+      starRating = Core.Nothing,
+      text = Core.Nothing,
+      thumbsDownCount = Core.Nothing,
+      thumbsUpCount = Core.Nothing
+    }
+
+instance Core.FromJSON UserComment where
+  parseJSON =
+    Core.withObject
+      "UserComment"
+      ( \o ->
+          UserComment
+            Core.<$> (o Core..:? "androidOsVersion")
+            Core.<*> (o Core..:? "appVersionCode")
+            Core.<*> (o Core..:? "appVersionName")
+            Core.<*> (o Core..:? "device")
+            Core.<*> (o Core..:? "deviceMetadata")
+            Core.<*> (o Core..:? "lastModified")
+            Core.<*> (o Core..:? "originalText")
+            Core.<*> (o Core..:? "reviewerLanguage")
+            Core.<*> (o Core..:? "starRating")
+            Core.<*> (o Core..:? "text")
+            Core.<*> (o Core..:? "thumbsDownCount")
+            Core.<*> (o Core..:? "thumbsUpCount")
+      )
+
+instance Core.ToJSON UserComment where
+  toJSON UserComment {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("androidOsVersion" Core..=) Core.<$> androidOsVersion,
+            ("appVersionCode" Core..=) Core.<$> appVersionCode,
+            ("appVersionName" Core..=) Core.<$> appVersionName,
+            ("device" Core..=) Core.<$> device,
+            ("deviceMetadata" Core..=) Core.<$> deviceMetadata,
+            ("lastModified" Core..=) Core.<$> lastModified,
+            ("originalText" Core..=) Core.<$> originalText,
+            ("reviewerLanguage" Core..=) Core.<$> reviewerLanguage,
+            ("starRating" Core..=) Core.<$> starRating,
+            ("text" Core..=) Core.<$> text,
+            ("thumbsDownCount" Core..=) Core.<$> thumbsDownCount,
+            ("thumbsUpCount" Core..=) Core.<$> thumbsUpCount
+          ]
+      )
+
+-- | Describes an inclusive\/exclusive list of country codes that module targets.
+--
+-- /See:/ 'newUserCountriesTargeting' smart constructor.
+data UserCountriesTargeting = UserCountriesTargeting
+  { -- | List of country codes in the two-letter CLDR territory format.
+    countryCodes :: (Core.Maybe [Core.Text]),
+    -- | Indicates if the list above is exclusive.
+    exclude :: (Core.Maybe Core.Bool)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'UserCountriesTargeting' with the minimum fields required to make a request.
+newUserCountriesTargeting ::
+  UserCountriesTargeting
+newUserCountriesTargeting =
+  UserCountriesTargeting
+    { countryCodes = Core.Nothing,
+      exclude = Core.Nothing
+    }
+
+instance Core.FromJSON UserCountriesTargeting where
+  parseJSON =
+    Core.withObject
+      "UserCountriesTargeting"
+      ( \o ->
+          UserCountriesTargeting
+            Core.<$> (o Core..:? "countryCodes")
+            Core.<*> (o Core..:? "exclude")
+      )
+
+instance Core.ToJSON UserCountriesTargeting where
+  toJSON UserCountriesTargeting {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("countryCodes" Core..=) Core.<$> countryCodes,
+            ("exclude" Core..=) Core.<$> exclude
+          ]
+      )
+
+-- | A set of user countries. A country set determines what variation of app content gets served to a specific location.
+--
+-- /See:/ 'newUserCountrySet' smart constructor.
+data UserCountrySet = UserCountrySet
+  { -- | List of country codes representing countries. A Country code is represented in ISO 3166 alpha-2 format. For Example:- \"IT\" for Italy, \"GE\" for Georgia.
+    countryCodes :: (Core.Maybe [Core.Text]),
+    -- | Country set name.
+    name :: (Core.Maybe Core.Text)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'UserCountrySet' with the minimum fields required to make a request.
+newUserCountrySet ::
+  UserCountrySet
+newUserCountrySet =
+  UserCountrySet {countryCodes = Core.Nothing, name = Core.Nothing}
+
+instance Core.FromJSON UserCountrySet where
+  parseJSON =
+    Core.withObject
+      "UserCountrySet"
+      ( \o ->
+          UserCountrySet
+            Core.<$> (o Core..:? "countryCodes")
+            Core.<*> (o Core..:? "name")
+      )
+
+instance Core.ToJSON UserCountrySet where
+  toJSON UserCountrySet {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("countryCodes" Core..=) Core.<$> countryCodes,
+            ("name" Core..=) Core.<$> name
+          ]
+      )
+
+-- | Information specific to cancellations initiated by users.
+--
+-- /See:/ 'newUserInitiatedCancellation' smart constructor.
+data UserInitiatedCancellation = UserInitiatedCancellation
+  { -- | Information provided by the user when they complete the subscription cancellation flow (cancellation reason survey).
+    cancelSurveyResult :: (Core.Maybe CancelSurveyResult),
+    -- | The time at which the subscription was canceled by the user. The user might still have access to the subscription after this time. Use line/items.expiry/time to determine if a user still has access.
+    cancelTime :: (Core.Maybe Core.DateTime)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'UserInitiatedCancellation' with the minimum fields required to make a request.
+newUserInitiatedCancellation ::
+  UserInitiatedCancellation
+newUserInitiatedCancellation =
+  UserInitiatedCancellation
+    { cancelSurveyResult = Core.Nothing,
+      cancelTime = Core.Nothing
+    }
+
+instance Core.FromJSON UserInitiatedCancellation where
+  parseJSON =
+    Core.withObject
+      "UserInitiatedCancellation"
+      ( \o ->
+          UserInitiatedCancellation
+            Core.<$> (o Core..:? "cancelSurveyResult")
+            Core.<*> (o Core..:? "cancelTime")
+      )
+
+instance Core.ToJSON UserInitiatedCancellation where
+  toJSON UserInitiatedCancellation {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("cancelSurveyResult" Core..=) Core.<$> cancelSurveyResult,
+            ("cancelTime" Core..=) Core.<$> cancelTime
+          ]
+      )
+
+-- | A permission used by this APK.
+--
+-- /See:/ 'newUsesPermission' smart constructor.
+data UsesPermission = UsesPermission
+  { -- | Optionally, the maximum SDK version for which the permission is required.
+    maxSdkVersion :: (Core.Maybe Core.Int32),
+    -- | The name of the permission requested.
+    name :: (Core.Maybe Core.Text)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'UsesPermission' with the minimum fields required to make a request.
+newUsesPermission ::
+  UsesPermission
+newUsesPermission =
+  UsesPermission {maxSdkVersion = Core.Nothing, name = Core.Nothing}
+
+instance Core.FromJSON UsesPermission where
+  parseJSON =
+    Core.withObject
+      "UsesPermission"
+      ( \o ->
+          UsesPermission
+            Core.<$> (o Core..:? "maxSdkVersion")
+            Core.<*> (o Core..:? "name")
+      )
+
+instance Core.ToJSON UsesPermission where
+  toJSON UsesPermission {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("maxSdkVersion" Core..=) Core.<$> maxSdkVersion,
+            ("name" Core..=) Core.<$> name
+          ]
+      )
+
+-- | A multiple use, predefined promotion code.
+--
+-- /See:/ 'newVanityCode' smart constructor.
+newtype VanityCode = VanityCode
+  { -- | The promotion code.
+    promotionCode :: (Core.Maybe Core.Text)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'VanityCode' with the minimum fields required to make a request.
+newVanityCode ::
+  VanityCode
+newVanityCode = VanityCode {promotionCode = Core.Nothing}
+
+instance Core.FromJSON VanityCode where
+  parseJSON =
+    Core.withObject
+      "VanityCode"
+      (\o -> VanityCode Core.<$> (o Core..:? "promotionCode"))
+
+instance Core.ToJSON VanityCode where
+  toJSON VanityCode {..} =
+    Core.object
+      (Core.catMaybes [("promotionCode" Core..=) Core.<$> promotionCode])
+
+-- | APK that is suitable for inclusion in a system image. The resource of SystemApksService.
+--
+-- /See:/ 'newVariant' smart constructor.
+data Variant = Variant
+  { -- | The device spec used to generate the APK.
+    deviceSpec :: (Core.Maybe DeviceSpec),
+    -- | Optional. Options applied to the generated APK.
+    options :: (Core.Maybe SystemApkOptions),
+    -- | Output only. The ID of a previously created system APK variant.
+    variantId :: (Core.Maybe Core.Word32)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'Variant' with the minimum fields required to make a request.
+newVariant ::
+  Variant
+newVariant =
+  Variant
+    { deviceSpec = Core.Nothing,
+      options = Core.Nothing,
+      variantId = Core.Nothing
+    }
+
+instance Core.FromJSON Variant where
+  parseJSON =
+    Core.withObject
+      "Variant"
+      ( \o ->
+          Variant
+            Core.<$> (o Core..:? "deviceSpec")
+            Core.<*> (o Core..:? "options")
+            Core.<*> (o Core..:? "variantId")
+      )
+
+instance Core.ToJSON Variant where
+  toJSON Variant {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("deviceSpec" Core..=) Core.<$> deviceSpec,
+            ("options" Core..=) Core.<$> options,
+            ("variantId" Core..=) Core.<$> variantId
+          ]
+      )
+
+-- | Targeting on the level of variants.
+--
+-- /See:/ 'newVariantTargeting' smart constructor.
+data VariantTargeting = VariantTargeting
+  { -- | The abi that the variant targets
+    abiTargeting :: (Core.Maybe AbiTargeting),
+    -- | Multi-api-level targeting
+    multiAbiTargeting :: (Core.Maybe MultiAbiTargeting),
+    -- | The screen densities that this variant supports
+    screenDensityTargeting :: (Core.Maybe ScreenDensityTargeting),
+    -- | The sdk version that the variant targets
+    sdkVersionTargeting :: (Core.Maybe SdkVersionTargeting),
+    -- | Texture-compression-format-level targeting
+    textureCompressionFormatTargeting :: (Core.Maybe TextureCompressionFormatTargeting)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'VariantTargeting' with the minimum fields required to make a request.
+newVariantTargeting ::
+  VariantTargeting
+newVariantTargeting =
+  VariantTargeting
+    { abiTargeting = Core.Nothing,
+      multiAbiTargeting = Core.Nothing,
+      screenDensityTargeting = Core.Nothing,
+      sdkVersionTargeting = Core.Nothing,
+      textureCompressionFormatTargeting = Core.Nothing
+    }
+
+instance Core.FromJSON VariantTargeting where
+  parseJSON =
+    Core.withObject
+      "VariantTargeting"
+      ( \o ->
+          VariantTargeting
+            Core.<$> (o Core..:? "abiTargeting")
+            Core.<*> (o Core..:? "multiAbiTargeting")
+            Core.<*> (o Core..:? "screenDensityTargeting")
+            Core.<*> (o Core..:? "sdkVersionTargeting")
+            Core.<*> (o Core..:? "textureCompressionFormatTargeting")
+      )
+
+instance Core.ToJSON VariantTargeting where
+  toJSON VariantTargeting {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("abiTargeting" Core..=) Core.<$> abiTargeting,
+            ("multiAbiTargeting" Core..=) Core.<$> multiAbiTargeting,
+            ("screenDensityTargeting" Core..=) Core.<$> screenDensityTargeting,
+            ("sdkVersionTargeting" Core..=) Core.<$> sdkVersionTargeting,
+            ("textureCompressionFormatTargeting" Core..=)
+              Core.<$> textureCompressionFormatTargeting
+          ]
+      )
+
+-- | A VoidedPurchase resource indicates a purchase that was either canceled\/refunded\/charged-back.
+--
+-- /See:/ 'newVoidedPurchase' smart constructor.
+data VoidedPurchase = VoidedPurchase
+  { -- | This kind represents a voided purchase object in the androidpublisher service.
+    kind :: (Core.Maybe Core.Text),
+    -- | The order id which uniquely identifies a one-time purchase, subscription purchase, or subscription renewal.
+    orderId :: (Core.Maybe Core.Text),
+    -- | The time at which the purchase was made, in milliseconds since the epoch (Jan 1, 1970).
+    purchaseTimeMillis :: (Core.Maybe Core.Int64),
+    -- | The token which uniquely identifies a one-time purchase or subscription. To uniquely identify subscription renewals use order_id (available starting from version 3 of the API).
+    purchaseToken :: (Core.Maybe Core.Text),
+    -- | The voided quantity as the result of a quantity-based partial refund. Voided purchases of quantity-based partial refunds may only be returned when includeQuantityBasedPartialRefund is set to true.
+    voidedQuantity :: (Core.Maybe Core.Int32),
+    -- | The reason why the purchase was voided, possible values are: 0. Other 1. Remorse 2. Not/received 3. Defective 4. Accidental/purchase 5. Fraud 6. Friendly/fraud 7. Chargeback 8. Unacknowledged/purchase
+    voidedReason :: (Core.Maybe Core.Int32),
+    -- | The initiator of voided purchase, possible values are: 0. User 1. Developer 2. Google
+    voidedSource :: (Core.Maybe Core.Int32),
+    -- | The time at which the purchase was canceled\/refunded\/charged-back, in milliseconds since the epoch (Jan 1, 1970).
+    voidedTimeMillis :: (Core.Maybe Core.Int64)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'VoidedPurchase' with the minimum fields required to make a request.
+newVoidedPurchase ::
+  VoidedPurchase
+newVoidedPurchase =
+  VoidedPurchase
+    { kind = Core.Nothing,
+      orderId = Core.Nothing,
+      purchaseTimeMillis = Core.Nothing,
+      purchaseToken = Core.Nothing,
+      voidedQuantity = Core.Nothing,
+      voidedReason = Core.Nothing,
+      voidedSource = Core.Nothing,
+      voidedTimeMillis = Core.Nothing
+    }
+
+instance Core.FromJSON VoidedPurchase where
+  parseJSON =
+    Core.withObject
+      "VoidedPurchase"
+      ( \o ->
+          VoidedPurchase
+            Core.<$> (o Core..:? "kind")
+            Core.<*> (o Core..:? "orderId")
+            Core.<*> ( o
+                         Core..:? "purchaseTimeMillis"
+                         Core.<&> Core.fmap Core.fromAsText
+                     )
+            Core.<*> (o Core..:? "purchaseToken")
+            Core.<*> (o Core..:? "voidedQuantity")
+            Core.<*> (o Core..:? "voidedReason")
+            Core.<*> (o Core..:? "voidedSource")
+            Core.<*> (o Core..:? "voidedTimeMillis" Core.<&> Core.fmap Core.fromAsText)
+      )
+
+instance Core.ToJSON VoidedPurchase where
+  toJSON VoidedPurchase {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("kind" Core..=) Core.<$> kind,
+            ("orderId" Core..=) Core.<$> orderId,
+            ("purchaseTimeMillis" Core..=)
+              Core.. Core.AsText
+              Core.<$> purchaseTimeMillis,
+            ("purchaseToken" Core..=) Core.<$> purchaseToken,
+            ("voidedQuantity" Core..=) Core.<$> voidedQuantity,
+            ("voidedReason" Core..=) Core.<$> voidedReason,
+            ("voidedSource" Core..=) Core.<$> voidedSource,
+            ("voidedTimeMillis" Core..=)
+              Core.. Core.AsText
+              Core.<$> voidedTimeMillis
+          ]
+      )
+
+-- | Response for the voidedpurchases.list API.
+--
+-- /See:/ 'newVoidedPurchasesListResponse' smart constructor.
+data VoidedPurchasesListResponse = VoidedPurchasesListResponse
+  { -- | General pagination information.
+    pageInfo :: (Core.Maybe PageInfo),
+    -- | Pagination information for token pagination.
+    tokenPagination :: (Core.Maybe TokenPagination),
+    voidedPurchases :: (Core.Maybe [VoidedPurchase])
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'VoidedPurchasesListResponse' with the minimum fields required to make a request.
+newVoidedPurchasesListResponse ::
+  VoidedPurchasesListResponse
+newVoidedPurchasesListResponse =
+  VoidedPurchasesListResponse
+    { pageInfo = Core.Nothing,
+      tokenPagination = Core.Nothing,
+      voidedPurchases = Core.Nothing
+    }
+
+instance Core.FromJSON VoidedPurchasesListResponse where
+  parseJSON =
+    Core.withObject
+      "VoidedPurchasesListResponse"
+      ( \o ->
+          VoidedPurchasesListResponse
+            Core.<$> (o Core..:? "pageInfo")
+            Core.<*> (o Core..:? "tokenPagination")
+            Core.<*> (o Core..:? "voidedPurchases")
+      )
+
+instance Core.ToJSON VoidedPurchasesListResponse where
+  toJSON VoidedPurchasesListResponse {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("pageInfo" Core..=) Core.<$> pageInfo,
+            ("tokenPagination" Core..=) Core.<$> tokenPagination,
+            ("voidedPurchases" Core..=) Core.<$> voidedPurchases
+          ]
+      )
diff --git a/gen/Gogol/AndroidPublisher/Internal/Sum.hs b/gen/Gogol/AndroidPublisher/Internal/Sum.hs
new file mode 100644
--- /dev/null
+++ b/gen/Gogol/AndroidPublisher/Internal/Sum.hs
@@ -0,0 +1,3095 @@
+{-# LANGUAGE DataKinds #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE ImportQualifiedPost #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-name-shadowing #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- |
+-- Module      : Gogol.AndroidPublisher.Internal.Sum
+-- Copyright   : (c) 2015-2025 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay+gogol@gmail.com>
+--               Toni Cebrián <toni@tonicebrian.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Gogol.AndroidPublisher.Internal.Sum
+  ( -- * Xgafv
+    Xgafv
+      ( Xgafv_1,
+        Xgafv_2,
+        ..
+      ),
+
+    -- * Abi_Alias
+    Abi_Alias
+      ( Abi_Alias_UNSPECIFIEDCPUARCHITECTURE,
+        Abi_Alias_Armeabi,
+        Abi_Alias_ARMEABIV7A,
+        Abi_Alias_ARM64V8A,
+        Abi_Alias_X86,
+        Abi_Alias_X86_64,
+        Abi_Alias_RISCV64,
+        ..
+      ),
+
+    -- * ActivateBasePlanRequest_LatencyTolerance
+    ActivateBasePlanRequest_LatencyTolerance
+      ( ActivateBasePlanRequest_LatencyTolerance_PRODUCTUPDATELATENCYTOLERANCEUNSPECIFIED,
+        ActivateBasePlanRequest_LatencyTolerance_PRODUCTUPDATELATENCYTOLERANCELATENCYSENSITIVE,
+        ActivateBasePlanRequest_LatencyTolerance_PRODUCTUPDATELATENCYTOLERANCELATENCYTOLERANT,
+        ..
+      ),
+
+    -- * ActivateSubscriptionOfferRequest_LatencyTolerance
+    ActivateSubscriptionOfferRequest_LatencyTolerance
+      ( ActivateSubscriptionOfferRequest_LatencyTolerance_PRODUCTUPDATELATENCYTOLERANCEUNSPECIFIED,
+        ActivateSubscriptionOfferRequest_LatencyTolerance_PRODUCTUPDATELATENCYTOLERANCELATENCYSENSITIVE,
+        ActivateSubscriptionOfferRequest_LatencyTolerance_PRODUCTUPDATELATENCYTOLERANCELATENCYTOLERANT,
+        ..
+      ),
+
+    -- * AppRecoveryAction_Status
+    AppRecoveryAction_Status
+      ( AppRecoveryAction_Status_RECOVERYSTATUSUNSPECIFIED,
+        AppRecoveryAction_Status_RECOVERYSTATUSACTIVE,
+        AppRecoveryAction_Status_RECOVERYSTATUSCANCELED,
+        AppRecoveryAction_Status_RECOVERYSTATUSDRAFT,
+        AppRecoveryAction_Status_RECOVERYSTATUSGENERATIONINPROGRESS,
+        AppRecoveryAction_Status_RECOVERYSTATUSGENERATIONFAILED,
+        ..
+      ),
+
+    -- * AssetModuleMetadata_DeliveryType
+    AssetModuleMetadata_DeliveryType
+      ( AssetModuleMetadata_DeliveryType_UNKNOWNDELIVERYTYPE,
+        AssetModuleMetadata_DeliveryType_INSTALLTIME,
+        AssetModuleMetadata_DeliveryType_ONDEMAND,
+        AssetModuleMetadata_DeliveryType_FASTFOLLOW,
+        ..
+      ),
+
+    -- * AutoRenewingBasePlanType_ProrationMode
+    AutoRenewingBasePlanType_ProrationMode
+      ( AutoRenewingBasePlanType_ProrationMode_SUBSCRIPTIONPRORATIONMODEUNSPECIFIED,
+        AutoRenewingBasePlanType_ProrationMode_SUBSCRIPTIONPRORATIONMODECHARGEONNEXTBILLINGDATE,
+        AutoRenewingBasePlanType_ProrationMode_SUBSCRIPTIONPRORATIONMODECHARGEFULLPRICEIMMEDIATELY,
+        ..
+      ),
+
+    -- * AutoRenewingBasePlanType_ResubscribeState
+    AutoRenewingBasePlanType_ResubscribeState
+      ( AutoRenewingBasePlanType_ResubscribeState_RESUBSCRIBESTATEUNSPECIFIED,
+        AutoRenewingBasePlanType_ResubscribeState_RESUBSCRIBESTATEACTIVE,
+        AutoRenewingBasePlanType_ResubscribeState_RESUBSCRIBESTATEINACTIVE,
+        ..
+      ),
+
+    -- * BasePlan_State
+    BasePlan_State
+      ( BasePlan_State_STATEUNSPECIFIED,
+        BasePlan_State_Draft,
+        BasePlan_State_Active,
+        BasePlan_State_Inactive,
+        ..
+      ),
+
+    -- * CancelSurveyResult_Reason
+    CancelSurveyResult_Reason
+      ( CancelSurveyResult_Reason_CANCELSURVEYREASONUNSPECIFIED,
+        CancelSurveyResult_Reason_CANCELSURVEYREASONNOTENOUGHUSAGE,
+        CancelSurveyResult_Reason_CANCELSURVEYREASONTECHNICALISSUES,
+        CancelSurveyResult_Reason_CANCELSURVEYREASONCOSTRELATED,
+        CancelSurveyResult_Reason_CANCELSURVEYREASONFOUNDBETTERAPP,
+        CancelSurveyResult_Reason_CANCELSURVEYREASONOTHERS,
+        ..
+      ),
+
+    -- * DeactivateBasePlanRequest_LatencyTolerance
+    DeactivateBasePlanRequest_LatencyTolerance
+      ( DeactivateBasePlanRequest_LatencyTolerance_PRODUCTUPDATELATENCYTOLERANCEUNSPECIFIED,
+        DeactivateBasePlanRequest_LatencyTolerance_PRODUCTUPDATELATENCYTOLERANCELATENCYSENSITIVE,
+        DeactivateBasePlanRequest_LatencyTolerance_PRODUCTUPDATELATENCYTOLERANCELATENCYTOLERANT,
+        ..
+      ),
+
+    -- * DeactivateSubscriptionOfferRequest_LatencyTolerance
+    DeactivateSubscriptionOfferRequest_LatencyTolerance
+      ( DeactivateSubscriptionOfferRequest_LatencyTolerance_PRODUCTUPDATELATENCYTOLERANCEUNSPECIFIED,
+        DeactivateSubscriptionOfferRequest_LatencyTolerance_PRODUCTUPDATELATENCYTOLERANCELATENCYSENSITIVE,
+        DeactivateSubscriptionOfferRequest_LatencyTolerance_PRODUCTUPDATELATENCYTOLERANCELATENCYTOLERANT,
+        ..
+      ),
+
+    -- * DeobfuscationFile_SymbolType
+    DeobfuscationFile_SymbolType
+      ( DeobfuscationFile_SymbolType_DeobfuscationFileTypeUnspecified,
+        DeobfuscationFile_SymbolType_Proguard,
+        DeobfuscationFile_SymbolType_NativeCode,
+        ..
+      ),
+
+    -- * ExternalSubscription_SubscriptionType
+    ExternalSubscription_SubscriptionType
+      ( ExternalSubscription_SubscriptionType_SUBSCRIPTIONTYPEUNSPECIFIED,
+        ExternalSubscription_SubscriptionType_Recurring,
+        ExternalSubscription_SubscriptionType_Prepaid,
+        ..
+      ),
+
+    -- * ExternalTransaction_TransactionState
+    ExternalTransaction_TransactionState
+      ( ExternalTransaction_TransactionState_TRANSACTIONSTATEUNSPECIFIED,
+        ExternalTransaction_TransactionState_TRANSACTIONREPORTED,
+        ExternalTransaction_TransactionState_TRANSACTIONCANCELED,
+        ..
+      ),
+
+    -- * GeneratedRecoveryApk_RecoveryStatus
+    GeneratedRecoveryApk_RecoveryStatus
+      ( GeneratedRecoveryApk_RecoveryStatus_RECOVERYSTATUSUNSPECIFIED,
+        GeneratedRecoveryApk_RecoveryStatus_RECOVERYSTATUSACTIVE,
+        GeneratedRecoveryApk_RecoveryStatus_RECOVERYSTATUSCANCELED,
+        GeneratedRecoveryApk_RecoveryStatus_RECOVERYSTATUSDRAFT,
+        GeneratedRecoveryApk_RecoveryStatus_RECOVERYSTATUSGENERATIONINPROGRESS,
+        GeneratedRecoveryApk_RecoveryStatus_RECOVERYSTATUSGENERATIONFAILED,
+        ..
+      ),
+
+    -- * Grant_AppLevelPermissionsItem
+    Grant_AppLevelPermissionsItem
+      ( Grant_AppLevelPermissionsItem_APPLEVELPERMISSIONUNSPECIFIED,
+        Grant_AppLevelPermissionsItem_CANACCESSAPP,
+        Grant_AppLevelPermissionsItem_CANVIEWFINANCIALDATA,
+        Grant_AppLevelPermissionsItem_CANMANAGEPERMISSIONS,
+        Grant_AppLevelPermissionsItem_CANREPLYTOREVIEWS,
+        Grant_AppLevelPermissionsItem_CANMANAGEPUBLICAPKS,
+        Grant_AppLevelPermissionsItem_CANMANAGETRACKAPKS,
+        Grant_AppLevelPermissionsItem_CANMANAGETRACKUSERS,
+        Grant_AppLevelPermissionsItem_CANMANAGEPUBLICLISTING,
+        Grant_AppLevelPermissionsItem_CANMANAGEDRAFTAPPS,
+        Grant_AppLevelPermissionsItem_CANMANAGEORDERS,
+        Grant_AppLevelPermissionsItem_CANMANAGEAPPCONTENT,
+        Grant_AppLevelPermissionsItem_CANVIEWNONFINANCIALDATA,
+        Grant_AppLevelPermissionsItem_CANVIEWAPPQUALITY,
+        Grant_AppLevelPermissionsItem_CANMANAGEDEEPLINKS,
+        ..
+      ),
+
+    -- * InAppProduct_PurchaseType
+    InAppProduct_PurchaseType
+      ( InAppProduct_PurchaseType_PurchaseTypeUnspecified,
+        InAppProduct_PurchaseType_ManagedUser,
+        InAppProduct_PurchaseType_Subscription,
+        ..
+      ),
+
+    -- * InAppProduct_Status
+    InAppProduct_Status
+      ( InAppProduct_Status_StatusUnspecified,
+        InAppProduct_Status_Active,
+        InAppProduct_Status_Inactive,
+        ..
+      ),
+
+    -- * InappproductsDeleteRequest_LatencyTolerance
+    InappproductsDeleteRequest_LatencyTolerance
+      ( InappproductsDeleteRequest_LatencyTolerance_PRODUCTUPDATELATENCYTOLERANCEUNSPECIFIED,
+        InappproductsDeleteRequest_LatencyTolerance_PRODUCTUPDATELATENCYTOLERANCELATENCYSENSITIVE,
+        InappproductsDeleteRequest_LatencyTolerance_PRODUCTUPDATELATENCYTOLERANCELATENCYTOLERANT,
+        ..
+      ),
+
+    -- * InappproductsUpdateRequest_LatencyTolerance
+    InappproductsUpdateRequest_LatencyTolerance
+      ( InappproductsUpdateRequest_LatencyTolerance_PRODUCTUPDATELATENCYTOLERANCEUNSPECIFIED,
+        InappproductsUpdateRequest_LatencyTolerance_PRODUCTUPDATELATENCYTOLERANCELATENCYSENSITIVE,
+        InappproductsUpdateRequest_LatencyTolerance_PRODUCTUPDATELATENCYTOLERANCELATENCYTOLERANT,
+        ..
+      ),
+
+    -- * InstallmentsBasePlanType_ProrationMode
+    InstallmentsBasePlanType_ProrationMode
+      ( InstallmentsBasePlanType_ProrationMode_SUBSCRIPTIONPRORATIONMODEUNSPECIFIED,
+        InstallmentsBasePlanType_ProrationMode_SUBSCRIPTIONPRORATIONMODECHARGEONNEXTBILLINGDATE,
+        InstallmentsBasePlanType_ProrationMode_SUBSCRIPTIONPRORATIONMODECHARGEFULLPRICEIMMEDIATELY,
+        ..
+      ),
+
+    -- * InstallmentsBasePlanType_RenewalType
+    InstallmentsBasePlanType_RenewalType
+      ( InstallmentsBasePlanType_RenewalType_RENEWALTYPEUNSPECIFIED,
+        InstallmentsBasePlanType_RenewalType_RENEWALTYPERENEWSWITHOUTCOMMITMENT,
+        InstallmentsBasePlanType_RenewalType_RENEWALTYPERENEWSWITHCOMMITMENT,
+        ..
+      ),
+
+    -- * InstallmentsBasePlanType_ResubscribeState
+    InstallmentsBasePlanType_ResubscribeState
+      ( InstallmentsBasePlanType_ResubscribeState_RESUBSCRIBESTATEUNSPECIFIED,
+        InstallmentsBasePlanType_ResubscribeState_RESUBSCRIBESTATEACTIVE,
+        InstallmentsBasePlanType_ResubscribeState_RESUBSCRIBESTATEINACTIVE,
+        ..
+      ),
+
+    -- * ManagedProductTaxAndComplianceSettings_EeaWithdrawalRightType
+    ManagedProductTaxAndComplianceSettings_EeaWithdrawalRightType
+      ( ManagedProductTaxAndComplianceSettings_EeaWithdrawalRightType_WITHDRAWALRIGHTTYPEUNSPECIFIED,
+        ManagedProductTaxAndComplianceSettings_EeaWithdrawalRightType_WITHDRAWALRIGHTDIGITALCONTENT,
+        ManagedProductTaxAndComplianceSettings_EeaWithdrawalRightType_WITHDRAWALRIGHTSERVICE,
+        ..
+      ),
+
+    -- * MigrateBasePlanPricesRequest_LatencyTolerance
+    MigrateBasePlanPricesRequest_LatencyTolerance
+      ( MigrateBasePlanPricesRequest_LatencyTolerance_PRODUCTUPDATELATENCYTOLERANCEUNSPECIFIED,
+        MigrateBasePlanPricesRequest_LatencyTolerance_PRODUCTUPDATELATENCYTOLERANCELATENCYSENSITIVE,
+        MigrateBasePlanPricesRequest_LatencyTolerance_PRODUCTUPDATELATENCYTOLERANCELATENCYTOLERANT,
+        ..
+      ),
+
+    -- * ModuleMetadata_DeliveryType
+    ModuleMetadata_DeliveryType
+      ( ModuleMetadata_DeliveryType_UNKNOWNDELIVERYTYPE,
+        ModuleMetadata_DeliveryType_INSTALLTIME,
+        ModuleMetadata_DeliveryType_ONDEMAND,
+        ModuleMetadata_DeliveryType_FASTFOLLOW,
+        ..
+      ),
+
+    -- * ModuleMetadata_ModuleType
+    ModuleMetadata_ModuleType
+      ( ModuleMetadata_ModuleType_UNKNOWNMODULETYPE,
+        ModuleMetadata_ModuleType_FEATUREMODULE,
+        ..
+      ),
+
+    -- * PrepaidBasePlanType_TimeExtension
+    PrepaidBasePlanType_TimeExtension
+      ( PrepaidBasePlanType_TimeExtension_TIMEEXTENSIONUNSPECIFIED,
+        PrepaidBasePlanType_TimeExtension_TIMEEXTENSIONACTIVE,
+        PrepaidBasePlanType_TimeExtension_TIMEEXTENSIONINACTIVE,
+        ..
+      ),
+
+    -- * RecurringExternalTransaction_MigratedTransactionProgram
+    RecurringExternalTransaction_MigratedTransactionProgram
+      ( RecurringExternalTransaction_MigratedTransactionProgram_EXTERNALTRANSACTIONPROGRAMUNSPECIFIED,
+        RecurringExternalTransaction_MigratedTransactionProgram_USERCHOICEBILLING,
+        RecurringExternalTransaction_MigratedTransactionProgram_ALTERNATIVEBILLINGONLY,
+        ..
+      ),
+
+    -- * RegionalPriceMigrationConfig_PriceIncreaseType
+    RegionalPriceMigrationConfig_PriceIncreaseType
+      ( RegionalPriceMigrationConfig_PriceIncreaseType_PRICEINCREASETYPEUNSPECIFIED,
+        RegionalPriceMigrationConfig_PriceIncreaseType_PRICEINCREASETYPEOPTIN,
+        RegionalPriceMigrationConfig_PriceIncreaseType_PRICEINCREASETYPEOPTOUT,
+        ..
+      ),
+
+    -- * RegionalTaxRateInfo_StreamingTaxType
+    RegionalTaxRateInfo_StreamingTaxType
+      ( RegionalTaxRateInfo_StreamingTaxType_STREAMINGTAXTYPEUNSPECIFIED,
+        RegionalTaxRateInfo_StreamingTaxType_STREAMINGTAXTYPETELCOVIDEORENTAL,
+        RegionalTaxRateInfo_StreamingTaxType_STREAMINGTAXTYPETELCOVIDEOSALES,
+        RegionalTaxRateInfo_StreamingTaxType_STREAMINGTAXTYPETELCOVIDEOMULTICHANNEL,
+        RegionalTaxRateInfo_StreamingTaxType_STREAMINGTAXTYPETELCOAUDIORENTAL,
+        RegionalTaxRateInfo_StreamingTaxType_STREAMINGTAXTYPETELCOAUDIOSALES,
+        RegionalTaxRateInfo_StreamingTaxType_STREAMINGTAXTYPETELCOAUDIOMULTICHANNEL,
+        ..
+      ),
+
+    -- * RegionalTaxRateInfo_TaxTier
+    RegionalTaxRateInfo_TaxTier
+      ( RegionalTaxRateInfo_TaxTier_TAXTIERUNSPECIFIED,
+        RegionalTaxRateInfo_TaxTier_TAX_TIER_BOOKS_1,
+        RegionalTaxRateInfo_TaxTier_TAX_TIER_NEWS_1,
+        RegionalTaxRateInfo_TaxTier_TAX_TIER_NEWS_2,
+        RegionalTaxRateInfo_TaxTier_TAX_TIER_MUSIC_OR_AUDIO_1,
+        RegionalTaxRateInfo_TaxTier_TAX_TIER_LIVE_OR_BROADCAST_1,
+        ..
+      ),
+
+    -- * ScreenDensity_DensityAlias
+    ScreenDensity_DensityAlias
+      ( ScreenDensity_DensityAlias_DENSITYUNSPECIFIED,
+        ScreenDensity_DensityAlias_Nodpi,
+        ScreenDensity_DensityAlias_Ldpi,
+        ScreenDensity_DensityAlias_Mdpi,
+        ScreenDensity_DensityAlias_Tvdpi,
+        ScreenDensity_DensityAlias_Hdpi,
+        ScreenDensity_DensityAlias_Xhdpi,
+        ScreenDensity_DensityAlias_Xxhdpi,
+        ScreenDensity_DensityAlias_Xxxhdpi,
+        ..
+      ),
+
+    -- * SubscriptionItemPriceChangeDetails_PriceChangeMode
+    SubscriptionItemPriceChangeDetails_PriceChangeMode
+      ( SubscriptionItemPriceChangeDetails_PriceChangeMode_PRICECHANGEMODEUNSPECIFIED,
+        SubscriptionItemPriceChangeDetails_PriceChangeMode_PRICEDECREASE,
+        SubscriptionItemPriceChangeDetails_PriceChangeMode_PRICEINCREASE,
+        SubscriptionItemPriceChangeDetails_PriceChangeMode_OPTOUTPRICEINCREASE,
+        ..
+      ),
+
+    -- * SubscriptionItemPriceChangeDetails_PriceChangeState
+    SubscriptionItemPriceChangeDetails_PriceChangeState
+      ( SubscriptionItemPriceChangeDetails_PriceChangeState_PRICECHANGESTATEUNSPECIFIED,
+        SubscriptionItemPriceChangeDetails_PriceChangeState_Outstanding,
+        SubscriptionItemPriceChangeDetails_PriceChangeState_Confirmed,
+        SubscriptionItemPriceChangeDetails_PriceChangeState_Applied,
+        ..
+      ),
+
+    -- * SubscriptionOffer_State
+    SubscriptionOffer_State
+      ( SubscriptionOffer_State_STATEUNSPECIFIED,
+        SubscriptionOffer_State_Draft,
+        SubscriptionOffer_State_Active,
+        SubscriptionOffer_State_Inactive,
+        ..
+      ),
+
+    -- * SubscriptionPurchaseV2_AcknowledgementState
+    SubscriptionPurchaseV2_AcknowledgementState
+      ( SubscriptionPurchaseV2_AcknowledgementState_ACKNOWLEDGEMENTSTATEUNSPECIFIED,
+        SubscriptionPurchaseV2_AcknowledgementState_ACKNOWLEDGEMENTSTATEPENDING,
+        SubscriptionPurchaseV2_AcknowledgementState_ACKNOWLEDGEMENTSTATEACKNOWLEDGED,
+        ..
+      ),
+
+    -- * SubscriptionPurchaseV2_SubscriptionState
+    SubscriptionPurchaseV2_SubscriptionState
+      ( SubscriptionPurchaseV2_SubscriptionState_SUBSCRIPTIONSTATEUNSPECIFIED,
+        SubscriptionPurchaseV2_SubscriptionState_SUBSCRIPTIONSTATEPENDING,
+        SubscriptionPurchaseV2_SubscriptionState_SUBSCRIPTIONSTATEACTIVE,
+        SubscriptionPurchaseV2_SubscriptionState_SUBSCRIPTIONSTATEPAUSED,
+        SubscriptionPurchaseV2_SubscriptionState_SUBSCRIPTIONSTATEINGRACEPERIOD,
+        SubscriptionPurchaseV2_SubscriptionState_SUBSCRIPTIONSTATEONHOLD,
+        SubscriptionPurchaseV2_SubscriptionState_SUBSCRIPTIONSTATECANCELED,
+        SubscriptionPurchaseV2_SubscriptionState_SUBSCRIPTIONSTATEEXPIRED,
+        SubscriptionPurchaseV2_SubscriptionState_SUBSCRIPTIONSTATEPENDINGPURCHASECANCELED,
+        ..
+      ),
+
+    -- * SubscriptionTaxAndComplianceSettings_EeaWithdrawalRightType
+    SubscriptionTaxAndComplianceSettings_EeaWithdrawalRightType
+      ( SubscriptionTaxAndComplianceSettings_EeaWithdrawalRightType_WITHDRAWALRIGHTTYPEUNSPECIFIED,
+        SubscriptionTaxAndComplianceSettings_EeaWithdrawalRightType_WITHDRAWALRIGHTDIGITALCONTENT,
+        SubscriptionTaxAndComplianceSettings_EeaWithdrawalRightType_WITHDRAWALRIGHTSERVICE,
+        ..
+      ),
+
+    -- * TextureCompressionFormat_Alias
+    TextureCompressionFormat_Alias
+      ( TextureCompressionFormat_Alias_UNSPECIFIEDTEXTURECOMPRESSIONFORMAT,
+        TextureCompressionFormat_Alias_ETC1_RGB8,
+        TextureCompressionFormat_Alias_Paletted,
+        TextureCompressionFormat_Alias_THREEDC,
+        TextureCompressionFormat_Alias_Atc,
+        TextureCompressionFormat_Alias_Latc,
+        TextureCompressionFormat_Alias_DXT1,
+        TextureCompressionFormat_Alias_S3TC,
+        TextureCompressionFormat_Alias_Pvrtc,
+        TextureCompressionFormat_Alias_Astc,
+        TextureCompressionFormat_Alias_ETC2,
+        ..
+      ),
+
+    -- * TrackConfig_FormFactor
+    TrackConfig_FormFactor
+      ( TrackConfig_FormFactor_FORMFACTORUNSPECIFIED,
+        TrackConfig_FormFactor_Default,
+        TrackConfig_FormFactor_Wear,
+        TrackConfig_FormFactor_Automotive,
+        ..
+      ),
+
+    -- * TrackConfig_Type
+    TrackConfig_Type
+      ( TrackConfig_Type_TRACKTYPEUNSPECIFIED,
+        TrackConfig_Type_CLOSEDTESTING,
+        ..
+      ),
+
+    -- * TrackRelease_Status
+    TrackRelease_Status
+      ( TrackRelease_Status_StatusUnspecified,
+        TrackRelease_Status_Draft,
+        TrackRelease_Status_InProgress,
+        TrackRelease_Status_Halted,
+        TrackRelease_Status_Completed,
+        ..
+      ),
+
+    -- * UpdateSubscriptionOfferRequest_LatencyTolerance
+    UpdateSubscriptionOfferRequest_LatencyTolerance
+      ( UpdateSubscriptionOfferRequest_LatencyTolerance_PRODUCTUPDATELATENCYTOLERANCEUNSPECIFIED,
+        UpdateSubscriptionOfferRequest_LatencyTolerance_PRODUCTUPDATELATENCYTOLERANCELATENCYSENSITIVE,
+        UpdateSubscriptionOfferRequest_LatencyTolerance_PRODUCTUPDATELATENCYTOLERANCELATENCYTOLERANT,
+        ..
+      ),
+
+    -- * UpdateSubscriptionRequest_LatencyTolerance
+    UpdateSubscriptionRequest_LatencyTolerance
+      ( UpdateSubscriptionRequest_LatencyTolerance_PRODUCTUPDATELATENCYTOLERANCEUNSPECIFIED,
+        UpdateSubscriptionRequest_LatencyTolerance_PRODUCTUPDATELATENCYTOLERANCELATENCYSENSITIVE,
+        UpdateSubscriptionRequest_LatencyTolerance_PRODUCTUPDATELATENCYTOLERANCELATENCYTOLERANT,
+        ..
+      ),
+
+    -- * User_AccessState
+    User_AccessState
+      ( User_AccessState_ACCESSSTATEUNSPECIFIED,
+        User_AccessState_Invited,
+        User_AccessState_INVITATIONEXPIRED,
+        User_AccessState_ACCESSGRANTED,
+        User_AccessState_ACCESSEXPIRED,
+        ..
+      ),
+
+    -- * User_DeveloperAccountPermissionsItem
+    User_DeveloperAccountPermissionsItem
+      ( User_DeveloperAccountPermissionsItem_DEVELOPERLEVELPERMISSIONUNSPECIFIED,
+        User_DeveloperAccountPermissionsItem_CANSEEALLAPPS,
+        User_DeveloperAccountPermissionsItem_CANVIEWFINANCIALDATAGLOBAL,
+        User_DeveloperAccountPermissionsItem_CANMANAGEPERMISSIONSGLOBAL,
+        User_DeveloperAccountPermissionsItem_CANEDITGAMESGLOBAL,
+        User_DeveloperAccountPermissionsItem_CANPUBLISHGAMESGLOBAL,
+        User_DeveloperAccountPermissionsItem_CANREPLYTOREVIEWSGLOBAL,
+        User_DeveloperAccountPermissionsItem_CANMANAGEPUBLICAPKSGLOBAL,
+        User_DeveloperAccountPermissionsItem_CANMANAGETRACKAPKSGLOBAL,
+        User_DeveloperAccountPermissionsItem_CANMANAGETRACKUSERSGLOBAL,
+        User_DeveloperAccountPermissionsItem_CANMANAGEPUBLICLISTINGGLOBAL,
+        User_DeveloperAccountPermissionsItem_CANMANAGEDRAFTAPPSGLOBAL,
+        User_DeveloperAccountPermissionsItem_CANCREATEMANAGEDPLAYAPPSGLOBAL,
+        User_DeveloperAccountPermissionsItem_CANCHANGEMANAGEDPLAYSETTINGGLOBAL,
+        User_DeveloperAccountPermissionsItem_CANMANAGEORDERSGLOBAL,
+        User_DeveloperAccountPermissionsItem_CANMANAGEAPPCONTENTGLOBAL,
+        User_DeveloperAccountPermissionsItem_CANVIEWNONFINANCIALDATAGLOBAL,
+        User_DeveloperAccountPermissionsItem_CANVIEWAPPQUALITYGLOBAL,
+        User_DeveloperAccountPermissionsItem_CANMANAGEDEEPLINKSGLOBAL,
+        ..
+      ),
+
+    -- * EditsDeobfuscationfilesUploadDeobfuscationFileType
+    EditsDeobfuscationfilesUploadDeobfuscationFileType
+      ( EditsDeobfuscationfilesUploadDeobfuscationFileType_DeobfuscationFileTypeUnspecified,
+        EditsDeobfuscationfilesUploadDeobfuscationFileType_Proguard,
+        EditsDeobfuscationfilesUploadDeobfuscationFileType_NativeCode,
+        ..
+      ),
+
+    -- * EditsExpansionfilesGetExpansionFileType
+    EditsExpansionfilesGetExpansionFileType
+      ( EditsExpansionfilesGetExpansionFileType_ExpansionFileTypeUnspecified,
+        EditsExpansionfilesGetExpansionFileType_Main,
+        EditsExpansionfilesGetExpansionFileType_Patch',
+        ..
+      ),
+
+    -- * EditsExpansionfilesPatchExpansionFileType
+    EditsExpansionfilesPatchExpansionFileType
+      ( EditsExpansionfilesPatchExpansionFileType_ExpansionFileTypeUnspecified,
+        EditsExpansionfilesPatchExpansionFileType_Main,
+        EditsExpansionfilesPatchExpansionFileType_Patch',
+        ..
+      ),
+
+    -- * EditsExpansionfilesUpdateExpansionFileType
+    EditsExpansionfilesUpdateExpansionFileType
+      ( EditsExpansionfilesUpdateExpansionFileType_ExpansionFileTypeUnspecified,
+        EditsExpansionfilesUpdateExpansionFileType_Main,
+        EditsExpansionfilesUpdateExpansionFileType_Patch',
+        ..
+      ),
+
+    -- * EditsExpansionfilesUploadExpansionFileType
+    EditsExpansionfilesUploadExpansionFileType
+      ( EditsExpansionfilesUploadExpansionFileType_ExpansionFileTypeUnspecified,
+        EditsExpansionfilesUploadExpansionFileType_Main,
+        EditsExpansionfilesUploadExpansionFileType_Patch',
+        ..
+      ),
+
+    -- * EditsImagesDeleteImageType
+    EditsImagesDeleteImageType
+      ( EditsImagesDeleteImageType_AppImageTypeUnspecified,
+        EditsImagesDeleteImageType_PhoneScreenshots,
+        EditsImagesDeleteImageType_SevenInchScreenshots,
+        EditsImagesDeleteImageType_TenInchScreenshots,
+        EditsImagesDeleteImageType_TvScreenshots,
+        EditsImagesDeleteImageType_WearScreenshots,
+        EditsImagesDeleteImageType_Icon,
+        EditsImagesDeleteImageType_FeatureGraphic,
+        EditsImagesDeleteImageType_TvBanner,
+        ..
+      ),
+
+    -- * EditsImagesDeleteallImageType
+    EditsImagesDeleteallImageType
+      ( EditsImagesDeleteallImageType_AppImageTypeUnspecified,
+        EditsImagesDeleteallImageType_PhoneScreenshots,
+        EditsImagesDeleteallImageType_SevenInchScreenshots,
+        EditsImagesDeleteallImageType_TenInchScreenshots,
+        EditsImagesDeleteallImageType_TvScreenshots,
+        EditsImagesDeleteallImageType_WearScreenshots,
+        EditsImagesDeleteallImageType_Icon,
+        EditsImagesDeleteallImageType_FeatureGraphic,
+        EditsImagesDeleteallImageType_TvBanner,
+        ..
+      ),
+
+    -- * EditsImagesListImageType
+    EditsImagesListImageType
+      ( EditsImagesListImageType_AppImageTypeUnspecified,
+        EditsImagesListImageType_PhoneScreenshots,
+        EditsImagesListImageType_SevenInchScreenshots,
+        EditsImagesListImageType_TenInchScreenshots,
+        EditsImagesListImageType_TvScreenshots,
+        EditsImagesListImageType_WearScreenshots,
+        EditsImagesListImageType_Icon,
+        EditsImagesListImageType_FeatureGraphic,
+        EditsImagesListImageType_TvBanner,
+        ..
+      ),
+
+    -- * EditsImagesUploadImageType
+    EditsImagesUploadImageType
+      ( EditsImagesUploadImageType_AppImageTypeUnspecified,
+        EditsImagesUploadImageType_PhoneScreenshots,
+        EditsImagesUploadImageType_SevenInchScreenshots,
+        EditsImagesUploadImageType_TenInchScreenshots,
+        EditsImagesUploadImageType_TvScreenshots,
+        EditsImagesUploadImageType_WearScreenshots,
+        EditsImagesUploadImageType_Icon,
+        EditsImagesUploadImageType_FeatureGraphic,
+        EditsImagesUploadImageType_TvBanner,
+        ..
+      ),
+
+    -- * InappproductsDeleteLatencyTolerance
+    InappproductsDeleteLatencyTolerance
+      ( InappproductsDeleteLatencyTolerance_PRODUCTUPDATELATENCYTOLERANCEUNSPECIFIED,
+        InappproductsDeleteLatencyTolerance_PRODUCTUPDATELATENCYTOLERANCELATENCYSENSITIVE,
+        InappproductsDeleteLatencyTolerance_PRODUCTUPDATELATENCYTOLERANCELATENCYTOLERANT,
+        ..
+      ),
+
+    -- * InappproductsPatchLatencyTolerance
+    InappproductsPatchLatencyTolerance
+      ( InappproductsPatchLatencyTolerance_PRODUCTUPDATELATENCYTOLERANCEUNSPECIFIED,
+        InappproductsPatchLatencyTolerance_PRODUCTUPDATELATENCYTOLERANCELATENCYSENSITIVE,
+        InappproductsPatchLatencyTolerance_PRODUCTUPDATELATENCYTOLERANCELATENCYTOLERANT,
+        ..
+      ),
+
+    -- * InappproductsUpdateLatencyTolerance
+    InappproductsUpdateLatencyTolerance
+      ( InappproductsUpdateLatencyTolerance_PRODUCTUPDATELATENCYTOLERANCEUNSPECIFIED,
+        InappproductsUpdateLatencyTolerance_PRODUCTUPDATELATENCYTOLERANCELATENCYSENSITIVE,
+        InappproductsUpdateLatencyTolerance_PRODUCTUPDATELATENCYTOLERANCELATENCYTOLERANT,
+        ..
+      ),
+
+    -- * MonetizationSubscriptionsBasePlansOffersPatchLatencyTolerance
+    MonetizationSubscriptionsBasePlansOffersPatchLatencyTolerance
+      ( MonetizationSubscriptionsBasePlansOffersPatchLatencyTolerance_PRODUCTUPDATELATENCYTOLERANCEUNSPECIFIED,
+        MonetizationSubscriptionsBasePlansOffersPatchLatencyTolerance_PRODUCTUPDATELATENCYTOLERANCELATENCYSENSITIVE,
+        MonetizationSubscriptionsBasePlansOffersPatchLatencyTolerance_PRODUCTUPDATELATENCYTOLERANCELATENCYTOLERANT,
+        ..
+      ),
+
+    -- * MonetizationSubscriptionsPatchLatencyTolerance
+    MonetizationSubscriptionsPatchLatencyTolerance
+      ( MonetizationSubscriptionsPatchLatencyTolerance_PRODUCTUPDATELATENCYTOLERANCEUNSPECIFIED,
+        MonetizationSubscriptionsPatchLatencyTolerance_PRODUCTUPDATELATENCYTOLERANCELATENCYSENSITIVE,
+        MonetizationSubscriptionsPatchLatencyTolerance_PRODUCTUPDATELATENCYTOLERANCELATENCYTOLERANT,
+        ..
+      ),
+  )
+where
+
+import Gogol.Prelude qualified as Core
+
+-- | V1 error format.
+newtype Xgafv = Xgafv {fromXgafv :: Core.Text}
+  deriving stock (Core.Show, Core.Read, Core.Eq, Core.Ord, Core.Generic)
+  deriving newtype
+    ( Core.Hashable,
+      Core.ToHttpApiData,
+      Core.FromHttpApiData,
+      Core.ToJSON,
+      Core.ToJSONKey,
+      Core.FromJSON,
+      Core.FromJSONKey
+    )
+
+-- | v1 error format
+pattern Xgafv_1 :: Xgafv
+pattern Xgafv_1 = Xgafv "1"
+
+-- | v2 error format
+pattern Xgafv_2 :: Xgafv
+pattern Xgafv_2 = Xgafv "2"
+
+{-# COMPLETE
+  Xgafv_1,
+  Xgafv_2,
+  Xgafv
+  #-}
+
+-- | Alias for an abi.
+newtype Abi_Alias = Abi_Alias {fromAbi_Alias :: Core.Text}
+  deriving stock (Core.Show, Core.Read, Core.Eq, Core.Ord, Core.Generic)
+  deriving newtype
+    ( Core.Hashable,
+      Core.ToHttpApiData,
+      Core.FromHttpApiData,
+      Core.ToJSON,
+      Core.ToJSONKey,
+      Core.FromJSON,
+      Core.FromJSONKey
+    )
+
+-- | Unspecified abi.
+pattern Abi_Alias_UNSPECIFIEDCPUARCHITECTURE :: Abi_Alias
+pattern Abi_Alias_UNSPECIFIEDCPUARCHITECTURE = Abi_Alias "UNSPECIFIED_CPU_ARCHITECTURE"
+
+-- | ARMEABI abi.
+pattern Abi_Alias_Armeabi :: Abi_Alias
+pattern Abi_Alias_Armeabi = Abi_Alias "ARMEABI"
+
+-- | ARMEABI_V7A abi.
+pattern Abi_Alias_ARMEABIV7A :: Abi_Alias
+pattern Abi_Alias_ARMEABIV7A = Abi_Alias "ARMEABI_V7A"
+
+-- | ARM64_V8A abi.
+pattern Abi_Alias_ARM64V8A :: Abi_Alias
+pattern Abi_Alias_ARM64V8A = Abi_Alias "ARM64_V8A"
+
+-- | X86 abi.
+pattern Abi_Alias_X86 :: Abi_Alias
+pattern Abi_Alias_X86 = Abi_Alias "X86"
+
+-- | X86_64 abi.
+pattern Abi_Alias_X86_64 :: Abi_Alias
+pattern Abi_Alias_X86_64 = Abi_Alias "X86_64"
+
+-- | RISCV64 abi.
+pattern Abi_Alias_RISCV64 :: Abi_Alias
+pattern Abi_Alias_RISCV64 = Abi_Alias "RISCV64"
+
+{-# COMPLETE
+  Abi_Alias_UNSPECIFIEDCPUARCHITECTURE,
+  Abi_Alias_Armeabi,
+  Abi_Alias_ARMEABIV7A,
+  Abi_Alias_ARM64V8A,
+  Abi_Alias_X86,
+  Abi_Alias_X86_64,
+  Abi_Alias_RISCV64,
+  Abi_Alias
+  #-}
+
+-- | Optional. The latency tolerance for the propagation of this product update. Defaults to latency-sensitive.
+newtype ActivateBasePlanRequest_LatencyTolerance = ActivateBasePlanRequest_LatencyTolerance {fromActivateBasePlanRequest_LatencyTolerance :: Core.Text}
+  deriving stock (Core.Show, Core.Read, Core.Eq, Core.Ord, Core.Generic)
+  deriving newtype
+    ( Core.Hashable,
+      Core.ToHttpApiData,
+      Core.FromHttpApiData,
+      Core.ToJSON,
+      Core.ToJSONKey,
+      Core.FromJSON,
+      Core.FromJSONKey
+    )
+
+-- | Defaults to PRODUCT/UPDATE/LATENCY/TOLERANCE/LATENCY_SENSITIVE.
+pattern ActivateBasePlanRequest_LatencyTolerance_PRODUCTUPDATELATENCYTOLERANCEUNSPECIFIED :: ActivateBasePlanRequest_LatencyTolerance
+pattern ActivateBasePlanRequest_LatencyTolerance_PRODUCTUPDATELATENCYTOLERANCEUNSPECIFIED = ActivateBasePlanRequest_LatencyTolerance "PRODUCT_UPDATE_LATENCY_TOLERANCE_UNSPECIFIED"
+
+-- | The update will propagate to clients within several minutes on average and up to a few hours in rare cases. Throughput is limited to 7,200 updates per app per hour.
+pattern ActivateBasePlanRequest_LatencyTolerance_PRODUCTUPDATELATENCYTOLERANCELATENCYSENSITIVE :: ActivateBasePlanRequest_LatencyTolerance
+pattern ActivateBasePlanRequest_LatencyTolerance_PRODUCTUPDATELATENCYTOLERANCELATENCYSENSITIVE = ActivateBasePlanRequest_LatencyTolerance "PRODUCT_UPDATE_LATENCY_TOLERANCE_LATENCY_SENSITIVE"
+
+-- | The update will propagate to clients within 24 hours. Supports high throughput of up to 720,000 updates per app per hour using batch modification methods.
+pattern ActivateBasePlanRequest_LatencyTolerance_PRODUCTUPDATELATENCYTOLERANCELATENCYTOLERANT :: ActivateBasePlanRequest_LatencyTolerance
+pattern ActivateBasePlanRequest_LatencyTolerance_PRODUCTUPDATELATENCYTOLERANCELATENCYTOLERANT = ActivateBasePlanRequest_LatencyTolerance "PRODUCT_UPDATE_LATENCY_TOLERANCE_LATENCY_TOLERANT"
+
+{-# COMPLETE
+  ActivateBasePlanRequest_LatencyTolerance_PRODUCTUPDATELATENCYTOLERANCEUNSPECIFIED,
+  ActivateBasePlanRequest_LatencyTolerance_PRODUCTUPDATELATENCYTOLERANCELATENCYSENSITIVE,
+  ActivateBasePlanRequest_LatencyTolerance_PRODUCTUPDATELATENCYTOLERANCELATENCYTOLERANT,
+  ActivateBasePlanRequest_LatencyTolerance
+  #-}
+
+-- | Optional. The latency tolerance for the propagation of this product update. Defaults to latency-sensitive.
+newtype ActivateSubscriptionOfferRequest_LatencyTolerance = ActivateSubscriptionOfferRequest_LatencyTolerance {fromActivateSubscriptionOfferRequest_LatencyTolerance :: Core.Text}
+  deriving stock (Core.Show, Core.Read, Core.Eq, Core.Ord, Core.Generic)
+  deriving newtype
+    ( Core.Hashable,
+      Core.ToHttpApiData,
+      Core.FromHttpApiData,
+      Core.ToJSON,
+      Core.ToJSONKey,
+      Core.FromJSON,
+      Core.FromJSONKey
+    )
+
+-- | Defaults to PRODUCT/UPDATE/LATENCY/TOLERANCE/LATENCY_SENSITIVE.
+pattern ActivateSubscriptionOfferRequest_LatencyTolerance_PRODUCTUPDATELATENCYTOLERANCEUNSPECIFIED :: ActivateSubscriptionOfferRequest_LatencyTolerance
+pattern ActivateSubscriptionOfferRequest_LatencyTolerance_PRODUCTUPDATELATENCYTOLERANCEUNSPECIFIED = ActivateSubscriptionOfferRequest_LatencyTolerance "PRODUCT_UPDATE_LATENCY_TOLERANCE_UNSPECIFIED"
+
+-- | The update will propagate to clients within several minutes on average and up to a few hours in rare cases. Throughput is limited to 7,200 updates per app per hour.
+pattern ActivateSubscriptionOfferRequest_LatencyTolerance_PRODUCTUPDATELATENCYTOLERANCELATENCYSENSITIVE :: ActivateSubscriptionOfferRequest_LatencyTolerance
+pattern ActivateSubscriptionOfferRequest_LatencyTolerance_PRODUCTUPDATELATENCYTOLERANCELATENCYSENSITIVE = ActivateSubscriptionOfferRequest_LatencyTolerance "PRODUCT_UPDATE_LATENCY_TOLERANCE_LATENCY_SENSITIVE"
+
+-- | The update will propagate to clients within 24 hours. Supports high throughput of up to 720,000 updates per app per hour using batch modification methods.
+pattern ActivateSubscriptionOfferRequest_LatencyTolerance_PRODUCTUPDATELATENCYTOLERANCELATENCYTOLERANT :: ActivateSubscriptionOfferRequest_LatencyTolerance
+pattern ActivateSubscriptionOfferRequest_LatencyTolerance_PRODUCTUPDATELATENCYTOLERANCELATENCYTOLERANT = ActivateSubscriptionOfferRequest_LatencyTolerance "PRODUCT_UPDATE_LATENCY_TOLERANCE_LATENCY_TOLERANT"
+
+{-# COMPLETE
+  ActivateSubscriptionOfferRequest_LatencyTolerance_PRODUCTUPDATELATENCYTOLERANCEUNSPECIFIED,
+  ActivateSubscriptionOfferRequest_LatencyTolerance_PRODUCTUPDATELATENCYTOLERANCELATENCYSENSITIVE,
+  ActivateSubscriptionOfferRequest_LatencyTolerance_PRODUCTUPDATELATENCYTOLERANCELATENCYTOLERANT,
+  ActivateSubscriptionOfferRequest_LatencyTolerance
+  #-}
+
+-- | The status of the recovery action.
+newtype AppRecoveryAction_Status = AppRecoveryAction_Status {fromAppRecoveryAction_Status :: Core.Text}
+  deriving stock (Core.Show, Core.Read, Core.Eq, Core.Ord, Core.Generic)
+  deriving newtype
+    ( Core.Hashable,
+      Core.ToHttpApiData,
+      Core.FromHttpApiData,
+      Core.ToJSON,
+      Core.ToJSONKey,
+      Core.FromJSON,
+      Core.FromJSONKey
+    )
+
+-- | RecoveryStatus is unspecified.
+pattern AppRecoveryAction_Status_RECOVERYSTATUSUNSPECIFIED :: AppRecoveryAction_Status
+pattern AppRecoveryAction_Status_RECOVERYSTATUSUNSPECIFIED = AppRecoveryAction_Status "RECOVERY_STATUS_UNSPECIFIED"
+
+-- | The app recovery action has not been canceled since it has been created.
+pattern AppRecoveryAction_Status_RECOVERYSTATUSACTIVE :: AppRecoveryAction_Status
+pattern AppRecoveryAction_Status_RECOVERYSTATUSACTIVE = AppRecoveryAction_Status "RECOVERY_STATUS_ACTIVE"
+
+-- | The recovery action has been canceled. The action cannot be resumed.
+pattern AppRecoveryAction_Status_RECOVERYSTATUSCANCELED :: AppRecoveryAction_Status
+pattern AppRecoveryAction_Status_RECOVERYSTATUSCANCELED = AppRecoveryAction_Status "RECOVERY_STATUS_CANCELED"
+
+-- | The recovery action is in the draft state and has not yet been deployed to users.
+pattern AppRecoveryAction_Status_RECOVERYSTATUSDRAFT :: AppRecoveryAction_Status
+pattern AppRecoveryAction_Status_RECOVERYSTATUSDRAFT = AppRecoveryAction_Status "RECOVERY_STATUS_DRAFT"
+
+-- | The recovery action is generating recovery apks.
+pattern AppRecoveryAction_Status_RECOVERYSTATUSGENERATIONINPROGRESS :: AppRecoveryAction_Status
+pattern AppRecoveryAction_Status_RECOVERYSTATUSGENERATIONINPROGRESS = AppRecoveryAction_Status "RECOVERY_STATUS_GENERATION_IN_PROGRESS"
+
+-- | The app recovery action generation has failed.
+pattern AppRecoveryAction_Status_RECOVERYSTATUSGENERATIONFAILED :: AppRecoveryAction_Status
+pattern AppRecoveryAction_Status_RECOVERYSTATUSGENERATIONFAILED = AppRecoveryAction_Status "RECOVERY_STATUS_GENERATION_FAILED"
+
+{-# COMPLETE
+  AppRecoveryAction_Status_RECOVERYSTATUSUNSPECIFIED,
+  AppRecoveryAction_Status_RECOVERYSTATUSACTIVE,
+  AppRecoveryAction_Status_RECOVERYSTATUSCANCELED,
+  AppRecoveryAction_Status_RECOVERYSTATUSDRAFT,
+  AppRecoveryAction_Status_RECOVERYSTATUSGENERATIONINPROGRESS,
+  AppRecoveryAction_Status_RECOVERYSTATUSGENERATIONFAILED,
+  AppRecoveryAction_Status
+  #-}
+
+-- | Indicates the delivery type for persistent install.
+newtype AssetModuleMetadata_DeliveryType = AssetModuleMetadata_DeliveryType {fromAssetModuleMetadata_DeliveryType :: Core.Text}
+  deriving stock (Core.Show, Core.Read, Core.Eq, Core.Ord, Core.Generic)
+  deriving newtype
+    ( Core.Hashable,
+      Core.ToHttpApiData,
+      Core.FromHttpApiData,
+      Core.ToJSON,
+      Core.ToJSONKey,
+      Core.FromJSON,
+      Core.FromJSONKey
+    )
+
+-- | Unspecified delivery type.
+pattern AssetModuleMetadata_DeliveryType_UNKNOWNDELIVERYTYPE :: AssetModuleMetadata_DeliveryType
+pattern AssetModuleMetadata_DeliveryType_UNKNOWNDELIVERYTYPE = AssetModuleMetadata_DeliveryType "UNKNOWN_DELIVERY_TYPE"
+
+-- | This module will always be downloaded as part of the initial install of the app.
+pattern AssetModuleMetadata_DeliveryType_INSTALLTIME :: AssetModuleMetadata_DeliveryType
+pattern AssetModuleMetadata_DeliveryType_INSTALLTIME = AssetModuleMetadata_DeliveryType "INSTALL_TIME"
+
+-- | This module is requested on-demand, which means it will not be part of the initial install, and will only be sent when requested by the client.
+pattern AssetModuleMetadata_DeliveryType_ONDEMAND :: AssetModuleMetadata_DeliveryType
+pattern AssetModuleMetadata_DeliveryType_ONDEMAND = AssetModuleMetadata_DeliveryType "ON_DEMAND"
+
+-- | This module will be downloaded immediately after initial install finishes. The app can be opened before these modules are downloaded.
+pattern AssetModuleMetadata_DeliveryType_FASTFOLLOW :: AssetModuleMetadata_DeliveryType
+pattern AssetModuleMetadata_DeliveryType_FASTFOLLOW = AssetModuleMetadata_DeliveryType "FAST_FOLLOW"
+
+{-# COMPLETE
+  AssetModuleMetadata_DeliveryType_UNKNOWNDELIVERYTYPE,
+  AssetModuleMetadata_DeliveryType_INSTALLTIME,
+  AssetModuleMetadata_DeliveryType_ONDEMAND,
+  AssetModuleMetadata_DeliveryType_FASTFOLLOW,
+  AssetModuleMetadata_DeliveryType
+  #-}
+
+-- | The proration mode for the base plan determines what happens when a user switches to this plan from another base plan. If unspecified, defaults to CHARGE/ON/NEXT/BILLING/DATE.
+newtype AutoRenewingBasePlanType_ProrationMode = AutoRenewingBasePlanType_ProrationMode {fromAutoRenewingBasePlanType_ProrationMode :: Core.Text}
+  deriving stock (Core.Show, Core.Read, Core.Eq, Core.Ord, Core.Generic)
+  deriving newtype
+    ( Core.Hashable,
+      Core.ToHttpApiData,
+      Core.FromHttpApiData,
+      Core.ToJSON,
+      Core.ToJSONKey,
+      Core.FromJSON,
+      Core.FromJSONKey
+    )
+
+-- | Unspecified mode.
+pattern AutoRenewingBasePlanType_ProrationMode_SUBSCRIPTIONPRORATIONMODEUNSPECIFIED :: AutoRenewingBasePlanType_ProrationMode
+pattern AutoRenewingBasePlanType_ProrationMode_SUBSCRIPTIONPRORATIONMODEUNSPECIFIED = AutoRenewingBasePlanType_ProrationMode "SUBSCRIPTION_PRORATION_MODE_UNSPECIFIED"
+
+-- | Users will be charged for their new base plan at the end of their current billing period.
+pattern AutoRenewingBasePlanType_ProrationMode_SUBSCRIPTIONPRORATIONMODECHARGEONNEXTBILLINGDATE :: AutoRenewingBasePlanType_ProrationMode
+pattern AutoRenewingBasePlanType_ProrationMode_SUBSCRIPTIONPRORATIONMODECHARGEONNEXTBILLINGDATE = AutoRenewingBasePlanType_ProrationMode "SUBSCRIPTION_PRORATION_MODE_CHARGE_ON_NEXT_BILLING_DATE"
+
+-- | Users will be charged for their new base plan immediately and in full. Any remaining period of their existing subscription will be used to extend the duration of the new billing plan.
+pattern AutoRenewingBasePlanType_ProrationMode_SUBSCRIPTIONPRORATIONMODECHARGEFULLPRICEIMMEDIATELY :: AutoRenewingBasePlanType_ProrationMode
+pattern AutoRenewingBasePlanType_ProrationMode_SUBSCRIPTIONPRORATIONMODECHARGEFULLPRICEIMMEDIATELY = AutoRenewingBasePlanType_ProrationMode "SUBSCRIPTION_PRORATION_MODE_CHARGE_FULL_PRICE_IMMEDIATELY"
+
+{-# COMPLETE
+  AutoRenewingBasePlanType_ProrationMode_SUBSCRIPTIONPRORATIONMODEUNSPECIFIED,
+  AutoRenewingBasePlanType_ProrationMode_SUBSCRIPTIONPRORATIONMODECHARGEONNEXTBILLINGDATE,
+  AutoRenewingBasePlanType_ProrationMode_SUBSCRIPTIONPRORATIONMODECHARGEFULLPRICEIMMEDIATELY,
+  AutoRenewingBasePlanType_ProrationMode
+  #-}
+
+-- | Whether users should be able to resubscribe to this base plan in Google Play surfaces. Defaults to RESUBSCRIBE/STATE/ACTIVE if not specified.
+newtype AutoRenewingBasePlanType_ResubscribeState = AutoRenewingBasePlanType_ResubscribeState {fromAutoRenewingBasePlanType_ResubscribeState :: Core.Text}
+  deriving stock (Core.Show, Core.Read, Core.Eq, Core.Ord, Core.Generic)
+  deriving newtype
+    ( Core.Hashable,
+      Core.ToHttpApiData,
+      Core.FromHttpApiData,
+      Core.ToJSON,
+      Core.ToJSONKey,
+      Core.FromJSON,
+      Core.FromJSONKey
+    )
+
+-- | Unspecified state.
+pattern AutoRenewingBasePlanType_ResubscribeState_RESUBSCRIBESTATEUNSPECIFIED :: AutoRenewingBasePlanType_ResubscribeState
+pattern AutoRenewingBasePlanType_ResubscribeState_RESUBSCRIBESTATEUNSPECIFIED = AutoRenewingBasePlanType_ResubscribeState "RESUBSCRIBE_STATE_UNSPECIFIED"
+
+-- | Resubscribe is active.
+pattern AutoRenewingBasePlanType_ResubscribeState_RESUBSCRIBESTATEACTIVE :: AutoRenewingBasePlanType_ResubscribeState
+pattern AutoRenewingBasePlanType_ResubscribeState_RESUBSCRIBESTATEACTIVE = AutoRenewingBasePlanType_ResubscribeState "RESUBSCRIBE_STATE_ACTIVE"
+
+-- | Resubscribe is inactive.
+pattern AutoRenewingBasePlanType_ResubscribeState_RESUBSCRIBESTATEINACTIVE :: AutoRenewingBasePlanType_ResubscribeState
+pattern AutoRenewingBasePlanType_ResubscribeState_RESUBSCRIBESTATEINACTIVE = AutoRenewingBasePlanType_ResubscribeState "RESUBSCRIBE_STATE_INACTIVE"
+
+{-# COMPLETE
+  AutoRenewingBasePlanType_ResubscribeState_RESUBSCRIBESTATEUNSPECIFIED,
+  AutoRenewingBasePlanType_ResubscribeState_RESUBSCRIBESTATEACTIVE,
+  AutoRenewingBasePlanType_ResubscribeState_RESUBSCRIBESTATEINACTIVE,
+  AutoRenewingBasePlanType_ResubscribeState
+  #-}
+
+-- | Output only. The state of the base plan, i.e. whether it\'s active. Draft and inactive base plans can be activated or deleted. Active base plans can be made inactive. Inactive base plans can be canceled. This field cannot be changed by updating the resource. Use the dedicated endpoints instead.
+newtype BasePlan_State = BasePlan_State {fromBasePlan_State :: Core.Text}
+  deriving stock (Core.Show, Core.Read, Core.Eq, Core.Ord, Core.Generic)
+  deriving newtype
+    ( Core.Hashable,
+      Core.ToHttpApiData,
+      Core.FromHttpApiData,
+      Core.ToJSON,
+      Core.ToJSONKey,
+      Core.FromJSON,
+      Core.FromJSONKey
+    )
+
+-- | Unspecified state.
+pattern BasePlan_State_STATEUNSPECIFIED :: BasePlan_State
+pattern BasePlan_State_STATEUNSPECIFIED = BasePlan_State "STATE_UNSPECIFIED"
+
+-- | The base plan is currently in a draft state, and hasn\'t been activated. It can be safely deleted at this point.
+pattern BasePlan_State_Draft :: BasePlan_State
+pattern BasePlan_State_Draft = BasePlan_State "DRAFT"
+
+-- | The base plan is active and available for new subscribers.
+pattern BasePlan_State_Active :: BasePlan_State
+pattern BasePlan_State_Active = BasePlan_State "ACTIVE"
+
+-- | The base plan is inactive and only available for existing subscribers.
+pattern BasePlan_State_Inactive :: BasePlan_State
+pattern BasePlan_State_Inactive = BasePlan_State "INACTIVE"
+
+{-# COMPLETE
+  BasePlan_State_STATEUNSPECIFIED,
+  BasePlan_State_Draft,
+  BasePlan_State_Active,
+  BasePlan_State_Inactive,
+  BasePlan_State
+  #-}
+
+-- | The reason the user selected in the cancel survey.
+newtype CancelSurveyResult_Reason = CancelSurveyResult_Reason {fromCancelSurveyResult_Reason :: Core.Text}
+  deriving stock (Core.Show, Core.Read, Core.Eq, Core.Ord, Core.Generic)
+  deriving newtype
+    ( Core.Hashable,
+      Core.ToHttpApiData,
+      Core.FromHttpApiData,
+      Core.ToJSON,
+      Core.ToJSONKey,
+      Core.FromJSON,
+      Core.FromJSONKey
+    )
+
+-- | Unspecified cancel survey reason.
+pattern CancelSurveyResult_Reason_CANCELSURVEYREASONUNSPECIFIED :: CancelSurveyResult_Reason
+pattern CancelSurveyResult_Reason_CANCELSURVEYREASONUNSPECIFIED = CancelSurveyResult_Reason "CANCEL_SURVEY_REASON_UNSPECIFIED"
+
+-- | Not enough usage of the subscription.
+pattern CancelSurveyResult_Reason_CANCELSURVEYREASONNOTENOUGHUSAGE :: CancelSurveyResult_Reason
+pattern CancelSurveyResult_Reason_CANCELSURVEYREASONNOTENOUGHUSAGE = CancelSurveyResult_Reason "CANCEL_SURVEY_REASON_NOT_ENOUGH_USAGE"
+
+-- | Technical issues while using the app.
+pattern CancelSurveyResult_Reason_CANCELSURVEYREASONTECHNICALISSUES :: CancelSurveyResult_Reason
+pattern CancelSurveyResult_Reason_CANCELSURVEYREASONTECHNICALISSUES = CancelSurveyResult_Reason "CANCEL_SURVEY_REASON_TECHNICAL_ISSUES"
+
+-- | Cost related issues.
+pattern CancelSurveyResult_Reason_CANCELSURVEYREASONCOSTRELATED :: CancelSurveyResult_Reason
+pattern CancelSurveyResult_Reason_CANCELSURVEYREASONCOSTRELATED = CancelSurveyResult_Reason "CANCEL_SURVEY_REASON_COST_RELATED"
+
+-- | The user found a better app.
+pattern CancelSurveyResult_Reason_CANCELSURVEYREASONFOUNDBETTERAPP :: CancelSurveyResult_Reason
+pattern CancelSurveyResult_Reason_CANCELSURVEYREASONFOUNDBETTERAPP = CancelSurveyResult_Reason "CANCEL_SURVEY_REASON_FOUND_BETTER_APP"
+
+-- | Other reasons.
+pattern CancelSurveyResult_Reason_CANCELSURVEYREASONOTHERS :: CancelSurveyResult_Reason
+pattern CancelSurveyResult_Reason_CANCELSURVEYREASONOTHERS = CancelSurveyResult_Reason "CANCEL_SURVEY_REASON_OTHERS"
+
+{-# COMPLETE
+  CancelSurveyResult_Reason_CANCELSURVEYREASONUNSPECIFIED,
+  CancelSurveyResult_Reason_CANCELSURVEYREASONNOTENOUGHUSAGE,
+  CancelSurveyResult_Reason_CANCELSURVEYREASONTECHNICALISSUES,
+  CancelSurveyResult_Reason_CANCELSURVEYREASONCOSTRELATED,
+  CancelSurveyResult_Reason_CANCELSURVEYREASONFOUNDBETTERAPP,
+  CancelSurveyResult_Reason_CANCELSURVEYREASONOTHERS,
+  CancelSurveyResult_Reason
+  #-}
+
+-- | Optional. The latency tolerance for the propagation of this product update. Defaults to latency-sensitive.
+newtype DeactivateBasePlanRequest_LatencyTolerance = DeactivateBasePlanRequest_LatencyTolerance {fromDeactivateBasePlanRequest_LatencyTolerance :: Core.Text}
+  deriving stock (Core.Show, Core.Read, Core.Eq, Core.Ord, Core.Generic)
+  deriving newtype
+    ( Core.Hashable,
+      Core.ToHttpApiData,
+      Core.FromHttpApiData,
+      Core.ToJSON,
+      Core.ToJSONKey,
+      Core.FromJSON,
+      Core.FromJSONKey
+    )
+
+-- | Defaults to PRODUCT/UPDATE/LATENCY/TOLERANCE/LATENCY_SENSITIVE.
+pattern DeactivateBasePlanRequest_LatencyTolerance_PRODUCTUPDATELATENCYTOLERANCEUNSPECIFIED :: DeactivateBasePlanRequest_LatencyTolerance
+pattern DeactivateBasePlanRequest_LatencyTolerance_PRODUCTUPDATELATENCYTOLERANCEUNSPECIFIED = DeactivateBasePlanRequest_LatencyTolerance "PRODUCT_UPDATE_LATENCY_TOLERANCE_UNSPECIFIED"
+
+-- | The update will propagate to clients within several minutes on average and up to a few hours in rare cases. Throughput is limited to 7,200 updates per app per hour.
+pattern DeactivateBasePlanRequest_LatencyTolerance_PRODUCTUPDATELATENCYTOLERANCELATENCYSENSITIVE :: DeactivateBasePlanRequest_LatencyTolerance
+pattern DeactivateBasePlanRequest_LatencyTolerance_PRODUCTUPDATELATENCYTOLERANCELATENCYSENSITIVE = DeactivateBasePlanRequest_LatencyTolerance "PRODUCT_UPDATE_LATENCY_TOLERANCE_LATENCY_SENSITIVE"
+
+-- | The update will propagate to clients within 24 hours. Supports high throughput of up to 720,000 updates per app per hour using batch modification methods.
+pattern DeactivateBasePlanRequest_LatencyTolerance_PRODUCTUPDATELATENCYTOLERANCELATENCYTOLERANT :: DeactivateBasePlanRequest_LatencyTolerance
+pattern DeactivateBasePlanRequest_LatencyTolerance_PRODUCTUPDATELATENCYTOLERANCELATENCYTOLERANT = DeactivateBasePlanRequest_LatencyTolerance "PRODUCT_UPDATE_LATENCY_TOLERANCE_LATENCY_TOLERANT"
+
+{-# COMPLETE
+  DeactivateBasePlanRequest_LatencyTolerance_PRODUCTUPDATELATENCYTOLERANCEUNSPECIFIED,
+  DeactivateBasePlanRequest_LatencyTolerance_PRODUCTUPDATELATENCYTOLERANCELATENCYSENSITIVE,
+  DeactivateBasePlanRequest_LatencyTolerance_PRODUCTUPDATELATENCYTOLERANCELATENCYTOLERANT,
+  DeactivateBasePlanRequest_LatencyTolerance
+  #-}
+
+-- | Optional. The latency tolerance for the propagation of this product update. Defaults to latency-sensitive.
+newtype DeactivateSubscriptionOfferRequest_LatencyTolerance = DeactivateSubscriptionOfferRequest_LatencyTolerance {fromDeactivateSubscriptionOfferRequest_LatencyTolerance :: Core.Text}
+  deriving stock (Core.Show, Core.Read, Core.Eq, Core.Ord, Core.Generic)
+  deriving newtype
+    ( Core.Hashable,
+      Core.ToHttpApiData,
+      Core.FromHttpApiData,
+      Core.ToJSON,
+      Core.ToJSONKey,
+      Core.FromJSON,
+      Core.FromJSONKey
+    )
+
+-- | Defaults to PRODUCT/UPDATE/LATENCY/TOLERANCE/LATENCY_SENSITIVE.
+pattern DeactivateSubscriptionOfferRequest_LatencyTolerance_PRODUCTUPDATELATENCYTOLERANCEUNSPECIFIED :: DeactivateSubscriptionOfferRequest_LatencyTolerance
+pattern DeactivateSubscriptionOfferRequest_LatencyTolerance_PRODUCTUPDATELATENCYTOLERANCEUNSPECIFIED = DeactivateSubscriptionOfferRequest_LatencyTolerance "PRODUCT_UPDATE_LATENCY_TOLERANCE_UNSPECIFIED"
+
+-- | The update will propagate to clients within several minutes on average and up to a few hours in rare cases. Throughput is limited to 7,200 updates per app per hour.
+pattern DeactivateSubscriptionOfferRequest_LatencyTolerance_PRODUCTUPDATELATENCYTOLERANCELATENCYSENSITIVE :: DeactivateSubscriptionOfferRequest_LatencyTolerance
+pattern DeactivateSubscriptionOfferRequest_LatencyTolerance_PRODUCTUPDATELATENCYTOLERANCELATENCYSENSITIVE = DeactivateSubscriptionOfferRequest_LatencyTolerance "PRODUCT_UPDATE_LATENCY_TOLERANCE_LATENCY_SENSITIVE"
+
+-- | The update will propagate to clients within 24 hours. Supports high throughput of up to 720,000 updates per app per hour using batch modification methods.
+pattern DeactivateSubscriptionOfferRequest_LatencyTolerance_PRODUCTUPDATELATENCYTOLERANCELATENCYTOLERANT :: DeactivateSubscriptionOfferRequest_LatencyTolerance
+pattern DeactivateSubscriptionOfferRequest_LatencyTolerance_PRODUCTUPDATELATENCYTOLERANCELATENCYTOLERANT = DeactivateSubscriptionOfferRequest_LatencyTolerance "PRODUCT_UPDATE_LATENCY_TOLERANCE_LATENCY_TOLERANT"
+
+{-# COMPLETE
+  DeactivateSubscriptionOfferRequest_LatencyTolerance_PRODUCTUPDATELATENCYTOLERANCEUNSPECIFIED,
+  DeactivateSubscriptionOfferRequest_LatencyTolerance_PRODUCTUPDATELATENCYTOLERANCELATENCYSENSITIVE,
+  DeactivateSubscriptionOfferRequest_LatencyTolerance_PRODUCTUPDATELATENCYTOLERANCELATENCYTOLERANT,
+  DeactivateSubscriptionOfferRequest_LatencyTolerance
+  #-}
+
+-- | The type of the deobfuscation file.
+newtype DeobfuscationFile_SymbolType = DeobfuscationFile_SymbolType {fromDeobfuscationFile_SymbolType :: Core.Text}
+  deriving stock (Core.Show, Core.Read, Core.Eq, Core.Ord, Core.Generic)
+  deriving newtype
+    ( Core.Hashable,
+      Core.ToHttpApiData,
+      Core.FromHttpApiData,
+      Core.ToJSON,
+      Core.ToJSONKey,
+      Core.FromJSON,
+      Core.FromJSONKey
+    )
+
+-- | Unspecified deobfuscation file type.
+pattern DeobfuscationFile_SymbolType_DeobfuscationFileTypeUnspecified :: DeobfuscationFile_SymbolType
+pattern DeobfuscationFile_SymbolType_DeobfuscationFileTypeUnspecified = DeobfuscationFile_SymbolType "deobfuscationFileTypeUnspecified"
+
+-- | Proguard deobfuscation file type.
+pattern DeobfuscationFile_SymbolType_Proguard :: DeobfuscationFile_SymbolType
+pattern DeobfuscationFile_SymbolType_Proguard = DeobfuscationFile_SymbolType "proguard"
+
+-- | Native debugging symbols file type.
+pattern DeobfuscationFile_SymbolType_NativeCode :: DeobfuscationFile_SymbolType
+pattern DeobfuscationFile_SymbolType_NativeCode = DeobfuscationFile_SymbolType "nativeCode"
+
+{-# COMPLETE
+  DeobfuscationFile_SymbolType_DeobfuscationFileTypeUnspecified,
+  DeobfuscationFile_SymbolType_Proguard,
+  DeobfuscationFile_SymbolType_NativeCode,
+  DeobfuscationFile_SymbolType
+  #-}
+
+-- | Required. The type of the external subscription.
+newtype ExternalSubscription_SubscriptionType = ExternalSubscription_SubscriptionType {fromExternalSubscription_SubscriptionType :: Core.Text}
+  deriving stock (Core.Show, Core.Read, Core.Eq, Core.Ord, Core.Generic)
+  deriving newtype
+    ( Core.Hashable,
+      Core.ToHttpApiData,
+      Core.FromHttpApiData,
+      Core.ToJSON,
+      Core.ToJSONKey,
+      Core.FromJSON,
+      Core.FromJSONKey
+    )
+
+-- | Unspecified, do not use.
+pattern ExternalSubscription_SubscriptionType_SUBSCRIPTIONTYPEUNSPECIFIED :: ExternalSubscription_SubscriptionType
+pattern ExternalSubscription_SubscriptionType_SUBSCRIPTIONTYPEUNSPECIFIED = ExternalSubscription_SubscriptionType "SUBSCRIPTION_TYPE_UNSPECIFIED"
+
+-- | This is a recurring subscription where the user is charged every billing cycle.
+pattern ExternalSubscription_SubscriptionType_Recurring :: ExternalSubscription_SubscriptionType
+pattern ExternalSubscription_SubscriptionType_Recurring = ExternalSubscription_SubscriptionType "RECURRING"
+
+-- | This is a prepaid subscription where the user pays up front.
+pattern ExternalSubscription_SubscriptionType_Prepaid :: ExternalSubscription_SubscriptionType
+pattern ExternalSubscription_SubscriptionType_Prepaid = ExternalSubscription_SubscriptionType "PREPAID"
+
+{-# COMPLETE
+  ExternalSubscription_SubscriptionType_SUBSCRIPTIONTYPEUNSPECIFIED,
+  ExternalSubscription_SubscriptionType_Recurring,
+  ExternalSubscription_SubscriptionType_Prepaid,
+  ExternalSubscription_SubscriptionType
+  #-}
+
+-- | Output only. The current state of the transaction.
+newtype ExternalTransaction_TransactionState = ExternalTransaction_TransactionState {fromExternalTransaction_TransactionState :: Core.Text}
+  deriving stock (Core.Show, Core.Read, Core.Eq, Core.Ord, Core.Generic)
+  deriving newtype
+    ( Core.Hashable,
+      Core.ToHttpApiData,
+      Core.FromHttpApiData,
+      Core.ToJSON,
+      Core.ToJSONKey,
+      Core.FromJSON,
+      Core.FromJSONKey
+    )
+
+-- | Unspecified transaction state. Not used.
+pattern ExternalTransaction_TransactionState_TRANSACTIONSTATEUNSPECIFIED :: ExternalTransaction_TransactionState
+pattern ExternalTransaction_TransactionState_TRANSACTIONSTATEUNSPECIFIED = ExternalTransaction_TransactionState "TRANSACTION_STATE_UNSPECIFIED"
+
+-- | The transaction has been successfully reported to Google.
+pattern ExternalTransaction_TransactionState_TRANSACTIONREPORTED :: ExternalTransaction_TransactionState
+pattern ExternalTransaction_TransactionState_TRANSACTIONREPORTED = ExternalTransaction_TransactionState "TRANSACTION_REPORTED"
+
+-- | The transaction has been fully refunded.
+pattern ExternalTransaction_TransactionState_TRANSACTIONCANCELED :: ExternalTransaction_TransactionState
+pattern ExternalTransaction_TransactionState_TRANSACTIONCANCELED = ExternalTransaction_TransactionState "TRANSACTION_CANCELED"
+
+{-# COMPLETE
+  ExternalTransaction_TransactionState_TRANSACTIONSTATEUNSPECIFIED,
+  ExternalTransaction_TransactionState_TRANSACTIONREPORTED,
+  ExternalTransaction_TransactionState_TRANSACTIONCANCELED,
+  ExternalTransaction_TransactionState
+  #-}
+
+-- | The status of the recovery action corresponding to the recovery apk.
+newtype GeneratedRecoveryApk_RecoveryStatus = GeneratedRecoveryApk_RecoveryStatus {fromGeneratedRecoveryApk_RecoveryStatus :: Core.Text}
+  deriving stock (Core.Show, Core.Read, Core.Eq, Core.Ord, Core.Generic)
+  deriving newtype
+    ( Core.Hashable,
+      Core.ToHttpApiData,
+      Core.FromHttpApiData,
+      Core.ToJSON,
+      Core.ToJSONKey,
+      Core.FromJSON,
+      Core.FromJSONKey
+    )
+
+-- | RecoveryStatus is unspecified.
+pattern GeneratedRecoveryApk_RecoveryStatus_RECOVERYSTATUSUNSPECIFIED :: GeneratedRecoveryApk_RecoveryStatus
+pattern GeneratedRecoveryApk_RecoveryStatus_RECOVERYSTATUSUNSPECIFIED = GeneratedRecoveryApk_RecoveryStatus "RECOVERY_STATUS_UNSPECIFIED"
+
+-- | The app recovery action has not been canceled since it has been created.
+pattern GeneratedRecoveryApk_RecoveryStatus_RECOVERYSTATUSACTIVE :: GeneratedRecoveryApk_RecoveryStatus
+pattern GeneratedRecoveryApk_RecoveryStatus_RECOVERYSTATUSACTIVE = GeneratedRecoveryApk_RecoveryStatus "RECOVERY_STATUS_ACTIVE"
+
+-- | The recovery action has been canceled. The action cannot be resumed.
+pattern GeneratedRecoveryApk_RecoveryStatus_RECOVERYSTATUSCANCELED :: GeneratedRecoveryApk_RecoveryStatus
+pattern GeneratedRecoveryApk_RecoveryStatus_RECOVERYSTATUSCANCELED = GeneratedRecoveryApk_RecoveryStatus "RECOVERY_STATUS_CANCELED"
+
+-- | The recovery action is in the draft state and has not yet been deployed to users.
+pattern GeneratedRecoveryApk_RecoveryStatus_RECOVERYSTATUSDRAFT :: GeneratedRecoveryApk_RecoveryStatus
+pattern GeneratedRecoveryApk_RecoveryStatus_RECOVERYSTATUSDRAFT = GeneratedRecoveryApk_RecoveryStatus "RECOVERY_STATUS_DRAFT"
+
+-- | The recovery action is generating recovery apks.
+pattern GeneratedRecoveryApk_RecoveryStatus_RECOVERYSTATUSGENERATIONINPROGRESS :: GeneratedRecoveryApk_RecoveryStatus
+pattern GeneratedRecoveryApk_RecoveryStatus_RECOVERYSTATUSGENERATIONINPROGRESS = GeneratedRecoveryApk_RecoveryStatus "RECOVERY_STATUS_GENERATION_IN_PROGRESS"
+
+-- | The app recovery action generation has failed.
+pattern GeneratedRecoveryApk_RecoveryStatus_RECOVERYSTATUSGENERATIONFAILED :: GeneratedRecoveryApk_RecoveryStatus
+pattern GeneratedRecoveryApk_RecoveryStatus_RECOVERYSTATUSGENERATIONFAILED = GeneratedRecoveryApk_RecoveryStatus "RECOVERY_STATUS_GENERATION_FAILED"
+
+{-# COMPLETE
+  GeneratedRecoveryApk_RecoveryStatus_RECOVERYSTATUSUNSPECIFIED,
+  GeneratedRecoveryApk_RecoveryStatus_RECOVERYSTATUSACTIVE,
+  GeneratedRecoveryApk_RecoveryStatus_RECOVERYSTATUSCANCELED,
+  GeneratedRecoveryApk_RecoveryStatus_RECOVERYSTATUSDRAFT,
+  GeneratedRecoveryApk_RecoveryStatus_RECOVERYSTATUSGENERATIONINPROGRESS,
+  GeneratedRecoveryApk_RecoveryStatus_RECOVERYSTATUSGENERATIONFAILED,
+  GeneratedRecoveryApk_RecoveryStatus
+  #-}
+
+newtype Grant_AppLevelPermissionsItem = Grant_AppLevelPermissionsItem {fromGrant_AppLevelPermissionsItem :: Core.Text}
+  deriving stock (Core.Show, Core.Read, Core.Eq, Core.Ord, Core.Generic)
+  deriving newtype
+    ( Core.Hashable,
+      Core.ToHttpApiData,
+      Core.FromHttpApiData,
+      Core.ToJSON,
+      Core.ToJSONKey,
+      Core.FromJSON,
+      Core.FromJSONKey
+    )
+
+-- | Unknown or unspecified permission.
+pattern Grant_AppLevelPermissionsItem_APPLEVELPERMISSIONUNSPECIFIED :: Grant_AppLevelPermissionsItem
+pattern Grant_AppLevelPermissionsItem_APPLEVELPERMISSIONUNSPECIFIED = Grant_AppLevelPermissionsItem "APP_LEVEL_PERMISSION_UNSPECIFIED"
+
+-- | View app information (read-only). Deprecated: Try defining a more granular capability. Otherwise, check AppLevelPermission.CAN/VIEW/NON/FINANCIAL/DATA.
+pattern Grant_AppLevelPermissionsItem_CANACCESSAPP :: Grant_AppLevelPermissionsItem
+pattern Grant_AppLevelPermissionsItem_CANACCESSAPP = Grant_AppLevelPermissionsItem "CAN_ACCESS_APP"
+
+-- | View financial data.
+pattern Grant_AppLevelPermissionsItem_CANVIEWFINANCIALDATA :: Grant_AppLevelPermissionsItem
+pattern Grant_AppLevelPermissionsItem_CANVIEWFINANCIALDATA = Grant_AppLevelPermissionsItem "CAN_VIEW_FINANCIAL_DATA"
+
+-- | Admin (all permissions).
+pattern Grant_AppLevelPermissionsItem_CANMANAGEPERMISSIONS :: Grant_AppLevelPermissionsItem
+pattern Grant_AppLevelPermissionsItem_CANMANAGEPERMISSIONS = Grant_AppLevelPermissionsItem "CAN_MANAGE_PERMISSIONS"
+
+-- | Reply to reviews.
+pattern Grant_AppLevelPermissionsItem_CANREPLYTOREVIEWS :: Grant_AppLevelPermissionsItem
+pattern Grant_AppLevelPermissionsItem_CANREPLYTOREVIEWS = Grant_AppLevelPermissionsItem "CAN_REPLY_TO_REVIEWS"
+
+-- | Release to production, exclude devices, and use app signing by Google Play.
+pattern Grant_AppLevelPermissionsItem_CANMANAGEPUBLICAPKS :: Grant_AppLevelPermissionsItem
+pattern Grant_AppLevelPermissionsItem_CANMANAGEPUBLICAPKS = Grant_AppLevelPermissionsItem "CAN_MANAGE_PUBLIC_APKS"
+
+-- | Release to testing tracks.
+pattern Grant_AppLevelPermissionsItem_CANMANAGETRACKAPKS :: Grant_AppLevelPermissionsItem
+pattern Grant_AppLevelPermissionsItem_CANMANAGETRACKAPKS = Grant_AppLevelPermissionsItem "CAN_MANAGE_TRACK_APKS"
+
+-- | Manage testing tracks and edit tester lists.
+pattern Grant_AppLevelPermissionsItem_CANMANAGETRACKUSERS :: Grant_AppLevelPermissionsItem
+pattern Grant_AppLevelPermissionsItem_CANMANAGETRACKUSERS = Grant_AppLevelPermissionsItem "CAN_MANAGE_TRACK_USERS"
+
+-- | Manage store presence.
+pattern Grant_AppLevelPermissionsItem_CANMANAGEPUBLICLISTING :: Grant_AppLevelPermissionsItem
+pattern Grant_AppLevelPermissionsItem_CANMANAGEPUBLICLISTING = Grant_AppLevelPermissionsItem "CAN_MANAGE_PUBLIC_LISTING"
+
+-- | Edit and delete draft apps.
+pattern Grant_AppLevelPermissionsItem_CANMANAGEDRAFTAPPS :: Grant_AppLevelPermissionsItem
+pattern Grant_AppLevelPermissionsItem_CANMANAGEDRAFTAPPS = Grant_AppLevelPermissionsItem "CAN_MANAGE_DRAFT_APPS"
+
+-- | Manage orders and subscriptions.
+pattern Grant_AppLevelPermissionsItem_CANMANAGEORDERS :: Grant_AppLevelPermissionsItem
+pattern Grant_AppLevelPermissionsItem_CANMANAGEORDERS = Grant_AppLevelPermissionsItem "CAN_MANAGE_ORDERS"
+
+-- | Manage policy related pages.
+pattern Grant_AppLevelPermissionsItem_CANMANAGEAPPCONTENT :: Grant_AppLevelPermissionsItem
+pattern Grant_AppLevelPermissionsItem_CANMANAGEAPPCONTENT = Grant_AppLevelPermissionsItem "CAN_MANAGE_APP_CONTENT"
+
+-- | View app information (read-only).
+pattern Grant_AppLevelPermissionsItem_CANVIEWNONFINANCIALDATA :: Grant_AppLevelPermissionsItem
+pattern Grant_AppLevelPermissionsItem_CANVIEWNONFINANCIALDATA = Grant_AppLevelPermissionsItem "CAN_VIEW_NON_FINANCIAL_DATA"
+
+-- | View app quality data such as Vitals, Crashes etc.
+pattern Grant_AppLevelPermissionsItem_CANVIEWAPPQUALITY :: Grant_AppLevelPermissionsItem
+pattern Grant_AppLevelPermissionsItem_CANVIEWAPPQUALITY = Grant_AppLevelPermissionsItem "CAN_VIEW_APP_QUALITY"
+
+-- | Manage the deep links setup of an app.
+pattern Grant_AppLevelPermissionsItem_CANMANAGEDEEPLINKS :: Grant_AppLevelPermissionsItem
+pattern Grant_AppLevelPermissionsItem_CANMANAGEDEEPLINKS = Grant_AppLevelPermissionsItem "CAN_MANAGE_DEEPLINKS"
+
+{-# COMPLETE
+  Grant_AppLevelPermissionsItem_APPLEVELPERMISSIONUNSPECIFIED,
+  Grant_AppLevelPermissionsItem_CANACCESSAPP,
+  Grant_AppLevelPermissionsItem_CANVIEWFINANCIALDATA,
+  Grant_AppLevelPermissionsItem_CANMANAGEPERMISSIONS,
+  Grant_AppLevelPermissionsItem_CANREPLYTOREVIEWS,
+  Grant_AppLevelPermissionsItem_CANMANAGEPUBLICAPKS,
+  Grant_AppLevelPermissionsItem_CANMANAGETRACKAPKS,
+  Grant_AppLevelPermissionsItem_CANMANAGETRACKUSERS,
+  Grant_AppLevelPermissionsItem_CANMANAGEPUBLICLISTING,
+  Grant_AppLevelPermissionsItem_CANMANAGEDRAFTAPPS,
+  Grant_AppLevelPermissionsItem_CANMANAGEORDERS,
+  Grant_AppLevelPermissionsItem_CANMANAGEAPPCONTENT,
+  Grant_AppLevelPermissionsItem_CANVIEWNONFINANCIALDATA,
+  Grant_AppLevelPermissionsItem_CANVIEWAPPQUALITY,
+  Grant_AppLevelPermissionsItem_CANMANAGEDEEPLINKS,
+  Grant_AppLevelPermissionsItem
+  #-}
+
+-- | The type of the product, e.g. a recurring subscription.
+newtype InAppProduct_PurchaseType = InAppProduct_PurchaseType {fromInAppProduct_PurchaseType :: Core.Text}
+  deriving stock (Core.Show, Core.Read, Core.Eq, Core.Ord, Core.Generic)
+  deriving newtype
+    ( Core.Hashable,
+      Core.ToHttpApiData,
+      Core.FromHttpApiData,
+      Core.ToJSON,
+      Core.ToJSONKey,
+      Core.FromJSON,
+      Core.FromJSONKey
+    )
+
+-- | Unspecified purchase type.
+pattern InAppProduct_PurchaseType_PurchaseTypeUnspecified :: InAppProduct_PurchaseType
+pattern InAppProduct_PurchaseType_PurchaseTypeUnspecified = InAppProduct_PurchaseType "purchaseTypeUnspecified"
+
+-- | The default product type - one time purchase.
+pattern InAppProduct_PurchaseType_ManagedUser :: InAppProduct_PurchaseType
+pattern InAppProduct_PurchaseType_ManagedUser = InAppProduct_PurchaseType "managedUser"
+
+-- | In-app product with a recurring period.
+pattern InAppProduct_PurchaseType_Subscription :: InAppProduct_PurchaseType
+pattern InAppProduct_PurchaseType_Subscription = InAppProduct_PurchaseType "subscription"
+
+{-# COMPLETE
+  InAppProduct_PurchaseType_PurchaseTypeUnspecified,
+  InAppProduct_PurchaseType_ManagedUser,
+  InAppProduct_PurchaseType_Subscription,
+  InAppProduct_PurchaseType
+  #-}
+
+-- | The status of the product, e.g. whether it\'s active.
+newtype InAppProduct_Status = InAppProduct_Status {fromInAppProduct_Status :: Core.Text}
+  deriving stock (Core.Show, Core.Read, Core.Eq, Core.Ord, Core.Generic)
+  deriving newtype
+    ( Core.Hashable,
+      Core.ToHttpApiData,
+      Core.FromHttpApiData,
+      Core.ToJSON,
+      Core.ToJSONKey,
+      Core.FromJSON,
+      Core.FromJSONKey
+    )
+
+-- | Unspecified status.
+pattern InAppProduct_Status_StatusUnspecified :: InAppProduct_Status
+pattern InAppProduct_Status_StatusUnspecified = InAppProduct_Status "statusUnspecified"
+
+-- | The product is published and active in the store.
+pattern InAppProduct_Status_Active :: InAppProduct_Status
+pattern InAppProduct_Status_Active = InAppProduct_Status "active"
+
+-- | The product is not published and therefore inactive in the store.
+pattern InAppProduct_Status_Inactive :: InAppProduct_Status
+pattern InAppProduct_Status_Inactive = InAppProduct_Status "inactive"
+
+{-# COMPLETE
+  InAppProduct_Status_StatusUnspecified,
+  InAppProduct_Status_Active,
+  InAppProduct_Status_Inactive,
+  InAppProduct_Status
+  #-}
+
+-- | Optional. The latency tolerance for the propagation of this product update. Defaults to latency-sensitive.
+newtype InappproductsDeleteRequest_LatencyTolerance = InappproductsDeleteRequest_LatencyTolerance {fromInappproductsDeleteRequest_LatencyTolerance :: Core.Text}
+  deriving stock (Core.Show, Core.Read, Core.Eq, Core.Ord, Core.Generic)
+  deriving newtype
+    ( Core.Hashable,
+      Core.ToHttpApiData,
+      Core.FromHttpApiData,
+      Core.ToJSON,
+      Core.ToJSONKey,
+      Core.FromJSON,
+      Core.FromJSONKey
+    )
+
+-- | Defaults to PRODUCT/UPDATE/LATENCY/TOLERANCE/LATENCY_SENSITIVE.
+pattern InappproductsDeleteRequest_LatencyTolerance_PRODUCTUPDATELATENCYTOLERANCEUNSPECIFIED :: InappproductsDeleteRequest_LatencyTolerance
+pattern InappproductsDeleteRequest_LatencyTolerance_PRODUCTUPDATELATENCYTOLERANCEUNSPECIFIED = InappproductsDeleteRequest_LatencyTolerance "PRODUCT_UPDATE_LATENCY_TOLERANCE_UNSPECIFIED"
+
+-- | The update will propagate to clients within several minutes on average and up to a few hours in rare cases. Throughput is limited to 7,200 updates per app per hour.
+pattern InappproductsDeleteRequest_LatencyTolerance_PRODUCTUPDATELATENCYTOLERANCELATENCYSENSITIVE :: InappproductsDeleteRequest_LatencyTolerance
+pattern InappproductsDeleteRequest_LatencyTolerance_PRODUCTUPDATELATENCYTOLERANCELATENCYSENSITIVE = InappproductsDeleteRequest_LatencyTolerance "PRODUCT_UPDATE_LATENCY_TOLERANCE_LATENCY_SENSITIVE"
+
+-- | The update will propagate to clients within 24 hours. Supports high throughput of up to 720,000 updates per app per hour using batch modification methods.
+pattern InappproductsDeleteRequest_LatencyTolerance_PRODUCTUPDATELATENCYTOLERANCELATENCYTOLERANT :: InappproductsDeleteRequest_LatencyTolerance
+pattern InappproductsDeleteRequest_LatencyTolerance_PRODUCTUPDATELATENCYTOLERANCELATENCYTOLERANT = InappproductsDeleteRequest_LatencyTolerance "PRODUCT_UPDATE_LATENCY_TOLERANCE_LATENCY_TOLERANT"
+
+{-# COMPLETE
+  InappproductsDeleteRequest_LatencyTolerance_PRODUCTUPDATELATENCYTOLERANCEUNSPECIFIED,
+  InappproductsDeleteRequest_LatencyTolerance_PRODUCTUPDATELATENCYTOLERANCELATENCYSENSITIVE,
+  InappproductsDeleteRequest_LatencyTolerance_PRODUCTUPDATELATENCYTOLERANCELATENCYTOLERANT,
+  InappproductsDeleteRequest_LatencyTolerance
+  #-}
+
+-- | Optional. The latency tolerance for the propagation of this product update. Defaults to latency-sensitive.
+newtype InappproductsUpdateRequest_LatencyTolerance = InappproductsUpdateRequest_LatencyTolerance {fromInappproductsUpdateRequest_LatencyTolerance :: Core.Text}
+  deriving stock (Core.Show, Core.Read, Core.Eq, Core.Ord, Core.Generic)
+  deriving newtype
+    ( Core.Hashable,
+      Core.ToHttpApiData,
+      Core.FromHttpApiData,
+      Core.ToJSON,
+      Core.ToJSONKey,
+      Core.FromJSON,
+      Core.FromJSONKey
+    )
+
+-- | Defaults to PRODUCT/UPDATE/LATENCY/TOLERANCE/LATENCY_SENSITIVE.
+pattern InappproductsUpdateRequest_LatencyTolerance_PRODUCTUPDATELATENCYTOLERANCEUNSPECIFIED :: InappproductsUpdateRequest_LatencyTolerance
+pattern InappproductsUpdateRequest_LatencyTolerance_PRODUCTUPDATELATENCYTOLERANCEUNSPECIFIED = InappproductsUpdateRequest_LatencyTolerance "PRODUCT_UPDATE_LATENCY_TOLERANCE_UNSPECIFIED"
+
+-- | The update will propagate to clients within several minutes on average and up to a few hours in rare cases. Throughput is limited to 7,200 updates per app per hour.
+pattern InappproductsUpdateRequest_LatencyTolerance_PRODUCTUPDATELATENCYTOLERANCELATENCYSENSITIVE :: InappproductsUpdateRequest_LatencyTolerance
+pattern InappproductsUpdateRequest_LatencyTolerance_PRODUCTUPDATELATENCYTOLERANCELATENCYSENSITIVE = InappproductsUpdateRequest_LatencyTolerance "PRODUCT_UPDATE_LATENCY_TOLERANCE_LATENCY_SENSITIVE"
+
+-- | The update will propagate to clients within 24 hours. Supports high throughput of up to 720,000 updates per app per hour using batch modification methods.
+pattern InappproductsUpdateRequest_LatencyTolerance_PRODUCTUPDATELATENCYTOLERANCELATENCYTOLERANT :: InappproductsUpdateRequest_LatencyTolerance
+pattern InappproductsUpdateRequest_LatencyTolerance_PRODUCTUPDATELATENCYTOLERANCELATENCYTOLERANT = InappproductsUpdateRequest_LatencyTolerance "PRODUCT_UPDATE_LATENCY_TOLERANCE_LATENCY_TOLERANT"
+
+{-# COMPLETE
+  InappproductsUpdateRequest_LatencyTolerance_PRODUCTUPDATELATENCYTOLERANCEUNSPECIFIED,
+  InappproductsUpdateRequest_LatencyTolerance_PRODUCTUPDATELATENCYTOLERANCELATENCYSENSITIVE,
+  InappproductsUpdateRequest_LatencyTolerance_PRODUCTUPDATELATENCYTOLERANCELATENCYTOLERANT,
+  InappproductsUpdateRequest_LatencyTolerance
+  #-}
+
+-- | The proration mode for the base plan determines what happens when a user switches to this plan from another base plan. If unspecified, defaults to CHARGE/ON/NEXT/BILLING/DATE.
+newtype InstallmentsBasePlanType_ProrationMode = InstallmentsBasePlanType_ProrationMode {fromInstallmentsBasePlanType_ProrationMode :: Core.Text}
+  deriving stock (Core.Show, Core.Read, Core.Eq, Core.Ord, Core.Generic)
+  deriving newtype
+    ( Core.Hashable,
+      Core.ToHttpApiData,
+      Core.FromHttpApiData,
+      Core.ToJSON,
+      Core.ToJSONKey,
+      Core.FromJSON,
+      Core.FromJSONKey
+    )
+
+-- | Unspecified mode.
+pattern InstallmentsBasePlanType_ProrationMode_SUBSCRIPTIONPRORATIONMODEUNSPECIFIED :: InstallmentsBasePlanType_ProrationMode
+pattern InstallmentsBasePlanType_ProrationMode_SUBSCRIPTIONPRORATIONMODEUNSPECIFIED = InstallmentsBasePlanType_ProrationMode "SUBSCRIPTION_PRORATION_MODE_UNSPECIFIED"
+
+-- | Users will be charged for their new base plan at the end of their current billing period.
+pattern InstallmentsBasePlanType_ProrationMode_SUBSCRIPTIONPRORATIONMODECHARGEONNEXTBILLINGDATE :: InstallmentsBasePlanType_ProrationMode
+pattern InstallmentsBasePlanType_ProrationMode_SUBSCRIPTIONPRORATIONMODECHARGEONNEXTBILLINGDATE = InstallmentsBasePlanType_ProrationMode "SUBSCRIPTION_PRORATION_MODE_CHARGE_ON_NEXT_BILLING_DATE"
+
+-- | Users will be charged for their new base plan immediately and in full. Any remaining period of their existing subscription will be used to extend the duration of the new billing plan.
+pattern InstallmentsBasePlanType_ProrationMode_SUBSCRIPTIONPRORATIONMODECHARGEFULLPRICEIMMEDIATELY :: InstallmentsBasePlanType_ProrationMode
+pattern InstallmentsBasePlanType_ProrationMode_SUBSCRIPTIONPRORATIONMODECHARGEFULLPRICEIMMEDIATELY = InstallmentsBasePlanType_ProrationMode "SUBSCRIPTION_PRORATION_MODE_CHARGE_FULL_PRICE_IMMEDIATELY"
+
+{-# COMPLETE
+  InstallmentsBasePlanType_ProrationMode_SUBSCRIPTIONPRORATIONMODEUNSPECIFIED,
+  InstallmentsBasePlanType_ProrationMode_SUBSCRIPTIONPRORATIONMODECHARGEONNEXTBILLINGDATE,
+  InstallmentsBasePlanType_ProrationMode_SUBSCRIPTIONPRORATIONMODECHARGEFULLPRICEIMMEDIATELY,
+  InstallmentsBasePlanType_ProrationMode
+  #-}
+
+-- | Required. Immutable. Installments base plan renewal type. Determines the behavior at the end of the initial commitment. The renewal type is immutable after the base plan is created.
+newtype InstallmentsBasePlanType_RenewalType = InstallmentsBasePlanType_RenewalType {fromInstallmentsBasePlanType_RenewalType :: Core.Text}
+  deriving stock (Core.Show, Core.Read, Core.Eq, Core.Ord, Core.Generic)
+  deriving newtype
+    ( Core.Hashable,
+      Core.ToHttpApiData,
+      Core.FromHttpApiData,
+      Core.ToJSON,
+      Core.ToJSONKey,
+      Core.FromJSON,
+      Core.FromJSONKey
+    )
+
+-- | Unspecified state.
+pattern InstallmentsBasePlanType_RenewalType_RENEWALTYPEUNSPECIFIED :: InstallmentsBasePlanType_RenewalType
+pattern InstallmentsBasePlanType_RenewalType_RENEWALTYPEUNSPECIFIED = InstallmentsBasePlanType_RenewalType "RENEWAL_TYPE_UNSPECIFIED"
+
+-- | Renews periodically for the billing period duration without commitment.
+pattern InstallmentsBasePlanType_RenewalType_RENEWALTYPERENEWSWITHOUTCOMMITMENT :: InstallmentsBasePlanType_RenewalType
+pattern InstallmentsBasePlanType_RenewalType_RENEWALTYPERENEWSWITHOUTCOMMITMENT = InstallmentsBasePlanType_RenewalType "RENEWAL_TYPE_RENEWS_WITHOUT_COMMITMENT"
+
+-- | Renews with the commitment of the same duration as the initial one.
+pattern InstallmentsBasePlanType_RenewalType_RENEWALTYPERENEWSWITHCOMMITMENT :: InstallmentsBasePlanType_RenewalType
+pattern InstallmentsBasePlanType_RenewalType_RENEWALTYPERENEWSWITHCOMMITMENT = InstallmentsBasePlanType_RenewalType "RENEWAL_TYPE_RENEWS_WITH_COMMITMENT"
+
+{-# COMPLETE
+  InstallmentsBasePlanType_RenewalType_RENEWALTYPEUNSPECIFIED,
+  InstallmentsBasePlanType_RenewalType_RENEWALTYPERENEWSWITHOUTCOMMITMENT,
+  InstallmentsBasePlanType_RenewalType_RENEWALTYPERENEWSWITHCOMMITMENT,
+  InstallmentsBasePlanType_RenewalType
+  #-}
+
+-- | Whether users should be able to resubscribe to this base plan in Google Play surfaces. Defaults to RESUBSCRIBE/STATE/ACTIVE if not specified.
+newtype InstallmentsBasePlanType_ResubscribeState = InstallmentsBasePlanType_ResubscribeState {fromInstallmentsBasePlanType_ResubscribeState :: Core.Text}
+  deriving stock (Core.Show, Core.Read, Core.Eq, Core.Ord, Core.Generic)
+  deriving newtype
+    ( Core.Hashable,
+      Core.ToHttpApiData,
+      Core.FromHttpApiData,
+      Core.ToJSON,
+      Core.ToJSONKey,
+      Core.FromJSON,
+      Core.FromJSONKey
+    )
+
+-- | Unspecified state.
+pattern InstallmentsBasePlanType_ResubscribeState_RESUBSCRIBESTATEUNSPECIFIED :: InstallmentsBasePlanType_ResubscribeState
+pattern InstallmentsBasePlanType_ResubscribeState_RESUBSCRIBESTATEUNSPECIFIED = InstallmentsBasePlanType_ResubscribeState "RESUBSCRIBE_STATE_UNSPECIFIED"
+
+-- | Resubscribe is active.
+pattern InstallmentsBasePlanType_ResubscribeState_RESUBSCRIBESTATEACTIVE :: InstallmentsBasePlanType_ResubscribeState
+pattern InstallmentsBasePlanType_ResubscribeState_RESUBSCRIBESTATEACTIVE = InstallmentsBasePlanType_ResubscribeState "RESUBSCRIBE_STATE_ACTIVE"
+
+-- | Resubscribe is inactive.
+pattern InstallmentsBasePlanType_ResubscribeState_RESUBSCRIBESTATEINACTIVE :: InstallmentsBasePlanType_ResubscribeState
+pattern InstallmentsBasePlanType_ResubscribeState_RESUBSCRIBESTATEINACTIVE = InstallmentsBasePlanType_ResubscribeState "RESUBSCRIBE_STATE_INACTIVE"
+
+{-# COMPLETE
+  InstallmentsBasePlanType_ResubscribeState_RESUBSCRIBESTATEUNSPECIFIED,
+  InstallmentsBasePlanType_ResubscribeState_RESUBSCRIBESTATEACTIVE,
+  InstallmentsBasePlanType_ResubscribeState_RESUBSCRIBESTATEINACTIVE,
+  InstallmentsBasePlanType_ResubscribeState
+  #-}
+
+-- | Digital content or service classification for products distributed to users in the European Economic Area (EEA). The withdrawal regime under EEA consumer laws depends on this classification. Refer to the <https://support.google.com/googleplay/android-developer/answer/10463498 Help Center article> for more information.
+newtype ManagedProductTaxAndComplianceSettings_EeaWithdrawalRightType = ManagedProductTaxAndComplianceSettings_EeaWithdrawalRightType {fromManagedProductTaxAndComplianceSettings_EeaWithdrawalRightType :: Core.Text}
+  deriving stock (Core.Show, Core.Read, Core.Eq, Core.Ord, Core.Generic)
+  deriving newtype
+    ( Core.Hashable,
+      Core.ToHttpApiData,
+      Core.FromHttpApiData,
+      Core.ToJSON,
+      Core.ToJSONKey,
+      Core.FromJSON,
+      Core.FromJSONKey
+    )
+
+pattern ManagedProductTaxAndComplianceSettings_EeaWithdrawalRightType_WITHDRAWALRIGHTTYPEUNSPECIFIED :: ManagedProductTaxAndComplianceSettings_EeaWithdrawalRightType
+pattern ManagedProductTaxAndComplianceSettings_EeaWithdrawalRightType_WITHDRAWALRIGHTTYPEUNSPECIFIED = ManagedProductTaxAndComplianceSettings_EeaWithdrawalRightType "WITHDRAWAL_RIGHT_TYPE_UNSPECIFIED"
+
+pattern ManagedProductTaxAndComplianceSettings_EeaWithdrawalRightType_WITHDRAWALRIGHTDIGITALCONTENT :: ManagedProductTaxAndComplianceSettings_EeaWithdrawalRightType
+pattern ManagedProductTaxAndComplianceSettings_EeaWithdrawalRightType_WITHDRAWALRIGHTDIGITALCONTENT = ManagedProductTaxAndComplianceSettings_EeaWithdrawalRightType "WITHDRAWAL_RIGHT_DIGITAL_CONTENT"
+
+pattern ManagedProductTaxAndComplianceSettings_EeaWithdrawalRightType_WITHDRAWALRIGHTSERVICE :: ManagedProductTaxAndComplianceSettings_EeaWithdrawalRightType
+pattern ManagedProductTaxAndComplianceSettings_EeaWithdrawalRightType_WITHDRAWALRIGHTSERVICE = ManagedProductTaxAndComplianceSettings_EeaWithdrawalRightType "WITHDRAWAL_RIGHT_SERVICE"
+
+{-# COMPLETE
+  ManagedProductTaxAndComplianceSettings_EeaWithdrawalRightType_WITHDRAWALRIGHTTYPEUNSPECIFIED,
+  ManagedProductTaxAndComplianceSettings_EeaWithdrawalRightType_WITHDRAWALRIGHTDIGITALCONTENT,
+  ManagedProductTaxAndComplianceSettings_EeaWithdrawalRightType_WITHDRAWALRIGHTSERVICE,
+  ManagedProductTaxAndComplianceSettings_EeaWithdrawalRightType
+  #-}
+
+-- | Optional. The latency tolerance for the propagation of this product update. Defaults to latency-sensitive.
+newtype MigrateBasePlanPricesRequest_LatencyTolerance = MigrateBasePlanPricesRequest_LatencyTolerance {fromMigrateBasePlanPricesRequest_LatencyTolerance :: Core.Text}
+  deriving stock (Core.Show, Core.Read, Core.Eq, Core.Ord, Core.Generic)
+  deriving newtype
+    ( Core.Hashable,
+      Core.ToHttpApiData,
+      Core.FromHttpApiData,
+      Core.ToJSON,
+      Core.ToJSONKey,
+      Core.FromJSON,
+      Core.FromJSONKey
+    )
+
+-- | Defaults to PRODUCT/UPDATE/LATENCY/TOLERANCE/LATENCY_SENSITIVE.
+pattern MigrateBasePlanPricesRequest_LatencyTolerance_PRODUCTUPDATELATENCYTOLERANCEUNSPECIFIED :: MigrateBasePlanPricesRequest_LatencyTolerance
+pattern MigrateBasePlanPricesRequest_LatencyTolerance_PRODUCTUPDATELATENCYTOLERANCEUNSPECIFIED = MigrateBasePlanPricesRequest_LatencyTolerance "PRODUCT_UPDATE_LATENCY_TOLERANCE_UNSPECIFIED"
+
+-- | The update will propagate to clients within several minutes on average and up to a few hours in rare cases. Throughput is limited to 7,200 updates per app per hour.
+pattern MigrateBasePlanPricesRequest_LatencyTolerance_PRODUCTUPDATELATENCYTOLERANCELATENCYSENSITIVE :: MigrateBasePlanPricesRequest_LatencyTolerance
+pattern MigrateBasePlanPricesRequest_LatencyTolerance_PRODUCTUPDATELATENCYTOLERANCELATENCYSENSITIVE = MigrateBasePlanPricesRequest_LatencyTolerance "PRODUCT_UPDATE_LATENCY_TOLERANCE_LATENCY_SENSITIVE"
+
+-- | The update will propagate to clients within 24 hours. Supports high throughput of up to 720,000 updates per app per hour using batch modification methods.
+pattern MigrateBasePlanPricesRequest_LatencyTolerance_PRODUCTUPDATELATENCYTOLERANCELATENCYTOLERANT :: MigrateBasePlanPricesRequest_LatencyTolerance
+pattern MigrateBasePlanPricesRequest_LatencyTolerance_PRODUCTUPDATELATENCYTOLERANCELATENCYTOLERANT = MigrateBasePlanPricesRequest_LatencyTolerance "PRODUCT_UPDATE_LATENCY_TOLERANCE_LATENCY_TOLERANT"
+
+{-# COMPLETE
+  MigrateBasePlanPricesRequest_LatencyTolerance_PRODUCTUPDATELATENCYTOLERANCEUNSPECIFIED,
+  MigrateBasePlanPricesRequest_LatencyTolerance_PRODUCTUPDATELATENCYTOLERANCELATENCYSENSITIVE,
+  MigrateBasePlanPricesRequest_LatencyTolerance_PRODUCTUPDATELATENCYTOLERANCELATENCYTOLERANT,
+  MigrateBasePlanPricesRequest_LatencyTolerance
+  #-}
+
+-- | Indicates the delivery type (e.g. on-demand) of the module.
+newtype ModuleMetadata_DeliveryType = ModuleMetadata_DeliveryType {fromModuleMetadata_DeliveryType :: Core.Text}
+  deriving stock (Core.Show, Core.Read, Core.Eq, Core.Ord, Core.Generic)
+  deriving newtype
+    ( Core.Hashable,
+      Core.ToHttpApiData,
+      Core.FromHttpApiData,
+      Core.ToJSON,
+      Core.ToJSONKey,
+      Core.FromJSON,
+      Core.FromJSONKey
+    )
+
+-- | Unspecified delivery type.
+pattern ModuleMetadata_DeliveryType_UNKNOWNDELIVERYTYPE :: ModuleMetadata_DeliveryType
+pattern ModuleMetadata_DeliveryType_UNKNOWNDELIVERYTYPE = ModuleMetadata_DeliveryType "UNKNOWN_DELIVERY_TYPE"
+
+-- | This module will always be downloaded as part of the initial install of the app.
+pattern ModuleMetadata_DeliveryType_INSTALLTIME :: ModuleMetadata_DeliveryType
+pattern ModuleMetadata_DeliveryType_INSTALLTIME = ModuleMetadata_DeliveryType "INSTALL_TIME"
+
+-- | This module is requested on-demand, which means it will not be part of the initial install, and will only be sent when requested by the client.
+pattern ModuleMetadata_DeliveryType_ONDEMAND :: ModuleMetadata_DeliveryType
+pattern ModuleMetadata_DeliveryType_ONDEMAND = ModuleMetadata_DeliveryType "ON_DEMAND"
+
+-- | This module will be downloaded immediately after initial install finishes. The app can be opened before these modules are downloaded.
+pattern ModuleMetadata_DeliveryType_FASTFOLLOW :: ModuleMetadata_DeliveryType
+pattern ModuleMetadata_DeliveryType_FASTFOLLOW = ModuleMetadata_DeliveryType "FAST_FOLLOW"
+
+{-# COMPLETE
+  ModuleMetadata_DeliveryType_UNKNOWNDELIVERYTYPE,
+  ModuleMetadata_DeliveryType_INSTALLTIME,
+  ModuleMetadata_DeliveryType_ONDEMAND,
+  ModuleMetadata_DeliveryType_FASTFOLLOW,
+  ModuleMetadata_DeliveryType
+  #-}
+
+-- | Indicates the type of this feature module.
+newtype ModuleMetadata_ModuleType = ModuleMetadata_ModuleType {fromModuleMetadata_ModuleType :: Core.Text}
+  deriving stock (Core.Show, Core.Read, Core.Eq, Core.Ord, Core.Generic)
+  deriving newtype
+    ( Core.Hashable,
+      Core.ToHttpApiData,
+      Core.FromHttpApiData,
+      Core.ToJSON,
+      Core.ToJSONKey,
+      Core.FromJSON,
+      Core.FromJSONKey
+    )
+
+-- | Unknown feature module.
+pattern ModuleMetadata_ModuleType_UNKNOWNMODULETYPE :: ModuleMetadata_ModuleType
+pattern ModuleMetadata_ModuleType_UNKNOWNMODULETYPE = ModuleMetadata_ModuleType "UNKNOWN_MODULE_TYPE"
+
+-- | Regular feature module.
+pattern ModuleMetadata_ModuleType_FEATUREMODULE :: ModuleMetadata_ModuleType
+pattern ModuleMetadata_ModuleType_FEATUREMODULE = ModuleMetadata_ModuleType "FEATURE_MODULE"
+
+{-# COMPLETE
+  ModuleMetadata_ModuleType_UNKNOWNMODULETYPE,
+  ModuleMetadata_ModuleType_FEATUREMODULE,
+  ModuleMetadata_ModuleType
+  #-}
+
+-- | Whether users should be able to extend this prepaid base plan in Google Play surfaces. Defaults to TIME/EXTENSION/ACTIVE if not specified.
+newtype PrepaidBasePlanType_TimeExtension = PrepaidBasePlanType_TimeExtension {fromPrepaidBasePlanType_TimeExtension :: Core.Text}
+  deriving stock (Core.Show, Core.Read, Core.Eq, Core.Ord, Core.Generic)
+  deriving newtype
+    ( Core.Hashable,
+      Core.ToHttpApiData,
+      Core.FromHttpApiData,
+      Core.ToJSON,
+      Core.ToJSONKey,
+      Core.FromJSON,
+      Core.FromJSONKey
+    )
+
+-- | Unspecified state.
+pattern PrepaidBasePlanType_TimeExtension_TIMEEXTENSIONUNSPECIFIED :: PrepaidBasePlanType_TimeExtension
+pattern PrepaidBasePlanType_TimeExtension_TIMEEXTENSIONUNSPECIFIED = PrepaidBasePlanType_TimeExtension "TIME_EXTENSION_UNSPECIFIED"
+
+-- | Time extension is active. Users are allowed to top-up or extend their prepaid plan.
+pattern PrepaidBasePlanType_TimeExtension_TIMEEXTENSIONACTIVE :: PrepaidBasePlanType_TimeExtension
+pattern PrepaidBasePlanType_TimeExtension_TIMEEXTENSIONACTIVE = PrepaidBasePlanType_TimeExtension "TIME_EXTENSION_ACTIVE"
+
+-- | Time extension is inactive. Users cannot top-up or extend their prepaid plan.
+pattern PrepaidBasePlanType_TimeExtension_TIMEEXTENSIONINACTIVE :: PrepaidBasePlanType_TimeExtension
+pattern PrepaidBasePlanType_TimeExtension_TIMEEXTENSIONINACTIVE = PrepaidBasePlanType_TimeExtension "TIME_EXTENSION_INACTIVE"
+
+{-# COMPLETE
+  PrepaidBasePlanType_TimeExtension_TIMEEXTENSIONUNSPECIFIED,
+  PrepaidBasePlanType_TimeExtension_TIMEEXTENSIONACTIVE,
+  PrepaidBasePlanType_TimeExtension_TIMEEXTENSIONINACTIVE,
+  PrepaidBasePlanType_TimeExtension
+  #-}
+
+-- | Input only. Provided during the call to Create. Must only be used when migrating a subscription from manual monthly reporting to automated reporting.
+newtype RecurringExternalTransaction_MigratedTransactionProgram = RecurringExternalTransaction_MigratedTransactionProgram {fromRecurringExternalTransaction_MigratedTransactionProgram :: Core.Text}
+  deriving stock (Core.Show, Core.Read, Core.Eq, Core.Ord, Core.Generic)
+  deriving newtype
+    ( Core.Hashable,
+      Core.ToHttpApiData,
+      Core.FromHttpApiData,
+      Core.ToJSON,
+      Core.ToJSONKey,
+      Core.FromJSON,
+      Core.FromJSONKey
+    )
+
+-- | Unspecified transaction program. Not used.
+pattern RecurringExternalTransaction_MigratedTransactionProgram_EXTERNALTRANSACTIONPROGRAMUNSPECIFIED :: RecurringExternalTransaction_MigratedTransactionProgram
+pattern RecurringExternalTransaction_MigratedTransactionProgram_EXTERNALTRANSACTIONPROGRAMUNSPECIFIED = RecurringExternalTransaction_MigratedTransactionProgram "EXTERNAL_TRANSACTION_PROGRAM_UNSPECIFIED"
+
+-- | User choice billing, where a user may choose between Google Play Billing developer-managed billing.
+pattern RecurringExternalTransaction_MigratedTransactionProgram_USERCHOICEBILLING :: RecurringExternalTransaction_MigratedTransactionProgram
+pattern RecurringExternalTransaction_MigratedTransactionProgram_USERCHOICEBILLING = RecurringExternalTransaction_MigratedTransactionProgram "USER_CHOICE_BILLING"
+
+-- | Alternative billing only, where users may only use developer-manager billing.
+pattern RecurringExternalTransaction_MigratedTransactionProgram_ALTERNATIVEBILLINGONLY :: RecurringExternalTransaction_MigratedTransactionProgram
+pattern RecurringExternalTransaction_MigratedTransactionProgram_ALTERNATIVEBILLINGONLY = RecurringExternalTransaction_MigratedTransactionProgram "ALTERNATIVE_BILLING_ONLY"
+
+{-# COMPLETE
+  RecurringExternalTransaction_MigratedTransactionProgram_EXTERNALTRANSACTIONPROGRAMUNSPECIFIED,
+  RecurringExternalTransaction_MigratedTransactionProgram_USERCHOICEBILLING,
+  RecurringExternalTransaction_MigratedTransactionProgram_ALTERNATIVEBILLINGONLY,
+  RecurringExternalTransaction_MigratedTransactionProgram
+  #-}
+
+-- | Optional. The requested type of price increase
+newtype RegionalPriceMigrationConfig_PriceIncreaseType = RegionalPriceMigrationConfig_PriceIncreaseType {fromRegionalPriceMigrationConfig_PriceIncreaseType :: Core.Text}
+  deriving stock (Core.Show, Core.Read, Core.Eq, Core.Ord, Core.Generic)
+  deriving newtype
+    ( Core.Hashable,
+      Core.ToHttpApiData,
+      Core.FromHttpApiData,
+      Core.ToJSON,
+      Core.ToJSONKey,
+      Core.FromJSON,
+      Core.FromJSONKey
+    )
+
+-- | Unspecified state.
+pattern RegionalPriceMigrationConfig_PriceIncreaseType_PRICEINCREASETYPEUNSPECIFIED :: RegionalPriceMigrationConfig_PriceIncreaseType
+pattern RegionalPriceMigrationConfig_PriceIncreaseType_PRICEINCREASETYPEUNSPECIFIED = RegionalPriceMigrationConfig_PriceIncreaseType "PRICE_INCREASE_TYPE_UNSPECIFIED"
+
+-- | Subscribers must accept the price increase or their subscription is canceled.
+pattern RegionalPriceMigrationConfig_PriceIncreaseType_PRICEINCREASETYPEOPTIN :: RegionalPriceMigrationConfig_PriceIncreaseType
+pattern RegionalPriceMigrationConfig_PriceIncreaseType_PRICEINCREASETYPEOPTIN = RegionalPriceMigrationConfig_PriceIncreaseType "PRICE_INCREASE_TYPE_OPT_IN"
+
+-- | Subscribers are notified but do not have to accept the price increase. Opt-out price increases not meeting regional, frequency, and amount limits will proceed as opt-in price increase. The first opt-out price increase for each app must be initiated in the Google Play Console.
+pattern RegionalPriceMigrationConfig_PriceIncreaseType_PRICEINCREASETYPEOPTOUT :: RegionalPriceMigrationConfig_PriceIncreaseType
+pattern RegionalPriceMigrationConfig_PriceIncreaseType_PRICEINCREASETYPEOPTOUT = RegionalPriceMigrationConfig_PriceIncreaseType "PRICE_INCREASE_TYPE_OPT_OUT"
+
+{-# COMPLETE
+  RegionalPriceMigrationConfig_PriceIncreaseType_PRICEINCREASETYPEUNSPECIFIED,
+  RegionalPriceMigrationConfig_PriceIncreaseType_PRICEINCREASETYPEOPTIN,
+  RegionalPriceMigrationConfig_PriceIncreaseType_PRICEINCREASETYPEOPTOUT,
+  RegionalPriceMigrationConfig_PriceIncreaseType
+  #-}
+
+-- | To collect communications or amusement taxes in the United States, choose the appropriate tax category. <https://support.google.com/googleplay/android-developer/answer/10463498#streaming_tax Learn more>.
+newtype RegionalTaxRateInfo_StreamingTaxType = RegionalTaxRateInfo_StreamingTaxType {fromRegionalTaxRateInfo_StreamingTaxType :: Core.Text}
+  deriving stock (Core.Show, Core.Read, Core.Eq, Core.Ord, Core.Generic)
+  deriving newtype
+    ( Core.Hashable,
+      Core.ToHttpApiData,
+      Core.FromHttpApiData,
+      Core.ToJSON,
+      Core.ToJSONKey,
+      Core.FromJSON,
+      Core.FromJSONKey
+    )
+
+-- | No telecommunications tax collected.
+pattern RegionalTaxRateInfo_StreamingTaxType_STREAMINGTAXTYPEUNSPECIFIED :: RegionalTaxRateInfo_StreamingTaxType
+pattern RegionalTaxRateInfo_StreamingTaxType_STREAMINGTAXTYPEUNSPECIFIED = RegionalTaxRateInfo_StreamingTaxType "STREAMING_TAX_TYPE_UNSPECIFIED"
+
+-- | US-specific telecommunications tax tier for video streaming, on demand, rentals \/ subscriptions \/ pay-per-view.
+pattern RegionalTaxRateInfo_StreamingTaxType_STREAMINGTAXTYPETELCOVIDEORENTAL :: RegionalTaxRateInfo_StreamingTaxType
+pattern RegionalTaxRateInfo_StreamingTaxType_STREAMINGTAXTYPETELCOVIDEORENTAL = RegionalTaxRateInfo_StreamingTaxType "STREAMING_TAX_TYPE_TELCO_VIDEO_RENTAL"
+
+-- | US-specific telecommunications tax tier for video streaming of pre-recorded content like movies, tv shows.
+pattern RegionalTaxRateInfo_StreamingTaxType_STREAMINGTAXTYPETELCOVIDEOSALES :: RegionalTaxRateInfo_StreamingTaxType
+pattern RegionalTaxRateInfo_StreamingTaxType_STREAMINGTAXTYPETELCOVIDEOSALES = RegionalTaxRateInfo_StreamingTaxType "STREAMING_TAX_TYPE_TELCO_VIDEO_SALES"
+
+-- | US-specific telecommunications tax tier for video streaming of multi-channel programming.
+pattern RegionalTaxRateInfo_StreamingTaxType_STREAMINGTAXTYPETELCOVIDEOMULTICHANNEL :: RegionalTaxRateInfo_StreamingTaxType
+pattern RegionalTaxRateInfo_StreamingTaxType_STREAMINGTAXTYPETELCOVIDEOMULTICHANNEL = RegionalTaxRateInfo_StreamingTaxType "STREAMING_TAX_TYPE_TELCO_VIDEO_MULTI_CHANNEL"
+
+-- | US-specific telecommunications tax tier for audio streaming, rental \/ subscription.
+pattern RegionalTaxRateInfo_StreamingTaxType_STREAMINGTAXTYPETELCOAUDIORENTAL :: RegionalTaxRateInfo_StreamingTaxType
+pattern RegionalTaxRateInfo_StreamingTaxType_STREAMINGTAXTYPETELCOAUDIORENTAL = RegionalTaxRateInfo_StreamingTaxType "STREAMING_TAX_TYPE_TELCO_AUDIO_RENTAL"
+
+-- | US-specific telecommunications tax tier for audio streaming, sale \/ permanent download.
+pattern RegionalTaxRateInfo_StreamingTaxType_STREAMINGTAXTYPETELCOAUDIOSALES :: RegionalTaxRateInfo_StreamingTaxType
+pattern RegionalTaxRateInfo_StreamingTaxType_STREAMINGTAXTYPETELCOAUDIOSALES = RegionalTaxRateInfo_StreamingTaxType "STREAMING_TAX_TYPE_TELCO_AUDIO_SALES"
+
+-- | US-specific telecommunications tax tier for multi channel audio streaming like radio.
+pattern RegionalTaxRateInfo_StreamingTaxType_STREAMINGTAXTYPETELCOAUDIOMULTICHANNEL :: RegionalTaxRateInfo_StreamingTaxType
+pattern RegionalTaxRateInfo_StreamingTaxType_STREAMINGTAXTYPETELCOAUDIOMULTICHANNEL = RegionalTaxRateInfo_StreamingTaxType "STREAMING_TAX_TYPE_TELCO_AUDIO_MULTI_CHANNEL"
+
+{-# COMPLETE
+  RegionalTaxRateInfo_StreamingTaxType_STREAMINGTAXTYPEUNSPECIFIED,
+  RegionalTaxRateInfo_StreamingTaxType_STREAMINGTAXTYPETELCOVIDEORENTAL,
+  RegionalTaxRateInfo_StreamingTaxType_STREAMINGTAXTYPETELCOVIDEOSALES,
+  RegionalTaxRateInfo_StreamingTaxType_STREAMINGTAXTYPETELCOVIDEOMULTICHANNEL,
+  RegionalTaxRateInfo_StreamingTaxType_STREAMINGTAXTYPETELCOAUDIORENTAL,
+  RegionalTaxRateInfo_StreamingTaxType_STREAMINGTAXTYPETELCOAUDIOSALES,
+  RegionalTaxRateInfo_StreamingTaxType_STREAMINGTAXTYPETELCOAUDIOMULTICHANNEL,
+  RegionalTaxRateInfo_StreamingTaxType
+  #-}
+
+-- | Tax tier to specify reduced tax rate. Developers who sell digital news, magazines, newspapers, books, or audiobooks in various regions may be eligible for reduced tax rates. <https://support.google.com/googleplay/android-developer/answer/10463498 Learn more>.
+newtype RegionalTaxRateInfo_TaxTier = RegionalTaxRateInfo_TaxTier {fromRegionalTaxRateInfo_TaxTier :: Core.Text}
+  deriving stock (Core.Show, Core.Read, Core.Eq, Core.Ord, Core.Generic)
+  deriving newtype
+    ( Core.Hashable,
+      Core.ToHttpApiData,
+      Core.FromHttpApiData,
+      Core.ToJSON,
+      Core.ToJSONKey,
+      Core.FromJSON,
+      Core.FromJSONKey
+    )
+
+pattern RegionalTaxRateInfo_TaxTier_TAXTIERUNSPECIFIED :: RegionalTaxRateInfo_TaxTier
+pattern RegionalTaxRateInfo_TaxTier_TAXTIERUNSPECIFIED = RegionalTaxRateInfo_TaxTier "TAX_TIER_UNSPECIFIED"
+
+pattern RegionalTaxRateInfo_TaxTier_TAX_TIER_BOOKS_1 :: RegionalTaxRateInfo_TaxTier
+pattern RegionalTaxRateInfo_TaxTier_TAX_TIER_BOOKS_1 = RegionalTaxRateInfo_TaxTier "TAX_TIER_BOOKS_1"
+
+pattern RegionalTaxRateInfo_TaxTier_TAX_TIER_NEWS_1 :: RegionalTaxRateInfo_TaxTier
+pattern RegionalTaxRateInfo_TaxTier_TAX_TIER_NEWS_1 = RegionalTaxRateInfo_TaxTier "TAX_TIER_NEWS_1"
+
+pattern RegionalTaxRateInfo_TaxTier_TAX_TIER_NEWS_2 :: RegionalTaxRateInfo_TaxTier
+pattern RegionalTaxRateInfo_TaxTier_TAX_TIER_NEWS_2 = RegionalTaxRateInfo_TaxTier "TAX_TIER_NEWS_2"
+
+pattern RegionalTaxRateInfo_TaxTier_TAX_TIER_MUSIC_OR_AUDIO_1 :: RegionalTaxRateInfo_TaxTier
+pattern RegionalTaxRateInfo_TaxTier_TAX_TIER_MUSIC_OR_AUDIO_1 = RegionalTaxRateInfo_TaxTier "TAX_TIER_MUSIC_OR_AUDIO_1"
+
+pattern RegionalTaxRateInfo_TaxTier_TAX_TIER_LIVE_OR_BROADCAST_1 :: RegionalTaxRateInfo_TaxTier
+pattern RegionalTaxRateInfo_TaxTier_TAX_TIER_LIVE_OR_BROADCAST_1 = RegionalTaxRateInfo_TaxTier "TAX_TIER_LIVE_OR_BROADCAST_1"
+
+{-# COMPLETE
+  RegionalTaxRateInfo_TaxTier_TAXTIERUNSPECIFIED,
+  RegionalTaxRateInfo_TaxTier_TAX_TIER_BOOKS_1,
+  RegionalTaxRateInfo_TaxTier_TAX_TIER_NEWS_1,
+  RegionalTaxRateInfo_TaxTier_TAX_TIER_NEWS_2,
+  RegionalTaxRateInfo_TaxTier_TAX_TIER_MUSIC_OR_AUDIO_1,
+  RegionalTaxRateInfo_TaxTier_TAX_TIER_LIVE_OR_BROADCAST_1,
+  RegionalTaxRateInfo_TaxTier
+  #-}
+
+-- | Alias for a screen density.
+newtype ScreenDensity_DensityAlias = ScreenDensity_DensityAlias {fromScreenDensity_DensityAlias :: Core.Text}
+  deriving stock (Core.Show, Core.Read, Core.Eq, Core.Ord, Core.Generic)
+  deriving newtype
+    ( Core.Hashable,
+      Core.ToHttpApiData,
+      Core.FromHttpApiData,
+      Core.ToJSON,
+      Core.ToJSONKey,
+      Core.FromJSON,
+      Core.FromJSONKey
+    )
+
+-- | Unspecified screen density.
+pattern ScreenDensity_DensityAlias_DENSITYUNSPECIFIED :: ScreenDensity_DensityAlias
+pattern ScreenDensity_DensityAlias_DENSITYUNSPECIFIED = ScreenDensity_DensityAlias "DENSITY_UNSPECIFIED"
+
+-- | NODPI screen density.
+pattern ScreenDensity_DensityAlias_Nodpi :: ScreenDensity_DensityAlias
+pattern ScreenDensity_DensityAlias_Nodpi = ScreenDensity_DensityAlias "NODPI"
+
+-- | LDPI screen density.
+pattern ScreenDensity_DensityAlias_Ldpi :: ScreenDensity_DensityAlias
+pattern ScreenDensity_DensityAlias_Ldpi = ScreenDensity_DensityAlias "LDPI"
+
+-- | MDPI screen density.
+pattern ScreenDensity_DensityAlias_Mdpi :: ScreenDensity_DensityAlias
+pattern ScreenDensity_DensityAlias_Mdpi = ScreenDensity_DensityAlias "MDPI"
+
+-- | TVDPI screen density.
+pattern ScreenDensity_DensityAlias_Tvdpi :: ScreenDensity_DensityAlias
+pattern ScreenDensity_DensityAlias_Tvdpi = ScreenDensity_DensityAlias "TVDPI"
+
+-- | HDPI screen density.
+pattern ScreenDensity_DensityAlias_Hdpi :: ScreenDensity_DensityAlias
+pattern ScreenDensity_DensityAlias_Hdpi = ScreenDensity_DensityAlias "HDPI"
+
+-- | XHDPI screen density.
+pattern ScreenDensity_DensityAlias_Xhdpi :: ScreenDensity_DensityAlias
+pattern ScreenDensity_DensityAlias_Xhdpi = ScreenDensity_DensityAlias "XHDPI"
+
+-- | XXHDPI screen density.
+pattern ScreenDensity_DensityAlias_Xxhdpi :: ScreenDensity_DensityAlias
+pattern ScreenDensity_DensityAlias_Xxhdpi = ScreenDensity_DensityAlias "XXHDPI"
+
+-- | XXXHDPI screen density.
+pattern ScreenDensity_DensityAlias_Xxxhdpi :: ScreenDensity_DensityAlias
+pattern ScreenDensity_DensityAlias_Xxxhdpi = ScreenDensity_DensityAlias "XXXHDPI"
+
+{-# COMPLETE
+  ScreenDensity_DensityAlias_DENSITYUNSPECIFIED,
+  ScreenDensity_DensityAlias_Nodpi,
+  ScreenDensity_DensityAlias_Ldpi,
+  ScreenDensity_DensityAlias_Mdpi,
+  ScreenDensity_DensityAlias_Tvdpi,
+  ScreenDensity_DensityAlias_Hdpi,
+  ScreenDensity_DensityAlias_Xhdpi,
+  ScreenDensity_DensityAlias_Xxhdpi,
+  ScreenDensity_DensityAlias_Xxxhdpi,
+  ScreenDensity_DensityAlias
+  #-}
+
+-- | Price change mode specifies how the subscription item price is changing.
+newtype SubscriptionItemPriceChangeDetails_PriceChangeMode = SubscriptionItemPriceChangeDetails_PriceChangeMode {fromSubscriptionItemPriceChangeDetails_PriceChangeMode :: Core.Text}
+  deriving stock (Core.Show, Core.Read, Core.Eq, Core.Ord, Core.Generic)
+  deriving newtype
+    ( Core.Hashable,
+      Core.ToHttpApiData,
+      Core.FromHttpApiData,
+      Core.ToJSON,
+      Core.ToJSONKey,
+      Core.FromJSON,
+      Core.FromJSONKey
+    )
+
+-- | Price change mode unspecified. This value should never be set.
+pattern SubscriptionItemPriceChangeDetails_PriceChangeMode_PRICECHANGEMODEUNSPECIFIED :: SubscriptionItemPriceChangeDetails_PriceChangeMode
+pattern SubscriptionItemPriceChangeDetails_PriceChangeMode_PRICECHANGEMODEUNSPECIFIED = SubscriptionItemPriceChangeDetails_PriceChangeMode "PRICE_CHANGE_MODE_UNSPECIFIED"
+
+-- | If the subscription price is decreasing.
+pattern SubscriptionItemPriceChangeDetails_PriceChangeMode_PRICEDECREASE :: SubscriptionItemPriceChangeDetails_PriceChangeMode
+pattern SubscriptionItemPriceChangeDetails_PriceChangeMode_PRICEDECREASE = SubscriptionItemPriceChangeDetails_PriceChangeMode "PRICE_DECREASE"
+
+-- | If the subscription price is increasing and the user needs to accept it.
+pattern SubscriptionItemPriceChangeDetails_PriceChangeMode_PRICEINCREASE :: SubscriptionItemPriceChangeDetails_PriceChangeMode
+pattern SubscriptionItemPriceChangeDetails_PriceChangeMode_PRICEINCREASE = SubscriptionItemPriceChangeDetails_PriceChangeMode "PRICE_INCREASE"
+
+-- | If the subscription price is increasing with opt out mode.
+pattern SubscriptionItemPriceChangeDetails_PriceChangeMode_OPTOUTPRICEINCREASE :: SubscriptionItemPriceChangeDetails_PriceChangeMode
+pattern SubscriptionItemPriceChangeDetails_PriceChangeMode_OPTOUTPRICEINCREASE = SubscriptionItemPriceChangeDetails_PriceChangeMode "OPT_OUT_PRICE_INCREASE"
+
+{-# COMPLETE
+  SubscriptionItemPriceChangeDetails_PriceChangeMode_PRICECHANGEMODEUNSPECIFIED,
+  SubscriptionItemPriceChangeDetails_PriceChangeMode_PRICEDECREASE,
+  SubscriptionItemPriceChangeDetails_PriceChangeMode_PRICEINCREASE,
+  SubscriptionItemPriceChangeDetails_PriceChangeMode_OPTOUTPRICEINCREASE,
+  SubscriptionItemPriceChangeDetails_PriceChangeMode
+  #-}
+
+-- | State the price change is currently in.
+newtype SubscriptionItemPriceChangeDetails_PriceChangeState = SubscriptionItemPriceChangeDetails_PriceChangeState {fromSubscriptionItemPriceChangeDetails_PriceChangeState :: Core.Text}
+  deriving stock (Core.Show, Core.Read, Core.Eq, Core.Ord, Core.Generic)
+  deriving newtype
+    ( Core.Hashable,
+      Core.ToHttpApiData,
+      Core.FromHttpApiData,
+      Core.ToJSON,
+      Core.ToJSONKey,
+      Core.FromJSON,
+      Core.FromJSONKey
+    )
+
+-- | Price change state unspecified. This value should not be used.
+pattern SubscriptionItemPriceChangeDetails_PriceChangeState_PRICECHANGESTATEUNSPECIFIED :: SubscriptionItemPriceChangeDetails_PriceChangeState
+pattern SubscriptionItemPriceChangeDetails_PriceChangeState_PRICECHANGESTATEUNSPECIFIED = SubscriptionItemPriceChangeDetails_PriceChangeState "PRICE_CHANGE_STATE_UNSPECIFIED"
+
+-- | Waiting for the user to agree for the price change.
+pattern SubscriptionItemPriceChangeDetails_PriceChangeState_Outstanding :: SubscriptionItemPriceChangeDetails_PriceChangeState
+pattern SubscriptionItemPriceChangeDetails_PriceChangeState_Outstanding = SubscriptionItemPriceChangeDetails_PriceChangeState "OUTSTANDING"
+
+-- | The price change is confirmed to happen for the user.
+pattern SubscriptionItemPriceChangeDetails_PriceChangeState_Confirmed :: SubscriptionItemPriceChangeDetails_PriceChangeState
+pattern SubscriptionItemPriceChangeDetails_PriceChangeState_Confirmed = SubscriptionItemPriceChangeDetails_PriceChangeState "CONFIRMED"
+
+-- | The price change is applied, i.e. the user has started being charged the new price.
+pattern SubscriptionItemPriceChangeDetails_PriceChangeState_Applied :: SubscriptionItemPriceChangeDetails_PriceChangeState
+pattern SubscriptionItemPriceChangeDetails_PriceChangeState_Applied = SubscriptionItemPriceChangeDetails_PriceChangeState "APPLIED"
+
+{-# COMPLETE
+  SubscriptionItemPriceChangeDetails_PriceChangeState_PRICECHANGESTATEUNSPECIFIED,
+  SubscriptionItemPriceChangeDetails_PriceChangeState_Outstanding,
+  SubscriptionItemPriceChangeDetails_PriceChangeState_Confirmed,
+  SubscriptionItemPriceChangeDetails_PriceChangeState_Applied,
+  SubscriptionItemPriceChangeDetails_PriceChangeState
+  #-}
+
+-- | Output only. The current state of this offer. Can be changed using Activate and Deactivate actions. NB: the base plan state supersedes this state, so an active offer may not be available if the base plan is not active.
+newtype SubscriptionOffer_State = SubscriptionOffer_State {fromSubscriptionOffer_State :: Core.Text}
+  deriving stock (Core.Show, Core.Read, Core.Eq, Core.Ord, Core.Generic)
+  deriving newtype
+    ( Core.Hashable,
+      Core.ToHttpApiData,
+      Core.FromHttpApiData,
+      Core.ToJSON,
+      Core.ToJSONKey,
+      Core.FromJSON,
+      Core.FromJSONKey
+    )
+
+-- | Default value, should never be used.
+pattern SubscriptionOffer_State_STATEUNSPECIFIED :: SubscriptionOffer_State
+pattern SubscriptionOffer_State_STATEUNSPECIFIED = SubscriptionOffer_State "STATE_UNSPECIFIED"
+
+-- | The subscription offer is not and has never been available to users.
+pattern SubscriptionOffer_State_Draft :: SubscriptionOffer_State
+pattern SubscriptionOffer_State_Draft = SubscriptionOffer_State "DRAFT"
+
+-- | The subscription offer is available to new and existing users.
+pattern SubscriptionOffer_State_Active :: SubscriptionOffer_State
+pattern SubscriptionOffer_State_Active = SubscriptionOffer_State "ACTIVE"
+
+-- | The subscription offer is not available to new users. Existing users retain access.
+pattern SubscriptionOffer_State_Inactive :: SubscriptionOffer_State
+pattern SubscriptionOffer_State_Inactive = SubscriptionOffer_State "INACTIVE"
+
+{-# COMPLETE
+  SubscriptionOffer_State_STATEUNSPECIFIED,
+  SubscriptionOffer_State_Draft,
+  SubscriptionOffer_State_Active,
+  SubscriptionOffer_State_Inactive,
+  SubscriptionOffer_State
+  #-}
+
+-- | The acknowledgement state of the subscription.
+newtype SubscriptionPurchaseV2_AcknowledgementState = SubscriptionPurchaseV2_AcknowledgementState {fromSubscriptionPurchaseV2_AcknowledgementState :: Core.Text}
+  deriving stock (Core.Show, Core.Read, Core.Eq, Core.Ord, Core.Generic)
+  deriving newtype
+    ( Core.Hashable,
+      Core.ToHttpApiData,
+      Core.FromHttpApiData,
+      Core.ToJSON,
+      Core.ToJSONKey,
+      Core.FromJSON,
+      Core.FromJSONKey
+    )
+
+-- | Unspecified acknowledgement state.
+pattern SubscriptionPurchaseV2_AcknowledgementState_ACKNOWLEDGEMENTSTATEUNSPECIFIED :: SubscriptionPurchaseV2_AcknowledgementState
+pattern SubscriptionPurchaseV2_AcknowledgementState_ACKNOWLEDGEMENTSTATEUNSPECIFIED = SubscriptionPurchaseV2_AcknowledgementState "ACKNOWLEDGEMENT_STATE_UNSPECIFIED"
+
+-- | The subscription is not acknowledged yet.
+pattern SubscriptionPurchaseV2_AcknowledgementState_ACKNOWLEDGEMENTSTATEPENDING :: SubscriptionPurchaseV2_AcknowledgementState
+pattern SubscriptionPurchaseV2_AcknowledgementState_ACKNOWLEDGEMENTSTATEPENDING = SubscriptionPurchaseV2_AcknowledgementState "ACKNOWLEDGEMENT_STATE_PENDING"
+
+-- | The subscription is acknowledged.
+pattern SubscriptionPurchaseV2_AcknowledgementState_ACKNOWLEDGEMENTSTATEACKNOWLEDGED :: SubscriptionPurchaseV2_AcknowledgementState
+pattern SubscriptionPurchaseV2_AcknowledgementState_ACKNOWLEDGEMENTSTATEACKNOWLEDGED = SubscriptionPurchaseV2_AcknowledgementState "ACKNOWLEDGEMENT_STATE_ACKNOWLEDGED"
+
+{-# COMPLETE
+  SubscriptionPurchaseV2_AcknowledgementState_ACKNOWLEDGEMENTSTATEUNSPECIFIED,
+  SubscriptionPurchaseV2_AcknowledgementState_ACKNOWLEDGEMENTSTATEPENDING,
+  SubscriptionPurchaseV2_AcknowledgementState_ACKNOWLEDGEMENTSTATEACKNOWLEDGED,
+  SubscriptionPurchaseV2_AcknowledgementState
+  #-}
+
+-- | The current state of the subscription.
+newtype SubscriptionPurchaseV2_SubscriptionState = SubscriptionPurchaseV2_SubscriptionState {fromSubscriptionPurchaseV2_SubscriptionState :: Core.Text}
+  deriving stock (Core.Show, Core.Read, Core.Eq, Core.Ord, Core.Generic)
+  deriving newtype
+    ( Core.Hashable,
+      Core.ToHttpApiData,
+      Core.FromHttpApiData,
+      Core.ToJSON,
+      Core.ToJSONKey,
+      Core.FromJSON,
+      Core.FromJSONKey
+    )
+
+-- | Unspecified subscription state.
+pattern SubscriptionPurchaseV2_SubscriptionState_SUBSCRIPTIONSTATEUNSPECIFIED :: SubscriptionPurchaseV2_SubscriptionState
+pattern SubscriptionPurchaseV2_SubscriptionState_SUBSCRIPTIONSTATEUNSPECIFIED = SubscriptionPurchaseV2_SubscriptionState "SUBSCRIPTION_STATE_UNSPECIFIED"
+
+-- | Subscription was created but awaiting payment during signup. In this state, all items are awaiting payment.
+pattern SubscriptionPurchaseV2_SubscriptionState_SUBSCRIPTIONSTATEPENDING :: SubscriptionPurchaseV2_SubscriptionState
+pattern SubscriptionPurchaseV2_SubscriptionState_SUBSCRIPTIONSTATEPENDING = SubscriptionPurchaseV2_SubscriptionState "SUBSCRIPTION_STATE_PENDING"
+
+-- | Subscription is active. - (1) If the subscription is an auto renewing plan, at least one item is auto/renew/enabled and not expired. - (2) If the subscription is a prepaid plan, at least one item is not expired.
+pattern SubscriptionPurchaseV2_SubscriptionState_SUBSCRIPTIONSTATEACTIVE :: SubscriptionPurchaseV2_SubscriptionState
+pattern SubscriptionPurchaseV2_SubscriptionState_SUBSCRIPTIONSTATEACTIVE = SubscriptionPurchaseV2_SubscriptionState "SUBSCRIPTION_STATE_ACTIVE"
+
+-- | Subscription is paused. The state is only available when the subscription is an auto renewing plan. In this state, all items are in paused state.
+pattern SubscriptionPurchaseV2_SubscriptionState_SUBSCRIPTIONSTATEPAUSED :: SubscriptionPurchaseV2_SubscriptionState
+pattern SubscriptionPurchaseV2_SubscriptionState_SUBSCRIPTIONSTATEPAUSED = SubscriptionPurchaseV2_SubscriptionState "SUBSCRIPTION_STATE_PAUSED"
+
+-- | Subscription is in grace period. The state is only available when the subscription is an auto renewing plan. In this state, all items are in grace period.
+pattern SubscriptionPurchaseV2_SubscriptionState_SUBSCRIPTIONSTATEINGRACEPERIOD :: SubscriptionPurchaseV2_SubscriptionState
+pattern SubscriptionPurchaseV2_SubscriptionState_SUBSCRIPTIONSTATEINGRACEPERIOD = SubscriptionPurchaseV2_SubscriptionState "SUBSCRIPTION_STATE_IN_GRACE_PERIOD"
+
+-- | Subscription is on hold (suspended). The state is only available when the subscription is an auto renewing plan. In this state, all items are on hold.
+pattern SubscriptionPurchaseV2_SubscriptionState_SUBSCRIPTIONSTATEONHOLD :: SubscriptionPurchaseV2_SubscriptionState
+pattern SubscriptionPurchaseV2_SubscriptionState_SUBSCRIPTIONSTATEONHOLD = SubscriptionPurchaseV2_SubscriptionState "SUBSCRIPTION_STATE_ON_HOLD"
+
+-- | Subscription is canceled but not expired yet. The state is only available when the subscription is an auto renewing plan. All items have auto/renew/enabled set to false.
+pattern SubscriptionPurchaseV2_SubscriptionState_SUBSCRIPTIONSTATECANCELED :: SubscriptionPurchaseV2_SubscriptionState
+pattern SubscriptionPurchaseV2_SubscriptionState_SUBSCRIPTIONSTATECANCELED = SubscriptionPurchaseV2_SubscriptionState "SUBSCRIPTION_STATE_CANCELED"
+
+-- | Subscription is expired. All items have expiry_time in the past.
+pattern SubscriptionPurchaseV2_SubscriptionState_SUBSCRIPTIONSTATEEXPIRED :: SubscriptionPurchaseV2_SubscriptionState
+pattern SubscriptionPurchaseV2_SubscriptionState_SUBSCRIPTIONSTATEEXPIRED = SubscriptionPurchaseV2_SubscriptionState "SUBSCRIPTION_STATE_EXPIRED"
+
+-- | Pending transaction for subscription is canceled. If this pending purchase was for an existing subscription, use linked/purchase/token to get the current state of that subscription.
+pattern SubscriptionPurchaseV2_SubscriptionState_SUBSCRIPTIONSTATEPENDINGPURCHASECANCELED :: SubscriptionPurchaseV2_SubscriptionState
+pattern SubscriptionPurchaseV2_SubscriptionState_SUBSCRIPTIONSTATEPENDINGPURCHASECANCELED = SubscriptionPurchaseV2_SubscriptionState "SUBSCRIPTION_STATE_PENDING_PURCHASE_CANCELED"
+
+{-# COMPLETE
+  SubscriptionPurchaseV2_SubscriptionState_SUBSCRIPTIONSTATEUNSPECIFIED,
+  SubscriptionPurchaseV2_SubscriptionState_SUBSCRIPTIONSTATEPENDING,
+  SubscriptionPurchaseV2_SubscriptionState_SUBSCRIPTIONSTATEACTIVE,
+  SubscriptionPurchaseV2_SubscriptionState_SUBSCRIPTIONSTATEPAUSED,
+  SubscriptionPurchaseV2_SubscriptionState_SUBSCRIPTIONSTATEINGRACEPERIOD,
+  SubscriptionPurchaseV2_SubscriptionState_SUBSCRIPTIONSTATEONHOLD,
+  SubscriptionPurchaseV2_SubscriptionState_SUBSCRIPTIONSTATECANCELED,
+  SubscriptionPurchaseV2_SubscriptionState_SUBSCRIPTIONSTATEEXPIRED,
+  SubscriptionPurchaseV2_SubscriptionState_SUBSCRIPTIONSTATEPENDINGPURCHASECANCELED,
+  SubscriptionPurchaseV2_SubscriptionState
+  #-}
+
+-- | Digital content or service classification for products distributed to users in the European Economic Area (EEA). The withdrawal regime under EEA consumer laws depends on this classification. Refer to the <https://support.google.com/googleplay/android-developer/answer/10463498 Help Center article> for more information.
+newtype SubscriptionTaxAndComplianceSettings_EeaWithdrawalRightType = SubscriptionTaxAndComplianceSettings_EeaWithdrawalRightType {fromSubscriptionTaxAndComplianceSettings_EeaWithdrawalRightType :: Core.Text}
+  deriving stock (Core.Show, Core.Read, Core.Eq, Core.Ord, Core.Generic)
+  deriving newtype
+    ( Core.Hashable,
+      Core.ToHttpApiData,
+      Core.FromHttpApiData,
+      Core.ToJSON,
+      Core.ToJSONKey,
+      Core.FromJSON,
+      Core.FromJSONKey
+    )
+
+pattern SubscriptionTaxAndComplianceSettings_EeaWithdrawalRightType_WITHDRAWALRIGHTTYPEUNSPECIFIED :: SubscriptionTaxAndComplianceSettings_EeaWithdrawalRightType
+pattern SubscriptionTaxAndComplianceSettings_EeaWithdrawalRightType_WITHDRAWALRIGHTTYPEUNSPECIFIED = SubscriptionTaxAndComplianceSettings_EeaWithdrawalRightType "WITHDRAWAL_RIGHT_TYPE_UNSPECIFIED"
+
+pattern SubscriptionTaxAndComplianceSettings_EeaWithdrawalRightType_WITHDRAWALRIGHTDIGITALCONTENT :: SubscriptionTaxAndComplianceSettings_EeaWithdrawalRightType
+pattern SubscriptionTaxAndComplianceSettings_EeaWithdrawalRightType_WITHDRAWALRIGHTDIGITALCONTENT = SubscriptionTaxAndComplianceSettings_EeaWithdrawalRightType "WITHDRAWAL_RIGHT_DIGITAL_CONTENT"
+
+pattern SubscriptionTaxAndComplianceSettings_EeaWithdrawalRightType_WITHDRAWALRIGHTSERVICE :: SubscriptionTaxAndComplianceSettings_EeaWithdrawalRightType
+pattern SubscriptionTaxAndComplianceSettings_EeaWithdrawalRightType_WITHDRAWALRIGHTSERVICE = SubscriptionTaxAndComplianceSettings_EeaWithdrawalRightType "WITHDRAWAL_RIGHT_SERVICE"
+
+{-# COMPLETE
+  SubscriptionTaxAndComplianceSettings_EeaWithdrawalRightType_WITHDRAWALRIGHTTYPEUNSPECIFIED,
+  SubscriptionTaxAndComplianceSettings_EeaWithdrawalRightType_WITHDRAWALRIGHTDIGITALCONTENT,
+  SubscriptionTaxAndComplianceSettings_EeaWithdrawalRightType_WITHDRAWALRIGHTSERVICE,
+  SubscriptionTaxAndComplianceSettings_EeaWithdrawalRightType
+  #-}
+
+-- | Alias for texture compression format.
+newtype TextureCompressionFormat_Alias = TextureCompressionFormat_Alias {fromTextureCompressionFormat_Alias :: Core.Text}
+  deriving stock (Core.Show, Core.Read, Core.Eq, Core.Ord, Core.Generic)
+  deriving newtype
+    ( Core.Hashable,
+      Core.ToHttpApiData,
+      Core.FromHttpApiData,
+      Core.ToJSON,
+      Core.ToJSONKey,
+      Core.FromJSON,
+      Core.FromJSONKey
+    )
+
+-- | Unspecified format.
+pattern TextureCompressionFormat_Alias_UNSPECIFIEDTEXTURECOMPRESSIONFORMAT :: TextureCompressionFormat_Alias
+pattern TextureCompressionFormat_Alias_UNSPECIFIEDTEXTURECOMPRESSIONFORMAT = TextureCompressionFormat_Alias "UNSPECIFIED_TEXTURE_COMPRESSION_FORMAT"
+
+-- | ETC1_RGB8 format.
+pattern TextureCompressionFormat_Alias_ETC1_RGB8 :: TextureCompressionFormat_Alias
+pattern TextureCompressionFormat_Alias_ETC1_RGB8 = TextureCompressionFormat_Alias "ETC1_RGB8"
+
+-- | PALETTED format.
+pattern TextureCompressionFormat_Alias_Paletted :: TextureCompressionFormat_Alias
+pattern TextureCompressionFormat_Alias_Paletted = TextureCompressionFormat_Alias "PALETTED"
+
+-- | THREE_DC format.
+pattern TextureCompressionFormat_Alias_THREEDC :: TextureCompressionFormat_Alias
+pattern TextureCompressionFormat_Alias_THREEDC = TextureCompressionFormat_Alias "THREE_DC"
+
+-- | ATC format.
+pattern TextureCompressionFormat_Alias_Atc :: TextureCompressionFormat_Alias
+pattern TextureCompressionFormat_Alias_Atc = TextureCompressionFormat_Alias "ATC"
+
+-- | LATC format.
+pattern TextureCompressionFormat_Alias_Latc :: TextureCompressionFormat_Alias
+pattern TextureCompressionFormat_Alias_Latc = TextureCompressionFormat_Alias "LATC"
+
+-- | DXT1 format.
+pattern TextureCompressionFormat_Alias_DXT1 :: TextureCompressionFormat_Alias
+pattern TextureCompressionFormat_Alias_DXT1 = TextureCompressionFormat_Alias "DXT1"
+
+-- | S3TC format.
+pattern TextureCompressionFormat_Alias_S3TC :: TextureCompressionFormat_Alias
+pattern TextureCompressionFormat_Alias_S3TC = TextureCompressionFormat_Alias "S3TC"
+
+-- | PVRTC format.
+pattern TextureCompressionFormat_Alias_Pvrtc :: TextureCompressionFormat_Alias
+pattern TextureCompressionFormat_Alias_Pvrtc = TextureCompressionFormat_Alias "PVRTC"
+
+-- | ASTC format.
+pattern TextureCompressionFormat_Alias_Astc :: TextureCompressionFormat_Alias
+pattern TextureCompressionFormat_Alias_Astc = TextureCompressionFormat_Alias "ASTC"
+
+-- | ETC2 format.
+pattern TextureCompressionFormat_Alias_ETC2 :: TextureCompressionFormat_Alias
+pattern TextureCompressionFormat_Alias_ETC2 = TextureCompressionFormat_Alias "ETC2"
+
+{-# COMPLETE
+  TextureCompressionFormat_Alias_UNSPECIFIEDTEXTURECOMPRESSIONFORMAT,
+  TextureCompressionFormat_Alias_ETC1_RGB8,
+  TextureCompressionFormat_Alias_Paletted,
+  TextureCompressionFormat_Alias_THREEDC,
+  TextureCompressionFormat_Alias_Atc,
+  TextureCompressionFormat_Alias_Latc,
+  TextureCompressionFormat_Alias_DXT1,
+  TextureCompressionFormat_Alias_S3TC,
+  TextureCompressionFormat_Alias_Pvrtc,
+  TextureCompressionFormat_Alias_Astc,
+  TextureCompressionFormat_Alias_ETC2,
+  TextureCompressionFormat_Alias
+  #-}
+
+-- | Required. Form factor of the new track. Defaults to the default track.
+newtype TrackConfig_FormFactor = TrackConfig_FormFactor {fromTrackConfig_FormFactor :: Core.Text}
+  deriving stock (Core.Show, Core.Read, Core.Eq, Core.Ord, Core.Generic)
+  deriving newtype
+    ( Core.Hashable,
+      Core.ToHttpApiData,
+      Core.FromHttpApiData,
+      Core.ToJSON,
+      Core.ToJSONKey,
+      Core.FromJSON,
+      Core.FromJSONKey
+    )
+
+-- | Fallback value, do not use.
+pattern TrackConfig_FormFactor_FORMFACTORUNSPECIFIED :: TrackConfig_FormFactor
+pattern TrackConfig_FormFactor_FORMFACTORUNSPECIFIED = TrackConfig_FormFactor "FORM_FACTOR_UNSPECIFIED"
+
+-- | Default track.
+pattern TrackConfig_FormFactor_Default :: TrackConfig_FormFactor
+pattern TrackConfig_FormFactor_Default = TrackConfig_FormFactor "DEFAULT"
+
+-- | Wear form factor track.
+pattern TrackConfig_FormFactor_Wear :: TrackConfig_FormFactor
+pattern TrackConfig_FormFactor_Wear = TrackConfig_FormFactor "WEAR"
+
+-- | Automotive form factor track.
+pattern TrackConfig_FormFactor_Automotive :: TrackConfig_FormFactor
+pattern TrackConfig_FormFactor_Automotive = TrackConfig_FormFactor "AUTOMOTIVE"
+
+{-# COMPLETE
+  TrackConfig_FormFactor_FORMFACTORUNSPECIFIED,
+  TrackConfig_FormFactor_Default,
+  TrackConfig_FormFactor_Wear,
+  TrackConfig_FormFactor_Automotive,
+  TrackConfig_FormFactor
+  #-}
+
+-- | Required. Type of the new track. Currently, the only supported value is closedTesting.
+newtype TrackConfig_Type = TrackConfig_Type {fromTrackConfig_Type :: Core.Text}
+  deriving stock (Core.Show, Core.Read, Core.Eq, Core.Ord, Core.Generic)
+  deriving newtype
+    ( Core.Hashable,
+      Core.ToHttpApiData,
+      Core.FromHttpApiData,
+      Core.ToJSON,
+      Core.ToJSONKey,
+      Core.FromJSON,
+      Core.FromJSONKey
+    )
+
+-- | Fallback value, do not use.
+pattern TrackConfig_Type_TRACKTYPEUNSPECIFIED :: TrackConfig_Type
+pattern TrackConfig_Type_TRACKTYPEUNSPECIFIED = TrackConfig_Type "TRACK_TYPE_UNSPECIFIED"
+
+-- | Closed testing track.
+pattern TrackConfig_Type_CLOSEDTESTING :: TrackConfig_Type
+pattern TrackConfig_Type_CLOSEDTESTING = TrackConfig_Type "CLOSED_TESTING"
+
+{-# COMPLETE
+  TrackConfig_Type_TRACKTYPEUNSPECIFIED,
+  TrackConfig_Type_CLOSEDTESTING,
+  TrackConfig_Type
+  #-}
+
+-- | The status of the release.
+newtype TrackRelease_Status = TrackRelease_Status {fromTrackRelease_Status :: Core.Text}
+  deriving stock (Core.Show, Core.Read, Core.Eq, Core.Ord, Core.Generic)
+  deriving newtype
+    ( Core.Hashable,
+      Core.ToHttpApiData,
+      Core.FromHttpApiData,
+      Core.ToJSON,
+      Core.ToJSONKey,
+      Core.FromJSON,
+      Core.FromJSONKey
+    )
+
+-- | Unspecified status.
+pattern TrackRelease_Status_StatusUnspecified :: TrackRelease_Status
+pattern TrackRelease_Status_StatusUnspecified = TrackRelease_Status "statusUnspecified"
+
+-- | The release\'s APKs are not being served to users.
+pattern TrackRelease_Status_Draft :: TrackRelease_Status
+pattern TrackRelease_Status_Draft = TrackRelease_Status "draft"
+
+-- | The release\'s APKs are being served to a fraction of users, determined by \'user_fraction\'.
+pattern TrackRelease_Status_InProgress :: TrackRelease_Status
+pattern TrackRelease_Status_InProgress = TrackRelease_Status "inProgress"
+
+-- | The release\'s APKs will no longer be served to users. Users who already have these APKs are unaffected.
+pattern TrackRelease_Status_Halted :: TrackRelease_Status
+pattern TrackRelease_Status_Halted = TrackRelease_Status "halted"
+
+-- | The release will have no further changes. Its APKs are being served to all users, unless they are eligible to APKs of a more recent release.
+pattern TrackRelease_Status_Completed :: TrackRelease_Status
+pattern TrackRelease_Status_Completed = TrackRelease_Status "completed"
+
+{-# COMPLETE
+  TrackRelease_Status_StatusUnspecified,
+  TrackRelease_Status_Draft,
+  TrackRelease_Status_InProgress,
+  TrackRelease_Status_Halted,
+  TrackRelease_Status_Completed,
+  TrackRelease_Status
+  #-}
+
+-- | Optional. The latency tolerance for the propagation of this product update. Defaults to latency-sensitive.
+newtype UpdateSubscriptionOfferRequest_LatencyTolerance = UpdateSubscriptionOfferRequest_LatencyTolerance {fromUpdateSubscriptionOfferRequest_LatencyTolerance :: Core.Text}
+  deriving stock (Core.Show, Core.Read, Core.Eq, Core.Ord, Core.Generic)
+  deriving newtype
+    ( Core.Hashable,
+      Core.ToHttpApiData,
+      Core.FromHttpApiData,
+      Core.ToJSON,
+      Core.ToJSONKey,
+      Core.FromJSON,
+      Core.FromJSONKey
+    )
+
+-- | Defaults to PRODUCT/UPDATE/LATENCY/TOLERANCE/LATENCY_SENSITIVE.
+pattern UpdateSubscriptionOfferRequest_LatencyTolerance_PRODUCTUPDATELATENCYTOLERANCEUNSPECIFIED :: UpdateSubscriptionOfferRequest_LatencyTolerance
+pattern UpdateSubscriptionOfferRequest_LatencyTolerance_PRODUCTUPDATELATENCYTOLERANCEUNSPECIFIED = UpdateSubscriptionOfferRequest_LatencyTolerance "PRODUCT_UPDATE_LATENCY_TOLERANCE_UNSPECIFIED"
+
+-- | The update will propagate to clients within several minutes on average and up to a few hours in rare cases. Throughput is limited to 7,200 updates per app per hour.
+pattern UpdateSubscriptionOfferRequest_LatencyTolerance_PRODUCTUPDATELATENCYTOLERANCELATENCYSENSITIVE :: UpdateSubscriptionOfferRequest_LatencyTolerance
+pattern UpdateSubscriptionOfferRequest_LatencyTolerance_PRODUCTUPDATELATENCYTOLERANCELATENCYSENSITIVE = UpdateSubscriptionOfferRequest_LatencyTolerance "PRODUCT_UPDATE_LATENCY_TOLERANCE_LATENCY_SENSITIVE"
+
+-- | The update will propagate to clients within 24 hours. Supports high throughput of up to 720,000 updates per app per hour using batch modification methods.
+pattern UpdateSubscriptionOfferRequest_LatencyTolerance_PRODUCTUPDATELATENCYTOLERANCELATENCYTOLERANT :: UpdateSubscriptionOfferRequest_LatencyTolerance
+pattern UpdateSubscriptionOfferRequest_LatencyTolerance_PRODUCTUPDATELATENCYTOLERANCELATENCYTOLERANT = UpdateSubscriptionOfferRequest_LatencyTolerance "PRODUCT_UPDATE_LATENCY_TOLERANCE_LATENCY_TOLERANT"
+
+{-# COMPLETE
+  UpdateSubscriptionOfferRequest_LatencyTolerance_PRODUCTUPDATELATENCYTOLERANCEUNSPECIFIED,
+  UpdateSubscriptionOfferRequest_LatencyTolerance_PRODUCTUPDATELATENCYTOLERANCELATENCYSENSITIVE,
+  UpdateSubscriptionOfferRequest_LatencyTolerance_PRODUCTUPDATELATENCYTOLERANCELATENCYTOLERANT,
+  UpdateSubscriptionOfferRequest_LatencyTolerance
+  #-}
+
+-- | Optional. The latency tolerance for the propagation of this product update. Defaults to latency-sensitive.
+newtype UpdateSubscriptionRequest_LatencyTolerance = UpdateSubscriptionRequest_LatencyTolerance {fromUpdateSubscriptionRequest_LatencyTolerance :: Core.Text}
+  deriving stock (Core.Show, Core.Read, Core.Eq, Core.Ord, Core.Generic)
+  deriving newtype
+    ( Core.Hashable,
+      Core.ToHttpApiData,
+      Core.FromHttpApiData,
+      Core.ToJSON,
+      Core.ToJSONKey,
+      Core.FromJSON,
+      Core.FromJSONKey
+    )
+
+-- | Defaults to PRODUCT/UPDATE/LATENCY/TOLERANCE/LATENCY_SENSITIVE.
+pattern UpdateSubscriptionRequest_LatencyTolerance_PRODUCTUPDATELATENCYTOLERANCEUNSPECIFIED :: UpdateSubscriptionRequest_LatencyTolerance
+pattern UpdateSubscriptionRequest_LatencyTolerance_PRODUCTUPDATELATENCYTOLERANCEUNSPECIFIED = UpdateSubscriptionRequest_LatencyTolerance "PRODUCT_UPDATE_LATENCY_TOLERANCE_UNSPECIFIED"
+
+-- | The update will propagate to clients within several minutes on average and up to a few hours in rare cases. Throughput is limited to 7,200 updates per app per hour.
+pattern UpdateSubscriptionRequest_LatencyTolerance_PRODUCTUPDATELATENCYTOLERANCELATENCYSENSITIVE :: UpdateSubscriptionRequest_LatencyTolerance
+pattern UpdateSubscriptionRequest_LatencyTolerance_PRODUCTUPDATELATENCYTOLERANCELATENCYSENSITIVE = UpdateSubscriptionRequest_LatencyTolerance "PRODUCT_UPDATE_LATENCY_TOLERANCE_LATENCY_SENSITIVE"
+
+-- | The update will propagate to clients within 24 hours. Supports high throughput of up to 720,000 updates per app per hour using batch modification methods.
+pattern UpdateSubscriptionRequest_LatencyTolerance_PRODUCTUPDATELATENCYTOLERANCELATENCYTOLERANT :: UpdateSubscriptionRequest_LatencyTolerance
+pattern UpdateSubscriptionRequest_LatencyTolerance_PRODUCTUPDATELATENCYTOLERANCELATENCYTOLERANT = UpdateSubscriptionRequest_LatencyTolerance "PRODUCT_UPDATE_LATENCY_TOLERANCE_LATENCY_TOLERANT"
+
+{-# COMPLETE
+  UpdateSubscriptionRequest_LatencyTolerance_PRODUCTUPDATELATENCYTOLERANCEUNSPECIFIED,
+  UpdateSubscriptionRequest_LatencyTolerance_PRODUCTUPDATELATENCYTOLERANCELATENCYSENSITIVE,
+  UpdateSubscriptionRequest_LatencyTolerance_PRODUCTUPDATELATENCYTOLERANCELATENCYTOLERANT,
+  UpdateSubscriptionRequest_LatencyTolerance
+  #-}
+
+-- | Output only. The state of the user\'s access to the Play Console.
+newtype User_AccessState = User_AccessState {fromUser_AccessState :: Core.Text}
+  deriving stock (Core.Show, Core.Read, Core.Eq, Core.Ord, Core.Generic)
+  deriving newtype
+    ( Core.Hashable,
+      Core.ToHttpApiData,
+      Core.FromHttpApiData,
+      Core.ToJSON,
+      Core.ToJSONKey,
+      Core.FromJSON,
+      Core.FromJSONKey
+    )
+
+-- | Unknown or unspecified access state.
+pattern User_AccessState_ACCESSSTATEUNSPECIFIED :: User_AccessState
+pattern User_AccessState_ACCESSSTATEUNSPECIFIED = User_AccessState "ACCESS_STATE_UNSPECIFIED"
+
+-- | User is invited but has not yet accepted the invitation.
+pattern User_AccessState_Invited :: User_AccessState
+pattern User_AccessState_Invited = User_AccessState "INVITED"
+
+-- | Invitation has expired.
+pattern User_AccessState_INVITATIONEXPIRED :: User_AccessState
+pattern User_AccessState_INVITATIONEXPIRED = User_AccessState "INVITATION_EXPIRED"
+
+-- | User has accepted an invitation and has access to the Play Console.
+pattern User_AccessState_ACCESSGRANTED :: User_AccessState
+pattern User_AccessState_ACCESSGRANTED = User_AccessState "ACCESS_GRANTED"
+
+-- | Account access has expired.
+pattern User_AccessState_ACCESSEXPIRED :: User_AccessState
+pattern User_AccessState_ACCESSEXPIRED = User_AccessState "ACCESS_EXPIRED"
+
+{-# COMPLETE
+  User_AccessState_ACCESSSTATEUNSPECIFIED,
+  User_AccessState_Invited,
+  User_AccessState_INVITATIONEXPIRED,
+  User_AccessState_ACCESSGRANTED,
+  User_AccessState_ACCESSEXPIRED,
+  User_AccessState
+  #-}
+
+newtype User_DeveloperAccountPermissionsItem = User_DeveloperAccountPermissionsItem {fromUser_DeveloperAccountPermissionsItem :: Core.Text}
+  deriving stock (Core.Show, Core.Read, Core.Eq, Core.Ord, Core.Generic)
+  deriving newtype
+    ( Core.Hashable,
+      Core.ToHttpApiData,
+      Core.FromHttpApiData,
+      Core.ToJSON,
+      Core.ToJSONKey,
+      Core.FromJSON,
+      Core.FromJSONKey
+    )
+
+-- | Unknown or unspecified permission.
+pattern User_DeveloperAccountPermissionsItem_DEVELOPERLEVELPERMISSIONUNSPECIFIED :: User_DeveloperAccountPermissionsItem
+pattern User_DeveloperAccountPermissionsItem_DEVELOPERLEVELPERMISSIONUNSPECIFIED = User_DeveloperAccountPermissionsItem "DEVELOPER_LEVEL_PERMISSION_UNSPECIFIED"
+
+-- | View app information and download bulk reports (read-only). Deprecated: Check CAN/VIEW/NON/FINANCIAL/DATA_GLOBAL.
+pattern User_DeveloperAccountPermissionsItem_CANSEEALLAPPS :: User_DeveloperAccountPermissionsItem
+pattern User_DeveloperAccountPermissionsItem_CANSEEALLAPPS = User_DeveloperAccountPermissionsItem "CAN_SEE_ALL_APPS"
+
+-- | View financial data, orders, and cancellation survey responses.
+pattern User_DeveloperAccountPermissionsItem_CANVIEWFINANCIALDATAGLOBAL :: User_DeveloperAccountPermissionsItem
+pattern User_DeveloperAccountPermissionsItem_CANVIEWFINANCIALDATAGLOBAL = User_DeveloperAccountPermissionsItem "CAN_VIEW_FINANCIAL_DATA_GLOBAL"
+
+-- | Admin (all permissions).
+pattern User_DeveloperAccountPermissionsItem_CANMANAGEPERMISSIONSGLOBAL :: User_DeveloperAccountPermissionsItem
+pattern User_DeveloperAccountPermissionsItem_CANMANAGEPERMISSIONSGLOBAL = User_DeveloperAccountPermissionsItem "CAN_MANAGE_PERMISSIONS_GLOBAL"
+
+-- | Edit Play Games Services projects.
+pattern User_DeveloperAccountPermissionsItem_CANEDITGAMESGLOBAL :: User_DeveloperAccountPermissionsItem
+pattern User_DeveloperAccountPermissionsItem_CANEDITGAMESGLOBAL = User_DeveloperAccountPermissionsItem "CAN_EDIT_GAMES_GLOBAL"
+
+-- | Publish Play Games Services projects.
+pattern User_DeveloperAccountPermissionsItem_CANPUBLISHGAMESGLOBAL :: User_DeveloperAccountPermissionsItem
+pattern User_DeveloperAccountPermissionsItem_CANPUBLISHGAMESGLOBAL = User_DeveloperAccountPermissionsItem "CAN_PUBLISH_GAMES_GLOBAL"
+
+-- | Reply to reviews.
+pattern User_DeveloperAccountPermissionsItem_CANREPLYTOREVIEWSGLOBAL :: User_DeveloperAccountPermissionsItem
+pattern User_DeveloperAccountPermissionsItem_CANREPLYTOREVIEWSGLOBAL = User_DeveloperAccountPermissionsItem "CAN_REPLY_TO_REVIEWS_GLOBAL"
+
+-- | Release to production, exclude devices, and use app signing by Google Play.
+pattern User_DeveloperAccountPermissionsItem_CANMANAGEPUBLICAPKSGLOBAL :: User_DeveloperAccountPermissionsItem
+pattern User_DeveloperAccountPermissionsItem_CANMANAGEPUBLICAPKSGLOBAL = User_DeveloperAccountPermissionsItem "CAN_MANAGE_PUBLIC_APKS_GLOBAL"
+
+-- | Release to testing tracks.
+pattern User_DeveloperAccountPermissionsItem_CANMANAGETRACKAPKSGLOBAL :: User_DeveloperAccountPermissionsItem
+pattern User_DeveloperAccountPermissionsItem_CANMANAGETRACKAPKSGLOBAL = User_DeveloperAccountPermissionsItem "CAN_MANAGE_TRACK_APKS_GLOBAL"
+
+-- | Manage testing tracks and edit tester lists.
+pattern User_DeveloperAccountPermissionsItem_CANMANAGETRACKUSERSGLOBAL :: User_DeveloperAccountPermissionsItem
+pattern User_DeveloperAccountPermissionsItem_CANMANAGETRACKUSERSGLOBAL = User_DeveloperAccountPermissionsItem "CAN_MANAGE_TRACK_USERS_GLOBAL"
+
+-- | Manage store presence.
+pattern User_DeveloperAccountPermissionsItem_CANMANAGEPUBLICLISTINGGLOBAL :: User_DeveloperAccountPermissionsItem
+pattern User_DeveloperAccountPermissionsItem_CANMANAGEPUBLICLISTINGGLOBAL = User_DeveloperAccountPermissionsItem "CAN_MANAGE_PUBLIC_LISTING_GLOBAL"
+
+-- | Create, edit, and delete draft apps.
+pattern User_DeveloperAccountPermissionsItem_CANMANAGEDRAFTAPPSGLOBAL :: User_DeveloperAccountPermissionsItem
+pattern User_DeveloperAccountPermissionsItem_CANMANAGEDRAFTAPPSGLOBAL = User_DeveloperAccountPermissionsItem "CAN_MANAGE_DRAFT_APPS_GLOBAL"
+
+-- | Create and publish private apps to your organization.
+pattern User_DeveloperAccountPermissionsItem_CANCREATEMANAGEDPLAYAPPSGLOBAL :: User_DeveloperAccountPermissionsItem
+pattern User_DeveloperAccountPermissionsItem_CANCREATEMANAGEDPLAYAPPSGLOBAL = User_DeveloperAccountPermissionsItem "CAN_CREATE_MANAGED_PLAY_APPS_GLOBAL"
+
+-- | Choose whether apps are public, or only available to your organization.
+pattern User_DeveloperAccountPermissionsItem_CANCHANGEMANAGEDPLAYSETTINGGLOBAL :: User_DeveloperAccountPermissionsItem
+pattern User_DeveloperAccountPermissionsItem_CANCHANGEMANAGEDPLAYSETTINGGLOBAL = User_DeveloperAccountPermissionsItem "CAN_CHANGE_MANAGED_PLAY_SETTING_GLOBAL"
+
+-- | Manage orders and subscriptions.
+pattern User_DeveloperAccountPermissionsItem_CANMANAGEORDERSGLOBAL :: User_DeveloperAccountPermissionsItem
+pattern User_DeveloperAccountPermissionsItem_CANMANAGEORDERSGLOBAL = User_DeveloperAccountPermissionsItem "CAN_MANAGE_ORDERS_GLOBAL"
+
+-- | Manage policy related pages on all apps for the developer.
+pattern User_DeveloperAccountPermissionsItem_CANMANAGEAPPCONTENTGLOBAL :: User_DeveloperAccountPermissionsItem
+pattern User_DeveloperAccountPermissionsItem_CANMANAGEAPPCONTENTGLOBAL = User_DeveloperAccountPermissionsItem "CAN_MANAGE_APP_CONTENT_GLOBAL"
+
+-- | View app information and download bulk reports (read-only).
+pattern User_DeveloperAccountPermissionsItem_CANVIEWNONFINANCIALDATAGLOBAL :: User_DeveloperAccountPermissionsItem
+pattern User_DeveloperAccountPermissionsItem_CANVIEWNONFINANCIALDATAGLOBAL = User_DeveloperAccountPermissionsItem "CAN_VIEW_NON_FINANCIAL_DATA_GLOBAL"
+
+-- | View app quality information for all apps for the developer.
+pattern User_DeveloperAccountPermissionsItem_CANVIEWAPPQUALITYGLOBAL :: User_DeveloperAccountPermissionsItem
+pattern User_DeveloperAccountPermissionsItem_CANVIEWAPPQUALITYGLOBAL = User_DeveloperAccountPermissionsItem "CAN_VIEW_APP_QUALITY_GLOBAL"
+
+-- | Manage the deep links setup for all apps for the developer.
+pattern User_DeveloperAccountPermissionsItem_CANMANAGEDEEPLINKSGLOBAL :: User_DeveloperAccountPermissionsItem
+pattern User_DeveloperAccountPermissionsItem_CANMANAGEDEEPLINKSGLOBAL = User_DeveloperAccountPermissionsItem "CAN_MANAGE_DEEPLINKS_GLOBAL"
+
+{-# COMPLETE
+  User_DeveloperAccountPermissionsItem_DEVELOPERLEVELPERMISSIONUNSPECIFIED,
+  User_DeveloperAccountPermissionsItem_CANSEEALLAPPS,
+  User_DeveloperAccountPermissionsItem_CANVIEWFINANCIALDATAGLOBAL,
+  User_DeveloperAccountPermissionsItem_CANMANAGEPERMISSIONSGLOBAL,
+  User_DeveloperAccountPermissionsItem_CANEDITGAMESGLOBAL,
+  User_DeveloperAccountPermissionsItem_CANPUBLISHGAMESGLOBAL,
+  User_DeveloperAccountPermissionsItem_CANREPLYTOREVIEWSGLOBAL,
+  User_DeveloperAccountPermissionsItem_CANMANAGEPUBLICAPKSGLOBAL,
+  User_DeveloperAccountPermissionsItem_CANMANAGETRACKAPKSGLOBAL,
+  User_DeveloperAccountPermissionsItem_CANMANAGETRACKUSERSGLOBAL,
+  User_DeveloperAccountPermissionsItem_CANMANAGEPUBLICLISTINGGLOBAL,
+  User_DeveloperAccountPermissionsItem_CANMANAGEDRAFTAPPSGLOBAL,
+  User_DeveloperAccountPermissionsItem_CANCREATEMANAGEDPLAYAPPSGLOBAL,
+  User_DeveloperAccountPermissionsItem_CANCHANGEMANAGEDPLAYSETTINGGLOBAL,
+  User_DeveloperAccountPermissionsItem_CANMANAGEORDERSGLOBAL,
+  User_DeveloperAccountPermissionsItem_CANMANAGEAPPCONTENTGLOBAL,
+  User_DeveloperAccountPermissionsItem_CANVIEWNONFINANCIALDATAGLOBAL,
+  User_DeveloperAccountPermissionsItem_CANVIEWAPPQUALITYGLOBAL,
+  User_DeveloperAccountPermissionsItem_CANMANAGEDEEPLINKSGLOBAL,
+  User_DeveloperAccountPermissionsItem
+  #-}
+
+-- | The type of the deobfuscation file.
+newtype EditsDeobfuscationfilesUploadDeobfuscationFileType = EditsDeobfuscationfilesUploadDeobfuscationFileType {fromEditsDeobfuscationfilesUploadDeobfuscationFileType :: Core.Text}
+  deriving stock (Core.Show, Core.Read, Core.Eq, Core.Ord, Core.Generic)
+  deriving newtype
+    ( Core.Hashable,
+      Core.ToHttpApiData,
+      Core.FromHttpApiData,
+      Core.ToJSON,
+      Core.ToJSONKey,
+      Core.FromJSON,
+      Core.FromJSONKey
+    )
+
+-- | Unspecified deobfuscation file type.
+pattern EditsDeobfuscationfilesUploadDeobfuscationFileType_DeobfuscationFileTypeUnspecified :: EditsDeobfuscationfilesUploadDeobfuscationFileType
+pattern EditsDeobfuscationfilesUploadDeobfuscationFileType_DeobfuscationFileTypeUnspecified = EditsDeobfuscationfilesUploadDeobfuscationFileType "deobfuscationFileTypeUnspecified"
+
+-- | Proguard deobfuscation file type.
+pattern EditsDeobfuscationfilesUploadDeobfuscationFileType_Proguard :: EditsDeobfuscationfilesUploadDeobfuscationFileType
+pattern EditsDeobfuscationfilesUploadDeobfuscationFileType_Proguard = EditsDeobfuscationfilesUploadDeobfuscationFileType "proguard"
+
+-- | Native debugging symbols file type.
+pattern EditsDeobfuscationfilesUploadDeobfuscationFileType_NativeCode :: EditsDeobfuscationfilesUploadDeobfuscationFileType
+pattern EditsDeobfuscationfilesUploadDeobfuscationFileType_NativeCode = EditsDeobfuscationfilesUploadDeobfuscationFileType "nativeCode"
+
+{-# COMPLETE
+  EditsDeobfuscationfilesUploadDeobfuscationFileType_DeobfuscationFileTypeUnspecified,
+  EditsDeobfuscationfilesUploadDeobfuscationFileType_Proguard,
+  EditsDeobfuscationfilesUploadDeobfuscationFileType_NativeCode,
+  EditsDeobfuscationfilesUploadDeobfuscationFileType
+  #-}
+
+-- | The file type of the file configuration which is being read or modified.
+newtype EditsExpansionfilesGetExpansionFileType = EditsExpansionfilesGetExpansionFileType {fromEditsExpansionfilesGetExpansionFileType :: Core.Text}
+  deriving stock (Core.Show, Core.Read, Core.Eq, Core.Ord, Core.Generic)
+  deriving newtype
+    ( Core.Hashable,
+      Core.ToHttpApiData,
+      Core.FromHttpApiData,
+      Core.ToJSON,
+      Core.ToJSONKey,
+      Core.FromJSON,
+      Core.FromJSONKey
+    )
+
+-- | Unspecified expansion file type.
+pattern EditsExpansionfilesGetExpansionFileType_ExpansionFileTypeUnspecified :: EditsExpansionfilesGetExpansionFileType
+pattern EditsExpansionfilesGetExpansionFileType_ExpansionFileTypeUnspecified = EditsExpansionfilesGetExpansionFileType "expansionFileTypeUnspecified"
+
+-- | Main expansion file.
+pattern EditsExpansionfilesGetExpansionFileType_Main :: EditsExpansionfilesGetExpansionFileType
+pattern EditsExpansionfilesGetExpansionFileType_Main = EditsExpansionfilesGetExpansionFileType "main"
+
+-- | Patch expansion file.
+pattern EditsExpansionfilesGetExpansionFileType_Patch' :: EditsExpansionfilesGetExpansionFileType
+pattern EditsExpansionfilesGetExpansionFileType_Patch' = EditsExpansionfilesGetExpansionFileType "patch"
+
+{-# COMPLETE
+  EditsExpansionfilesGetExpansionFileType_ExpansionFileTypeUnspecified,
+  EditsExpansionfilesGetExpansionFileType_Main,
+  EditsExpansionfilesGetExpansionFileType_Patch',
+  EditsExpansionfilesGetExpansionFileType
+  #-}
+
+-- | The file type of the expansion file configuration which is being updated.
+newtype EditsExpansionfilesPatchExpansionFileType = EditsExpansionfilesPatchExpansionFileType {fromEditsExpansionfilesPatchExpansionFileType :: Core.Text}
+  deriving stock (Core.Show, Core.Read, Core.Eq, Core.Ord, Core.Generic)
+  deriving newtype
+    ( Core.Hashable,
+      Core.ToHttpApiData,
+      Core.FromHttpApiData,
+      Core.ToJSON,
+      Core.ToJSONKey,
+      Core.FromJSON,
+      Core.FromJSONKey
+    )
+
+-- | Unspecified expansion file type.
+pattern EditsExpansionfilesPatchExpansionFileType_ExpansionFileTypeUnspecified :: EditsExpansionfilesPatchExpansionFileType
+pattern EditsExpansionfilesPatchExpansionFileType_ExpansionFileTypeUnspecified = EditsExpansionfilesPatchExpansionFileType "expansionFileTypeUnspecified"
+
+-- | Main expansion file.
+pattern EditsExpansionfilesPatchExpansionFileType_Main :: EditsExpansionfilesPatchExpansionFileType
+pattern EditsExpansionfilesPatchExpansionFileType_Main = EditsExpansionfilesPatchExpansionFileType "main"
+
+-- | Patch expansion file.
+pattern EditsExpansionfilesPatchExpansionFileType_Patch' :: EditsExpansionfilesPatchExpansionFileType
+pattern EditsExpansionfilesPatchExpansionFileType_Patch' = EditsExpansionfilesPatchExpansionFileType "patch"
+
+{-# COMPLETE
+  EditsExpansionfilesPatchExpansionFileType_ExpansionFileTypeUnspecified,
+  EditsExpansionfilesPatchExpansionFileType_Main,
+  EditsExpansionfilesPatchExpansionFileType_Patch',
+  EditsExpansionfilesPatchExpansionFileType
+  #-}
+
+-- | The file type of the file configuration which is being read or modified.
+newtype EditsExpansionfilesUpdateExpansionFileType = EditsExpansionfilesUpdateExpansionFileType {fromEditsExpansionfilesUpdateExpansionFileType :: Core.Text}
+  deriving stock (Core.Show, Core.Read, Core.Eq, Core.Ord, Core.Generic)
+  deriving newtype
+    ( Core.Hashable,
+      Core.ToHttpApiData,
+      Core.FromHttpApiData,
+      Core.ToJSON,
+      Core.ToJSONKey,
+      Core.FromJSON,
+      Core.FromJSONKey
+    )
+
+-- | Unspecified expansion file type.
+pattern EditsExpansionfilesUpdateExpansionFileType_ExpansionFileTypeUnspecified :: EditsExpansionfilesUpdateExpansionFileType
+pattern EditsExpansionfilesUpdateExpansionFileType_ExpansionFileTypeUnspecified = EditsExpansionfilesUpdateExpansionFileType "expansionFileTypeUnspecified"
+
+-- | Main expansion file.
+pattern EditsExpansionfilesUpdateExpansionFileType_Main :: EditsExpansionfilesUpdateExpansionFileType
+pattern EditsExpansionfilesUpdateExpansionFileType_Main = EditsExpansionfilesUpdateExpansionFileType "main"
+
+-- | Patch expansion file.
+pattern EditsExpansionfilesUpdateExpansionFileType_Patch' :: EditsExpansionfilesUpdateExpansionFileType
+pattern EditsExpansionfilesUpdateExpansionFileType_Patch' = EditsExpansionfilesUpdateExpansionFileType "patch"
+
+{-# COMPLETE
+  EditsExpansionfilesUpdateExpansionFileType_ExpansionFileTypeUnspecified,
+  EditsExpansionfilesUpdateExpansionFileType_Main,
+  EditsExpansionfilesUpdateExpansionFileType_Patch',
+  EditsExpansionfilesUpdateExpansionFileType
+  #-}
+
+-- | The file type of the expansion file configuration which is being updated.
+newtype EditsExpansionfilesUploadExpansionFileType = EditsExpansionfilesUploadExpansionFileType {fromEditsExpansionfilesUploadExpansionFileType :: Core.Text}
+  deriving stock (Core.Show, Core.Read, Core.Eq, Core.Ord, Core.Generic)
+  deriving newtype
+    ( Core.Hashable,
+      Core.ToHttpApiData,
+      Core.FromHttpApiData,
+      Core.ToJSON,
+      Core.ToJSONKey,
+      Core.FromJSON,
+      Core.FromJSONKey
+    )
+
+-- | Unspecified expansion file type.
+pattern EditsExpansionfilesUploadExpansionFileType_ExpansionFileTypeUnspecified :: EditsExpansionfilesUploadExpansionFileType
+pattern EditsExpansionfilesUploadExpansionFileType_ExpansionFileTypeUnspecified = EditsExpansionfilesUploadExpansionFileType "expansionFileTypeUnspecified"
+
+-- | Main expansion file.
+pattern EditsExpansionfilesUploadExpansionFileType_Main :: EditsExpansionfilesUploadExpansionFileType
+pattern EditsExpansionfilesUploadExpansionFileType_Main = EditsExpansionfilesUploadExpansionFileType "main"
+
+-- | Patch expansion file.
+pattern EditsExpansionfilesUploadExpansionFileType_Patch' :: EditsExpansionfilesUploadExpansionFileType
+pattern EditsExpansionfilesUploadExpansionFileType_Patch' = EditsExpansionfilesUploadExpansionFileType "patch"
+
+{-# COMPLETE
+  EditsExpansionfilesUploadExpansionFileType_ExpansionFileTypeUnspecified,
+  EditsExpansionfilesUploadExpansionFileType_Main,
+  EditsExpansionfilesUploadExpansionFileType_Patch',
+  EditsExpansionfilesUploadExpansionFileType
+  #-}
+
+-- | Type of the Image.
+newtype EditsImagesDeleteImageType = EditsImagesDeleteImageType {fromEditsImagesDeleteImageType :: Core.Text}
+  deriving stock (Core.Show, Core.Read, Core.Eq, Core.Ord, Core.Generic)
+  deriving newtype
+    ( Core.Hashable,
+      Core.ToHttpApiData,
+      Core.FromHttpApiData,
+      Core.ToJSON,
+      Core.ToJSONKey,
+      Core.FromJSON,
+      Core.FromJSONKey
+    )
+
+-- | Unspecified type. Do not use.
+pattern EditsImagesDeleteImageType_AppImageTypeUnspecified :: EditsImagesDeleteImageType
+pattern EditsImagesDeleteImageType_AppImageTypeUnspecified = EditsImagesDeleteImageType "appImageTypeUnspecified"
+
+-- | Phone screenshot.
+pattern EditsImagesDeleteImageType_PhoneScreenshots :: EditsImagesDeleteImageType
+pattern EditsImagesDeleteImageType_PhoneScreenshots = EditsImagesDeleteImageType "phoneScreenshots"
+
+-- | Seven inch screenshot.
+pattern EditsImagesDeleteImageType_SevenInchScreenshots :: EditsImagesDeleteImageType
+pattern EditsImagesDeleteImageType_SevenInchScreenshots = EditsImagesDeleteImageType "sevenInchScreenshots"
+
+-- | Ten inch screenshot.
+pattern EditsImagesDeleteImageType_TenInchScreenshots :: EditsImagesDeleteImageType
+pattern EditsImagesDeleteImageType_TenInchScreenshots = EditsImagesDeleteImageType "tenInchScreenshots"
+
+-- | TV screenshot.
+pattern EditsImagesDeleteImageType_TvScreenshots :: EditsImagesDeleteImageType
+pattern EditsImagesDeleteImageType_TvScreenshots = EditsImagesDeleteImageType "tvScreenshots"
+
+-- | Wear screenshot.
+pattern EditsImagesDeleteImageType_WearScreenshots :: EditsImagesDeleteImageType
+pattern EditsImagesDeleteImageType_WearScreenshots = EditsImagesDeleteImageType "wearScreenshots"
+
+-- | Icon.
+pattern EditsImagesDeleteImageType_Icon :: EditsImagesDeleteImageType
+pattern EditsImagesDeleteImageType_Icon = EditsImagesDeleteImageType "icon"
+
+-- | Feature graphic.
+pattern EditsImagesDeleteImageType_FeatureGraphic :: EditsImagesDeleteImageType
+pattern EditsImagesDeleteImageType_FeatureGraphic = EditsImagesDeleteImageType "featureGraphic"
+
+-- | TV banner.
+pattern EditsImagesDeleteImageType_TvBanner :: EditsImagesDeleteImageType
+pattern EditsImagesDeleteImageType_TvBanner = EditsImagesDeleteImageType "tvBanner"
+
+{-# COMPLETE
+  EditsImagesDeleteImageType_AppImageTypeUnspecified,
+  EditsImagesDeleteImageType_PhoneScreenshots,
+  EditsImagesDeleteImageType_SevenInchScreenshots,
+  EditsImagesDeleteImageType_TenInchScreenshots,
+  EditsImagesDeleteImageType_TvScreenshots,
+  EditsImagesDeleteImageType_WearScreenshots,
+  EditsImagesDeleteImageType_Icon,
+  EditsImagesDeleteImageType_FeatureGraphic,
+  EditsImagesDeleteImageType_TvBanner,
+  EditsImagesDeleteImageType
+  #-}
+
+-- | Type of the Image. Providing an image type that refers to no images is a no-op.
+newtype EditsImagesDeleteallImageType = EditsImagesDeleteallImageType {fromEditsImagesDeleteallImageType :: Core.Text}
+  deriving stock (Core.Show, Core.Read, Core.Eq, Core.Ord, Core.Generic)
+  deriving newtype
+    ( Core.Hashable,
+      Core.ToHttpApiData,
+      Core.FromHttpApiData,
+      Core.ToJSON,
+      Core.ToJSONKey,
+      Core.FromJSON,
+      Core.FromJSONKey
+    )
+
+-- | Unspecified type. Do not use.
+pattern EditsImagesDeleteallImageType_AppImageTypeUnspecified :: EditsImagesDeleteallImageType
+pattern EditsImagesDeleteallImageType_AppImageTypeUnspecified = EditsImagesDeleteallImageType "appImageTypeUnspecified"
+
+-- | Phone screenshot.
+pattern EditsImagesDeleteallImageType_PhoneScreenshots :: EditsImagesDeleteallImageType
+pattern EditsImagesDeleteallImageType_PhoneScreenshots = EditsImagesDeleteallImageType "phoneScreenshots"
+
+-- | Seven inch screenshot.
+pattern EditsImagesDeleteallImageType_SevenInchScreenshots :: EditsImagesDeleteallImageType
+pattern EditsImagesDeleteallImageType_SevenInchScreenshots = EditsImagesDeleteallImageType "sevenInchScreenshots"
+
+-- | Ten inch screenshot.
+pattern EditsImagesDeleteallImageType_TenInchScreenshots :: EditsImagesDeleteallImageType
+pattern EditsImagesDeleteallImageType_TenInchScreenshots = EditsImagesDeleteallImageType "tenInchScreenshots"
+
+-- | TV screenshot.
+pattern EditsImagesDeleteallImageType_TvScreenshots :: EditsImagesDeleteallImageType
+pattern EditsImagesDeleteallImageType_TvScreenshots = EditsImagesDeleteallImageType "tvScreenshots"
+
+-- | Wear screenshot.
+pattern EditsImagesDeleteallImageType_WearScreenshots :: EditsImagesDeleteallImageType
+pattern EditsImagesDeleteallImageType_WearScreenshots = EditsImagesDeleteallImageType "wearScreenshots"
+
+-- | Icon.
+pattern EditsImagesDeleteallImageType_Icon :: EditsImagesDeleteallImageType
+pattern EditsImagesDeleteallImageType_Icon = EditsImagesDeleteallImageType "icon"
+
+-- | Feature graphic.
+pattern EditsImagesDeleteallImageType_FeatureGraphic :: EditsImagesDeleteallImageType
+pattern EditsImagesDeleteallImageType_FeatureGraphic = EditsImagesDeleteallImageType "featureGraphic"
+
+-- | TV banner.
+pattern EditsImagesDeleteallImageType_TvBanner :: EditsImagesDeleteallImageType
+pattern EditsImagesDeleteallImageType_TvBanner = EditsImagesDeleteallImageType "tvBanner"
+
+{-# COMPLETE
+  EditsImagesDeleteallImageType_AppImageTypeUnspecified,
+  EditsImagesDeleteallImageType_PhoneScreenshots,
+  EditsImagesDeleteallImageType_SevenInchScreenshots,
+  EditsImagesDeleteallImageType_TenInchScreenshots,
+  EditsImagesDeleteallImageType_TvScreenshots,
+  EditsImagesDeleteallImageType_WearScreenshots,
+  EditsImagesDeleteallImageType_Icon,
+  EditsImagesDeleteallImageType_FeatureGraphic,
+  EditsImagesDeleteallImageType_TvBanner,
+  EditsImagesDeleteallImageType
+  #-}
+
+-- | Type of the Image. Providing an image type that refers to no images will return an empty response.
+newtype EditsImagesListImageType = EditsImagesListImageType {fromEditsImagesListImageType :: Core.Text}
+  deriving stock (Core.Show, Core.Read, Core.Eq, Core.Ord, Core.Generic)
+  deriving newtype
+    ( Core.Hashable,
+      Core.ToHttpApiData,
+      Core.FromHttpApiData,
+      Core.ToJSON,
+      Core.ToJSONKey,
+      Core.FromJSON,
+      Core.FromJSONKey
+    )
+
+-- | Unspecified type. Do not use.
+pattern EditsImagesListImageType_AppImageTypeUnspecified :: EditsImagesListImageType
+pattern EditsImagesListImageType_AppImageTypeUnspecified = EditsImagesListImageType "appImageTypeUnspecified"
+
+-- | Phone screenshot.
+pattern EditsImagesListImageType_PhoneScreenshots :: EditsImagesListImageType
+pattern EditsImagesListImageType_PhoneScreenshots = EditsImagesListImageType "phoneScreenshots"
+
+-- | Seven inch screenshot.
+pattern EditsImagesListImageType_SevenInchScreenshots :: EditsImagesListImageType
+pattern EditsImagesListImageType_SevenInchScreenshots = EditsImagesListImageType "sevenInchScreenshots"
+
+-- | Ten inch screenshot.
+pattern EditsImagesListImageType_TenInchScreenshots :: EditsImagesListImageType
+pattern EditsImagesListImageType_TenInchScreenshots = EditsImagesListImageType "tenInchScreenshots"
+
+-- | TV screenshot.
+pattern EditsImagesListImageType_TvScreenshots :: EditsImagesListImageType
+pattern EditsImagesListImageType_TvScreenshots = EditsImagesListImageType "tvScreenshots"
+
+-- | Wear screenshot.
+pattern EditsImagesListImageType_WearScreenshots :: EditsImagesListImageType
+pattern EditsImagesListImageType_WearScreenshots = EditsImagesListImageType "wearScreenshots"
+
+-- | Icon.
+pattern EditsImagesListImageType_Icon :: EditsImagesListImageType
+pattern EditsImagesListImageType_Icon = EditsImagesListImageType "icon"
+
+-- | Feature graphic.
+pattern EditsImagesListImageType_FeatureGraphic :: EditsImagesListImageType
+pattern EditsImagesListImageType_FeatureGraphic = EditsImagesListImageType "featureGraphic"
+
+-- | TV banner.
+pattern EditsImagesListImageType_TvBanner :: EditsImagesListImageType
+pattern EditsImagesListImageType_TvBanner = EditsImagesListImageType "tvBanner"
+
+{-# COMPLETE
+  EditsImagesListImageType_AppImageTypeUnspecified,
+  EditsImagesListImageType_PhoneScreenshots,
+  EditsImagesListImageType_SevenInchScreenshots,
+  EditsImagesListImageType_TenInchScreenshots,
+  EditsImagesListImageType_TvScreenshots,
+  EditsImagesListImageType_WearScreenshots,
+  EditsImagesListImageType_Icon,
+  EditsImagesListImageType_FeatureGraphic,
+  EditsImagesListImageType_TvBanner,
+  EditsImagesListImageType
+  #-}
+
+-- | Type of the Image.
+newtype EditsImagesUploadImageType = EditsImagesUploadImageType {fromEditsImagesUploadImageType :: Core.Text}
+  deriving stock (Core.Show, Core.Read, Core.Eq, Core.Ord, Core.Generic)
+  deriving newtype
+    ( Core.Hashable,
+      Core.ToHttpApiData,
+      Core.FromHttpApiData,
+      Core.ToJSON,
+      Core.ToJSONKey,
+      Core.FromJSON,
+      Core.FromJSONKey
+    )
+
+-- | Unspecified type. Do not use.
+pattern EditsImagesUploadImageType_AppImageTypeUnspecified :: EditsImagesUploadImageType
+pattern EditsImagesUploadImageType_AppImageTypeUnspecified = EditsImagesUploadImageType "appImageTypeUnspecified"
+
+-- | Phone screenshot.
+pattern EditsImagesUploadImageType_PhoneScreenshots :: EditsImagesUploadImageType
+pattern EditsImagesUploadImageType_PhoneScreenshots = EditsImagesUploadImageType "phoneScreenshots"
+
+-- | Seven inch screenshot.
+pattern EditsImagesUploadImageType_SevenInchScreenshots :: EditsImagesUploadImageType
+pattern EditsImagesUploadImageType_SevenInchScreenshots = EditsImagesUploadImageType "sevenInchScreenshots"
+
+-- | Ten inch screenshot.
+pattern EditsImagesUploadImageType_TenInchScreenshots :: EditsImagesUploadImageType
+pattern EditsImagesUploadImageType_TenInchScreenshots = EditsImagesUploadImageType "tenInchScreenshots"
+
+-- | TV screenshot.
+pattern EditsImagesUploadImageType_TvScreenshots :: EditsImagesUploadImageType
+pattern EditsImagesUploadImageType_TvScreenshots = EditsImagesUploadImageType "tvScreenshots"
+
+-- | Wear screenshot.
+pattern EditsImagesUploadImageType_WearScreenshots :: EditsImagesUploadImageType
+pattern EditsImagesUploadImageType_WearScreenshots = EditsImagesUploadImageType "wearScreenshots"
+
+-- | Icon.
+pattern EditsImagesUploadImageType_Icon :: EditsImagesUploadImageType
+pattern EditsImagesUploadImageType_Icon = EditsImagesUploadImageType "icon"
+
+-- | Feature graphic.
+pattern EditsImagesUploadImageType_FeatureGraphic :: EditsImagesUploadImageType
+pattern EditsImagesUploadImageType_FeatureGraphic = EditsImagesUploadImageType "featureGraphic"
+
+-- | TV banner.
+pattern EditsImagesUploadImageType_TvBanner :: EditsImagesUploadImageType
+pattern EditsImagesUploadImageType_TvBanner = EditsImagesUploadImageType "tvBanner"
+
+{-# COMPLETE
+  EditsImagesUploadImageType_AppImageTypeUnspecified,
+  EditsImagesUploadImageType_PhoneScreenshots,
+  EditsImagesUploadImageType_SevenInchScreenshots,
+  EditsImagesUploadImageType_TenInchScreenshots,
+  EditsImagesUploadImageType_TvScreenshots,
+  EditsImagesUploadImageType_WearScreenshots,
+  EditsImagesUploadImageType_Icon,
+  EditsImagesUploadImageType_FeatureGraphic,
+  EditsImagesUploadImageType_TvBanner,
+  EditsImagesUploadImageType
+  #-}
+
+-- | Optional. The latency tolerance for the propagation of this product update. Defaults to latency-sensitive.
+newtype InappproductsDeleteLatencyTolerance = InappproductsDeleteLatencyTolerance {fromInappproductsDeleteLatencyTolerance :: Core.Text}
+  deriving stock (Core.Show, Core.Read, Core.Eq, Core.Ord, Core.Generic)
+  deriving newtype
+    ( Core.Hashable,
+      Core.ToHttpApiData,
+      Core.FromHttpApiData,
+      Core.ToJSON,
+      Core.ToJSONKey,
+      Core.FromJSON,
+      Core.FromJSONKey
+    )
+
+-- | Defaults to PRODUCT/UPDATE/LATENCY/TOLERANCE/LATENCY_SENSITIVE.
+pattern InappproductsDeleteLatencyTolerance_PRODUCTUPDATELATENCYTOLERANCEUNSPECIFIED :: InappproductsDeleteLatencyTolerance
+pattern InappproductsDeleteLatencyTolerance_PRODUCTUPDATELATENCYTOLERANCEUNSPECIFIED = InappproductsDeleteLatencyTolerance "PRODUCT_UPDATE_LATENCY_TOLERANCE_UNSPECIFIED"
+
+-- | The update will propagate to clients within several minutes on average and up to a few hours in rare cases. Throughput is limited to 7,200 updates per app per hour.
+pattern InappproductsDeleteLatencyTolerance_PRODUCTUPDATELATENCYTOLERANCELATENCYSENSITIVE :: InappproductsDeleteLatencyTolerance
+pattern InappproductsDeleteLatencyTolerance_PRODUCTUPDATELATENCYTOLERANCELATENCYSENSITIVE = InappproductsDeleteLatencyTolerance "PRODUCT_UPDATE_LATENCY_TOLERANCE_LATENCY_SENSITIVE"
+
+-- | The update will propagate to clients within 24 hours. Supports high throughput of up to 720,000 updates per app per hour using batch modification methods.
+pattern InappproductsDeleteLatencyTolerance_PRODUCTUPDATELATENCYTOLERANCELATENCYTOLERANT :: InappproductsDeleteLatencyTolerance
+pattern InappproductsDeleteLatencyTolerance_PRODUCTUPDATELATENCYTOLERANCELATENCYTOLERANT = InappproductsDeleteLatencyTolerance "PRODUCT_UPDATE_LATENCY_TOLERANCE_LATENCY_TOLERANT"
+
+{-# COMPLETE
+  InappproductsDeleteLatencyTolerance_PRODUCTUPDATELATENCYTOLERANCEUNSPECIFIED,
+  InappproductsDeleteLatencyTolerance_PRODUCTUPDATELATENCYTOLERANCELATENCYSENSITIVE,
+  InappproductsDeleteLatencyTolerance_PRODUCTUPDATELATENCYTOLERANCELATENCYTOLERANT,
+  InappproductsDeleteLatencyTolerance
+  #-}
+
+-- | Optional. The latency tolerance for the propagation of this product update. Defaults to latency-sensitive.
+newtype InappproductsPatchLatencyTolerance = InappproductsPatchLatencyTolerance {fromInappproductsPatchLatencyTolerance :: Core.Text}
+  deriving stock (Core.Show, Core.Read, Core.Eq, Core.Ord, Core.Generic)
+  deriving newtype
+    ( Core.Hashable,
+      Core.ToHttpApiData,
+      Core.FromHttpApiData,
+      Core.ToJSON,
+      Core.ToJSONKey,
+      Core.FromJSON,
+      Core.FromJSONKey
+    )
+
+-- | Defaults to PRODUCT/UPDATE/LATENCY/TOLERANCE/LATENCY_SENSITIVE.
+pattern InappproductsPatchLatencyTolerance_PRODUCTUPDATELATENCYTOLERANCEUNSPECIFIED :: InappproductsPatchLatencyTolerance
+pattern InappproductsPatchLatencyTolerance_PRODUCTUPDATELATENCYTOLERANCEUNSPECIFIED = InappproductsPatchLatencyTolerance "PRODUCT_UPDATE_LATENCY_TOLERANCE_UNSPECIFIED"
+
+-- | The update will propagate to clients within several minutes on average and up to a few hours in rare cases. Throughput is limited to 7,200 updates per app per hour.
+pattern InappproductsPatchLatencyTolerance_PRODUCTUPDATELATENCYTOLERANCELATENCYSENSITIVE :: InappproductsPatchLatencyTolerance
+pattern InappproductsPatchLatencyTolerance_PRODUCTUPDATELATENCYTOLERANCELATENCYSENSITIVE = InappproductsPatchLatencyTolerance "PRODUCT_UPDATE_LATENCY_TOLERANCE_LATENCY_SENSITIVE"
+
+-- | The update will propagate to clients within 24 hours. Supports high throughput of up to 720,000 updates per app per hour using batch modification methods.
+pattern InappproductsPatchLatencyTolerance_PRODUCTUPDATELATENCYTOLERANCELATENCYTOLERANT :: InappproductsPatchLatencyTolerance
+pattern InappproductsPatchLatencyTolerance_PRODUCTUPDATELATENCYTOLERANCELATENCYTOLERANT = InappproductsPatchLatencyTolerance "PRODUCT_UPDATE_LATENCY_TOLERANCE_LATENCY_TOLERANT"
+
+{-# COMPLETE
+  InappproductsPatchLatencyTolerance_PRODUCTUPDATELATENCYTOLERANCEUNSPECIFIED,
+  InappproductsPatchLatencyTolerance_PRODUCTUPDATELATENCYTOLERANCELATENCYSENSITIVE,
+  InappproductsPatchLatencyTolerance_PRODUCTUPDATELATENCYTOLERANCELATENCYTOLERANT,
+  InappproductsPatchLatencyTolerance
+  #-}
+
+-- | Optional. The latency tolerance for the propagation of this product update. Defaults to latency-sensitive.
+newtype InappproductsUpdateLatencyTolerance = InappproductsUpdateLatencyTolerance {fromInappproductsUpdateLatencyTolerance :: Core.Text}
+  deriving stock (Core.Show, Core.Read, Core.Eq, Core.Ord, Core.Generic)
+  deriving newtype
+    ( Core.Hashable,
+      Core.ToHttpApiData,
+      Core.FromHttpApiData,
+      Core.ToJSON,
+      Core.ToJSONKey,
+      Core.FromJSON,
+      Core.FromJSONKey
+    )
+
+-- | Defaults to PRODUCT/UPDATE/LATENCY/TOLERANCE/LATENCY_SENSITIVE.
+pattern InappproductsUpdateLatencyTolerance_PRODUCTUPDATELATENCYTOLERANCEUNSPECIFIED :: InappproductsUpdateLatencyTolerance
+pattern InappproductsUpdateLatencyTolerance_PRODUCTUPDATELATENCYTOLERANCEUNSPECIFIED = InappproductsUpdateLatencyTolerance "PRODUCT_UPDATE_LATENCY_TOLERANCE_UNSPECIFIED"
+
+-- | The update will propagate to clients within several minutes on average and up to a few hours in rare cases. Throughput is limited to 7,200 updates per app per hour.
+pattern InappproductsUpdateLatencyTolerance_PRODUCTUPDATELATENCYTOLERANCELATENCYSENSITIVE :: InappproductsUpdateLatencyTolerance
+pattern InappproductsUpdateLatencyTolerance_PRODUCTUPDATELATENCYTOLERANCELATENCYSENSITIVE = InappproductsUpdateLatencyTolerance "PRODUCT_UPDATE_LATENCY_TOLERANCE_LATENCY_SENSITIVE"
+
+-- | The update will propagate to clients within 24 hours. Supports high throughput of up to 720,000 updates per app per hour using batch modification methods.
+pattern InappproductsUpdateLatencyTolerance_PRODUCTUPDATELATENCYTOLERANCELATENCYTOLERANT :: InappproductsUpdateLatencyTolerance
+pattern InappproductsUpdateLatencyTolerance_PRODUCTUPDATELATENCYTOLERANCELATENCYTOLERANT = InappproductsUpdateLatencyTolerance "PRODUCT_UPDATE_LATENCY_TOLERANCE_LATENCY_TOLERANT"
+
+{-# COMPLETE
+  InappproductsUpdateLatencyTolerance_PRODUCTUPDATELATENCYTOLERANCEUNSPECIFIED,
+  InappproductsUpdateLatencyTolerance_PRODUCTUPDATELATENCYTOLERANCELATENCYSENSITIVE,
+  InappproductsUpdateLatencyTolerance_PRODUCTUPDATELATENCYTOLERANCELATENCYTOLERANT,
+  InappproductsUpdateLatencyTolerance
+  #-}
+
+-- | Optional. The latency tolerance for the propagation of this product update. Defaults to latency-sensitive.
+newtype MonetizationSubscriptionsBasePlansOffersPatchLatencyTolerance = MonetizationSubscriptionsBasePlansOffersPatchLatencyTolerance {fromMonetizationSubscriptionsBasePlansOffersPatchLatencyTolerance :: Core.Text}
+  deriving stock (Core.Show, Core.Read, Core.Eq, Core.Ord, Core.Generic)
+  deriving newtype
+    ( Core.Hashable,
+      Core.ToHttpApiData,
+      Core.FromHttpApiData,
+      Core.ToJSON,
+      Core.ToJSONKey,
+      Core.FromJSON,
+      Core.FromJSONKey
+    )
+
+-- | Defaults to PRODUCT/UPDATE/LATENCY/TOLERANCE/LATENCY_SENSITIVE.
+pattern MonetizationSubscriptionsBasePlansOffersPatchLatencyTolerance_PRODUCTUPDATELATENCYTOLERANCEUNSPECIFIED :: MonetizationSubscriptionsBasePlansOffersPatchLatencyTolerance
+pattern MonetizationSubscriptionsBasePlansOffersPatchLatencyTolerance_PRODUCTUPDATELATENCYTOLERANCEUNSPECIFIED = MonetizationSubscriptionsBasePlansOffersPatchLatencyTolerance "PRODUCT_UPDATE_LATENCY_TOLERANCE_UNSPECIFIED"
+
+-- | The update will propagate to clients within several minutes on average and up to a few hours in rare cases. Throughput is limited to 7,200 updates per app per hour.
+pattern MonetizationSubscriptionsBasePlansOffersPatchLatencyTolerance_PRODUCTUPDATELATENCYTOLERANCELATENCYSENSITIVE :: MonetizationSubscriptionsBasePlansOffersPatchLatencyTolerance
+pattern MonetizationSubscriptionsBasePlansOffersPatchLatencyTolerance_PRODUCTUPDATELATENCYTOLERANCELATENCYSENSITIVE = MonetizationSubscriptionsBasePlansOffersPatchLatencyTolerance "PRODUCT_UPDATE_LATENCY_TOLERANCE_LATENCY_SENSITIVE"
+
+-- | The update will propagate to clients within 24 hours. Supports high throughput of up to 720,000 updates per app per hour using batch modification methods.
+pattern MonetizationSubscriptionsBasePlansOffersPatchLatencyTolerance_PRODUCTUPDATELATENCYTOLERANCELATENCYTOLERANT :: MonetizationSubscriptionsBasePlansOffersPatchLatencyTolerance
+pattern MonetizationSubscriptionsBasePlansOffersPatchLatencyTolerance_PRODUCTUPDATELATENCYTOLERANCELATENCYTOLERANT = MonetizationSubscriptionsBasePlansOffersPatchLatencyTolerance "PRODUCT_UPDATE_LATENCY_TOLERANCE_LATENCY_TOLERANT"
+
+{-# COMPLETE
+  MonetizationSubscriptionsBasePlansOffersPatchLatencyTolerance_PRODUCTUPDATELATENCYTOLERANCEUNSPECIFIED,
+  MonetizationSubscriptionsBasePlansOffersPatchLatencyTolerance_PRODUCTUPDATELATENCYTOLERANCELATENCYSENSITIVE,
+  MonetizationSubscriptionsBasePlansOffersPatchLatencyTolerance_PRODUCTUPDATELATENCYTOLERANCELATENCYTOLERANT,
+  MonetizationSubscriptionsBasePlansOffersPatchLatencyTolerance
+  #-}
+
+-- | Optional. The latency tolerance for the propagation of this product update. Defaults to latency-sensitive.
+newtype MonetizationSubscriptionsPatchLatencyTolerance = MonetizationSubscriptionsPatchLatencyTolerance {fromMonetizationSubscriptionsPatchLatencyTolerance :: Core.Text}
+  deriving stock (Core.Show, Core.Read, Core.Eq, Core.Ord, Core.Generic)
+  deriving newtype
+    ( Core.Hashable,
+      Core.ToHttpApiData,
+      Core.FromHttpApiData,
+      Core.ToJSON,
+      Core.ToJSONKey,
+      Core.FromJSON,
+      Core.FromJSONKey
+    )
+
+-- | Defaults to PRODUCT/UPDATE/LATENCY/TOLERANCE/LATENCY_SENSITIVE.
+pattern MonetizationSubscriptionsPatchLatencyTolerance_PRODUCTUPDATELATENCYTOLERANCEUNSPECIFIED :: MonetizationSubscriptionsPatchLatencyTolerance
+pattern MonetizationSubscriptionsPatchLatencyTolerance_PRODUCTUPDATELATENCYTOLERANCEUNSPECIFIED = MonetizationSubscriptionsPatchLatencyTolerance "PRODUCT_UPDATE_LATENCY_TOLERANCE_UNSPECIFIED"
+
+-- | The update will propagate to clients within several minutes on average and up to a few hours in rare cases. Throughput is limited to 7,200 updates per app per hour.
+pattern MonetizationSubscriptionsPatchLatencyTolerance_PRODUCTUPDATELATENCYTOLERANCELATENCYSENSITIVE :: MonetizationSubscriptionsPatchLatencyTolerance
+pattern MonetizationSubscriptionsPatchLatencyTolerance_PRODUCTUPDATELATENCYTOLERANCELATENCYSENSITIVE = MonetizationSubscriptionsPatchLatencyTolerance "PRODUCT_UPDATE_LATENCY_TOLERANCE_LATENCY_SENSITIVE"
+
+-- | The update will propagate to clients within 24 hours. Supports high throughput of up to 720,000 updates per app per hour using batch modification methods.
+pattern MonetizationSubscriptionsPatchLatencyTolerance_PRODUCTUPDATELATENCYTOLERANCELATENCYTOLERANT :: MonetizationSubscriptionsPatchLatencyTolerance
+pattern MonetizationSubscriptionsPatchLatencyTolerance_PRODUCTUPDATELATENCYTOLERANCELATENCYTOLERANT = MonetizationSubscriptionsPatchLatencyTolerance "PRODUCT_UPDATE_LATENCY_TOLERANCE_LATENCY_TOLERANT"
+
+{-# COMPLETE
+  MonetizationSubscriptionsPatchLatencyTolerance_PRODUCTUPDATELATENCYTOLERANCEUNSPECIFIED,
+  MonetizationSubscriptionsPatchLatencyTolerance_PRODUCTUPDATELATENCYTOLERANCELATENCYSENSITIVE,
+  MonetizationSubscriptionsPatchLatencyTolerance_PRODUCTUPDATELATENCYTOLERANCELATENCYTOLERANT,
+  MonetizationSubscriptionsPatchLatencyTolerance
+  #-}
diff --git a/gen/Gogol/AndroidPublisher/Internalappsharingartifacts/Uploadapk.hs b/gen/Gogol/AndroidPublisher/Internalappsharingartifacts/Uploadapk.hs
new file mode 100644
--- /dev/null
+++ b/gen/Gogol/AndroidPublisher/Internalappsharingartifacts/Uploadapk.hs
@@ -0,0 +1,184 @@
+{-# LANGUAGE DataKinds #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE ImportQualifiedPost #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-name-shadowing #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- |
+-- Module      : Gogol.AndroidPublisher.Internalappsharingartifacts.Uploadapk
+-- Copyright   : (c) 2015-2025 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay+gogol@gmail.com>
+--               Toni Cebrián <toni@tonicebrian.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Uploads an APK to internal app sharing. 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 Timeouts and Errors> for an example in java.
+--
+-- /See:/ <https://developers.google.com/android-publisher Google Play Android Developer API Reference> for @androidpublisher.internalappsharingartifacts.uploadapk@.
+module Gogol.AndroidPublisher.Internalappsharingartifacts.Uploadapk
+  ( -- * Resource
+    AndroidPublisherInternalappsharingartifactsUploadapkResource,
+
+    -- ** Constructing a Request
+    AndroidPublisherInternalappsharingartifactsUploadapk (..),
+    newAndroidPublisherInternalappsharingartifactsUploadapk,
+  )
+where
+
+import Gogol.AndroidPublisher.Types
+import Gogol.Prelude qualified as Core
+
+-- | A resource alias for @androidpublisher.internalappsharingartifacts.uploadapk@ method which the
+-- 'AndroidPublisherInternalappsharingartifactsUploadapk' request conforms to.
+type AndroidPublisherInternalappsharingartifactsUploadapkResource =
+  "androidpublisher"
+    Core.:> "v3"
+    Core.:> "applications"
+    Core.:> "internalappsharing"
+    Core.:> Core.Capture "packageName" Core.Text
+    Core.:> "artifacts"
+    Core.:> "apk"
+    Core.:> Core.QueryParam "$.xgafv" Xgafv
+    Core.:> Core.QueryParam "access_token" Core.Text
+    Core.:> Core.QueryParam "callback" Core.Text
+    Core.:> Core.QueryParam "uploadType" Core.Text
+    Core.:> Core.QueryParam "upload_protocol" Core.Text
+    Core.:> Core.QueryParam "alt" Core.AltJSON
+    Core.:> Core.Post '[Core.JSON] InternalAppSharingArtifact
+    Core.:<|> "upload"
+    Core.:> "androidpublisher"
+    Core.:> "v3"
+    Core.:> "applications"
+    Core.:> "internalappsharing"
+    Core.:> Core.Capture "packageName" Core.Text
+    Core.:> "artifacts"
+    Core.:> "apk"
+    Core.:> Core.QueryParam "$.xgafv" Xgafv
+    Core.:> Core.QueryParam "access_token" Core.Text
+    Core.:> Core.QueryParam "callback" Core.Text
+    Core.:> Core.QueryParam "uploadType" Core.Text
+    Core.:> Core.QueryParam "upload_protocol" Core.Text
+    Core.:> Core.QueryParam "alt" Core.AltJSON
+    Core.:> Core.QueryParam "uploadType" Core.AltMedia
+    Core.:> Core.AltMedia
+    Core.:> Core.Post '[Core.JSON] InternalAppSharingArtifact
+
+-- | Uploads an APK to internal app sharing. 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 Timeouts and Errors> for an example in java.
+--
+-- /See:/ 'newAndroidPublisherInternalappsharingartifactsUploadapk' smart constructor.
+data AndroidPublisherInternalappsharingartifactsUploadapk = AndroidPublisherInternalappsharingartifactsUploadapk
+  { -- | V1 error format.
+    xgafv :: (Core.Maybe Xgafv),
+    -- | OAuth access token.
+    accessToken :: (Core.Maybe Core.Text),
+    -- | JSONP
+    callback :: (Core.Maybe Core.Text),
+    -- | Package name of the app.
+    packageName :: Core.Text,
+    -- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
+    uploadType :: (Core.Maybe Core.Text),
+    -- | Upload protocol for media (e.g. \"raw\", \"multipart\").
+    uploadProtocol :: (Core.Maybe Core.Text)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'AndroidPublisherInternalappsharingartifactsUploadapk' with the minimum fields required to make a request.
+newAndroidPublisherInternalappsharingartifactsUploadapk ::
+  -- |  Package name of the app. See 'packageName'.
+  Core.Text ->
+  AndroidPublisherInternalappsharingartifactsUploadapk
+newAndroidPublisherInternalappsharingartifactsUploadapk packageName =
+  AndroidPublisherInternalappsharingartifactsUploadapk
+    { xgafv =
+        Core.Nothing,
+      accessToken = Core.Nothing,
+      callback = Core.Nothing,
+      packageName = packageName,
+      uploadType = Core.Nothing,
+      uploadProtocol = Core.Nothing
+    }
+
+instance
+  Core.GoogleRequest
+    AndroidPublisherInternalappsharingartifactsUploadapk
+  where
+  type
+    Rs AndroidPublisherInternalappsharingartifactsUploadapk =
+      InternalAppSharingArtifact
+  type
+    Scopes AndroidPublisherInternalappsharingartifactsUploadapk =
+      '[Androidpublisher'FullControl]
+  requestClient
+    AndroidPublisherInternalappsharingartifactsUploadapk {..} =
+      go
+        packageName
+        xgafv
+        accessToken
+        callback
+        uploadType
+        uploadProtocol
+        (Core.Just Core.AltJSON)
+        androidPublisherService
+      where
+        go Core.:<|> _ =
+          Core.buildClient
+            ( Core.Proxy ::
+                Core.Proxy
+                  AndroidPublisherInternalappsharingartifactsUploadapkResource
+            )
+            Core.mempty
+
+instance
+  Core.GoogleRequest
+    ( Core.MediaUpload
+        AndroidPublisherInternalappsharingartifactsUploadapk
+    )
+  where
+  type
+    Rs
+      ( Core.MediaUpload
+          AndroidPublisherInternalappsharingartifactsUploadapk
+      ) =
+      InternalAppSharingArtifact
+  type
+    Scopes
+      ( Core.MediaUpload
+          AndroidPublisherInternalappsharingartifactsUploadapk
+      ) =
+      Core.Scopes AndroidPublisherInternalappsharingartifactsUploadapk
+  requestClient
+    ( Core.MediaUpload
+        AndroidPublisherInternalappsharingartifactsUploadapk {..}
+        body
+      ) =
+      go
+        packageName
+        xgafv
+        accessToken
+        callback
+        uploadType
+        uploadProtocol
+        (Core.Just Core.AltJSON)
+        (Core.Just Core.AltMedia)
+        body
+        androidPublisherService
+      where
+        _ Core.:<|> go =
+          Core.buildClient
+            ( Core.Proxy ::
+                Core.Proxy
+                  AndroidPublisherInternalappsharingartifactsUploadapkResource
+            )
+            Core.mempty
diff --git a/gen/Gogol/AndroidPublisher/Internalappsharingartifacts/Uploadbundle.hs b/gen/Gogol/AndroidPublisher/Internalappsharingartifacts/Uploadbundle.hs
new file mode 100644
--- /dev/null
+++ b/gen/Gogol/AndroidPublisher/Internalappsharingartifacts/Uploadbundle.hs
@@ -0,0 +1,185 @@
+{-# LANGUAGE DataKinds #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE ImportQualifiedPost #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-name-shadowing #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- |
+-- Module      : Gogol.AndroidPublisher.Internalappsharingartifacts.Uploadbundle
+-- Copyright   : (c) 2015-2025 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay+gogol@gmail.com>
+--               Toni Cebrián <toni@tonicebrian.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Uploads an app bundle to internal app sharing. 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 Timeouts and Errors> for an example in java.
+--
+-- /See:/ <https://developers.google.com/android-publisher Google Play Android Developer API Reference> for @androidpublisher.internalappsharingartifacts.uploadbundle@.
+module Gogol.AndroidPublisher.Internalappsharingartifacts.Uploadbundle
+  ( -- * Resource
+    AndroidPublisherInternalappsharingartifactsUploadbundleResource,
+
+    -- ** Constructing a Request
+    AndroidPublisherInternalappsharingartifactsUploadbundle (..),
+    newAndroidPublisherInternalappsharingartifactsUploadbundle,
+  )
+where
+
+import Gogol.AndroidPublisher.Types
+import Gogol.Prelude qualified as Core
+
+-- | A resource alias for @androidpublisher.internalappsharingartifacts.uploadbundle@ method which the
+-- 'AndroidPublisherInternalappsharingartifactsUploadbundle' request conforms to.
+type AndroidPublisherInternalappsharingartifactsUploadbundleResource =
+  "androidpublisher"
+    Core.:> "v3"
+    Core.:> "applications"
+    Core.:> "internalappsharing"
+    Core.:> Core.Capture "packageName" Core.Text
+    Core.:> "artifacts"
+    Core.:> "bundle"
+    Core.:> Core.QueryParam "$.xgafv" Xgafv
+    Core.:> Core.QueryParam "access_token" Core.Text
+    Core.:> Core.QueryParam "callback" Core.Text
+    Core.:> Core.QueryParam "uploadType" Core.Text
+    Core.:> Core.QueryParam "upload_protocol" Core.Text
+    Core.:> Core.QueryParam "alt" Core.AltJSON
+    Core.:> Core.Post '[Core.JSON] InternalAppSharingArtifact
+    Core.:<|> "upload"
+    Core.:> "androidpublisher"
+    Core.:> "v3"
+    Core.:> "applications"
+    Core.:> "internalappsharing"
+    Core.:> Core.Capture "packageName" Core.Text
+    Core.:> "artifacts"
+    Core.:> "bundle"
+    Core.:> Core.QueryParam "$.xgafv" Xgafv
+    Core.:> Core.QueryParam "access_token" Core.Text
+    Core.:> Core.QueryParam "callback" Core.Text
+    Core.:> Core.QueryParam "uploadType" Core.Text
+    Core.:> Core.QueryParam "upload_protocol" Core.Text
+    Core.:> Core.QueryParam "alt" Core.AltJSON
+    Core.:> Core.QueryParam "uploadType" Core.AltMedia
+    Core.:> Core.AltMedia
+    Core.:> Core.Post '[Core.JSON] InternalAppSharingArtifact
+
+-- | Uploads an app bundle to internal app sharing. 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 Timeouts and Errors> for an example in java.
+--
+-- /See:/ 'newAndroidPublisherInternalappsharingartifactsUploadbundle' smart constructor.
+data AndroidPublisherInternalappsharingartifactsUploadbundle = AndroidPublisherInternalappsharingartifactsUploadbundle
+  { -- | V1 error format.
+    xgafv :: (Core.Maybe Xgafv),
+    -- | OAuth access token.
+    accessToken :: (Core.Maybe Core.Text),
+    -- | JSONP
+    callback :: (Core.Maybe Core.Text),
+    -- | Package name of the app.
+    packageName :: Core.Text,
+    -- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
+    uploadType :: (Core.Maybe Core.Text),
+    -- | Upload protocol for media (e.g. \"raw\", \"multipart\").
+    uploadProtocol :: (Core.Maybe Core.Text)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'AndroidPublisherInternalappsharingartifactsUploadbundle' with the minimum fields required to make a request.
+newAndroidPublisherInternalappsharingartifactsUploadbundle ::
+  -- |  Package name of the app. See 'packageName'.
+  Core.Text ->
+  AndroidPublisherInternalappsharingartifactsUploadbundle
+newAndroidPublisherInternalappsharingartifactsUploadbundle
+  packageName =
+    AndroidPublisherInternalappsharingartifactsUploadbundle
+      { xgafv =
+          Core.Nothing,
+        accessToken = Core.Nothing,
+        callback = Core.Nothing,
+        packageName = packageName,
+        uploadType = Core.Nothing,
+        uploadProtocol = Core.Nothing
+      }
+
+instance
+  Core.GoogleRequest
+    AndroidPublisherInternalappsharingartifactsUploadbundle
+  where
+  type
+    Rs AndroidPublisherInternalappsharingartifactsUploadbundle =
+      InternalAppSharingArtifact
+  type
+    Scopes AndroidPublisherInternalappsharingartifactsUploadbundle =
+      '[Androidpublisher'FullControl]
+  requestClient
+    AndroidPublisherInternalappsharingartifactsUploadbundle {..} =
+      go
+        packageName
+        xgafv
+        accessToken
+        callback
+        uploadType
+        uploadProtocol
+        (Core.Just Core.AltJSON)
+        androidPublisherService
+      where
+        go Core.:<|> _ =
+          Core.buildClient
+            ( Core.Proxy ::
+                Core.Proxy
+                  AndroidPublisherInternalappsharingartifactsUploadbundleResource
+            )
+            Core.mempty
+
+instance
+  Core.GoogleRequest
+    ( Core.MediaUpload
+        AndroidPublisherInternalappsharingartifactsUploadbundle
+    )
+  where
+  type
+    Rs
+      ( Core.MediaUpload
+          AndroidPublisherInternalappsharingartifactsUploadbundle
+      ) =
+      InternalAppSharingArtifact
+  type
+    Scopes
+      ( Core.MediaUpload
+          AndroidPublisherInternalappsharingartifactsUploadbundle
+      ) =
+      Core.Scopes AndroidPublisherInternalappsharingartifactsUploadbundle
+  requestClient
+    ( Core.MediaUpload
+        AndroidPublisherInternalappsharingartifactsUploadbundle {..}
+        body
+      ) =
+      go
+        packageName
+        xgafv
+        accessToken
+        callback
+        uploadType
+        uploadProtocol
+        (Core.Just Core.AltJSON)
+        (Core.Just Core.AltMedia)
+        body
+        androidPublisherService
+      where
+        _ Core.:<|> go =
+          Core.buildClient
+            ( Core.Proxy ::
+                Core.Proxy
+                  AndroidPublisherInternalappsharingartifactsUploadbundleResource
+            )
+            Core.mempty
diff --git a/gen/Gogol/AndroidPublisher/Monetization/ConvertRegionPrices.hs b/gen/Gogol/AndroidPublisher/Monetization/ConvertRegionPrices.hs
new file mode 100644
--- /dev/null
+++ b/gen/Gogol/AndroidPublisher/Monetization/ConvertRegionPrices.hs
@@ -0,0 +1,129 @@
+{-# LANGUAGE DataKinds #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE ImportQualifiedPost #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-name-shadowing #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- |
+-- Module      : Gogol.AndroidPublisher.Monetization.ConvertRegionPrices
+-- Copyright   : (c) 2015-2025 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay+gogol@gmail.com>
+--               Toni Cebrián <toni@tonicebrian.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Calculates the region prices, using today\'s exchange rate and country-specific pricing patterns, based on the price in the request for a set of regions.
+--
+-- /See:/ <https://developers.google.com/android-publisher Google Play Android Developer API Reference> for @androidpublisher.monetization.convertRegionPrices@.
+module Gogol.AndroidPublisher.Monetization.ConvertRegionPrices
+  ( -- * Resource
+    AndroidPublisherMonetizationConvertRegionPricesResource,
+
+    -- ** Constructing a Request
+    AndroidPublisherMonetizationConvertRegionPrices (..),
+    newAndroidPublisherMonetizationConvertRegionPrices,
+  )
+where
+
+import Gogol.AndroidPublisher.Types
+import Gogol.Prelude qualified as Core
+
+-- | A resource alias for @androidpublisher.monetization.convertRegionPrices@ method which the
+-- 'AndroidPublisherMonetizationConvertRegionPrices' request conforms to.
+type AndroidPublisherMonetizationConvertRegionPricesResource =
+  "androidpublisher"
+    Core.:> "v3"
+    Core.:> "applications"
+    Core.:> Core.Capture "packageName" Core.Text
+    Core.:> "pricing:convertRegionPrices"
+    Core.:> Core.QueryParam "$.xgafv" Xgafv
+    Core.:> Core.QueryParam "access_token" Core.Text
+    Core.:> Core.QueryParam "callback" Core.Text
+    Core.:> Core.QueryParam "uploadType" Core.Text
+    Core.:> Core.QueryParam "upload_protocol" Core.Text
+    Core.:> Core.QueryParam "alt" Core.AltJSON
+    Core.:> Core.ReqBody '[Core.JSON] ConvertRegionPricesRequest
+    Core.:> Core.Post '[Core.JSON] ConvertRegionPricesResponse
+
+-- | Calculates the region prices, using today\'s exchange rate and country-specific pricing patterns, based on the price in the request for a set of regions.
+--
+-- /See:/ 'newAndroidPublisherMonetizationConvertRegionPrices' smart constructor.
+data AndroidPublisherMonetizationConvertRegionPrices = AndroidPublisherMonetizationConvertRegionPrices
+  { -- | V1 error format.
+    xgafv :: (Core.Maybe Xgafv),
+    -- | OAuth access token.
+    accessToken :: (Core.Maybe Core.Text),
+    -- | JSONP
+    callback :: (Core.Maybe Core.Text),
+    -- | Required. The app package name.
+    packageName :: Core.Text,
+    -- | Multipart request metadata.
+    payload :: ConvertRegionPricesRequest,
+    -- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
+    uploadType :: (Core.Maybe Core.Text),
+    -- | Upload protocol for media (e.g. \"raw\", \"multipart\").
+    uploadProtocol :: (Core.Maybe Core.Text)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'AndroidPublisherMonetizationConvertRegionPrices' with the minimum fields required to make a request.
+newAndroidPublisherMonetizationConvertRegionPrices ::
+  -- |  Required. The app package name. See 'packageName'.
+  Core.Text ->
+  -- |  Multipart request metadata. See 'payload'.
+  ConvertRegionPricesRequest ->
+  AndroidPublisherMonetizationConvertRegionPrices
+newAndroidPublisherMonetizationConvertRegionPrices
+  packageName
+  payload =
+    AndroidPublisherMonetizationConvertRegionPrices
+      { xgafv =
+          Core.Nothing,
+        accessToken = Core.Nothing,
+        callback = Core.Nothing,
+        packageName = packageName,
+        payload = payload,
+        uploadType = Core.Nothing,
+        uploadProtocol = Core.Nothing
+      }
+
+instance
+  Core.GoogleRequest
+    AndroidPublisherMonetizationConvertRegionPrices
+  where
+  type
+    Rs AndroidPublisherMonetizationConvertRegionPrices =
+      ConvertRegionPricesResponse
+  type
+    Scopes AndroidPublisherMonetizationConvertRegionPrices =
+      '[Androidpublisher'FullControl]
+  requestClient AndroidPublisherMonetizationConvertRegionPrices {..} =
+    go
+      packageName
+      xgafv
+      accessToken
+      callback
+      uploadType
+      uploadProtocol
+      (Core.Just Core.AltJSON)
+      payload
+      androidPublisherService
+    where
+      go =
+        Core.buildClient
+          ( Core.Proxy ::
+              Core.Proxy AndroidPublisherMonetizationConvertRegionPricesResource
+          )
+          Core.mempty
diff --git a/gen/Gogol/AndroidPublisher/Monetization/Subscriptions/Archive.hs b/gen/Gogol/AndroidPublisher/Monetization/Subscriptions/Archive.hs
new file mode 100644
--- /dev/null
+++ b/gen/Gogol/AndroidPublisher/Monetization/Subscriptions/Archive.hs
@@ -0,0 +1,138 @@
+{-# LANGUAGE DataKinds #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE ImportQualifiedPost #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-name-shadowing #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- |
+-- Module      : Gogol.AndroidPublisher.Monetization.Subscriptions.Archive
+-- Copyright   : (c) 2015-2025 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay+gogol@gmail.com>
+--               Toni Cebrián <toni@tonicebrian.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Deprecated: subscription archiving is not supported.
+--
+-- /See:/ <https://developers.google.com/android-publisher Google Play Android Developer API Reference> for @androidpublisher.monetization.subscriptions.archive@.
+module Gogol.AndroidPublisher.Monetization.Subscriptions.Archive
+  ( -- * Resource
+    AndroidPublisherMonetizationSubscriptionsArchiveResource,
+
+    -- ** Constructing a Request
+    AndroidPublisherMonetizationSubscriptionsArchive (..),
+    newAndroidPublisherMonetizationSubscriptionsArchive,
+  )
+where
+
+import Gogol.AndroidPublisher.Types
+import Gogol.Prelude qualified as Core
+
+-- | A resource alias for @androidpublisher.monetization.subscriptions.archive@ method which the
+-- 'AndroidPublisherMonetizationSubscriptionsArchive' request conforms to.
+type AndroidPublisherMonetizationSubscriptionsArchiveResource =
+  "androidpublisher"
+    Core.:> "v3"
+    Core.:> "applications"
+    Core.:> Core.Capture "packageName" Core.Text
+    Core.:> "subscriptions"
+    Core.:> Core.CaptureMode "productId" "archive" Core.Text
+    Core.:> Core.QueryParam "$.xgafv" Xgafv
+    Core.:> Core.QueryParam "access_token" Core.Text
+    Core.:> Core.QueryParam "callback" Core.Text
+    Core.:> Core.QueryParam "uploadType" Core.Text
+    Core.:> Core.QueryParam "upload_protocol" Core.Text
+    Core.:> Core.QueryParam "alt" Core.AltJSON
+    Core.:> Core.ReqBody '[Core.JSON] ArchiveSubscriptionRequest
+    Core.:> Core.Post '[Core.JSON] Subscription
+
+-- | Deprecated: subscription archiving is not supported.
+--
+-- /See:/ 'newAndroidPublisherMonetizationSubscriptionsArchive' smart constructor.
+data AndroidPublisherMonetizationSubscriptionsArchive = AndroidPublisherMonetizationSubscriptionsArchive
+  { -- | V1 error format.
+    xgafv :: (Core.Maybe Xgafv),
+    -- | OAuth access token.
+    accessToken :: (Core.Maybe Core.Text),
+    -- | JSONP
+    callback :: (Core.Maybe Core.Text),
+    -- | Required. The parent app (package name) of the app of the subscription to delete.
+    packageName :: Core.Text,
+    -- | Multipart request metadata.
+    payload :: ArchiveSubscriptionRequest,
+    -- | Required. The unique product ID of the subscription to delete.
+    productId :: Core.Text,
+    -- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
+    uploadType :: (Core.Maybe Core.Text),
+    -- | Upload protocol for media (e.g. \"raw\", \"multipart\").
+    uploadProtocol :: (Core.Maybe Core.Text)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'AndroidPublisherMonetizationSubscriptionsArchive' with the minimum fields required to make a request.
+newAndroidPublisherMonetizationSubscriptionsArchive ::
+  -- |  Required. The parent app (package name) of the app of the subscription to delete. See 'packageName'.
+  Core.Text ->
+  -- |  Multipart request metadata. See 'payload'.
+  ArchiveSubscriptionRequest ->
+  -- |  Required. The unique product ID of the subscription to delete. See 'productId'.
+  Core.Text ->
+  AndroidPublisherMonetizationSubscriptionsArchive
+newAndroidPublisherMonetizationSubscriptionsArchive
+  packageName
+  payload
+  productId =
+    AndroidPublisherMonetizationSubscriptionsArchive
+      { xgafv =
+          Core.Nothing,
+        accessToken = Core.Nothing,
+        callback = Core.Nothing,
+        packageName = packageName,
+        payload = payload,
+        productId = productId,
+        uploadType = Core.Nothing,
+        uploadProtocol = Core.Nothing
+      }
+
+instance
+  Core.GoogleRequest
+    AndroidPublisherMonetizationSubscriptionsArchive
+  where
+  type
+    Rs AndroidPublisherMonetizationSubscriptionsArchive =
+      Subscription
+  type
+    Scopes AndroidPublisherMonetizationSubscriptionsArchive =
+      '[Androidpublisher'FullControl]
+  requestClient AndroidPublisherMonetizationSubscriptionsArchive {..} =
+    go
+      packageName
+      productId
+      xgafv
+      accessToken
+      callback
+      uploadType
+      uploadProtocol
+      (Core.Just Core.AltJSON)
+      payload
+      androidPublisherService
+    where
+      go =
+        Core.buildClient
+          ( Core.Proxy ::
+              Core.Proxy
+                AndroidPublisherMonetizationSubscriptionsArchiveResource
+          )
+          Core.mempty
diff --git a/gen/Gogol/AndroidPublisher/Monetization/Subscriptions/BasePlans/Activate.hs b/gen/Gogol/AndroidPublisher/Monetization/Subscriptions/BasePlans/Activate.hs
new file mode 100644
--- /dev/null
+++ b/gen/Gogol/AndroidPublisher/Monetization/Subscriptions/BasePlans/Activate.hs
@@ -0,0 +1,149 @@
+{-# LANGUAGE DataKinds #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE ImportQualifiedPost #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-name-shadowing #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- |
+-- Module      : Gogol.AndroidPublisher.Monetization.Subscriptions.BasePlans.Activate
+-- Copyright   : (c) 2015-2025 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay+gogol@gmail.com>
+--               Toni Cebrián <toni@tonicebrian.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Activates a base plan. Once activated, base plans will be available to new subscribers.
+--
+-- /See:/ <https://developers.google.com/android-publisher Google Play Android Developer API Reference> for @androidpublisher.monetization.subscriptions.basePlans.activate@.
+module Gogol.AndroidPublisher.Monetization.Subscriptions.BasePlans.Activate
+  ( -- * Resource
+    AndroidPublisherMonetizationSubscriptionsBasePlansActivateResource,
+
+    -- ** Constructing a Request
+    AndroidPublisherMonetizationSubscriptionsBasePlansActivate (..),
+    newAndroidPublisherMonetizationSubscriptionsBasePlansActivate,
+  )
+where
+
+import Gogol.AndroidPublisher.Types
+import Gogol.Prelude qualified as Core
+
+-- | A resource alias for @androidpublisher.monetization.subscriptions.basePlans.activate@ method which the
+-- 'AndroidPublisherMonetizationSubscriptionsBasePlansActivate' request conforms to.
+type AndroidPublisherMonetizationSubscriptionsBasePlansActivateResource =
+  "androidpublisher"
+    Core.:> "v3"
+    Core.:> "applications"
+    Core.:> Core.Capture "packageName" Core.Text
+    Core.:> "subscriptions"
+    Core.:> Core.Capture "productId" Core.Text
+    Core.:> "basePlans"
+    Core.:> Core.CaptureMode "basePlanId" "activate" Core.Text
+    Core.:> Core.QueryParam "$.xgafv" Xgafv
+    Core.:> Core.QueryParam "access_token" Core.Text
+    Core.:> Core.QueryParam "callback" Core.Text
+    Core.:> Core.QueryParam "uploadType" Core.Text
+    Core.:> Core.QueryParam "upload_protocol" Core.Text
+    Core.:> Core.QueryParam "alt" Core.AltJSON
+    Core.:> Core.ReqBody '[Core.JSON] ActivateBasePlanRequest
+    Core.:> Core.Post '[Core.JSON] Subscription
+
+-- | Activates a base plan. Once activated, base plans will be available to new subscribers.
+--
+-- /See:/ 'newAndroidPublisherMonetizationSubscriptionsBasePlansActivate' smart constructor.
+data AndroidPublisherMonetizationSubscriptionsBasePlansActivate = AndroidPublisherMonetizationSubscriptionsBasePlansActivate
+  { -- | V1 error format.
+    xgafv :: (Core.Maybe Xgafv),
+    -- | OAuth access token.
+    accessToken :: (Core.Maybe Core.Text),
+    -- | Required. The unique base plan ID of the base plan to activate.
+    basePlanId :: Core.Text,
+    -- | JSONP
+    callback :: (Core.Maybe Core.Text),
+    -- | Required. The parent app (package name) of the base plan to activate.
+    packageName :: Core.Text,
+    -- | Multipart request metadata.
+    payload :: ActivateBasePlanRequest,
+    -- | Required. The parent subscription (ID) of the base plan to activate.
+    productId :: Core.Text,
+    -- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
+    uploadType :: (Core.Maybe Core.Text),
+    -- | Upload protocol for media (e.g. \"raw\", \"multipart\").
+    uploadProtocol :: (Core.Maybe Core.Text)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'AndroidPublisherMonetizationSubscriptionsBasePlansActivate' with the minimum fields required to make a request.
+newAndroidPublisherMonetizationSubscriptionsBasePlansActivate ::
+  -- |  Required. The unique base plan ID of the base plan to activate. See 'basePlanId'.
+  Core.Text ->
+  -- |  Required. The parent app (package name) of the base plan to activate. See 'packageName'.
+  Core.Text ->
+  -- |  Multipart request metadata. See 'payload'.
+  ActivateBasePlanRequest ->
+  -- |  Required. The parent subscription (ID) of the base plan to activate. See 'productId'.
+  Core.Text ->
+  AndroidPublisherMonetizationSubscriptionsBasePlansActivate
+newAndroidPublisherMonetizationSubscriptionsBasePlansActivate
+  basePlanId
+  packageName
+  payload
+  productId =
+    AndroidPublisherMonetizationSubscriptionsBasePlansActivate
+      { xgafv =
+          Core.Nothing,
+        accessToken = Core.Nothing,
+        basePlanId = basePlanId,
+        callback = Core.Nothing,
+        packageName = packageName,
+        payload = payload,
+        productId = productId,
+        uploadType = Core.Nothing,
+        uploadProtocol = Core.Nothing
+      }
+
+instance
+  Core.GoogleRequest
+    AndroidPublisherMonetizationSubscriptionsBasePlansActivate
+  where
+  type
+    Rs AndroidPublisherMonetizationSubscriptionsBasePlansActivate =
+      Subscription
+  type
+    Scopes
+      AndroidPublisherMonetizationSubscriptionsBasePlansActivate =
+      '[Androidpublisher'FullControl]
+  requestClient
+    AndroidPublisherMonetizationSubscriptionsBasePlansActivate {..} =
+      go
+        packageName
+        productId
+        basePlanId
+        xgafv
+        accessToken
+        callback
+        uploadType
+        uploadProtocol
+        (Core.Just Core.AltJSON)
+        payload
+        androidPublisherService
+      where
+        go =
+          Core.buildClient
+            ( Core.Proxy ::
+                Core.Proxy
+                  AndroidPublisherMonetizationSubscriptionsBasePlansActivateResource
+            )
+            Core.mempty
diff --git a/gen/Gogol/AndroidPublisher/Monetization/Subscriptions/BasePlans/BatchMigratePrices.hs b/gen/Gogol/AndroidPublisher/Monetization/Subscriptions/BasePlans/BatchMigratePrices.hs
new file mode 100644
--- /dev/null
+++ b/gen/Gogol/AndroidPublisher/Monetization/Subscriptions/BasePlans/BatchMigratePrices.hs
@@ -0,0 +1,143 @@
+{-# LANGUAGE DataKinds #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE ImportQualifiedPost #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-name-shadowing #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- |
+-- Module      : Gogol.AndroidPublisher.Monetization.Subscriptions.BasePlans.BatchMigratePrices
+-- Copyright   : (c) 2015-2025 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay+gogol@gmail.com>
+--               Toni Cebrián <toni@tonicebrian.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Batch variant of the MigrateBasePlanPrices endpoint. Set the latencyTolerance field on nested requests to PRODUCT/UPDATE/LATENCY/TOLERANCE/LATENCY_TOLERANT to achieve maximum update throughput.
+--
+-- /See:/ <https://developers.google.com/android-publisher Google Play Android Developer API Reference> for @androidpublisher.monetization.subscriptions.basePlans.batchMigratePrices@.
+module Gogol.AndroidPublisher.Monetization.Subscriptions.BasePlans.BatchMigratePrices
+  ( -- * Resource
+    AndroidPublisherMonetizationSubscriptionsBasePlansBatchMigratePricesResource,
+
+    -- ** Constructing a Request
+    AndroidPublisherMonetizationSubscriptionsBasePlansBatchMigratePrices (..),
+    newAndroidPublisherMonetizationSubscriptionsBasePlansBatchMigratePrices,
+  )
+where
+
+import Gogol.AndroidPublisher.Types
+import Gogol.Prelude qualified as Core
+
+-- | A resource alias for @androidpublisher.monetization.subscriptions.basePlans.batchMigratePrices@ method which the
+-- 'AndroidPublisherMonetizationSubscriptionsBasePlansBatchMigratePrices' request conforms to.
+type AndroidPublisherMonetizationSubscriptionsBasePlansBatchMigratePricesResource =
+  "androidpublisher"
+    Core.:> "v3"
+    Core.:> "applications"
+    Core.:> Core.Capture "packageName" Core.Text
+    Core.:> "subscriptions"
+    Core.:> Core.Capture "productId" Core.Text
+    Core.:> "basePlans:batchMigratePrices"
+    Core.:> Core.QueryParam "$.xgafv" Xgafv
+    Core.:> Core.QueryParam "access_token" Core.Text
+    Core.:> Core.QueryParam "callback" Core.Text
+    Core.:> Core.QueryParam "uploadType" Core.Text
+    Core.:> Core.QueryParam "upload_protocol" Core.Text
+    Core.:> Core.QueryParam "alt" Core.AltJSON
+    Core.:> Core.ReqBody '[Core.JSON] BatchMigrateBasePlanPricesRequest
+    Core.:> Core.Post '[Core.JSON] BatchMigrateBasePlanPricesResponse
+
+-- | Batch variant of the MigrateBasePlanPrices endpoint. Set the latencyTolerance field on nested requests to PRODUCT/UPDATE/LATENCY/TOLERANCE/LATENCY_TOLERANT to achieve maximum update throughput.
+--
+-- /See:/ 'newAndroidPublisherMonetizationSubscriptionsBasePlansBatchMigratePrices' smart constructor.
+data AndroidPublisherMonetizationSubscriptionsBasePlansBatchMigratePrices = AndroidPublisherMonetizationSubscriptionsBasePlansBatchMigratePrices
+  { -- | V1 error format.
+    xgafv :: (Core.Maybe Xgafv),
+    -- | OAuth access token.
+    accessToken :: (Core.Maybe Core.Text),
+    -- | JSONP
+    callback :: (Core.Maybe Core.Text),
+    -- | Required. The parent app (package name) for which the subscriptions should be created or updated. Must be equal to the package_name field on all the Subscription resources.
+    packageName :: Core.Text,
+    -- | Multipart request metadata.
+    payload :: BatchMigrateBasePlanPricesRequest,
+    -- | Required. The product ID of the parent subscription, if all updated offers belong to the same subscription. If this batch update spans multiple subscriptions, set this field to \"-\". Must be set.
+    productId :: Core.Text,
+    -- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
+    uploadType :: (Core.Maybe Core.Text),
+    -- | Upload protocol for media (e.g. \"raw\", \"multipart\").
+    uploadProtocol :: (Core.Maybe Core.Text)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'AndroidPublisherMonetizationSubscriptionsBasePlansBatchMigratePrices' with the minimum fields required to make a request.
+newAndroidPublisherMonetizationSubscriptionsBasePlansBatchMigratePrices ::
+  -- |  Required. The parent app (package name) for which the subscriptions should be created or updated. Must be equal to the package_name field on all the Subscription resources. See 'packageName'.
+  Core.Text ->
+  -- |  Multipart request metadata. See 'payload'.
+  BatchMigrateBasePlanPricesRequest ->
+  -- |  Required. The product ID of the parent subscription, if all updated offers belong to the same subscription. If this batch update spans multiple subscriptions, set this field to \"-\". Must be set. See 'productId'.
+  Core.Text ->
+  AndroidPublisherMonetizationSubscriptionsBasePlansBatchMigratePrices
+newAndroidPublisherMonetizationSubscriptionsBasePlansBatchMigratePrices
+  packageName
+  payload
+  productId =
+    AndroidPublisherMonetizationSubscriptionsBasePlansBatchMigratePrices
+      { xgafv =
+          Core.Nothing,
+        accessToken = Core.Nothing,
+        callback = Core.Nothing,
+        packageName = packageName,
+        payload = payload,
+        productId = productId,
+        uploadType = Core.Nothing,
+        uploadProtocol =
+          Core.Nothing
+      }
+
+instance
+  Core.GoogleRequest
+    AndroidPublisherMonetizationSubscriptionsBasePlansBatchMigratePrices
+  where
+  type
+    Rs
+      AndroidPublisherMonetizationSubscriptionsBasePlansBatchMigratePrices =
+      BatchMigrateBasePlanPricesResponse
+  type
+    Scopes
+      AndroidPublisherMonetizationSubscriptionsBasePlansBatchMigratePrices =
+      '[Androidpublisher'FullControl]
+  requestClient
+    AndroidPublisherMonetizationSubscriptionsBasePlansBatchMigratePrices {..} =
+      go
+        packageName
+        productId
+        xgafv
+        accessToken
+        callback
+        uploadType
+        uploadProtocol
+        (Core.Just Core.AltJSON)
+        payload
+        androidPublisherService
+      where
+        go =
+          Core.buildClient
+            ( Core.Proxy ::
+                Core.Proxy
+                  AndroidPublisherMonetizationSubscriptionsBasePlansBatchMigratePricesResource
+            )
+            Core.mempty
diff --git a/gen/Gogol/AndroidPublisher/Monetization/Subscriptions/BasePlans/BatchUpdateStates.hs b/gen/Gogol/AndroidPublisher/Monetization/Subscriptions/BasePlans/BatchUpdateStates.hs
new file mode 100644
--- /dev/null
+++ b/gen/Gogol/AndroidPublisher/Monetization/Subscriptions/BasePlans/BatchUpdateStates.hs
@@ -0,0 +1,143 @@
+{-# LANGUAGE DataKinds #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE ImportQualifiedPost #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-name-shadowing #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- |
+-- Module      : Gogol.AndroidPublisher.Monetization.Subscriptions.BasePlans.BatchUpdateStates
+-- Copyright   : (c) 2015-2025 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay+gogol@gmail.com>
+--               Toni Cebrián <toni@tonicebrian.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Activates or deactivates base plans across one or multiple subscriptions. Set the latencyTolerance field on nested requests to PRODUCT/UPDATE/LATENCY/TOLERANCE/LATENCY_TOLERANT to achieve maximum update throughput.
+--
+-- /See:/ <https://developers.google.com/android-publisher Google Play Android Developer API Reference> for @androidpublisher.monetization.subscriptions.basePlans.batchUpdateStates@.
+module Gogol.AndroidPublisher.Monetization.Subscriptions.BasePlans.BatchUpdateStates
+  ( -- * Resource
+    AndroidPublisherMonetizationSubscriptionsBasePlansBatchUpdateStatesResource,
+
+    -- ** Constructing a Request
+    AndroidPublisherMonetizationSubscriptionsBasePlansBatchUpdateStates (..),
+    newAndroidPublisherMonetizationSubscriptionsBasePlansBatchUpdateStates,
+  )
+where
+
+import Gogol.AndroidPublisher.Types
+import Gogol.Prelude qualified as Core
+
+-- | A resource alias for @androidpublisher.monetization.subscriptions.basePlans.batchUpdateStates@ method which the
+-- 'AndroidPublisherMonetizationSubscriptionsBasePlansBatchUpdateStates' request conforms to.
+type AndroidPublisherMonetizationSubscriptionsBasePlansBatchUpdateStatesResource =
+  "androidpublisher"
+    Core.:> "v3"
+    Core.:> "applications"
+    Core.:> Core.Capture "packageName" Core.Text
+    Core.:> "subscriptions"
+    Core.:> Core.Capture "productId" Core.Text
+    Core.:> "basePlans:batchUpdateStates"
+    Core.:> Core.QueryParam "$.xgafv" Xgafv
+    Core.:> Core.QueryParam "access_token" Core.Text
+    Core.:> Core.QueryParam "callback" Core.Text
+    Core.:> Core.QueryParam "uploadType" Core.Text
+    Core.:> Core.QueryParam "upload_protocol" Core.Text
+    Core.:> Core.QueryParam "alt" Core.AltJSON
+    Core.:> Core.ReqBody '[Core.JSON] BatchUpdateBasePlanStatesRequest
+    Core.:> Core.Post '[Core.JSON] BatchUpdateBasePlanStatesResponse
+
+-- | Activates or deactivates base plans across one or multiple subscriptions. Set the latencyTolerance field on nested requests to PRODUCT/UPDATE/LATENCY/TOLERANCE/LATENCY_TOLERANT to achieve maximum update throughput.
+--
+-- /See:/ 'newAndroidPublisherMonetizationSubscriptionsBasePlansBatchUpdateStates' smart constructor.
+data AndroidPublisherMonetizationSubscriptionsBasePlansBatchUpdateStates = AndroidPublisherMonetizationSubscriptionsBasePlansBatchUpdateStates
+  { -- | V1 error format.
+    xgafv :: (Core.Maybe Xgafv),
+    -- | OAuth access token.
+    accessToken :: (Core.Maybe Core.Text),
+    -- | JSONP
+    callback :: (Core.Maybe Core.Text),
+    -- | Required. The parent app (package name) of the updated base plans.
+    packageName :: Core.Text,
+    -- | Multipart request metadata.
+    payload :: BatchUpdateBasePlanStatesRequest,
+    -- | Required. The product ID of the parent subscription, if all updated base plans belong to the same subscription. If this batch update spans multiple subscriptions, set this field to \"-\". Must be set.
+    productId :: Core.Text,
+    -- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
+    uploadType :: (Core.Maybe Core.Text),
+    -- | Upload protocol for media (e.g. \"raw\", \"multipart\").
+    uploadProtocol :: (Core.Maybe Core.Text)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'AndroidPublisherMonetizationSubscriptionsBasePlansBatchUpdateStates' with the minimum fields required to make a request.
+newAndroidPublisherMonetizationSubscriptionsBasePlansBatchUpdateStates ::
+  -- |  Required. The parent app (package name) of the updated base plans. See 'packageName'.
+  Core.Text ->
+  -- |  Multipart request metadata. See 'payload'.
+  BatchUpdateBasePlanStatesRequest ->
+  -- |  Required. The product ID of the parent subscription, if all updated base plans belong to the same subscription. If this batch update spans multiple subscriptions, set this field to \"-\". Must be set. See 'productId'.
+  Core.Text ->
+  AndroidPublisherMonetizationSubscriptionsBasePlansBatchUpdateStates
+newAndroidPublisherMonetizationSubscriptionsBasePlansBatchUpdateStates
+  packageName
+  payload
+  productId =
+    AndroidPublisherMonetizationSubscriptionsBasePlansBatchUpdateStates
+      { xgafv =
+          Core.Nothing,
+        accessToken = Core.Nothing,
+        callback = Core.Nothing,
+        packageName = packageName,
+        payload = payload,
+        productId = productId,
+        uploadType = Core.Nothing,
+        uploadProtocol =
+          Core.Nothing
+      }
+
+instance
+  Core.GoogleRequest
+    AndroidPublisherMonetizationSubscriptionsBasePlansBatchUpdateStates
+  where
+  type
+    Rs
+      AndroidPublisherMonetizationSubscriptionsBasePlansBatchUpdateStates =
+      BatchUpdateBasePlanStatesResponse
+  type
+    Scopes
+      AndroidPublisherMonetizationSubscriptionsBasePlansBatchUpdateStates =
+      '[Androidpublisher'FullControl]
+  requestClient
+    AndroidPublisherMonetizationSubscriptionsBasePlansBatchUpdateStates {..} =
+      go
+        packageName
+        productId
+        xgafv
+        accessToken
+        callback
+        uploadType
+        uploadProtocol
+        (Core.Just Core.AltJSON)
+        payload
+        androidPublisherService
+      where
+        go =
+          Core.buildClient
+            ( Core.Proxy ::
+                Core.Proxy
+                  AndroidPublisherMonetizationSubscriptionsBasePlansBatchUpdateStatesResource
+            )
+            Core.mempty
diff --git a/gen/Gogol/AndroidPublisher/Monetization/Subscriptions/BasePlans/Deactivate.hs b/gen/Gogol/AndroidPublisher/Monetization/Subscriptions/BasePlans/Deactivate.hs
new file mode 100644
--- /dev/null
+++ b/gen/Gogol/AndroidPublisher/Monetization/Subscriptions/BasePlans/Deactivate.hs
@@ -0,0 +1,150 @@
+{-# LANGUAGE DataKinds #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE ImportQualifiedPost #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-name-shadowing #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- |
+-- Module      : Gogol.AndroidPublisher.Monetization.Subscriptions.BasePlans.Deactivate
+-- Copyright   : (c) 2015-2025 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay+gogol@gmail.com>
+--               Toni Cebrián <toni@tonicebrian.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Deactivates a base plan. Once deactivated, the base plan will become unavailable to new subscribers, but existing subscribers will maintain their subscription
+--
+-- /See:/ <https://developers.google.com/android-publisher Google Play Android Developer API Reference> for @androidpublisher.monetization.subscriptions.basePlans.deactivate@.
+module Gogol.AndroidPublisher.Monetization.Subscriptions.BasePlans.Deactivate
+  ( -- * Resource
+    AndroidPublisherMonetizationSubscriptionsBasePlansDeactivateResource,
+
+    -- ** Constructing a Request
+    AndroidPublisherMonetizationSubscriptionsBasePlansDeactivate (..),
+    newAndroidPublisherMonetizationSubscriptionsBasePlansDeactivate,
+  )
+where
+
+import Gogol.AndroidPublisher.Types
+import Gogol.Prelude qualified as Core
+
+-- | A resource alias for @androidpublisher.monetization.subscriptions.basePlans.deactivate@ method which the
+-- 'AndroidPublisherMonetizationSubscriptionsBasePlansDeactivate' request conforms to.
+type AndroidPublisherMonetizationSubscriptionsBasePlansDeactivateResource =
+  "androidpublisher"
+    Core.:> "v3"
+    Core.:> "applications"
+    Core.:> Core.Capture "packageName" Core.Text
+    Core.:> "subscriptions"
+    Core.:> Core.Capture "productId" Core.Text
+    Core.:> "basePlans"
+    Core.:> Core.CaptureMode "basePlanId" "deactivate" Core.Text
+    Core.:> Core.QueryParam "$.xgafv" Xgafv
+    Core.:> Core.QueryParam "access_token" Core.Text
+    Core.:> Core.QueryParam "callback" Core.Text
+    Core.:> Core.QueryParam "uploadType" Core.Text
+    Core.:> Core.QueryParam "upload_protocol" Core.Text
+    Core.:> Core.QueryParam "alt" Core.AltJSON
+    Core.:> Core.ReqBody '[Core.JSON] DeactivateBasePlanRequest
+    Core.:> Core.Post '[Core.JSON] Subscription
+
+-- | Deactivates a base plan. Once deactivated, the base plan will become unavailable to new subscribers, but existing subscribers will maintain their subscription
+--
+-- /See:/ 'newAndroidPublisherMonetizationSubscriptionsBasePlansDeactivate' smart constructor.
+data AndroidPublisherMonetizationSubscriptionsBasePlansDeactivate = AndroidPublisherMonetizationSubscriptionsBasePlansDeactivate
+  { -- | V1 error format.
+    xgafv :: (Core.Maybe Xgafv),
+    -- | OAuth access token.
+    accessToken :: (Core.Maybe Core.Text),
+    -- | Required. The unique base plan ID of the base plan to deactivate.
+    basePlanId :: Core.Text,
+    -- | JSONP
+    callback :: (Core.Maybe Core.Text),
+    -- | Required. The parent app (package name) of the base plan to deactivate.
+    packageName :: Core.Text,
+    -- | Multipart request metadata.
+    payload :: DeactivateBasePlanRequest,
+    -- | Required. The parent subscription (ID) of the base plan to deactivate.
+    productId :: Core.Text,
+    -- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
+    uploadType :: (Core.Maybe Core.Text),
+    -- | Upload protocol for media (e.g. \"raw\", \"multipart\").
+    uploadProtocol :: (Core.Maybe Core.Text)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'AndroidPublisherMonetizationSubscriptionsBasePlansDeactivate' with the minimum fields required to make a request.
+newAndroidPublisherMonetizationSubscriptionsBasePlansDeactivate ::
+  -- |  Required. The unique base plan ID of the base plan to deactivate. See 'basePlanId'.
+  Core.Text ->
+  -- |  Required. The parent app (package name) of the base plan to deactivate. See 'packageName'.
+  Core.Text ->
+  -- |  Multipart request metadata. See 'payload'.
+  DeactivateBasePlanRequest ->
+  -- |  Required. The parent subscription (ID) of the base plan to deactivate. See 'productId'.
+  Core.Text ->
+  AndroidPublisherMonetizationSubscriptionsBasePlansDeactivate
+newAndroidPublisherMonetizationSubscriptionsBasePlansDeactivate
+  basePlanId
+  packageName
+  payload
+  productId =
+    AndroidPublisherMonetizationSubscriptionsBasePlansDeactivate
+      { xgafv =
+          Core.Nothing,
+        accessToken = Core.Nothing,
+        basePlanId = basePlanId,
+        callback = Core.Nothing,
+        packageName = packageName,
+        payload = payload,
+        productId = productId,
+        uploadType = Core.Nothing,
+        uploadProtocol = Core.Nothing
+      }
+
+instance
+  Core.GoogleRequest
+    AndroidPublisherMonetizationSubscriptionsBasePlansDeactivate
+  where
+  type
+    Rs
+      AndroidPublisherMonetizationSubscriptionsBasePlansDeactivate =
+      Subscription
+  type
+    Scopes
+      AndroidPublisherMonetizationSubscriptionsBasePlansDeactivate =
+      '[Androidpublisher'FullControl]
+  requestClient
+    AndroidPublisherMonetizationSubscriptionsBasePlansDeactivate {..} =
+      go
+        packageName
+        productId
+        basePlanId
+        xgafv
+        accessToken
+        callback
+        uploadType
+        uploadProtocol
+        (Core.Just Core.AltJSON)
+        payload
+        androidPublisherService
+      where
+        go =
+          Core.buildClient
+            ( Core.Proxy ::
+                Core.Proxy
+                  AndroidPublisherMonetizationSubscriptionsBasePlansDeactivateResource
+            )
+            Core.mempty
diff --git a/gen/Gogol/AndroidPublisher/Monetization/Subscriptions/BasePlans/Delete.hs b/gen/Gogol/AndroidPublisher/Monetization/Subscriptions/BasePlans/Delete.hs
new file mode 100644
--- /dev/null
+++ b/gen/Gogol/AndroidPublisher/Monetization/Subscriptions/BasePlans/Delete.hs
@@ -0,0 +1,141 @@
+{-# LANGUAGE DataKinds #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE ImportQualifiedPost #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-name-shadowing #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- |
+-- Module      : Gogol.AndroidPublisher.Monetization.Subscriptions.BasePlans.Delete
+-- Copyright   : (c) 2015-2025 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay+gogol@gmail.com>
+--               Toni Cebrián <toni@tonicebrian.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Deletes a base plan. Can only be done for draft base plans. This action is irreversible.
+--
+-- /See:/ <https://developers.google.com/android-publisher Google Play Android Developer API Reference> for @androidpublisher.monetization.subscriptions.basePlans.delete@.
+module Gogol.AndroidPublisher.Monetization.Subscriptions.BasePlans.Delete
+  ( -- * Resource
+    AndroidPublisherMonetizationSubscriptionsBasePlansDeleteResource,
+
+    -- ** Constructing a Request
+    AndroidPublisherMonetizationSubscriptionsBasePlansDelete (..),
+    newAndroidPublisherMonetizationSubscriptionsBasePlansDelete,
+  )
+where
+
+import Gogol.AndroidPublisher.Types
+import Gogol.Prelude qualified as Core
+
+-- | A resource alias for @androidpublisher.monetization.subscriptions.basePlans.delete@ method which the
+-- 'AndroidPublisherMonetizationSubscriptionsBasePlansDelete' request conforms to.
+type AndroidPublisherMonetizationSubscriptionsBasePlansDeleteResource =
+  "androidpublisher"
+    Core.:> "v3"
+    Core.:> "applications"
+    Core.:> Core.Capture "packageName" Core.Text
+    Core.:> "subscriptions"
+    Core.:> Core.Capture "productId" Core.Text
+    Core.:> "basePlans"
+    Core.:> Core.Capture "basePlanId" Core.Text
+    Core.:> Core.QueryParam "$.xgafv" Xgafv
+    Core.:> Core.QueryParam "access_token" Core.Text
+    Core.:> Core.QueryParam "callback" Core.Text
+    Core.:> Core.QueryParam "uploadType" Core.Text
+    Core.:> Core.QueryParam "upload_protocol" Core.Text
+    Core.:> Core.QueryParam "alt" Core.AltJSON
+    Core.:> Core.Delete '[Core.JSON] ()
+
+-- | Deletes a base plan. Can only be done for draft base plans. This action is irreversible.
+--
+-- /See:/ 'newAndroidPublisherMonetizationSubscriptionsBasePlansDelete' smart constructor.
+data AndroidPublisherMonetizationSubscriptionsBasePlansDelete = AndroidPublisherMonetizationSubscriptionsBasePlansDelete
+  { -- | V1 error format.
+    xgafv :: (Core.Maybe Xgafv),
+    -- | OAuth access token.
+    accessToken :: (Core.Maybe Core.Text),
+    -- | Required. The unique offer ID of the base plan to delete.
+    basePlanId :: Core.Text,
+    -- | JSONP
+    callback :: (Core.Maybe Core.Text),
+    -- | Required. The parent app (package name) of the base plan to delete.
+    packageName :: Core.Text,
+    -- | Required. The parent subscription (ID) of the base plan to delete.
+    productId :: Core.Text,
+    -- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
+    uploadType :: (Core.Maybe Core.Text),
+    -- | Upload protocol for media (e.g. \"raw\", \"multipart\").
+    uploadProtocol :: (Core.Maybe Core.Text)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'AndroidPublisherMonetizationSubscriptionsBasePlansDelete' with the minimum fields required to make a request.
+newAndroidPublisherMonetizationSubscriptionsBasePlansDelete ::
+  -- |  Required. The unique offer ID of the base plan to delete. See 'basePlanId'.
+  Core.Text ->
+  -- |  Required. The parent app (package name) of the base plan to delete. See 'packageName'.
+  Core.Text ->
+  -- |  Required. The parent subscription (ID) of the base plan to delete. See 'productId'.
+  Core.Text ->
+  AndroidPublisherMonetizationSubscriptionsBasePlansDelete
+newAndroidPublisherMonetizationSubscriptionsBasePlansDelete
+  basePlanId
+  packageName
+  productId =
+    AndroidPublisherMonetizationSubscriptionsBasePlansDelete
+      { xgafv =
+          Core.Nothing,
+        accessToken = Core.Nothing,
+        basePlanId = basePlanId,
+        callback = Core.Nothing,
+        packageName = packageName,
+        productId = productId,
+        uploadType = Core.Nothing,
+        uploadProtocol = Core.Nothing
+      }
+
+instance
+  Core.GoogleRequest
+    AndroidPublisherMonetizationSubscriptionsBasePlansDelete
+  where
+  type
+    Rs AndroidPublisherMonetizationSubscriptionsBasePlansDelete =
+      ()
+  type
+    Scopes
+      AndroidPublisherMonetizationSubscriptionsBasePlansDelete =
+      '[Androidpublisher'FullControl]
+  requestClient
+    AndroidPublisherMonetizationSubscriptionsBasePlansDelete {..} =
+      go
+        packageName
+        productId
+        basePlanId
+        xgafv
+        accessToken
+        callback
+        uploadType
+        uploadProtocol
+        (Core.Just Core.AltJSON)
+        androidPublisherService
+      where
+        go =
+          Core.buildClient
+            ( Core.Proxy ::
+                Core.Proxy
+                  AndroidPublisherMonetizationSubscriptionsBasePlansDeleteResource
+            )
+            Core.mempty
diff --git a/gen/Gogol/AndroidPublisher/Monetization/Subscriptions/BasePlans/MigratePrices.hs b/gen/Gogol/AndroidPublisher/Monetization/Subscriptions/BasePlans/MigratePrices.hs
new file mode 100644
--- /dev/null
+++ b/gen/Gogol/AndroidPublisher/Monetization/Subscriptions/BasePlans/MigratePrices.hs
@@ -0,0 +1,150 @@
+{-# LANGUAGE DataKinds #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE ImportQualifiedPost #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-name-shadowing #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- |
+-- Module      : Gogol.AndroidPublisher.Monetization.Subscriptions.BasePlans.MigratePrices
+-- Copyright   : (c) 2015-2025 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay+gogol@gmail.com>
+--               Toni Cebrián <toni@tonicebrian.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Migrates subscribers from one or more legacy price cohorts to the current price. Requests result in Google Play notifying affected subscribers. Only up to 250 simultaneous legacy price cohorts are supported.
+--
+-- /See:/ <https://developers.google.com/android-publisher Google Play Android Developer API Reference> for @androidpublisher.monetization.subscriptions.basePlans.migratePrices@.
+module Gogol.AndroidPublisher.Monetization.Subscriptions.BasePlans.MigratePrices
+  ( -- * Resource
+    AndroidPublisherMonetizationSubscriptionsBasePlansMigratePricesResource,
+
+    -- ** Constructing a Request
+    AndroidPublisherMonetizationSubscriptionsBasePlansMigratePrices (..),
+    newAndroidPublisherMonetizationSubscriptionsBasePlansMigratePrices,
+  )
+where
+
+import Gogol.AndroidPublisher.Types
+import Gogol.Prelude qualified as Core
+
+-- | A resource alias for @androidpublisher.monetization.subscriptions.basePlans.migratePrices@ method which the
+-- 'AndroidPublisherMonetizationSubscriptionsBasePlansMigratePrices' request conforms to.
+type AndroidPublisherMonetizationSubscriptionsBasePlansMigratePricesResource =
+  "androidpublisher"
+    Core.:> "v3"
+    Core.:> "applications"
+    Core.:> Core.Capture "packageName" Core.Text
+    Core.:> "subscriptions"
+    Core.:> Core.Capture "productId" Core.Text
+    Core.:> "basePlans"
+    Core.:> Core.CaptureMode "basePlanId" "migratePrices" Core.Text
+    Core.:> Core.QueryParam "$.xgafv" Xgafv
+    Core.:> Core.QueryParam "access_token" Core.Text
+    Core.:> Core.QueryParam "callback" Core.Text
+    Core.:> Core.QueryParam "uploadType" Core.Text
+    Core.:> Core.QueryParam "upload_protocol" Core.Text
+    Core.:> Core.QueryParam "alt" Core.AltJSON
+    Core.:> Core.ReqBody '[Core.JSON] MigrateBasePlanPricesRequest
+    Core.:> Core.Post '[Core.JSON] MigrateBasePlanPricesResponse
+
+-- | Migrates subscribers from one or more legacy price cohorts to the current price. Requests result in Google Play notifying affected subscribers. Only up to 250 simultaneous legacy price cohorts are supported.
+--
+-- /See:/ 'newAndroidPublisherMonetizationSubscriptionsBasePlansMigratePrices' smart constructor.
+data AndroidPublisherMonetizationSubscriptionsBasePlansMigratePrices = AndroidPublisherMonetizationSubscriptionsBasePlansMigratePrices
+  { -- | V1 error format.
+    xgafv :: (Core.Maybe Xgafv),
+    -- | OAuth access token.
+    accessToken :: (Core.Maybe Core.Text),
+    -- | Required. The unique base plan ID of the base plan to update prices on.
+    basePlanId :: Core.Text,
+    -- | JSONP
+    callback :: (Core.Maybe Core.Text),
+    -- | Required. Package name of the parent app. Must be equal to the package_name field on the Subscription resource.
+    packageName :: Core.Text,
+    -- | Multipart request metadata.
+    payload :: MigrateBasePlanPricesRequest,
+    -- | Required. The ID of the subscription to update. Must be equal to the product_id field on the Subscription resource.
+    productId :: Core.Text,
+    -- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
+    uploadType :: (Core.Maybe Core.Text),
+    -- | Upload protocol for media (e.g. \"raw\", \"multipart\").
+    uploadProtocol :: (Core.Maybe Core.Text)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'AndroidPublisherMonetizationSubscriptionsBasePlansMigratePrices' with the minimum fields required to make a request.
+newAndroidPublisherMonetizationSubscriptionsBasePlansMigratePrices ::
+  -- |  Required. The unique base plan ID of the base plan to update prices on. See 'basePlanId'.
+  Core.Text ->
+  -- |  Required. Package name of the parent app. Must be equal to the package_name field on the Subscription resource. See 'packageName'.
+  Core.Text ->
+  -- |  Multipart request metadata. See 'payload'.
+  MigrateBasePlanPricesRequest ->
+  -- |  Required. The ID of the subscription to update. Must be equal to the product_id field on the Subscription resource. See 'productId'.
+  Core.Text ->
+  AndroidPublisherMonetizationSubscriptionsBasePlansMigratePrices
+newAndroidPublisherMonetizationSubscriptionsBasePlansMigratePrices
+  basePlanId
+  packageName
+  payload
+  productId =
+    AndroidPublisherMonetizationSubscriptionsBasePlansMigratePrices
+      { xgafv =
+          Core.Nothing,
+        accessToken = Core.Nothing,
+        basePlanId = basePlanId,
+        callback = Core.Nothing,
+        packageName = packageName,
+        payload = payload,
+        productId = productId,
+        uploadType = Core.Nothing,
+        uploadProtocol = Core.Nothing
+      }
+
+instance
+  Core.GoogleRequest
+    AndroidPublisherMonetizationSubscriptionsBasePlansMigratePrices
+  where
+  type
+    Rs
+      AndroidPublisherMonetizationSubscriptionsBasePlansMigratePrices =
+      MigrateBasePlanPricesResponse
+  type
+    Scopes
+      AndroidPublisherMonetizationSubscriptionsBasePlansMigratePrices =
+      '[Androidpublisher'FullControl]
+  requestClient
+    AndroidPublisherMonetizationSubscriptionsBasePlansMigratePrices {..} =
+      go
+        packageName
+        productId
+        basePlanId
+        xgafv
+        accessToken
+        callback
+        uploadType
+        uploadProtocol
+        (Core.Just Core.AltJSON)
+        payload
+        androidPublisherService
+      where
+        go =
+          Core.buildClient
+            ( Core.Proxy ::
+                Core.Proxy
+                  AndroidPublisherMonetizationSubscriptionsBasePlansMigratePricesResource
+            )
+            Core.mempty
diff --git a/gen/Gogol/AndroidPublisher/Monetization/Subscriptions/BasePlans/Offers/Activate.hs b/gen/Gogol/AndroidPublisher/Monetization/Subscriptions/BasePlans/Offers/Activate.hs
new file mode 100644
--- /dev/null
+++ b/gen/Gogol/AndroidPublisher/Monetization/Subscriptions/BasePlans/Offers/Activate.hs
@@ -0,0 +1,159 @@
+{-# LANGUAGE DataKinds #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE ImportQualifiedPost #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-name-shadowing #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- |
+-- Module      : Gogol.AndroidPublisher.Monetization.Subscriptions.BasePlans.Offers.Activate
+-- Copyright   : (c) 2015-2025 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay+gogol@gmail.com>
+--               Toni Cebrián <toni@tonicebrian.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Activates a subscription offer. Once activated, subscription offers will be available to new subscribers.
+--
+-- /See:/ <https://developers.google.com/android-publisher Google Play Android Developer API Reference> for @androidpublisher.monetization.subscriptions.basePlans.offers.activate@.
+module Gogol.AndroidPublisher.Monetization.Subscriptions.BasePlans.Offers.Activate
+  ( -- * Resource
+    AndroidPublisherMonetizationSubscriptionsBasePlansOffersActivateResource,
+
+    -- ** Constructing a Request
+    AndroidPublisherMonetizationSubscriptionsBasePlansOffersActivate (..),
+    newAndroidPublisherMonetizationSubscriptionsBasePlansOffersActivate,
+  )
+where
+
+import Gogol.AndroidPublisher.Types
+import Gogol.Prelude qualified as Core
+
+-- | A resource alias for @androidpublisher.monetization.subscriptions.basePlans.offers.activate@ method which the
+-- 'AndroidPublisherMonetizationSubscriptionsBasePlansOffersActivate' request conforms to.
+type AndroidPublisherMonetizationSubscriptionsBasePlansOffersActivateResource =
+  "androidpublisher"
+    Core.:> "v3"
+    Core.:> "applications"
+    Core.:> Core.Capture "packageName" Core.Text
+    Core.:> "subscriptions"
+    Core.:> Core.Capture "productId" Core.Text
+    Core.:> "basePlans"
+    Core.:> Core.Capture "basePlanId" Core.Text
+    Core.:> "offers"
+    Core.:> Core.CaptureMode "offerId" "activate" Core.Text
+    Core.:> Core.QueryParam "$.xgafv" Xgafv
+    Core.:> Core.QueryParam "access_token" Core.Text
+    Core.:> Core.QueryParam "callback" Core.Text
+    Core.:> Core.QueryParam "uploadType" Core.Text
+    Core.:> Core.QueryParam "upload_protocol" Core.Text
+    Core.:> Core.QueryParam "alt" Core.AltJSON
+    Core.:> Core.ReqBody '[Core.JSON] ActivateSubscriptionOfferRequest
+    Core.:> Core.Post '[Core.JSON] SubscriptionOffer
+
+-- | Activates a subscription offer. Once activated, subscription offers will be available to new subscribers.
+--
+-- /See:/ 'newAndroidPublisherMonetizationSubscriptionsBasePlansOffersActivate' smart constructor.
+data AndroidPublisherMonetizationSubscriptionsBasePlansOffersActivate = AndroidPublisherMonetizationSubscriptionsBasePlansOffersActivate
+  { -- | V1 error format.
+    xgafv :: (Core.Maybe Xgafv),
+    -- | OAuth access token.
+    accessToken :: (Core.Maybe Core.Text),
+    -- | Required. The parent base plan (ID) of the offer to activate.
+    basePlanId :: Core.Text,
+    -- | JSONP
+    callback :: (Core.Maybe Core.Text),
+    -- | Required. The unique offer ID of the offer to activate.
+    offerId :: Core.Text,
+    -- | Required. The parent app (package name) of the offer to activate.
+    packageName :: Core.Text,
+    -- | Multipart request metadata.
+    payload :: ActivateSubscriptionOfferRequest,
+    -- | Required. The parent subscription (ID) of the offer to activate.
+    productId :: Core.Text,
+    -- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
+    uploadType :: (Core.Maybe Core.Text),
+    -- | Upload protocol for media (e.g. \"raw\", \"multipart\").
+    uploadProtocol :: (Core.Maybe Core.Text)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'AndroidPublisherMonetizationSubscriptionsBasePlansOffersActivate' with the minimum fields required to make a request.
+newAndroidPublisherMonetizationSubscriptionsBasePlansOffersActivate ::
+  -- |  Required. The parent base plan (ID) of the offer to activate. See 'basePlanId'.
+  Core.Text ->
+  -- |  Required. The unique offer ID of the offer to activate. See 'offerId'.
+  Core.Text ->
+  -- |  Required. The parent app (package name) of the offer to activate. See 'packageName'.
+  Core.Text ->
+  -- |  Multipart request metadata. See 'payload'.
+  ActivateSubscriptionOfferRequest ->
+  -- |  Required. The parent subscription (ID) of the offer to activate. See 'productId'.
+  Core.Text ->
+  AndroidPublisherMonetizationSubscriptionsBasePlansOffersActivate
+newAndroidPublisherMonetizationSubscriptionsBasePlansOffersActivate
+  basePlanId
+  offerId
+  packageName
+  payload
+  productId =
+    AndroidPublisherMonetizationSubscriptionsBasePlansOffersActivate
+      { xgafv =
+          Core.Nothing,
+        accessToken = Core.Nothing,
+        basePlanId = basePlanId,
+        callback = Core.Nothing,
+        offerId = offerId,
+        packageName = packageName,
+        payload = payload,
+        productId = productId,
+        uploadType = Core.Nothing,
+        uploadProtocol = Core.Nothing
+      }
+
+instance
+  Core.GoogleRequest
+    AndroidPublisherMonetizationSubscriptionsBasePlansOffersActivate
+  where
+  type
+    Rs
+      AndroidPublisherMonetizationSubscriptionsBasePlansOffersActivate =
+      SubscriptionOffer
+  type
+    Scopes
+      AndroidPublisherMonetizationSubscriptionsBasePlansOffersActivate =
+      '[Androidpublisher'FullControl]
+  requestClient
+    AndroidPublisherMonetizationSubscriptionsBasePlansOffersActivate {..} =
+      go
+        packageName
+        productId
+        basePlanId
+        offerId
+        xgafv
+        accessToken
+        callback
+        uploadType
+        uploadProtocol
+        (Core.Just Core.AltJSON)
+        payload
+        androidPublisherService
+      where
+        go =
+          Core.buildClient
+            ( Core.Proxy ::
+                Core.Proxy
+                  AndroidPublisherMonetizationSubscriptionsBasePlansOffersActivateResource
+            )
+            Core.mempty
diff --git a/gen/Gogol/AndroidPublisher/Monetization/Subscriptions/BasePlans/Offers/BatchGet.hs b/gen/Gogol/AndroidPublisher/Monetization/Subscriptions/BasePlans/Offers/BatchGet.hs
new file mode 100644
--- /dev/null
+++ b/gen/Gogol/AndroidPublisher/Monetization/Subscriptions/BasePlans/Offers/BatchGet.hs
@@ -0,0 +1,151 @@
+{-# LANGUAGE DataKinds #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE ImportQualifiedPost #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-name-shadowing #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- |
+-- Module      : Gogol.AndroidPublisher.Monetization.Subscriptions.BasePlans.Offers.BatchGet
+-- Copyright   : (c) 2015-2025 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay+gogol@gmail.com>
+--               Toni Cebrián <toni@tonicebrian.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Reads one or more subscription offers.
+--
+-- /See:/ <https://developers.google.com/android-publisher Google Play Android Developer API Reference> for @androidpublisher.monetization.subscriptions.basePlans.offers.batchGet@.
+module Gogol.AndroidPublisher.Monetization.Subscriptions.BasePlans.Offers.BatchGet
+  ( -- * Resource
+    AndroidPublisherMonetizationSubscriptionsBasePlansOffersBatchGetResource,
+
+    -- ** Constructing a Request
+    AndroidPublisherMonetizationSubscriptionsBasePlansOffersBatchGet (..),
+    newAndroidPublisherMonetizationSubscriptionsBasePlansOffersBatchGet,
+  )
+where
+
+import Gogol.AndroidPublisher.Types
+import Gogol.Prelude qualified as Core
+
+-- | A resource alias for @androidpublisher.monetization.subscriptions.basePlans.offers.batchGet@ method which the
+-- 'AndroidPublisherMonetizationSubscriptionsBasePlansOffersBatchGet' request conforms to.
+type AndroidPublisherMonetizationSubscriptionsBasePlansOffersBatchGetResource =
+  "androidpublisher"
+    Core.:> "v3"
+    Core.:> "applications"
+    Core.:> Core.Capture "packageName" Core.Text
+    Core.:> "subscriptions"
+    Core.:> Core.Capture "productId" Core.Text
+    Core.:> "basePlans"
+    Core.:> Core.Capture "basePlanId" Core.Text
+    Core.:> "offers:batchGet"
+    Core.:> Core.QueryParam "$.xgafv" Xgafv
+    Core.:> Core.QueryParam "access_token" Core.Text
+    Core.:> Core.QueryParam "callback" Core.Text
+    Core.:> Core.QueryParam "uploadType" Core.Text
+    Core.:> Core.QueryParam "upload_protocol" Core.Text
+    Core.:> Core.QueryParam "alt" Core.AltJSON
+    Core.:> Core.ReqBody '[Core.JSON] BatchGetSubscriptionOffersRequest
+    Core.:> Core.Post '[Core.JSON] BatchGetSubscriptionOffersResponse
+
+-- | Reads one or more subscription offers.
+--
+-- /See:/ 'newAndroidPublisherMonetizationSubscriptionsBasePlansOffersBatchGet' smart constructor.
+data AndroidPublisherMonetizationSubscriptionsBasePlansOffersBatchGet = AndroidPublisherMonetizationSubscriptionsBasePlansOffersBatchGet
+  { -- | V1 error format.
+    xgafv :: (Core.Maybe Xgafv),
+    -- | OAuth access token.
+    accessToken :: (Core.Maybe Core.Text),
+    -- | Required. The parent base plan (ID) for which the offers should be read. May be specified as \'-\' to read offers from multiple base plans.
+    basePlanId :: Core.Text,
+    -- | JSONP
+    callback :: (Core.Maybe Core.Text),
+    -- | Required. The parent app (package name) for which the subscriptions should be created or updated. Must be equal to the package_name field on all the requests.
+    packageName :: Core.Text,
+    -- | Multipart request metadata.
+    payload :: BatchGetSubscriptionOffersRequest,
+    -- | Required. The product ID of the parent subscription, if all updated offers belong to the same subscription. If this request spans multiple subscriptions, set this field to \"-\". Must be set.
+    productId :: Core.Text,
+    -- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
+    uploadType :: (Core.Maybe Core.Text),
+    -- | Upload protocol for media (e.g. \"raw\", \"multipart\").
+    uploadProtocol :: (Core.Maybe Core.Text)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'AndroidPublisherMonetizationSubscriptionsBasePlansOffersBatchGet' with the minimum fields required to make a request.
+newAndroidPublisherMonetizationSubscriptionsBasePlansOffersBatchGet ::
+  -- |  Required. The parent base plan (ID) for which the offers should be read. May be specified as \'-\' to read offers from multiple base plans. See 'basePlanId'.
+  Core.Text ->
+  -- |  Required. The parent app (package name) for which the subscriptions should be created or updated. Must be equal to the package_name field on all the requests. See 'packageName'.
+  Core.Text ->
+  -- |  Multipart request metadata. See 'payload'.
+  BatchGetSubscriptionOffersRequest ->
+  -- |  Required. The product ID of the parent subscription, if all updated offers belong to the same subscription. If this request spans multiple subscriptions, set this field to \"-\". Must be set. See 'productId'.
+  Core.Text ->
+  AndroidPublisherMonetizationSubscriptionsBasePlansOffersBatchGet
+newAndroidPublisherMonetizationSubscriptionsBasePlansOffersBatchGet
+  basePlanId
+  packageName
+  payload
+  productId =
+    AndroidPublisherMonetizationSubscriptionsBasePlansOffersBatchGet
+      { xgafv =
+          Core.Nothing,
+        accessToken = Core.Nothing,
+        basePlanId = basePlanId,
+        callback = Core.Nothing,
+        packageName = packageName,
+        payload = payload,
+        productId = productId,
+        uploadType = Core.Nothing,
+        uploadProtocol = Core.Nothing
+      }
+
+instance
+  Core.GoogleRequest
+    AndroidPublisherMonetizationSubscriptionsBasePlansOffersBatchGet
+  where
+  type
+    Rs
+      AndroidPublisherMonetizationSubscriptionsBasePlansOffersBatchGet =
+      BatchGetSubscriptionOffersResponse
+  type
+    Scopes
+      AndroidPublisherMonetizationSubscriptionsBasePlansOffersBatchGet =
+      '[Androidpublisher'FullControl]
+  requestClient
+    AndroidPublisherMonetizationSubscriptionsBasePlansOffersBatchGet {..} =
+      go
+        packageName
+        productId
+        basePlanId
+        xgafv
+        accessToken
+        callback
+        uploadType
+        uploadProtocol
+        (Core.Just Core.AltJSON)
+        payload
+        androidPublisherService
+      where
+        go =
+          Core.buildClient
+            ( Core.Proxy ::
+                Core.Proxy
+                  AndroidPublisherMonetizationSubscriptionsBasePlansOffersBatchGetResource
+            )
+            Core.mempty
diff --git a/gen/Gogol/AndroidPublisher/Monetization/Subscriptions/BasePlans/Offers/BatchUpdate.hs b/gen/Gogol/AndroidPublisher/Monetization/Subscriptions/BasePlans/Offers/BatchUpdate.hs
new file mode 100644
--- /dev/null
+++ b/gen/Gogol/AndroidPublisher/Monetization/Subscriptions/BasePlans/Offers/BatchUpdate.hs
@@ -0,0 +1,152 @@
+{-# LANGUAGE DataKinds #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE ImportQualifiedPost #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-name-shadowing #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- |
+-- Module      : Gogol.AndroidPublisher.Monetization.Subscriptions.BasePlans.Offers.BatchUpdate
+-- Copyright   : (c) 2015-2025 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay+gogol@gmail.com>
+--               Toni Cebrián <toni@tonicebrian.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Updates a batch of subscription offers. Set the latencyTolerance field on nested requests to PRODUCT/UPDATE/LATENCY/TOLERANCE/LATENCY_TOLERANT to achieve maximum update throughput.
+--
+-- /See:/ <https://developers.google.com/android-publisher Google Play Android Developer API Reference> for @androidpublisher.monetization.subscriptions.basePlans.offers.batchUpdate@.
+module Gogol.AndroidPublisher.Monetization.Subscriptions.BasePlans.Offers.BatchUpdate
+  ( -- * Resource
+    AndroidPublisherMonetizationSubscriptionsBasePlansOffersBatchUpdateResource,
+
+    -- ** Constructing a Request
+    AndroidPublisherMonetizationSubscriptionsBasePlansOffersBatchUpdate (..),
+    newAndroidPublisherMonetizationSubscriptionsBasePlansOffersBatchUpdate,
+  )
+where
+
+import Gogol.AndroidPublisher.Types
+import Gogol.Prelude qualified as Core
+
+-- | A resource alias for @androidpublisher.monetization.subscriptions.basePlans.offers.batchUpdate@ method which the
+-- 'AndroidPublisherMonetizationSubscriptionsBasePlansOffersBatchUpdate' request conforms to.
+type AndroidPublisherMonetizationSubscriptionsBasePlansOffersBatchUpdateResource =
+  "androidpublisher"
+    Core.:> "v3"
+    Core.:> "applications"
+    Core.:> Core.Capture "packageName" Core.Text
+    Core.:> "subscriptions"
+    Core.:> Core.Capture "productId" Core.Text
+    Core.:> "basePlans"
+    Core.:> Core.Capture "basePlanId" Core.Text
+    Core.:> "offers:batchUpdate"
+    Core.:> Core.QueryParam "$.xgafv" Xgafv
+    Core.:> Core.QueryParam "access_token" Core.Text
+    Core.:> Core.QueryParam "callback" Core.Text
+    Core.:> Core.QueryParam "uploadType" Core.Text
+    Core.:> Core.QueryParam "upload_protocol" Core.Text
+    Core.:> Core.QueryParam "alt" Core.AltJSON
+    Core.:> Core.ReqBody '[Core.JSON] BatchUpdateSubscriptionOffersRequest
+    Core.:> Core.Post '[Core.JSON] BatchUpdateSubscriptionOffersResponse
+
+-- | Updates a batch of subscription offers. Set the latencyTolerance field on nested requests to PRODUCT/UPDATE/LATENCY/TOLERANCE/LATENCY_TOLERANT to achieve maximum update throughput.
+--
+-- /See:/ 'newAndroidPublisherMonetizationSubscriptionsBasePlansOffersBatchUpdate' smart constructor.
+data AndroidPublisherMonetizationSubscriptionsBasePlansOffersBatchUpdate = AndroidPublisherMonetizationSubscriptionsBasePlansOffersBatchUpdate
+  { -- | V1 error format.
+    xgafv :: (Core.Maybe Xgafv),
+    -- | OAuth access token.
+    accessToken :: (Core.Maybe Core.Text),
+    -- | Required. The parent base plan (ID) for which the offers should be updated. May be specified as \'-\' to update offers from multiple base plans.
+    basePlanId :: Core.Text,
+    -- | JSONP
+    callback :: (Core.Maybe Core.Text),
+    -- | Required. The parent app (package name) of the updated subscription offers. Must be equal to the package_name field on all the updated SubscriptionOffer resources.
+    packageName :: Core.Text,
+    -- | Multipart request metadata.
+    payload :: BatchUpdateSubscriptionOffersRequest,
+    -- | Required. The product ID of the parent subscription, if all updated offers belong to the same subscription. If this request spans multiple subscriptions, set this field to \"-\". Must be set.
+    productId :: Core.Text,
+    -- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
+    uploadType :: (Core.Maybe Core.Text),
+    -- | Upload protocol for media (e.g. \"raw\", \"multipart\").
+    uploadProtocol :: (Core.Maybe Core.Text)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'AndroidPublisherMonetizationSubscriptionsBasePlansOffersBatchUpdate' with the minimum fields required to make a request.
+newAndroidPublisherMonetizationSubscriptionsBasePlansOffersBatchUpdate ::
+  -- |  Required. The parent base plan (ID) for which the offers should be updated. May be specified as \'-\' to update offers from multiple base plans. See 'basePlanId'.
+  Core.Text ->
+  -- |  Required. The parent app (package name) of the updated subscription offers. Must be equal to the package_name field on all the updated SubscriptionOffer resources. See 'packageName'.
+  Core.Text ->
+  -- |  Multipart request metadata. See 'payload'.
+  BatchUpdateSubscriptionOffersRequest ->
+  -- |  Required. The product ID of the parent subscription, if all updated offers belong to the same subscription. If this request spans multiple subscriptions, set this field to \"-\". Must be set. See 'productId'.
+  Core.Text ->
+  AndroidPublisherMonetizationSubscriptionsBasePlansOffersBatchUpdate
+newAndroidPublisherMonetizationSubscriptionsBasePlansOffersBatchUpdate
+  basePlanId
+  packageName
+  payload
+  productId =
+    AndroidPublisherMonetizationSubscriptionsBasePlansOffersBatchUpdate
+      { xgafv =
+          Core.Nothing,
+        accessToken = Core.Nothing,
+        basePlanId = basePlanId,
+        callback = Core.Nothing,
+        packageName = packageName,
+        payload = payload,
+        productId = productId,
+        uploadType = Core.Nothing,
+        uploadProtocol =
+          Core.Nothing
+      }
+
+instance
+  Core.GoogleRequest
+    AndroidPublisherMonetizationSubscriptionsBasePlansOffersBatchUpdate
+  where
+  type
+    Rs
+      AndroidPublisherMonetizationSubscriptionsBasePlansOffersBatchUpdate =
+      BatchUpdateSubscriptionOffersResponse
+  type
+    Scopes
+      AndroidPublisherMonetizationSubscriptionsBasePlansOffersBatchUpdate =
+      '[Androidpublisher'FullControl]
+  requestClient
+    AndroidPublisherMonetizationSubscriptionsBasePlansOffersBatchUpdate {..} =
+      go
+        packageName
+        productId
+        basePlanId
+        xgafv
+        accessToken
+        callback
+        uploadType
+        uploadProtocol
+        (Core.Just Core.AltJSON)
+        payload
+        androidPublisherService
+      where
+        go =
+          Core.buildClient
+            ( Core.Proxy ::
+                Core.Proxy
+                  AndroidPublisherMonetizationSubscriptionsBasePlansOffersBatchUpdateResource
+            )
+            Core.mempty
diff --git a/gen/Gogol/AndroidPublisher/Monetization/Subscriptions/BasePlans/Offers/BatchUpdateStates.hs b/gen/Gogol/AndroidPublisher/Monetization/Subscriptions/BasePlans/Offers/BatchUpdateStates.hs
new file mode 100644
--- /dev/null
+++ b/gen/Gogol/AndroidPublisher/Monetization/Subscriptions/BasePlans/Offers/BatchUpdateStates.hs
@@ -0,0 +1,161 @@
+{-# LANGUAGE DataKinds #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE ImportQualifiedPost #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-name-shadowing #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- |
+-- Module      : Gogol.AndroidPublisher.Monetization.Subscriptions.BasePlans.Offers.BatchUpdateStates
+-- Copyright   : (c) 2015-2025 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay+gogol@gmail.com>
+--               Toni Cebrián <toni@tonicebrian.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Updates a batch of subscription offer states. Set the latencyTolerance field on nested requests to PRODUCT/UPDATE/LATENCY/TOLERANCE/LATENCY_TOLERANT to achieve maximum update throughput.
+--
+-- /See:/ <https://developers.google.com/android-publisher Google Play Android Developer API Reference> for @androidpublisher.monetization.subscriptions.basePlans.offers.batchUpdateStates@.
+module Gogol.AndroidPublisher.Monetization.Subscriptions.BasePlans.Offers.BatchUpdateStates
+  ( -- * Resource
+    AndroidPublisherMonetizationSubscriptionsBasePlansOffersBatchUpdateStatesResource,
+
+    -- ** Constructing a Request
+    AndroidPublisherMonetizationSubscriptionsBasePlansOffersBatchUpdateStates (..),
+    newAndroidPublisherMonetizationSubscriptionsBasePlansOffersBatchUpdateStates,
+  )
+where
+
+import Gogol.AndroidPublisher.Types
+import Gogol.Prelude qualified as Core
+
+-- | A resource alias for @androidpublisher.monetization.subscriptions.basePlans.offers.batchUpdateStates@ method which the
+-- 'AndroidPublisherMonetizationSubscriptionsBasePlansOffersBatchUpdateStates' request conforms to.
+type AndroidPublisherMonetizationSubscriptionsBasePlansOffersBatchUpdateStatesResource =
+  "androidpublisher"
+    Core.:> "v3"
+    Core.:> "applications"
+    Core.:> Core.Capture "packageName" Core.Text
+    Core.:> "subscriptions"
+    Core.:> Core.Capture "productId" Core.Text
+    Core.:> "basePlans"
+    Core.:> Core.Capture "basePlanId" Core.Text
+    Core.:> "offers:batchUpdateStates"
+    Core.:> Core.QueryParam "$.xgafv" Xgafv
+    Core.:> Core.QueryParam "access_token" Core.Text
+    Core.:> Core.QueryParam "callback" Core.Text
+    Core.:> Core.QueryParam "uploadType" Core.Text
+    Core.:> Core.QueryParam "upload_protocol" Core.Text
+    Core.:> Core.QueryParam "alt" Core.AltJSON
+    Core.:> Core.ReqBody
+              '[Core.JSON]
+              BatchUpdateSubscriptionOfferStatesRequest
+    Core.:> Core.Post
+              '[Core.JSON]
+              BatchUpdateSubscriptionOfferStatesResponse
+
+-- | Updates a batch of subscription offer states. Set the latencyTolerance field on nested requests to PRODUCT/UPDATE/LATENCY/TOLERANCE/LATENCY_TOLERANT to achieve maximum update throughput.
+--
+-- /See:/ 'newAndroidPublisherMonetizationSubscriptionsBasePlansOffersBatchUpdateStates' smart constructor.
+data AndroidPublisherMonetizationSubscriptionsBasePlansOffersBatchUpdateStates = AndroidPublisherMonetizationSubscriptionsBasePlansOffersBatchUpdateStates
+  { -- | V1 error format.
+    xgafv :: (Core.Maybe Xgafv),
+    -- | OAuth access token.
+    accessToken :: (Core.Maybe Core.Text),
+    -- | Required. The parent base plan (ID) for which the offers should be updated. May be specified as \'-\' to update offers from multiple base plans.
+    basePlanId :: Core.Text,
+    -- | JSONP
+    callback :: (Core.Maybe Core.Text),
+    -- | Required. The parent app (package name) of the updated subscription offers. Must be equal to the package_name field on all the updated SubscriptionOffer resources.
+    packageName :: Core.Text,
+    -- | Multipart request metadata.
+    payload :: BatchUpdateSubscriptionOfferStatesRequest,
+    -- | Required. The product ID of the parent subscription, if all updated offers belong to the same subscription. If this request spans multiple subscriptions, set this field to \"-\". Must be set.
+    productId :: Core.Text,
+    -- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
+    uploadType :: (Core.Maybe Core.Text),
+    -- | Upload protocol for media (e.g. \"raw\", \"multipart\").
+    uploadProtocol :: (Core.Maybe Core.Text)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'AndroidPublisherMonetizationSubscriptionsBasePlansOffersBatchUpdateStates' with the minimum fields required to make a request.
+newAndroidPublisherMonetizationSubscriptionsBasePlansOffersBatchUpdateStates ::
+  -- |  Required. The parent base plan (ID) for which the offers should be updated. May be specified as \'-\' to update offers from multiple base plans. See 'basePlanId'.
+  Core.Text ->
+  -- |  Required. The parent app (package name) of the updated subscription offers. Must be equal to the package_name field on all the updated SubscriptionOffer resources. See 'packageName'.
+  Core.Text ->
+  -- |  Multipart request metadata. See 'payload'.
+  BatchUpdateSubscriptionOfferStatesRequest ->
+  -- |  Required. The product ID of the parent subscription, if all updated offers belong to the same subscription. If this request spans multiple subscriptions, set this field to \"-\". Must be set. See 'productId'.
+  Core.Text ->
+  AndroidPublisherMonetizationSubscriptionsBasePlansOffersBatchUpdateStates
+newAndroidPublisherMonetizationSubscriptionsBasePlansOffersBatchUpdateStates
+  basePlanId
+  packageName
+  payload
+  productId =
+    AndroidPublisherMonetizationSubscriptionsBasePlansOffersBatchUpdateStates
+      { xgafv =
+          Core.Nothing,
+        accessToken =
+          Core.Nothing,
+        basePlanId =
+          basePlanId,
+        callback =
+          Core.Nothing,
+        packageName =
+          packageName,
+        payload = payload,
+        productId = productId,
+        uploadType =
+          Core.Nothing,
+        uploadProtocol =
+          Core.Nothing
+      }
+
+instance
+  Core.GoogleRequest
+    AndroidPublisherMonetizationSubscriptionsBasePlansOffersBatchUpdateStates
+  where
+  type
+    Rs
+      AndroidPublisherMonetizationSubscriptionsBasePlansOffersBatchUpdateStates =
+      BatchUpdateSubscriptionOfferStatesResponse
+  type
+    Scopes
+      AndroidPublisherMonetizationSubscriptionsBasePlansOffersBatchUpdateStates =
+      '[Androidpublisher'FullControl]
+  requestClient
+    AndroidPublisherMonetizationSubscriptionsBasePlansOffersBatchUpdateStates {..} =
+      go
+        packageName
+        productId
+        basePlanId
+        xgafv
+        accessToken
+        callback
+        uploadType
+        uploadProtocol
+        (Core.Just Core.AltJSON)
+        payload
+        androidPublisherService
+      where
+        go =
+          Core.buildClient
+            ( Core.Proxy ::
+                Core.Proxy
+                  AndroidPublisherMonetizationSubscriptionsBasePlansOffersBatchUpdateStatesResource
+            )
+            Core.mempty
diff --git a/gen/Gogol/AndroidPublisher/Monetization/Subscriptions/BasePlans/Offers/Create.hs b/gen/Gogol/AndroidPublisher/Monetization/Subscriptions/BasePlans/Offers/Create.hs
new file mode 100644
--- /dev/null
+++ b/gen/Gogol/AndroidPublisher/Monetization/Subscriptions/BasePlans/Offers/Create.hs
@@ -0,0 +1,162 @@
+{-# LANGUAGE DataKinds #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE ImportQualifiedPost #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-name-shadowing #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- |
+-- Module      : Gogol.AndroidPublisher.Monetization.Subscriptions.BasePlans.Offers.Create
+-- Copyright   : (c) 2015-2025 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay+gogol@gmail.com>
+--               Toni Cebrián <toni@tonicebrian.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Creates a new subscription offer. Only auto-renewing base plans can have subscription offers. The offer state will be DRAFT until it is activated.
+--
+-- /See:/ <https://developers.google.com/android-publisher Google Play Android Developer API Reference> for @androidpublisher.monetization.subscriptions.basePlans.offers.create@.
+module Gogol.AndroidPublisher.Monetization.Subscriptions.BasePlans.Offers.Create
+  ( -- * Resource
+    AndroidPublisherMonetizationSubscriptionsBasePlansOffersCreateResource,
+
+    -- ** Constructing a Request
+    AndroidPublisherMonetizationSubscriptionsBasePlansOffersCreate (..),
+    newAndroidPublisherMonetizationSubscriptionsBasePlansOffersCreate,
+  )
+where
+
+import Gogol.AndroidPublisher.Types
+import Gogol.Prelude qualified as Core
+
+-- | A resource alias for @androidpublisher.monetization.subscriptions.basePlans.offers.create@ method which the
+-- 'AndroidPublisherMonetizationSubscriptionsBasePlansOffersCreate' request conforms to.
+type AndroidPublisherMonetizationSubscriptionsBasePlansOffersCreateResource =
+  "androidpublisher"
+    Core.:> "v3"
+    Core.:> "applications"
+    Core.:> Core.Capture "packageName" Core.Text
+    Core.:> "subscriptions"
+    Core.:> Core.Capture "productId" Core.Text
+    Core.:> "basePlans"
+    Core.:> Core.Capture "basePlanId" Core.Text
+    Core.:> "offers"
+    Core.:> Core.QueryParam "$.xgafv" Xgafv
+    Core.:> Core.QueryParam "access_token" Core.Text
+    Core.:> Core.QueryParam "callback" Core.Text
+    Core.:> Core.QueryParam "offerId" Core.Text
+    Core.:> Core.QueryParam "regionsVersion.version" Core.Text
+    Core.:> Core.QueryParam "uploadType" Core.Text
+    Core.:> Core.QueryParam "upload_protocol" Core.Text
+    Core.:> Core.QueryParam "alt" Core.AltJSON
+    Core.:> Core.ReqBody '[Core.JSON] SubscriptionOffer
+    Core.:> Core.Post '[Core.JSON] SubscriptionOffer
+
+-- | Creates a new subscription offer. Only auto-renewing base plans can have subscription offers. The offer state will be DRAFT until it is activated.
+--
+-- /See:/ 'newAndroidPublisherMonetizationSubscriptionsBasePlansOffersCreate' smart constructor.
+data AndroidPublisherMonetizationSubscriptionsBasePlansOffersCreate = AndroidPublisherMonetizationSubscriptionsBasePlansOffersCreate
+  { -- | V1 error format.
+    xgafv :: (Core.Maybe Xgafv),
+    -- | OAuth access token.
+    accessToken :: (Core.Maybe Core.Text),
+    -- | Required. The parent base plan (ID) for which the offer should be created. Must be equal to the base/plan/id field on the SubscriptionOffer resource.
+    basePlanId :: Core.Text,
+    -- | JSONP
+    callback :: (Core.Maybe Core.Text),
+    -- | Required. The ID to use for the offer. For the requirements on this format, see the documentation of the offer_id field on the SubscriptionOffer resource.
+    offerId :: (Core.Maybe Core.Text),
+    -- | Required. The parent app (package name) for which the offer should be created. Must be equal to the package_name field on the Subscription resource.
+    packageName :: Core.Text,
+    -- | Multipart request metadata.
+    payload :: SubscriptionOffer,
+    -- | Required. The parent subscription (ID) for which the offer should be created. Must be equal to the product_id field on the SubscriptionOffer resource.
+    productId :: Core.Text,
+    -- | Required. A string representing the version of available regions being used for the specified resource. Regional prices for the resource have to be specified according to the information published in <https://support.google.com/googleplay/android-developer/answer/10532353 this article>. Each time the supported locations substantially change, the version will be incremented. Using this field will ensure that creating and updating the resource with an older region\'s version and set of regional prices and currencies will succeed even though a new version is available. The latest version is 2022\/02.
+    regionsVersionVersion :: (Core.Maybe Core.Text),
+    -- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
+    uploadType :: (Core.Maybe Core.Text),
+    -- | Upload protocol for media (e.g. \"raw\", \"multipart\").
+    uploadProtocol :: (Core.Maybe Core.Text)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'AndroidPublisherMonetizationSubscriptionsBasePlansOffersCreate' with the minimum fields required to make a request.
+newAndroidPublisherMonetizationSubscriptionsBasePlansOffersCreate ::
+  -- |  Required. The parent base plan (ID) for which the offer should be created. Must be equal to the base/plan/id field on the SubscriptionOffer resource. See 'basePlanId'.
+  Core.Text ->
+  -- |  Required. The parent app (package name) for which the offer should be created. Must be equal to the package_name field on the Subscription resource. See 'packageName'.
+  Core.Text ->
+  -- |  Multipart request metadata. See 'payload'.
+  SubscriptionOffer ->
+  -- |  Required. The parent subscription (ID) for which the offer should be created. Must be equal to the product_id field on the SubscriptionOffer resource. See 'productId'.
+  Core.Text ->
+  AndroidPublisherMonetizationSubscriptionsBasePlansOffersCreate
+newAndroidPublisherMonetizationSubscriptionsBasePlansOffersCreate
+  basePlanId
+  packageName
+  payload
+  productId =
+    AndroidPublisherMonetizationSubscriptionsBasePlansOffersCreate
+      { xgafv =
+          Core.Nothing,
+        accessToken = Core.Nothing,
+        basePlanId = basePlanId,
+        callback = Core.Nothing,
+        offerId = Core.Nothing,
+        packageName = packageName,
+        payload = payload,
+        productId = productId,
+        regionsVersionVersion =
+          Core.Nothing,
+        uploadType = Core.Nothing,
+        uploadProtocol = Core.Nothing
+      }
+
+instance
+  Core.GoogleRequest
+    AndroidPublisherMonetizationSubscriptionsBasePlansOffersCreate
+  where
+  type
+    Rs
+      AndroidPublisherMonetizationSubscriptionsBasePlansOffersCreate =
+      SubscriptionOffer
+  type
+    Scopes
+      AndroidPublisherMonetizationSubscriptionsBasePlansOffersCreate =
+      '[Androidpublisher'FullControl]
+  requestClient
+    AndroidPublisherMonetizationSubscriptionsBasePlansOffersCreate {..} =
+      go
+        packageName
+        productId
+        basePlanId
+        xgafv
+        accessToken
+        callback
+        offerId
+        regionsVersionVersion
+        uploadType
+        uploadProtocol
+        (Core.Just Core.AltJSON)
+        payload
+        androidPublisherService
+      where
+        go =
+          Core.buildClient
+            ( Core.Proxy ::
+                Core.Proxy
+                  AndroidPublisherMonetizationSubscriptionsBasePlansOffersCreateResource
+            )
+            Core.mempty
diff --git a/gen/Gogol/AndroidPublisher/Monetization/Subscriptions/BasePlans/Offers/Deactivate.hs b/gen/Gogol/AndroidPublisher/Monetization/Subscriptions/BasePlans/Offers/Deactivate.hs
new file mode 100644
--- /dev/null
+++ b/gen/Gogol/AndroidPublisher/Monetization/Subscriptions/BasePlans/Offers/Deactivate.hs
@@ -0,0 +1,160 @@
+{-# LANGUAGE DataKinds #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE ImportQualifiedPost #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-name-shadowing #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- |
+-- Module      : Gogol.AndroidPublisher.Monetization.Subscriptions.BasePlans.Offers.Deactivate
+-- Copyright   : (c) 2015-2025 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay+gogol@gmail.com>
+--               Toni Cebrián <toni@tonicebrian.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Deactivates a subscription offer. Once deactivated, existing subscribers will maintain their subscription, but the offer will become unavailable to new subscribers.
+--
+-- /See:/ <https://developers.google.com/android-publisher Google Play Android Developer API Reference> for @androidpublisher.monetization.subscriptions.basePlans.offers.deactivate@.
+module Gogol.AndroidPublisher.Monetization.Subscriptions.BasePlans.Offers.Deactivate
+  ( -- * Resource
+    AndroidPublisherMonetizationSubscriptionsBasePlansOffersDeactivateResource,
+
+    -- ** Constructing a Request
+    AndroidPublisherMonetizationSubscriptionsBasePlansOffersDeactivate (..),
+    newAndroidPublisherMonetizationSubscriptionsBasePlansOffersDeactivate,
+  )
+where
+
+import Gogol.AndroidPublisher.Types
+import Gogol.Prelude qualified as Core
+
+-- | A resource alias for @androidpublisher.monetization.subscriptions.basePlans.offers.deactivate@ method which the
+-- 'AndroidPublisherMonetizationSubscriptionsBasePlansOffersDeactivate' request conforms to.
+type AndroidPublisherMonetizationSubscriptionsBasePlansOffersDeactivateResource =
+  "androidpublisher"
+    Core.:> "v3"
+    Core.:> "applications"
+    Core.:> Core.Capture "packageName" Core.Text
+    Core.:> "subscriptions"
+    Core.:> Core.Capture "productId" Core.Text
+    Core.:> "basePlans"
+    Core.:> Core.Capture "basePlanId" Core.Text
+    Core.:> "offers"
+    Core.:> Core.CaptureMode "offerId" "deactivate" Core.Text
+    Core.:> Core.QueryParam "$.xgafv" Xgafv
+    Core.:> Core.QueryParam "access_token" Core.Text
+    Core.:> Core.QueryParam "callback" Core.Text
+    Core.:> Core.QueryParam "uploadType" Core.Text
+    Core.:> Core.QueryParam "upload_protocol" Core.Text
+    Core.:> Core.QueryParam "alt" Core.AltJSON
+    Core.:> Core.ReqBody '[Core.JSON] DeactivateSubscriptionOfferRequest
+    Core.:> Core.Post '[Core.JSON] SubscriptionOffer
+
+-- | Deactivates a subscription offer. Once deactivated, existing subscribers will maintain their subscription, but the offer will become unavailable to new subscribers.
+--
+-- /See:/ 'newAndroidPublisherMonetizationSubscriptionsBasePlansOffersDeactivate' smart constructor.
+data AndroidPublisherMonetizationSubscriptionsBasePlansOffersDeactivate = AndroidPublisherMonetizationSubscriptionsBasePlansOffersDeactivate
+  { -- | V1 error format.
+    xgafv :: (Core.Maybe Xgafv),
+    -- | OAuth access token.
+    accessToken :: (Core.Maybe Core.Text),
+    -- | Required. The parent base plan (ID) of the offer to deactivate.
+    basePlanId :: Core.Text,
+    -- | JSONP
+    callback :: (Core.Maybe Core.Text),
+    -- | Required. The unique offer ID of the offer to deactivate.
+    offerId :: Core.Text,
+    -- | Required. The parent app (package name) of the offer to deactivate.
+    packageName :: Core.Text,
+    -- | Multipart request metadata.
+    payload :: DeactivateSubscriptionOfferRequest,
+    -- | Required. The parent subscription (ID) of the offer to deactivate.
+    productId :: Core.Text,
+    -- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
+    uploadType :: (Core.Maybe Core.Text),
+    -- | Upload protocol for media (e.g. \"raw\", \"multipart\").
+    uploadProtocol :: (Core.Maybe Core.Text)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'AndroidPublisherMonetizationSubscriptionsBasePlansOffersDeactivate' with the minimum fields required to make a request.
+newAndroidPublisherMonetizationSubscriptionsBasePlansOffersDeactivate ::
+  -- |  Required. The parent base plan (ID) of the offer to deactivate. See 'basePlanId'.
+  Core.Text ->
+  -- |  Required. The unique offer ID of the offer to deactivate. See 'offerId'.
+  Core.Text ->
+  -- |  Required. The parent app (package name) of the offer to deactivate. See 'packageName'.
+  Core.Text ->
+  -- |  Multipart request metadata. See 'payload'.
+  DeactivateSubscriptionOfferRequest ->
+  -- |  Required. The parent subscription (ID) of the offer to deactivate. See 'productId'.
+  Core.Text ->
+  AndroidPublisherMonetizationSubscriptionsBasePlansOffersDeactivate
+newAndroidPublisherMonetizationSubscriptionsBasePlansOffersDeactivate
+  basePlanId
+  offerId
+  packageName
+  payload
+  productId =
+    AndroidPublisherMonetizationSubscriptionsBasePlansOffersDeactivate
+      { xgafv =
+          Core.Nothing,
+        accessToken = Core.Nothing,
+        basePlanId = basePlanId,
+        callback = Core.Nothing,
+        offerId = offerId,
+        packageName = packageName,
+        payload = payload,
+        productId = productId,
+        uploadType = Core.Nothing,
+        uploadProtocol =
+          Core.Nothing
+      }
+
+instance
+  Core.GoogleRequest
+    AndroidPublisherMonetizationSubscriptionsBasePlansOffersDeactivate
+  where
+  type
+    Rs
+      AndroidPublisherMonetizationSubscriptionsBasePlansOffersDeactivate =
+      SubscriptionOffer
+  type
+    Scopes
+      AndroidPublisherMonetizationSubscriptionsBasePlansOffersDeactivate =
+      '[Androidpublisher'FullControl]
+  requestClient
+    AndroidPublisherMonetizationSubscriptionsBasePlansOffersDeactivate {..} =
+      go
+        packageName
+        productId
+        basePlanId
+        offerId
+        xgafv
+        accessToken
+        callback
+        uploadType
+        uploadProtocol
+        (Core.Just Core.AltJSON)
+        payload
+        androidPublisherService
+      where
+        go =
+          Core.buildClient
+            ( Core.Proxy ::
+                Core.Proxy
+                  AndroidPublisherMonetizationSubscriptionsBasePlansOffersDeactivateResource
+            )
+            Core.mempty
diff --git a/gen/Gogol/AndroidPublisher/Monetization/Subscriptions/BasePlans/Offers/Delete.hs b/gen/Gogol/AndroidPublisher/Monetization/Subscriptions/BasePlans/Offers/Delete.hs
new file mode 100644
--- /dev/null
+++ b/gen/Gogol/AndroidPublisher/Monetization/Subscriptions/BasePlans/Offers/Delete.hs
@@ -0,0 +1,151 @@
+{-# LANGUAGE DataKinds #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE ImportQualifiedPost #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-name-shadowing #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- |
+-- Module      : Gogol.AndroidPublisher.Monetization.Subscriptions.BasePlans.Offers.Delete
+-- Copyright   : (c) 2015-2025 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay+gogol@gmail.com>
+--               Toni Cebrián <toni@tonicebrian.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Deletes a subscription offer. Can only be done for draft offers. This action is irreversible.
+--
+-- /See:/ <https://developers.google.com/android-publisher Google Play Android Developer API Reference> for @androidpublisher.monetization.subscriptions.basePlans.offers.delete@.
+module Gogol.AndroidPublisher.Monetization.Subscriptions.BasePlans.Offers.Delete
+  ( -- * Resource
+    AndroidPublisherMonetizationSubscriptionsBasePlansOffersDeleteResource,
+
+    -- ** Constructing a Request
+    AndroidPublisherMonetizationSubscriptionsBasePlansOffersDelete (..),
+    newAndroidPublisherMonetizationSubscriptionsBasePlansOffersDelete,
+  )
+where
+
+import Gogol.AndroidPublisher.Types
+import Gogol.Prelude qualified as Core
+
+-- | A resource alias for @androidpublisher.monetization.subscriptions.basePlans.offers.delete@ method which the
+-- 'AndroidPublisherMonetizationSubscriptionsBasePlansOffersDelete' request conforms to.
+type AndroidPublisherMonetizationSubscriptionsBasePlansOffersDeleteResource =
+  "androidpublisher"
+    Core.:> "v3"
+    Core.:> "applications"
+    Core.:> Core.Capture "packageName" Core.Text
+    Core.:> "subscriptions"
+    Core.:> Core.Capture "productId" Core.Text
+    Core.:> "basePlans"
+    Core.:> Core.Capture "basePlanId" Core.Text
+    Core.:> "offers"
+    Core.:> Core.Capture "offerId" Core.Text
+    Core.:> Core.QueryParam "$.xgafv" Xgafv
+    Core.:> Core.QueryParam "access_token" Core.Text
+    Core.:> Core.QueryParam "callback" Core.Text
+    Core.:> Core.QueryParam "uploadType" Core.Text
+    Core.:> Core.QueryParam "upload_protocol" Core.Text
+    Core.:> Core.QueryParam "alt" Core.AltJSON
+    Core.:> Core.Delete '[Core.JSON] ()
+
+-- | Deletes a subscription offer. Can only be done for draft offers. This action is irreversible.
+--
+-- /See:/ 'newAndroidPublisherMonetizationSubscriptionsBasePlansOffersDelete' smart constructor.
+data AndroidPublisherMonetizationSubscriptionsBasePlansOffersDelete = AndroidPublisherMonetizationSubscriptionsBasePlansOffersDelete
+  { -- | V1 error format.
+    xgafv :: (Core.Maybe Xgafv),
+    -- | OAuth access token.
+    accessToken :: (Core.Maybe Core.Text),
+    -- | Required. The parent base plan (ID) of the offer to delete.
+    basePlanId :: Core.Text,
+    -- | JSONP
+    callback :: (Core.Maybe Core.Text),
+    -- | Required. The unique offer ID of the offer to delete.
+    offerId :: Core.Text,
+    -- | Required. The parent app (package name) of the offer to delete.
+    packageName :: Core.Text,
+    -- | Required. The parent subscription (ID) of the offer to delete.
+    productId :: Core.Text,
+    -- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
+    uploadType :: (Core.Maybe Core.Text),
+    -- | Upload protocol for media (e.g. \"raw\", \"multipart\").
+    uploadProtocol :: (Core.Maybe Core.Text)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'AndroidPublisherMonetizationSubscriptionsBasePlansOffersDelete' with the minimum fields required to make a request.
+newAndroidPublisherMonetizationSubscriptionsBasePlansOffersDelete ::
+  -- |  Required. The parent base plan (ID) of the offer to delete. See 'basePlanId'.
+  Core.Text ->
+  -- |  Required. The unique offer ID of the offer to delete. See 'offerId'.
+  Core.Text ->
+  -- |  Required. The parent app (package name) of the offer to delete. See 'packageName'.
+  Core.Text ->
+  -- |  Required. The parent subscription (ID) of the offer to delete. See 'productId'.
+  Core.Text ->
+  AndroidPublisherMonetizationSubscriptionsBasePlansOffersDelete
+newAndroidPublisherMonetizationSubscriptionsBasePlansOffersDelete
+  basePlanId
+  offerId
+  packageName
+  productId =
+    AndroidPublisherMonetizationSubscriptionsBasePlansOffersDelete
+      { xgafv =
+          Core.Nothing,
+        accessToken = Core.Nothing,
+        basePlanId = basePlanId,
+        callback = Core.Nothing,
+        offerId = offerId,
+        packageName = packageName,
+        productId = productId,
+        uploadType = Core.Nothing,
+        uploadProtocol = Core.Nothing
+      }
+
+instance
+  Core.GoogleRequest
+    AndroidPublisherMonetizationSubscriptionsBasePlansOffersDelete
+  where
+  type
+    Rs
+      AndroidPublisherMonetizationSubscriptionsBasePlansOffersDelete =
+      ()
+  type
+    Scopes
+      AndroidPublisherMonetizationSubscriptionsBasePlansOffersDelete =
+      '[Androidpublisher'FullControl]
+  requestClient
+    AndroidPublisherMonetizationSubscriptionsBasePlansOffersDelete {..} =
+      go
+        packageName
+        productId
+        basePlanId
+        offerId
+        xgafv
+        accessToken
+        callback
+        uploadType
+        uploadProtocol
+        (Core.Just Core.AltJSON)
+        androidPublisherService
+      where
+        go =
+          Core.buildClient
+            ( Core.Proxy ::
+                Core.Proxy
+                  AndroidPublisherMonetizationSubscriptionsBasePlansOffersDeleteResource
+            )
+            Core.mempty
diff --git a/gen/Gogol/AndroidPublisher/Monetization/Subscriptions/BasePlans/Offers/Get.hs b/gen/Gogol/AndroidPublisher/Monetization/Subscriptions/BasePlans/Offers/Get.hs
new file mode 100644
--- /dev/null
+++ b/gen/Gogol/AndroidPublisher/Monetization/Subscriptions/BasePlans/Offers/Get.hs
@@ -0,0 +1,150 @@
+{-# LANGUAGE DataKinds #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE ImportQualifiedPost #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-name-shadowing #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- |
+-- Module      : Gogol.AndroidPublisher.Monetization.Subscriptions.BasePlans.Offers.Get
+-- Copyright   : (c) 2015-2025 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay+gogol@gmail.com>
+--               Toni Cebrián <toni@tonicebrian.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Reads a single offer
+--
+-- /See:/ <https://developers.google.com/android-publisher Google Play Android Developer API Reference> for @androidpublisher.monetization.subscriptions.basePlans.offers.get@.
+module Gogol.AndroidPublisher.Monetization.Subscriptions.BasePlans.Offers.Get
+  ( -- * Resource
+    AndroidPublisherMonetizationSubscriptionsBasePlansOffersGetResource,
+
+    -- ** Constructing a Request
+    AndroidPublisherMonetizationSubscriptionsBasePlansOffersGet (..),
+    newAndroidPublisherMonetizationSubscriptionsBasePlansOffersGet,
+  )
+where
+
+import Gogol.AndroidPublisher.Types
+import Gogol.Prelude qualified as Core
+
+-- | A resource alias for @androidpublisher.monetization.subscriptions.basePlans.offers.get@ method which the
+-- 'AndroidPublisherMonetizationSubscriptionsBasePlansOffersGet' request conforms to.
+type AndroidPublisherMonetizationSubscriptionsBasePlansOffersGetResource =
+  "androidpublisher"
+    Core.:> "v3"
+    Core.:> "applications"
+    Core.:> Core.Capture "packageName" Core.Text
+    Core.:> "subscriptions"
+    Core.:> Core.Capture "productId" Core.Text
+    Core.:> "basePlans"
+    Core.:> Core.Capture "basePlanId" Core.Text
+    Core.:> "offers"
+    Core.:> Core.Capture "offerId" Core.Text
+    Core.:> Core.QueryParam "$.xgafv" Xgafv
+    Core.:> Core.QueryParam "access_token" Core.Text
+    Core.:> Core.QueryParam "callback" Core.Text
+    Core.:> Core.QueryParam "uploadType" Core.Text
+    Core.:> Core.QueryParam "upload_protocol" Core.Text
+    Core.:> Core.QueryParam "alt" Core.AltJSON
+    Core.:> Core.Get '[Core.JSON] SubscriptionOffer
+
+-- | Reads a single offer
+--
+-- /See:/ 'newAndroidPublisherMonetizationSubscriptionsBasePlansOffersGet' smart constructor.
+data AndroidPublisherMonetizationSubscriptionsBasePlansOffersGet = AndroidPublisherMonetizationSubscriptionsBasePlansOffersGet
+  { -- | V1 error format.
+    xgafv :: (Core.Maybe Xgafv),
+    -- | OAuth access token.
+    accessToken :: (Core.Maybe Core.Text),
+    -- | Required. The parent base plan (ID) of the offer to get.
+    basePlanId :: Core.Text,
+    -- | JSONP
+    callback :: (Core.Maybe Core.Text),
+    -- | Required. The unique offer ID of the offer to get.
+    offerId :: Core.Text,
+    -- | Required. The parent app (package name) of the offer to get.
+    packageName :: Core.Text,
+    -- | Required. The parent subscription (ID) of the offer to get.
+    productId :: Core.Text,
+    -- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
+    uploadType :: (Core.Maybe Core.Text),
+    -- | Upload protocol for media (e.g. \"raw\", \"multipart\").
+    uploadProtocol :: (Core.Maybe Core.Text)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'AndroidPublisherMonetizationSubscriptionsBasePlansOffersGet' with the minimum fields required to make a request.
+newAndroidPublisherMonetizationSubscriptionsBasePlansOffersGet ::
+  -- |  Required. The parent base plan (ID) of the offer to get. See 'basePlanId'.
+  Core.Text ->
+  -- |  Required. The unique offer ID of the offer to get. See 'offerId'.
+  Core.Text ->
+  -- |  Required. The parent app (package name) of the offer to get. See 'packageName'.
+  Core.Text ->
+  -- |  Required. The parent subscription (ID) of the offer to get. See 'productId'.
+  Core.Text ->
+  AndroidPublisherMonetizationSubscriptionsBasePlansOffersGet
+newAndroidPublisherMonetizationSubscriptionsBasePlansOffersGet
+  basePlanId
+  offerId
+  packageName
+  productId =
+    AndroidPublisherMonetizationSubscriptionsBasePlansOffersGet
+      { xgafv =
+          Core.Nothing,
+        accessToken = Core.Nothing,
+        basePlanId = basePlanId,
+        callback = Core.Nothing,
+        offerId = offerId,
+        packageName = packageName,
+        productId = productId,
+        uploadType = Core.Nothing,
+        uploadProtocol = Core.Nothing
+      }
+
+instance
+  Core.GoogleRequest
+    AndroidPublisherMonetizationSubscriptionsBasePlansOffersGet
+  where
+  type
+    Rs AndroidPublisherMonetizationSubscriptionsBasePlansOffersGet =
+      SubscriptionOffer
+  type
+    Scopes
+      AndroidPublisherMonetizationSubscriptionsBasePlansOffersGet =
+      '[Androidpublisher'FullControl]
+  requestClient
+    AndroidPublisherMonetizationSubscriptionsBasePlansOffersGet {..} =
+      go
+        packageName
+        productId
+        basePlanId
+        offerId
+        xgafv
+        accessToken
+        callback
+        uploadType
+        uploadProtocol
+        (Core.Just Core.AltJSON)
+        androidPublisherService
+      where
+        go =
+          Core.buildClient
+            ( Core.Proxy ::
+                Core.Proxy
+                  AndroidPublisherMonetizationSubscriptionsBasePlansOffersGetResource
+            )
+            Core.mempty
diff --git a/gen/Gogol/AndroidPublisher/Monetization/Subscriptions/BasePlans/Offers/List.hs b/gen/Gogol/AndroidPublisher/Monetization/Subscriptions/BasePlans/Offers/List.hs
new file mode 100644
--- /dev/null
+++ b/gen/Gogol/AndroidPublisher/Monetization/Subscriptions/BasePlans/Offers/List.hs
@@ -0,0 +1,153 @@
+{-# LANGUAGE DataKinds #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE ImportQualifiedPost #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-name-shadowing #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- |
+-- Module      : Gogol.AndroidPublisher.Monetization.Subscriptions.BasePlans.Offers.List
+-- Copyright   : (c) 2015-2025 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay+gogol@gmail.com>
+--               Toni Cebrián <toni@tonicebrian.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Lists all offers under a given subscription.
+--
+-- /See:/ <https://developers.google.com/android-publisher Google Play Android Developer API Reference> for @androidpublisher.monetization.subscriptions.basePlans.offers.list@.
+module Gogol.AndroidPublisher.Monetization.Subscriptions.BasePlans.Offers.List
+  ( -- * Resource
+    AndroidPublisherMonetizationSubscriptionsBasePlansOffersListResource,
+
+    -- ** Constructing a Request
+    AndroidPublisherMonetizationSubscriptionsBasePlansOffersList (..),
+    newAndroidPublisherMonetizationSubscriptionsBasePlansOffersList,
+  )
+where
+
+import Gogol.AndroidPublisher.Types
+import Gogol.Prelude qualified as Core
+
+-- | A resource alias for @androidpublisher.monetization.subscriptions.basePlans.offers.list@ method which the
+-- 'AndroidPublisherMonetizationSubscriptionsBasePlansOffersList' request conforms to.
+type AndroidPublisherMonetizationSubscriptionsBasePlansOffersListResource =
+  "androidpublisher"
+    Core.:> "v3"
+    Core.:> "applications"
+    Core.:> Core.Capture "packageName" Core.Text
+    Core.:> "subscriptions"
+    Core.:> Core.Capture "productId" Core.Text
+    Core.:> "basePlans"
+    Core.:> Core.Capture "basePlanId" Core.Text
+    Core.:> "offers"
+    Core.:> Core.QueryParam "$.xgafv" Xgafv
+    Core.:> Core.QueryParam "access_token" Core.Text
+    Core.:> Core.QueryParam "callback" Core.Text
+    Core.:> Core.QueryParam "pageSize" Core.Int32
+    Core.:> Core.QueryParam "pageToken" Core.Text
+    Core.:> Core.QueryParam "uploadType" Core.Text
+    Core.:> Core.QueryParam "upload_protocol" Core.Text
+    Core.:> Core.QueryParam "alt" Core.AltJSON
+    Core.:> Core.Get '[Core.JSON] ListSubscriptionOffersResponse
+
+-- | Lists all offers under a given subscription.
+--
+-- /See:/ 'newAndroidPublisherMonetizationSubscriptionsBasePlansOffersList' smart constructor.
+data AndroidPublisherMonetizationSubscriptionsBasePlansOffersList = AndroidPublisherMonetizationSubscriptionsBasePlansOffersList
+  { -- | V1 error format.
+    xgafv :: (Core.Maybe Xgafv),
+    -- | OAuth access token.
+    accessToken :: (Core.Maybe Core.Text),
+    -- | Required. The parent base plan (ID) for which the offers should be read. May be specified as \'-\' to read all offers under a subscription or an app. Must be specified as \'-\' if product_id is specified as \'-\'.
+    basePlanId :: Core.Text,
+    -- | JSONP
+    callback :: (Core.Maybe Core.Text),
+    -- | Required. The parent app (package name) for which the subscriptions should be read.
+    packageName :: Core.Text,
+    -- | The maximum number of subscriptions to return. The service may return fewer than this value. If unspecified, at most 50 subscriptions will be returned. The maximum value is 1000; values above 1000 will be coerced to 1000.
+    pageSize :: (Core.Maybe Core.Int32),
+    -- | A page token, received from a previous @ListSubscriptionsOffers@ call. Provide this to retrieve the subsequent page. When paginating, all other parameters provided to @ListSubscriptionOffers@ must match the call that provided the page token.
+    pageToken :: (Core.Maybe Core.Text),
+    -- | Required. The parent subscription (ID) for which the offers should be read. May be specified as \'-\' to read all offers under an app.
+    productId :: Core.Text,
+    -- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
+    uploadType :: (Core.Maybe Core.Text),
+    -- | Upload protocol for media (e.g. \"raw\", \"multipart\").
+    uploadProtocol :: (Core.Maybe Core.Text)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'AndroidPublisherMonetizationSubscriptionsBasePlansOffersList' with the minimum fields required to make a request.
+newAndroidPublisherMonetizationSubscriptionsBasePlansOffersList ::
+  -- |  Required. The parent base plan (ID) for which the offers should be read. May be specified as \'-\' to read all offers under a subscription or an app. Must be specified as \'-\' if product_id is specified as \'-\'. See 'basePlanId'.
+  Core.Text ->
+  -- |  Required. The parent app (package name) for which the subscriptions should be read. See 'packageName'.
+  Core.Text ->
+  -- |  Required. The parent subscription (ID) for which the offers should be read. May be specified as \'-\' to read all offers under an app. See 'productId'.
+  Core.Text ->
+  AndroidPublisherMonetizationSubscriptionsBasePlansOffersList
+newAndroidPublisherMonetizationSubscriptionsBasePlansOffersList
+  basePlanId
+  packageName
+  productId =
+    AndroidPublisherMonetizationSubscriptionsBasePlansOffersList
+      { xgafv =
+          Core.Nothing,
+        accessToken = Core.Nothing,
+        basePlanId = basePlanId,
+        callback = Core.Nothing,
+        packageName = packageName,
+        pageSize = Core.Nothing,
+        pageToken = Core.Nothing,
+        productId = productId,
+        uploadType = Core.Nothing,
+        uploadProtocol = Core.Nothing
+      }
+
+instance
+  Core.GoogleRequest
+    AndroidPublisherMonetizationSubscriptionsBasePlansOffersList
+  where
+  type
+    Rs
+      AndroidPublisherMonetizationSubscriptionsBasePlansOffersList =
+      ListSubscriptionOffersResponse
+  type
+    Scopes
+      AndroidPublisherMonetizationSubscriptionsBasePlansOffersList =
+      '[Androidpublisher'FullControl]
+  requestClient
+    AndroidPublisherMonetizationSubscriptionsBasePlansOffersList {..} =
+      go
+        packageName
+        productId
+        basePlanId
+        xgafv
+        accessToken
+        callback
+        pageSize
+        pageToken
+        uploadType
+        uploadProtocol
+        (Core.Just Core.AltJSON)
+        androidPublisherService
+      where
+        go =
+          Core.buildClient
+            ( Core.Proxy ::
+                Core.Proxy
+                  AndroidPublisherMonetizationSubscriptionsBasePlansOffersListResource
+            )
+            Core.mempty
diff --git a/gen/Gogol/AndroidPublisher/Monetization/Subscriptions/BasePlans/Offers/Patch.hs b/gen/Gogol/AndroidPublisher/Monetization/Subscriptions/BasePlans/Offers/Patch.hs
new file mode 100644
--- /dev/null
+++ b/gen/Gogol/AndroidPublisher/Monetization/Subscriptions/BasePlans/Offers/Patch.hs
@@ -0,0 +1,185 @@
+{-# LANGUAGE DataKinds #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE ImportQualifiedPost #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-name-shadowing #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- |
+-- Module      : Gogol.AndroidPublisher.Monetization.Subscriptions.BasePlans.Offers.Patch
+-- Copyright   : (c) 2015-2025 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay+gogol@gmail.com>
+--               Toni Cebrián <toni@tonicebrian.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Updates an existing subscription offer.
+--
+-- /See:/ <https://developers.google.com/android-publisher Google Play Android Developer API Reference> for @androidpublisher.monetization.subscriptions.basePlans.offers.patch@.
+module Gogol.AndroidPublisher.Monetization.Subscriptions.BasePlans.Offers.Patch
+  ( -- * Resource
+    AndroidPublisherMonetizationSubscriptionsBasePlansOffersPatchResource,
+
+    -- ** Constructing a Request
+    AndroidPublisherMonetizationSubscriptionsBasePlansOffersPatch (..),
+    newAndroidPublisherMonetizationSubscriptionsBasePlansOffersPatch,
+  )
+where
+
+import Gogol.AndroidPublisher.Types
+import Gogol.Prelude qualified as Core
+
+-- | A resource alias for @androidpublisher.monetization.subscriptions.basePlans.offers.patch@ method which the
+-- 'AndroidPublisherMonetizationSubscriptionsBasePlansOffersPatch' request conforms to.
+type AndroidPublisherMonetizationSubscriptionsBasePlansOffersPatchResource =
+  "androidpublisher"
+    Core.:> "v3"
+    Core.:> "applications"
+    Core.:> Core.Capture "packageName" Core.Text
+    Core.:> "subscriptions"
+    Core.:> Core.Capture "productId" Core.Text
+    Core.:> "basePlans"
+    Core.:> Core.Capture "basePlanId" Core.Text
+    Core.:> "offers"
+    Core.:> Core.Capture "offerId" Core.Text
+    Core.:> Core.QueryParam "$.xgafv" Xgafv
+    Core.:> Core.QueryParam "access_token" Core.Text
+    Core.:> Core.QueryParam "allowMissing" Core.Bool
+    Core.:> Core.QueryParam "callback" Core.Text
+    Core.:> Core.QueryParam
+              "latencyTolerance"
+              MonetizationSubscriptionsBasePlansOffersPatchLatencyTolerance
+    Core.:> Core.QueryParam "regionsVersion.version" Core.Text
+    Core.:> Core.QueryParam "updateMask" Core.FieldMask
+    Core.:> Core.QueryParam "uploadType" Core.Text
+    Core.:> Core.QueryParam "upload_protocol" Core.Text
+    Core.:> Core.QueryParam "alt" Core.AltJSON
+    Core.:> Core.ReqBody '[Core.JSON] SubscriptionOffer
+    Core.:> Core.Patch '[Core.JSON] SubscriptionOffer
+
+-- | Updates an existing subscription offer.
+--
+-- /See:/ 'newAndroidPublisherMonetizationSubscriptionsBasePlansOffersPatch' smart constructor.
+data AndroidPublisherMonetizationSubscriptionsBasePlansOffersPatch = AndroidPublisherMonetizationSubscriptionsBasePlansOffersPatch
+  { -- | V1 error format.
+    xgafv :: (Core.Maybe Xgafv),
+    -- | OAuth access token.
+    accessToken :: (Core.Maybe Core.Text),
+    -- | Optional. If set to true, and the subscription offer with the given package/name, product/id, base/plan/id and offer/id doesn\'t exist, an offer will be created. If a new offer is created, update/mask is ignored.
+    allowMissing :: (Core.Maybe Core.Bool),
+    -- | Required. Immutable. The ID of the base plan to which this offer is an extension.
+    basePlanId :: Core.Text,
+    -- | JSONP
+    callback :: (Core.Maybe Core.Text),
+    -- | Optional. The latency tolerance for the propagation of this product update. Defaults to latency-sensitive.
+    latencyTolerance ::
+      ( Core.Maybe
+          MonetizationSubscriptionsBasePlansOffersPatchLatencyTolerance
+      ),
+    -- | Required. Immutable. Unique ID of this subscription offer. Must be unique within the base plan.
+    offerId :: Core.Text,
+    -- | Required. Immutable. The package name of the app the parent subscription belongs to.
+    packageName :: Core.Text,
+    -- | Multipart request metadata.
+    payload :: SubscriptionOffer,
+    -- | Required. Immutable. The ID of the parent subscription this offer belongs to.
+    productId :: Core.Text,
+    -- | Required. A string representing the version of available regions being used for the specified resource. Regional prices for the resource have to be specified according to the information published in <https://support.google.com/googleplay/android-developer/answer/10532353 this article>. Each time the supported locations substantially change, the version will be incremented. Using this field will ensure that creating and updating the resource with an older region\'s version and set of regional prices and currencies will succeed even though a new version is available. The latest version is 2022\/02.
+    regionsVersionVersion :: (Core.Maybe Core.Text),
+    -- | Required. The list of fields to be updated.
+    updateMask :: (Core.Maybe Core.FieldMask),
+    -- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
+    uploadType :: (Core.Maybe Core.Text),
+    -- | Upload protocol for media (e.g. \"raw\", \"multipart\").
+    uploadProtocol :: (Core.Maybe Core.Text)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'AndroidPublisherMonetizationSubscriptionsBasePlansOffersPatch' with the minimum fields required to make a request.
+newAndroidPublisherMonetizationSubscriptionsBasePlansOffersPatch ::
+  -- |  Required. Immutable. The ID of the base plan to which this offer is an extension. See 'basePlanId'.
+  Core.Text ->
+  -- |  Required. Immutable. Unique ID of this subscription offer. Must be unique within the base plan. See 'offerId'.
+  Core.Text ->
+  -- |  Required. Immutable. The package name of the app the parent subscription belongs to. See 'packageName'.
+  Core.Text ->
+  -- |  Multipart request metadata. See 'payload'.
+  SubscriptionOffer ->
+  -- |  Required. Immutable. The ID of the parent subscription this offer belongs to. See 'productId'.
+  Core.Text ->
+  AndroidPublisherMonetizationSubscriptionsBasePlansOffersPatch
+newAndroidPublisherMonetizationSubscriptionsBasePlansOffersPatch
+  basePlanId
+  offerId
+  packageName
+  payload
+  productId =
+    AndroidPublisherMonetizationSubscriptionsBasePlansOffersPatch
+      { xgafv =
+          Core.Nothing,
+        accessToken = Core.Nothing,
+        allowMissing = Core.Nothing,
+        basePlanId = basePlanId,
+        callback = Core.Nothing,
+        latencyTolerance = Core.Nothing,
+        offerId = offerId,
+        packageName = packageName,
+        payload = payload,
+        productId = productId,
+        regionsVersionVersion =
+          Core.Nothing,
+        updateMask = Core.Nothing,
+        uploadType = Core.Nothing,
+        uploadProtocol = Core.Nothing
+      }
+
+instance
+  Core.GoogleRequest
+    AndroidPublisherMonetizationSubscriptionsBasePlansOffersPatch
+  where
+  type
+    Rs
+      AndroidPublisherMonetizationSubscriptionsBasePlansOffersPatch =
+      SubscriptionOffer
+  type
+    Scopes
+      AndroidPublisherMonetizationSubscriptionsBasePlansOffersPatch =
+      '[Androidpublisher'FullControl]
+  requestClient
+    AndroidPublisherMonetizationSubscriptionsBasePlansOffersPatch {..} =
+      go
+        packageName
+        productId
+        basePlanId
+        offerId
+        xgafv
+        accessToken
+        allowMissing
+        callback
+        latencyTolerance
+        regionsVersionVersion
+        updateMask
+        uploadType
+        uploadProtocol
+        (Core.Just Core.AltJSON)
+        payload
+        androidPublisherService
+      where
+        go =
+          Core.buildClient
+            ( Core.Proxy ::
+                Core.Proxy
+                  AndroidPublisherMonetizationSubscriptionsBasePlansOffersPatchResource
+            )
+            Core.mempty
diff --git a/gen/Gogol/AndroidPublisher/Monetization/Subscriptions/BatchGet.hs b/gen/Gogol/AndroidPublisher/Monetization/Subscriptions/BatchGet.hs
new file mode 100644
--- /dev/null
+++ b/gen/Gogol/AndroidPublisher/Monetization/Subscriptions/BatchGet.hs
@@ -0,0 +1,126 @@
+{-# LANGUAGE DataKinds #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE ImportQualifiedPost #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-name-shadowing #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- |
+-- Module      : Gogol.AndroidPublisher.Monetization.Subscriptions.BatchGet
+-- Copyright   : (c) 2015-2025 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay+gogol@gmail.com>
+--               Toni Cebrián <toni@tonicebrian.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Reads one or more subscriptions.
+--
+-- /See:/ <https://developers.google.com/android-publisher Google Play Android Developer API Reference> for @androidpublisher.monetization.subscriptions.batchGet@.
+module Gogol.AndroidPublisher.Monetization.Subscriptions.BatchGet
+  ( -- * Resource
+    AndroidPublisherMonetizationSubscriptionsBatchGetResource,
+
+    -- ** Constructing a Request
+    AndroidPublisherMonetizationSubscriptionsBatchGet (..),
+    newAndroidPublisherMonetizationSubscriptionsBatchGet,
+  )
+where
+
+import Gogol.AndroidPublisher.Types
+import Gogol.Prelude qualified as Core
+
+-- | A resource alias for @androidpublisher.monetization.subscriptions.batchGet@ method which the
+-- 'AndroidPublisherMonetizationSubscriptionsBatchGet' request conforms to.
+type AndroidPublisherMonetizationSubscriptionsBatchGetResource =
+  "androidpublisher"
+    Core.:> "v3"
+    Core.:> "applications"
+    Core.:> Core.Capture "packageName" Core.Text
+    Core.:> "subscriptions:batchGet"
+    Core.:> Core.QueryParam "$.xgafv" Xgafv
+    Core.:> Core.QueryParam "access_token" Core.Text
+    Core.:> Core.QueryParam "callback" Core.Text
+    Core.:> Core.QueryParams "productIds" Core.Text
+    Core.:> Core.QueryParam "uploadType" Core.Text
+    Core.:> Core.QueryParam "upload_protocol" Core.Text
+    Core.:> Core.QueryParam "alt" Core.AltJSON
+    Core.:> Core.Get '[Core.JSON] BatchGetSubscriptionsResponse
+
+-- | Reads one or more subscriptions.
+--
+-- /See:/ 'newAndroidPublisherMonetizationSubscriptionsBatchGet' smart constructor.
+data AndroidPublisherMonetizationSubscriptionsBatchGet = AndroidPublisherMonetizationSubscriptionsBatchGet
+  { -- | V1 error format.
+    xgafv :: (Core.Maybe Xgafv),
+    -- | OAuth access token.
+    accessToken :: (Core.Maybe Core.Text),
+    -- | JSONP
+    callback :: (Core.Maybe Core.Text),
+    -- | Required. The parent app (package name) for which the subscriptions should be retrieved. Must be equal to the package_name field on all the requests.
+    packageName :: Core.Text,
+    -- | Required. A list of up to 100 subscription product IDs to retrieve. All the IDs must be different.
+    productIds :: (Core.Maybe [Core.Text]),
+    -- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
+    uploadType :: (Core.Maybe Core.Text),
+    -- | Upload protocol for media (e.g. \"raw\", \"multipart\").
+    uploadProtocol :: (Core.Maybe Core.Text)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'AndroidPublisherMonetizationSubscriptionsBatchGet' with the minimum fields required to make a request.
+newAndroidPublisherMonetizationSubscriptionsBatchGet ::
+  -- |  Required. The parent app (package name) for which the subscriptions should be retrieved. Must be equal to the package_name field on all the requests. See 'packageName'.
+  Core.Text ->
+  AndroidPublisherMonetizationSubscriptionsBatchGet
+newAndroidPublisherMonetizationSubscriptionsBatchGet packageName =
+  AndroidPublisherMonetizationSubscriptionsBatchGet
+    { xgafv =
+        Core.Nothing,
+      accessToken = Core.Nothing,
+      callback = Core.Nothing,
+      packageName = packageName,
+      productIds = Core.Nothing,
+      uploadType = Core.Nothing,
+      uploadProtocol = Core.Nothing
+    }
+
+instance
+  Core.GoogleRequest
+    AndroidPublisherMonetizationSubscriptionsBatchGet
+  where
+  type
+    Rs AndroidPublisherMonetizationSubscriptionsBatchGet =
+      BatchGetSubscriptionsResponse
+  type
+    Scopes AndroidPublisherMonetizationSubscriptionsBatchGet =
+      '[Androidpublisher'FullControl]
+  requestClient AndroidPublisherMonetizationSubscriptionsBatchGet {..} =
+    go
+      packageName
+      xgafv
+      accessToken
+      callback
+      (productIds Core.^. Core._Default)
+      uploadType
+      uploadProtocol
+      (Core.Just Core.AltJSON)
+      androidPublisherService
+    where
+      go =
+        Core.buildClient
+          ( Core.Proxy ::
+              Core.Proxy
+                AndroidPublisherMonetizationSubscriptionsBatchGetResource
+          )
+          Core.mempty
diff --git a/gen/Gogol/AndroidPublisher/Monetization/Subscriptions/BatchUpdate.hs b/gen/Gogol/AndroidPublisher/Monetization/Subscriptions/BatchUpdate.hs
new file mode 100644
--- /dev/null
+++ b/gen/Gogol/AndroidPublisher/Monetization/Subscriptions/BatchUpdate.hs
@@ -0,0 +1,131 @@
+{-# LANGUAGE DataKinds #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE ImportQualifiedPost #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-name-shadowing #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- |
+-- Module      : Gogol.AndroidPublisher.Monetization.Subscriptions.BatchUpdate
+-- Copyright   : (c) 2015-2025 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay+gogol@gmail.com>
+--               Toni Cebrián <toni@tonicebrian.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Updates a batch of subscriptions. Set the latencyTolerance field on nested requests to PRODUCT/UPDATE/LATENCY/TOLERANCE/LATENCY_TOLERANT to achieve maximum update throughput.
+--
+-- /See:/ <https://developers.google.com/android-publisher Google Play Android Developer API Reference> for @androidpublisher.monetization.subscriptions.batchUpdate@.
+module Gogol.AndroidPublisher.Monetization.Subscriptions.BatchUpdate
+  ( -- * Resource
+    AndroidPublisherMonetizationSubscriptionsBatchUpdateResource,
+
+    -- ** Constructing a Request
+    AndroidPublisherMonetizationSubscriptionsBatchUpdate (..),
+    newAndroidPublisherMonetizationSubscriptionsBatchUpdate,
+  )
+where
+
+import Gogol.AndroidPublisher.Types
+import Gogol.Prelude qualified as Core
+
+-- | A resource alias for @androidpublisher.monetization.subscriptions.batchUpdate@ method which the
+-- 'AndroidPublisherMonetizationSubscriptionsBatchUpdate' request conforms to.
+type AndroidPublisherMonetizationSubscriptionsBatchUpdateResource =
+  "androidpublisher"
+    Core.:> "v3"
+    Core.:> "applications"
+    Core.:> Core.Capture "packageName" Core.Text
+    Core.:> "subscriptions:batchUpdate"
+    Core.:> Core.QueryParam "$.xgafv" Xgafv
+    Core.:> Core.QueryParam "access_token" Core.Text
+    Core.:> Core.QueryParam "callback" Core.Text
+    Core.:> Core.QueryParam "uploadType" Core.Text
+    Core.:> Core.QueryParam "upload_protocol" Core.Text
+    Core.:> Core.QueryParam "alt" Core.AltJSON
+    Core.:> Core.ReqBody '[Core.JSON] BatchUpdateSubscriptionsRequest
+    Core.:> Core.Post '[Core.JSON] BatchUpdateSubscriptionsResponse
+
+-- | Updates a batch of subscriptions. Set the latencyTolerance field on nested requests to PRODUCT/UPDATE/LATENCY/TOLERANCE/LATENCY_TOLERANT to achieve maximum update throughput.
+--
+-- /See:/ 'newAndroidPublisherMonetizationSubscriptionsBatchUpdate' smart constructor.
+data AndroidPublisherMonetizationSubscriptionsBatchUpdate = AndroidPublisherMonetizationSubscriptionsBatchUpdate
+  { -- | V1 error format.
+    xgafv :: (Core.Maybe Xgafv),
+    -- | OAuth access token.
+    accessToken :: (Core.Maybe Core.Text),
+    -- | JSONP
+    callback :: (Core.Maybe Core.Text),
+    -- | Required. The parent app (package name) for which the subscriptions should be updated. Must be equal to the package_name field on all the Subscription resources.
+    packageName :: Core.Text,
+    -- | Multipart request metadata.
+    payload :: BatchUpdateSubscriptionsRequest,
+    -- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
+    uploadType :: (Core.Maybe Core.Text),
+    -- | Upload protocol for media (e.g. \"raw\", \"multipart\").
+    uploadProtocol :: (Core.Maybe Core.Text)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'AndroidPublisherMonetizationSubscriptionsBatchUpdate' with the minimum fields required to make a request.
+newAndroidPublisherMonetizationSubscriptionsBatchUpdate ::
+  -- |  Required. The parent app (package name) for which the subscriptions should be updated. Must be equal to the package_name field on all the Subscription resources. See 'packageName'.
+  Core.Text ->
+  -- |  Multipart request metadata. See 'payload'.
+  BatchUpdateSubscriptionsRequest ->
+  AndroidPublisherMonetizationSubscriptionsBatchUpdate
+newAndroidPublisherMonetizationSubscriptionsBatchUpdate
+  packageName
+  payload =
+    AndroidPublisherMonetizationSubscriptionsBatchUpdate
+      { xgafv =
+          Core.Nothing,
+        accessToken = Core.Nothing,
+        callback = Core.Nothing,
+        packageName = packageName,
+        payload = payload,
+        uploadType = Core.Nothing,
+        uploadProtocol = Core.Nothing
+      }
+
+instance
+  Core.GoogleRequest
+    AndroidPublisherMonetizationSubscriptionsBatchUpdate
+  where
+  type
+    Rs AndroidPublisherMonetizationSubscriptionsBatchUpdate =
+      BatchUpdateSubscriptionsResponse
+  type
+    Scopes AndroidPublisherMonetizationSubscriptionsBatchUpdate =
+      '[Androidpublisher'FullControl]
+  requestClient
+    AndroidPublisherMonetizationSubscriptionsBatchUpdate {..} =
+      go
+        packageName
+        xgafv
+        accessToken
+        callback
+        uploadType
+        uploadProtocol
+        (Core.Just Core.AltJSON)
+        payload
+        androidPublisherService
+      where
+        go =
+          Core.buildClient
+            ( Core.Proxy ::
+                Core.Proxy
+                  AndroidPublisherMonetizationSubscriptionsBatchUpdateResource
+            )
+            Core.mempty
diff --git a/gen/Gogol/AndroidPublisher/Monetization/Subscriptions/Create.hs b/gen/Gogol/AndroidPublisher/Monetization/Subscriptions/Create.hs
new file mode 100644
--- /dev/null
+++ b/gen/Gogol/AndroidPublisher/Monetization/Subscriptions/Create.hs
@@ -0,0 +1,139 @@
+{-# LANGUAGE DataKinds #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE ImportQualifiedPost #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-name-shadowing #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- |
+-- Module      : Gogol.AndroidPublisher.Monetization.Subscriptions.Create
+-- Copyright   : (c) 2015-2025 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay+gogol@gmail.com>
+--               Toni Cebrián <toni@tonicebrian.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Creates a new subscription. Newly added base plans will remain in draft state until activated.
+--
+-- /See:/ <https://developers.google.com/android-publisher Google Play Android Developer API Reference> for @androidpublisher.monetization.subscriptions.create@.
+module Gogol.AndroidPublisher.Monetization.Subscriptions.Create
+  ( -- * Resource
+    AndroidPublisherMonetizationSubscriptionsCreateResource,
+
+    -- ** Constructing a Request
+    AndroidPublisherMonetizationSubscriptionsCreate (..),
+    newAndroidPublisherMonetizationSubscriptionsCreate,
+  )
+where
+
+import Gogol.AndroidPublisher.Types
+import Gogol.Prelude qualified as Core
+
+-- | A resource alias for @androidpublisher.monetization.subscriptions.create@ method which the
+-- 'AndroidPublisherMonetizationSubscriptionsCreate' request conforms to.
+type AndroidPublisherMonetizationSubscriptionsCreateResource =
+  "androidpublisher"
+    Core.:> "v3"
+    Core.:> "applications"
+    Core.:> Core.Capture "packageName" Core.Text
+    Core.:> "subscriptions"
+    Core.:> Core.QueryParam "$.xgafv" Xgafv
+    Core.:> Core.QueryParam "access_token" Core.Text
+    Core.:> Core.QueryParam "callback" Core.Text
+    Core.:> Core.QueryParam "productId" Core.Text
+    Core.:> Core.QueryParam "regionsVersion.version" Core.Text
+    Core.:> Core.QueryParam "uploadType" Core.Text
+    Core.:> Core.QueryParam "upload_protocol" Core.Text
+    Core.:> Core.QueryParam "alt" Core.AltJSON
+    Core.:> Core.ReqBody '[Core.JSON] Subscription
+    Core.:> Core.Post '[Core.JSON] Subscription
+
+-- | Creates a new subscription. Newly added base plans will remain in draft state until activated.
+--
+-- /See:/ 'newAndroidPublisherMonetizationSubscriptionsCreate' smart constructor.
+data AndroidPublisherMonetizationSubscriptionsCreate = AndroidPublisherMonetizationSubscriptionsCreate
+  { -- | V1 error format.
+    xgafv :: (Core.Maybe Xgafv),
+    -- | OAuth access token.
+    accessToken :: (Core.Maybe Core.Text),
+    -- | JSONP
+    callback :: (Core.Maybe Core.Text),
+    -- | Required. The parent app (package name) for which the subscription should be created. Must be equal to the package_name field on the Subscription resource.
+    packageName :: Core.Text,
+    -- | Multipart request metadata.
+    payload :: Subscription,
+    -- | Required. The ID to use for the subscription. For the requirements on this format, see the documentation of the product_id field on the Subscription resource.
+    productId :: (Core.Maybe Core.Text),
+    -- | Required. A string representing the version of available regions being used for the specified resource. Regional prices for the resource have to be specified according to the information published in <https://support.google.com/googleplay/android-developer/answer/10532353 this article>. Each time the supported locations substantially change, the version will be incremented. Using this field will ensure that creating and updating the resource with an older region\'s version and set of regional prices and currencies will succeed even though a new version is available. The latest version is 2022\/02.
+    regionsVersionVersion :: (Core.Maybe Core.Text),
+    -- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
+    uploadType :: (Core.Maybe Core.Text),
+    -- | Upload protocol for media (e.g. \"raw\", \"multipart\").
+    uploadProtocol :: (Core.Maybe Core.Text)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'AndroidPublisherMonetizationSubscriptionsCreate' with the minimum fields required to make a request.
+newAndroidPublisherMonetizationSubscriptionsCreate ::
+  -- |  Required. The parent app (package name) for which the subscription should be created. Must be equal to the package_name field on the Subscription resource. See 'packageName'.
+  Core.Text ->
+  -- |  Multipart request metadata. See 'payload'.
+  Subscription ->
+  AndroidPublisherMonetizationSubscriptionsCreate
+newAndroidPublisherMonetizationSubscriptionsCreate
+  packageName
+  payload =
+    AndroidPublisherMonetizationSubscriptionsCreate
+      { xgafv =
+          Core.Nothing,
+        accessToken = Core.Nothing,
+        callback = Core.Nothing,
+        packageName = packageName,
+        payload = payload,
+        productId = Core.Nothing,
+        regionsVersionVersion = Core.Nothing,
+        uploadType = Core.Nothing,
+        uploadProtocol = Core.Nothing
+      }
+
+instance
+  Core.GoogleRequest
+    AndroidPublisherMonetizationSubscriptionsCreate
+  where
+  type
+    Rs AndroidPublisherMonetizationSubscriptionsCreate =
+      Subscription
+  type
+    Scopes AndroidPublisherMonetizationSubscriptionsCreate =
+      '[Androidpublisher'FullControl]
+  requestClient AndroidPublisherMonetizationSubscriptionsCreate {..} =
+    go
+      packageName
+      xgafv
+      accessToken
+      callback
+      productId
+      regionsVersionVersion
+      uploadType
+      uploadProtocol
+      (Core.Just Core.AltJSON)
+      payload
+      androidPublisherService
+    where
+      go =
+        Core.buildClient
+          ( Core.Proxy ::
+              Core.Proxy AndroidPublisherMonetizationSubscriptionsCreateResource
+          )
+          Core.mempty
diff --git a/gen/Gogol/AndroidPublisher/Monetization/Subscriptions/Delete.hs b/gen/Gogol/AndroidPublisher/Monetization/Subscriptions/Delete.hs
new file mode 100644
--- /dev/null
+++ b/gen/Gogol/AndroidPublisher/Monetization/Subscriptions/Delete.hs
@@ -0,0 +1,127 @@
+{-# LANGUAGE DataKinds #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE ImportQualifiedPost #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-name-shadowing #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- |
+-- Module      : Gogol.AndroidPublisher.Monetization.Subscriptions.Delete
+-- Copyright   : (c) 2015-2025 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay+gogol@gmail.com>
+--               Toni Cebrián <toni@tonicebrian.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Deletes a subscription. A subscription can only be deleted if it has never had a base plan published.
+--
+-- /See:/ <https://developers.google.com/android-publisher Google Play Android Developer API Reference> for @androidpublisher.monetization.subscriptions.delete@.
+module Gogol.AndroidPublisher.Monetization.Subscriptions.Delete
+  ( -- * Resource
+    AndroidPublisherMonetizationSubscriptionsDeleteResource,
+
+    -- ** Constructing a Request
+    AndroidPublisherMonetizationSubscriptionsDelete (..),
+    newAndroidPublisherMonetizationSubscriptionsDelete,
+  )
+where
+
+import Gogol.AndroidPublisher.Types
+import Gogol.Prelude qualified as Core
+
+-- | A resource alias for @androidpublisher.monetization.subscriptions.delete@ method which the
+-- 'AndroidPublisherMonetizationSubscriptionsDelete' request conforms to.
+type AndroidPublisherMonetizationSubscriptionsDeleteResource =
+  "androidpublisher"
+    Core.:> "v3"
+    Core.:> "applications"
+    Core.:> Core.Capture "packageName" Core.Text
+    Core.:> "subscriptions"
+    Core.:> Core.Capture "productId" Core.Text
+    Core.:> Core.QueryParam "$.xgafv" Xgafv
+    Core.:> Core.QueryParam "access_token" Core.Text
+    Core.:> Core.QueryParam "callback" Core.Text
+    Core.:> Core.QueryParam "uploadType" Core.Text
+    Core.:> Core.QueryParam "upload_protocol" Core.Text
+    Core.:> Core.QueryParam "alt" Core.AltJSON
+    Core.:> Core.Delete '[Core.JSON] ()
+
+-- | Deletes a subscription. A subscription can only be deleted if it has never had a base plan published.
+--
+-- /See:/ 'newAndroidPublisherMonetizationSubscriptionsDelete' smart constructor.
+data AndroidPublisherMonetizationSubscriptionsDelete = AndroidPublisherMonetizationSubscriptionsDelete
+  { -- | V1 error format.
+    xgafv :: (Core.Maybe Xgafv),
+    -- | OAuth access token.
+    accessToken :: (Core.Maybe Core.Text),
+    -- | JSONP
+    callback :: (Core.Maybe Core.Text),
+    -- | Required. The parent app (package name) of the app of the subscription to delete.
+    packageName :: Core.Text,
+    -- | Required. The unique product ID of the subscription to delete.
+    productId :: Core.Text,
+    -- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
+    uploadType :: (Core.Maybe Core.Text),
+    -- | Upload protocol for media (e.g. \"raw\", \"multipart\").
+    uploadProtocol :: (Core.Maybe Core.Text)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'AndroidPublisherMonetizationSubscriptionsDelete' with the minimum fields required to make a request.
+newAndroidPublisherMonetizationSubscriptionsDelete ::
+  -- |  Required. The parent app (package name) of the app of the subscription to delete. See 'packageName'.
+  Core.Text ->
+  -- |  Required. The unique product ID of the subscription to delete. See 'productId'.
+  Core.Text ->
+  AndroidPublisherMonetizationSubscriptionsDelete
+newAndroidPublisherMonetizationSubscriptionsDelete
+  packageName
+  productId =
+    AndroidPublisherMonetizationSubscriptionsDelete
+      { xgafv =
+          Core.Nothing,
+        accessToken = Core.Nothing,
+        callback = Core.Nothing,
+        packageName = packageName,
+        productId = productId,
+        uploadType = Core.Nothing,
+        uploadProtocol = Core.Nothing
+      }
+
+instance
+  Core.GoogleRequest
+    AndroidPublisherMonetizationSubscriptionsDelete
+  where
+  type Rs AndroidPublisherMonetizationSubscriptionsDelete = ()
+  type
+    Scopes AndroidPublisherMonetizationSubscriptionsDelete =
+      '[Androidpublisher'FullControl]
+  requestClient AndroidPublisherMonetizationSubscriptionsDelete {..} =
+    go
+      packageName
+      productId
+      xgafv
+      accessToken
+      callback
+      uploadType
+      uploadProtocol
+      (Core.Just Core.AltJSON)
+      androidPublisherService
+    where
+      go =
+        Core.buildClient
+          ( Core.Proxy ::
+              Core.Proxy AndroidPublisherMonetizationSubscriptionsDeleteResource
+          )
+          Core.mempty
diff --git a/gen/Gogol/AndroidPublisher/Monetization/Subscriptions/Get.hs b/gen/Gogol/AndroidPublisher/Monetization/Subscriptions/Get.hs
new file mode 100644
--- /dev/null
+++ b/gen/Gogol/AndroidPublisher/Monetization/Subscriptions/Get.hs
@@ -0,0 +1,127 @@
+{-# LANGUAGE DataKinds #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE ImportQualifiedPost #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-name-shadowing #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- |
+-- Module      : Gogol.AndroidPublisher.Monetization.Subscriptions.Get
+-- Copyright   : (c) 2015-2025 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay+gogol@gmail.com>
+--               Toni Cebrián <toni@tonicebrian.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Reads a single subscription.
+--
+-- /See:/ <https://developers.google.com/android-publisher Google Play Android Developer API Reference> for @androidpublisher.monetization.subscriptions.get@.
+module Gogol.AndroidPublisher.Monetization.Subscriptions.Get
+  ( -- * Resource
+    AndroidPublisherMonetizationSubscriptionsGetResource,
+
+    -- ** Constructing a Request
+    AndroidPublisherMonetizationSubscriptionsGet (..),
+    newAndroidPublisherMonetizationSubscriptionsGet,
+  )
+where
+
+import Gogol.AndroidPublisher.Types
+import Gogol.Prelude qualified as Core
+
+-- | A resource alias for @androidpublisher.monetization.subscriptions.get@ method which the
+-- 'AndroidPublisherMonetizationSubscriptionsGet' request conforms to.
+type AndroidPublisherMonetizationSubscriptionsGetResource =
+  "androidpublisher"
+    Core.:> "v3"
+    Core.:> "applications"
+    Core.:> Core.Capture "packageName" Core.Text
+    Core.:> "subscriptions"
+    Core.:> Core.Capture "productId" Core.Text
+    Core.:> Core.QueryParam "$.xgafv" Xgafv
+    Core.:> Core.QueryParam "access_token" Core.Text
+    Core.:> Core.QueryParam "callback" Core.Text
+    Core.:> Core.QueryParam "uploadType" Core.Text
+    Core.:> Core.QueryParam "upload_protocol" Core.Text
+    Core.:> Core.QueryParam "alt" Core.AltJSON
+    Core.:> Core.Get '[Core.JSON] Subscription
+
+-- | Reads a single subscription.
+--
+-- /See:/ 'newAndroidPublisherMonetizationSubscriptionsGet' smart constructor.
+data AndroidPublisherMonetizationSubscriptionsGet = AndroidPublisherMonetizationSubscriptionsGet
+  { -- | V1 error format.
+    xgafv :: (Core.Maybe Xgafv),
+    -- | OAuth access token.
+    accessToken :: (Core.Maybe Core.Text),
+    -- | JSONP
+    callback :: (Core.Maybe Core.Text),
+    -- | Required. The parent app (package name) of the subscription to get.
+    packageName :: Core.Text,
+    -- | Required. The unique product ID of the subscription to get.
+    productId :: Core.Text,
+    -- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
+    uploadType :: (Core.Maybe Core.Text),
+    -- | Upload protocol for media (e.g. \"raw\", \"multipart\").
+    uploadProtocol :: (Core.Maybe Core.Text)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'AndroidPublisherMonetizationSubscriptionsGet' with the minimum fields required to make a request.
+newAndroidPublisherMonetizationSubscriptionsGet ::
+  -- |  Required. The parent app (package name) of the subscription to get. See 'packageName'.
+  Core.Text ->
+  -- |  Required. The unique product ID of the subscription to get. See 'productId'.
+  Core.Text ->
+  AndroidPublisherMonetizationSubscriptionsGet
+newAndroidPublisherMonetizationSubscriptionsGet
+  packageName
+  productId =
+    AndroidPublisherMonetizationSubscriptionsGet
+      { xgafv =
+          Core.Nothing,
+        accessToken = Core.Nothing,
+        callback = Core.Nothing,
+        packageName = packageName,
+        productId = productId,
+        uploadType = Core.Nothing,
+        uploadProtocol = Core.Nothing
+      }
+
+instance
+  Core.GoogleRequest
+    AndroidPublisherMonetizationSubscriptionsGet
+  where
+  type Rs AndroidPublisherMonetizationSubscriptionsGet = Subscription
+  type
+    Scopes AndroidPublisherMonetizationSubscriptionsGet =
+      '[Androidpublisher'FullControl]
+  requestClient AndroidPublisherMonetizationSubscriptionsGet {..} =
+    go
+      packageName
+      productId
+      xgafv
+      accessToken
+      callback
+      uploadType
+      uploadProtocol
+      (Core.Just Core.AltJSON)
+      androidPublisherService
+    where
+      go =
+        Core.buildClient
+          ( Core.Proxy ::
+              Core.Proxy AndroidPublisherMonetizationSubscriptionsGetResource
+          )
+          Core.mempty
diff --git a/gen/Gogol/AndroidPublisher/Monetization/Subscriptions/List.hs b/gen/Gogol/AndroidPublisher/Monetization/Subscriptions/List.hs
new file mode 100644
--- /dev/null
+++ b/gen/Gogol/AndroidPublisher/Monetization/Subscriptions/List.hs
@@ -0,0 +1,135 @@
+{-# LANGUAGE DataKinds #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE ImportQualifiedPost #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-name-shadowing #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- |
+-- Module      : Gogol.AndroidPublisher.Monetization.Subscriptions.List
+-- Copyright   : (c) 2015-2025 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay+gogol@gmail.com>
+--               Toni Cebrián <toni@tonicebrian.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Lists all subscriptions under a given app.
+--
+-- /See:/ <https://developers.google.com/android-publisher Google Play Android Developer API Reference> for @androidpublisher.monetization.subscriptions.list@.
+module Gogol.AndroidPublisher.Monetization.Subscriptions.List
+  ( -- * Resource
+    AndroidPublisherMonetizationSubscriptionsListResource,
+
+    -- ** Constructing a Request
+    AndroidPublisherMonetizationSubscriptionsList (..),
+    newAndroidPublisherMonetizationSubscriptionsList,
+  )
+where
+
+import Gogol.AndroidPublisher.Types
+import Gogol.Prelude qualified as Core
+
+-- | A resource alias for @androidpublisher.monetization.subscriptions.list@ method which the
+-- 'AndroidPublisherMonetizationSubscriptionsList' request conforms to.
+type AndroidPublisherMonetizationSubscriptionsListResource =
+  "androidpublisher"
+    Core.:> "v3"
+    Core.:> "applications"
+    Core.:> Core.Capture "packageName" Core.Text
+    Core.:> "subscriptions"
+    Core.:> Core.QueryParam "$.xgafv" Xgafv
+    Core.:> Core.QueryParam "access_token" Core.Text
+    Core.:> Core.QueryParam "callback" Core.Text
+    Core.:> Core.QueryParam "pageSize" Core.Int32
+    Core.:> Core.QueryParam "pageToken" Core.Text
+    Core.:> Core.QueryParam "showArchived" Core.Bool
+    Core.:> Core.QueryParam "uploadType" Core.Text
+    Core.:> Core.QueryParam "upload_protocol" Core.Text
+    Core.:> Core.QueryParam "alt" Core.AltJSON
+    Core.:> Core.Get '[Core.JSON] ListSubscriptionsResponse
+
+-- | Lists all subscriptions under a given app.
+--
+-- /See:/ 'newAndroidPublisherMonetizationSubscriptionsList' smart constructor.
+data AndroidPublisherMonetizationSubscriptionsList = AndroidPublisherMonetizationSubscriptionsList
+  { -- | V1 error format.
+    xgafv :: (Core.Maybe Xgafv),
+    -- | OAuth access token.
+    accessToken :: (Core.Maybe Core.Text),
+    -- | JSONP
+    callback :: (Core.Maybe Core.Text),
+    -- | Required. The parent app (package name) for which the subscriptions should be read.
+    packageName :: Core.Text,
+    -- | The maximum number of subscriptions to return. The service may return fewer than this value. If unspecified, at most 50 subscriptions will be returned. The maximum value is 1000; values above 1000 will be coerced to 1000.
+    pageSize :: (Core.Maybe Core.Int32),
+    -- | A page token, received from a previous @ListSubscriptions@ call. Provide this to retrieve the subsequent page. When paginating, all other parameters provided to @ListSubscriptions@ must match the call that provided the page token.
+    pageToken :: (Core.Maybe Core.Text),
+    -- | Deprecated: subscription archiving is not supported.
+    showArchived :: (Core.Maybe Core.Bool),
+    -- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
+    uploadType :: (Core.Maybe Core.Text),
+    -- | Upload protocol for media (e.g. \"raw\", \"multipart\").
+    uploadProtocol :: (Core.Maybe Core.Text)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'AndroidPublisherMonetizationSubscriptionsList' with the minimum fields required to make a request.
+newAndroidPublisherMonetizationSubscriptionsList ::
+  -- |  Required. The parent app (package name) for which the subscriptions should be read. See 'packageName'.
+  Core.Text ->
+  AndroidPublisherMonetizationSubscriptionsList
+newAndroidPublisherMonetizationSubscriptionsList packageName =
+  AndroidPublisherMonetizationSubscriptionsList
+    { xgafv =
+        Core.Nothing,
+      accessToken = Core.Nothing,
+      callback = Core.Nothing,
+      packageName = packageName,
+      pageSize = Core.Nothing,
+      pageToken = Core.Nothing,
+      showArchived = Core.Nothing,
+      uploadType = Core.Nothing,
+      uploadProtocol = Core.Nothing
+    }
+
+instance
+  Core.GoogleRequest
+    AndroidPublisherMonetizationSubscriptionsList
+  where
+  type
+    Rs AndroidPublisherMonetizationSubscriptionsList =
+      ListSubscriptionsResponse
+  type
+    Scopes AndroidPublisherMonetizationSubscriptionsList =
+      '[Androidpublisher'FullControl]
+  requestClient AndroidPublisherMonetizationSubscriptionsList {..} =
+    go
+      packageName
+      xgafv
+      accessToken
+      callback
+      pageSize
+      pageToken
+      showArchived
+      uploadType
+      uploadProtocol
+      (Core.Just Core.AltJSON)
+      androidPublisherService
+    where
+      go =
+        Core.buildClient
+          ( Core.Proxy ::
+              Core.Proxy AndroidPublisherMonetizationSubscriptionsListResource
+          )
+          Core.mempty
diff --git a/gen/Gogol/AndroidPublisher/Monetization/Subscriptions/Patch.hs b/gen/Gogol/AndroidPublisher/Monetization/Subscriptions/Patch.hs
new file mode 100644
--- /dev/null
+++ b/gen/Gogol/AndroidPublisher/Monetization/Subscriptions/Patch.hs
@@ -0,0 +1,159 @@
+{-# LANGUAGE DataKinds #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE ImportQualifiedPost #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-name-shadowing #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- |
+-- Module      : Gogol.AndroidPublisher.Monetization.Subscriptions.Patch
+-- Copyright   : (c) 2015-2025 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay+gogol@gmail.com>
+--               Toni Cebrián <toni@tonicebrian.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Updates an existing subscription.
+--
+-- /See:/ <https://developers.google.com/android-publisher Google Play Android Developer API Reference> for @androidpublisher.monetization.subscriptions.patch@.
+module Gogol.AndroidPublisher.Monetization.Subscriptions.Patch
+  ( -- * Resource
+    AndroidPublisherMonetizationSubscriptionsPatchResource,
+
+    -- ** Constructing a Request
+    AndroidPublisherMonetizationSubscriptionsPatch (..),
+    newAndroidPublisherMonetizationSubscriptionsPatch,
+  )
+where
+
+import Gogol.AndroidPublisher.Types
+import Gogol.Prelude qualified as Core
+
+-- | A resource alias for @androidpublisher.monetization.subscriptions.patch@ method which the
+-- 'AndroidPublisherMonetizationSubscriptionsPatch' request conforms to.
+type AndroidPublisherMonetizationSubscriptionsPatchResource =
+  "androidpublisher"
+    Core.:> "v3"
+    Core.:> "applications"
+    Core.:> Core.Capture "packageName" Core.Text
+    Core.:> "subscriptions"
+    Core.:> Core.Capture "productId" Core.Text
+    Core.:> Core.QueryParam "$.xgafv" Xgafv
+    Core.:> Core.QueryParam "access_token" Core.Text
+    Core.:> Core.QueryParam "allowMissing" Core.Bool
+    Core.:> Core.QueryParam "callback" Core.Text
+    Core.:> Core.QueryParam
+              "latencyTolerance"
+              MonetizationSubscriptionsPatchLatencyTolerance
+    Core.:> Core.QueryParam "regionsVersion.version" Core.Text
+    Core.:> Core.QueryParam "updateMask" Core.FieldMask
+    Core.:> Core.QueryParam "uploadType" Core.Text
+    Core.:> Core.QueryParam "upload_protocol" Core.Text
+    Core.:> Core.QueryParam "alt" Core.AltJSON
+    Core.:> Core.ReqBody '[Core.JSON] Subscription
+    Core.:> Core.Patch '[Core.JSON] Subscription
+
+-- | Updates an existing subscription.
+--
+-- /See:/ 'newAndroidPublisherMonetizationSubscriptionsPatch' smart constructor.
+data AndroidPublisherMonetizationSubscriptionsPatch = AndroidPublisherMonetizationSubscriptionsPatch
+  { -- | V1 error format.
+    xgafv :: (Core.Maybe Xgafv),
+    -- | OAuth access token.
+    accessToken :: (Core.Maybe Core.Text),
+    -- | Optional. If set to true, and the subscription with the given package/name and product/id doesn\'t exist, the subscription will be created. If a new subscription is created, update_mask is ignored.
+    allowMissing :: (Core.Maybe Core.Bool),
+    -- | JSONP
+    callback :: (Core.Maybe Core.Text),
+    -- | Optional. The latency tolerance for the propagation of this product update. Defaults to latency-sensitive.
+    latencyTolerance :: (Core.Maybe MonetizationSubscriptionsPatchLatencyTolerance),
+    -- | Immutable. Package name of the parent app.
+    packageName :: Core.Text,
+    -- | Multipart request metadata.
+    payload :: Subscription,
+    -- | Immutable. Unique product ID of the product. Unique within the parent app. Product IDs must be composed of lower-case letters (a-z), numbers (0-9), underscores (_) and dots (.). It must start with a lower-case letter or number, and be between 1 and 40 (inclusive) characters in length.
+    productId :: Core.Text,
+    -- | Required. A string representing the version of available regions being used for the specified resource. Regional prices for the resource have to be specified according to the information published in <https://support.google.com/googleplay/android-developer/answer/10532353 this article>. Each time the supported locations substantially change, the version will be incremented. Using this field will ensure that creating and updating the resource with an older region\'s version and set of regional prices and currencies will succeed even though a new version is available. The latest version is 2022\/02.
+    regionsVersionVersion :: (Core.Maybe Core.Text),
+    -- | Required. The list of fields to be updated.
+    updateMask :: (Core.Maybe Core.FieldMask),
+    -- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
+    uploadType :: (Core.Maybe Core.Text),
+    -- | Upload protocol for media (e.g. \"raw\", \"multipart\").
+    uploadProtocol :: (Core.Maybe Core.Text)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'AndroidPublisherMonetizationSubscriptionsPatch' with the minimum fields required to make a request.
+newAndroidPublisherMonetizationSubscriptionsPatch ::
+  -- |  Immutable. Package name of the parent app. See 'packageName'.
+  Core.Text ->
+  -- |  Multipart request metadata. See 'payload'.
+  Subscription ->
+  -- |  Immutable. Unique product ID of the product. Unique within the parent app. Product IDs must be composed of lower-case letters (a-z), numbers (0-9), underscores (_) and dots (.). It must start with a lower-case letter or number, and be between 1 and 40 (inclusive) characters in length. See 'productId'.
+  Core.Text ->
+  AndroidPublisherMonetizationSubscriptionsPatch
+newAndroidPublisherMonetizationSubscriptionsPatch
+  packageName
+  payload
+  productId =
+    AndroidPublisherMonetizationSubscriptionsPatch
+      { xgafv =
+          Core.Nothing,
+        accessToken = Core.Nothing,
+        allowMissing = Core.Nothing,
+        callback = Core.Nothing,
+        latencyTolerance = Core.Nothing,
+        packageName = packageName,
+        payload = payload,
+        productId = productId,
+        regionsVersionVersion = Core.Nothing,
+        updateMask = Core.Nothing,
+        uploadType = Core.Nothing,
+        uploadProtocol = Core.Nothing
+      }
+
+instance
+  Core.GoogleRequest
+    AndroidPublisherMonetizationSubscriptionsPatch
+  where
+  type
+    Rs AndroidPublisherMonetizationSubscriptionsPatch =
+      Subscription
+  type
+    Scopes AndroidPublisherMonetizationSubscriptionsPatch =
+      '[Androidpublisher'FullControl]
+  requestClient AndroidPublisherMonetizationSubscriptionsPatch {..} =
+    go
+      packageName
+      productId
+      xgafv
+      accessToken
+      allowMissing
+      callback
+      latencyTolerance
+      regionsVersionVersion
+      updateMask
+      uploadType
+      uploadProtocol
+      (Core.Just Core.AltJSON)
+      payload
+      androidPublisherService
+    where
+      go =
+        Core.buildClient
+          ( Core.Proxy ::
+              Core.Proxy AndroidPublisherMonetizationSubscriptionsPatchResource
+          )
+          Core.mempty
diff --git a/gen/Gogol/AndroidPublisher/Orders/Refund.hs b/gen/Gogol/AndroidPublisher/Orders/Refund.hs
new file mode 100644
--- /dev/null
+++ b/gen/Gogol/AndroidPublisher/Orders/Refund.hs
@@ -0,0 +1,124 @@
+{-# LANGUAGE DataKinds #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE ImportQualifiedPost #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-name-shadowing #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- |
+-- Module      : Gogol.AndroidPublisher.Orders.Refund
+-- Copyright   : (c) 2015-2025 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay+gogol@gmail.com>
+--               Toni Cebrián <toni@tonicebrian.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Refunds a user\'s subscription or in-app purchase order. Orders older than 3 years cannot be refunded.
+--
+-- /See:/ <https://developers.google.com/android-publisher Google Play Android Developer API Reference> for @androidpublisher.orders.refund@.
+module Gogol.AndroidPublisher.Orders.Refund
+  ( -- * Resource
+    AndroidPublisherOrdersRefundResource,
+
+    -- ** Constructing a Request
+    AndroidPublisherOrdersRefund (..),
+    newAndroidPublisherOrdersRefund,
+  )
+where
+
+import Gogol.AndroidPublisher.Types
+import Gogol.Prelude qualified as Core
+
+-- | A resource alias for @androidpublisher.orders.refund@ method which the
+-- 'AndroidPublisherOrdersRefund' request conforms to.
+type AndroidPublisherOrdersRefundResource =
+  "androidpublisher"
+    Core.:> "v3"
+    Core.:> "applications"
+    Core.:> Core.Capture "packageName" Core.Text
+    Core.:> "orders"
+    Core.:> Core.CaptureMode "orderId" "refund" Core.Text
+    Core.:> Core.QueryParam "$.xgafv" Xgafv
+    Core.:> Core.QueryParam "access_token" Core.Text
+    Core.:> Core.QueryParam "callback" Core.Text
+    Core.:> Core.QueryParam "revoke" Core.Bool
+    Core.:> Core.QueryParam "uploadType" Core.Text
+    Core.:> Core.QueryParam "upload_protocol" Core.Text
+    Core.:> Core.QueryParam "alt" Core.AltJSON
+    Core.:> Core.Post '[Core.JSON] ()
+
+-- | Refunds a user\'s subscription or in-app purchase order. Orders older than 3 years cannot be refunded.
+--
+-- /See:/ 'newAndroidPublisherOrdersRefund' smart constructor.
+data AndroidPublisherOrdersRefund = AndroidPublisherOrdersRefund
+  { -- | V1 error format.
+    xgafv :: (Core.Maybe Xgafv),
+    -- | OAuth access token.
+    accessToken :: (Core.Maybe Core.Text),
+    -- | JSONP
+    callback :: (Core.Maybe Core.Text),
+    -- | The order ID provided to the user when the subscription or in-app order was purchased.
+    orderId :: Core.Text,
+    -- | The package name of the application for which this subscription or in-app item was purchased (for example, \'com.some.thing\').
+    packageName :: Core.Text,
+    -- | 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).
+    revoke :: (Core.Maybe Core.Bool),
+    -- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
+    uploadType :: (Core.Maybe Core.Text),
+    -- | Upload protocol for media (e.g. \"raw\", \"multipart\").
+    uploadProtocol :: (Core.Maybe Core.Text)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'AndroidPublisherOrdersRefund' with the minimum fields required to make a request.
+newAndroidPublisherOrdersRefund ::
+  -- |  The order ID provided to the user when the subscription or in-app order was purchased. See 'orderId'.
+  Core.Text ->
+  -- |  The package name of the application for which this subscription or in-app item was purchased (for example, \'com.some.thing\'). See 'packageName'.
+  Core.Text ->
+  AndroidPublisherOrdersRefund
+newAndroidPublisherOrdersRefund orderId packageName =
+  AndroidPublisherOrdersRefund
+    { xgafv = Core.Nothing,
+      accessToken = Core.Nothing,
+      callback = Core.Nothing,
+      orderId = orderId,
+      packageName = packageName,
+      revoke = Core.Nothing,
+      uploadType = Core.Nothing,
+      uploadProtocol = Core.Nothing
+    }
+
+instance Core.GoogleRequest AndroidPublisherOrdersRefund where
+  type Rs AndroidPublisherOrdersRefund = ()
+  type
+    Scopes AndroidPublisherOrdersRefund =
+      '[Androidpublisher'FullControl]
+  requestClient AndroidPublisherOrdersRefund {..} =
+    go
+      packageName
+      orderId
+      xgafv
+      accessToken
+      callback
+      revoke
+      uploadType
+      uploadProtocol
+      (Core.Just Core.AltJSON)
+      androidPublisherService
+    where
+      go =
+        Core.buildClient
+          (Core.Proxy :: Core.Proxy AndroidPublisherOrdersRefundResource)
+          Core.mempty
diff --git a/gen/Gogol/AndroidPublisher/Purchases/Products/Acknowledge.hs b/gen/Gogol/AndroidPublisher/Purchases/Products/Acknowledge.hs
new file mode 100644
--- /dev/null
+++ b/gen/Gogol/AndroidPublisher/Purchases/Products/Acknowledge.hs
@@ -0,0 +1,145 @@
+{-# LANGUAGE DataKinds #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE ImportQualifiedPost #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-name-shadowing #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- |
+-- Module      : Gogol.AndroidPublisher.Purchases.Products.Acknowledge
+-- Copyright   : (c) 2015-2025 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay+gogol@gmail.com>
+--               Toni Cebrián <toni@tonicebrian.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Acknowledges a purchase of an inapp item.
+--
+-- /See:/ <https://developers.google.com/android-publisher Google Play Android Developer API Reference> for @androidpublisher.purchases.products.acknowledge@.
+module Gogol.AndroidPublisher.Purchases.Products.Acknowledge
+  ( -- * Resource
+    AndroidPublisherPurchasesProductsAcknowledgeResource,
+
+    -- ** Constructing a Request
+    AndroidPublisherPurchasesProductsAcknowledge (..),
+    newAndroidPublisherPurchasesProductsAcknowledge,
+  )
+where
+
+import Gogol.AndroidPublisher.Types
+import Gogol.Prelude qualified as Core
+
+-- | A resource alias for @androidpublisher.purchases.products.acknowledge@ method which the
+-- 'AndroidPublisherPurchasesProductsAcknowledge' request conforms to.
+type AndroidPublisherPurchasesProductsAcknowledgeResource =
+  "androidpublisher"
+    Core.:> "v3"
+    Core.:> "applications"
+    Core.:> Core.Capture "packageName" Core.Text
+    Core.:> "purchases"
+    Core.:> "products"
+    Core.:> Core.Capture "productId" Core.Text
+    Core.:> "tokens"
+    Core.:> Core.CaptureMode "token" "acknowledge" Core.Text
+    Core.:> Core.QueryParam "$.xgafv" Xgafv
+    Core.:> Core.QueryParam "access_token" Core.Text
+    Core.:> Core.QueryParam "callback" Core.Text
+    Core.:> Core.QueryParam "uploadType" Core.Text
+    Core.:> Core.QueryParam "upload_protocol" Core.Text
+    Core.:> Core.QueryParam "alt" Core.AltJSON
+    Core.:> Core.ReqBody '[Core.JSON] ProductPurchasesAcknowledgeRequest
+    Core.:> Core.Post '[Core.JSON] ()
+
+-- | Acknowledges a purchase of an inapp item.
+--
+-- /See:/ 'newAndroidPublisherPurchasesProductsAcknowledge' smart constructor.
+data AndroidPublisherPurchasesProductsAcknowledge = AndroidPublisherPurchasesProductsAcknowledge
+  { -- | V1 error format.
+    xgafv :: (Core.Maybe Xgafv),
+    -- | OAuth access token.
+    accessToken :: (Core.Maybe Core.Text),
+    -- | JSONP
+    callback :: (Core.Maybe Core.Text),
+    -- | The package name of the application the inapp product was sold in (for example, \'com.some.thing\').
+    packageName :: Core.Text,
+    -- | Multipart request metadata.
+    payload :: ProductPurchasesAcknowledgeRequest,
+    -- | The inapp product SKU (for example, \'com.some.thing.inapp1\').
+    productId :: Core.Text,
+    -- | The token provided to the user\'s device when the inapp product was purchased.
+    token :: Core.Text,
+    -- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
+    uploadType :: (Core.Maybe Core.Text),
+    -- | Upload protocol for media (e.g. \"raw\", \"multipart\").
+    uploadProtocol :: (Core.Maybe Core.Text)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'AndroidPublisherPurchasesProductsAcknowledge' with the minimum fields required to make a request.
+newAndroidPublisherPurchasesProductsAcknowledge ::
+  -- |  The package name of the application the inapp product was sold in (for example, \'com.some.thing\'). See 'packageName'.
+  Core.Text ->
+  -- |  Multipart request metadata. See 'payload'.
+  ProductPurchasesAcknowledgeRequest ->
+  -- |  The inapp product SKU (for example, \'com.some.thing.inapp1\'). See 'productId'.
+  Core.Text ->
+  -- |  The token provided to the user\'s device when the inapp product was purchased. See 'token'.
+  Core.Text ->
+  AndroidPublisherPurchasesProductsAcknowledge
+newAndroidPublisherPurchasesProductsAcknowledge
+  packageName
+  payload
+  productId
+  token =
+    AndroidPublisherPurchasesProductsAcknowledge
+      { xgafv =
+          Core.Nothing,
+        accessToken = Core.Nothing,
+        callback = Core.Nothing,
+        packageName = packageName,
+        payload = payload,
+        productId = productId,
+        token = token,
+        uploadType = Core.Nothing,
+        uploadProtocol = Core.Nothing
+      }
+
+instance
+  Core.GoogleRequest
+    AndroidPublisherPurchasesProductsAcknowledge
+  where
+  type Rs AndroidPublisherPurchasesProductsAcknowledge = ()
+  type
+    Scopes AndroidPublisherPurchasesProductsAcknowledge =
+      '[Androidpublisher'FullControl]
+  requestClient AndroidPublisherPurchasesProductsAcknowledge {..} =
+    go
+      packageName
+      productId
+      token
+      xgafv
+      accessToken
+      callback
+      uploadType
+      uploadProtocol
+      (Core.Just Core.AltJSON)
+      payload
+      androidPublisherService
+    where
+      go =
+        Core.buildClient
+          ( Core.Proxy ::
+              Core.Proxy AndroidPublisherPurchasesProductsAcknowledgeResource
+          )
+          Core.mempty
diff --git a/gen/Gogol/AndroidPublisher/Purchases/Products/Consume.hs b/gen/Gogol/AndroidPublisher/Purchases/Products/Consume.hs
new file mode 100644
--- /dev/null
+++ b/gen/Gogol/AndroidPublisher/Purchases/Products/Consume.hs
@@ -0,0 +1,136 @@
+{-# LANGUAGE DataKinds #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE ImportQualifiedPost #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-name-shadowing #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- |
+-- Module      : Gogol.AndroidPublisher.Purchases.Products.Consume
+-- Copyright   : (c) 2015-2025 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay+gogol@gmail.com>
+--               Toni Cebrián <toni@tonicebrian.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Consumes a purchase for an inapp item.
+--
+-- /See:/ <https://developers.google.com/android-publisher Google Play Android Developer API Reference> for @androidpublisher.purchases.products.consume@.
+module Gogol.AndroidPublisher.Purchases.Products.Consume
+  ( -- * Resource
+    AndroidPublisherPurchasesProductsConsumeResource,
+
+    -- ** Constructing a Request
+    AndroidPublisherPurchasesProductsConsume (..),
+    newAndroidPublisherPurchasesProductsConsume,
+  )
+where
+
+import Gogol.AndroidPublisher.Types
+import Gogol.Prelude qualified as Core
+
+-- | A resource alias for @androidpublisher.purchases.products.consume@ method which the
+-- 'AndroidPublisherPurchasesProductsConsume' request conforms to.
+type AndroidPublisherPurchasesProductsConsumeResource =
+  "androidpublisher"
+    Core.:> "v3"
+    Core.:> "applications"
+    Core.:> Core.Capture "packageName" Core.Text
+    Core.:> "purchases"
+    Core.:> "products"
+    Core.:> Core.Capture "productId" Core.Text
+    Core.:> "tokens"
+    Core.:> Core.CaptureMode "token" "consume" Core.Text
+    Core.:> Core.QueryParam "$.xgafv" Xgafv
+    Core.:> Core.QueryParam "access_token" Core.Text
+    Core.:> Core.QueryParam "callback" Core.Text
+    Core.:> Core.QueryParam "uploadType" Core.Text
+    Core.:> Core.QueryParam "upload_protocol" Core.Text
+    Core.:> Core.QueryParam "alt" Core.AltJSON
+    Core.:> Core.Post '[Core.JSON] ()
+
+-- | Consumes a purchase for an inapp item.
+--
+-- /See:/ 'newAndroidPublisherPurchasesProductsConsume' smart constructor.
+data AndroidPublisherPurchasesProductsConsume = AndroidPublisherPurchasesProductsConsume
+  { -- | V1 error format.
+    xgafv :: (Core.Maybe Xgafv),
+    -- | OAuth access token.
+    accessToken :: (Core.Maybe Core.Text),
+    -- | JSONP
+    callback :: (Core.Maybe Core.Text),
+    -- | The package name of the application the inapp product was sold in (for example, \'com.some.thing\').
+    packageName :: Core.Text,
+    -- | The inapp product SKU (for example, \'com.some.thing.inapp1\').
+    productId :: Core.Text,
+    -- | The token provided to the user\'s device when the inapp product was purchased.
+    token :: Core.Text,
+    -- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
+    uploadType :: (Core.Maybe Core.Text),
+    -- | Upload protocol for media (e.g. \"raw\", \"multipart\").
+    uploadProtocol :: (Core.Maybe Core.Text)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'AndroidPublisherPurchasesProductsConsume' with the minimum fields required to make a request.
+newAndroidPublisherPurchasesProductsConsume ::
+  -- |  The package name of the application the inapp product was sold in (for example, \'com.some.thing\'). See 'packageName'.
+  Core.Text ->
+  -- |  The inapp product SKU (for example, \'com.some.thing.inapp1\'). See 'productId'.
+  Core.Text ->
+  -- |  The token provided to the user\'s device when the inapp product was purchased. See 'token'.
+  Core.Text ->
+  AndroidPublisherPurchasesProductsConsume
+newAndroidPublisherPurchasesProductsConsume
+  packageName
+  productId
+  token =
+    AndroidPublisherPurchasesProductsConsume
+      { xgafv = Core.Nothing,
+        accessToken = Core.Nothing,
+        callback = Core.Nothing,
+        packageName = packageName,
+        productId = productId,
+        token = token,
+        uploadType = Core.Nothing,
+        uploadProtocol = Core.Nothing
+      }
+
+instance
+  Core.GoogleRequest
+    AndroidPublisherPurchasesProductsConsume
+  where
+  type Rs AndroidPublisherPurchasesProductsConsume = ()
+  type
+    Scopes AndroidPublisherPurchasesProductsConsume =
+      '[Androidpublisher'FullControl]
+  requestClient AndroidPublisherPurchasesProductsConsume {..} =
+    go
+      packageName
+      productId
+      token
+      xgafv
+      accessToken
+      callback
+      uploadType
+      uploadProtocol
+      (Core.Just Core.AltJSON)
+      androidPublisherService
+    where
+      go =
+        Core.buildClient
+          ( Core.Proxy ::
+              Core.Proxy AndroidPublisherPurchasesProductsConsumeResource
+          )
+          Core.mempty
diff --git a/gen/Gogol/AndroidPublisher/Purchases/Products/Get.hs b/gen/Gogol/AndroidPublisher/Purchases/Products/Get.hs
new file mode 100644
--- /dev/null
+++ b/gen/Gogol/AndroidPublisher/Purchases/Products/Get.hs
@@ -0,0 +1,130 @@
+{-# LANGUAGE DataKinds #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE ImportQualifiedPost #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-name-shadowing #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- |
+-- Module      : Gogol.AndroidPublisher.Purchases.Products.Get
+-- Copyright   : (c) 2015-2025 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay+gogol@gmail.com>
+--               Toni Cebrián <toni@tonicebrian.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Checks the purchase and consumption status of an inapp item.
+--
+-- /See:/ <https://developers.google.com/android-publisher Google Play Android Developer API Reference> for @androidpublisher.purchases.products.get@.
+module Gogol.AndroidPublisher.Purchases.Products.Get
+  ( -- * Resource
+    AndroidPublisherPurchasesProductsGetResource,
+
+    -- ** Constructing a Request
+    AndroidPublisherPurchasesProductsGet (..),
+    newAndroidPublisherPurchasesProductsGet,
+  )
+where
+
+import Gogol.AndroidPublisher.Types
+import Gogol.Prelude qualified as Core
+
+-- | A resource alias for @androidpublisher.purchases.products.get@ method which the
+-- 'AndroidPublisherPurchasesProductsGet' request conforms to.
+type AndroidPublisherPurchasesProductsGetResource =
+  "androidpublisher"
+    Core.:> "v3"
+    Core.:> "applications"
+    Core.:> Core.Capture "packageName" Core.Text
+    Core.:> "purchases"
+    Core.:> "products"
+    Core.:> Core.Capture "productId" Core.Text
+    Core.:> "tokens"
+    Core.:> Core.Capture "token" Core.Text
+    Core.:> Core.QueryParam "$.xgafv" Xgafv
+    Core.:> Core.QueryParam "access_token" Core.Text
+    Core.:> Core.QueryParam "callback" Core.Text
+    Core.:> Core.QueryParam "uploadType" Core.Text
+    Core.:> Core.QueryParam "upload_protocol" Core.Text
+    Core.:> Core.QueryParam "alt" Core.AltJSON
+    Core.:> Core.Get '[Core.JSON] ProductPurchase
+
+-- | Checks the purchase and consumption status of an inapp item.
+--
+-- /See:/ 'newAndroidPublisherPurchasesProductsGet' smart constructor.
+data AndroidPublisherPurchasesProductsGet = AndroidPublisherPurchasesProductsGet
+  { -- | V1 error format.
+    xgafv :: (Core.Maybe Xgafv),
+    -- | OAuth access token.
+    accessToken :: (Core.Maybe Core.Text),
+    -- | JSONP
+    callback :: (Core.Maybe Core.Text),
+    -- | The package name of the application the inapp product was sold in (for example, \'com.some.thing\').
+    packageName :: Core.Text,
+    -- | The inapp product SKU (for example, \'com.some.thing.inapp1\').
+    productId :: Core.Text,
+    -- | The token provided to the user\'s device when the inapp product was purchased.
+    token :: Core.Text,
+    -- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
+    uploadType :: (Core.Maybe Core.Text),
+    -- | Upload protocol for media (e.g. \"raw\", \"multipart\").
+    uploadProtocol :: (Core.Maybe Core.Text)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'AndroidPublisherPurchasesProductsGet' with the minimum fields required to make a request.
+newAndroidPublisherPurchasesProductsGet ::
+  -- |  The package name of the application the inapp product was sold in (for example, \'com.some.thing\'). See 'packageName'.
+  Core.Text ->
+  -- |  The inapp product SKU (for example, \'com.some.thing.inapp1\'). See 'productId'.
+  Core.Text ->
+  -- |  The token provided to the user\'s device when the inapp product was purchased. See 'token'.
+  Core.Text ->
+  AndroidPublisherPurchasesProductsGet
+newAndroidPublisherPurchasesProductsGet packageName productId token =
+  AndroidPublisherPurchasesProductsGet
+    { xgafv = Core.Nothing,
+      accessToken = Core.Nothing,
+      callback = Core.Nothing,
+      packageName = packageName,
+      productId = productId,
+      token = token,
+      uploadType = Core.Nothing,
+      uploadProtocol = Core.Nothing
+    }
+
+instance Core.GoogleRequest AndroidPublisherPurchasesProductsGet where
+  type Rs AndroidPublisherPurchasesProductsGet = ProductPurchase
+  type
+    Scopes AndroidPublisherPurchasesProductsGet =
+      '[Androidpublisher'FullControl]
+  requestClient AndroidPublisherPurchasesProductsGet {..} =
+    go
+      packageName
+      productId
+      token
+      xgafv
+      accessToken
+      callback
+      uploadType
+      uploadProtocol
+      (Core.Just Core.AltJSON)
+      androidPublisherService
+    where
+      go =
+        Core.buildClient
+          ( Core.Proxy ::
+              Core.Proxy AndroidPublisherPurchasesProductsGetResource
+          )
+          Core.mempty
diff --git a/gen/Gogol/AndroidPublisher/Purchases/Subscriptions/Acknowledge.hs b/gen/Gogol/AndroidPublisher/Purchases/Subscriptions/Acknowledge.hs
new file mode 100644
--- /dev/null
+++ b/gen/Gogol/AndroidPublisher/Purchases/Subscriptions/Acknowledge.hs
@@ -0,0 +1,146 @@
+{-# LANGUAGE DataKinds #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE ImportQualifiedPost #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-name-shadowing #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- |
+-- Module      : Gogol.AndroidPublisher.Purchases.Subscriptions.Acknowledge
+-- Copyright   : (c) 2015-2025 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay+gogol@gmail.com>
+--               Toni Cebrián <toni@tonicebrian.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Acknowledges a subscription purchase.
+--
+-- /See:/ <https://developers.google.com/android-publisher Google Play Android Developer API Reference> for @androidpublisher.purchases.subscriptions.acknowledge@.
+module Gogol.AndroidPublisher.Purchases.Subscriptions.Acknowledge
+  ( -- * Resource
+    AndroidPublisherPurchasesSubscriptionsAcknowledgeResource,
+
+    -- ** Constructing a Request
+    AndroidPublisherPurchasesSubscriptionsAcknowledge (..),
+    newAndroidPublisherPurchasesSubscriptionsAcknowledge,
+  )
+where
+
+import Gogol.AndroidPublisher.Types
+import Gogol.Prelude qualified as Core
+
+-- | A resource alias for @androidpublisher.purchases.subscriptions.acknowledge@ method which the
+-- 'AndroidPublisherPurchasesSubscriptionsAcknowledge' request conforms to.
+type AndroidPublisherPurchasesSubscriptionsAcknowledgeResource =
+  "androidpublisher"
+    Core.:> "v3"
+    Core.:> "applications"
+    Core.:> Core.Capture "packageName" Core.Text
+    Core.:> "purchases"
+    Core.:> "subscriptions"
+    Core.:> Core.Capture "subscriptionId" Core.Text
+    Core.:> "tokens"
+    Core.:> Core.CaptureMode "token" "acknowledge" Core.Text
+    Core.:> Core.QueryParam "$.xgafv" Xgafv
+    Core.:> Core.QueryParam "access_token" Core.Text
+    Core.:> Core.QueryParam "callback" Core.Text
+    Core.:> Core.QueryParam "uploadType" Core.Text
+    Core.:> Core.QueryParam "upload_protocol" Core.Text
+    Core.:> Core.QueryParam "alt" Core.AltJSON
+    Core.:> Core.ReqBody '[Core.JSON] SubscriptionPurchasesAcknowledgeRequest
+    Core.:> Core.Post '[Core.JSON] ()
+
+-- | Acknowledges a subscription purchase.
+--
+-- /See:/ 'newAndroidPublisherPurchasesSubscriptionsAcknowledge' smart constructor.
+data AndroidPublisherPurchasesSubscriptionsAcknowledge = AndroidPublisherPurchasesSubscriptionsAcknowledge
+  { -- | V1 error format.
+    xgafv :: (Core.Maybe Xgafv),
+    -- | OAuth access token.
+    accessToken :: (Core.Maybe Core.Text),
+    -- | JSONP
+    callback :: (Core.Maybe Core.Text),
+    -- | The package name of the application for which this subscription was purchased (for example, \'com.some.thing\').
+    packageName :: Core.Text,
+    -- | Multipart request metadata.
+    payload :: SubscriptionPurchasesAcknowledgeRequest,
+    -- | The purchased subscription ID (for example, \'monthly001\').
+    subscriptionId :: Core.Text,
+    -- | The token provided to the user\'s device when the subscription was purchased.
+    token :: Core.Text,
+    -- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
+    uploadType :: (Core.Maybe Core.Text),
+    -- | Upload protocol for media (e.g. \"raw\", \"multipart\").
+    uploadProtocol :: (Core.Maybe Core.Text)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'AndroidPublisherPurchasesSubscriptionsAcknowledge' with the minimum fields required to make a request.
+newAndroidPublisherPurchasesSubscriptionsAcknowledge ::
+  -- |  The package name of the application for which this subscription was purchased (for example, \'com.some.thing\'). See 'packageName'.
+  Core.Text ->
+  -- |  Multipart request metadata. See 'payload'.
+  SubscriptionPurchasesAcknowledgeRequest ->
+  -- |  The purchased subscription ID (for example, \'monthly001\'). See 'subscriptionId'.
+  Core.Text ->
+  -- |  The token provided to the user\'s device when the subscription was purchased. See 'token'.
+  Core.Text ->
+  AndroidPublisherPurchasesSubscriptionsAcknowledge
+newAndroidPublisherPurchasesSubscriptionsAcknowledge
+  packageName
+  payload
+  subscriptionId
+  token =
+    AndroidPublisherPurchasesSubscriptionsAcknowledge
+      { xgafv =
+          Core.Nothing,
+        accessToken = Core.Nothing,
+        callback = Core.Nothing,
+        packageName = packageName,
+        payload = payload,
+        subscriptionId = subscriptionId,
+        token = token,
+        uploadType = Core.Nothing,
+        uploadProtocol = Core.Nothing
+      }
+
+instance
+  Core.GoogleRequest
+    AndroidPublisherPurchasesSubscriptionsAcknowledge
+  where
+  type Rs AndroidPublisherPurchasesSubscriptionsAcknowledge = ()
+  type
+    Scopes AndroidPublisherPurchasesSubscriptionsAcknowledge =
+      '[Androidpublisher'FullControl]
+  requestClient AndroidPublisherPurchasesSubscriptionsAcknowledge {..} =
+    go
+      packageName
+      subscriptionId
+      token
+      xgafv
+      accessToken
+      callback
+      uploadType
+      uploadProtocol
+      (Core.Just Core.AltJSON)
+      payload
+      androidPublisherService
+    where
+      go =
+        Core.buildClient
+          ( Core.Proxy ::
+              Core.Proxy
+                AndroidPublisherPurchasesSubscriptionsAcknowledgeResource
+          )
+          Core.mempty
diff --git a/gen/Gogol/AndroidPublisher/Purchases/Subscriptions/Cancel.hs b/gen/Gogol/AndroidPublisher/Purchases/Subscriptions/Cancel.hs
new file mode 100644
--- /dev/null
+++ b/gen/Gogol/AndroidPublisher/Purchases/Subscriptions/Cancel.hs
@@ -0,0 +1,137 @@
+{-# LANGUAGE DataKinds #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE ImportQualifiedPost #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-name-shadowing #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- |
+-- Module      : Gogol.AndroidPublisher.Purchases.Subscriptions.Cancel
+-- Copyright   : (c) 2015-2025 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay+gogol@gmail.com>
+--               Toni Cebrián <toni@tonicebrian.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Cancels a user\'s subscription purchase. The subscription remains valid until its expiration time.
+--
+-- /See:/ <https://developers.google.com/android-publisher Google Play Android Developer API Reference> for @androidpublisher.purchases.subscriptions.cancel@.
+module Gogol.AndroidPublisher.Purchases.Subscriptions.Cancel
+  ( -- * Resource
+    AndroidPublisherPurchasesSubscriptionsCancelResource,
+
+    -- ** Constructing a Request
+    AndroidPublisherPurchasesSubscriptionsCancel (..),
+    newAndroidPublisherPurchasesSubscriptionsCancel,
+  )
+where
+
+import Gogol.AndroidPublisher.Types
+import Gogol.Prelude qualified as Core
+
+-- | A resource alias for @androidpublisher.purchases.subscriptions.cancel@ method which the
+-- 'AndroidPublisherPurchasesSubscriptionsCancel' request conforms to.
+type AndroidPublisherPurchasesSubscriptionsCancelResource =
+  "androidpublisher"
+    Core.:> "v3"
+    Core.:> "applications"
+    Core.:> Core.Capture "packageName" Core.Text
+    Core.:> "purchases"
+    Core.:> "subscriptions"
+    Core.:> Core.Capture "subscriptionId" Core.Text
+    Core.:> "tokens"
+    Core.:> Core.CaptureMode "token" "cancel" Core.Text
+    Core.:> Core.QueryParam "$.xgafv" Xgafv
+    Core.:> Core.QueryParam "access_token" Core.Text
+    Core.:> Core.QueryParam "callback" Core.Text
+    Core.:> Core.QueryParam "uploadType" Core.Text
+    Core.:> Core.QueryParam "upload_protocol" Core.Text
+    Core.:> Core.QueryParam "alt" Core.AltJSON
+    Core.:> Core.Post '[Core.JSON] ()
+
+-- | Cancels a user\'s subscription purchase. The subscription remains valid until its expiration time.
+--
+-- /See:/ 'newAndroidPublisherPurchasesSubscriptionsCancel' smart constructor.
+data AndroidPublisherPurchasesSubscriptionsCancel = AndroidPublisherPurchasesSubscriptionsCancel
+  { -- | V1 error format.
+    xgafv :: (Core.Maybe Xgafv),
+    -- | OAuth access token.
+    accessToken :: (Core.Maybe Core.Text),
+    -- | JSONP
+    callback :: (Core.Maybe Core.Text),
+    -- | The package name of the application for which this subscription was purchased (for example, \'com.some.thing\').
+    packageName :: Core.Text,
+    -- | The purchased subscription ID (for example, \'monthly001\').
+    subscriptionId :: Core.Text,
+    -- | The token provided to the user\'s device when the subscription was purchased.
+    token :: Core.Text,
+    -- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
+    uploadType :: (Core.Maybe Core.Text),
+    -- | Upload protocol for media (e.g. \"raw\", \"multipart\").
+    uploadProtocol :: (Core.Maybe Core.Text)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'AndroidPublisherPurchasesSubscriptionsCancel' with the minimum fields required to make a request.
+newAndroidPublisherPurchasesSubscriptionsCancel ::
+  -- |  The package name of the application for which this subscription was purchased (for example, \'com.some.thing\'). See 'packageName'.
+  Core.Text ->
+  -- |  The purchased subscription ID (for example, \'monthly001\'). See 'subscriptionId'.
+  Core.Text ->
+  -- |  The token provided to the user\'s device when the subscription was purchased. See 'token'.
+  Core.Text ->
+  AndroidPublisherPurchasesSubscriptionsCancel
+newAndroidPublisherPurchasesSubscriptionsCancel
+  packageName
+  subscriptionId
+  token =
+    AndroidPublisherPurchasesSubscriptionsCancel
+      { xgafv =
+          Core.Nothing,
+        accessToken = Core.Nothing,
+        callback = Core.Nothing,
+        packageName = packageName,
+        subscriptionId = subscriptionId,
+        token = token,
+        uploadType = Core.Nothing,
+        uploadProtocol = Core.Nothing
+      }
+
+instance
+  Core.GoogleRequest
+    AndroidPublisherPurchasesSubscriptionsCancel
+  where
+  type Rs AndroidPublisherPurchasesSubscriptionsCancel = ()
+  type
+    Scopes AndroidPublisherPurchasesSubscriptionsCancel =
+      '[Androidpublisher'FullControl]
+  requestClient AndroidPublisherPurchasesSubscriptionsCancel {..} =
+    go
+      packageName
+      subscriptionId
+      token
+      xgafv
+      accessToken
+      callback
+      uploadType
+      uploadProtocol
+      (Core.Just Core.AltJSON)
+      androidPublisherService
+    where
+      go =
+        Core.buildClient
+          ( Core.Proxy ::
+              Core.Proxy AndroidPublisherPurchasesSubscriptionsCancelResource
+          )
+          Core.mempty
diff --git a/gen/Gogol/AndroidPublisher/Purchases/Subscriptions/Defer.hs b/gen/Gogol/AndroidPublisher/Purchases/Subscriptions/Defer.hs
new file mode 100644
--- /dev/null
+++ b/gen/Gogol/AndroidPublisher/Purchases/Subscriptions/Defer.hs
@@ -0,0 +1,146 @@
+{-# LANGUAGE DataKinds #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE ImportQualifiedPost #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-name-shadowing #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- |
+-- Module      : Gogol.AndroidPublisher.Purchases.Subscriptions.Defer
+-- Copyright   : (c) 2015-2025 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay+gogol@gmail.com>
+--               Toni Cebrián <toni@tonicebrian.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Defers a user\'s subscription purchase until a specified future expiration time.
+--
+-- /See:/ <https://developers.google.com/android-publisher Google Play Android Developer API Reference> for @androidpublisher.purchases.subscriptions.defer@.
+module Gogol.AndroidPublisher.Purchases.Subscriptions.Defer
+  ( -- * Resource
+    AndroidPublisherPurchasesSubscriptionsDeferResource,
+
+    -- ** Constructing a Request
+    AndroidPublisherPurchasesSubscriptionsDefer (..),
+    newAndroidPublisherPurchasesSubscriptionsDefer,
+  )
+where
+
+import Gogol.AndroidPublisher.Types
+import Gogol.Prelude qualified as Core
+
+-- | A resource alias for @androidpublisher.purchases.subscriptions.defer@ method which the
+-- 'AndroidPublisherPurchasesSubscriptionsDefer' request conforms to.
+type AndroidPublisherPurchasesSubscriptionsDeferResource =
+  "androidpublisher"
+    Core.:> "v3"
+    Core.:> "applications"
+    Core.:> Core.Capture "packageName" Core.Text
+    Core.:> "purchases"
+    Core.:> "subscriptions"
+    Core.:> Core.Capture "subscriptionId" Core.Text
+    Core.:> "tokens"
+    Core.:> Core.CaptureMode "token" "defer" Core.Text
+    Core.:> Core.QueryParam "$.xgafv" Xgafv
+    Core.:> Core.QueryParam "access_token" Core.Text
+    Core.:> Core.QueryParam "callback" Core.Text
+    Core.:> Core.QueryParam "uploadType" Core.Text
+    Core.:> Core.QueryParam "upload_protocol" Core.Text
+    Core.:> Core.QueryParam "alt" Core.AltJSON
+    Core.:> Core.ReqBody '[Core.JSON] SubscriptionPurchasesDeferRequest
+    Core.:> Core.Post '[Core.JSON] SubscriptionPurchasesDeferResponse
+
+-- | Defers a user\'s subscription purchase until a specified future expiration time.
+--
+-- /See:/ 'newAndroidPublisherPurchasesSubscriptionsDefer' smart constructor.
+data AndroidPublisherPurchasesSubscriptionsDefer = AndroidPublisherPurchasesSubscriptionsDefer
+  { -- | V1 error format.
+    xgafv :: (Core.Maybe Xgafv),
+    -- | OAuth access token.
+    accessToken :: (Core.Maybe Core.Text),
+    -- | JSONP
+    callback :: (Core.Maybe Core.Text),
+    -- | The package name of the application for which this subscription was purchased (for example, \'com.some.thing\').
+    packageName :: Core.Text,
+    -- | Multipart request metadata.
+    payload :: SubscriptionPurchasesDeferRequest,
+    -- | The purchased subscription ID (for example, \'monthly001\').
+    subscriptionId :: Core.Text,
+    -- | The token provided to the user\'s device when the subscription was purchased.
+    token :: Core.Text,
+    -- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
+    uploadType :: (Core.Maybe Core.Text),
+    -- | Upload protocol for media (e.g. \"raw\", \"multipart\").
+    uploadProtocol :: (Core.Maybe Core.Text)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'AndroidPublisherPurchasesSubscriptionsDefer' with the minimum fields required to make a request.
+newAndroidPublisherPurchasesSubscriptionsDefer ::
+  -- |  The package name of the application for which this subscription was purchased (for example, \'com.some.thing\'). See 'packageName'.
+  Core.Text ->
+  -- |  Multipart request metadata. See 'payload'.
+  SubscriptionPurchasesDeferRequest ->
+  -- |  The purchased subscription ID (for example, \'monthly001\'). See 'subscriptionId'.
+  Core.Text ->
+  -- |  The token provided to the user\'s device when the subscription was purchased. See 'token'.
+  Core.Text ->
+  AndroidPublisherPurchasesSubscriptionsDefer
+newAndroidPublisherPurchasesSubscriptionsDefer
+  packageName
+  payload
+  subscriptionId
+  token =
+    AndroidPublisherPurchasesSubscriptionsDefer
+      { xgafv = Core.Nothing,
+        accessToken = Core.Nothing,
+        callback = Core.Nothing,
+        packageName = packageName,
+        payload = payload,
+        subscriptionId = subscriptionId,
+        token = token,
+        uploadType = Core.Nothing,
+        uploadProtocol = Core.Nothing
+      }
+
+instance
+  Core.GoogleRequest
+    AndroidPublisherPurchasesSubscriptionsDefer
+  where
+  type
+    Rs AndroidPublisherPurchasesSubscriptionsDefer =
+      SubscriptionPurchasesDeferResponse
+  type
+    Scopes AndroidPublisherPurchasesSubscriptionsDefer =
+      '[Androidpublisher'FullControl]
+  requestClient AndroidPublisherPurchasesSubscriptionsDefer {..} =
+    go
+      packageName
+      subscriptionId
+      token
+      xgafv
+      accessToken
+      callback
+      uploadType
+      uploadProtocol
+      (Core.Just Core.AltJSON)
+      payload
+      androidPublisherService
+    where
+      go =
+        Core.buildClient
+          ( Core.Proxy ::
+              Core.Proxy AndroidPublisherPurchasesSubscriptionsDeferResource
+          )
+          Core.mempty
diff --git a/gen/Gogol/AndroidPublisher/Purchases/Subscriptions/Get.hs b/gen/Gogol/AndroidPublisher/Purchases/Subscriptions/Get.hs
new file mode 100644
--- /dev/null
+++ b/gen/Gogol/AndroidPublisher/Purchases/Subscriptions/Get.hs
@@ -0,0 +1,138 @@
+{-# LANGUAGE DataKinds #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE ImportQualifiedPost #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-name-shadowing #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- |
+-- Module      : Gogol.AndroidPublisher.Purchases.Subscriptions.Get
+-- Copyright   : (c) 2015-2025 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay+gogol@gmail.com>
+--               Toni Cebrián <toni@tonicebrian.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Checks whether a user\'s subscription purchase is valid and returns its expiry time.
+--
+-- /See:/ <https://developers.google.com/android-publisher Google Play Android Developer API Reference> for @androidpublisher.purchases.subscriptions.get@.
+module Gogol.AndroidPublisher.Purchases.Subscriptions.Get
+  ( -- * Resource
+    AndroidPublisherPurchasesSubscriptionsGetResource,
+
+    -- ** Constructing a Request
+    AndroidPublisherPurchasesSubscriptionsGet (..),
+    newAndroidPublisherPurchasesSubscriptionsGet,
+  )
+where
+
+import Gogol.AndroidPublisher.Types
+import Gogol.Prelude qualified as Core
+
+-- | A resource alias for @androidpublisher.purchases.subscriptions.get@ method which the
+-- 'AndroidPublisherPurchasesSubscriptionsGet' request conforms to.
+type AndroidPublisherPurchasesSubscriptionsGetResource =
+  "androidpublisher"
+    Core.:> "v3"
+    Core.:> "applications"
+    Core.:> Core.Capture "packageName" Core.Text
+    Core.:> "purchases"
+    Core.:> "subscriptions"
+    Core.:> Core.Capture "subscriptionId" Core.Text
+    Core.:> "tokens"
+    Core.:> Core.Capture "token" Core.Text
+    Core.:> Core.QueryParam "$.xgafv" Xgafv
+    Core.:> Core.QueryParam "access_token" Core.Text
+    Core.:> Core.QueryParam "callback" Core.Text
+    Core.:> Core.QueryParam "uploadType" Core.Text
+    Core.:> Core.QueryParam "upload_protocol" Core.Text
+    Core.:> Core.QueryParam "alt" Core.AltJSON
+    Core.:> Core.Get '[Core.JSON] SubscriptionPurchase
+
+-- | Checks whether a user\'s subscription purchase is valid and returns its expiry time.
+--
+-- /See:/ 'newAndroidPublisherPurchasesSubscriptionsGet' smart constructor.
+data AndroidPublisherPurchasesSubscriptionsGet = AndroidPublisherPurchasesSubscriptionsGet
+  { -- | V1 error format.
+    xgafv :: (Core.Maybe Xgafv),
+    -- | OAuth access token.
+    accessToken :: (Core.Maybe Core.Text),
+    -- | JSONP
+    callback :: (Core.Maybe Core.Text),
+    -- | The package name of the application for which this subscription was purchased (for example, \'com.some.thing\').
+    packageName :: Core.Text,
+    -- | The purchased subscription ID (for example, \'monthly001\').
+    subscriptionId :: Core.Text,
+    -- | The token provided to the user\'s device when the subscription was purchased.
+    token :: Core.Text,
+    -- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
+    uploadType :: (Core.Maybe Core.Text),
+    -- | Upload protocol for media (e.g. \"raw\", \"multipart\").
+    uploadProtocol :: (Core.Maybe Core.Text)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'AndroidPublisherPurchasesSubscriptionsGet' with the minimum fields required to make a request.
+newAndroidPublisherPurchasesSubscriptionsGet ::
+  -- |  The package name of the application for which this subscription was purchased (for example, \'com.some.thing\'). See 'packageName'.
+  Core.Text ->
+  -- |  The purchased subscription ID (for example, \'monthly001\'). See 'subscriptionId'.
+  Core.Text ->
+  -- |  The token provided to the user\'s device when the subscription was purchased. See 'token'.
+  Core.Text ->
+  AndroidPublisherPurchasesSubscriptionsGet
+newAndroidPublisherPurchasesSubscriptionsGet
+  packageName
+  subscriptionId
+  token =
+    AndroidPublisherPurchasesSubscriptionsGet
+      { xgafv = Core.Nothing,
+        accessToken = Core.Nothing,
+        callback = Core.Nothing,
+        packageName = packageName,
+        subscriptionId = subscriptionId,
+        token = token,
+        uploadType = Core.Nothing,
+        uploadProtocol = Core.Nothing
+      }
+
+instance
+  Core.GoogleRequest
+    AndroidPublisherPurchasesSubscriptionsGet
+  where
+  type
+    Rs AndroidPublisherPurchasesSubscriptionsGet =
+      SubscriptionPurchase
+  type
+    Scopes AndroidPublisherPurchasesSubscriptionsGet =
+      '[Androidpublisher'FullControl]
+  requestClient AndroidPublisherPurchasesSubscriptionsGet {..} =
+    go
+      packageName
+      subscriptionId
+      token
+      xgafv
+      accessToken
+      callback
+      uploadType
+      uploadProtocol
+      (Core.Just Core.AltJSON)
+      androidPublisherService
+    where
+      go =
+        Core.buildClient
+          ( Core.Proxy ::
+              Core.Proxy AndroidPublisherPurchasesSubscriptionsGetResource
+          )
+          Core.mempty
diff --git a/gen/Gogol/AndroidPublisher/Purchases/Subscriptions/Refund.hs b/gen/Gogol/AndroidPublisher/Purchases/Subscriptions/Refund.hs
new file mode 100644
--- /dev/null
+++ b/gen/Gogol/AndroidPublisher/Purchases/Subscriptions/Refund.hs
@@ -0,0 +1,137 @@
+{-# LANGUAGE DataKinds #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE ImportQualifiedPost #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-name-shadowing #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- |
+-- Module      : Gogol.AndroidPublisher.Purchases.Subscriptions.Refund
+-- Copyright   : (c) 2015-2025 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay+gogol@gmail.com>
+--               Toni Cebrián <toni@tonicebrian.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Refunds a user\'s subscription purchase, but the subscription remains valid until its expiration time and it will continue to recur.
+--
+-- /See:/ <https://developers.google.com/android-publisher Google Play Android Developer API Reference> for @androidpublisher.purchases.subscriptions.refund@.
+module Gogol.AndroidPublisher.Purchases.Subscriptions.Refund
+  ( -- * Resource
+    AndroidPublisherPurchasesSubscriptionsRefundResource,
+
+    -- ** Constructing a Request
+    AndroidPublisherPurchasesSubscriptionsRefund (..),
+    newAndroidPublisherPurchasesSubscriptionsRefund,
+  )
+where
+
+import Gogol.AndroidPublisher.Types
+import Gogol.Prelude qualified as Core
+
+-- | A resource alias for @androidpublisher.purchases.subscriptions.refund@ method which the
+-- 'AndroidPublisherPurchasesSubscriptionsRefund' request conforms to.
+type AndroidPublisherPurchasesSubscriptionsRefundResource =
+  "androidpublisher"
+    Core.:> "v3"
+    Core.:> "applications"
+    Core.:> Core.Capture "packageName" Core.Text
+    Core.:> "purchases"
+    Core.:> "subscriptions"
+    Core.:> Core.Capture "subscriptionId" Core.Text
+    Core.:> "tokens"
+    Core.:> Core.CaptureMode "token" "refund" Core.Text
+    Core.:> Core.QueryParam "$.xgafv" Xgafv
+    Core.:> Core.QueryParam "access_token" Core.Text
+    Core.:> Core.QueryParam "callback" Core.Text
+    Core.:> Core.QueryParam "uploadType" Core.Text
+    Core.:> Core.QueryParam "upload_protocol" Core.Text
+    Core.:> Core.QueryParam "alt" Core.AltJSON
+    Core.:> Core.Post '[Core.JSON] ()
+
+-- | Refunds a user\'s subscription purchase, but the subscription remains valid until its expiration time and it will continue to recur.
+--
+-- /See:/ 'newAndroidPublisherPurchasesSubscriptionsRefund' smart constructor.
+data AndroidPublisherPurchasesSubscriptionsRefund = AndroidPublisherPurchasesSubscriptionsRefund
+  { -- | V1 error format.
+    xgafv :: (Core.Maybe Xgafv),
+    -- | OAuth access token.
+    accessToken :: (Core.Maybe Core.Text),
+    -- | JSONP
+    callback :: (Core.Maybe Core.Text),
+    -- | The package name of the application for which this subscription was purchased (for example, \'com.some.thing\').
+    packageName :: Core.Text,
+    -- | \"The purchased subscription ID (for example, \'monthly001\').
+    subscriptionId :: Core.Text,
+    -- | The token provided to the user\'s device when the subscription was purchased.
+    token :: Core.Text,
+    -- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
+    uploadType :: (Core.Maybe Core.Text),
+    -- | Upload protocol for media (e.g. \"raw\", \"multipart\").
+    uploadProtocol :: (Core.Maybe Core.Text)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'AndroidPublisherPurchasesSubscriptionsRefund' with the minimum fields required to make a request.
+newAndroidPublisherPurchasesSubscriptionsRefund ::
+  -- |  The package name of the application for which this subscription was purchased (for example, \'com.some.thing\'). See 'packageName'.
+  Core.Text ->
+  -- |  \"The purchased subscription ID (for example, \'monthly001\'). See 'subscriptionId'.
+  Core.Text ->
+  -- |  The token provided to the user\'s device when the subscription was purchased. See 'token'.
+  Core.Text ->
+  AndroidPublisherPurchasesSubscriptionsRefund
+newAndroidPublisherPurchasesSubscriptionsRefund
+  packageName
+  subscriptionId
+  token =
+    AndroidPublisherPurchasesSubscriptionsRefund
+      { xgafv =
+          Core.Nothing,
+        accessToken = Core.Nothing,
+        callback = Core.Nothing,
+        packageName = packageName,
+        subscriptionId = subscriptionId,
+        token = token,
+        uploadType = Core.Nothing,
+        uploadProtocol = Core.Nothing
+      }
+
+instance
+  Core.GoogleRequest
+    AndroidPublisherPurchasesSubscriptionsRefund
+  where
+  type Rs AndroidPublisherPurchasesSubscriptionsRefund = ()
+  type
+    Scopes AndroidPublisherPurchasesSubscriptionsRefund =
+      '[Androidpublisher'FullControl]
+  requestClient AndroidPublisherPurchasesSubscriptionsRefund {..} =
+    go
+      packageName
+      subscriptionId
+      token
+      xgafv
+      accessToken
+      callback
+      uploadType
+      uploadProtocol
+      (Core.Just Core.AltJSON)
+      androidPublisherService
+    where
+      go =
+        Core.buildClient
+          ( Core.Proxy ::
+              Core.Proxy AndroidPublisherPurchasesSubscriptionsRefundResource
+          )
+          Core.mempty
diff --git a/gen/Gogol/AndroidPublisher/Purchases/Subscriptions/Revoke.hs b/gen/Gogol/AndroidPublisher/Purchases/Subscriptions/Revoke.hs
new file mode 100644
--- /dev/null
+++ b/gen/Gogol/AndroidPublisher/Purchases/Subscriptions/Revoke.hs
@@ -0,0 +1,137 @@
+{-# LANGUAGE DataKinds #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE ImportQualifiedPost #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-name-shadowing #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- |
+-- Module      : Gogol.AndroidPublisher.Purchases.Subscriptions.Revoke
+-- Copyright   : (c) 2015-2025 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay+gogol@gmail.com>
+--               Toni Cebrián <toni@tonicebrian.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Refunds and immediately revokes a user\'s subscription purchase. Access to the subscription will be terminated immediately and it will stop recurring.
+--
+-- /See:/ <https://developers.google.com/android-publisher Google Play Android Developer API Reference> for @androidpublisher.purchases.subscriptions.revoke@.
+module Gogol.AndroidPublisher.Purchases.Subscriptions.Revoke
+  ( -- * Resource
+    AndroidPublisherPurchasesSubscriptionsRevokeResource,
+
+    -- ** Constructing a Request
+    AndroidPublisherPurchasesSubscriptionsRevoke (..),
+    newAndroidPublisherPurchasesSubscriptionsRevoke,
+  )
+where
+
+import Gogol.AndroidPublisher.Types
+import Gogol.Prelude qualified as Core
+
+-- | A resource alias for @androidpublisher.purchases.subscriptions.revoke@ method which the
+-- 'AndroidPublisherPurchasesSubscriptionsRevoke' request conforms to.
+type AndroidPublisherPurchasesSubscriptionsRevokeResource =
+  "androidpublisher"
+    Core.:> "v3"
+    Core.:> "applications"
+    Core.:> Core.Capture "packageName" Core.Text
+    Core.:> "purchases"
+    Core.:> "subscriptions"
+    Core.:> Core.Capture "subscriptionId" Core.Text
+    Core.:> "tokens"
+    Core.:> Core.CaptureMode "token" "revoke" Core.Text
+    Core.:> Core.QueryParam "$.xgafv" Xgafv
+    Core.:> Core.QueryParam "access_token" Core.Text
+    Core.:> Core.QueryParam "callback" Core.Text
+    Core.:> Core.QueryParam "uploadType" Core.Text
+    Core.:> Core.QueryParam "upload_protocol" Core.Text
+    Core.:> Core.QueryParam "alt" Core.AltJSON
+    Core.:> Core.Post '[Core.JSON] ()
+
+-- | Refunds and immediately revokes a user\'s subscription purchase. Access to the subscription will be terminated immediately and it will stop recurring.
+--
+-- /See:/ 'newAndroidPublisherPurchasesSubscriptionsRevoke' smart constructor.
+data AndroidPublisherPurchasesSubscriptionsRevoke = AndroidPublisherPurchasesSubscriptionsRevoke
+  { -- | V1 error format.
+    xgafv :: (Core.Maybe Xgafv),
+    -- | OAuth access token.
+    accessToken :: (Core.Maybe Core.Text),
+    -- | JSONP
+    callback :: (Core.Maybe Core.Text),
+    -- | The package name of the application for which this subscription was purchased (for example, \'com.some.thing\').
+    packageName :: Core.Text,
+    -- | The purchased subscription ID (for example, \'monthly001\').
+    subscriptionId :: Core.Text,
+    -- | The token provided to the user\'s device when the subscription was purchased.
+    token :: Core.Text,
+    -- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
+    uploadType :: (Core.Maybe Core.Text),
+    -- | Upload protocol for media (e.g. \"raw\", \"multipart\").
+    uploadProtocol :: (Core.Maybe Core.Text)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'AndroidPublisherPurchasesSubscriptionsRevoke' with the minimum fields required to make a request.
+newAndroidPublisherPurchasesSubscriptionsRevoke ::
+  -- |  The package name of the application for which this subscription was purchased (for example, \'com.some.thing\'). See 'packageName'.
+  Core.Text ->
+  -- |  The purchased subscription ID (for example, \'monthly001\'). See 'subscriptionId'.
+  Core.Text ->
+  -- |  The token provided to the user\'s device when the subscription was purchased. See 'token'.
+  Core.Text ->
+  AndroidPublisherPurchasesSubscriptionsRevoke
+newAndroidPublisherPurchasesSubscriptionsRevoke
+  packageName
+  subscriptionId
+  token =
+    AndroidPublisherPurchasesSubscriptionsRevoke
+      { xgafv =
+          Core.Nothing,
+        accessToken = Core.Nothing,
+        callback = Core.Nothing,
+        packageName = packageName,
+        subscriptionId = subscriptionId,
+        token = token,
+        uploadType = Core.Nothing,
+        uploadProtocol = Core.Nothing
+      }
+
+instance
+  Core.GoogleRequest
+    AndroidPublisherPurchasesSubscriptionsRevoke
+  where
+  type Rs AndroidPublisherPurchasesSubscriptionsRevoke = ()
+  type
+    Scopes AndroidPublisherPurchasesSubscriptionsRevoke =
+      '[Androidpublisher'FullControl]
+  requestClient AndroidPublisherPurchasesSubscriptionsRevoke {..} =
+    go
+      packageName
+      subscriptionId
+      token
+      xgafv
+      accessToken
+      callback
+      uploadType
+      uploadProtocol
+      (Core.Just Core.AltJSON)
+      androidPublisherService
+    where
+      go =
+        Core.buildClient
+          ( Core.Proxy ::
+              Core.Proxy AndroidPublisherPurchasesSubscriptionsRevokeResource
+          )
+          Core.mempty
diff --git a/gen/Gogol/AndroidPublisher/Purchases/Subscriptionsv2/Get.hs b/gen/Gogol/AndroidPublisher/Purchases/Subscriptionsv2/Get.hs
new file mode 100644
--- /dev/null
+++ b/gen/Gogol/AndroidPublisher/Purchases/Subscriptionsv2/Get.hs
@@ -0,0 +1,128 @@
+{-# LANGUAGE DataKinds #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE ImportQualifiedPost #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-name-shadowing #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- |
+-- Module      : Gogol.AndroidPublisher.Purchases.Subscriptionsv2.Get
+-- Copyright   : (c) 2015-2025 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay+gogol@gmail.com>
+--               Toni Cebrián <toni@tonicebrian.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Get metadata about a subscription
+--
+-- /See:/ <https://developers.google.com/android-publisher Google Play Android Developer API Reference> for @androidpublisher.purchases.subscriptionsv2.get@.
+module Gogol.AndroidPublisher.Purchases.Subscriptionsv2.Get
+  ( -- * Resource
+    AndroidPublisherPurchasesSubscriptionsv2GetResource,
+
+    -- ** Constructing a Request
+    AndroidPublisherPurchasesSubscriptionsv2Get (..),
+    newAndroidPublisherPurchasesSubscriptionsv2Get,
+  )
+where
+
+import Gogol.AndroidPublisher.Types
+import Gogol.Prelude qualified as Core
+
+-- | A resource alias for @androidpublisher.purchases.subscriptionsv2.get@ method which the
+-- 'AndroidPublisherPurchasesSubscriptionsv2Get' request conforms to.
+type AndroidPublisherPurchasesSubscriptionsv2GetResource =
+  "androidpublisher"
+    Core.:> "v3"
+    Core.:> "applications"
+    Core.:> Core.Capture "packageName" Core.Text
+    Core.:> "purchases"
+    Core.:> "subscriptionsv2"
+    Core.:> "tokens"
+    Core.:> Core.Capture "token" Core.Text
+    Core.:> Core.QueryParam "$.xgafv" Xgafv
+    Core.:> Core.QueryParam "access_token" Core.Text
+    Core.:> Core.QueryParam "callback" Core.Text
+    Core.:> Core.QueryParam "uploadType" Core.Text
+    Core.:> Core.QueryParam "upload_protocol" Core.Text
+    Core.:> Core.QueryParam "alt" Core.AltJSON
+    Core.:> Core.Get '[Core.JSON] SubscriptionPurchaseV2
+
+-- | Get metadata about a subscription
+--
+-- /See:/ 'newAndroidPublisherPurchasesSubscriptionsv2Get' smart constructor.
+data AndroidPublisherPurchasesSubscriptionsv2Get = AndroidPublisherPurchasesSubscriptionsv2Get
+  { -- | V1 error format.
+    xgafv :: (Core.Maybe Xgafv),
+    -- | OAuth access token.
+    accessToken :: (Core.Maybe Core.Text),
+    -- | JSONP
+    callback :: (Core.Maybe Core.Text),
+    -- | The package of the application for which this subscription was purchased (for example, \'com.some.thing\').
+    packageName :: Core.Text,
+    -- | Required. The token provided to the user\'s device when the subscription was purchased.
+    token :: Core.Text,
+    -- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
+    uploadType :: (Core.Maybe Core.Text),
+    -- | Upload protocol for media (e.g. \"raw\", \"multipart\").
+    uploadProtocol :: (Core.Maybe Core.Text)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'AndroidPublisherPurchasesSubscriptionsv2Get' with the minimum fields required to make a request.
+newAndroidPublisherPurchasesSubscriptionsv2Get ::
+  -- |  The package of the application for which this subscription was purchased (for example, \'com.some.thing\'). See 'packageName'.
+  Core.Text ->
+  -- |  Required. The token provided to the user\'s device when the subscription was purchased. See 'token'.
+  Core.Text ->
+  AndroidPublisherPurchasesSubscriptionsv2Get
+newAndroidPublisherPurchasesSubscriptionsv2Get packageName token =
+  AndroidPublisherPurchasesSubscriptionsv2Get
+    { xgafv = Core.Nothing,
+      accessToken = Core.Nothing,
+      callback = Core.Nothing,
+      packageName = packageName,
+      token = token,
+      uploadType = Core.Nothing,
+      uploadProtocol = Core.Nothing
+    }
+
+instance
+  Core.GoogleRequest
+    AndroidPublisherPurchasesSubscriptionsv2Get
+  where
+  type
+    Rs AndroidPublisherPurchasesSubscriptionsv2Get =
+      SubscriptionPurchaseV2
+  type
+    Scopes AndroidPublisherPurchasesSubscriptionsv2Get =
+      '[Androidpublisher'FullControl]
+  requestClient AndroidPublisherPurchasesSubscriptionsv2Get {..} =
+    go
+      packageName
+      token
+      xgafv
+      accessToken
+      callback
+      uploadType
+      uploadProtocol
+      (Core.Just Core.AltJSON)
+      androidPublisherService
+    where
+      go =
+        Core.buildClient
+          ( Core.Proxy ::
+              Core.Proxy AndroidPublisherPurchasesSubscriptionsv2GetResource
+          )
+          Core.mempty
diff --git a/gen/Gogol/AndroidPublisher/Purchases/Subscriptionsv2/Revoke.hs b/gen/Gogol/AndroidPublisher/Purchases/Subscriptionsv2/Revoke.hs
new file mode 100644
--- /dev/null
+++ b/gen/Gogol/AndroidPublisher/Purchases/Subscriptionsv2/Revoke.hs
@@ -0,0 +1,139 @@
+{-# LANGUAGE DataKinds #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE ImportQualifiedPost #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-name-shadowing #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- |
+-- Module      : Gogol.AndroidPublisher.Purchases.Subscriptionsv2.Revoke
+-- Copyright   : (c) 2015-2025 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay+gogol@gmail.com>
+--               Toni Cebrián <toni@tonicebrian.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Revoke a subscription purchase for the user.
+--
+-- /See:/ <https://developers.google.com/android-publisher Google Play Android Developer API Reference> for @androidpublisher.purchases.subscriptionsv2.revoke@.
+module Gogol.AndroidPublisher.Purchases.Subscriptionsv2.Revoke
+  ( -- * Resource
+    AndroidPublisherPurchasesSubscriptionsv2RevokeResource,
+
+    -- ** Constructing a Request
+    AndroidPublisherPurchasesSubscriptionsv2Revoke (..),
+    newAndroidPublisherPurchasesSubscriptionsv2Revoke,
+  )
+where
+
+import Gogol.AndroidPublisher.Types
+import Gogol.Prelude qualified as Core
+
+-- | A resource alias for @androidpublisher.purchases.subscriptionsv2.revoke@ method which the
+-- 'AndroidPublisherPurchasesSubscriptionsv2Revoke' request conforms to.
+type AndroidPublisherPurchasesSubscriptionsv2RevokeResource =
+  "androidpublisher"
+    Core.:> "v3"
+    Core.:> "applications"
+    Core.:> Core.Capture "packageName" Core.Text
+    Core.:> "purchases"
+    Core.:> "subscriptionsv2"
+    Core.:> "tokens"
+    Core.:> Core.CaptureMode "token" "revoke" Core.Text
+    Core.:> Core.QueryParam "$.xgafv" Xgafv
+    Core.:> Core.QueryParam "access_token" Core.Text
+    Core.:> Core.QueryParam "callback" Core.Text
+    Core.:> Core.QueryParam "uploadType" Core.Text
+    Core.:> Core.QueryParam "upload_protocol" Core.Text
+    Core.:> Core.QueryParam "alt" Core.AltJSON
+    Core.:> Core.ReqBody '[Core.JSON] RevokeSubscriptionPurchaseRequest
+    Core.:> Core.Post '[Core.JSON] RevokeSubscriptionPurchaseResponse
+
+-- | Revoke a subscription purchase for the user.
+--
+-- /See:/ 'newAndroidPublisherPurchasesSubscriptionsv2Revoke' smart constructor.
+data AndroidPublisherPurchasesSubscriptionsv2Revoke = AndroidPublisherPurchasesSubscriptionsv2Revoke
+  { -- | V1 error format.
+    xgafv :: (Core.Maybe Xgafv),
+    -- | OAuth access token.
+    accessToken :: (Core.Maybe Core.Text),
+    -- | JSONP
+    callback :: (Core.Maybe Core.Text),
+    -- | Required. The package of the application for which this subscription was purchased (for example, \'com.some.thing\').
+    packageName :: Core.Text,
+    -- | Multipart request metadata.
+    payload :: RevokeSubscriptionPurchaseRequest,
+    -- | Required. The token provided to the user\'s device when the subscription was purchased.
+    token :: Core.Text,
+    -- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
+    uploadType :: (Core.Maybe Core.Text),
+    -- | Upload protocol for media (e.g. \"raw\", \"multipart\").
+    uploadProtocol :: (Core.Maybe Core.Text)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'AndroidPublisherPurchasesSubscriptionsv2Revoke' with the minimum fields required to make a request.
+newAndroidPublisherPurchasesSubscriptionsv2Revoke ::
+  -- |  Required. The package of the application for which this subscription was purchased (for example, \'com.some.thing\'). See 'packageName'.
+  Core.Text ->
+  -- |  Multipart request metadata. See 'payload'.
+  RevokeSubscriptionPurchaseRequest ->
+  -- |  Required. The token provided to the user\'s device when the subscription was purchased. See 'token'.
+  Core.Text ->
+  AndroidPublisherPurchasesSubscriptionsv2Revoke
+newAndroidPublisherPurchasesSubscriptionsv2Revoke
+  packageName
+  payload
+  token =
+    AndroidPublisherPurchasesSubscriptionsv2Revoke
+      { xgafv =
+          Core.Nothing,
+        accessToken = Core.Nothing,
+        callback = Core.Nothing,
+        packageName = packageName,
+        payload = payload,
+        token = token,
+        uploadType = Core.Nothing,
+        uploadProtocol = Core.Nothing
+      }
+
+instance
+  Core.GoogleRequest
+    AndroidPublisherPurchasesSubscriptionsv2Revoke
+  where
+  type
+    Rs AndroidPublisherPurchasesSubscriptionsv2Revoke =
+      RevokeSubscriptionPurchaseResponse
+  type
+    Scopes AndroidPublisherPurchasesSubscriptionsv2Revoke =
+      '[Androidpublisher'FullControl]
+  requestClient AndroidPublisherPurchasesSubscriptionsv2Revoke {..} =
+    go
+      packageName
+      token
+      xgafv
+      accessToken
+      callback
+      uploadType
+      uploadProtocol
+      (Core.Just Core.AltJSON)
+      payload
+      androidPublisherService
+    where
+      go =
+        Core.buildClient
+          ( Core.Proxy ::
+              Core.Proxy AndroidPublisherPurchasesSubscriptionsv2RevokeResource
+          )
+          Core.mempty
diff --git a/gen/Gogol/AndroidPublisher/Purchases/Voidedpurchases/List.hs b/gen/Gogol/AndroidPublisher/Purchases/Voidedpurchases/List.hs
new file mode 100644
--- /dev/null
+++ b/gen/Gogol/AndroidPublisher/Purchases/Voidedpurchases/List.hs
@@ -0,0 +1,156 @@
+{-# LANGUAGE DataKinds #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE ImportQualifiedPost #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-name-shadowing #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- |
+-- Module      : Gogol.AndroidPublisher.Purchases.Voidedpurchases.List
+-- Copyright   : (c) 2015-2025 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay+gogol@gmail.com>
+--               Toni Cebrián <toni@tonicebrian.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Lists the purchases that were canceled, refunded or charged-back.
+--
+-- /See:/ <https://developers.google.com/android-publisher Google Play Android Developer API Reference> for @androidpublisher.purchases.voidedpurchases.list@.
+module Gogol.AndroidPublisher.Purchases.Voidedpurchases.List
+  ( -- * Resource
+    AndroidPublisherPurchasesVoidedpurchasesListResource,
+
+    -- ** Constructing a Request
+    AndroidPublisherPurchasesVoidedpurchasesList (..),
+    newAndroidPublisherPurchasesVoidedpurchasesList,
+  )
+where
+
+import Gogol.AndroidPublisher.Types
+import Gogol.Prelude qualified as Core
+
+-- | A resource alias for @androidpublisher.purchases.voidedpurchases.list@ method which the
+-- 'AndroidPublisherPurchasesVoidedpurchasesList' request conforms to.
+type AndroidPublisherPurchasesVoidedpurchasesListResource =
+  "androidpublisher"
+    Core.:> "v3"
+    Core.:> "applications"
+    Core.:> Core.Capture "packageName" Core.Text
+    Core.:> "purchases"
+    Core.:> "voidedpurchases"
+    Core.:> Core.QueryParam "$.xgafv" Xgafv
+    Core.:> Core.QueryParam "access_token" Core.Text
+    Core.:> Core.QueryParam "callback" Core.Text
+    Core.:> Core.QueryParam "endTime" Core.Int64
+    Core.:> Core.QueryParam "includeQuantityBasedPartialRefund" Core.Bool
+    Core.:> Core.QueryParam "maxResults" Core.Word32
+    Core.:> Core.QueryParam "startIndex" Core.Word32
+    Core.:> Core.QueryParam "startTime" Core.Int64
+    Core.:> Core.QueryParam "token" Core.Text
+    Core.:> Core.QueryParam "type" Core.Int32
+    Core.:> Core.QueryParam "uploadType" Core.Text
+    Core.:> Core.QueryParam "upload_protocol" Core.Text
+    Core.:> Core.QueryParam "alt" Core.AltJSON
+    Core.:> Core.Get '[Core.JSON] VoidedPurchasesListResponse
+
+-- | Lists the purchases that were canceled, refunded or charged-back.
+--
+-- /See:/ 'newAndroidPublisherPurchasesVoidedpurchasesList' smart constructor.
+data AndroidPublisherPurchasesVoidedpurchasesList = AndroidPublisherPurchasesVoidedpurchasesList
+  { -- | V1 error format.
+    xgafv :: (Core.Maybe Xgafv),
+    -- | OAuth access token.
+    accessToken :: (Core.Maybe Core.Text),
+    -- | JSONP
+    callback :: (Core.Maybe Core.Text),
+    -- | The time, in milliseconds since the Epoch, of the newest voided 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. 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.
+    endTime :: (Core.Maybe Core.Int64),
+    -- | Optional. Whether to include voided purchases of quantity-based partial refunds, which are applicable only to multi-quantity purchases. If true, additional voided purchases may be returned with voidedQuantity that indicates the refund quantity of a quantity-based partial refund. The default value is false.
+    includeQuantityBasedPartialRefund :: (Core.Maybe Core.Bool),
+    -- | Defines how many results the list operation should return. The default number depends on the resource collection.
+    maxResults :: (Core.Maybe Core.Word32),
+    -- | The package name of the application for which voided purchases need to be returned (for example, \'com.some.thing\').
+    packageName :: Core.Text,
+    -- | Defines the index of the first element to return. This can only be used if indexed paging is enabled.
+    startIndex :: (Core.Maybe Core.Word32),
+    -- | The time, in milliseconds since the Epoch, of the oldest voided 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. 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.
+    startTime :: (Core.Maybe Core.Int64),
+    -- | Defines the token of the page to return, usually taken from TokenPagination. This can only be used if token paging is enabled.
+    token :: (Core.Maybe Core.Text),
+    -- | The type of voided purchases that you want to see in the response. Possible values are: 0. Only voided in-app product purchases will be returned in the response. This is the default value. 1. Both voided in-app purchases and voided subscription purchases will be returned in the response. Note: Before requesting to receive voided subscription purchases, you must switch to use orderId in the response which uniquely identifies one-time purchases and subscriptions. Otherwise, you will receive multiple subscription orders with the same PurchaseToken, because subscription renewal orders share the same PurchaseToken.
+    type' :: (Core.Maybe Core.Int32),
+    -- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
+    uploadType :: (Core.Maybe Core.Text),
+    -- | Upload protocol for media (e.g. \"raw\", \"multipart\").
+    uploadProtocol :: (Core.Maybe Core.Text)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'AndroidPublisherPurchasesVoidedpurchasesList' with the minimum fields required to make a request.
+newAndroidPublisherPurchasesVoidedpurchasesList ::
+  -- |  The package name of the application for which voided purchases need to be returned (for example, \'com.some.thing\'). See 'packageName'.
+  Core.Text ->
+  AndroidPublisherPurchasesVoidedpurchasesList
+newAndroidPublisherPurchasesVoidedpurchasesList packageName =
+  AndroidPublisherPurchasesVoidedpurchasesList
+    { xgafv =
+        Core.Nothing,
+      accessToken = Core.Nothing,
+      callback = Core.Nothing,
+      endTime = Core.Nothing,
+      includeQuantityBasedPartialRefund = Core.Nothing,
+      maxResults = Core.Nothing,
+      packageName = packageName,
+      startIndex = Core.Nothing,
+      startTime = Core.Nothing,
+      token = Core.Nothing,
+      type' = Core.Nothing,
+      uploadType = Core.Nothing,
+      uploadProtocol = Core.Nothing
+    }
+
+instance
+  Core.GoogleRequest
+    AndroidPublisherPurchasesVoidedpurchasesList
+  where
+  type
+    Rs AndroidPublisherPurchasesVoidedpurchasesList =
+      VoidedPurchasesListResponse
+  type
+    Scopes AndroidPublisherPurchasesVoidedpurchasesList =
+      '[Androidpublisher'FullControl]
+  requestClient AndroidPublisherPurchasesVoidedpurchasesList {..} =
+    go
+      packageName
+      xgafv
+      accessToken
+      callback
+      endTime
+      includeQuantityBasedPartialRefund
+      maxResults
+      startIndex
+      startTime
+      token
+      type'
+      uploadType
+      uploadProtocol
+      (Core.Just Core.AltJSON)
+      androidPublisherService
+    where
+      go =
+        Core.buildClient
+          ( Core.Proxy ::
+              Core.Proxy AndroidPublisherPurchasesVoidedpurchasesListResource
+          )
+          Core.mempty
diff --git a/gen/Gogol/AndroidPublisher/Reviews/Get.hs b/gen/Gogol/AndroidPublisher/Reviews/Get.hs
new file mode 100644
--- /dev/null
+++ b/gen/Gogol/AndroidPublisher/Reviews/Get.hs
@@ -0,0 +1,124 @@
+{-# LANGUAGE DataKinds #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE ImportQualifiedPost #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-name-shadowing #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- |
+-- Module      : Gogol.AndroidPublisher.Reviews.Get
+-- Copyright   : (c) 2015-2025 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay+gogol@gmail.com>
+--               Toni Cebrián <toni@tonicebrian.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Gets a single review.
+--
+-- /See:/ <https://developers.google.com/android-publisher Google Play Android Developer API Reference> for @androidpublisher.reviews.get@.
+module Gogol.AndroidPublisher.Reviews.Get
+  ( -- * Resource
+    AndroidPublisherReviewsGetResource,
+
+    -- ** Constructing a Request
+    AndroidPublisherReviewsGet (..),
+    newAndroidPublisherReviewsGet,
+  )
+where
+
+import Gogol.AndroidPublisher.Types
+import Gogol.Prelude qualified as Core
+
+-- | A resource alias for @androidpublisher.reviews.get@ method which the
+-- 'AndroidPublisherReviewsGet' request conforms to.
+type AndroidPublisherReviewsGetResource =
+  "androidpublisher"
+    Core.:> "v3"
+    Core.:> "applications"
+    Core.:> Core.Capture "packageName" Core.Text
+    Core.:> "reviews"
+    Core.:> Core.Capture "reviewId" Core.Text
+    Core.:> Core.QueryParam "$.xgafv" Xgafv
+    Core.:> Core.QueryParam "access_token" Core.Text
+    Core.:> Core.QueryParam "callback" Core.Text
+    Core.:> Core.QueryParam "translationLanguage" Core.Text
+    Core.:> Core.QueryParam "uploadType" Core.Text
+    Core.:> Core.QueryParam "upload_protocol" Core.Text
+    Core.:> Core.QueryParam "alt" Core.AltJSON
+    Core.:> Core.Get '[Core.JSON] Review
+
+-- | Gets a single review.
+--
+-- /See:/ 'newAndroidPublisherReviewsGet' smart constructor.
+data AndroidPublisherReviewsGet = AndroidPublisherReviewsGet
+  { -- | V1 error format.
+    xgafv :: (Core.Maybe Xgafv),
+    -- | OAuth access token.
+    accessToken :: (Core.Maybe Core.Text),
+    -- | JSONP
+    callback :: (Core.Maybe Core.Text),
+    -- | Package name of the app.
+    packageName :: Core.Text,
+    -- | Unique identifier for a review.
+    reviewId :: Core.Text,
+    -- | Language localization code.
+    translationLanguage :: (Core.Maybe Core.Text),
+    -- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
+    uploadType :: (Core.Maybe Core.Text),
+    -- | Upload protocol for media (e.g. \"raw\", \"multipart\").
+    uploadProtocol :: (Core.Maybe Core.Text)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'AndroidPublisherReviewsGet' with the minimum fields required to make a request.
+newAndroidPublisherReviewsGet ::
+  -- |  Package name of the app. See 'packageName'.
+  Core.Text ->
+  -- |  Unique identifier for a review. See 'reviewId'.
+  Core.Text ->
+  AndroidPublisherReviewsGet
+newAndroidPublisherReviewsGet packageName reviewId =
+  AndroidPublisherReviewsGet
+    { xgafv = Core.Nothing,
+      accessToken = Core.Nothing,
+      callback = Core.Nothing,
+      packageName = packageName,
+      reviewId = reviewId,
+      translationLanguage = Core.Nothing,
+      uploadType = Core.Nothing,
+      uploadProtocol = Core.Nothing
+    }
+
+instance Core.GoogleRequest AndroidPublisherReviewsGet where
+  type Rs AndroidPublisherReviewsGet = Review
+  type
+    Scopes AndroidPublisherReviewsGet =
+      '[Androidpublisher'FullControl]
+  requestClient AndroidPublisherReviewsGet {..} =
+    go
+      packageName
+      reviewId
+      xgafv
+      accessToken
+      callback
+      translationLanguage
+      uploadType
+      uploadProtocol
+      (Core.Just Core.AltJSON)
+      androidPublisherService
+    where
+      go =
+        Core.buildClient
+          (Core.Proxy :: Core.Proxy AndroidPublisherReviewsGetResource)
+          Core.mempty
diff --git a/gen/Gogol/AndroidPublisher/Reviews/List.hs b/gen/Gogol/AndroidPublisher/Reviews/List.hs
new file mode 100644
--- /dev/null
+++ b/gen/Gogol/AndroidPublisher/Reviews/List.hs
@@ -0,0 +1,132 @@
+{-# LANGUAGE DataKinds #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE ImportQualifiedPost #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-name-shadowing #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- |
+-- Module      : Gogol.AndroidPublisher.Reviews.List
+-- Copyright   : (c) 2015-2025 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay+gogol@gmail.com>
+--               Toni Cebrián <toni@tonicebrian.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Lists all reviews.
+--
+-- /See:/ <https://developers.google.com/android-publisher Google Play Android Developer API Reference> for @androidpublisher.reviews.list@.
+module Gogol.AndroidPublisher.Reviews.List
+  ( -- * Resource
+    AndroidPublisherReviewsListResource,
+
+    -- ** Constructing a Request
+    AndroidPublisherReviewsList (..),
+    newAndroidPublisherReviewsList,
+  )
+where
+
+import Gogol.AndroidPublisher.Types
+import Gogol.Prelude qualified as Core
+
+-- | A resource alias for @androidpublisher.reviews.list@ method which the
+-- 'AndroidPublisherReviewsList' request conforms to.
+type AndroidPublisherReviewsListResource =
+  "androidpublisher"
+    Core.:> "v3"
+    Core.:> "applications"
+    Core.:> Core.Capture "packageName" Core.Text
+    Core.:> "reviews"
+    Core.:> Core.QueryParam "$.xgafv" Xgafv
+    Core.:> Core.QueryParam "access_token" Core.Text
+    Core.:> Core.QueryParam "callback" Core.Text
+    Core.:> Core.QueryParam "maxResults" Core.Word32
+    Core.:> Core.QueryParam "startIndex" Core.Word32
+    Core.:> Core.QueryParam "token" Core.Text
+    Core.:> Core.QueryParam "translationLanguage" Core.Text
+    Core.:> Core.QueryParam "uploadType" Core.Text
+    Core.:> Core.QueryParam "upload_protocol" Core.Text
+    Core.:> Core.QueryParam "alt" Core.AltJSON
+    Core.:> Core.Get '[Core.JSON] ReviewsListResponse
+
+-- | Lists all reviews.
+--
+-- /See:/ 'newAndroidPublisherReviewsList' smart constructor.
+data AndroidPublisherReviewsList = AndroidPublisherReviewsList
+  { -- | V1 error format.
+    xgafv :: (Core.Maybe Xgafv),
+    -- | OAuth access token.
+    accessToken :: (Core.Maybe Core.Text),
+    -- | JSONP
+    callback :: (Core.Maybe Core.Text),
+    -- | How many results the list operation should return.
+    maxResults :: (Core.Maybe Core.Word32),
+    -- | Package name of the app.
+    packageName :: Core.Text,
+    -- | The index of the first element to return.
+    startIndex :: (Core.Maybe Core.Word32),
+    -- | Pagination token. If empty, list starts at the first review.
+    token :: (Core.Maybe Core.Text),
+    -- | Language localization code.
+    translationLanguage :: (Core.Maybe Core.Text),
+    -- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
+    uploadType :: (Core.Maybe Core.Text),
+    -- | Upload protocol for media (e.g. \"raw\", \"multipart\").
+    uploadProtocol :: (Core.Maybe Core.Text)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'AndroidPublisherReviewsList' with the minimum fields required to make a request.
+newAndroidPublisherReviewsList ::
+  -- |  Package name of the app. See 'packageName'.
+  Core.Text ->
+  AndroidPublisherReviewsList
+newAndroidPublisherReviewsList packageName =
+  AndroidPublisherReviewsList
+    { xgafv = Core.Nothing,
+      accessToken = Core.Nothing,
+      callback = Core.Nothing,
+      maxResults = Core.Nothing,
+      packageName = packageName,
+      startIndex = Core.Nothing,
+      token = Core.Nothing,
+      translationLanguage = Core.Nothing,
+      uploadType = Core.Nothing,
+      uploadProtocol = Core.Nothing
+    }
+
+instance Core.GoogleRequest AndroidPublisherReviewsList where
+  type Rs AndroidPublisherReviewsList = ReviewsListResponse
+  type
+    Scopes AndroidPublisherReviewsList =
+      '[Androidpublisher'FullControl]
+  requestClient AndroidPublisherReviewsList {..} =
+    go
+      packageName
+      xgafv
+      accessToken
+      callback
+      maxResults
+      startIndex
+      token
+      translationLanguage
+      uploadType
+      uploadProtocol
+      (Core.Just Core.AltJSON)
+      androidPublisherService
+    where
+      go =
+        Core.buildClient
+          (Core.Proxy :: Core.Proxy AndroidPublisherReviewsListResource)
+          Core.mempty
diff --git a/gen/Gogol/AndroidPublisher/Reviews/Reply.hs b/gen/Gogol/AndroidPublisher/Reviews/Reply.hs
new file mode 100644
--- /dev/null
+++ b/gen/Gogol/AndroidPublisher/Reviews/Reply.hs
@@ -0,0 +1,126 @@
+{-# LANGUAGE DataKinds #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE ImportQualifiedPost #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-name-shadowing #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- |
+-- Module      : Gogol.AndroidPublisher.Reviews.Reply
+-- Copyright   : (c) 2015-2025 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay+gogol@gmail.com>
+--               Toni Cebrián <toni@tonicebrian.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Replies to a single review, or updates an existing reply.
+--
+-- /See:/ <https://developers.google.com/android-publisher Google Play Android Developer API Reference> for @androidpublisher.reviews.reply@.
+module Gogol.AndroidPublisher.Reviews.Reply
+  ( -- * Resource
+    AndroidPublisherReviewsReplyResource,
+
+    -- ** Constructing a Request
+    AndroidPublisherReviewsReply (..),
+    newAndroidPublisherReviewsReply,
+  )
+where
+
+import Gogol.AndroidPublisher.Types
+import Gogol.Prelude qualified as Core
+
+-- | A resource alias for @androidpublisher.reviews.reply@ method which the
+-- 'AndroidPublisherReviewsReply' request conforms to.
+type AndroidPublisherReviewsReplyResource =
+  "androidpublisher"
+    Core.:> "v3"
+    Core.:> "applications"
+    Core.:> Core.Capture "packageName" Core.Text
+    Core.:> "reviews"
+    Core.:> Core.CaptureMode "reviewId" "reply" Core.Text
+    Core.:> Core.QueryParam "$.xgafv" Xgafv
+    Core.:> Core.QueryParam "access_token" Core.Text
+    Core.:> Core.QueryParam "callback" Core.Text
+    Core.:> Core.QueryParam "uploadType" Core.Text
+    Core.:> Core.QueryParam "upload_protocol" Core.Text
+    Core.:> Core.QueryParam "alt" Core.AltJSON
+    Core.:> Core.ReqBody '[Core.JSON] ReviewsReplyRequest
+    Core.:> Core.Post '[Core.JSON] ReviewsReplyResponse
+
+-- | Replies to a single review, or updates an existing reply.
+--
+-- /See:/ 'newAndroidPublisherReviewsReply' smart constructor.
+data AndroidPublisherReviewsReply = AndroidPublisherReviewsReply
+  { -- | V1 error format.
+    xgafv :: (Core.Maybe Xgafv),
+    -- | OAuth access token.
+    accessToken :: (Core.Maybe Core.Text),
+    -- | JSONP
+    callback :: (Core.Maybe Core.Text),
+    -- | Package name of the app.
+    packageName :: Core.Text,
+    -- | Multipart request metadata.
+    payload :: ReviewsReplyRequest,
+    -- | Unique identifier for a review.
+    reviewId :: Core.Text,
+    -- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
+    uploadType :: (Core.Maybe Core.Text),
+    -- | Upload protocol for media (e.g. \"raw\", \"multipart\").
+    uploadProtocol :: (Core.Maybe Core.Text)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'AndroidPublisherReviewsReply' with the minimum fields required to make a request.
+newAndroidPublisherReviewsReply ::
+  -- |  Package name of the app. See 'packageName'.
+  Core.Text ->
+  -- |  Multipart request metadata. See 'payload'.
+  ReviewsReplyRequest ->
+  -- |  Unique identifier for a review. See 'reviewId'.
+  Core.Text ->
+  AndroidPublisherReviewsReply
+newAndroidPublisherReviewsReply packageName payload reviewId =
+  AndroidPublisherReviewsReply
+    { xgafv = Core.Nothing,
+      accessToken = Core.Nothing,
+      callback = Core.Nothing,
+      packageName = packageName,
+      payload = payload,
+      reviewId = reviewId,
+      uploadType = Core.Nothing,
+      uploadProtocol = Core.Nothing
+    }
+
+instance Core.GoogleRequest AndroidPublisherReviewsReply where
+  type Rs AndroidPublisherReviewsReply = ReviewsReplyResponse
+  type
+    Scopes AndroidPublisherReviewsReply =
+      '[Androidpublisher'FullControl]
+  requestClient AndroidPublisherReviewsReply {..} =
+    go
+      packageName
+      reviewId
+      xgafv
+      accessToken
+      callback
+      uploadType
+      uploadProtocol
+      (Core.Just Core.AltJSON)
+      payload
+      androidPublisherService
+    where
+      go =
+        Core.buildClient
+          (Core.Proxy :: Core.Proxy AndroidPublisherReviewsReplyResource)
+          Core.mempty
diff --git a/gen/Gogol/AndroidPublisher/Systemapks/Variants/Create.hs b/gen/Gogol/AndroidPublisher/Systemapks/Variants/Create.hs
new file mode 100644
--- /dev/null
+++ b/gen/Gogol/AndroidPublisher/Systemapks/Variants/Create.hs
@@ -0,0 +1,135 @@
+{-# LANGUAGE DataKinds #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE ImportQualifiedPost #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-name-shadowing #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- |
+-- Module      : Gogol.AndroidPublisher.Systemapks.Variants.Create
+-- Copyright   : (c) 2015-2025 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay+gogol@gmail.com>
+--               Toni Cebrián <toni@tonicebrian.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Creates an APK which is suitable for inclusion in a system image from an already uploaded Android App Bundle.
+--
+-- /See:/ <https://developers.google.com/android-publisher Google Play Android Developer API Reference> for @androidpublisher.systemapks.variants.create@.
+module Gogol.AndroidPublisher.Systemapks.Variants.Create
+  ( -- * Resource
+    AndroidPublisherSystemapksVariantsCreateResource,
+
+    -- ** Constructing a Request
+    AndroidPublisherSystemapksVariantsCreate (..),
+    newAndroidPublisherSystemapksVariantsCreate,
+  )
+where
+
+import Gogol.AndroidPublisher.Types
+import Gogol.Prelude qualified as Core
+
+-- | A resource alias for @androidpublisher.systemapks.variants.create@ method which the
+-- 'AndroidPublisherSystemapksVariantsCreate' request conforms to.
+type AndroidPublisherSystemapksVariantsCreateResource =
+  "androidpublisher"
+    Core.:> "v3"
+    Core.:> "applications"
+    Core.:> Core.Capture "packageName" Core.Text
+    Core.:> "systemApks"
+    Core.:> Core.Capture "versionCode" Core.Int64
+    Core.:> "variants"
+    Core.:> Core.QueryParam "$.xgafv" Xgafv
+    Core.:> Core.QueryParam "access_token" Core.Text
+    Core.:> Core.QueryParam "callback" Core.Text
+    Core.:> Core.QueryParam "uploadType" Core.Text
+    Core.:> Core.QueryParam "upload_protocol" Core.Text
+    Core.:> Core.QueryParam "alt" Core.AltJSON
+    Core.:> Core.ReqBody '[Core.JSON] Variant
+    Core.:> Core.Post '[Core.JSON] Variant
+
+-- | Creates an APK which is suitable for inclusion in a system image from an already uploaded Android App Bundle.
+--
+-- /See:/ 'newAndroidPublisherSystemapksVariantsCreate' smart constructor.
+data AndroidPublisherSystemapksVariantsCreate = AndroidPublisherSystemapksVariantsCreate
+  { -- | V1 error format.
+    xgafv :: (Core.Maybe Xgafv),
+    -- | OAuth access token.
+    accessToken :: (Core.Maybe Core.Text),
+    -- | JSONP
+    callback :: (Core.Maybe Core.Text),
+    -- | Package name of the app.
+    packageName :: Core.Text,
+    -- | Multipart request metadata.
+    payload :: Variant,
+    -- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
+    uploadType :: (Core.Maybe Core.Text),
+    -- | Upload protocol for media (e.g. \"raw\", \"multipart\").
+    uploadProtocol :: (Core.Maybe Core.Text),
+    -- | The version code of the App Bundle.
+    versionCode :: Core.Int64
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'AndroidPublisherSystemapksVariantsCreate' with the minimum fields required to make a request.
+newAndroidPublisherSystemapksVariantsCreate ::
+  -- |  Package name of the app. See 'packageName'.
+  Core.Text ->
+  -- |  Multipart request metadata. See 'payload'.
+  Variant ->
+  -- |  The version code of the App Bundle. See 'versionCode'.
+  Core.Int64 ->
+  AndroidPublisherSystemapksVariantsCreate
+newAndroidPublisherSystemapksVariantsCreate
+  packageName
+  payload
+  versionCode =
+    AndroidPublisherSystemapksVariantsCreate
+      { xgafv = Core.Nothing,
+        accessToken = Core.Nothing,
+        callback = Core.Nothing,
+        packageName = packageName,
+        payload = payload,
+        uploadType = Core.Nothing,
+        uploadProtocol = Core.Nothing,
+        versionCode = versionCode
+      }
+
+instance
+  Core.GoogleRequest
+    AndroidPublisherSystemapksVariantsCreate
+  where
+  type Rs AndroidPublisherSystemapksVariantsCreate = Variant
+  type
+    Scopes AndroidPublisherSystemapksVariantsCreate =
+      '[Androidpublisher'FullControl]
+  requestClient AndroidPublisherSystemapksVariantsCreate {..} =
+    go
+      packageName
+      versionCode
+      xgafv
+      accessToken
+      callback
+      uploadType
+      uploadProtocol
+      (Core.Just Core.AltJSON)
+      payload
+      androidPublisherService
+    where
+      go =
+        Core.buildClient
+          ( Core.Proxy ::
+              Core.Proxy AndroidPublisherSystemapksVariantsCreateResource
+          )
+          Core.mempty
diff --git a/gen/Gogol/AndroidPublisher/Systemapks/Variants/Download.hs b/gen/Gogol/AndroidPublisher/Systemapks/Variants/Download.hs
new file mode 100644
--- /dev/null
+++ b/gen/Gogol/AndroidPublisher/Systemapks/Variants/Download.hs
@@ -0,0 +1,183 @@
+{-# LANGUAGE DataKinds #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE ImportQualifiedPost #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-name-shadowing #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- |
+-- Module      : Gogol.AndroidPublisher.Systemapks.Variants.Download
+-- Copyright   : (c) 2015-2025 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay+gogol@gmail.com>
+--               Toni Cebrián <toni@tonicebrian.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Downloads a previously created system APK which is suitable for inclusion in a system image.
+--
+-- /See:/ <https://developers.google.com/android-publisher Google Play Android Developer API Reference> for @androidpublisher.systemapks.variants.download@.
+module Gogol.AndroidPublisher.Systemapks.Variants.Download
+  ( -- * Resource
+    AndroidPublisherSystemapksVariantsDownloadResource,
+
+    -- ** Constructing a Request
+    AndroidPublisherSystemapksVariantsDownload (..),
+    newAndroidPublisherSystemapksVariantsDownload,
+  )
+where
+
+import Gogol.AndroidPublisher.Types
+import Gogol.Prelude qualified as Core
+
+-- | A resource alias for @androidpublisher.systemapks.variants.download@ method which the
+-- 'AndroidPublisherSystemapksVariantsDownload' request conforms to.
+type AndroidPublisherSystemapksVariantsDownloadResource =
+  "androidpublisher"
+    Core.:> "v3"
+    Core.:> "applications"
+    Core.:> Core.Capture "packageName" Core.Text
+    Core.:> "systemApks"
+    Core.:> Core.Capture "versionCode" Core.Int64
+    Core.:> "variants"
+    Core.:> Core.CaptureMode "variantId" "download" Core.Word32
+    Core.:> Core.QueryParam "$.xgafv" Xgafv
+    Core.:> Core.QueryParam "access_token" Core.Text
+    Core.:> Core.QueryParam "callback" Core.Text
+    Core.:> Core.QueryParam "uploadType" Core.Text
+    Core.:> Core.QueryParam "upload_protocol" Core.Text
+    Core.:> Core.QueryParam "alt" Core.AltJSON
+    Core.:> Core.Get '[Core.JSON] ()
+    Core.:<|> "androidpublisher"
+    Core.:> "v3"
+    Core.:> "applications"
+    Core.:> Core.Capture "packageName" Core.Text
+    Core.:> "systemApks"
+    Core.:> Core.Capture "versionCode" Core.Int64
+    Core.:> "variants"
+    Core.:> Core.CaptureMode "variantId" "download" Core.Word32
+    Core.:> Core.QueryParam "$.xgafv" Xgafv
+    Core.:> Core.QueryParam "access_token" Core.Text
+    Core.:> Core.QueryParam "callback" Core.Text
+    Core.:> Core.QueryParam "uploadType" Core.Text
+    Core.:> Core.QueryParam "upload_protocol" Core.Text
+    Core.:> Core.QueryParam "alt" Core.AltMedia
+    Core.:> Core.Get '[Core.OctetStream] Core.Stream
+
+-- | Downloads a previously created system APK which is suitable for inclusion in a system image.
+--
+-- /See:/ 'newAndroidPublisherSystemapksVariantsDownload' smart constructor.
+data AndroidPublisherSystemapksVariantsDownload = AndroidPublisherSystemapksVariantsDownload
+  { -- | V1 error format.
+    xgafv :: (Core.Maybe Xgafv),
+    -- | OAuth access token.
+    accessToken :: (Core.Maybe Core.Text),
+    -- | JSONP
+    callback :: (Core.Maybe Core.Text),
+    -- | Package name of the app.
+    packageName :: Core.Text,
+    -- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
+    uploadType :: (Core.Maybe Core.Text),
+    -- | Upload protocol for media (e.g. \"raw\", \"multipart\").
+    uploadProtocol :: (Core.Maybe Core.Text),
+    -- | The ID of a previously created system APK variant.
+    variantId :: Core.Word32,
+    -- | The version code of the App Bundle.
+    versionCode :: Core.Int64
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'AndroidPublisherSystemapksVariantsDownload' with the minimum fields required to make a request.
+newAndroidPublisherSystemapksVariantsDownload ::
+  -- |  Package name of the app. See 'packageName'.
+  Core.Text ->
+  -- |  The ID of a previously created system APK variant. See 'variantId'.
+  Core.Word32 ->
+  -- |  The version code of the App Bundle. See 'versionCode'.
+  Core.Int64 ->
+  AndroidPublisherSystemapksVariantsDownload
+newAndroidPublisherSystemapksVariantsDownload
+  packageName
+  variantId
+  versionCode =
+    AndroidPublisherSystemapksVariantsDownload
+      { xgafv = Core.Nothing,
+        accessToken = Core.Nothing,
+        callback = Core.Nothing,
+        packageName = packageName,
+        uploadType = Core.Nothing,
+        uploadProtocol = Core.Nothing,
+        variantId = variantId,
+        versionCode = versionCode
+      }
+
+instance
+  Core.GoogleRequest
+    AndroidPublisherSystemapksVariantsDownload
+  where
+  type Rs AndroidPublisherSystemapksVariantsDownload = ()
+  type
+    Scopes AndroidPublisherSystemapksVariantsDownload =
+      '[Androidpublisher'FullControl]
+  requestClient AndroidPublisherSystemapksVariantsDownload {..} =
+    go
+      packageName
+      versionCode
+      variantId
+      xgafv
+      accessToken
+      callback
+      uploadType
+      uploadProtocol
+      (Core.Just Core.AltJSON)
+      androidPublisherService
+    where
+      go Core.:<|> _ =
+        Core.buildClient
+          ( Core.Proxy ::
+              Core.Proxy AndroidPublisherSystemapksVariantsDownloadResource
+          )
+          Core.mempty
+
+instance
+  Core.GoogleRequest
+    (Core.MediaDownload AndroidPublisherSystemapksVariantsDownload)
+  where
+  type
+    Rs
+      (Core.MediaDownload AndroidPublisherSystemapksVariantsDownload) =
+      Core.Stream
+  type
+    Scopes
+      (Core.MediaDownload AndroidPublisherSystemapksVariantsDownload) =
+      Core.Scopes AndroidPublisherSystemapksVariantsDownload
+  requestClient
+    (Core.MediaDownload AndroidPublisherSystemapksVariantsDownload {..}) =
+      go
+        packageName
+        versionCode
+        variantId
+        xgafv
+        accessToken
+        callback
+        uploadType
+        uploadProtocol
+        (Core.Just Core.AltMedia)
+        androidPublisherService
+      where
+        _ Core.:<|> go =
+          Core.buildClient
+            ( Core.Proxy ::
+                Core.Proxy AndroidPublisherSystemapksVariantsDownloadResource
+            )
+            Core.mempty
diff --git a/gen/Gogol/AndroidPublisher/Systemapks/Variants/Get.hs b/gen/Gogol/AndroidPublisher/Systemapks/Variants/Get.hs
new file mode 100644
--- /dev/null
+++ b/gen/Gogol/AndroidPublisher/Systemapks/Variants/Get.hs
@@ -0,0 +1,132 @@
+{-# LANGUAGE DataKinds #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE ImportQualifiedPost #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-name-shadowing #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- |
+-- Module      : Gogol.AndroidPublisher.Systemapks.Variants.Get
+-- Copyright   : (c) 2015-2025 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay+gogol@gmail.com>
+--               Toni Cebrián <toni@tonicebrian.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Returns a previously created system APK variant.
+--
+-- /See:/ <https://developers.google.com/android-publisher Google Play Android Developer API Reference> for @androidpublisher.systemapks.variants.get@.
+module Gogol.AndroidPublisher.Systemapks.Variants.Get
+  ( -- * Resource
+    AndroidPublisherSystemapksVariantsGetResource,
+
+    -- ** Constructing a Request
+    AndroidPublisherSystemapksVariantsGet (..),
+    newAndroidPublisherSystemapksVariantsGet,
+  )
+where
+
+import Gogol.AndroidPublisher.Types
+import Gogol.Prelude qualified as Core
+
+-- | A resource alias for @androidpublisher.systemapks.variants.get@ method which the
+-- 'AndroidPublisherSystemapksVariantsGet' request conforms to.
+type AndroidPublisherSystemapksVariantsGetResource =
+  "androidpublisher"
+    Core.:> "v3"
+    Core.:> "applications"
+    Core.:> Core.Capture "packageName" Core.Text
+    Core.:> "systemApks"
+    Core.:> Core.Capture "versionCode" Core.Int64
+    Core.:> "variants"
+    Core.:> Core.Capture "variantId" Core.Word32
+    Core.:> Core.QueryParam "$.xgafv" Xgafv
+    Core.:> Core.QueryParam "access_token" Core.Text
+    Core.:> Core.QueryParam "callback" Core.Text
+    Core.:> Core.QueryParam "uploadType" Core.Text
+    Core.:> Core.QueryParam "upload_protocol" Core.Text
+    Core.:> Core.QueryParam "alt" Core.AltJSON
+    Core.:> Core.Get '[Core.JSON] Variant
+
+-- | Returns a previously created system APK variant.
+--
+-- /See:/ 'newAndroidPublisherSystemapksVariantsGet' smart constructor.
+data AndroidPublisherSystemapksVariantsGet = AndroidPublisherSystemapksVariantsGet
+  { -- | V1 error format.
+    xgafv :: (Core.Maybe Xgafv),
+    -- | OAuth access token.
+    accessToken :: (Core.Maybe Core.Text),
+    -- | JSONP
+    callback :: (Core.Maybe Core.Text),
+    -- | Package name of the app.
+    packageName :: Core.Text,
+    -- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
+    uploadType :: (Core.Maybe Core.Text),
+    -- | Upload protocol for media (e.g. \"raw\", \"multipart\").
+    uploadProtocol :: (Core.Maybe Core.Text),
+    -- | The ID of a previously created system APK variant.
+    variantId :: Core.Word32,
+    -- | The version code of the App Bundle.
+    versionCode :: Core.Int64
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'AndroidPublisherSystemapksVariantsGet' with the minimum fields required to make a request.
+newAndroidPublisherSystemapksVariantsGet ::
+  -- |  Package name of the app. See 'packageName'.
+  Core.Text ->
+  -- |  The ID of a previously created system APK variant. See 'variantId'.
+  Core.Word32 ->
+  -- |  The version code of the App Bundle. See 'versionCode'.
+  Core.Int64 ->
+  AndroidPublisherSystemapksVariantsGet
+newAndroidPublisherSystemapksVariantsGet
+  packageName
+  variantId
+  versionCode =
+    AndroidPublisherSystemapksVariantsGet
+      { xgafv = Core.Nothing,
+        accessToken = Core.Nothing,
+        callback = Core.Nothing,
+        packageName = packageName,
+        uploadType = Core.Nothing,
+        uploadProtocol = Core.Nothing,
+        variantId = variantId,
+        versionCode = versionCode
+      }
+
+instance Core.GoogleRequest AndroidPublisherSystemapksVariantsGet where
+  type Rs AndroidPublisherSystemapksVariantsGet = Variant
+  type
+    Scopes AndroidPublisherSystemapksVariantsGet =
+      '[Androidpublisher'FullControl]
+  requestClient AndroidPublisherSystemapksVariantsGet {..} =
+    go
+      packageName
+      versionCode
+      variantId
+      xgafv
+      accessToken
+      callback
+      uploadType
+      uploadProtocol
+      (Core.Just Core.AltJSON)
+      androidPublisherService
+    where
+      go =
+        Core.buildClient
+          ( Core.Proxy ::
+              Core.Proxy AndroidPublisherSystemapksVariantsGetResource
+          )
+          Core.mempty
diff --git a/gen/Gogol/AndroidPublisher/Systemapks/Variants/List.hs b/gen/Gogol/AndroidPublisher/Systemapks/Variants/List.hs
new file mode 100644
--- /dev/null
+++ b/gen/Gogol/AndroidPublisher/Systemapks/Variants/List.hs
@@ -0,0 +1,124 @@
+{-# LANGUAGE DataKinds #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE ImportQualifiedPost #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-name-shadowing #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- |
+-- Module      : Gogol.AndroidPublisher.Systemapks.Variants.List
+-- Copyright   : (c) 2015-2025 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay+gogol@gmail.com>
+--               Toni Cebrián <toni@tonicebrian.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Returns the list of previously created system APK variants.
+--
+-- /See:/ <https://developers.google.com/android-publisher Google Play Android Developer API Reference> for @androidpublisher.systemapks.variants.list@.
+module Gogol.AndroidPublisher.Systemapks.Variants.List
+  ( -- * Resource
+    AndroidPublisherSystemapksVariantsListResource,
+
+    -- ** Constructing a Request
+    AndroidPublisherSystemapksVariantsList (..),
+    newAndroidPublisherSystemapksVariantsList,
+  )
+where
+
+import Gogol.AndroidPublisher.Types
+import Gogol.Prelude qualified as Core
+
+-- | A resource alias for @androidpublisher.systemapks.variants.list@ method which the
+-- 'AndroidPublisherSystemapksVariantsList' request conforms to.
+type AndroidPublisherSystemapksVariantsListResource =
+  "androidpublisher"
+    Core.:> "v3"
+    Core.:> "applications"
+    Core.:> Core.Capture "packageName" Core.Text
+    Core.:> "systemApks"
+    Core.:> Core.Capture "versionCode" Core.Int64
+    Core.:> "variants"
+    Core.:> Core.QueryParam "$.xgafv" Xgafv
+    Core.:> Core.QueryParam "access_token" Core.Text
+    Core.:> Core.QueryParam "callback" Core.Text
+    Core.:> Core.QueryParam "uploadType" Core.Text
+    Core.:> Core.QueryParam "upload_protocol" Core.Text
+    Core.:> Core.QueryParam "alt" Core.AltJSON
+    Core.:> Core.Get '[Core.JSON] SystemApksListResponse
+
+-- | Returns the list of previously created system APK variants.
+--
+-- /See:/ 'newAndroidPublisherSystemapksVariantsList' smart constructor.
+data AndroidPublisherSystemapksVariantsList = AndroidPublisherSystemapksVariantsList
+  { -- | V1 error format.
+    xgafv :: (Core.Maybe Xgafv),
+    -- | OAuth access token.
+    accessToken :: (Core.Maybe Core.Text),
+    -- | JSONP
+    callback :: (Core.Maybe Core.Text),
+    -- | Package name of the app.
+    packageName :: Core.Text,
+    -- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
+    uploadType :: (Core.Maybe Core.Text),
+    -- | Upload protocol for media (e.g. \"raw\", \"multipart\").
+    uploadProtocol :: (Core.Maybe Core.Text),
+    -- | The version code of the App Bundle.
+    versionCode :: Core.Int64
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'AndroidPublisherSystemapksVariantsList' with the minimum fields required to make a request.
+newAndroidPublisherSystemapksVariantsList ::
+  -- |  Package name of the app. See 'packageName'.
+  Core.Text ->
+  -- |  The version code of the App Bundle. See 'versionCode'.
+  Core.Int64 ->
+  AndroidPublisherSystemapksVariantsList
+newAndroidPublisherSystemapksVariantsList packageName versionCode =
+  AndroidPublisherSystemapksVariantsList
+    { xgafv = Core.Nothing,
+      accessToken = Core.Nothing,
+      callback = Core.Nothing,
+      packageName = packageName,
+      uploadType = Core.Nothing,
+      uploadProtocol = Core.Nothing,
+      versionCode = versionCode
+    }
+
+instance Core.GoogleRequest AndroidPublisherSystemapksVariantsList where
+  type
+    Rs AndroidPublisherSystemapksVariantsList =
+      SystemApksListResponse
+  type
+    Scopes AndroidPublisherSystemapksVariantsList =
+      '[Androidpublisher'FullControl]
+  requestClient AndroidPublisherSystemapksVariantsList {..} =
+    go
+      packageName
+      versionCode
+      xgafv
+      accessToken
+      callback
+      uploadType
+      uploadProtocol
+      (Core.Just Core.AltJSON)
+      androidPublisherService
+    where
+      go =
+        Core.buildClient
+          ( Core.Proxy ::
+              Core.Proxy AndroidPublisherSystemapksVariantsListResource
+          )
+          Core.mempty
diff --git a/gen/Gogol/AndroidPublisher/Types.hs b/gen/Gogol/AndroidPublisher/Types.hs
new file mode 100644
--- /dev/null
+++ b/gen/Gogol/AndroidPublisher/Types.hs
@@ -0,0 +1,1200 @@
+{-# LANGUAGE DataKinds #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE ImportQualifiedPost #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-name-shadowing #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- |
+-- Module      : Gogol.AndroidPublisher.Types
+-- Copyright   : (c) 2015-2025 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay+gogol@gmail.com>
+--               Toni Cebrián <toni@tonicebrian.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Gogol.AndroidPublisher.Types
+  ( -- * Configuration
+    androidPublisherService,
+
+    -- * OAuth Scopes
+    Androidpublisher'FullControl,
+
+    -- * Types
+
+    -- ** Xgafv
+    Xgafv (..),
+
+    -- ** Abi
+    Abi (..),
+    newAbi,
+
+    -- ** Abi_Alias
+    Abi_Alias (..),
+
+    -- ** AbiTargeting
+    AbiTargeting (..),
+    newAbiTargeting,
+
+    -- ** AcquisitionTargetingRule
+    AcquisitionTargetingRule (..),
+    newAcquisitionTargetingRule,
+
+    -- ** ActivateBasePlanRequest
+    ActivateBasePlanRequest (..),
+    newActivateBasePlanRequest,
+
+    -- ** ActivateBasePlanRequest_LatencyTolerance
+    ActivateBasePlanRequest_LatencyTolerance (..),
+
+    -- ** ActivateSubscriptionOfferRequest
+    ActivateSubscriptionOfferRequest (..),
+    newActivateSubscriptionOfferRequest,
+
+    -- ** ActivateSubscriptionOfferRequest_LatencyTolerance
+    ActivateSubscriptionOfferRequest_LatencyTolerance (..),
+
+    -- ** AddTargetingRequest
+    AddTargetingRequest (..),
+    newAddTargetingRequest,
+
+    -- ** AddTargetingResponse
+    AddTargetingResponse (..),
+    newAddTargetingResponse,
+
+    -- ** AllUsers
+    AllUsers (..),
+    newAllUsers,
+
+    -- ** AndroidSdks
+    AndroidSdks (..),
+    newAndroidSdks,
+
+    -- ** Apk
+    Apk (..),
+    newApk,
+
+    -- ** ApkBinary
+    ApkBinary (..),
+    newApkBinary,
+
+    -- ** ApkDescription
+    ApkDescription (..),
+    newApkDescription,
+
+    -- ** ApkSet
+    ApkSet (..),
+    newApkSet,
+
+    -- ** ApkTargeting
+    ApkTargeting (..),
+    newApkTargeting,
+
+    -- ** ApksAddExternallyHostedRequest
+    ApksAddExternallyHostedRequest (..),
+    newApksAddExternallyHostedRequest,
+
+    -- ** ApksAddExternallyHostedResponse
+    ApksAddExternallyHostedResponse (..),
+    newApksAddExternallyHostedResponse,
+
+    -- ** ApksListResponse
+    ApksListResponse (..),
+    newApksListResponse,
+
+    -- ** AppDetails
+    AppDetails (..),
+    newAppDetails,
+
+    -- ** AppEdit
+    AppEdit (..),
+    newAppEdit,
+
+    -- ** AppRecoveryAction
+    AppRecoveryAction (..),
+    newAppRecoveryAction,
+
+    -- ** AppRecoveryAction_Status
+    AppRecoveryAction_Status (..),
+
+    -- ** AppVersionList
+    AppVersionList (..),
+    newAppVersionList,
+
+    -- ** AppVersionRange
+    AppVersionRange (..),
+    newAppVersionRange,
+
+    -- ** ArchiveSubscriptionRequest
+    ArchiveSubscriptionRequest (..),
+    newArchiveSubscriptionRequest,
+
+    -- ** AssetModuleMetadata
+    AssetModuleMetadata (..),
+    newAssetModuleMetadata,
+
+    -- ** AssetModuleMetadata_DeliveryType
+    AssetModuleMetadata_DeliveryType (..),
+
+    -- ** AssetSliceSet
+    AssetSliceSet (..),
+    newAssetSliceSet,
+
+    -- ** AutoRenewingBasePlanType
+    AutoRenewingBasePlanType (..),
+    newAutoRenewingBasePlanType,
+
+    -- ** AutoRenewingBasePlanType_ProrationMode
+    AutoRenewingBasePlanType_ProrationMode (..),
+
+    -- ** AutoRenewingBasePlanType_ResubscribeState
+    AutoRenewingBasePlanType_ResubscribeState (..),
+
+    -- ** AutoRenewingPlan
+    AutoRenewingPlan (..),
+    newAutoRenewingPlan,
+
+    -- ** BasePlan
+    BasePlan (..),
+    newBasePlan,
+
+    -- ** BasePlan_State
+    BasePlan_State (..),
+
+    -- ** BatchGetSubscriptionOffersRequest
+    BatchGetSubscriptionOffersRequest (..),
+    newBatchGetSubscriptionOffersRequest,
+
+    -- ** BatchGetSubscriptionOffersResponse
+    BatchGetSubscriptionOffersResponse (..),
+    newBatchGetSubscriptionOffersResponse,
+
+    -- ** BatchGetSubscriptionsResponse
+    BatchGetSubscriptionsResponse (..),
+    newBatchGetSubscriptionsResponse,
+
+    -- ** BatchMigrateBasePlanPricesRequest
+    BatchMigrateBasePlanPricesRequest (..),
+    newBatchMigrateBasePlanPricesRequest,
+
+    -- ** BatchMigrateBasePlanPricesResponse
+    BatchMigrateBasePlanPricesResponse (..),
+    newBatchMigrateBasePlanPricesResponse,
+
+    -- ** BatchUpdateBasePlanStatesRequest
+    BatchUpdateBasePlanStatesRequest (..),
+    newBatchUpdateBasePlanStatesRequest,
+
+    -- ** BatchUpdateBasePlanStatesResponse
+    BatchUpdateBasePlanStatesResponse (..),
+    newBatchUpdateBasePlanStatesResponse,
+
+    -- ** BatchUpdateSubscriptionOfferStatesRequest
+    BatchUpdateSubscriptionOfferStatesRequest (..),
+    newBatchUpdateSubscriptionOfferStatesRequest,
+
+    -- ** BatchUpdateSubscriptionOfferStatesResponse
+    BatchUpdateSubscriptionOfferStatesResponse (..),
+    newBatchUpdateSubscriptionOfferStatesResponse,
+
+    -- ** BatchUpdateSubscriptionOffersRequest
+    BatchUpdateSubscriptionOffersRequest (..),
+    newBatchUpdateSubscriptionOffersRequest,
+
+    -- ** BatchUpdateSubscriptionOffersResponse
+    BatchUpdateSubscriptionOffersResponse (..),
+    newBatchUpdateSubscriptionOffersResponse,
+
+    -- ** BatchUpdateSubscriptionsRequest
+    BatchUpdateSubscriptionsRequest (..),
+    newBatchUpdateSubscriptionsRequest,
+
+    -- ** BatchUpdateSubscriptionsResponse
+    BatchUpdateSubscriptionsResponse (..),
+    newBatchUpdateSubscriptionsResponse,
+
+    -- ** Bundle
+    Bundle (..),
+    newBundle,
+
+    -- ** BundlesListResponse
+    BundlesListResponse (..),
+    newBundlesListResponse,
+
+    -- ** CancelAppRecoveryRequest
+    CancelAppRecoveryRequest (..),
+    newCancelAppRecoveryRequest,
+
+    -- ** CancelAppRecoveryResponse
+    CancelAppRecoveryResponse (..),
+    newCancelAppRecoveryResponse,
+
+    -- ** CancelSurveyResult
+    CancelSurveyResult (..),
+    newCancelSurveyResult,
+
+    -- ** CancelSurveyResult_Reason
+    CancelSurveyResult_Reason (..),
+
+    -- ** CanceledStateContext
+    CanceledStateContext (..),
+    newCanceledStateContext,
+
+    -- ** Comment
+    Comment (..),
+    newComment,
+
+    -- ** ConvertRegionPricesRequest
+    ConvertRegionPricesRequest (..),
+    newConvertRegionPricesRequest,
+
+    -- ** ConvertRegionPricesResponse
+    ConvertRegionPricesResponse (..),
+    newConvertRegionPricesResponse,
+
+    -- ** ConvertRegionPricesResponse_ConvertedRegionPrices
+    ConvertRegionPricesResponse_ConvertedRegionPrices (..),
+    newConvertRegionPricesResponse_ConvertedRegionPrices,
+
+    -- ** ConvertedOtherRegionsPrice
+    ConvertedOtherRegionsPrice (..),
+    newConvertedOtherRegionsPrice,
+
+    -- ** ConvertedRegionPrice
+    ConvertedRegionPrice (..),
+    newConvertedRegionPrice,
+
+    -- ** CountryTargeting
+    CountryTargeting (..),
+    newCountryTargeting,
+
+    -- ** CreateDraftAppRecoveryRequest
+    CreateDraftAppRecoveryRequest (..),
+    newCreateDraftAppRecoveryRequest,
+
+    -- ** DeactivateBasePlanRequest
+    DeactivateBasePlanRequest (..),
+    newDeactivateBasePlanRequest,
+
+    -- ** DeactivateBasePlanRequest_LatencyTolerance
+    DeactivateBasePlanRequest_LatencyTolerance (..),
+
+    -- ** DeactivateSubscriptionOfferRequest
+    DeactivateSubscriptionOfferRequest (..),
+    newDeactivateSubscriptionOfferRequest,
+
+    -- ** DeactivateSubscriptionOfferRequest_LatencyTolerance
+    DeactivateSubscriptionOfferRequest_LatencyTolerance (..),
+
+    -- ** DeferredItemReplacement
+    DeferredItemReplacement (..),
+    newDeferredItemReplacement,
+
+    -- ** DeobfuscationFile
+    DeobfuscationFile (..),
+    newDeobfuscationFile,
+
+    -- ** DeobfuscationFile_SymbolType
+    DeobfuscationFile_SymbolType (..),
+
+    -- ** DeobfuscationFilesUploadResponse
+    DeobfuscationFilesUploadResponse (..),
+    newDeobfuscationFilesUploadResponse,
+
+    -- ** DeployAppRecoveryRequest
+    DeployAppRecoveryRequest (..),
+    newDeployAppRecoveryRequest,
+
+    -- ** DeployAppRecoveryResponse
+    DeployAppRecoveryResponse (..),
+    newDeployAppRecoveryResponse,
+
+    -- ** DeveloperComment
+    DeveloperComment (..),
+    newDeveloperComment,
+
+    -- ** DeveloperInitiatedCancellation
+    DeveloperInitiatedCancellation (..),
+    newDeveloperInitiatedCancellation,
+
+    -- ** DeviceFeature
+    DeviceFeature (..),
+    newDeviceFeature,
+
+    -- ** DeviceFeatureTargeting
+    DeviceFeatureTargeting (..),
+    newDeviceFeatureTargeting,
+
+    -- ** DeviceGroup
+    DeviceGroup (..),
+    newDeviceGroup,
+
+    -- ** DeviceId
+    DeviceId (..),
+    newDeviceId,
+
+    -- ** DeviceMetadata
+    DeviceMetadata (..),
+    newDeviceMetadata,
+
+    -- ** DeviceRam
+    DeviceRam (..),
+    newDeviceRam,
+
+    -- ** DeviceSelector
+    DeviceSelector (..),
+    newDeviceSelector,
+
+    -- ** DeviceSpec
+    DeviceSpec (..),
+    newDeviceSpec,
+
+    -- ** DeviceTier
+    DeviceTier (..),
+    newDeviceTier,
+
+    -- ** DeviceTierConfig
+    DeviceTierConfig (..),
+    newDeviceTierConfig,
+
+    -- ** DeviceTierSet
+    DeviceTierSet (..),
+    newDeviceTierSet,
+
+    -- ** ExpansionFile
+    ExpansionFile (..),
+    newExpansionFile,
+
+    -- ** ExpansionFilesUploadResponse
+    ExpansionFilesUploadResponse (..),
+    newExpansionFilesUploadResponse,
+
+    -- ** ExternalAccountIdentifiers
+    ExternalAccountIdentifiers (..),
+    newExternalAccountIdentifiers,
+
+    -- ** ExternalSubscription
+    ExternalSubscription (..),
+    newExternalSubscription,
+
+    -- ** ExternalSubscription_SubscriptionType
+    ExternalSubscription_SubscriptionType (..),
+
+    -- ** ExternalTransaction
+    ExternalTransaction (..),
+    newExternalTransaction,
+
+    -- ** ExternalTransaction_TransactionState
+    ExternalTransaction_TransactionState (..),
+
+    -- ** ExternalTransactionAddress
+    ExternalTransactionAddress (..),
+    newExternalTransactionAddress,
+
+    -- ** ExternalTransactionTestPurchase
+    ExternalTransactionTestPurchase (..),
+    newExternalTransactionTestPurchase,
+
+    -- ** ExternallyHostedApk
+    ExternallyHostedApk (..),
+    newExternallyHostedApk,
+
+    -- ** FullRefund
+    FullRefund (..),
+    newFullRefund,
+
+    -- ** GeneratedApksListResponse
+    GeneratedApksListResponse (..),
+    newGeneratedApksListResponse,
+
+    -- ** GeneratedApksPerSigningKey
+    GeneratedApksPerSigningKey (..),
+    newGeneratedApksPerSigningKey,
+
+    -- ** GeneratedAssetPackSlice
+    GeneratedAssetPackSlice (..),
+    newGeneratedAssetPackSlice,
+
+    -- ** GeneratedRecoveryApk
+    GeneratedRecoveryApk (..),
+    newGeneratedRecoveryApk,
+
+    -- ** GeneratedRecoveryApk_RecoveryStatus
+    GeneratedRecoveryApk_RecoveryStatus (..),
+
+    -- ** GeneratedSplitApk
+    GeneratedSplitApk (..),
+    newGeneratedSplitApk,
+
+    -- ** GeneratedStandaloneApk
+    GeneratedStandaloneApk (..),
+    newGeneratedStandaloneApk,
+
+    -- ** GeneratedUniversalApk
+    GeneratedUniversalApk (..),
+    newGeneratedUniversalApk,
+
+    -- ** GetSubscriptionOfferRequest
+    GetSubscriptionOfferRequest (..),
+    newGetSubscriptionOfferRequest,
+
+    -- ** Grant
+    Grant (..),
+    newGrant,
+
+    -- ** Grant_AppLevelPermissionsItem
+    Grant_AppLevelPermissionsItem (..),
+
+    -- ** Image
+    Image (..),
+    newImage,
+
+    -- ** ImagesDeleteAllResponse
+    ImagesDeleteAllResponse (..),
+    newImagesDeleteAllResponse,
+
+    -- ** ImagesListResponse
+    ImagesListResponse (..),
+    newImagesListResponse,
+
+    -- ** ImagesUploadResponse
+    ImagesUploadResponse (..),
+    newImagesUploadResponse,
+
+    -- ** InAppProduct
+    InAppProduct (..),
+    newInAppProduct,
+
+    -- ** InAppProduct_Listings
+    InAppProduct_Listings (..),
+    newInAppProduct_Listings,
+
+    -- ** InAppProduct_Prices
+    InAppProduct_Prices (..),
+    newInAppProduct_Prices,
+
+    -- ** InAppProduct_PurchaseType
+    InAppProduct_PurchaseType (..),
+
+    -- ** InAppProduct_Status
+    InAppProduct_Status (..),
+
+    -- ** InAppProductListing
+    InAppProductListing (..),
+    newInAppProductListing,
+
+    -- ** InappproductsBatchDeleteRequest
+    InappproductsBatchDeleteRequest (..),
+    newInappproductsBatchDeleteRequest,
+
+    -- ** InappproductsBatchGetResponse
+    InappproductsBatchGetResponse (..),
+    newInappproductsBatchGetResponse,
+
+    -- ** InappproductsBatchUpdateRequest
+    InappproductsBatchUpdateRequest (..),
+    newInappproductsBatchUpdateRequest,
+
+    -- ** InappproductsBatchUpdateResponse
+    InappproductsBatchUpdateResponse (..),
+    newInappproductsBatchUpdateResponse,
+
+    -- ** InappproductsDeleteRequest
+    InappproductsDeleteRequest (..),
+    newInappproductsDeleteRequest,
+
+    -- ** InappproductsDeleteRequest_LatencyTolerance
+    InappproductsDeleteRequest_LatencyTolerance (..),
+
+    -- ** InappproductsListResponse
+    InappproductsListResponse (..),
+    newInappproductsListResponse,
+
+    -- ** InappproductsUpdateRequest
+    InappproductsUpdateRequest (..),
+    newInappproductsUpdateRequest,
+
+    -- ** InappproductsUpdateRequest_LatencyTolerance
+    InappproductsUpdateRequest_LatencyTolerance (..),
+
+    -- ** InstallmentPlan
+    InstallmentPlan (..),
+    newInstallmentPlan,
+
+    -- ** InstallmentsBasePlanType
+    InstallmentsBasePlanType (..),
+    newInstallmentsBasePlanType,
+
+    -- ** InstallmentsBasePlanType_ProrationMode
+    InstallmentsBasePlanType_ProrationMode (..),
+
+    -- ** InstallmentsBasePlanType_RenewalType
+    InstallmentsBasePlanType_RenewalType (..),
+
+    -- ** InstallmentsBasePlanType_ResubscribeState
+    InstallmentsBasePlanType_ResubscribeState (..),
+
+    -- ** InternalAppSharingArtifact
+    InternalAppSharingArtifact (..),
+    newInternalAppSharingArtifact,
+
+    -- ** IntroductoryPriceInfo
+    IntroductoryPriceInfo (..),
+    newIntroductoryPriceInfo,
+
+    -- ** LanguageTargeting
+    LanguageTargeting (..),
+    newLanguageTargeting,
+
+    -- ** ListAppRecoveriesResponse
+    ListAppRecoveriesResponse (..),
+    newListAppRecoveriesResponse,
+
+    -- ** ListDeviceTierConfigsResponse
+    ListDeviceTierConfigsResponse (..),
+    newListDeviceTierConfigsResponse,
+
+    -- ** ListSubscriptionOffersResponse
+    ListSubscriptionOffersResponse (..),
+    newListSubscriptionOffersResponse,
+
+    -- ** ListSubscriptionsResponse
+    ListSubscriptionsResponse (..),
+    newListSubscriptionsResponse,
+
+    -- ** ListUsersResponse
+    ListUsersResponse (..),
+    newListUsersResponse,
+
+    -- ** Listing
+    Listing (..),
+    newListing,
+
+    -- ** ListingsListResponse
+    ListingsListResponse (..),
+    newListingsListResponse,
+
+    -- ** LocalizedText
+    LocalizedText (..),
+    newLocalizedText,
+
+    -- ** ManagedProductTaxAndComplianceSettings
+    ManagedProductTaxAndComplianceSettings (..),
+    newManagedProductTaxAndComplianceSettings,
+
+    -- ** ManagedProductTaxAndComplianceSettings_EeaWithdrawalRightType
+    ManagedProductTaxAndComplianceSettings_EeaWithdrawalRightType (..),
+
+    -- ** ManagedProductTaxAndComplianceSettings_TaxRateInfoByRegionCode
+    ManagedProductTaxAndComplianceSettings_TaxRateInfoByRegionCode (..),
+    newManagedProductTaxAndComplianceSettings_TaxRateInfoByRegionCode,
+
+    -- ** MigrateBasePlanPricesRequest
+    MigrateBasePlanPricesRequest (..),
+    newMigrateBasePlanPricesRequest,
+
+    -- ** MigrateBasePlanPricesRequest_LatencyTolerance
+    MigrateBasePlanPricesRequest_LatencyTolerance (..),
+
+    -- ** MigrateBasePlanPricesResponse
+    MigrateBasePlanPricesResponse (..),
+    newMigrateBasePlanPricesResponse,
+
+    -- ** ModuleMetadata
+    ModuleMetadata (..),
+    newModuleMetadata,
+
+    -- ** ModuleMetadata_DeliveryType
+    ModuleMetadata_DeliveryType (..),
+
+    -- ** ModuleMetadata_ModuleType
+    ModuleMetadata_ModuleType (..),
+
+    -- ** ModuleTargeting
+    ModuleTargeting (..),
+    newModuleTargeting,
+
+    -- ** Money
+    Money (..),
+    newMoney,
+
+    -- ** MultiAbi
+    MultiAbi (..),
+    newMultiAbi,
+
+    -- ** MultiAbiTargeting
+    MultiAbiTargeting (..),
+    newMultiAbiTargeting,
+
+    -- ** OfferDetails
+    OfferDetails (..),
+    newOfferDetails,
+
+    -- ** OfferTag
+    OfferTag (..),
+    newOfferTag,
+
+    -- ** OneTimeCode
+    OneTimeCode (..),
+    newOneTimeCode,
+
+    -- ** OneTimeExternalTransaction
+    OneTimeExternalTransaction (..),
+    newOneTimeExternalTransaction,
+
+    -- ** OtherRecurringProduct
+    OtherRecurringProduct (..),
+    newOtherRecurringProduct,
+
+    -- ** OtherRegionsBasePlanConfig
+    OtherRegionsBasePlanConfig (..),
+    newOtherRegionsBasePlanConfig,
+
+    -- ** OtherRegionsSubscriptionOfferConfig
+    OtherRegionsSubscriptionOfferConfig (..),
+    newOtherRegionsSubscriptionOfferConfig,
+
+    -- ** OtherRegionsSubscriptionOfferPhaseConfig
+    OtherRegionsSubscriptionOfferPhaseConfig (..),
+    newOtherRegionsSubscriptionOfferPhaseConfig,
+
+    -- ** OtherRegionsSubscriptionOfferPhaseFreePriceOverride
+    OtherRegionsSubscriptionOfferPhaseFreePriceOverride (..),
+    newOtherRegionsSubscriptionOfferPhaseFreePriceOverride,
+
+    -- ** OtherRegionsSubscriptionOfferPhasePrices
+    OtherRegionsSubscriptionOfferPhasePrices (..),
+    newOtherRegionsSubscriptionOfferPhasePrices,
+
+    -- ** PageInfo
+    PageInfo (..),
+    newPageInfo,
+
+    -- ** PartialRefund
+    PartialRefund (..),
+    newPartialRefund,
+
+    -- ** PausedStateContext
+    PausedStateContext (..),
+    newPausedStateContext,
+
+    -- ** PendingCancellation
+    PendingCancellation (..),
+    newPendingCancellation,
+
+    -- ** PrepaidBasePlanType
+    PrepaidBasePlanType (..),
+    newPrepaidBasePlanType,
+
+    -- ** PrepaidBasePlanType_TimeExtension
+    PrepaidBasePlanType_TimeExtension (..),
+
+    -- ** PrepaidPlan
+    PrepaidPlan (..),
+    newPrepaidPlan,
+
+    -- ** Price
+    Price (..),
+    newPrice,
+
+    -- ** ProductPurchase
+    ProductPurchase (..),
+    newProductPurchase,
+
+    -- ** ProductPurchasesAcknowledgeRequest
+    ProductPurchasesAcknowledgeRequest (..),
+    newProductPurchasesAcknowledgeRequest,
+
+    -- ** RecurringExternalTransaction
+    RecurringExternalTransaction (..),
+    newRecurringExternalTransaction,
+
+    -- ** RecurringExternalTransaction_MigratedTransactionProgram
+    RecurringExternalTransaction_MigratedTransactionProgram (..),
+
+    -- ** RefundExternalTransactionRequest
+    RefundExternalTransactionRequest (..),
+    newRefundExternalTransactionRequest,
+
+    -- ** RegionalBasePlanConfig
+    RegionalBasePlanConfig (..),
+    newRegionalBasePlanConfig,
+
+    -- ** RegionalPriceMigrationConfig
+    RegionalPriceMigrationConfig (..),
+    newRegionalPriceMigrationConfig,
+
+    -- ** RegionalPriceMigrationConfig_PriceIncreaseType
+    RegionalPriceMigrationConfig_PriceIncreaseType (..),
+
+    -- ** RegionalSubscriptionOfferConfig
+    RegionalSubscriptionOfferConfig (..),
+    newRegionalSubscriptionOfferConfig,
+
+    -- ** RegionalSubscriptionOfferPhaseConfig
+    RegionalSubscriptionOfferPhaseConfig (..),
+    newRegionalSubscriptionOfferPhaseConfig,
+
+    -- ** RegionalSubscriptionOfferPhaseFreePriceOverride
+    RegionalSubscriptionOfferPhaseFreePriceOverride (..),
+    newRegionalSubscriptionOfferPhaseFreePriceOverride,
+
+    -- ** RegionalTaxRateInfo
+    RegionalTaxRateInfo (..),
+    newRegionalTaxRateInfo,
+
+    -- ** RegionalTaxRateInfo_StreamingTaxType
+    RegionalTaxRateInfo_StreamingTaxType (..),
+
+    -- ** RegionalTaxRateInfo_TaxTier
+    RegionalTaxRateInfo_TaxTier (..),
+
+    -- ** Regions
+    Regions (..),
+    newRegions,
+
+    -- ** RegionsVersion
+    RegionsVersion (..),
+    newRegionsVersion,
+
+    -- ** RemoteInAppUpdate
+    RemoteInAppUpdate (..),
+    newRemoteInAppUpdate,
+
+    -- ** RemoteInAppUpdateData
+    RemoteInAppUpdateData (..),
+    newRemoteInAppUpdateData,
+
+    -- ** RemoteInAppUpdateDataPerBundle
+    RemoteInAppUpdateDataPerBundle (..),
+    newRemoteInAppUpdateDataPerBundle,
+
+    -- ** ReplacementCancellation
+    ReplacementCancellation (..),
+    newReplacementCancellation,
+
+    -- ** RestrictedPaymentCountries
+    RestrictedPaymentCountries (..),
+    newRestrictedPaymentCountries,
+
+    -- ** Review
+    Review (..),
+    newReview,
+
+    -- ** ReviewReplyResult
+    ReviewReplyResult (..),
+    newReviewReplyResult,
+
+    -- ** ReviewsListResponse
+    ReviewsListResponse (..),
+    newReviewsListResponse,
+
+    -- ** ReviewsReplyRequest
+    ReviewsReplyRequest (..),
+    newReviewsReplyRequest,
+
+    -- ** ReviewsReplyResponse
+    ReviewsReplyResponse (..),
+    newReviewsReplyResponse,
+
+    -- ** RevocationContext
+    RevocationContext (..),
+    newRevocationContext,
+
+    -- ** RevocationContextFullRefund
+    RevocationContextFullRefund (..),
+    newRevocationContextFullRefund,
+
+    -- ** RevocationContextProratedRefund
+    RevocationContextProratedRefund (..),
+    newRevocationContextProratedRefund,
+
+    -- ** RevokeSubscriptionPurchaseRequest
+    RevokeSubscriptionPurchaseRequest (..),
+    newRevokeSubscriptionPurchaseRequest,
+
+    -- ** RevokeSubscriptionPurchaseResponse
+    RevokeSubscriptionPurchaseResponse (..),
+    newRevokeSubscriptionPurchaseResponse,
+
+    -- ** SafetyLabelsUpdateRequest
+    SafetyLabelsUpdateRequest (..),
+    newSafetyLabelsUpdateRequest,
+
+    -- ** SafetyLabelsUpdateResponse
+    SafetyLabelsUpdateResponse (..),
+    newSafetyLabelsUpdateResponse,
+
+    -- ** ScreenDensity
+    ScreenDensity (..),
+    newScreenDensity,
+
+    -- ** ScreenDensity_DensityAlias
+    ScreenDensity_DensityAlias (..),
+
+    -- ** ScreenDensityTargeting
+    ScreenDensityTargeting (..),
+    newScreenDensityTargeting,
+
+    -- ** SdkVersion
+    SdkVersion (..),
+    newSdkVersion,
+
+    -- ** SdkVersionTargeting
+    SdkVersionTargeting (..),
+    newSdkVersionTargeting,
+
+    -- ** SignupPromotion
+    SignupPromotion (..),
+    newSignupPromotion,
+
+    -- ** SplitApkMetadata
+    SplitApkMetadata (..),
+    newSplitApkMetadata,
+
+    -- ** SplitApkVariant
+    SplitApkVariant (..),
+    newSplitApkVariant,
+
+    -- ** StandaloneApkMetadata
+    StandaloneApkMetadata (..),
+    newStandaloneApkMetadata,
+
+    -- ** SubscribeWithGoogleInfo
+    SubscribeWithGoogleInfo (..),
+    newSubscribeWithGoogleInfo,
+
+    -- ** Subscription
+    Subscription (..),
+    newSubscription,
+
+    -- ** SubscriptionCancelSurveyResult
+    SubscriptionCancelSurveyResult (..),
+    newSubscriptionCancelSurveyResult,
+
+    -- ** SubscriptionDeferralInfo
+    SubscriptionDeferralInfo (..),
+    newSubscriptionDeferralInfo,
+
+    -- ** SubscriptionItemPriceChangeDetails
+    SubscriptionItemPriceChangeDetails (..),
+    newSubscriptionItemPriceChangeDetails,
+
+    -- ** SubscriptionItemPriceChangeDetails_PriceChangeMode
+    SubscriptionItemPriceChangeDetails_PriceChangeMode (..),
+
+    -- ** SubscriptionItemPriceChangeDetails_PriceChangeState
+    SubscriptionItemPriceChangeDetails_PriceChangeState (..),
+
+    -- ** SubscriptionListing
+    SubscriptionListing (..),
+    newSubscriptionListing,
+
+    -- ** SubscriptionOffer
+    SubscriptionOffer (..),
+    newSubscriptionOffer,
+
+    -- ** SubscriptionOffer_State
+    SubscriptionOffer_State (..),
+
+    -- ** SubscriptionOfferPhase
+    SubscriptionOfferPhase (..),
+    newSubscriptionOfferPhase,
+
+    -- ** SubscriptionOfferTargeting
+    SubscriptionOfferTargeting (..),
+    newSubscriptionOfferTargeting,
+
+    -- ** SubscriptionPriceChange
+    SubscriptionPriceChange (..),
+    newSubscriptionPriceChange,
+
+    -- ** SubscriptionPurchase
+    SubscriptionPurchase (..),
+    newSubscriptionPurchase,
+
+    -- ** SubscriptionPurchaseLineItem
+    SubscriptionPurchaseLineItem (..),
+    newSubscriptionPurchaseLineItem,
+
+    -- ** SubscriptionPurchaseV2
+    SubscriptionPurchaseV2 (..),
+    newSubscriptionPurchaseV2,
+
+    -- ** SubscriptionPurchaseV2_AcknowledgementState
+    SubscriptionPurchaseV2_AcknowledgementState (..),
+
+    -- ** SubscriptionPurchaseV2_SubscriptionState
+    SubscriptionPurchaseV2_SubscriptionState (..),
+
+    -- ** SubscriptionPurchasesAcknowledgeRequest
+    SubscriptionPurchasesAcknowledgeRequest (..),
+    newSubscriptionPurchasesAcknowledgeRequest,
+
+    -- ** SubscriptionPurchasesDeferRequest
+    SubscriptionPurchasesDeferRequest (..),
+    newSubscriptionPurchasesDeferRequest,
+
+    -- ** SubscriptionPurchasesDeferResponse
+    SubscriptionPurchasesDeferResponse (..),
+    newSubscriptionPurchasesDeferResponse,
+
+    -- ** SubscriptionTaxAndComplianceSettings
+    SubscriptionTaxAndComplianceSettings (..),
+    newSubscriptionTaxAndComplianceSettings,
+
+    -- ** SubscriptionTaxAndComplianceSettings_EeaWithdrawalRightType
+    SubscriptionTaxAndComplianceSettings_EeaWithdrawalRightType (..),
+
+    -- ** SubscriptionTaxAndComplianceSettings_TaxRateInfoByRegionCode
+    SubscriptionTaxAndComplianceSettings_TaxRateInfoByRegionCode (..),
+    newSubscriptionTaxAndComplianceSettings_TaxRateInfoByRegionCode,
+
+    -- ** SystemApkOptions
+    SystemApkOptions (..),
+    newSystemApkOptions,
+
+    -- ** SystemApksListResponse
+    SystemApksListResponse (..),
+    newSystemApksListResponse,
+
+    -- ** SystemFeature
+    SystemFeature (..),
+    newSystemFeature,
+
+    -- ** SystemInitiatedCancellation
+    SystemInitiatedCancellation (..),
+    newSystemInitiatedCancellation,
+
+    -- ** SystemOnChip
+    SystemOnChip (..),
+    newSystemOnChip,
+
+    -- ** Targeting
+    Targeting (..),
+    newTargeting,
+
+    -- ** TargetingInfo
+    TargetingInfo (..),
+    newTargetingInfo,
+
+    -- ** TargetingRuleScope
+    TargetingRuleScope (..),
+    newTargetingRuleScope,
+
+    -- ** TargetingRuleScopeAnySubscriptionInApp
+    TargetingRuleScopeAnySubscriptionInApp (..),
+    newTargetingRuleScopeAnySubscriptionInApp,
+
+    -- ** TargetingRuleScopeThisSubscription
+    TargetingRuleScopeThisSubscription (..),
+    newTargetingRuleScopeThisSubscription,
+
+    -- ** TargetingUpdate
+    TargetingUpdate (..),
+    newTargetingUpdate,
+
+    -- ** TestPurchase
+    TestPurchase (..),
+    newTestPurchase,
+
+    -- ** Testers
+    Testers (..),
+    newTesters,
+
+    -- ** TextureCompressionFormat
+    TextureCompressionFormat (..),
+    newTextureCompressionFormat,
+
+    -- ** TextureCompressionFormat_Alias
+    TextureCompressionFormat_Alias (..),
+
+    -- ** TextureCompressionFormatTargeting
+    TextureCompressionFormatTargeting (..),
+    newTextureCompressionFormatTargeting,
+
+    -- ** Timestamp
+    Timestamp (..),
+    newTimestamp,
+
+    -- ** TokenPagination
+    TokenPagination (..),
+    newTokenPagination,
+
+    -- ** Track
+    Track (..),
+    newTrack,
+
+    -- ** TrackConfig
+    TrackConfig (..),
+    newTrackConfig,
+
+    -- ** TrackConfig_FormFactor
+    TrackConfig_FormFactor (..),
+
+    -- ** TrackConfig_Type
+    TrackConfig_Type (..),
+
+    -- ** TrackCountryAvailability
+    TrackCountryAvailability (..),
+    newTrackCountryAvailability,
+
+    -- ** TrackRelease
+    TrackRelease (..),
+    newTrackRelease,
+
+    -- ** TrackRelease_Status
+    TrackRelease_Status (..),
+
+    -- ** TrackTargetedCountry
+    TrackTargetedCountry (..),
+    newTrackTargetedCountry,
+
+    -- ** TracksListResponse
+    TracksListResponse (..),
+    newTracksListResponse,
+
+    -- ** UpdateBasePlanStateRequest
+    UpdateBasePlanStateRequest (..),
+    newUpdateBasePlanStateRequest,
+
+    -- ** UpdateSubscriptionOfferRequest
+    UpdateSubscriptionOfferRequest (..),
+    newUpdateSubscriptionOfferRequest,
+
+    -- ** UpdateSubscriptionOfferRequest_LatencyTolerance
+    UpdateSubscriptionOfferRequest_LatencyTolerance (..),
+
+    -- ** UpdateSubscriptionOfferStateRequest
+    UpdateSubscriptionOfferStateRequest (..),
+    newUpdateSubscriptionOfferStateRequest,
+
+    -- ** UpdateSubscriptionRequest
+    UpdateSubscriptionRequest (..),
+    newUpdateSubscriptionRequest,
+
+    -- ** UpdateSubscriptionRequest_LatencyTolerance
+    UpdateSubscriptionRequest_LatencyTolerance (..),
+
+    -- ** UpgradeTargetingRule
+    UpgradeTargetingRule (..),
+    newUpgradeTargetingRule,
+
+    -- ** User
+    User (..),
+    newUser,
+
+    -- ** User_AccessState
+    User_AccessState (..),
+
+    -- ** User_DeveloperAccountPermissionsItem
+    User_DeveloperAccountPermissionsItem (..),
+
+    -- ** UserComment
+    UserComment (..),
+    newUserComment,
+
+    -- ** UserCountriesTargeting
+    UserCountriesTargeting (..),
+    newUserCountriesTargeting,
+
+    -- ** UserCountrySet
+    UserCountrySet (..),
+    newUserCountrySet,
+
+    -- ** UserInitiatedCancellation
+    UserInitiatedCancellation (..),
+    newUserInitiatedCancellation,
+
+    -- ** UsesPermission
+    UsesPermission (..),
+    newUsesPermission,
+
+    -- ** VanityCode
+    VanityCode (..),
+    newVanityCode,
+
+    -- ** Variant
+    Variant (..),
+    newVariant,
+
+    -- ** VariantTargeting
+    VariantTargeting (..),
+    newVariantTargeting,
+
+    -- ** VoidedPurchase
+    VoidedPurchase (..),
+    newVoidedPurchase,
+
+    -- ** VoidedPurchasesListResponse
+    VoidedPurchasesListResponse (..),
+    newVoidedPurchasesListResponse,
+
+    -- ** EditsDeobfuscationfilesUploadDeobfuscationFileType
+    EditsDeobfuscationfilesUploadDeobfuscationFileType (..),
+
+    -- ** EditsExpansionfilesGetExpansionFileType
+    EditsExpansionfilesGetExpansionFileType (..),
+
+    -- ** EditsExpansionfilesPatchExpansionFileType
+    EditsExpansionfilesPatchExpansionFileType (..),
+
+    -- ** EditsExpansionfilesUpdateExpansionFileType
+    EditsExpansionfilesUpdateExpansionFileType (..),
+
+    -- ** EditsExpansionfilesUploadExpansionFileType
+    EditsExpansionfilesUploadExpansionFileType (..),
+
+    -- ** EditsImagesDeleteImageType
+    EditsImagesDeleteImageType (..),
+
+    -- ** EditsImagesDeleteallImageType
+    EditsImagesDeleteallImageType (..),
+
+    -- ** EditsImagesListImageType
+    EditsImagesListImageType (..),
+
+    -- ** EditsImagesUploadImageType
+    EditsImagesUploadImageType (..),
+
+    -- ** InappproductsDeleteLatencyTolerance
+    InappproductsDeleteLatencyTolerance (..),
+
+    -- ** InappproductsPatchLatencyTolerance
+    InappproductsPatchLatencyTolerance (..),
+
+    -- ** InappproductsUpdateLatencyTolerance
+    InappproductsUpdateLatencyTolerance (..),
+
+    -- ** MonetizationSubscriptionsBasePlansOffersPatchLatencyTolerance
+    MonetizationSubscriptionsBasePlansOffersPatchLatencyTolerance (..),
+
+    -- ** MonetizationSubscriptionsPatchLatencyTolerance
+    MonetizationSubscriptionsPatchLatencyTolerance (..),
+  )
+where
+
+import Gogol.AndroidPublisher.Internal.Product
+import Gogol.AndroidPublisher.Internal.Sum
+import Gogol.Prelude qualified as Core
+
+-- | Default request referring to version @v3@ of the Google Play Android Developer API. This contains the host and root path used as a starting point for constructing service requests.
+androidPublisherService :: Core.ServiceConfig
+androidPublisherService =
+  Core.defaultService
+    (Core.ServiceId "androidpublisher:v3")
+    "androidpublisher.googleapis.com"
+
+-- | View and manage your Google Play Developer account
+type Androidpublisher'FullControl =
+  "https://www.googleapis.com/auth/androidpublisher"
diff --git a/gen/Gogol/AndroidPublisher/Users/Create.hs b/gen/Gogol/AndroidPublisher/Users/Create.hs
new file mode 100644
--- /dev/null
+++ b/gen/Gogol/AndroidPublisher/Users/Create.hs
@@ -0,0 +1,118 @@
+{-# LANGUAGE DataKinds #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE ImportQualifiedPost #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-name-shadowing #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- |
+-- Module      : Gogol.AndroidPublisher.Users.Create
+-- Copyright   : (c) 2015-2025 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay+gogol@gmail.com>
+--               Toni Cebrián <toni@tonicebrian.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Grant access for a user to the given developer account.
+--
+-- /See:/ <https://developers.google.com/android-publisher Google Play Android Developer API Reference> for @androidpublisher.users.create@.
+module Gogol.AndroidPublisher.Users.Create
+  ( -- * Resource
+    AndroidPublisherUsersCreateResource,
+
+    -- ** Constructing a Request
+    AndroidPublisherUsersCreate (..),
+    newAndroidPublisherUsersCreate,
+  )
+where
+
+import Gogol.AndroidPublisher.Types
+import Gogol.Prelude qualified as Core
+
+-- | A resource alias for @androidpublisher.users.create@ method which the
+-- 'AndroidPublisherUsersCreate' request conforms to.
+type AndroidPublisherUsersCreateResource =
+  "androidpublisher"
+    Core.:> "v3"
+    Core.:> Core.Capture "parent" Core.Text
+    Core.:> "users"
+    Core.:> Core.QueryParam "$.xgafv" Xgafv
+    Core.:> Core.QueryParam "access_token" Core.Text
+    Core.:> Core.QueryParam "callback" Core.Text
+    Core.:> Core.QueryParam "uploadType" Core.Text
+    Core.:> Core.QueryParam "upload_protocol" Core.Text
+    Core.:> Core.QueryParam "alt" Core.AltJSON
+    Core.:> Core.ReqBody '[Core.JSON] User
+    Core.:> Core.Post '[Core.JSON] User
+
+-- | Grant access for a user to the given developer account.
+--
+-- /See:/ 'newAndroidPublisherUsersCreate' smart constructor.
+data AndroidPublisherUsersCreate = AndroidPublisherUsersCreate
+  { -- | V1 error format.
+    xgafv :: (Core.Maybe Xgafv),
+    -- | OAuth access token.
+    accessToken :: (Core.Maybe Core.Text),
+    -- | JSONP
+    callback :: (Core.Maybe Core.Text),
+    -- | Required. The developer account to add the user to. Format: developers\/{developer}
+    parent :: Core.Text,
+    -- | Multipart request metadata.
+    payload :: User,
+    -- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
+    uploadType :: (Core.Maybe Core.Text),
+    -- | Upload protocol for media (e.g. \"raw\", \"multipart\").
+    uploadProtocol :: (Core.Maybe Core.Text)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'AndroidPublisherUsersCreate' with the minimum fields required to make a request.
+newAndroidPublisherUsersCreate ::
+  -- |  Required. The developer account to add the user to. Format: developers\/{developer} See 'parent'.
+  Core.Text ->
+  -- |  Multipart request metadata. See 'payload'.
+  User ->
+  AndroidPublisherUsersCreate
+newAndroidPublisherUsersCreate parent payload =
+  AndroidPublisherUsersCreate
+    { xgafv = Core.Nothing,
+      accessToken = Core.Nothing,
+      callback = Core.Nothing,
+      parent = parent,
+      payload = payload,
+      uploadType = Core.Nothing,
+      uploadProtocol = Core.Nothing
+    }
+
+instance Core.GoogleRequest AndroidPublisherUsersCreate where
+  type Rs AndroidPublisherUsersCreate = User
+  type
+    Scopes AndroidPublisherUsersCreate =
+      '[Androidpublisher'FullControl]
+  requestClient AndroidPublisherUsersCreate {..} =
+    go
+      parent
+      xgafv
+      accessToken
+      callback
+      uploadType
+      uploadProtocol
+      (Core.Just Core.AltJSON)
+      payload
+      androidPublisherService
+    where
+      go =
+        Core.buildClient
+          (Core.Proxy :: Core.Proxy AndroidPublisherUsersCreateResource)
+          Core.mempty
diff --git a/gen/Gogol/AndroidPublisher/Users/Delete.hs b/gen/Gogol/AndroidPublisher/Users/Delete.hs
new file mode 100644
--- /dev/null
+++ b/gen/Gogol/AndroidPublisher/Users/Delete.hs
@@ -0,0 +1,110 @@
+{-# LANGUAGE DataKinds #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE ImportQualifiedPost #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-name-shadowing #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- |
+-- Module      : Gogol.AndroidPublisher.Users.Delete
+-- Copyright   : (c) 2015-2025 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay+gogol@gmail.com>
+--               Toni Cebrián <toni@tonicebrian.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Removes all access for the user to the given developer account.
+--
+-- /See:/ <https://developers.google.com/android-publisher Google Play Android Developer API Reference> for @androidpublisher.users.delete@.
+module Gogol.AndroidPublisher.Users.Delete
+  ( -- * Resource
+    AndroidPublisherUsersDeleteResource,
+
+    -- ** Constructing a Request
+    AndroidPublisherUsersDelete (..),
+    newAndroidPublisherUsersDelete,
+  )
+where
+
+import Gogol.AndroidPublisher.Types
+import Gogol.Prelude qualified as Core
+
+-- | A resource alias for @androidpublisher.users.delete@ method which the
+-- 'AndroidPublisherUsersDelete' request conforms to.
+type AndroidPublisherUsersDeleteResource =
+  "androidpublisher"
+    Core.:> "v3"
+    Core.:> Core.Capture "name" Core.Text
+    Core.:> Core.QueryParam "$.xgafv" Xgafv
+    Core.:> Core.QueryParam "access_token" Core.Text
+    Core.:> Core.QueryParam "callback" Core.Text
+    Core.:> Core.QueryParam "uploadType" Core.Text
+    Core.:> Core.QueryParam "upload_protocol" Core.Text
+    Core.:> Core.QueryParam "alt" Core.AltJSON
+    Core.:> Core.Delete '[Core.JSON] ()
+
+-- | Removes all access for the user to the given developer account.
+--
+-- /See:/ 'newAndroidPublisherUsersDelete' smart constructor.
+data AndroidPublisherUsersDelete = AndroidPublisherUsersDelete
+  { -- | V1 error format.
+    xgafv :: (Core.Maybe Xgafv),
+    -- | OAuth access token.
+    accessToken :: (Core.Maybe Core.Text),
+    -- | JSONP
+    callback :: (Core.Maybe Core.Text),
+    -- | Required. The name of the user to delete. Format: developers\/{developer}\/users\/{email}
+    name :: Core.Text,
+    -- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
+    uploadType :: (Core.Maybe Core.Text),
+    -- | Upload protocol for media (e.g. \"raw\", \"multipart\").
+    uploadProtocol :: (Core.Maybe Core.Text)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'AndroidPublisherUsersDelete' with the minimum fields required to make a request.
+newAndroidPublisherUsersDelete ::
+  -- |  Required. The name of the user to delete. Format: developers\/{developer}\/users\/{email} See 'name'.
+  Core.Text ->
+  AndroidPublisherUsersDelete
+newAndroidPublisherUsersDelete name =
+  AndroidPublisherUsersDelete
+    { xgafv = Core.Nothing,
+      accessToken = Core.Nothing,
+      callback = Core.Nothing,
+      name = name,
+      uploadType = Core.Nothing,
+      uploadProtocol = Core.Nothing
+    }
+
+instance Core.GoogleRequest AndroidPublisherUsersDelete where
+  type Rs AndroidPublisherUsersDelete = ()
+  type
+    Scopes AndroidPublisherUsersDelete =
+      '[Androidpublisher'FullControl]
+  requestClient AndroidPublisherUsersDelete {..} =
+    go
+      name
+      xgafv
+      accessToken
+      callback
+      uploadType
+      uploadProtocol
+      (Core.Just Core.AltJSON)
+      androidPublisherService
+    where
+      go =
+        Core.buildClient
+          (Core.Proxy :: Core.Proxy AndroidPublisherUsersDeleteResource)
+          Core.mempty
diff --git a/gen/Gogol/AndroidPublisher/Users/List.hs b/gen/Gogol/AndroidPublisher/Users/List.hs
new file mode 100644
--- /dev/null
+++ b/gen/Gogol/AndroidPublisher/Users/List.hs
@@ -0,0 +1,121 @@
+{-# LANGUAGE DataKinds #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE ImportQualifiedPost #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-name-shadowing #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- |
+-- Module      : Gogol.AndroidPublisher.Users.List
+-- Copyright   : (c) 2015-2025 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay+gogol@gmail.com>
+--               Toni Cebrián <toni@tonicebrian.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Lists all users with access to a developer account.
+--
+-- /See:/ <https://developers.google.com/android-publisher Google Play Android Developer API Reference> for @androidpublisher.users.list@.
+module Gogol.AndroidPublisher.Users.List
+  ( -- * Resource
+    AndroidPublisherUsersListResource,
+
+    -- ** Constructing a Request
+    AndroidPublisherUsersList (..),
+    newAndroidPublisherUsersList,
+  )
+where
+
+import Gogol.AndroidPublisher.Types
+import Gogol.Prelude qualified as Core
+
+-- | A resource alias for @androidpublisher.users.list@ method which the
+-- 'AndroidPublisherUsersList' request conforms to.
+type AndroidPublisherUsersListResource =
+  "androidpublisher"
+    Core.:> "v3"
+    Core.:> Core.Capture "parent" Core.Text
+    Core.:> "users"
+    Core.:> Core.QueryParam "$.xgafv" Xgafv
+    Core.:> Core.QueryParam "access_token" Core.Text
+    Core.:> Core.QueryParam "callback" Core.Text
+    Core.:> Core.QueryParam "pageSize" Core.Int32
+    Core.:> Core.QueryParam "pageToken" Core.Text
+    Core.:> Core.QueryParam "uploadType" Core.Text
+    Core.:> Core.QueryParam "upload_protocol" Core.Text
+    Core.:> Core.QueryParam "alt" Core.AltJSON
+    Core.:> Core.Get '[Core.JSON] ListUsersResponse
+
+-- | Lists all users with access to a developer account.
+--
+-- /See:/ 'newAndroidPublisherUsersList' smart constructor.
+data AndroidPublisherUsersList = AndroidPublisherUsersList
+  { -- | V1 error format.
+    xgafv :: (Core.Maybe Xgafv),
+    -- | OAuth access token.
+    accessToken :: (Core.Maybe Core.Text),
+    -- | JSONP
+    callback :: (Core.Maybe Core.Text),
+    -- | The maximum number of results to return. This must be set to -1 to disable pagination.
+    pageSize :: (Core.Maybe Core.Int32),
+    -- | A token received from a previous call to this method, in order to retrieve further results.
+    pageToken :: (Core.Maybe Core.Text),
+    -- | Required. The developer account to fetch users from. Format: developers\/{developer}
+    parent :: Core.Text,
+    -- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
+    uploadType :: (Core.Maybe Core.Text),
+    -- | Upload protocol for media (e.g. \"raw\", \"multipart\").
+    uploadProtocol :: (Core.Maybe Core.Text)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'AndroidPublisherUsersList' with the minimum fields required to make a request.
+newAndroidPublisherUsersList ::
+  -- |  Required. The developer account to fetch users from. Format: developers\/{developer} See 'parent'.
+  Core.Text ->
+  AndroidPublisherUsersList
+newAndroidPublisherUsersList parent =
+  AndroidPublisherUsersList
+    { xgafv = Core.Nothing,
+      accessToken = Core.Nothing,
+      callback = Core.Nothing,
+      pageSize = Core.Nothing,
+      pageToken = Core.Nothing,
+      parent = parent,
+      uploadType = Core.Nothing,
+      uploadProtocol = Core.Nothing
+    }
+
+instance Core.GoogleRequest AndroidPublisherUsersList where
+  type Rs AndroidPublisherUsersList = ListUsersResponse
+  type
+    Scopes AndroidPublisherUsersList =
+      '[Androidpublisher'FullControl]
+  requestClient AndroidPublisherUsersList {..} =
+    go
+      parent
+      xgafv
+      accessToken
+      callback
+      pageSize
+      pageToken
+      uploadType
+      uploadProtocol
+      (Core.Just Core.AltJSON)
+      androidPublisherService
+    where
+      go =
+        Core.buildClient
+          (Core.Proxy :: Core.Proxy AndroidPublisherUsersListResource)
+          Core.mempty
diff --git a/gen/Gogol/AndroidPublisher/Users/Patch.hs b/gen/Gogol/AndroidPublisher/Users/Patch.hs
new file mode 100644
--- /dev/null
+++ b/gen/Gogol/AndroidPublisher/Users/Patch.hs
@@ -0,0 +1,122 @@
+{-# LANGUAGE DataKinds #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE ImportQualifiedPost #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-name-shadowing #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- |
+-- Module      : Gogol.AndroidPublisher.Users.Patch
+-- Copyright   : (c) 2015-2025 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay+gogol@gmail.com>
+--               Toni Cebrián <toni@tonicebrian.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Updates access for the user to the developer account.
+--
+-- /See:/ <https://developers.google.com/android-publisher Google Play Android Developer API Reference> for @androidpublisher.users.patch@.
+module Gogol.AndroidPublisher.Users.Patch
+  ( -- * Resource
+    AndroidPublisherUsersPatchResource,
+
+    -- ** Constructing a Request
+    AndroidPublisherUsersPatch (..),
+    newAndroidPublisherUsersPatch,
+  )
+where
+
+import Gogol.AndroidPublisher.Types
+import Gogol.Prelude qualified as Core
+
+-- | A resource alias for @androidpublisher.users.patch@ method which the
+-- 'AndroidPublisherUsersPatch' request conforms to.
+type AndroidPublisherUsersPatchResource =
+  "androidpublisher"
+    Core.:> "v3"
+    Core.:> Core.Capture "name" Core.Text
+    Core.:> Core.QueryParam "$.xgafv" Xgafv
+    Core.:> Core.QueryParam "access_token" Core.Text
+    Core.:> Core.QueryParam "callback" Core.Text
+    Core.:> Core.QueryParam "updateMask" Core.FieldMask
+    Core.:> Core.QueryParam "uploadType" Core.Text
+    Core.:> Core.QueryParam "upload_protocol" Core.Text
+    Core.:> Core.QueryParam "alt" Core.AltJSON
+    Core.:> Core.ReqBody '[Core.JSON] User
+    Core.:> Core.Patch '[Core.JSON] User
+
+-- | Updates access for the user to the developer account.
+--
+-- /See:/ 'newAndroidPublisherUsersPatch' smart constructor.
+data AndroidPublisherUsersPatch = AndroidPublisherUsersPatch
+  { -- | V1 error format.
+    xgafv :: (Core.Maybe Xgafv),
+    -- | OAuth access token.
+    accessToken :: (Core.Maybe Core.Text),
+    -- | JSONP
+    callback :: (Core.Maybe Core.Text),
+    -- | Required. Resource name for this user, following the pattern \"developers\/{developer}\/users\/{email}\".
+    name :: Core.Text,
+    -- | Multipart request metadata.
+    payload :: User,
+    -- | Optional. The list of fields to be updated.
+    updateMask :: (Core.Maybe Core.FieldMask),
+    -- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
+    uploadType :: (Core.Maybe Core.Text),
+    -- | Upload protocol for media (e.g. \"raw\", \"multipart\").
+    uploadProtocol :: (Core.Maybe Core.Text)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'AndroidPublisherUsersPatch' with the minimum fields required to make a request.
+newAndroidPublisherUsersPatch ::
+  -- |  Required. Resource name for this user, following the pattern \"developers\/{developer}\/users\/{email}\". See 'name'.
+  Core.Text ->
+  -- |  Multipart request metadata. See 'payload'.
+  User ->
+  AndroidPublisherUsersPatch
+newAndroidPublisherUsersPatch name payload =
+  AndroidPublisherUsersPatch
+    { xgafv = Core.Nothing,
+      accessToken = Core.Nothing,
+      callback = Core.Nothing,
+      name = name,
+      payload = payload,
+      updateMask = Core.Nothing,
+      uploadType = Core.Nothing,
+      uploadProtocol = Core.Nothing
+    }
+
+instance Core.GoogleRequest AndroidPublisherUsersPatch where
+  type Rs AndroidPublisherUsersPatch = User
+  type
+    Scopes AndroidPublisherUsersPatch =
+      '[Androidpublisher'FullControl]
+  requestClient AndroidPublisherUsersPatch {..} =
+    go
+      name
+      xgafv
+      accessToken
+      callback
+      updateMask
+      uploadType
+      uploadProtocol
+      (Core.Just Core.AltJSON)
+      payload
+      androidPublisherService
+    where
+      go =
+        Core.buildClient
+          (Core.Proxy :: Core.Proxy AndroidPublisherUsersPatchResource)
+          Core.mempty
diff --git a/gen/Network/Google/AndroidPublisher.hs b/gen/Network/Google/AndroidPublisher.hs
deleted file mode 100644
--- a/gen/Network/Google/AndroidPublisher.hs
+++ /dev/null
@@ -1,745 +0,0 @@
-{-# LANGUAGE DataKinds         #-}
-{-# LANGUAGE NoImplicitPrelude #-}
-{-# LANGUAGE TypeOperators     #-}
-
-{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
-{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
-
--- |
--- Module      : Network.Google.AndroidPublisher
--- 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)
---
--- Accesses Android application developers\' Google Play accounts.
---
--- /See:/ <https://developers.google.com/android-publisher Google Play Developer API Reference>
-module Network.Google.AndroidPublisher
-    (
-    -- * Service Configuration
-      androidPublisherService
-
-    -- * OAuth Scopes
-    , androidPublisherScope
-
-    -- * API Declaration
-    , AndroidPublisherAPI
-
-    -- * Resources
-
-    -- ** androidpublisher.edits.apks.addexternallyhosted
-    , module Network.Google.Resource.AndroidPublisher.Edits.APKs.Addexternallyhosted
-
-    -- ** androidpublisher.edits.apks.list
-    , module Network.Google.Resource.AndroidPublisher.Edits.APKs.List
-
-    -- ** 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
-
-    -- ** androidpublisher.edits.delete
-    , module Network.Google.Resource.AndroidPublisher.Edits.Delete
-
-    -- ** androidpublisher.edits.deobfuscationfiles.upload
-    , module Network.Google.Resource.AndroidPublisher.Edits.DeobfuscationFiles.Upload
-
-    -- ** androidpublisher.edits.details.get
-    , module Network.Google.Resource.AndroidPublisher.Edits.Details.Get
-
-    -- ** androidpublisher.edits.details.patch
-    , module Network.Google.Resource.AndroidPublisher.Edits.Details.Patch
-
-    -- ** androidpublisher.edits.details.update
-    , module Network.Google.Resource.AndroidPublisher.Edits.Details.Update
-
-    -- ** androidpublisher.edits.expansionfiles.get
-    , module Network.Google.Resource.AndroidPublisher.Edits.ExpansionFiles.Get
-
-    -- ** androidpublisher.edits.expansionfiles.patch
-    , module Network.Google.Resource.AndroidPublisher.Edits.ExpansionFiles.Patch
-
-    -- ** androidpublisher.edits.expansionfiles.update
-    , module Network.Google.Resource.AndroidPublisher.Edits.ExpansionFiles.Update
-
-    -- ** androidpublisher.edits.expansionfiles.upload
-    , module Network.Google.Resource.AndroidPublisher.Edits.ExpansionFiles.Upload
-
-    -- ** androidpublisher.edits.get
-    , module Network.Google.Resource.AndroidPublisher.Edits.Get
-
-    -- ** androidpublisher.edits.images.delete
-    , module Network.Google.Resource.AndroidPublisher.Edits.Images.Delete
-
-    -- ** androidpublisher.edits.images.deleteall
-    , module Network.Google.Resource.AndroidPublisher.Edits.Images.Deleteall
-
-    -- ** androidpublisher.edits.images.list
-    , module Network.Google.Resource.AndroidPublisher.Edits.Images.List
-
-    -- ** androidpublisher.edits.images.upload
-    , module Network.Google.Resource.AndroidPublisher.Edits.Images.Upload
-
-    -- ** androidpublisher.edits.insert
-    , module Network.Google.Resource.AndroidPublisher.Edits.Insert
-
-    -- ** androidpublisher.edits.listings.delete
-    , module Network.Google.Resource.AndroidPublisher.Edits.Listings.Delete
-
-    -- ** androidpublisher.edits.listings.deleteall
-    , module Network.Google.Resource.AndroidPublisher.Edits.Listings.Deleteall
-
-    -- ** androidpublisher.edits.listings.get
-    , module Network.Google.Resource.AndroidPublisher.Edits.Listings.Get
-
-    -- ** androidpublisher.edits.listings.list
-    , module Network.Google.Resource.AndroidPublisher.Edits.Listings.List
-
-    -- ** androidpublisher.edits.listings.patch
-    , module Network.Google.Resource.AndroidPublisher.Edits.Listings.Patch
-
-    -- ** androidpublisher.edits.listings.update
-    , module Network.Google.Resource.AndroidPublisher.Edits.Listings.Update
-
-    -- ** androidpublisher.edits.testers.get
-    , module Network.Google.Resource.AndroidPublisher.Edits.Testers.Get
-
-    -- ** androidpublisher.edits.testers.patch
-    , module Network.Google.Resource.AndroidPublisher.Edits.Testers.Patch
-
-    -- ** androidpublisher.edits.testers.update
-    , module Network.Google.Resource.AndroidPublisher.Edits.Testers.Update
-
-    -- ** androidpublisher.edits.tracks.get
-    , module Network.Google.Resource.AndroidPublisher.Edits.Tracks.Get
-
-    -- ** androidpublisher.edits.tracks.list
-    , module Network.Google.Resource.AndroidPublisher.Edits.Tracks.List
-
-    -- ** androidpublisher.edits.tracks.patch
-    , module Network.Google.Resource.AndroidPublisher.Edits.Tracks.Patch
-
-    -- ** androidpublisher.edits.tracks.update
-    , module Network.Google.Resource.AndroidPublisher.Edits.Tracks.Update
-
-    -- ** androidpublisher.edits.validate
-    , module Network.Google.Resource.AndroidPublisher.Edits.Validate
-
-    -- ** androidpublisher.inappproducts.delete
-    , module Network.Google.Resource.AndroidPublisher.InAppProducts.Delete
-
-    -- ** androidpublisher.inappproducts.get
-    , module Network.Google.Resource.AndroidPublisher.InAppProducts.Get
-
-    -- ** androidpublisher.inappproducts.insert
-    , module Network.Google.Resource.AndroidPublisher.InAppProducts.Insert
-
-    -- ** androidpublisher.inappproducts.list
-    , module Network.Google.Resource.AndroidPublisher.InAppProducts.List
-
-    -- ** androidpublisher.inappproducts.patch
-    , module Network.Google.Resource.AndroidPublisher.InAppProducts.Patch
-
-    -- ** 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
-
-    -- ** androidpublisher.purchases.subscriptions.cancel
-    , module Network.Google.Resource.AndroidPublisher.Purchases.Subscriptions.Cancel
-
-    -- ** androidpublisher.purchases.subscriptions.defer
-    , module Network.Google.Resource.AndroidPublisher.Purchases.Subscriptions.Defer
-
-    -- ** androidpublisher.purchases.subscriptions.get
-    , module Network.Google.Resource.AndroidPublisher.Purchases.Subscriptions.Get
-
-    -- ** androidpublisher.purchases.subscriptions.refund
-    , module Network.Google.Resource.AndroidPublisher.Purchases.Subscriptions.Refund
-
-    -- ** androidpublisher.purchases.subscriptions.revoke
-    , module Network.Google.Resource.AndroidPublisher.Purchases.Subscriptions.Revoke
-
-    -- ** androidpublisher.purchases.voidedpurchases.list
-    , module Network.Google.Resource.AndroidPublisher.Purchases.Voidedpurchases.List
-
-    -- ** androidpublisher.reviews.get
-    , module Network.Google.Resource.AndroidPublisher.Reviews.Get
-
-    -- ** androidpublisher.reviews.list
-    , module Network.Google.Resource.AndroidPublisher.Reviews.List
-
-    -- ** androidpublisher.reviews.reply
-    , module Network.Google.Resource.AndroidPublisher.Reviews.Reply
-
-    -- * Types
-
-    -- ** InAppProductListings
-    , InAppProductListings
-    , inAppProductListings
-    , iaplAddtional
-
-    -- ** EditsImagesDeleteallImageType
-    , EditsImagesDeleteallImageType (..)
-
-    -- ** MonthDay
-    , MonthDay
-    , monthDay
-    , mdDay
-    , mdMonth
-
-    -- ** Track
-    , Track
-    , track
-    , tTrack
-    , tReleases
-
-    -- ** Image
-    , Image
-    , image
-    , iURL
-    , iSha1
-    , iId
-
-    -- ** InAppProductListing
-    , InAppProductListing
-    , inAppProductListing
-    , iaplTitle
-    , iaplDescription
-
-    -- ** ImagesDeleteAllResponse
-    , ImagesDeleteAllResponse
-    , imagesDeleteAllResponse
-    , idarDeleted
-
-    -- ** TokenPagination
-    , TokenPagination
-    , tokenPagination
-    , tpNextPageToken
-    , tpPreviousPageToken
-
-    -- ** ExpansionFile
-    , ExpansionFile
-    , expansionFile
-    , efFileSize
-    , efReferencesVersion
-
-    -- ** UserComment
-    , UserComment
-    , userComment
-    , ucAndroidOSVersion
-    , ucText
-    , ucDevice
-    , ucThumbsUpCount
-    , ucAppVersionCode
-    , ucThumbsDownCount
-    , ucOriginalText
-    , ucAppVersionName
-    , ucReviewerLanguage
-    , ucDeviceMetadata
-    , ucStarRating
-    , ucLastModified
-
-    -- ** Testers
-    , Testers
-    , testers
-    , tGooglePlusCommUnities
-    , tGoogleGroups
-
-    -- ** SubscriptionCancelSurveyResult
-    , SubscriptionCancelSurveyResult
-    , subscriptionCancelSurveyResult
-    , scsrCancelSurveyReason
-    , scsrUserInputCancelReason
-
-    -- ** Listing
-    , Listing
-    , listing
-    , lFullDescription
-    , lVideo
-    , lShortDescription
-    , lLanguage
-    , lTitle
-
-    -- ** APK
-    , APK
-    , aPK
-    , aVersionCode
-    , aBinary
-
-    -- ** SubscriptionPurchasesDeferRequest
-    , SubscriptionPurchasesDeferRequest
-    , subscriptionPurchasesDeferRequest
-    , spdrDeferralInfo
-
-    -- ** TracksListResponse
-    , TracksListResponse
-    , tracksListResponse
-    , tlrTracks
-    , tlrKind
-
-    -- ** Season
-    , Season
-    , season
-    , sStart
-    , sEnd
-    , sProrations
-
-    -- ** PageInfo
-    , PageInfo
-    , pageInfo
-    , piResultPerPage
-    , piTotalResults
-    , piStartIndex
-
-    -- ** ImagesListResponse
-    , ImagesListResponse
-    , imagesListResponse
-    , ilrImages
-
-    -- ** AppEdit
-    , AppEdit
-    , appEdit
-    , aeId
-    , aeExpiryTimeSeconds
-
-    -- ** ProductPurchase
-    , ProductPurchase
-    , productPurchase
-    , ppPurchaseState
-    , ppConsumptionState
-    , ppKind
-    , ppPurchaseTimeMillis
-    , ppPurchaseType
-    , ppDeveloperPayload
-    , ppOrderId
-
-    -- ** ReviewsListResponse
-    , ReviewsListResponse
-    , reviewsListResponse
-    , rlrTokenPagination
-    , rlrPageInfo
-    , rlrReviews
-
-    -- ** SubscriptionPurchasesDeferResponse
-    , SubscriptionPurchasesDeferResponse
-    , subscriptionPurchasesDeferResponse
-    , spdrNewExpiryTimeMillis
-
-    -- ** 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
-    , adContactPhone
-    , adContactEmail
-    , adContactWebsite
-    , adDefaultLanguage
-
-    -- ** InAppProductPrices
-    , InAppProductPrices
-    , inAppProductPrices
-    , iAppAddtional
-
-    -- ** ExternallyHostedAPK
-    , ExternallyHostedAPK
-    , externallyHostedAPK
-    , ehapkApplicationLabel
-    , ehapkMaximumSdk
-    , ehapkNATiveCodes
-    , ehapkVersionCode
-    , ehapkFileSha256Base64
-    , ehapkExternallyHostedURL
-    , ehapkVersionName
-    , ehapkPackageName
-    , ehapkFileSize
-    , ehapkIconBase64
-    , ehapkUsesFeatures
-    , ehapkMinimumSdk
-    , ehapkFileSha1Base64
-    , ehapkUsesPermissions
-    , ehapkCertificateBase64s
-
-    -- ** TrackRelease
-    , TrackRelease
-    , trackRelease
-    , trVersionCodes
-    , trStatus
-    , trReleaseNotes
-    , trUserFraction
-    , trCountryTargeting
-    , trName
-
-    -- ** EditsImagesListImageType
-    , EditsImagesListImageType (..)
-
-    -- ** CountryTargeting
-    , CountryTargeting
-    , countryTargeting
-    , ctIncludeRestOfWorld
-    , ctCountries
-
-    -- ** Bundle
-    , Bundle
-    , bundle
-    , bVersionCode
-    , bSha1
-    , bSha256
-
-    -- ** DeobfuscationFile
-    , DeobfuscationFile
-    , deobfuscationFile
-    , dfSymbolType
-
-    -- ** VoidedPurchasesListResponse
-    , VoidedPurchasesListResponse
-    , voidedPurchasesListResponse
-    , vplrTokenPagination
-    , vplrPageInfo
-    , vplrVoidedPurchases
-
-    -- ** ExpansionFilesUploadResponse
-    , ExpansionFilesUploadResponse
-    , expansionFilesUploadResponse
-    , efurExpansionFile
-
-    -- ** ImagesUploadResponse
-    , ImagesUploadResponse
-    , imagesUploadResponse
-    , iurImage
-
-    -- ** EditsImagesUploadImageType
-    , EditsImagesUploadImageType (..)
-
-    -- ** Prorate
-    , Prorate
-    , prorate
-    , pStart
-    , pDefaultPrice
-
-    -- ** DeobfuscationFilesUploadResponse
-    , DeobfuscationFilesUploadResponse
-    , deobfuscationFilesUploadResponse
-    , dfurDeobfuscationFile
-
-    -- ** InAppProductsListResponse
-    , InAppProductsListResponse
-    , inAppProductsListResponse
-    , iaplrTokenPagination
-    , iaplrPageInfo
-    , iaplrKind
-    , iaplrInAppProduct
-
-    -- ** EditsDeobfuscationFilesUploadDeobfuscationFileType
-    , EditsDeobfuscationFilesUploadDeobfuscationFileType (..)
-
-    -- ** EditsExpansionFilesUploadExpansionFileType
-    , EditsExpansionFilesUploadExpansionFileType (..)
-
-    -- ** LocalizedText
-    , LocalizedText
-    , localizedText
-    , ltText
-    , ltLanguage
-
-    -- ** Review
-    , Review
-    , review
-    , rReviewId
-    , rAuthorName
-    , rComments
-
-    -- ** APKsAddExternallyHostedResponse
-    , APKsAddExternallyHostedResponse
-    , aPKsAddExternallyHostedResponse
-    , apkaehrExternallyHostedAPK
-
-    -- ** SubscriptionDeferralInfo
-    , SubscriptionDeferralInfo
-    , subscriptionDeferralInfo
-    , sdiDesiredExpiryTimeMillis
-    , sdiExpectedExpiryTimeMillis
-
-    -- ** EditsExpansionFilesGetExpansionFileType
-    , EditsExpansionFilesGetExpansionFileType (..)
-
-    -- ** ReviewsReplyRequest
-    , ReviewsReplyRequest
-    , reviewsReplyRequest
-    , rrrReplyText
-
-    -- ** EditsExpansionFilesPatchExpansionFileType
-    , EditsExpansionFilesPatchExpansionFileType (..)
-
-    -- ** EditsExpansionFilesUpdateExpansionFileType
-    , EditsExpansionFilesUpdateExpansionFileType (..)
-
-    -- ** DeviceMetadata
-    , DeviceMetadata
-    , deviceMetadata
-    , dmProductName
-    , dmGlEsVersion
-    , dmManufacturer
-    , dmScreenWidthPx
-    , dmRamMb
-    , dmCPUMake
-    , dmScreenHeightPx
-    , dmNATivePlatform
-    , dmDeviceClass
-    , dmCPUModel
-    , dmScreenDensityDpi
-
-    -- ** DeveloperComment
-    , DeveloperComment
-    , developerComment
-    , dcText
-    , dcLastModified
-
-    -- ** InAppProduct
-    , InAppProduct
-    , inAppProduct
-    , iapStatus
-    , iapGracePeriod
-    , iapTrialPeriod
-    , iapPackageName
-    , iapSeason
-    , iapPurchaseType
-    , iapSubscriptionPeriod
-    , iapPrices
-    , iapSKU
-    , iapDefaultPrice
-    , iapListings
-    , iapDefaultLanguage
-
-    -- ** Price
-    , Price
-    , price
-    , pPriceMicros
-    , pCurrency
-
-    -- ** EditsImagesDeleteImageType
-    , EditsImagesDeleteImageType (..)
-
-    -- ** APKBinary
-    , APKBinary
-    , aPKBinary
-    , apkbSha1
-    , apkbSha256
-
-    -- ** APKsListResponse
-    , APKsListResponse
-    , aPKsListResponse
-    , apklrKind
-    , apklrAPKs
-
-    -- ** ReviewsReplyResponse
-    , ReviewsReplyResponse
-    , reviewsReplyResponse
-    , rrrResult
-
-    -- ** ExternallyHostedAPKUsesPermission
-    , ExternallyHostedAPKUsesPermission
-    , externallyHostedAPKUsesPermission
-    , ehapkupName
-    , ehapkupMaxSdkVersion
-
-    -- ** ListingsListResponse
-    , ListingsListResponse
-    , listingsListResponse
-    , llrKind
-    , llrListings
-
-    -- ** APKsAddExternallyHostedRequest
-    , APKsAddExternallyHostedRequest
-    , aPKsAddExternallyHostedRequest
-    , aExternallyHostedAPK
-
-    -- ** Comment
-    , Comment
-    , comment
-    , cUserComment
-    , cDeveloperComment
-
-    -- ** Timestamp
-    , Timestamp
-    , timestamp
-    , tNanos
-    , tSeconds
-
-    -- ** VoidedPurchase
-    , VoidedPurchase
-    , voidedPurchase
-    , vpKind
-    , vpPurchaseTimeMillis
-    , vpPurchaseToken
-    , vpVoidedTimeMillis
-
-    -- ** BundlesListResponse
-    , BundlesListResponse
-    , bundlesListResponse
-    , blrBundles
-    , blrKind
-
-    -- ** ReviewReplyResult
-    , ReviewReplyResult
-    , reviewReplyResult
-    , rReplyText
-    , rLastEdited
-    ) where
-
-import           Network.Google.AndroidPublisher.Types
-import           Network.Google.Prelude
-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
-import           Network.Google.Resource.AndroidPublisher.Edits.Details.Get
-import           Network.Google.Resource.AndroidPublisher.Edits.Details.Patch
-import           Network.Google.Resource.AndroidPublisher.Edits.Details.Update
-import           Network.Google.Resource.AndroidPublisher.Edits.ExpansionFiles.Get
-import           Network.Google.Resource.AndroidPublisher.Edits.ExpansionFiles.Patch
-import           Network.Google.Resource.AndroidPublisher.Edits.ExpansionFiles.Update
-import           Network.Google.Resource.AndroidPublisher.Edits.ExpansionFiles.Upload
-import           Network.Google.Resource.AndroidPublisher.Edits.Get
-import           Network.Google.Resource.AndroidPublisher.Edits.Images.Delete
-import           Network.Google.Resource.AndroidPublisher.Edits.Images.Deleteall
-import           Network.Google.Resource.AndroidPublisher.Edits.Images.List
-import           Network.Google.Resource.AndroidPublisher.Edits.Images.Upload
-import           Network.Google.Resource.AndroidPublisher.Edits.Insert
-import           Network.Google.Resource.AndroidPublisher.Edits.Listings.Delete
-import           Network.Google.Resource.AndroidPublisher.Edits.Listings.Deleteall
-import           Network.Google.Resource.AndroidPublisher.Edits.Listings.Get
-import           Network.Google.Resource.AndroidPublisher.Edits.Listings.List
-import           Network.Google.Resource.AndroidPublisher.Edits.Listings.Patch
-import           Network.Google.Resource.AndroidPublisher.Edits.Listings.Update
-import           Network.Google.Resource.AndroidPublisher.Edits.Testers.Get
-import           Network.Google.Resource.AndroidPublisher.Edits.Testers.Patch
-import           Network.Google.Resource.AndroidPublisher.Edits.Testers.Update
-import           Network.Google.Resource.AndroidPublisher.Edits.Tracks.Get
-import           Network.Google.Resource.AndroidPublisher.Edits.Tracks.List
-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.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
-import           Network.Google.Resource.AndroidPublisher.Purchases.Subscriptions.Get
-import           Network.Google.Resource.AndroidPublisher.Purchases.Subscriptions.Refund
-import           Network.Google.Resource.AndroidPublisher.Purchases.Subscriptions.Revoke
-import           Network.Google.Resource.AndroidPublisher.Purchases.Voidedpurchases.List
-import           Network.Google.Resource.AndroidPublisher.Reviews.Get
-import           Network.Google.Resource.AndroidPublisher.Reviews.List
-import           Network.Google.Resource.AndroidPublisher.Reviews.Reply
-
-{- $resources
-TODO
--}
-
--- | Represents the entirety of the methods and resources available for the Google Play Developer API service.
-type AndroidPublisherAPI =
-     InAppProductsInsertResource :<|>
-       InAppProductsListResource
-       :<|> InAppProductsPatchResource
-       :<|> InAppProductsGetResource
-       :<|> InAppProductsDeleteResource
-       :<|> InAppProductsUpdateResource
-       :<|> ReviewsReplyResource
-       :<|> ReviewsListResource
-       :<|> ReviewsGetResource
-       :<|> EditsImagesListResource
-       :<|> EditsImagesDeleteallResource
-       :<|> EditsImagesUploadResource
-       :<|> EditsImagesDeleteResource
-       :<|> EditsExpansionFilesPatchResource
-       :<|> EditsExpansionFilesGetResource
-       :<|> EditsExpansionFilesUploadResource
-       :<|> EditsExpansionFilesUpdateResource
-       :<|> EditsTracksListResource
-       :<|> EditsTracksPatchResource
-       :<|> EditsTracksGetResource
-       :<|> EditsTracksUpdateResource
-       :<|> EditsDeobfuscationFilesUploadResource
-       :<|> EditsBundlesListResource
-       :<|> EditsBundlesUploadResource
-       :<|> EditsTestersPatchResource
-       :<|> EditsTestersGetResource
-       :<|> EditsTestersUpdateResource
-       :<|> EditsDetailsPatchResource
-       :<|> EditsDetailsGetResource
-       :<|> EditsDetailsUpdateResource
-       :<|> EditsAPKsListResource
-       :<|> EditsAPKsAddexternallyhostedResource
-       :<|> EditsAPKsUploadResource
-       :<|> EditsListingsListResource
-       :<|> EditsListingsDeleteallResource
-       :<|> EditsListingsPatchResource
-       :<|> EditsListingsGetResource
-       :<|> EditsListingsDeleteResource
-       :<|> EditsListingsUpdateResource
-       :<|> EditsInsertResource
-       :<|> EditsGetResource
-       :<|> EditsValidateResource
-       :<|> EditsDeleteResource
-       :<|> EditsCommitResource
-       :<|> OrdersRefundResource
-       :<|> PurchasesVoidedpurchasesListResource
-       :<|> PurchasesProductsGetResource
-       :<|> PurchasesSubscriptionsDeferResource
-       :<|> PurchasesSubscriptionsGetResource
-       :<|> PurchasesSubscriptionsRefundResource
-       :<|> PurchasesSubscriptionsRevokeResource
-       :<|> PurchasesSubscriptionsCancelResource
diff --git a/gen/Network/Google/AndroidPublisher/Types.hs b/gen/Network/Google/AndroidPublisher/Types.hs
deleted file mode 100644
--- a/gen/Network/Google/AndroidPublisher/Types.hs
+++ /dev/null
@@ -1,480 +0,0 @@
-{-# LANGUAGE DataKinds          #-}
-{-# LANGUAGE DeriveDataTypeable #-}
-{-# LANGUAGE DeriveGeneric      #-}
-{-# LANGUAGE NoImplicitPrelude  #-}
-{-# LANGUAGE OverloadedStrings  #-}
-
-{-# OPTIONS_GHC -fno-warn-unused-imports #-}
-
--- |
--- Module      : Network.Google.AndroidPublisher.Types
--- Copyright   : (c) 2015-2016 Brendan Hay
--- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
--- Stability   : auto-generated
--- Portability : non-portable (GHC extensions)
---
-module Network.Google.AndroidPublisher.Types
-    (
-    -- * Service Configuration
-      androidPublisherService
-
-    -- * OAuth Scopes
-    , androidPublisherScope
-
-    -- * InAppProductListings
-    , InAppProductListings
-    , inAppProductListings
-    , iaplAddtional
-
-    -- * EditsImagesDeleteallImageType
-    , EditsImagesDeleteallImageType (..)
-
-    -- * MonthDay
-    , MonthDay
-    , monthDay
-    , mdDay
-    , mdMonth
-
-    -- * Track
-    , Track
-    , track
-    , tTrack
-    , tReleases
-
-    -- * Image
-    , Image
-    , image
-    , iURL
-    , iSha1
-    , iId
-
-    -- * InAppProductListing
-    , InAppProductListing
-    , inAppProductListing
-    , iaplTitle
-    , iaplDescription
-
-    -- * ImagesDeleteAllResponse
-    , ImagesDeleteAllResponse
-    , imagesDeleteAllResponse
-    , idarDeleted
-
-    -- * TokenPagination
-    , TokenPagination
-    , tokenPagination
-    , tpNextPageToken
-    , tpPreviousPageToken
-
-    -- * ExpansionFile
-    , ExpansionFile
-    , expansionFile
-    , efFileSize
-    , efReferencesVersion
-
-    -- * UserComment
-    , UserComment
-    , userComment
-    , ucAndroidOSVersion
-    , ucText
-    , ucDevice
-    , ucThumbsUpCount
-    , ucAppVersionCode
-    , ucThumbsDownCount
-    , ucOriginalText
-    , ucAppVersionName
-    , ucReviewerLanguage
-    , ucDeviceMetadata
-    , ucStarRating
-    , ucLastModified
-
-    -- * Testers
-    , Testers
-    , testers
-    , tGooglePlusCommUnities
-    , tGoogleGroups
-
-    -- * SubscriptionCancelSurveyResult
-    , SubscriptionCancelSurveyResult
-    , subscriptionCancelSurveyResult
-    , scsrCancelSurveyReason
-    , scsrUserInputCancelReason
-
-    -- * Listing
-    , Listing
-    , listing
-    , lFullDescription
-    , lVideo
-    , lShortDescription
-    , lLanguage
-    , lTitle
-
-    -- * APK
-    , APK
-    , aPK
-    , aVersionCode
-    , aBinary
-
-    -- * SubscriptionPurchasesDeferRequest
-    , SubscriptionPurchasesDeferRequest
-    , subscriptionPurchasesDeferRequest
-    , spdrDeferralInfo
-
-    -- * TracksListResponse
-    , TracksListResponse
-    , tracksListResponse
-    , tlrTracks
-    , tlrKind
-
-    -- * Season
-    , Season
-    , season
-    , sStart
-    , sEnd
-    , sProrations
-
-    -- * PageInfo
-    , PageInfo
-    , pageInfo
-    , piResultPerPage
-    , piTotalResults
-    , piStartIndex
-
-    -- * ImagesListResponse
-    , ImagesListResponse
-    , imagesListResponse
-    , ilrImages
-
-    -- * AppEdit
-    , AppEdit
-    , appEdit
-    , aeId
-    , aeExpiryTimeSeconds
-
-    -- * ProductPurchase
-    , ProductPurchase
-    , productPurchase
-    , ppPurchaseState
-    , ppConsumptionState
-    , ppKind
-    , ppPurchaseTimeMillis
-    , ppPurchaseType
-    , ppDeveloperPayload
-    , ppOrderId
-
-    -- * ReviewsListResponse
-    , ReviewsListResponse
-    , reviewsListResponse
-    , rlrTokenPagination
-    , rlrPageInfo
-    , rlrReviews
-
-    -- * SubscriptionPurchasesDeferResponse
-    , SubscriptionPurchasesDeferResponse
-    , subscriptionPurchasesDeferResponse
-    , spdrNewExpiryTimeMillis
-
-    -- * 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
-    , adContactPhone
-    , adContactEmail
-    , adContactWebsite
-    , adDefaultLanguage
-
-    -- * InAppProductPrices
-    , InAppProductPrices
-    , inAppProductPrices
-    , iAppAddtional
-
-    -- * ExternallyHostedAPK
-    , ExternallyHostedAPK
-    , externallyHostedAPK
-    , ehapkApplicationLabel
-    , ehapkMaximumSdk
-    , ehapkNATiveCodes
-    , ehapkVersionCode
-    , ehapkFileSha256Base64
-    , ehapkExternallyHostedURL
-    , ehapkVersionName
-    , ehapkPackageName
-    , ehapkFileSize
-    , ehapkIconBase64
-    , ehapkUsesFeatures
-    , ehapkMinimumSdk
-    , ehapkFileSha1Base64
-    , ehapkUsesPermissions
-    , ehapkCertificateBase64s
-
-    -- * TrackRelease
-    , TrackRelease
-    , trackRelease
-    , trVersionCodes
-    , trStatus
-    , trReleaseNotes
-    , trUserFraction
-    , trCountryTargeting
-    , trName
-
-    -- * EditsImagesListImageType
-    , EditsImagesListImageType (..)
-
-    -- * CountryTargeting
-    , CountryTargeting
-    , countryTargeting
-    , ctIncludeRestOfWorld
-    , ctCountries
-
-    -- * Bundle
-    , Bundle
-    , bundle
-    , bVersionCode
-    , bSha1
-    , bSha256
-
-    -- * DeobfuscationFile
-    , DeobfuscationFile
-    , deobfuscationFile
-    , dfSymbolType
-
-    -- * VoidedPurchasesListResponse
-    , VoidedPurchasesListResponse
-    , voidedPurchasesListResponse
-    , vplrTokenPagination
-    , vplrPageInfo
-    , vplrVoidedPurchases
-
-    -- * ExpansionFilesUploadResponse
-    , ExpansionFilesUploadResponse
-    , expansionFilesUploadResponse
-    , efurExpansionFile
-
-    -- * ImagesUploadResponse
-    , ImagesUploadResponse
-    , imagesUploadResponse
-    , iurImage
-
-    -- * EditsImagesUploadImageType
-    , EditsImagesUploadImageType (..)
-
-    -- * Prorate
-    , Prorate
-    , prorate
-    , pStart
-    , pDefaultPrice
-
-    -- * DeobfuscationFilesUploadResponse
-    , DeobfuscationFilesUploadResponse
-    , deobfuscationFilesUploadResponse
-    , dfurDeobfuscationFile
-
-    -- * InAppProductsListResponse
-    , InAppProductsListResponse
-    , inAppProductsListResponse
-    , iaplrTokenPagination
-    , iaplrPageInfo
-    , iaplrKind
-    , iaplrInAppProduct
-
-    -- * EditsDeobfuscationFilesUploadDeobfuscationFileType
-    , EditsDeobfuscationFilesUploadDeobfuscationFileType (..)
-
-    -- * EditsExpansionFilesUploadExpansionFileType
-    , EditsExpansionFilesUploadExpansionFileType (..)
-
-    -- * LocalizedText
-    , LocalizedText
-    , localizedText
-    , ltText
-    , ltLanguage
-
-    -- * Review
-    , Review
-    , review
-    , rReviewId
-    , rAuthorName
-    , rComments
-
-    -- * APKsAddExternallyHostedResponse
-    , APKsAddExternallyHostedResponse
-    , aPKsAddExternallyHostedResponse
-    , apkaehrExternallyHostedAPK
-
-    -- * SubscriptionDeferralInfo
-    , SubscriptionDeferralInfo
-    , subscriptionDeferralInfo
-    , sdiDesiredExpiryTimeMillis
-    , sdiExpectedExpiryTimeMillis
-
-    -- * EditsExpansionFilesGetExpansionFileType
-    , EditsExpansionFilesGetExpansionFileType (..)
-
-    -- * ReviewsReplyRequest
-    , ReviewsReplyRequest
-    , reviewsReplyRequest
-    , rrrReplyText
-
-    -- * EditsExpansionFilesPatchExpansionFileType
-    , EditsExpansionFilesPatchExpansionFileType (..)
-
-    -- * EditsExpansionFilesUpdateExpansionFileType
-    , EditsExpansionFilesUpdateExpansionFileType (..)
-
-    -- * DeviceMetadata
-    , DeviceMetadata
-    , deviceMetadata
-    , dmProductName
-    , dmGlEsVersion
-    , dmManufacturer
-    , dmScreenWidthPx
-    , dmRamMb
-    , dmCPUMake
-    , dmScreenHeightPx
-    , dmNATivePlatform
-    , dmDeviceClass
-    , dmCPUModel
-    , dmScreenDensityDpi
-
-    -- * DeveloperComment
-    , DeveloperComment
-    , developerComment
-    , dcText
-    , dcLastModified
-
-    -- * InAppProduct
-    , InAppProduct
-    , inAppProduct
-    , iapStatus
-    , iapGracePeriod
-    , iapTrialPeriod
-    , iapPackageName
-    , iapSeason
-    , iapPurchaseType
-    , iapSubscriptionPeriod
-    , iapPrices
-    , iapSKU
-    , iapDefaultPrice
-    , iapListings
-    , iapDefaultLanguage
-
-    -- * Price
-    , Price
-    , price
-    , pPriceMicros
-    , pCurrency
-
-    -- * EditsImagesDeleteImageType
-    , EditsImagesDeleteImageType (..)
-
-    -- * APKBinary
-    , APKBinary
-    , aPKBinary
-    , apkbSha1
-    , apkbSha256
-
-    -- * APKsListResponse
-    , APKsListResponse
-    , aPKsListResponse
-    , apklrKind
-    , apklrAPKs
-
-    -- * ReviewsReplyResponse
-    , ReviewsReplyResponse
-    , reviewsReplyResponse
-    , rrrResult
-
-    -- * ExternallyHostedAPKUsesPermission
-    , ExternallyHostedAPKUsesPermission
-    , externallyHostedAPKUsesPermission
-    , ehapkupName
-    , ehapkupMaxSdkVersion
-
-    -- * ListingsListResponse
-    , ListingsListResponse
-    , listingsListResponse
-    , llrKind
-    , llrListings
-
-    -- * APKsAddExternallyHostedRequest
-    , APKsAddExternallyHostedRequest
-    , aPKsAddExternallyHostedRequest
-    , aExternallyHostedAPK
-
-    -- * Comment
-    , Comment
-    , comment
-    , cUserComment
-    , cDeveloperComment
-
-    -- * Timestamp
-    , Timestamp
-    , timestamp
-    , tNanos
-    , tSeconds
-
-    -- * VoidedPurchase
-    , VoidedPurchase
-    , voidedPurchase
-    , vpKind
-    , vpPurchaseTimeMillis
-    , vpPurchaseToken
-    , vpVoidedTimeMillis
-
-    -- * BundlesListResponse
-    , BundlesListResponse
-    , bundlesListResponse
-    , blrBundles
-    , blrKind
-
-    -- * ReviewReplyResult
-    , ReviewReplyResult
-    , reviewReplyResult
-    , rReplyText
-    , rLastEdited
-    ) where
-
-import           Network.Google.AndroidPublisher.Types.Product
-import           Network.Google.AndroidPublisher.Types.Sum
-import           Network.Google.Prelude
-
--- | 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:v3")
-      "www.googleapis.com"
-
--- | View and manage your Google Play Developer account
-androidPublisherScope :: Proxy '["https://www.googleapis.com/auth/androidpublisher"]
-androidPublisherScope = Proxy
diff --git a/gen/Network/Google/AndroidPublisher/Types/Product.hs b/gen/Network/Google/AndroidPublisher/Types/Product.hs
deleted file mode 100644
--- a/gen/Network/Google/AndroidPublisher/Types/Product.hs
+++ /dev/null
@@ -1,3854 +0,0 @@
-{-# LANGUAGE DeriveDataTypeable #-}
-{-# LANGUAGE DeriveGeneric      #-}
-{-# LANGUAGE NoImplicitPrelude  #-}
-{-# LANGUAGE OverloadedStrings  #-}
-{-# LANGUAGE RecordWildCards    #-}
-
-{-# OPTIONS_GHC -fno-warn-unused-binds   #-}
-{-# OPTIONS_GHC -fno-warn-unused-imports #-}
-
--- |
--- Module      : Network.Google.AndroidPublisher.Types.Product
--- Copyright   : (c) 2015-2016 Brendan Hay
--- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
--- Stability   : auto-generated
--- Portability : non-portable (GHC extensions)
---
-module Network.Google.AndroidPublisher.Types.Product where
-
-import           Network.Google.AndroidPublisher.Types.Sum
-import           Network.Google.Prelude
-
--- | List of localized title and description data.
---
--- /See:/ 'inAppProductListings' smart constructor.
-newtype InAppProductListings =
-  InAppProductListings'
-    { _iaplAddtional :: HashMap Text InAppProductListing
-    }
-  deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'InAppProductListings' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'iaplAddtional'
-inAppProductListings
-    :: HashMap Text InAppProductListing -- ^ 'iaplAddtional'
-    -> InAppProductListings
-inAppProductListings pIaplAddtional_ =
-  InAppProductListings' {_iaplAddtional = _Coerce # pIaplAddtional_}
-
-
--- | The language of the localized data, as defined by BCP 47. i.e.:
--- \"en-US\", \"en-GB\".
-iaplAddtional :: Lens' InAppProductListings (HashMap Text InAppProductListing)
-iaplAddtional
-  = lens _iaplAddtional
-      (\ s a -> s{_iaplAddtional = a})
-      . _Coerce
-
-instance FromJSON InAppProductListings where
-        parseJSON
-          = withObject "InAppProductListings"
-              (\ o ->
-                 InAppProductListings' <$> (parseJSONObject o))
-
-instance ToJSON InAppProductListings where
-        toJSON = toJSON . _iaplAddtional
-
---
--- /See:/ '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) - Rewarded (i.e.
--- from watching a video ad instead of paying)
-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))
-    , _trCountryTargeting :: !(Maybe CountryTargeting)
-    , _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'
---
--- * 'trCountryTargeting'
---
--- * 'trName'
-trackRelease
-    :: TrackRelease
-trackRelease =
-  TrackRelease'
-    { _trVersionCodes = Nothing
-    , _trStatus = Nothing
-    , _trReleaseNotes = Nothing
-    , _trUserFraction = Nothing
-    , _trCountryTargeting = 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
-
-trCountryTargeting :: Lens' TrackRelease (Maybe CountryTargeting)
-trCountryTargeting
-  = lens _trCountryTargeting
-      (\ s a -> s{_trCountryTargeting = a})
-
--- | 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 .:? "countryTargeting")
-                     <*> (o .:? "name"))
-
-instance ToJSON TrackRelease where
-        toJSON TrackRelease'{..}
-          = object
-              (catMaybes
-                 [("versionCodes" .=) <$> _trVersionCodes,
-                  ("status" .=) <$> _trStatus,
-                  ("releaseNotes" .=) <$> _trReleaseNotes,
-                  ("userFraction" .=) <$> _trUserFraction,
-                  ("countryTargeting" .=) <$> _trCountryTargeting,
-                  ("name" .=) <$> _trName])
-
---
--- /See:/ 'countryTargeting' smart constructor.
-data CountryTargeting =
-  CountryTargeting'
-    { _ctIncludeRestOfWorld :: !(Maybe Bool)
-    , _ctCountries          :: !(Maybe [Text])
-    }
-  deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'CountryTargeting' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'ctIncludeRestOfWorld'
---
--- * 'ctCountries'
-countryTargeting
-    :: CountryTargeting
-countryTargeting =
-  CountryTargeting' {_ctIncludeRestOfWorld = Nothing, _ctCountries = Nothing}
-
-
-ctIncludeRestOfWorld :: Lens' CountryTargeting (Maybe Bool)
-ctIncludeRestOfWorld
-  = lens _ctIncludeRestOfWorld
-      (\ s a -> s{_ctIncludeRestOfWorld = a})
-
-ctCountries :: Lens' CountryTargeting [Text]
-ctCountries
-  = lens _ctCountries (\ s a -> s{_ctCountries = a}) .
-      _Default
-      . _Coerce
-
-instance FromJSON CountryTargeting where
-        parseJSON
-          = withObject "CountryTargeting"
-              (\ o ->
-                 CountryTargeting' <$>
-                   (o .:? "includeRestOfWorld") <*>
-                     (o .:? "countries" .!= mempty))
-
-instance ToJSON CountryTargeting where
-        toJSON CountryTargeting'{..}
-          = object
-              (catMaybes
-                 [("includeRestOfWorld" .=) <$> _ctIncludeRestOfWorld,
-                  ("countries" .=) <$> _ctCountries])
-
---
--- /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
deleted file mode 100644
--- a/gen/Network/Google/AndroidPublisher/Types/Sum.hs
+++ /dev/null
@@ -1,361 +0,0 @@
-{-# LANGUAGE DeriveDataTypeable #-}
-{-# LANGUAGE DeriveGeneric      #-}
-{-# LANGUAGE LambdaCase         #-}
-{-# LANGUAGE NoImplicitPrelude  #-}
-{-# LANGUAGE OverloadedStrings  #-}
-
-{-# OPTIONS_GHC -fno-warn-unused-imports #-}
-
--- |
--- Module      : Network.Google.AndroidPublisher.Types.Sum
--- Copyright   : (c) 2015-2016 Brendan Hay
--- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
--- Stability   : auto-generated
--- Portability : non-portable (GHC extensions)
---
-module Network.Google.AndroidPublisher.Types.Sum where
-
-import           Network.Google.Prelude hiding (Bytes)
-
-data EditsImagesDeleteallImageType
-    = FeatureGraphic
-      -- ^ @featureGraphic@
-    | Icon
-      -- ^ @icon@
-    | PhoneScreenshots
-      -- ^ @phoneScreenshots@
-    | PromoGraphic
-      -- ^ @promoGraphic@
-    | SevenInchScreenshots
-      -- ^ @sevenInchScreenshots@
-    | TenInchScreenshots
-      -- ^ @tenInchScreenshots@
-    | TvBanner
-      -- ^ @tvBanner@
-    | TvScreenshots
-      -- ^ @tvScreenshots@
-    | WearScreenshots
-      -- ^ @wearScreenshots@
-      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
-
-instance Hashable EditsImagesDeleteallImageType
-
-instance FromHttpApiData EditsImagesDeleteallImageType where
-    parseQueryParam = \case
-        "featureGraphic" -> Right FeatureGraphic
-        "icon" -> Right Icon
-        "phoneScreenshots" -> Right PhoneScreenshots
-        "promoGraphic" -> Right PromoGraphic
-        "sevenInchScreenshots" -> Right SevenInchScreenshots
-        "tenInchScreenshots" -> Right TenInchScreenshots
-        "tvBanner" -> Right TvBanner
-        "tvScreenshots" -> Right TvScreenshots
-        "wearScreenshots" -> Right WearScreenshots
-        x -> Left ("Unable to parse EditsImagesDeleteallImageType from: " <> x)
-
-instance ToHttpApiData EditsImagesDeleteallImageType where
-    toQueryParam = \case
-        FeatureGraphic -> "featureGraphic"
-        Icon -> "icon"
-        PhoneScreenshots -> "phoneScreenshots"
-        PromoGraphic -> "promoGraphic"
-        SevenInchScreenshots -> "sevenInchScreenshots"
-        TenInchScreenshots -> "tenInchScreenshots"
-        TvBanner -> "tvBanner"
-        TvScreenshots -> "tvScreenshots"
-        WearScreenshots -> "wearScreenshots"
-
-instance FromJSON EditsImagesDeleteallImageType where
-    parseJSON = parseJSONText "EditsImagesDeleteallImageType"
-
-instance ToJSON EditsImagesDeleteallImageType where
-    toJSON = toJSONText
-
-data EditsImagesListImageType
-    = EILITFeatureGraphic
-      -- ^ @featureGraphic@
-    | EILITIcon
-      -- ^ @icon@
-    | EILITPhoneScreenshots
-      -- ^ @phoneScreenshots@
-    | EILITPromoGraphic
-      -- ^ @promoGraphic@
-    | EILITSevenInchScreenshots
-      -- ^ @sevenInchScreenshots@
-    | EILITTenInchScreenshots
-      -- ^ @tenInchScreenshots@
-    | EILITTvBanner
-      -- ^ @tvBanner@
-    | EILITTvScreenshots
-      -- ^ @tvScreenshots@
-    | EILITWearScreenshots
-      -- ^ @wearScreenshots@
-      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
-
-instance Hashable EditsImagesListImageType
-
-instance FromHttpApiData EditsImagesListImageType where
-    parseQueryParam = \case
-        "featureGraphic" -> Right EILITFeatureGraphic
-        "icon" -> Right EILITIcon
-        "phoneScreenshots" -> Right EILITPhoneScreenshots
-        "promoGraphic" -> Right EILITPromoGraphic
-        "sevenInchScreenshots" -> Right EILITSevenInchScreenshots
-        "tenInchScreenshots" -> Right EILITTenInchScreenshots
-        "tvBanner" -> Right EILITTvBanner
-        "tvScreenshots" -> Right EILITTvScreenshots
-        "wearScreenshots" -> Right EILITWearScreenshots
-        x -> Left ("Unable to parse EditsImagesListImageType from: " <> x)
-
-instance ToHttpApiData EditsImagesListImageType where
-    toQueryParam = \case
-        EILITFeatureGraphic -> "featureGraphic"
-        EILITIcon -> "icon"
-        EILITPhoneScreenshots -> "phoneScreenshots"
-        EILITPromoGraphic -> "promoGraphic"
-        EILITSevenInchScreenshots -> "sevenInchScreenshots"
-        EILITTenInchScreenshots -> "tenInchScreenshots"
-        EILITTvBanner -> "tvBanner"
-        EILITTvScreenshots -> "tvScreenshots"
-        EILITWearScreenshots -> "wearScreenshots"
-
-instance FromJSON EditsImagesListImageType where
-    parseJSON = parseJSONText "EditsImagesListImageType"
-
-instance ToJSON EditsImagesListImageType where
-    toJSON = toJSONText
-
-data EditsImagesUploadImageType
-    = EIUITFeatureGraphic
-      -- ^ @featureGraphic@
-    | EIUITIcon
-      -- ^ @icon@
-    | EIUITPhoneScreenshots
-      -- ^ @phoneScreenshots@
-    | EIUITPromoGraphic
-      -- ^ @promoGraphic@
-    | EIUITSevenInchScreenshots
-      -- ^ @sevenInchScreenshots@
-    | EIUITTenInchScreenshots
-      -- ^ @tenInchScreenshots@
-    | EIUITTvBanner
-      -- ^ @tvBanner@
-    | EIUITTvScreenshots
-      -- ^ @tvScreenshots@
-    | EIUITWearScreenshots
-      -- ^ @wearScreenshots@
-      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
-
-instance Hashable EditsImagesUploadImageType
-
-instance FromHttpApiData EditsImagesUploadImageType where
-    parseQueryParam = \case
-        "featureGraphic" -> Right EIUITFeatureGraphic
-        "icon" -> Right EIUITIcon
-        "phoneScreenshots" -> Right EIUITPhoneScreenshots
-        "promoGraphic" -> Right EIUITPromoGraphic
-        "sevenInchScreenshots" -> Right EIUITSevenInchScreenshots
-        "tenInchScreenshots" -> Right EIUITTenInchScreenshots
-        "tvBanner" -> Right EIUITTvBanner
-        "tvScreenshots" -> Right EIUITTvScreenshots
-        "wearScreenshots" -> Right EIUITWearScreenshots
-        x -> Left ("Unable to parse EditsImagesUploadImageType from: " <> x)
-
-instance ToHttpApiData EditsImagesUploadImageType where
-    toQueryParam = \case
-        EIUITFeatureGraphic -> "featureGraphic"
-        EIUITIcon -> "icon"
-        EIUITPhoneScreenshots -> "phoneScreenshots"
-        EIUITPromoGraphic -> "promoGraphic"
-        EIUITSevenInchScreenshots -> "sevenInchScreenshots"
-        EIUITTenInchScreenshots -> "tenInchScreenshots"
-        EIUITTvBanner -> "tvBanner"
-        EIUITTvScreenshots -> "tvScreenshots"
-        EIUITWearScreenshots -> "wearScreenshots"
-
-instance FromJSON EditsImagesUploadImageType where
-    parseJSON = parseJSONText "EditsImagesUploadImageType"
-
-instance ToJSON EditsImagesUploadImageType where
-    toJSON = toJSONText
-
-data EditsDeobfuscationFilesUploadDeobfuscationFileType
-    = Proguard
-      -- ^ @proguard@
-      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
-
-instance Hashable EditsDeobfuscationFilesUploadDeobfuscationFileType
-
-instance FromHttpApiData EditsDeobfuscationFilesUploadDeobfuscationFileType where
-    parseQueryParam = \case
-        "proguard" -> Right Proguard
-        x -> Left ("Unable to parse EditsDeobfuscationFilesUploadDeobfuscationFileType from: " <> x)
-
-instance ToHttpApiData EditsDeobfuscationFilesUploadDeobfuscationFileType where
-    toQueryParam = \case
-        Proguard -> "proguard"
-
-instance FromJSON EditsDeobfuscationFilesUploadDeobfuscationFileType where
-    parseJSON = parseJSONText "EditsDeobfuscationFilesUploadDeobfuscationFileType"
-
-instance ToJSON EditsDeobfuscationFilesUploadDeobfuscationFileType where
-    toJSON = toJSONText
-
-data EditsExpansionFilesUploadExpansionFileType
-    = Main
-      -- ^ @main@
-    | Patch'
-      -- ^ @patch@
-      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
-
-instance Hashable EditsExpansionFilesUploadExpansionFileType
-
-instance FromHttpApiData EditsExpansionFilesUploadExpansionFileType where
-    parseQueryParam = \case
-        "main" -> Right Main
-        "patch" -> Right Patch'
-        x -> Left ("Unable to parse EditsExpansionFilesUploadExpansionFileType from: " <> x)
-
-instance ToHttpApiData EditsExpansionFilesUploadExpansionFileType where
-    toQueryParam = \case
-        Main -> "main"
-        Patch' -> "patch"
-
-instance FromJSON EditsExpansionFilesUploadExpansionFileType where
-    parseJSON = parseJSONText "EditsExpansionFilesUploadExpansionFileType"
-
-instance ToJSON EditsExpansionFilesUploadExpansionFileType where
-    toJSON = toJSONText
-
-data EditsExpansionFilesGetExpansionFileType
-    = EEFGEFTMain
-      -- ^ @main@
-    | EEFGEFTPatch'
-      -- ^ @patch@
-      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
-
-instance Hashable EditsExpansionFilesGetExpansionFileType
-
-instance FromHttpApiData EditsExpansionFilesGetExpansionFileType where
-    parseQueryParam = \case
-        "main" -> Right EEFGEFTMain
-        "patch" -> Right EEFGEFTPatch'
-        x -> Left ("Unable to parse EditsExpansionFilesGetExpansionFileType from: " <> x)
-
-instance ToHttpApiData EditsExpansionFilesGetExpansionFileType where
-    toQueryParam = \case
-        EEFGEFTMain -> "main"
-        EEFGEFTPatch' -> "patch"
-
-instance FromJSON EditsExpansionFilesGetExpansionFileType where
-    parseJSON = parseJSONText "EditsExpansionFilesGetExpansionFileType"
-
-instance ToJSON EditsExpansionFilesGetExpansionFileType where
-    toJSON = toJSONText
-
-data EditsExpansionFilesPatchExpansionFileType
-    = EEFPEFTMain
-      -- ^ @main@
-    | EEFPEFTPatch'
-      -- ^ @patch@
-      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
-
-instance Hashable EditsExpansionFilesPatchExpansionFileType
-
-instance FromHttpApiData EditsExpansionFilesPatchExpansionFileType where
-    parseQueryParam = \case
-        "main" -> Right EEFPEFTMain
-        "patch" -> Right EEFPEFTPatch'
-        x -> Left ("Unable to parse EditsExpansionFilesPatchExpansionFileType from: " <> x)
-
-instance ToHttpApiData EditsExpansionFilesPatchExpansionFileType where
-    toQueryParam = \case
-        EEFPEFTMain -> "main"
-        EEFPEFTPatch' -> "patch"
-
-instance FromJSON EditsExpansionFilesPatchExpansionFileType where
-    parseJSON = parseJSONText "EditsExpansionFilesPatchExpansionFileType"
-
-instance ToJSON EditsExpansionFilesPatchExpansionFileType where
-    toJSON = toJSONText
-
-data EditsExpansionFilesUpdateExpansionFileType
-    = EEFUEFTMain
-      -- ^ @main@
-    | EEFUEFTPatch'
-      -- ^ @patch@
-      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
-
-instance Hashable EditsExpansionFilesUpdateExpansionFileType
-
-instance FromHttpApiData EditsExpansionFilesUpdateExpansionFileType where
-    parseQueryParam = \case
-        "main" -> Right EEFUEFTMain
-        "patch" -> Right EEFUEFTPatch'
-        x -> Left ("Unable to parse EditsExpansionFilesUpdateExpansionFileType from: " <> x)
-
-instance ToHttpApiData EditsExpansionFilesUpdateExpansionFileType where
-    toQueryParam = \case
-        EEFUEFTMain -> "main"
-        EEFUEFTPatch' -> "patch"
-
-instance FromJSON EditsExpansionFilesUpdateExpansionFileType where
-    parseJSON = parseJSONText "EditsExpansionFilesUpdateExpansionFileType"
-
-instance ToJSON EditsExpansionFilesUpdateExpansionFileType where
-    toJSON = toJSONText
-
-data EditsImagesDeleteImageType
-    = EIDITFeatureGraphic
-      -- ^ @featureGraphic@
-    | EIDITIcon
-      -- ^ @icon@
-    | EIDITPhoneScreenshots
-      -- ^ @phoneScreenshots@
-    | EIDITPromoGraphic
-      -- ^ @promoGraphic@
-    | EIDITSevenInchScreenshots
-      -- ^ @sevenInchScreenshots@
-    | EIDITTenInchScreenshots
-      -- ^ @tenInchScreenshots@
-    | EIDITTvBanner
-      -- ^ @tvBanner@
-    | EIDITTvScreenshots
-      -- ^ @tvScreenshots@
-    | EIDITWearScreenshots
-      -- ^ @wearScreenshots@
-      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
-
-instance Hashable EditsImagesDeleteImageType
-
-instance FromHttpApiData EditsImagesDeleteImageType where
-    parseQueryParam = \case
-        "featureGraphic" -> Right EIDITFeatureGraphic
-        "icon" -> Right EIDITIcon
-        "phoneScreenshots" -> Right EIDITPhoneScreenshots
-        "promoGraphic" -> Right EIDITPromoGraphic
-        "sevenInchScreenshots" -> Right EIDITSevenInchScreenshots
-        "tenInchScreenshots" -> Right EIDITTenInchScreenshots
-        "tvBanner" -> Right EIDITTvBanner
-        "tvScreenshots" -> Right EIDITTvScreenshots
-        "wearScreenshots" -> Right EIDITWearScreenshots
-        x -> Left ("Unable to parse EditsImagesDeleteImageType from: " <> x)
-
-instance ToHttpApiData EditsImagesDeleteImageType where
-    toQueryParam = \case
-        EIDITFeatureGraphic -> "featureGraphic"
-        EIDITIcon -> "icon"
-        EIDITPhoneScreenshots -> "phoneScreenshots"
-        EIDITPromoGraphic -> "promoGraphic"
-        EIDITSevenInchScreenshots -> "sevenInchScreenshots"
-        EIDITTenInchScreenshots -> "tenInchScreenshots"
-        EIDITTvBanner -> "tvBanner"
-        EIDITTvScreenshots -> "tvScreenshots"
-        EIDITWearScreenshots -> "wearScreenshots"
-
-instance FromJSON EditsImagesDeleteImageType where
-    parseJSON = parseJSONText "EditsImagesDeleteImageType"
-
-instance ToJSON EditsImagesDeleteImageType where
-    toJSON = toJSONText
diff --git a/gen/Network/Google/Resource/AndroidPublisher/Edits/APKs/Addexternallyhosted.hs b/gen/Network/Google/Resource/AndroidPublisher/Edits/APKs/Addexternallyhosted.hs
deleted file mode 100644
--- a/gen/Network/Google/Resource/AndroidPublisher/Edits/APKs/Addexternallyhosted.hs
+++ /dev/null
@@ -1,129 +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.APKs.Addexternallyhosted
--- 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)
---
--- Creates a new APK without uploading the APK itself to Google Play,
--- instead hosting the APK at a specified URL. This function is only
--- available to enterprises using Google Play for Work whose application is
--- configured to restrict distribution to the enterprise domain.
---
--- /See:/ <https://developers.google.com/android-publisher Google Play Developer API Reference> for @androidpublisher.edits.apks.addexternallyhosted@.
-module Network.Google.Resource.AndroidPublisher.Edits.APKs.Addexternallyhosted
-    (
-    -- * REST Resource
-      EditsAPKsAddexternallyhostedResource
-
-    -- * Creating a Request
-    , editsAPKsAddexternallyhosted
-    , EditsAPKsAddexternallyhosted
-
-    -- * Request Lenses
-    , eapkaPackageName
-    , eapkaPayload
-    , eapkaEditId
-    ) where
-
-import           Network.Google.AndroidPublisher.Types
-import           Network.Google.Prelude
-
--- | A resource alias for @androidpublisher.edits.apks.addexternallyhosted@ method which the
--- 'EditsAPKsAddexternallyhosted' request conforms to.
-type EditsAPKsAddexternallyhostedResource =
-     "androidpublisher" :>
-       "v3" :>
-         "applications" :>
-           Capture "packageName" Text :>
-             "edits" :>
-               Capture "editId" Text :>
-                 "apks" :>
-                   "externallyHosted" :>
-                     QueryParam "alt" AltJSON :>
-                       ReqBody '[JSON] APKsAddExternallyHostedRequest :>
-                         Post '[JSON] APKsAddExternallyHostedResponse
-
--- | Creates a new APK without uploading the APK itself to Google Play,
--- instead hosting the APK at a specified URL. This function is only
--- available to enterprises using Google Play for Work whose application is
--- configured to restrict distribution to the enterprise domain.
---
--- /See:/ 'editsAPKsAddexternallyhosted' smart constructor.
-data EditsAPKsAddexternallyhosted =
-  EditsAPKsAddexternallyhosted'
-    { _eapkaPackageName :: !Text
-    , _eapkaPayload     :: !APKsAddExternallyHostedRequest
-    , _eapkaEditId      :: !Text
-    }
-  deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'EditsAPKsAddexternallyhosted' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'eapkaPackageName'
---
--- * 'eapkaPayload'
---
--- * 'eapkaEditId'
-editsAPKsAddexternallyhosted
-    :: Text -- ^ 'eapkaPackageName'
-    -> APKsAddExternallyHostedRequest -- ^ 'eapkaPayload'
-    -> Text -- ^ 'eapkaEditId'
-    -> EditsAPKsAddexternallyhosted
-editsAPKsAddexternallyhosted pEapkaPackageName_ pEapkaPayload_ pEapkaEditId_ =
-  EditsAPKsAddexternallyhosted'
-    { _eapkaPackageName = pEapkaPackageName_
-    , _eapkaPayload = pEapkaPayload_
-    , _eapkaEditId = pEapkaEditId_
-    }
-
-
--- | Unique identifier for the Android app that is being updated; for
--- example, \"com.spiffygame\".
-eapkaPackageName :: Lens' EditsAPKsAddexternallyhosted Text
-eapkaPackageName
-  = lens _eapkaPackageName
-      (\ s a -> s{_eapkaPackageName = a})
-
--- | Multipart request metadata.
-eapkaPayload :: Lens' EditsAPKsAddexternallyhosted APKsAddExternallyHostedRequest
-eapkaPayload
-  = lens _eapkaPayload (\ s a -> s{_eapkaPayload = a})
-
--- | Unique identifier for this edit.
-eapkaEditId :: Lens' EditsAPKsAddexternallyhosted Text
-eapkaEditId
-  = lens _eapkaEditId (\ s a -> s{_eapkaEditId = a})
-
-instance GoogleRequest EditsAPKsAddexternallyhosted
-         where
-        type Rs EditsAPKsAddexternallyhosted =
-             APKsAddExternallyHostedResponse
-        type Scopes EditsAPKsAddexternallyhosted =
-             '["https://www.googleapis.com/auth/androidpublisher"]
-        requestClient EditsAPKsAddexternallyhosted'{..}
-          = go _eapkaPackageName _eapkaEditId (Just AltJSON)
-              _eapkaPayload
-              androidPublisherService
-          where go
-                  = buildClient
-                      (Proxy :: Proxy EditsAPKsAddexternallyhostedResource)
-                      mempty
diff --git a/gen/Network/Google/Resource/AndroidPublisher/Edits/APKs/List.hs b/gen/Network/Google/Resource/AndroidPublisher/Edits/APKs/List.hs
deleted file mode 100644
--- a/gen/Network/Google/Resource/AndroidPublisher/Edits/APKs/List.hs
+++ /dev/null
@@ -1,101 +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.APKs.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.apks.list@.
-module Network.Google.Resource.AndroidPublisher.Edits.APKs.List
-    (
-    -- * REST Resource
-      EditsAPKsListResource
-
-    -- * Creating a Request
-    , editsAPKsList
-    , EditsAPKsList
-
-    -- * Request Lenses
-    , eapklPackageName
-    , eapklEditId
-    ) where
-
-import           Network.Google.AndroidPublisher.Types
-import           Network.Google.Prelude
-
--- | A resource alias for @androidpublisher.edits.apks.list@ method which the
--- 'EditsAPKsList' request conforms to.
-type EditsAPKsListResource =
-     "androidpublisher" :>
-       "v3" :>
-         "applications" :>
-           Capture "packageName" Text :>
-             "edits" :>
-               Capture "editId" Text :>
-                 "apks" :>
-                   QueryParam "alt" AltJSON :>
-                     Get '[JSON] APKsListResponse
-
---
--- /See:/ 'editsAPKsList' smart constructor.
-data EditsAPKsList =
-  EditsAPKsList'
-    { _eapklPackageName :: !Text
-    , _eapklEditId      :: !Text
-    }
-  deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'EditsAPKsList' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'eapklPackageName'
---
--- * 'eapklEditId'
-editsAPKsList
-    :: Text -- ^ 'eapklPackageName'
-    -> Text -- ^ 'eapklEditId'
-    -> EditsAPKsList
-editsAPKsList pEapklPackageName_ pEapklEditId_ =
-  EditsAPKsList'
-    {_eapklPackageName = pEapklPackageName_, _eapklEditId = pEapklEditId_}
-
-
--- | Unique identifier for the Android app that is being updated; for
--- example, \"com.spiffygame\".
-eapklPackageName :: Lens' EditsAPKsList Text
-eapklPackageName
-  = lens _eapklPackageName
-      (\ s a -> s{_eapklPackageName = a})
-
--- | Unique identifier for this edit.
-eapklEditId :: Lens' EditsAPKsList Text
-eapklEditId
-  = lens _eapklEditId (\ s a -> s{_eapklEditId = a})
-
-instance GoogleRequest EditsAPKsList where
-        type Rs EditsAPKsList = APKsListResponse
-        type Scopes EditsAPKsList =
-             '["https://www.googleapis.com/auth/androidpublisher"]
-        requestClient EditsAPKsList'{..}
-          = go _eapklPackageName _eapklEditId (Just AltJSON)
-              androidPublisherService
-          where go
-                  = buildClient (Proxy :: Proxy EditsAPKsListResource)
-                      mempty
diff --git a/gen/Network/Google/Resource/AndroidPublisher/Edits/APKs/Upload.hs b/gen/Network/Google/Resource/AndroidPublisher/Edits/APKs/Upload.hs
deleted file mode 100644
--- a/gen/Network/Google/Resource/AndroidPublisher/Edits/APKs/Upload.hs
+++ /dev/null
@@ -1,128 +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.APKs.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)
---
--- /See:/ <https://developers.google.com/android-publisher Google Play Developer API Reference> for @androidpublisher.edits.apks.upload@.
-module Network.Google.Resource.AndroidPublisher.Edits.APKs.Upload
-    (
-    -- * REST Resource
-      EditsAPKsUploadResource
-
-    -- * Creating a Request
-    , editsAPKsUpload
-    , EditsAPKsUpload
-
-    -- * Request Lenses
-    , eapkuPackageName
-    , eapkuEditId
-    ) where
-
-import           Network.Google.AndroidPublisher.Types
-import           Network.Google.Prelude
-
--- | A resource alias for @androidpublisher.edits.apks.upload@ method which the
--- 'EditsAPKsUpload' request conforms to.
-type EditsAPKsUploadResource =
-     "androidpublisher" :>
-       "v3" :>
-         "applications" :>
-           Capture "packageName" Text :>
-             "edits" :>
-               Capture "editId" Text :>
-                 "apks" :>
-                   QueryParam "alt" AltJSON :> Post '[JSON] APK
-       :<|>
-       "upload" :>
-         "androidpublisher" :>
-           "v3" :>
-             "applications" :>
-               Capture "packageName" Text :>
-                 "edits" :>
-                   Capture "editId" Text :>
-                     "apks" :>
-                       QueryParam "alt" AltJSON :>
-                         QueryParam "uploadType" AltMedia :>
-                           AltMedia :> Post '[JSON] APK
-
---
--- /See:/ 'editsAPKsUpload' smart constructor.
-data EditsAPKsUpload =
-  EditsAPKsUpload'
-    { _eapkuPackageName :: !Text
-    , _eapkuEditId      :: !Text
-    }
-  deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'EditsAPKsUpload' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'eapkuPackageName'
---
--- * 'eapkuEditId'
-editsAPKsUpload
-    :: Text -- ^ 'eapkuPackageName'
-    -> Text -- ^ 'eapkuEditId'
-    -> EditsAPKsUpload
-editsAPKsUpload pEapkuPackageName_ pEapkuEditId_ =
-  EditsAPKsUpload'
-    {_eapkuPackageName = pEapkuPackageName_, _eapkuEditId = pEapkuEditId_}
-
-
--- | Unique identifier for the Android app that is being updated; for
--- example, \"com.spiffygame\".
-eapkuPackageName :: Lens' EditsAPKsUpload Text
-eapkuPackageName
-  = lens _eapkuPackageName
-      (\ s a -> s{_eapkuPackageName = a})
-
--- | Unique identifier for this edit.
-eapkuEditId :: Lens' EditsAPKsUpload Text
-eapkuEditId
-  = lens _eapkuEditId (\ s a -> s{_eapkuEditId = a})
-
-instance GoogleRequest EditsAPKsUpload where
-        type Rs EditsAPKsUpload = APK
-        type Scopes EditsAPKsUpload =
-             '["https://www.googleapis.com/auth/androidpublisher"]
-        requestClient EditsAPKsUpload'{..}
-          = go _eapkuPackageName _eapkuEditId (Just AltJSON)
-              androidPublisherService
-          where go :<|> _
-                  = buildClient
-                      (Proxy :: Proxy EditsAPKsUploadResource)
-                      mempty
-
-instance GoogleRequest (MediaUpload EditsAPKsUpload)
-         where
-        type Rs (MediaUpload EditsAPKsUpload) = APK
-        type Scopes (MediaUpload EditsAPKsUpload) =
-             Scopes EditsAPKsUpload
-        requestClient (MediaUpload EditsAPKsUpload'{..} body)
-          = go _eapkuPackageName _eapkuEditId (Just AltJSON)
-              (Just AltMedia)
-              body
-              androidPublisherService
-          where _ :<|> go
-                  = buildClient
-                      (Proxy :: Proxy EditsAPKsUploadResource)
-                      mempty
diff --git a/gen/Network/Google/Resource/AndroidPublisher/Edits/Bundles/List.hs b/gen/Network/Google/Resource/AndroidPublisher/Edits/Bundles/List.hs
deleted file mode 100644
--- a/gen/Network/Google/Resource/AndroidPublisher/Edits/Bundles/List.hs
+++ /dev/null
@@ -1,102 +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.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
deleted file mode 100644
--- a/gen/Network/Google/Resource/AndroidPublisher/Edits/Bundles/Upload.hs
+++ /dev/null
@@ -1,164 +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.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
deleted file mode 100644
--- a/gen/Network/Google/Resource/AndroidPublisher/Edits/Commit.hs
+++ /dev/null
@@ -1,100 +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.Commit
--- 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)
---
--- Commits\/applies the changes made in this edit back to the app.
---
--- /See:/ <https://developers.google.com/android-publisher Google Play Developer API Reference> for @androidpublisher.edits.commit@.
-module Network.Google.Resource.AndroidPublisher.Edits.Commit
-    (
-    -- * REST Resource
-      EditsCommitResource
-
-    -- * Creating a Request
-    , editsCommit
-    , EditsCommit
-
-    -- * Request Lenses
-    , ecPackageName
-    , ecEditId
-    ) where
-
-import           Network.Google.AndroidPublisher.Types
-import           Network.Google.Prelude
-
--- | A resource alias for @androidpublisher.edits.commit@ method which the
--- 'EditsCommit' request conforms to.
-type EditsCommitResource =
-     "androidpublisher" :>
-       "v3" :>
-         "applications" :>
-           Capture "packageName" Text :>
-             "edits" :>
-               CaptureMode "editId" "commit" Text :>
-                 QueryParam "alt" AltJSON :> Post '[JSON] AppEdit
-
--- | Commits\/applies the changes made in this edit back to the app.
---
--- /See:/ 'editsCommit' smart constructor.
-data EditsCommit =
-  EditsCommit'
-    { _ecPackageName :: !Text
-    , _ecEditId      :: !Text
-    }
-  deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'EditsCommit' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'ecPackageName'
---
--- * 'ecEditId'
-editsCommit
-    :: Text -- ^ 'ecPackageName'
-    -> Text -- ^ 'ecEditId'
-    -> EditsCommit
-editsCommit pEcPackageName_ pEcEditId_ =
-  EditsCommit' {_ecPackageName = pEcPackageName_, _ecEditId = pEcEditId_}
-
-
--- | Unique identifier for the Android app that is being updated; for
--- example, \"com.spiffygame\".
-ecPackageName :: Lens' EditsCommit Text
-ecPackageName
-  = lens _ecPackageName
-      (\ s a -> s{_ecPackageName = a})
-
--- | Unique identifier for this edit.
-ecEditId :: Lens' EditsCommit Text
-ecEditId = lens _ecEditId (\ s a -> s{_ecEditId = a})
-
-instance GoogleRequest EditsCommit where
-        type Rs EditsCommit = AppEdit
-        type Scopes EditsCommit =
-             '["https://www.googleapis.com/auth/androidpublisher"]
-        requestClient EditsCommit'{..}
-          = go _ecPackageName _ecEditId (Just AltJSON)
-              androidPublisherService
-          where go
-                  = buildClient (Proxy :: Proxy EditsCommitResource)
-                      mempty
diff --git a/gen/Network/Google/Resource/AndroidPublisher/Edits/Delete.hs b/gen/Network/Google/Resource/AndroidPublisher/Edits/Delete.hs
deleted file mode 100644
--- a/gen/Network/Google/Resource/AndroidPublisher/Edits/Delete.hs
+++ /dev/null
@@ -1,104 +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.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 an edit for an app. Creating a new edit will automatically
--- delete any of your previous edits so this method need only be called if
--- you want to preemptively abandon an edit.
---
--- /See:/ <https://developers.google.com/android-publisher Google Play Developer API Reference> for @androidpublisher.edits.delete@.
-module Network.Google.Resource.AndroidPublisher.Edits.Delete
-    (
-    -- * REST Resource
-      EditsDeleteResource
-
-    -- * Creating a Request
-    , editsDelete
-    , EditsDelete
-
-    -- * Request Lenses
-    , edPackageName
-    , edEditId
-    ) where
-
-import           Network.Google.AndroidPublisher.Types
-import           Network.Google.Prelude
-
--- | A resource alias for @androidpublisher.edits.delete@ method which the
--- 'EditsDelete' request conforms to.
-type EditsDeleteResource =
-     "androidpublisher" :>
-       "v3" :>
-         "applications" :>
-           Capture "packageName" Text :>
-             "edits" :>
-               Capture "editId" Text :>
-                 QueryParam "alt" AltJSON :> Delete '[JSON] ()
-
--- | Deletes an edit for an app. Creating a new edit will automatically
--- delete any of your previous edits so this method need only be called if
--- you want to preemptively abandon an edit.
---
--- /See:/ 'editsDelete' smart constructor.
-data EditsDelete =
-  EditsDelete'
-    { _edPackageName :: !Text
-    , _edEditId      :: !Text
-    }
-  deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'EditsDelete' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'edPackageName'
---
--- * 'edEditId'
-editsDelete
-    :: Text -- ^ 'edPackageName'
-    -> Text -- ^ 'edEditId'
-    -> EditsDelete
-editsDelete pEdPackageName_ pEdEditId_ =
-  EditsDelete' {_edPackageName = pEdPackageName_, _edEditId = pEdEditId_}
-
-
--- | Unique identifier for the Android app that is being updated; for
--- example, \"com.spiffygame\".
-edPackageName :: Lens' EditsDelete Text
-edPackageName
-  = lens _edPackageName
-      (\ s a -> s{_edPackageName = a})
-
--- | Unique identifier for this edit.
-edEditId :: Lens' EditsDelete Text
-edEditId = lens _edEditId (\ s a -> s{_edEditId = a})
-
-instance GoogleRequest EditsDelete where
-        type Rs EditsDelete = ()
-        type Scopes EditsDelete =
-             '["https://www.googleapis.com/auth/androidpublisher"]
-        requestClient EditsDelete'{..}
-          = go _edPackageName _edEditId (Just AltJSON)
-              androidPublisherService
-          where go
-                  = buildClient (Proxy :: Proxy EditsDeleteResource)
-                      mempty
diff --git a/gen/Network/Google/Resource/AndroidPublisher/Edits/DeobfuscationFiles/Upload.hs b/gen/Network/Google/Resource/AndroidPublisher/Edits/DeobfuscationFiles/Upload.hs
deleted file mode 100644
--- a/gen/Network/Google/Resource/AndroidPublisher/Edits/DeobfuscationFiles/Upload.hs
+++ /dev/null
@@ -1,183 +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.DeobfuscationFiles.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 the deobfuscation file of the specified APK. If a deobfuscation
--- file already exists, it will be replaced.
---
--- /See:/ <https://developers.google.com/android-publisher Google Play Developer API Reference> for @androidpublisher.edits.deobfuscationfiles.upload@.
-module Network.Google.Resource.AndroidPublisher.Edits.DeobfuscationFiles.Upload
-    (
-    -- * REST Resource
-      EditsDeobfuscationFilesUploadResource
-
-    -- * Creating a Request
-    , editsDeobfuscationFilesUpload
-    , EditsDeobfuscationFilesUpload
-
-    -- * Request Lenses
-    , edfuDeobfuscationFileType
-    , edfuPackageName
-    , edfuAPKVersionCode
-    , edfuEditId
-    ) where
-
-import           Network.Google.AndroidPublisher.Types
-import           Network.Google.Prelude
-
--- | A resource alias for @androidpublisher.edits.deobfuscationfiles.upload@ method which the
--- 'EditsDeobfuscationFilesUpload' request conforms to.
-type EditsDeobfuscationFilesUploadResource =
-     "androidpublisher" :>
-       "v3" :>
-         "applications" :>
-           Capture "packageName" Text :>
-             "edits" :>
-               Capture "editId" Text :>
-                 "apks" :>
-                   Capture "apkVersionCode" (Textual Int32) :>
-                     "deobfuscationFiles" :>
-                       Capture "deobfuscationFileType"
-                         EditsDeobfuscationFilesUploadDeobfuscationFileType
-                         :>
-                         QueryParam "alt" AltJSON :>
-                           Post '[JSON] DeobfuscationFilesUploadResponse
-       :<|>
-       "upload" :>
-         "androidpublisher" :>
-           "v3" :>
-             "applications" :>
-               Capture "packageName" Text :>
-                 "edits" :>
-                   Capture "editId" Text :>
-                     "apks" :>
-                       Capture "apkVersionCode" (Textual Int32) :>
-                         "deobfuscationFiles" :>
-                           Capture "deobfuscationFileType"
-                             EditsDeobfuscationFilesUploadDeobfuscationFileType
-                             :>
-                             QueryParam "alt" AltJSON :>
-                               QueryParam "uploadType" AltMedia :>
-                                 AltMedia :>
-                                   Post '[JSON] DeobfuscationFilesUploadResponse
-
--- | Uploads the deobfuscation file of the specified APK. If a deobfuscation
--- file already exists, it will be replaced.
---
--- /See:/ 'editsDeobfuscationFilesUpload' smart constructor.
-data EditsDeobfuscationFilesUpload =
-  EditsDeobfuscationFilesUpload'
-    { _edfuDeobfuscationFileType :: !EditsDeobfuscationFilesUploadDeobfuscationFileType
-    , _edfuPackageName           :: !Text
-    , _edfuAPKVersionCode        :: !(Textual Int32)
-    , _edfuEditId                :: !Text
-    }
-  deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'EditsDeobfuscationFilesUpload' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'edfuDeobfuscationFileType'
---
--- * 'edfuPackageName'
---
--- * 'edfuAPKVersionCode'
---
--- * 'edfuEditId'
-editsDeobfuscationFilesUpload
-    :: EditsDeobfuscationFilesUploadDeobfuscationFileType -- ^ 'edfuDeobfuscationFileType'
-    -> Text -- ^ 'edfuPackageName'
-    -> Int32 -- ^ 'edfuAPKVersionCode'
-    -> Text -- ^ 'edfuEditId'
-    -> EditsDeobfuscationFilesUpload
-editsDeobfuscationFilesUpload pEdfuDeobfuscationFileType_ pEdfuPackageName_ pEdfuAPKVersionCode_ pEdfuEditId_ =
-  EditsDeobfuscationFilesUpload'
-    { _edfuDeobfuscationFileType = pEdfuDeobfuscationFileType_
-    , _edfuPackageName = pEdfuPackageName_
-    , _edfuAPKVersionCode = _Coerce # pEdfuAPKVersionCode_
-    , _edfuEditId = pEdfuEditId_
-    }
-
-
-edfuDeobfuscationFileType :: Lens' EditsDeobfuscationFilesUpload EditsDeobfuscationFilesUploadDeobfuscationFileType
-edfuDeobfuscationFileType
-  = lens _edfuDeobfuscationFileType
-      (\ s a -> s{_edfuDeobfuscationFileType = a})
-
--- | Unique identifier of the Android app for which the deobfuscatiuon files
--- are being uploaded; for example, \"com.spiffygame\".
-edfuPackageName :: Lens' EditsDeobfuscationFilesUpload Text
-edfuPackageName
-  = lens _edfuPackageName
-      (\ s a -> s{_edfuPackageName = a})
-
--- | The version code of the APK whose deobfuscation file is being uploaded.
-edfuAPKVersionCode :: Lens' EditsDeobfuscationFilesUpload Int32
-edfuAPKVersionCode
-  = lens _edfuAPKVersionCode
-      (\ s a -> s{_edfuAPKVersionCode = a})
-      . _Coerce
-
--- | Unique identifier for this edit.
-edfuEditId :: Lens' EditsDeobfuscationFilesUpload Text
-edfuEditId
-  = lens _edfuEditId (\ s a -> s{_edfuEditId = a})
-
-instance GoogleRequest EditsDeobfuscationFilesUpload
-         where
-        type Rs EditsDeobfuscationFilesUpload =
-             DeobfuscationFilesUploadResponse
-        type Scopes EditsDeobfuscationFilesUpload =
-             '["https://www.googleapis.com/auth/androidpublisher"]
-        requestClient EditsDeobfuscationFilesUpload'{..}
-          = go _edfuPackageName _edfuEditId _edfuAPKVersionCode
-              _edfuDeobfuscationFileType
-              (Just AltJSON)
-              androidPublisherService
-          where go :<|> _
-                  = buildClient
-                      (Proxy ::
-                         Proxy EditsDeobfuscationFilesUploadResource)
-                      mempty
-
-instance GoogleRequest
-           (MediaUpload EditsDeobfuscationFilesUpload)
-         where
-        type Rs (MediaUpload EditsDeobfuscationFilesUpload) =
-             DeobfuscationFilesUploadResponse
-        type Scopes
-               (MediaUpload EditsDeobfuscationFilesUpload)
-             = Scopes EditsDeobfuscationFilesUpload
-        requestClient
-          (MediaUpload EditsDeobfuscationFilesUpload'{..} body)
-          = go _edfuPackageName _edfuEditId _edfuAPKVersionCode
-              _edfuDeobfuscationFileType
-              (Just AltJSON)
-              (Just AltMedia)
-              body
-              androidPublisherService
-          where _ :<|> go
-                  = buildClient
-                      (Proxy ::
-                         Proxy EditsDeobfuscationFilesUploadResource)
-                      mempty
diff --git a/gen/Network/Google/Resource/AndroidPublisher/Edits/Details/Get.hs b/gen/Network/Google/Resource/AndroidPublisher/Edits/Details/Get.hs
deleted file mode 100644
--- a/gen/Network/Google/Resource/AndroidPublisher/Edits/Details/Get.hs
+++ /dev/null
@@ -1,106 +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.Details.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 app details for this edit. This includes the default language
--- and developer support contact information.
---
--- /See:/ <https://developers.google.com/android-publisher Google Play Developer API Reference> for @androidpublisher.edits.details.get@.
-module Network.Google.Resource.AndroidPublisher.Edits.Details.Get
-    (
-    -- * REST Resource
-      EditsDetailsGetResource
-
-    -- * Creating a Request
-    , editsDetailsGet
-    , EditsDetailsGet
-
-    -- * Request Lenses
-    , edgPackageName
-    , edgEditId
-    ) where
-
-import           Network.Google.AndroidPublisher.Types
-import           Network.Google.Prelude
-
--- | A resource alias for @androidpublisher.edits.details.get@ method which the
--- 'EditsDetailsGet' request conforms to.
-type EditsDetailsGetResource =
-     "androidpublisher" :>
-       "v3" :>
-         "applications" :>
-           Capture "packageName" Text :>
-             "edits" :>
-               Capture "editId" Text :>
-                 "details" :>
-                   QueryParam "alt" AltJSON :> Get '[JSON] AppDetails
-
--- | Fetches app details for this edit. This includes the default language
--- and developer support contact information.
---
--- /See:/ 'editsDetailsGet' smart constructor.
-data EditsDetailsGet =
-  EditsDetailsGet'
-    { _edgPackageName :: !Text
-    , _edgEditId      :: !Text
-    }
-  deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'EditsDetailsGet' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'edgPackageName'
---
--- * 'edgEditId'
-editsDetailsGet
-    :: Text -- ^ 'edgPackageName'
-    -> Text -- ^ 'edgEditId'
-    -> EditsDetailsGet
-editsDetailsGet pEdgPackageName_ pEdgEditId_ =
-  EditsDetailsGet'
-    {_edgPackageName = pEdgPackageName_, _edgEditId = pEdgEditId_}
-
-
--- | Unique identifier for the Android app that is being updated; for
--- example, \"com.spiffygame\".
-edgPackageName :: Lens' EditsDetailsGet Text
-edgPackageName
-  = lens _edgPackageName
-      (\ s a -> s{_edgPackageName = a})
-
--- | Unique identifier for this edit.
-edgEditId :: Lens' EditsDetailsGet Text
-edgEditId
-  = lens _edgEditId (\ s a -> s{_edgEditId = a})
-
-instance GoogleRequest EditsDetailsGet where
-        type Rs EditsDetailsGet = AppDetails
-        type Scopes EditsDetailsGet =
-             '["https://www.googleapis.com/auth/androidpublisher"]
-        requestClient EditsDetailsGet'{..}
-          = go _edgPackageName _edgEditId (Just AltJSON)
-              androidPublisherService
-          where go
-                  = buildClient
-                      (Proxy :: Proxy EditsDetailsGetResource)
-                      mempty
diff --git a/gen/Network/Google/Resource/AndroidPublisher/Edits/Details/Patch.hs b/gen/Network/Google/Resource/AndroidPublisher/Edits/Details/Patch.hs
deleted file mode 100644
--- a/gen/Network/Google/Resource/AndroidPublisher/Edits/Details/Patch.hs
+++ /dev/null
@@ -1,120 +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.Details.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 app details for this edit. This method supports patch semantics.
---
--- /See:/ <https://developers.google.com/android-publisher Google Play Developer API Reference> for @androidpublisher.edits.details.patch@.
-module Network.Google.Resource.AndroidPublisher.Edits.Details.Patch
-    (
-    -- * REST Resource
-      EditsDetailsPatchResource
-
-    -- * Creating a Request
-    , editsDetailsPatch
-    , EditsDetailsPatch
-
-    -- * Request Lenses
-    , edpPackageName
-    , edpPayload
-    , edpEditId
-    ) where
-
-import           Network.Google.AndroidPublisher.Types
-import           Network.Google.Prelude
-
--- | A resource alias for @androidpublisher.edits.details.patch@ method which the
--- 'EditsDetailsPatch' request conforms to.
-type EditsDetailsPatchResource =
-     "androidpublisher" :>
-       "v3" :>
-         "applications" :>
-           Capture "packageName" Text :>
-             "edits" :>
-               Capture "editId" Text :>
-                 "details" :>
-                   QueryParam "alt" AltJSON :>
-                     ReqBody '[JSON] AppDetails :>
-                       Patch '[JSON] AppDetails
-
--- | Updates app details for this edit. This method supports patch semantics.
---
--- /See:/ 'editsDetailsPatch' smart constructor.
-data EditsDetailsPatch =
-  EditsDetailsPatch'
-    { _edpPackageName :: !Text
-    , _edpPayload     :: !AppDetails
-    , _edpEditId      :: !Text
-    }
-  deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'EditsDetailsPatch' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'edpPackageName'
---
--- * 'edpPayload'
---
--- * 'edpEditId'
-editsDetailsPatch
-    :: Text -- ^ 'edpPackageName'
-    -> AppDetails -- ^ 'edpPayload'
-    -> Text -- ^ 'edpEditId'
-    -> EditsDetailsPatch
-editsDetailsPatch pEdpPackageName_ pEdpPayload_ pEdpEditId_ =
-  EditsDetailsPatch'
-    { _edpPackageName = pEdpPackageName_
-    , _edpPayload = pEdpPayload_
-    , _edpEditId = pEdpEditId_
-    }
-
-
--- | Unique identifier for the Android app that is being updated; for
--- example, \"com.spiffygame\".
-edpPackageName :: Lens' EditsDetailsPatch Text
-edpPackageName
-  = lens _edpPackageName
-      (\ s a -> s{_edpPackageName = a})
-
--- | Multipart request metadata.
-edpPayload :: Lens' EditsDetailsPatch AppDetails
-edpPayload
-  = lens _edpPayload (\ s a -> s{_edpPayload = a})
-
--- | Unique identifier for this edit.
-edpEditId :: Lens' EditsDetailsPatch Text
-edpEditId
-  = lens _edpEditId (\ s a -> s{_edpEditId = a})
-
-instance GoogleRequest EditsDetailsPatch where
-        type Rs EditsDetailsPatch = AppDetails
-        type Scopes EditsDetailsPatch =
-             '["https://www.googleapis.com/auth/androidpublisher"]
-        requestClient EditsDetailsPatch'{..}
-          = go _edpPackageName _edpEditId (Just AltJSON)
-              _edpPayload
-              androidPublisherService
-          where go
-                  = buildClient
-                      (Proxy :: Proxy EditsDetailsPatchResource)
-                      mempty
diff --git a/gen/Network/Google/Resource/AndroidPublisher/Edits/Details/Update.hs b/gen/Network/Google/Resource/AndroidPublisher/Edits/Details/Update.hs
deleted file mode 100644
--- a/gen/Network/Google/Resource/AndroidPublisher/Edits/Details/Update.hs
+++ /dev/null
@@ -1,119 +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.Details.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 app details for this edit.
---
--- /See:/ <https://developers.google.com/android-publisher Google Play Developer API Reference> for @androidpublisher.edits.details.update@.
-module Network.Google.Resource.AndroidPublisher.Edits.Details.Update
-    (
-    -- * REST Resource
-      EditsDetailsUpdateResource
-
-    -- * Creating a Request
-    , editsDetailsUpdate
-    , EditsDetailsUpdate
-
-    -- * Request Lenses
-    , eduPackageName
-    , eduPayload
-    , eduEditId
-    ) where
-
-import           Network.Google.AndroidPublisher.Types
-import           Network.Google.Prelude
-
--- | A resource alias for @androidpublisher.edits.details.update@ method which the
--- 'EditsDetailsUpdate' request conforms to.
-type EditsDetailsUpdateResource =
-     "androidpublisher" :>
-       "v3" :>
-         "applications" :>
-           Capture "packageName" Text :>
-             "edits" :>
-               Capture "editId" Text :>
-                 "details" :>
-                   QueryParam "alt" AltJSON :>
-                     ReqBody '[JSON] AppDetails :> Put '[JSON] AppDetails
-
--- | Updates app details for this edit.
---
--- /See:/ 'editsDetailsUpdate' smart constructor.
-data EditsDetailsUpdate =
-  EditsDetailsUpdate'
-    { _eduPackageName :: !Text
-    , _eduPayload     :: !AppDetails
-    , _eduEditId      :: !Text
-    }
-  deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'EditsDetailsUpdate' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'eduPackageName'
---
--- * 'eduPayload'
---
--- * 'eduEditId'
-editsDetailsUpdate
-    :: Text -- ^ 'eduPackageName'
-    -> AppDetails -- ^ 'eduPayload'
-    -> Text -- ^ 'eduEditId'
-    -> EditsDetailsUpdate
-editsDetailsUpdate pEduPackageName_ pEduPayload_ pEduEditId_ =
-  EditsDetailsUpdate'
-    { _eduPackageName = pEduPackageName_
-    , _eduPayload = pEduPayload_
-    , _eduEditId = pEduEditId_
-    }
-
-
--- | Unique identifier for the Android app that is being updated; for
--- example, \"com.spiffygame\".
-eduPackageName :: Lens' EditsDetailsUpdate Text
-eduPackageName
-  = lens _eduPackageName
-      (\ s a -> s{_eduPackageName = a})
-
--- | Multipart request metadata.
-eduPayload :: Lens' EditsDetailsUpdate AppDetails
-eduPayload
-  = lens _eduPayload (\ s a -> s{_eduPayload = a})
-
--- | Unique identifier for this edit.
-eduEditId :: Lens' EditsDetailsUpdate Text
-eduEditId
-  = lens _eduEditId (\ s a -> s{_eduEditId = a})
-
-instance GoogleRequest EditsDetailsUpdate where
-        type Rs EditsDetailsUpdate = AppDetails
-        type Scopes EditsDetailsUpdate =
-             '["https://www.googleapis.com/auth/androidpublisher"]
-        requestClient EditsDetailsUpdate'{..}
-          = go _eduPackageName _eduEditId (Just AltJSON)
-              _eduPayload
-              androidPublisherService
-          where go
-                  = buildClient
-                      (Proxy :: Proxy EditsDetailsUpdateResource)
-                      mempty
diff --git a/gen/Network/Google/Resource/AndroidPublisher/Edits/ExpansionFiles/Get.hs b/gen/Network/Google/Resource/AndroidPublisher/Edits/ExpansionFiles/Get.hs
deleted file mode 100644
--- a/gen/Network/Google/Resource/AndroidPublisher/Edits/ExpansionFiles/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.ExpansionFiles.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 Expansion File configuration for the APK specified.
---
--- /See:/ <https://developers.google.com/android-publisher Google Play Developer API Reference> for @androidpublisher.edits.expansionfiles.get@.
-module Network.Google.Resource.AndroidPublisher.Edits.ExpansionFiles.Get
-    (
-    -- * REST Resource
-      EditsExpansionFilesGetResource
-
-    -- * Creating a Request
-    , editsExpansionFilesGet
-    , EditsExpansionFilesGet
-
-    -- * Request Lenses
-    , eefgPackageName
-    , eefgAPKVersionCode
-    , eefgExpansionFileType
-    , eefgEditId
-    ) where
-
-import           Network.Google.AndroidPublisher.Types
-import           Network.Google.Prelude
-
--- | A resource alias for @androidpublisher.edits.expansionfiles.get@ method which the
--- 'EditsExpansionFilesGet' request conforms to.
-type EditsExpansionFilesGetResource =
-     "androidpublisher" :>
-       "v3" :>
-         "applications" :>
-           Capture "packageName" Text :>
-             "edits" :>
-               Capture "editId" Text :>
-                 "apks" :>
-                   Capture "apkVersionCode" (Textual Int32) :>
-                     "expansionFiles" :>
-                       Capture "expansionFileType"
-                         EditsExpansionFilesGetExpansionFileType
-                         :>
-                         QueryParam "alt" AltJSON :> Get '[JSON] ExpansionFile
-
--- | Fetches the Expansion File configuration for the APK specified.
---
--- /See:/ 'editsExpansionFilesGet' smart constructor.
-data EditsExpansionFilesGet =
-  EditsExpansionFilesGet'
-    { _eefgPackageName       :: !Text
-    , _eefgAPKVersionCode    :: !(Textual Int32)
-    , _eefgExpansionFileType :: !EditsExpansionFilesGetExpansionFileType
-    , _eefgEditId            :: !Text
-    }
-  deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'EditsExpansionFilesGet' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'eefgPackageName'
---
--- * 'eefgAPKVersionCode'
---
--- * 'eefgExpansionFileType'
---
--- * 'eefgEditId'
-editsExpansionFilesGet
-    :: Text -- ^ 'eefgPackageName'
-    -> Int32 -- ^ 'eefgAPKVersionCode'
-    -> EditsExpansionFilesGetExpansionFileType -- ^ 'eefgExpansionFileType'
-    -> Text -- ^ 'eefgEditId'
-    -> EditsExpansionFilesGet
-editsExpansionFilesGet pEefgPackageName_ pEefgAPKVersionCode_ pEefgExpansionFileType_ pEefgEditId_ =
-  EditsExpansionFilesGet'
-    { _eefgPackageName = pEefgPackageName_
-    , _eefgAPKVersionCode = _Coerce # pEefgAPKVersionCode_
-    , _eefgExpansionFileType = pEefgExpansionFileType_
-    , _eefgEditId = pEefgEditId_
-    }
-
-
--- | Unique identifier for the Android app that is being updated; for
--- example, \"com.spiffygame\".
-eefgPackageName :: Lens' EditsExpansionFilesGet Text
-eefgPackageName
-  = lens _eefgPackageName
-      (\ s a -> s{_eefgPackageName = a})
-
--- | The version code of the APK whose Expansion File configuration is being
--- read or modified.
-eefgAPKVersionCode :: Lens' EditsExpansionFilesGet Int32
-eefgAPKVersionCode
-  = lens _eefgAPKVersionCode
-      (\ s a -> s{_eefgAPKVersionCode = a})
-      . _Coerce
-
-eefgExpansionFileType :: Lens' EditsExpansionFilesGet EditsExpansionFilesGetExpansionFileType
-eefgExpansionFileType
-  = lens _eefgExpansionFileType
-      (\ s a -> s{_eefgExpansionFileType = a})
-
--- | Unique identifier for this edit.
-eefgEditId :: Lens' EditsExpansionFilesGet Text
-eefgEditId
-  = lens _eefgEditId (\ s a -> s{_eefgEditId = a})
-
-instance GoogleRequest EditsExpansionFilesGet where
-        type Rs EditsExpansionFilesGet = ExpansionFile
-        type Scopes EditsExpansionFilesGet =
-             '["https://www.googleapis.com/auth/androidpublisher"]
-        requestClient EditsExpansionFilesGet'{..}
-          = go _eefgPackageName _eefgEditId _eefgAPKVersionCode
-              _eefgExpansionFileType
-              (Just AltJSON)
-              androidPublisherService
-          where go
-                  = buildClient
-                      (Proxy :: Proxy EditsExpansionFilesGetResource)
-                      mempty
diff --git a/gen/Network/Google/Resource/AndroidPublisher/Edits/ExpansionFiles/Patch.hs b/gen/Network/Google/Resource/AndroidPublisher/Edits/ExpansionFiles/Patch.hs
deleted file mode 100644
--- a/gen/Network/Google/Resource/AndroidPublisher/Edits/ExpansionFiles/Patch.hs
+++ /dev/null
@@ -1,156 +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.ExpansionFiles.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 the APK\'s Expansion File configuration to reference another
--- APK\'s Expansion Files. To add a new Expansion File use the Upload
--- method. This method supports patch semantics.
---
--- /See:/ <https://developers.google.com/android-publisher Google Play Developer API Reference> for @androidpublisher.edits.expansionfiles.patch@.
-module Network.Google.Resource.AndroidPublisher.Edits.ExpansionFiles.Patch
-    (
-    -- * REST Resource
-      EditsExpansionFilesPatchResource
-
-    -- * Creating a Request
-    , editsExpansionFilesPatch
-    , EditsExpansionFilesPatch
-
-    -- * Request Lenses
-    , eefpPackageName
-    , eefpAPKVersionCode
-    , eefpPayload
-    , eefpExpansionFileType
-    , eefpEditId
-    ) where
-
-import           Network.Google.AndroidPublisher.Types
-import           Network.Google.Prelude
-
--- | A resource alias for @androidpublisher.edits.expansionfiles.patch@ method which the
--- 'EditsExpansionFilesPatch' request conforms to.
-type EditsExpansionFilesPatchResource =
-     "androidpublisher" :>
-       "v3" :>
-         "applications" :>
-           Capture "packageName" Text :>
-             "edits" :>
-               Capture "editId" Text :>
-                 "apks" :>
-                   Capture "apkVersionCode" (Textual Int32) :>
-                     "expansionFiles" :>
-                       Capture "expansionFileType"
-                         EditsExpansionFilesPatchExpansionFileType
-                         :>
-                         QueryParam "alt" AltJSON :>
-                           ReqBody '[JSON] ExpansionFile :>
-                             Patch '[JSON] ExpansionFile
-
--- | Updates the APK\'s Expansion File configuration to reference another
--- APK\'s Expansion Files. To add a new Expansion File use the Upload
--- method. This method supports patch semantics.
---
--- /See:/ 'editsExpansionFilesPatch' smart constructor.
-data EditsExpansionFilesPatch =
-  EditsExpansionFilesPatch'
-    { _eefpPackageName       :: !Text
-    , _eefpAPKVersionCode    :: !(Textual Int32)
-    , _eefpPayload           :: !ExpansionFile
-    , _eefpExpansionFileType :: !EditsExpansionFilesPatchExpansionFileType
-    , _eefpEditId            :: !Text
-    }
-  deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'EditsExpansionFilesPatch' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'eefpPackageName'
---
--- * 'eefpAPKVersionCode'
---
--- * 'eefpPayload'
---
--- * 'eefpExpansionFileType'
---
--- * 'eefpEditId'
-editsExpansionFilesPatch
-    :: Text -- ^ 'eefpPackageName'
-    -> Int32 -- ^ 'eefpAPKVersionCode'
-    -> ExpansionFile -- ^ 'eefpPayload'
-    -> EditsExpansionFilesPatchExpansionFileType -- ^ 'eefpExpansionFileType'
-    -> Text -- ^ 'eefpEditId'
-    -> EditsExpansionFilesPatch
-editsExpansionFilesPatch pEefpPackageName_ pEefpAPKVersionCode_ pEefpPayload_ pEefpExpansionFileType_ pEefpEditId_ =
-  EditsExpansionFilesPatch'
-    { _eefpPackageName = pEefpPackageName_
-    , _eefpAPKVersionCode = _Coerce # pEefpAPKVersionCode_
-    , _eefpPayload = pEefpPayload_
-    , _eefpExpansionFileType = pEefpExpansionFileType_
-    , _eefpEditId = pEefpEditId_
-    }
-
-
--- | Unique identifier for the Android app that is being updated; for
--- example, \"com.spiffygame\".
-eefpPackageName :: Lens' EditsExpansionFilesPatch Text
-eefpPackageName
-  = lens _eefpPackageName
-      (\ s a -> s{_eefpPackageName = a})
-
--- | The version code of the APK whose Expansion File configuration is being
--- read or modified.
-eefpAPKVersionCode :: Lens' EditsExpansionFilesPatch Int32
-eefpAPKVersionCode
-  = lens _eefpAPKVersionCode
-      (\ s a -> s{_eefpAPKVersionCode = a})
-      . _Coerce
-
--- | Multipart request metadata.
-eefpPayload :: Lens' EditsExpansionFilesPatch ExpansionFile
-eefpPayload
-  = lens _eefpPayload (\ s a -> s{_eefpPayload = a})
-
-eefpExpansionFileType :: Lens' EditsExpansionFilesPatch EditsExpansionFilesPatchExpansionFileType
-eefpExpansionFileType
-  = lens _eefpExpansionFileType
-      (\ s a -> s{_eefpExpansionFileType = a})
-
--- | Unique identifier for this edit.
-eefpEditId :: Lens' EditsExpansionFilesPatch Text
-eefpEditId
-  = lens _eefpEditId (\ s a -> s{_eefpEditId = a})
-
-instance GoogleRequest EditsExpansionFilesPatch where
-        type Rs EditsExpansionFilesPatch = ExpansionFile
-        type Scopes EditsExpansionFilesPatch =
-             '["https://www.googleapis.com/auth/androidpublisher"]
-        requestClient EditsExpansionFilesPatch'{..}
-          = go _eefpPackageName _eefpEditId _eefpAPKVersionCode
-              _eefpExpansionFileType
-              (Just AltJSON)
-              _eefpPayload
-              androidPublisherService
-          where go
-                  = buildClient
-                      (Proxy :: Proxy EditsExpansionFilesPatchResource)
-                      mempty
diff --git a/gen/Network/Google/Resource/AndroidPublisher/Edits/ExpansionFiles/Update.hs b/gen/Network/Google/Resource/AndroidPublisher/Edits/ExpansionFiles/Update.hs
deleted file mode 100644
--- a/gen/Network/Google/Resource/AndroidPublisher/Edits/ExpansionFiles/Update.hs
+++ /dev/null
@@ -1,157 +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.ExpansionFiles.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 the APK\'s Expansion File configuration to reference another
--- APK\'s Expansion Files. To add a new Expansion File use the Upload
--- method.
---
--- /See:/ <https://developers.google.com/android-publisher Google Play Developer API Reference> for @androidpublisher.edits.expansionfiles.update@.
-module Network.Google.Resource.AndroidPublisher.Edits.ExpansionFiles.Update
-    (
-    -- * REST Resource
-      EditsExpansionFilesUpdateResource
-
-    -- * Creating a Request
-    , editsExpansionFilesUpdate
-    , EditsExpansionFilesUpdate
-
-    -- * Request Lenses
-    , eefuPackageName
-    , eefuAPKVersionCode
-    , eefuPayload
-    , eefuExpansionFileType
-    , eefuEditId
-    ) where
-
-import           Network.Google.AndroidPublisher.Types
-import           Network.Google.Prelude
-
--- | A resource alias for @androidpublisher.edits.expansionfiles.update@ method which the
--- 'EditsExpansionFilesUpdate' request conforms to.
-type EditsExpansionFilesUpdateResource =
-     "androidpublisher" :>
-       "v3" :>
-         "applications" :>
-           Capture "packageName" Text :>
-             "edits" :>
-               Capture "editId" Text :>
-                 "apks" :>
-                   Capture "apkVersionCode" (Textual Int32) :>
-                     "expansionFiles" :>
-                       Capture "expansionFileType"
-                         EditsExpansionFilesUpdateExpansionFileType
-                         :>
-                         QueryParam "alt" AltJSON :>
-                           ReqBody '[JSON] ExpansionFile :>
-                             Put '[JSON] ExpansionFile
-
--- | Updates the APK\'s Expansion File configuration to reference another
--- APK\'s Expansion Files. To add a new Expansion File use the Upload
--- method.
---
--- /See:/ 'editsExpansionFilesUpdate' smart constructor.
-data EditsExpansionFilesUpdate =
-  EditsExpansionFilesUpdate'
-    { _eefuPackageName       :: !Text
-    , _eefuAPKVersionCode    :: !(Textual Int32)
-    , _eefuPayload           :: !ExpansionFile
-    , _eefuExpansionFileType :: !EditsExpansionFilesUpdateExpansionFileType
-    , _eefuEditId            :: !Text
-    }
-  deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'EditsExpansionFilesUpdate' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'eefuPackageName'
---
--- * 'eefuAPKVersionCode'
---
--- * 'eefuPayload'
---
--- * 'eefuExpansionFileType'
---
--- * 'eefuEditId'
-editsExpansionFilesUpdate
-    :: Text -- ^ 'eefuPackageName'
-    -> Int32 -- ^ 'eefuAPKVersionCode'
-    -> ExpansionFile -- ^ 'eefuPayload'
-    -> EditsExpansionFilesUpdateExpansionFileType -- ^ 'eefuExpansionFileType'
-    -> Text -- ^ 'eefuEditId'
-    -> EditsExpansionFilesUpdate
-editsExpansionFilesUpdate pEefuPackageName_ pEefuAPKVersionCode_ pEefuPayload_ pEefuExpansionFileType_ pEefuEditId_ =
-  EditsExpansionFilesUpdate'
-    { _eefuPackageName = pEefuPackageName_
-    , _eefuAPKVersionCode = _Coerce # pEefuAPKVersionCode_
-    , _eefuPayload = pEefuPayload_
-    , _eefuExpansionFileType = pEefuExpansionFileType_
-    , _eefuEditId = pEefuEditId_
-    }
-
-
--- | Unique identifier for the Android app that is being updated; for
--- example, \"com.spiffygame\".
-eefuPackageName :: Lens' EditsExpansionFilesUpdate Text
-eefuPackageName
-  = lens _eefuPackageName
-      (\ s a -> s{_eefuPackageName = a})
-
--- | The version code of the APK whose Expansion File configuration is being
--- read or modified.
-eefuAPKVersionCode :: Lens' EditsExpansionFilesUpdate Int32
-eefuAPKVersionCode
-  = lens _eefuAPKVersionCode
-      (\ s a -> s{_eefuAPKVersionCode = a})
-      . _Coerce
-
--- | Multipart request metadata.
-eefuPayload :: Lens' EditsExpansionFilesUpdate ExpansionFile
-eefuPayload
-  = lens _eefuPayload (\ s a -> s{_eefuPayload = a})
-
-eefuExpansionFileType :: Lens' EditsExpansionFilesUpdate EditsExpansionFilesUpdateExpansionFileType
-eefuExpansionFileType
-  = lens _eefuExpansionFileType
-      (\ s a -> s{_eefuExpansionFileType = a})
-
--- | Unique identifier for this edit.
-eefuEditId :: Lens' EditsExpansionFilesUpdate Text
-eefuEditId
-  = lens _eefuEditId (\ s a -> s{_eefuEditId = a})
-
-instance GoogleRequest EditsExpansionFilesUpdate
-         where
-        type Rs EditsExpansionFilesUpdate = ExpansionFile
-        type Scopes EditsExpansionFilesUpdate =
-             '["https://www.googleapis.com/auth/androidpublisher"]
-        requestClient EditsExpansionFilesUpdate'{..}
-          = go _eefuPackageName _eefuEditId _eefuAPKVersionCode
-              _eefuExpansionFileType
-              (Just AltJSON)
-              _eefuPayload
-              androidPublisherService
-          where go
-                  = buildClient
-                      (Proxy :: Proxy EditsExpansionFilesUpdateResource)
-                      mempty
diff --git a/gen/Network/Google/Resource/AndroidPublisher/Edits/ExpansionFiles/Upload.hs b/gen/Network/Google/Resource/AndroidPublisher/Edits/ExpansionFiles/Upload.hs
deleted file mode 100644
--- a/gen/Network/Google/Resource/AndroidPublisher/Edits/ExpansionFiles/Upload.hs
+++ /dev/null
@@ -1,177 +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.ExpansionFiles.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 and attaches a new Expansion File to the APK specified.
---
--- /See:/ <https://developers.google.com/android-publisher Google Play Developer API Reference> for @androidpublisher.edits.expansionfiles.upload@.
-module Network.Google.Resource.AndroidPublisher.Edits.ExpansionFiles.Upload
-    (
-    -- * REST Resource
-      EditsExpansionFilesUploadResource
-
-    -- * Creating a Request
-    , editsExpansionFilesUpload
-    , EditsExpansionFilesUpload
-
-    -- * Request Lenses
-    , ePackageName
-    , eAPKVersionCode
-    , eExpansionFileType
-    , eEditId
-    ) where
-
-import           Network.Google.AndroidPublisher.Types
-import           Network.Google.Prelude
-
--- | A resource alias for @androidpublisher.edits.expansionfiles.upload@ method which the
--- 'EditsExpansionFilesUpload' request conforms to.
-type EditsExpansionFilesUploadResource =
-     "androidpublisher" :>
-       "v3" :>
-         "applications" :>
-           Capture "packageName" Text :>
-             "edits" :>
-               Capture "editId" Text :>
-                 "apks" :>
-                   Capture "apkVersionCode" (Textual Int32) :>
-                     "expansionFiles" :>
-                       Capture "expansionFileType"
-                         EditsExpansionFilesUploadExpansionFileType
-                         :>
-                         QueryParam "alt" AltJSON :>
-                           Post '[JSON] ExpansionFilesUploadResponse
-       :<|>
-       "upload" :>
-         "androidpublisher" :>
-           "v3" :>
-             "applications" :>
-               Capture "packageName" Text :>
-                 "edits" :>
-                   Capture "editId" Text :>
-                     "apks" :>
-                       Capture "apkVersionCode" (Textual Int32) :>
-                         "expansionFiles" :>
-                           Capture "expansionFileType"
-                             EditsExpansionFilesUploadExpansionFileType
-                             :>
-                             QueryParam "alt" AltJSON :>
-                               QueryParam "uploadType" AltMedia :>
-                                 AltMedia :>
-                                   Post '[JSON] ExpansionFilesUploadResponse
-
--- | Uploads and attaches a new Expansion File to the APK specified.
---
--- /See:/ 'editsExpansionFilesUpload' smart constructor.
-data EditsExpansionFilesUpload =
-  EditsExpansionFilesUpload'
-    { _ePackageName       :: !Text
-    , _eAPKVersionCode    :: !(Textual Int32)
-    , _eExpansionFileType :: !EditsExpansionFilesUploadExpansionFileType
-    , _eEditId            :: !Text
-    }
-  deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'EditsExpansionFilesUpload' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'ePackageName'
---
--- * 'eAPKVersionCode'
---
--- * 'eExpansionFileType'
---
--- * 'eEditId'
-editsExpansionFilesUpload
-    :: Text -- ^ 'ePackageName'
-    -> Int32 -- ^ 'eAPKVersionCode'
-    -> EditsExpansionFilesUploadExpansionFileType -- ^ 'eExpansionFileType'
-    -> Text -- ^ 'eEditId'
-    -> EditsExpansionFilesUpload
-editsExpansionFilesUpload pEPackageName_ pEAPKVersionCode_ pEExpansionFileType_ pEEditId_ =
-  EditsExpansionFilesUpload'
-    { _ePackageName = pEPackageName_
-    , _eAPKVersionCode = _Coerce # pEAPKVersionCode_
-    , _eExpansionFileType = pEExpansionFileType_
-    , _eEditId = pEEditId_
-    }
-
-
--- | Unique identifier for the Android app that is being updated; for
--- example, \"com.spiffygame\".
-ePackageName :: Lens' EditsExpansionFilesUpload Text
-ePackageName
-  = lens _ePackageName (\ s a -> s{_ePackageName = a})
-
--- | The version code of the APK whose Expansion File configuration is being
--- read or modified.
-eAPKVersionCode :: Lens' EditsExpansionFilesUpload Int32
-eAPKVersionCode
-  = lens _eAPKVersionCode
-      (\ s a -> s{_eAPKVersionCode = a})
-      . _Coerce
-
-eExpansionFileType :: Lens' EditsExpansionFilesUpload EditsExpansionFilesUploadExpansionFileType
-eExpansionFileType
-  = lens _eExpansionFileType
-      (\ s a -> s{_eExpansionFileType = a})
-
--- | Unique identifier for this edit.
-eEditId :: Lens' EditsExpansionFilesUpload Text
-eEditId = lens _eEditId (\ s a -> s{_eEditId = a})
-
-instance GoogleRequest EditsExpansionFilesUpload
-         where
-        type Rs EditsExpansionFilesUpload =
-             ExpansionFilesUploadResponse
-        type Scopes EditsExpansionFilesUpload =
-             '["https://www.googleapis.com/auth/androidpublisher"]
-        requestClient EditsExpansionFilesUpload'{..}
-          = go _ePackageName _eEditId _eAPKVersionCode
-              _eExpansionFileType
-              (Just AltJSON)
-              androidPublisherService
-          where go :<|> _
-                  = buildClient
-                      (Proxy :: Proxy EditsExpansionFilesUploadResource)
-                      mempty
-
-instance GoogleRequest
-           (MediaUpload EditsExpansionFilesUpload)
-         where
-        type Rs (MediaUpload EditsExpansionFilesUpload) =
-             ExpansionFilesUploadResponse
-        type Scopes (MediaUpload EditsExpansionFilesUpload) =
-             Scopes EditsExpansionFilesUpload
-        requestClient
-          (MediaUpload EditsExpansionFilesUpload'{..} body)
-          = go _ePackageName _eEditId _eAPKVersionCode
-              _eExpansionFileType
-              (Just AltJSON)
-              (Just AltMedia)
-              body
-              androidPublisherService
-          where _ :<|> go
-                  = buildClient
-                      (Proxy :: Proxy EditsExpansionFilesUploadResource)
-                      mempty
diff --git a/gen/Network/Google/Resource/AndroidPublisher/Edits/Get.hs b/gen/Network/Google/Resource/AndroidPublisher/Edits/Get.hs
deleted file mode 100644
--- a/gen/Network/Google/Resource/AndroidPublisher/Edits/Get.hs
+++ /dev/null
@@ -1,102 +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.Get
--- Copyright   : (c) 2015-2016 Brendan Hay
--- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
--- Stability   : auto-generated
--- Portability : non-portable (GHC extensions)
---
--- Returns information about the edit specified. Calls will fail if the
--- edit is no long active (e.g. has been deleted, superseded or expired).
---
--- /See:/ <https://developers.google.com/android-publisher Google Play Developer API Reference> for @androidpublisher.edits.get@.
-module Network.Google.Resource.AndroidPublisher.Edits.Get
-    (
-    -- * REST Resource
-      EditsGetResource
-
-    -- * Creating a Request
-    , editsGet
-    , EditsGet
-
-    -- * Request Lenses
-    , egPackageName
-    , egEditId
-    ) where
-
-import           Network.Google.AndroidPublisher.Types
-import           Network.Google.Prelude
-
--- | A resource alias for @androidpublisher.edits.get@ method which the
--- 'EditsGet' request conforms to.
-type EditsGetResource =
-     "androidpublisher" :>
-       "v3" :>
-         "applications" :>
-           Capture "packageName" Text :>
-             "edits" :>
-               Capture "editId" Text :>
-                 QueryParam "alt" AltJSON :> Get '[JSON] AppEdit
-
--- | Returns information about the edit specified. Calls will fail if the
--- edit is no long active (e.g. has been deleted, superseded or expired).
---
--- /See:/ 'editsGet' smart constructor.
-data EditsGet =
-  EditsGet'
-    { _egPackageName :: !Text
-    , _egEditId      :: !Text
-    }
-  deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'EditsGet' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'egPackageName'
---
--- * 'egEditId'
-editsGet
-    :: Text -- ^ 'egPackageName'
-    -> Text -- ^ 'egEditId'
-    -> EditsGet
-editsGet pEgPackageName_ pEgEditId_ =
-  EditsGet' {_egPackageName = pEgPackageName_, _egEditId = pEgEditId_}
-
-
--- | Unique identifier for the Android app that is being updated; for
--- example, \"com.spiffygame\".
-egPackageName :: Lens' EditsGet Text
-egPackageName
-  = lens _egPackageName
-      (\ s a -> s{_egPackageName = a})
-
--- | Unique identifier for this edit.
-egEditId :: Lens' EditsGet Text
-egEditId = lens _egEditId (\ s a -> s{_egEditId = a})
-
-instance GoogleRequest EditsGet where
-        type Rs EditsGet = AppEdit
-        type Scopes EditsGet =
-             '["https://www.googleapis.com/auth/androidpublisher"]
-        requestClient EditsGet'{..}
-          = go _egPackageName _egEditId (Just AltJSON)
-              androidPublisherService
-          where go
-                  = buildClient (Proxy :: Proxy EditsGetResource)
-                      mempty
diff --git a/gen/Network/Google/Resource/AndroidPublisher/Edits/Images/Delete.hs b/gen/Network/Google/Resource/AndroidPublisher/Edits/Images/Delete.hs
deleted file mode 100644
--- a/gen/Network/Google/Resource/AndroidPublisher/Edits/Images/Delete.hs
+++ /dev/null
@@ -1,147 +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.Images.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 image (specified by id) from the edit.
---
--- /See:/ <https://developers.google.com/android-publisher Google Play Developer API Reference> for @androidpublisher.edits.images.delete@.
-module Network.Google.Resource.AndroidPublisher.Edits.Images.Delete
-    (
-    -- * REST Resource
-      EditsImagesDeleteResource
-
-    -- * Creating a Request
-    , editsImagesDelete
-    , EditsImagesDelete
-
-    -- * Request Lenses
-    , eidPackageName
-    , eidImageType
-    , eidImageId
-    , eidLanguage
-    , eidEditId
-    ) where
-
-import           Network.Google.AndroidPublisher.Types
-import           Network.Google.Prelude
-
--- | A resource alias for @androidpublisher.edits.images.delete@ method which the
--- 'EditsImagesDelete' request conforms to.
-type EditsImagesDeleteResource =
-     "androidpublisher" :>
-       "v3" :>
-         "applications" :>
-           Capture "packageName" Text :>
-             "edits" :>
-               Capture "editId" Text :>
-                 "listings" :>
-                   Capture "language" Text :>
-                     Capture "imageType" EditsImagesDeleteImageType :>
-                       Capture "imageId" Text :>
-                         QueryParam "alt" AltJSON :> Delete '[JSON] ()
-
--- | Deletes the image (specified by id) from the edit.
---
--- /See:/ 'editsImagesDelete' smart constructor.
-data EditsImagesDelete =
-  EditsImagesDelete'
-    { _eidPackageName :: !Text
-    , _eidImageType   :: !EditsImagesDeleteImageType
-    , _eidImageId     :: !Text
-    , _eidLanguage    :: !Text
-    , _eidEditId      :: !Text
-    }
-  deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'EditsImagesDelete' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'eidPackageName'
---
--- * 'eidImageType'
---
--- * 'eidImageId'
---
--- * 'eidLanguage'
---
--- * 'eidEditId'
-editsImagesDelete
-    :: Text -- ^ 'eidPackageName'
-    -> EditsImagesDeleteImageType -- ^ 'eidImageType'
-    -> Text -- ^ 'eidImageId'
-    -> Text -- ^ 'eidLanguage'
-    -> Text -- ^ 'eidEditId'
-    -> EditsImagesDelete
-editsImagesDelete pEidPackageName_ pEidImageType_ pEidImageId_ pEidLanguage_ pEidEditId_ =
-  EditsImagesDelete'
-    { _eidPackageName = pEidPackageName_
-    , _eidImageType = pEidImageType_
-    , _eidImageId = pEidImageId_
-    , _eidLanguage = pEidLanguage_
-    , _eidEditId = pEidEditId_
-    }
-
-
--- | Unique identifier for the Android app that is being updated; for
--- example, \"com.spiffygame\".
-eidPackageName :: Lens' EditsImagesDelete Text
-eidPackageName
-  = lens _eidPackageName
-      (\ s a -> s{_eidPackageName = a})
-
-eidImageType :: Lens' EditsImagesDelete EditsImagesDeleteImageType
-eidImageType
-  = lens _eidImageType (\ s a -> s{_eidImageType = a})
-
--- | Unique identifier an image within the set of images attached to this
--- edit.
-eidImageId :: Lens' EditsImagesDelete Text
-eidImageId
-  = lens _eidImageId (\ s a -> s{_eidImageId = a})
-
--- | The language code (a BCP-47 language tag) of the localized listing whose
--- images are to read or modified. For example, to select Austrian German,
--- pass \"de-AT\".
-eidLanguage :: Lens' EditsImagesDelete Text
-eidLanguage
-  = lens _eidLanguage (\ s a -> s{_eidLanguage = a})
-
--- | Unique identifier for this edit.
-eidEditId :: Lens' EditsImagesDelete Text
-eidEditId
-  = lens _eidEditId (\ s a -> s{_eidEditId = a})
-
-instance GoogleRequest EditsImagesDelete where
-        type Rs EditsImagesDelete = ()
-        type Scopes EditsImagesDelete =
-             '["https://www.googleapis.com/auth/androidpublisher"]
-        requestClient EditsImagesDelete'{..}
-          = go _eidPackageName _eidEditId _eidLanguage
-              _eidImageType
-              _eidImageId
-              (Just AltJSON)
-              androidPublisherService
-          where go
-                  = buildClient
-                      (Proxy :: Proxy EditsImagesDeleteResource)
-                      mempty
diff --git a/gen/Network/Google/Resource/AndroidPublisher/Edits/Images/Deleteall.hs b/gen/Network/Google/Resource/AndroidPublisher/Edits/Images/Deleteall.hs
deleted file mode 100644
--- a/gen/Network/Google/Resource/AndroidPublisher/Edits/Images/Deleteall.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.Edits.Images.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 images for the specified language and image type.
---
--- /See:/ <https://developers.google.com/android-publisher Google Play Developer API Reference> for @androidpublisher.edits.images.deleteall@.
-module Network.Google.Resource.AndroidPublisher.Edits.Images.Deleteall
-    (
-    -- * REST Resource
-      EditsImagesDeleteallResource
-
-    -- * Creating a Request
-    , editsImagesDeleteall
-    , EditsImagesDeleteall
-
-    -- * Request Lenses
-    , ediPackageName
-    , ediImageType
-    , ediLanguage
-    , ediEditId
-    ) where
-
-import           Network.Google.AndroidPublisher.Types
-import           Network.Google.Prelude
-
--- | A resource alias for @androidpublisher.edits.images.deleteall@ method which the
--- 'EditsImagesDeleteall' request conforms to.
-type EditsImagesDeleteallResource =
-     "androidpublisher" :>
-       "v3" :>
-         "applications" :>
-           Capture "packageName" Text :>
-             "edits" :>
-               Capture "editId" Text :>
-                 "listings" :>
-                   Capture "language" Text :>
-                     Capture "imageType" EditsImagesDeleteallImageType :>
-                       QueryParam "alt" AltJSON :>
-                         Delete '[JSON] ImagesDeleteAllResponse
-
--- | Deletes all images for the specified language and image type.
---
--- /See:/ 'editsImagesDeleteall' smart constructor.
-data EditsImagesDeleteall =
-  EditsImagesDeleteall'
-    { _ediPackageName :: !Text
-    , _ediImageType   :: !EditsImagesDeleteallImageType
-    , _ediLanguage    :: !Text
-    , _ediEditId      :: !Text
-    }
-  deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'EditsImagesDeleteall' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'ediPackageName'
---
--- * 'ediImageType'
---
--- * 'ediLanguage'
---
--- * 'ediEditId'
-editsImagesDeleteall
-    :: Text -- ^ 'ediPackageName'
-    -> EditsImagesDeleteallImageType -- ^ 'ediImageType'
-    -> Text -- ^ 'ediLanguage'
-    -> Text -- ^ 'ediEditId'
-    -> EditsImagesDeleteall
-editsImagesDeleteall pEdiPackageName_ pEdiImageType_ pEdiLanguage_ pEdiEditId_ =
-  EditsImagesDeleteall'
-    { _ediPackageName = pEdiPackageName_
-    , _ediImageType = pEdiImageType_
-    , _ediLanguage = pEdiLanguage_
-    , _ediEditId = pEdiEditId_
-    }
-
-
--- | Unique identifier for the Android app that is being updated; for
--- example, \"com.spiffygame\".
-ediPackageName :: Lens' EditsImagesDeleteall Text
-ediPackageName
-  = lens _ediPackageName
-      (\ s a -> s{_ediPackageName = a})
-
-ediImageType :: Lens' EditsImagesDeleteall EditsImagesDeleteallImageType
-ediImageType
-  = lens _ediImageType (\ s a -> s{_ediImageType = a})
-
--- | The language code (a BCP-47 language tag) of the localized listing whose
--- images are to read or modified. For example, to select Austrian German,
--- pass \"de-AT\".
-ediLanguage :: Lens' EditsImagesDeleteall Text
-ediLanguage
-  = lens _ediLanguage (\ s a -> s{_ediLanguage = a})
-
--- | Unique identifier for this edit.
-ediEditId :: Lens' EditsImagesDeleteall Text
-ediEditId
-  = lens _ediEditId (\ s a -> s{_ediEditId = a})
-
-instance GoogleRequest EditsImagesDeleteall where
-        type Rs EditsImagesDeleteall =
-             ImagesDeleteAllResponse
-        type Scopes EditsImagesDeleteall =
-             '["https://www.googleapis.com/auth/androidpublisher"]
-        requestClient EditsImagesDeleteall'{..}
-          = go _ediPackageName _ediEditId _ediLanguage
-              _ediImageType
-              (Just AltJSON)
-              androidPublisherService
-          where go
-                  = buildClient
-                      (Proxy :: Proxy EditsImagesDeleteallResource)
-                      mempty
diff --git a/gen/Network/Google/Resource/AndroidPublisher/Edits/Images/List.hs b/gen/Network/Google/Resource/AndroidPublisher/Edits/Images/List.hs
deleted file mode 100644
--- a/gen/Network/Google/Resource/AndroidPublisher/Edits/Images/List.hs
+++ /dev/null
@@ -1,134 +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.Images.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 images for the specified language and image type.
---
--- /See:/ <https://developers.google.com/android-publisher Google Play Developer API Reference> for @androidpublisher.edits.images.list@.
-module Network.Google.Resource.AndroidPublisher.Edits.Images.List
-    (
-    -- * REST Resource
-      EditsImagesListResource
-
-    -- * Creating a Request
-    , editsImagesList
-    , EditsImagesList
-
-    -- * Request Lenses
-    , eilPackageName
-    , eilImageType
-    , eilLanguage
-    , eilEditId
-    ) where
-
-import           Network.Google.AndroidPublisher.Types
-import           Network.Google.Prelude
-
--- | A resource alias for @androidpublisher.edits.images.list@ method which the
--- 'EditsImagesList' request conforms to.
-type EditsImagesListResource =
-     "androidpublisher" :>
-       "v3" :>
-         "applications" :>
-           Capture "packageName" Text :>
-             "edits" :>
-               Capture "editId" Text :>
-                 "listings" :>
-                   Capture "language" Text :>
-                     Capture "imageType" EditsImagesListImageType :>
-                       QueryParam "alt" AltJSON :>
-                         Get '[JSON] ImagesListResponse
-
--- | Lists all images for the specified language and image type.
---
--- /See:/ 'editsImagesList' smart constructor.
-data EditsImagesList =
-  EditsImagesList'
-    { _eilPackageName :: !Text
-    , _eilImageType   :: !EditsImagesListImageType
-    , _eilLanguage    :: !Text
-    , _eilEditId      :: !Text
-    }
-  deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'EditsImagesList' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'eilPackageName'
---
--- * 'eilImageType'
---
--- * 'eilLanguage'
---
--- * 'eilEditId'
-editsImagesList
-    :: Text -- ^ 'eilPackageName'
-    -> EditsImagesListImageType -- ^ 'eilImageType'
-    -> Text -- ^ 'eilLanguage'
-    -> Text -- ^ 'eilEditId'
-    -> EditsImagesList
-editsImagesList pEilPackageName_ pEilImageType_ pEilLanguage_ pEilEditId_ =
-  EditsImagesList'
-    { _eilPackageName = pEilPackageName_
-    , _eilImageType = pEilImageType_
-    , _eilLanguage = pEilLanguage_
-    , _eilEditId = pEilEditId_
-    }
-
-
--- | Unique identifier for the Android app that is being updated; for
--- example, \"com.spiffygame\".
-eilPackageName :: Lens' EditsImagesList Text
-eilPackageName
-  = lens _eilPackageName
-      (\ s a -> s{_eilPackageName = a})
-
-eilImageType :: Lens' EditsImagesList EditsImagesListImageType
-eilImageType
-  = lens _eilImageType (\ s a -> s{_eilImageType = a})
-
--- | The language code (a BCP-47 language tag) of the localized listing whose
--- images are to read or modified. For example, to select Austrian German,
--- pass \"de-AT\".
-eilLanguage :: Lens' EditsImagesList Text
-eilLanguage
-  = lens _eilLanguage (\ s a -> s{_eilLanguage = a})
-
--- | Unique identifier for this edit.
-eilEditId :: Lens' EditsImagesList Text
-eilEditId
-  = lens _eilEditId (\ s a -> s{_eilEditId = a})
-
-instance GoogleRequest EditsImagesList where
-        type Rs EditsImagesList = ImagesListResponse
-        type Scopes EditsImagesList =
-             '["https://www.googleapis.com/auth/androidpublisher"]
-        requestClient EditsImagesList'{..}
-          = go _eilPackageName _eilEditId _eilLanguage
-              _eilImageType
-              (Just AltJSON)
-              androidPublisherService
-          where go
-                  = buildClient
-                      (Proxy :: Proxy EditsImagesListResource)
-                      mempty
diff --git a/gen/Network/Google/Resource/AndroidPublisher/Edits/Images/Upload.hs b/gen/Network/Google/Resource/AndroidPublisher/Edits/Images/Upload.hs
deleted file mode 100644
--- a/gen/Network/Google/Resource/AndroidPublisher/Edits/Images/Upload.hs
+++ /dev/null
@@ -1,170 +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.Images.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 image and adds it to the list of images for the specified
--- language and image type.
---
--- /See:/ <https://developers.google.com/android-publisher Google Play Developer API Reference> for @androidpublisher.edits.images.upload@.
-module Network.Google.Resource.AndroidPublisher.Edits.Images.Upload
-    (
-    -- * REST Resource
-      EditsImagesUploadResource
-
-    -- * Creating a Request
-    , editsImagesUpload
-    , EditsImagesUpload
-
-    -- * Request Lenses
-    , eiuPackageName
-    , eiuImageType
-    , eiuLanguage
-    , eiuEditId
-    ) where
-
-import           Network.Google.AndroidPublisher.Types
-import           Network.Google.Prelude
-
--- | A resource alias for @androidpublisher.edits.images.upload@ method which the
--- 'EditsImagesUpload' request conforms to.
-type EditsImagesUploadResource =
-     "androidpublisher" :>
-       "v3" :>
-         "applications" :>
-           Capture "packageName" Text :>
-             "edits" :>
-               Capture "editId" Text :>
-                 "listings" :>
-                   Capture "language" Text :>
-                     Capture "imageType" EditsImagesUploadImageType :>
-                       QueryParam "alt" AltJSON :>
-                         Post '[JSON] ImagesUploadResponse
-       :<|>
-       "upload" :>
-         "androidpublisher" :>
-           "v3" :>
-             "applications" :>
-               Capture "packageName" Text :>
-                 "edits" :>
-                   Capture "editId" Text :>
-                     "listings" :>
-                       Capture "language" Text :>
-                         Capture "imageType" EditsImagesUploadImageType :>
-                           QueryParam "alt" AltJSON :>
-                             QueryParam "uploadType" AltMedia :>
-                               AltMedia :> Post '[JSON] ImagesUploadResponse
-
--- | Uploads a new image and adds it to the list of images for the specified
--- language and image type.
---
--- /See:/ 'editsImagesUpload' smart constructor.
-data EditsImagesUpload =
-  EditsImagesUpload'
-    { _eiuPackageName :: !Text
-    , _eiuImageType   :: !EditsImagesUploadImageType
-    , _eiuLanguage    :: !Text
-    , _eiuEditId      :: !Text
-    }
-  deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'EditsImagesUpload' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'eiuPackageName'
---
--- * 'eiuImageType'
---
--- * 'eiuLanguage'
---
--- * 'eiuEditId'
-editsImagesUpload
-    :: Text -- ^ 'eiuPackageName'
-    -> EditsImagesUploadImageType -- ^ 'eiuImageType'
-    -> Text -- ^ 'eiuLanguage'
-    -> Text -- ^ 'eiuEditId'
-    -> EditsImagesUpload
-editsImagesUpload pEiuPackageName_ pEiuImageType_ pEiuLanguage_ pEiuEditId_ =
-  EditsImagesUpload'
-    { _eiuPackageName = pEiuPackageName_
-    , _eiuImageType = pEiuImageType_
-    , _eiuLanguage = pEiuLanguage_
-    , _eiuEditId = pEiuEditId_
-    }
-
-
--- | Unique identifier for the Android app that is being updated; for
--- example, \"com.spiffygame\".
-eiuPackageName :: Lens' EditsImagesUpload Text
-eiuPackageName
-  = lens _eiuPackageName
-      (\ s a -> s{_eiuPackageName = a})
-
-eiuImageType :: Lens' EditsImagesUpload EditsImagesUploadImageType
-eiuImageType
-  = lens _eiuImageType (\ s a -> s{_eiuImageType = a})
-
--- | The language code (a BCP-47 language tag) of the localized listing whose
--- images are to read or modified. For example, to select Austrian German,
--- pass \"de-AT\".
-eiuLanguage :: Lens' EditsImagesUpload Text
-eiuLanguage
-  = lens _eiuLanguage (\ s a -> s{_eiuLanguage = a})
-
--- | Unique identifier for this edit.
-eiuEditId :: Lens' EditsImagesUpload Text
-eiuEditId
-  = lens _eiuEditId (\ s a -> s{_eiuEditId = a})
-
-instance GoogleRequest EditsImagesUpload where
-        type Rs EditsImagesUpload = ImagesUploadResponse
-        type Scopes EditsImagesUpload =
-             '["https://www.googleapis.com/auth/androidpublisher"]
-        requestClient EditsImagesUpload'{..}
-          = go _eiuPackageName _eiuEditId _eiuLanguage
-              _eiuImageType
-              (Just AltJSON)
-              androidPublisherService
-          where go :<|> _
-                  = buildClient
-                      (Proxy :: Proxy EditsImagesUploadResource)
-                      mempty
-
-instance GoogleRequest
-           (MediaUpload EditsImagesUpload)
-         where
-        type Rs (MediaUpload EditsImagesUpload) =
-             ImagesUploadResponse
-        type Scopes (MediaUpload EditsImagesUpload) =
-             Scopes EditsImagesUpload
-        requestClient
-          (MediaUpload EditsImagesUpload'{..} body)
-          = go _eiuPackageName _eiuEditId _eiuLanguage
-              _eiuImageType
-              (Just AltJSON)
-              (Just AltMedia)
-              body
-              androidPublisherService
-          where _ :<|> go
-                  = buildClient
-                      (Proxy :: Proxy EditsImagesUploadResource)
-                      mempty
diff --git a/gen/Network/Google/Resource/AndroidPublisher/Edits/Insert.hs b/gen/Network/Google/Resource/AndroidPublisher/Edits/Insert.hs
deleted file mode 100644
--- a/gen/Network/Google/Resource/AndroidPublisher/Edits/Insert.hs
+++ /dev/null
@@ -1,101 +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.Insert
--- 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)
---
--- Creates a new edit for an app, populated with the app\'s current state.
---
--- /See:/ <https://developers.google.com/android-publisher Google Play Developer API Reference> for @androidpublisher.edits.insert@.
-module Network.Google.Resource.AndroidPublisher.Edits.Insert
-    (
-    -- * REST Resource
-      EditsInsertResource
-
-    -- * Creating a Request
-    , editsInsert
-    , EditsInsert
-
-    -- * Request Lenses
-    , eiPackageName
-    , eiPayload
-    ) where
-
-import           Network.Google.AndroidPublisher.Types
-import           Network.Google.Prelude
-
--- | A resource alias for @androidpublisher.edits.insert@ method which the
--- 'EditsInsert' request conforms to.
-type EditsInsertResource =
-     "androidpublisher" :>
-       "v3" :>
-         "applications" :>
-           Capture "packageName" Text :>
-             "edits" :>
-               QueryParam "alt" AltJSON :>
-                 ReqBody '[JSON] AppEdit :> Post '[JSON] AppEdit
-
--- | Creates a new edit for an app, populated with the app\'s current state.
---
--- /See:/ 'editsInsert' smart constructor.
-data EditsInsert =
-  EditsInsert'
-    { _eiPackageName :: !Text
-    , _eiPayload     :: !AppEdit
-    }
-  deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'EditsInsert' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'eiPackageName'
---
--- * 'eiPayload'
-editsInsert
-    :: Text -- ^ 'eiPackageName'
-    -> AppEdit -- ^ 'eiPayload'
-    -> EditsInsert
-editsInsert pEiPackageName_ pEiPayload_ =
-  EditsInsert' {_eiPackageName = pEiPackageName_, _eiPayload = pEiPayload_}
-
-
--- | Unique identifier for the Android app that is being updated; for
--- example, \"com.spiffygame\".
-eiPackageName :: Lens' EditsInsert Text
-eiPackageName
-  = lens _eiPackageName
-      (\ s a -> s{_eiPackageName = a})
-
--- | Multipart request metadata.
-eiPayload :: Lens' EditsInsert AppEdit
-eiPayload
-  = lens _eiPayload (\ s a -> s{_eiPayload = a})
-
-instance GoogleRequest EditsInsert where
-        type Rs EditsInsert = AppEdit
-        type Scopes EditsInsert =
-             '["https://www.googleapis.com/auth/androidpublisher"]
-        requestClient EditsInsert'{..}
-          = go _eiPackageName (Just AltJSON) _eiPayload
-              androidPublisherService
-          where go
-                  = buildClient (Proxy :: Proxy EditsInsertResource)
-                      mempty
diff --git a/gen/Network/Google/Resource/AndroidPublisher/Edits/Listings/Delete.hs b/gen/Network/Google/Resource/AndroidPublisher/Edits/Listings/Delete.hs
deleted file mode 100644
--- a/gen/Network/Google/Resource/AndroidPublisher/Edits/Listings/Delete.hs
+++ /dev/null
@@ -1,120 +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.Listings.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 specified localized store listing from an edit.
---
--- /See:/ <https://developers.google.com/android-publisher Google Play Developer API Reference> for @androidpublisher.edits.listings.delete@.
-module Network.Google.Resource.AndroidPublisher.Edits.Listings.Delete
-    (
-    -- * REST Resource
-      EditsListingsDeleteResource
-
-    -- * Creating a Request
-    , editsListingsDelete
-    , EditsListingsDelete
-
-    -- * Request Lenses
-    , eldPackageName
-    , eldLanguage
-    , eldEditId
-    ) where
-
-import           Network.Google.AndroidPublisher.Types
-import           Network.Google.Prelude
-
--- | A resource alias for @androidpublisher.edits.listings.delete@ method which the
--- 'EditsListingsDelete' request conforms to.
-type EditsListingsDeleteResource =
-     "androidpublisher" :>
-       "v3" :>
-         "applications" :>
-           Capture "packageName" Text :>
-             "edits" :>
-               Capture "editId" Text :>
-                 "listings" :>
-                   Capture "language" Text :>
-                     QueryParam "alt" AltJSON :> Delete '[JSON] ()
-
--- | Deletes the specified localized store listing from an edit.
---
--- /See:/ 'editsListingsDelete' smart constructor.
-data EditsListingsDelete =
-  EditsListingsDelete'
-    { _eldPackageName :: !Text
-    , _eldLanguage    :: !Text
-    , _eldEditId      :: !Text
-    }
-  deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'EditsListingsDelete' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'eldPackageName'
---
--- * 'eldLanguage'
---
--- * 'eldEditId'
-editsListingsDelete
-    :: Text -- ^ 'eldPackageName'
-    -> Text -- ^ 'eldLanguage'
-    -> Text -- ^ 'eldEditId'
-    -> EditsListingsDelete
-editsListingsDelete pEldPackageName_ pEldLanguage_ pEldEditId_ =
-  EditsListingsDelete'
-    { _eldPackageName = pEldPackageName_
-    , _eldLanguage = pEldLanguage_
-    , _eldEditId = pEldEditId_
-    }
-
-
--- | Unique identifier for the Android app that is being updated; for
--- example, \"com.spiffygame\".
-eldPackageName :: Lens' EditsListingsDelete Text
-eldPackageName
-  = lens _eldPackageName
-      (\ s a -> s{_eldPackageName = a})
-
--- | The language code (a BCP-47 language tag) of the localized listing to
--- read or modify. For example, to select Austrian German, pass \"de-AT\".
-eldLanguage :: Lens' EditsListingsDelete Text
-eldLanguage
-  = lens _eldLanguage (\ s a -> s{_eldLanguage = a})
-
--- | Unique identifier for this edit.
-eldEditId :: Lens' EditsListingsDelete Text
-eldEditId
-  = lens _eldEditId (\ s a -> s{_eldEditId = a})
-
-instance GoogleRequest EditsListingsDelete where
-        type Rs EditsListingsDelete = ()
-        type Scopes EditsListingsDelete =
-             '["https://www.googleapis.com/auth/androidpublisher"]
-        requestClient EditsListingsDelete'{..}
-          = go _eldPackageName _eldEditId _eldLanguage
-              (Just AltJSON)
-              androidPublisherService
-          where go
-                  = buildClient
-                      (Proxy :: Proxy EditsListingsDeleteResource)
-                      mempty
diff --git a/gen/Network/Google/Resource/AndroidPublisher/Edits/Listings/Deleteall.hs b/gen/Network/Google/Resource/AndroidPublisher/Edits/Listings/Deleteall.hs
deleted file mode 100644
--- a/gen/Network/Google/Resource/AndroidPublisher/Edits/Listings/Deleteall.hs
+++ /dev/null
@@ -1,104 +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.Listings.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 localized listings from an edit.
---
--- /See:/ <https://developers.google.com/android-publisher Google Play Developer API Reference> for @androidpublisher.edits.listings.deleteall@.
-module Network.Google.Resource.AndroidPublisher.Edits.Listings.Deleteall
-    (
-    -- * REST Resource
-      EditsListingsDeleteallResource
-
-    -- * Creating a Request
-    , editsListingsDeleteall
-    , EditsListingsDeleteall
-
-    -- * Request Lenses
-    , eldlPackageName
-    , eldlEditId
-    ) where
-
-import           Network.Google.AndroidPublisher.Types
-import           Network.Google.Prelude
-
--- | A resource alias for @androidpublisher.edits.listings.deleteall@ method which the
--- 'EditsListingsDeleteall' request conforms to.
-type EditsListingsDeleteallResource =
-     "androidpublisher" :>
-       "v3" :>
-         "applications" :>
-           Capture "packageName" Text :>
-             "edits" :>
-               Capture "editId" Text :>
-                 "listings" :>
-                   QueryParam "alt" AltJSON :> Delete '[JSON] ()
-
--- | Deletes all localized listings from an edit.
---
--- /See:/ 'editsListingsDeleteall' smart constructor.
-data EditsListingsDeleteall =
-  EditsListingsDeleteall'
-    { _eldlPackageName :: !Text
-    , _eldlEditId      :: !Text
-    }
-  deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'EditsListingsDeleteall' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'eldlPackageName'
---
--- * 'eldlEditId'
-editsListingsDeleteall
-    :: Text -- ^ 'eldlPackageName'
-    -> Text -- ^ 'eldlEditId'
-    -> EditsListingsDeleteall
-editsListingsDeleteall pEldlPackageName_ pEldlEditId_ =
-  EditsListingsDeleteall'
-    {_eldlPackageName = pEldlPackageName_, _eldlEditId = pEldlEditId_}
-
-
--- | Unique identifier for the Android app that is being updated; for
--- example, \"com.spiffygame\".
-eldlPackageName :: Lens' EditsListingsDeleteall Text
-eldlPackageName
-  = lens _eldlPackageName
-      (\ s a -> s{_eldlPackageName = a})
-
--- | Unique identifier for this edit.
-eldlEditId :: Lens' EditsListingsDeleteall Text
-eldlEditId
-  = lens _eldlEditId (\ s a -> s{_eldlEditId = a})
-
-instance GoogleRequest EditsListingsDeleteall where
-        type Rs EditsListingsDeleteall = ()
-        type Scopes EditsListingsDeleteall =
-             '["https://www.googleapis.com/auth/androidpublisher"]
-        requestClient EditsListingsDeleteall'{..}
-          = go _eldlPackageName _eldlEditId (Just AltJSON)
-              androidPublisherService
-          where go
-                  = buildClient
-                      (Proxy :: Proxy EditsListingsDeleteallResource)
-                      mempty
diff --git a/gen/Network/Google/Resource/AndroidPublisher/Edits/Listings/Get.hs b/gen/Network/Google/Resource/AndroidPublisher/Edits/Listings/Get.hs
deleted file mode 100644
--- a/gen/Network/Google/Resource/AndroidPublisher/Edits/Listings/Get.hs
+++ /dev/null
@@ -1,120 +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.Listings.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 information about a localized store listing.
---
--- /See:/ <https://developers.google.com/android-publisher Google Play Developer API Reference> for @androidpublisher.edits.listings.get@.
-module Network.Google.Resource.AndroidPublisher.Edits.Listings.Get
-    (
-    -- * REST Resource
-      EditsListingsGetResource
-
-    -- * Creating a Request
-    , editsListingsGet
-    , EditsListingsGet
-
-    -- * Request Lenses
-    , elgPackageName
-    , elgLanguage
-    , elgEditId
-    ) where
-
-import           Network.Google.AndroidPublisher.Types
-import           Network.Google.Prelude
-
--- | A resource alias for @androidpublisher.edits.listings.get@ method which the
--- 'EditsListingsGet' request conforms to.
-type EditsListingsGetResource =
-     "androidpublisher" :>
-       "v3" :>
-         "applications" :>
-           Capture "packageName" Text :>
-             "edits" :>
-               Capture "editId" Text :>
-                 "listings" :>
-                   Capture "language" Text :>
-                     QueryParam "alt" AltJSON :> Get '[JSON] Listing
-
--- | Fetches information about a localized store listing.
---
--- /See:/ 'editsListingsGet' smart constructor.
-data EditsListingsGet =
-  EditsListingsGet'
-    { _elgPackageName :: !Text
-    , _elgLanguage    :: !Text
-    , _elgEditId      :: !Text
-    }
-  deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'EditsListingsGet' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'elgPackageName'
---
--- * 'elgLanguage'
---
--- * 'elgEditId'
-editsListingsGet
-    :: Text -- ^ 'elgPackageName'
-    -> Text -- ^ 'elgLanguage'
-    -> Text -- ^ 'elgEditId'
-    -> EditsListingsGet
-editsListingsGet pElgPackageName_ pElgLanguage_ pElgEditId_ =
-  EditsListingsGet'
-    { _elgPackageName = pElgPackageName_
-    , _elgLanguage = pElgLanguage_
-    , _elgEditId = pElgEditId_
-    }
-
-
--- | Unique identifier for the Android app that is being updated; for
--- example, \"com.spiffygame\".
-elgPackageName :: Lens' EditsListingsGet Text
-elgPackageName
-  = lens _elgPackageName
-      (\ s a -> s{_elgPackageName = a})
-
--- | The language code (a BCP-47 language tag) of the localized listing to
--- read or modify. For example, to select Austrian German, pass \"de-AT\".
-elgLanguage :: Lens' EditsListingsGet Text
-elgLanguage
-  = lens _elgLanguage (\ s a -> s{_elgLanguage = a})
-
--- | Unique identifier for this edit.
-elgEditId :: Lens' EditsListingsGet Text
-elgEditId
-  = lens _elgEditId (\ s a -> s{_elgEditId = a})
-
-instance GoogleRequest EditsListingsGet where
-        type Rs EditsListingsGet = Listing
-        type Scopes EditsListingsGet =
-             '["https://www.googleapis.com/auth/androidpublisher"]
-        requestClient EditsListingsGet'{..}
-          = go _elgPackageName _elgEditId _elgLanguage
-              (Just AltJSON)
-              androidPublisherService
-          where go
-                  = buildClient
-                      (Proxy :: Proxy EditsListingsGetResource)
-                      mempty
diff --git a/gen/Network/Google/Resource/AndroidPublisher/Edits/Listings/List.hs b/gen/Network/Google/Resource/AndroidPublisher/Edits/Listings/List.hs
deleted file mode 100644
--- a/gen/Network/Google/Resource/AndroidPublisher/Edits/Listings/List.hs
+++ /dev/null
@@ -1,105 +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.Listings.List
--- Copyright   : (c) 2015-2016 Brendan Hay
--- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
--- Stability   : auto-generated
--- Portability : non-portable (GHC extensions)
---
--- Returns all of the localized store listings attached to this edit.
---
--- /See:/ <https://developers.google.com/android-publisher Google Play Developer API Reference> for @androidpublisher.edits.listings.list@.
-module Network.Google.Resource.AndroidPublisher.Edits.Listings.List
-    (
-    -- * REST Resource
-      EditsListingsListResource
-
-    -- * Creating a Request
-    , editsListingsList
-    , EditsListingsList
-
-    -- * Request Lenses
-    , ellPackageName
-    , ellEditId
-    ) where
-
-import           Network.Google.AndroidPublisher.Types
-import           Network.Google.Prelude
-
--- | A resource alias for @androidpublisher.edits.listings.list@ method which the
--- 'EditsListingsList' request conforms to.
-type EditsListingsListResource =
-     "androidpublisher" :>
-       "v3" :>
-         "applications" :>
-           Capture "packageName" Text :>
-             "edits" :>
-               Capture "editId" Text :>
-                 "listings" :>
-                   QueryParam "alt" AltJSON :>
-                     Get '[JSON] ListingsListResponse
-
--- | Returns all of the localized store listings attached to this edit.
---
--- /See:/ 'editsListingsList' smart constructor.
-data EditsListingsList =
-  EditsListingsList'
-    { _ellPackageName :: !Text
-    , _ellEditId      :: !Text
-    }
-  deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'EditsListingsList' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'ellPackageName'
---
--- * 'ellEditId'
-editsListingsList
-    :: Text -- ^ 'ellPackageName'
-    -> Text -- ^ 'ellEditId'
-    -> EditsListingsList
-editsListingsList pEllPackageName_ pEllEditId_ =
-  EditsListingsList'
-    {_ellPackageName = pEllPackageName_, _ellEditId = pEllEditId_}
-
-
--- | Unique identifier for the Android app that is being updated; for
--- example, \"com.spiffygame\".
-ellPackageName :: Lens' EditsListingsList Text
-ellPackageName
-  = lens _ellPackageName
-      (\ s a -> s{_ellPackageName = a})
-
--- | Unique identifier for this edit.
-ellEditId :: Lens' EditsListingsList Text
-ellEditId
-  = lens _ellEditId (\ s a -> s{_ellEditId = a})
-
-instance GoogleRequest EditsListingsList where
-        type Rs EditsListingsList = ListingsListResponse
-        type Scopes EditsListingsList =
-             '["https://www.googleapis.com/auth/androidpublisher"]
-        requestClient EditsListingsList'{..}
-          = go _ellPackageName _ellEditId (Just AltJSON)
-              androidPublisherService
-          where go
-                  = buildClient
-                      (Proxy :: Proxy EditsListingsListResource)
-                      mempty
diff --git a/gen/Network/Google/Resource/AndroidPublisher/Edits/Listings/Patch.hs b/gen/Network/Google/Resource/AndroidPublisher/Edits/Listings/Patch.hs
deleted file mode 100644
--- a/gen/Network/Google/Resource/AndroidPublisher/Edits/Listings/Patch.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.Edits.Listings.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)
---
--- Creates or updates a localized store listing. This method supports patch
--- semantics.
---
--- /See:/ <https://developers.google.com/android-publisher Google Play Developer API Reference> for @androidpublisher.edits.listings.patch@.
-module Network.Google.Resource.AndroidPublisher.Edits.Listings.Patch
-    (
-    -- * REST Resource
-      EditsListingsPatchResource
-
-    -- * Creating a Request
-    , editsListingsPatch
-    , EditsListingsPatch
-
-    -- * Request Lenses
-    , elpPackageName
-    , elpPayload
-    , elpLanguage
-    , elpEditId
-    ) where
-
-import           Network.Google.AndroidPublisher.Types
-import           Network.Google.Prelude
-
--- | A resource alias for @androidpublisher.edits.listings.patch@ method which the
--- 'EditsListingsPatch' request conforms to.
-type EditsListingsPatchResource =
-     "androidpublisher" :>
-       "v3" :>
-         "applications" :>
-           Capture "packageName" Text :>
-             "edits" :>
-               Capture "editId" Text :>
-                 "listings" :>
-                   Capture "language" Text :>
-                     QueryParam "alt" AltJSON :>
-                       ReqBody '[JSON] Listing :> Patch '[JSON] Listing
-
--- | Creates or updates a localized store listing. This method supports patch
--- semantics.
---
--- /See:/ 'editsListingsPatch' smart constructor.
-data EditsListingsPatch =
-  EditsListingsPatch'
-    { _elpPackageName :: !Text
-    , _elpPayload     :: !Listing
-    , _elpLanguage    :: !Text
-    , _elpEditId      :: !Text
-    }
-  deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'EditsListingsPatch' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'elpPackageName'
---
--- * 'elpPayload'
---
--- * 'elpLanguage'
---
--- * 'elpEditId'
-editsListingsPatch
-    :: Text -- ^ 'elpPackageName'
-    -> Listing -- ^ 'elpPayload'
-    -> Text -- ^ 'elpLanguage'
-    -> Text -- ^ 'elpEditId'
-    -> EditsListingsPatch
-editsListingsPatch pElpPackageName_ pElpPayload_ pElpLanguage_ pElpEditId_ =
-  EditsListingsPatch'
-    { _elpPackageName = pElpPackageName_
-    , _elpPayload = pElpPayload_
-    , _elpLanguage = pElpLanguage_
-    , _elpEditId = pElpEditId_
-    }
-
-
--- | Unique identifier for the Android app that is being updated; for
--- example, \"com.spiffygame\".
-elpPackageName :: Lens' EditsListingsPatch Text
-elpPackageName
-  = lens _elpPackageName
-      (\ s a -> s{_elpPackageName = a})
-
--- | Multipart request metadata.
-elpPayload :: Lens' EditsListingsPatch Listing
-elpPayload
-  = lens _elpPayload (\ s a -> s{_elpPayload = a})
-
--- | The language code (a BCP-47 language tag) of the localized listing to
--- read or modify. For example, to select Austrian German, pass \"de-AT\".
-elpLanguage :: Lens' EditsListingsPatch Text
-elpLanguage
-  = lens _elpLanguage (\ s a -> s{_elpLanguage = a})
-
--- | Unique identifier for this edit.
-elpEditId :: Lens' EditsListingsPatch Text
-elpEditId
-  = lens _elpEditId (\ s a -> s{_elpEditId = a})
-
-instance GoogleRequest EditsListingsPatch where
-        type Rs EditsListingsPatch = Listing
-        type Scopes EditsListingsPatch =
-             '["https://www.googleapis.com/auth/androidpublisher"]
-        requestClient EditsListingsPatch'{..}
-          = go _elpPackageName _elpEditId _elpLanguage
-              (Just AltJSON)
-              _elpPayload
-              androidPublisherService
-          where go
-                  = buildClient
-                      (Proxy :: Proxy EditsListingsPatchResource)
-                      mempty
diff --git a/gen/Network/Google/Resource/AndroidPublisher/Edits/Listings/Update.hs b/gen/Network/Google/Resource/AndroidPublisher/Edits/Listings/Update.hs
deleted file mode 100644
--- a/gen/Network/Google/Resource/AndroidPublisher/Edits/Listings/Update.hs
+++ /dev/null
@@ -1,133 +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.Listings.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)
---
--- Creates or updates a localized store listing.
---
--- /See:/ <https://developers.google.com/android-publisher Google Play Developer API Reference> for @androidpublisher.edits.listings.update@.
-module Network.Google.Resource.AndroidPublisher.Edits.Listings.Update
-    (
-    -- * REST Resource
-      EditsListingsUpdateResource
-
-    -- * Creating a Request
-    , editsListingsUpdate
-    , EditsListingsUpdate
-
-    -- * Request Lenses
-    , eluPackageName
-    , eluPayload
-    , eluLanguage
-    , eluEditId
-    ) where
-
-import           Network.Google.AndroidPublisher.Types
-import           Network.Google.Prelude
-
--- | A resource alias for @androidpublisher.edits.listings.update@ method which the
--- 'EditsListingsUpdate' request conforms to.
-type EditsListingsUpdateResource =
-     "androidpublisher" :>
-       "v3" :>
-         "applications" :>
-           Capture "packageName" Text :>
-             "edits" :>
-               Capture "editId" Text :>
-                 "listings" :>
-                   Capture "language" Text :>
-                     QueryParam "alt" AltJSON :>
-                       ReqBody '[JSON] Listing :> Put '[JSON] Listing
-
--- | Creates or updates a localized store listing.
---
--- /See:/ 'editsListingsUpdate' smart constructor.
-data EditsListingsUpdate =
-  EditsListingsUpdate'
-    { _eluPackageName :: !Text
-    , _eluPayload     :: !Listing
-    , _eluLanguage    :: !Text
-    , _eluEditId      :: !Text
-    }
-  deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'EditsListingsUpdate' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'eluPackageName'
---
--- * 'eluPayload'
---
--- * 'eluLanguage'
---
--- * 'eluEditId'
-editsListingsUpdate
-    :: Text -- ^ 'eluPackageName'
-    -> Listing -- ^ 'eluPayload'
-    -> Text -- ^ 'eluLanguage'
-    -> Text -- ^ 'eluEditId'
-    -> EditsListingsUpdate
-editsListingsUpdate pEluPackageName_ pEluPayload_ pEluLanguage_ pEluEditId_ =
-  EditsListingsUpdate'
-    { _eluPackageName = pEluPackageName_
-    , _eluPayload = pEluPayload_
-    , _eluLanguage = pEluLanguage_
-    , _eluEditId = pEluEditId_
-    }
-
-
--- | Unique identifier for the Android app that is being updated; for
--- example, \"com.spiffygame\".
-eluPackageName :: Lens' EditsListingsUpdate Text
-eluPackageName
-  = lens _eluPackageName
-      (\ s a -> s{_eluPackageName = a})
-
--- | Multipart request metadata.
-eluPayload :: Lens' EditsListingsUpdate Listing
-eluPayload
-  = lens _eluPayload (\ s a -> s{_eluPayload = a})
-
--- | The language code (a BCP-47 language tag) of the localized listing to
--- read or modify. For example, to select Austrian German, pass \"de-AT\".
-eluLanguage :: Lens' EditsListingsUpdate Text
-eluLanguage
-  = lens _eluLanguage (\ s a -> s{_eluLanguage = a})
-
--- | Unique identifier for this edit.
-eluEditId :: Lens' EditsListingsUpdate Text
-eluEditId
-  = lens _eluEditId (\ s a -> s{_eluEditId = a})
-
-instance GoogleRequest EditsListingsUpdate where
-        type Rs EditsListingsUpdate = Listing
-        type Scopes EditsListingsUpdate =
-             '["https://www.googleapis.com/auth/androidpublisher"]
-        requestClient EditsListingsUpdate'{..}
-          = go _eluPackageName _eluEditId _eluLanguage
-              (Just AltJSON)
-              _eluPayload
-              androidPublisherService
-          where go
-                  = buildClient
-                      (Proxy :: Proxy EditsListingsUpdateResource)
-                      mempty
diff --git a/gen/Network/Google/Resource/AndroidPublisher/Edits/Testers/Get.hs b/gen/Network/Google/Resource/AndroidPublisher/Edits/Testers/Get.hs
deleted file mode 100644
--- a/gen/Network/Google/Resource/AndroidPublisher/Edits/Testers/Get.hs
+++ /dev/null
@@ -1,115 +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.Testers.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)
---
--- /See:/ <https://developers.google.com/android-publisher Google Play Developer API Reference> for @androidpublisher.edits.testers.get@.
-module Network.Google.Resource.AndroidPublisher.Edits.Testers.Get
-    (
-    -- * REST Resource
-      EditsTestersGetResource
-
-    -- * Creating a Request
-    , editsTestersGet
-    , EditsTestersGet
-
-    -- * Request Lenses
-    , etgTrack
-    , etgPackageName
-    , etgEditId
-    ) where
-
-import           Network.Google.AndroidPublisher.Types
-import           Network.Google.Prelude
-
--- | A resource alias for @androidpublisher.edits.testers.get@ method which the
--- 'EditsTestersGet' request conforms to.
-type EditsTestersGetResource =
-     "androidpublisher" :>
-       "v3" :>
-         "applications" :>
-           Capture "packageName" Text :>
-             "edits" :>
-               Capture "editId" Text :>
-                 "testers" :>
-                   Capture "track" Text :>
-                     QueryParam "alt" AltJSON :> Get '[JSON] Testers
-
---
--- /See:/ 'editsTestersGet' smart constructor.
-data EditsTestersGet =
-  EditsTestersGet'
-    { _etgTrack       :: !Text
-    , _etgPackageName :: !Text
-    , _etgEditId      :: !Text
-    }
-  deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'EditsTestersGet' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'etgTrack'
---
--- * 'etgPackageName'
---
--- * 'etgEditId'
-editsTestersGet
-    :: Text -- ^ 'etgTrack'
-    -> Text -- ^ 'etgPackageName'
-    -> Text -- ^ 'etgEditId'
-    -> EditsTestersGet
-editsTestersGet pEtgTrack_ pEtgPackageName_ pEtgEditId_ =
-  EditsTestersGet'
-    { _etgTrack = pEtgTrack_
-    , _etgPackageName = pEtgPackageName_
-    , _etgEditId = pEtgEditId_
-    }
-
-
--- | The track to read or modify.
-etgTrack :: Lens' EditsTestersGet Text
-etgTrack = lens _etgTrack (\ s a -> s{_etgTrack = a})
-
--- | Unique identifier for the Android app that is being updated; for
--- example, \"com.spiffygame\".
-etgPackageName :: Lens' EditsTestersGet Text
-etgPackageName
-  = lens _etgPackageName
-      (\ s a -> s{_etgPackageName = a})
-
--- | Unique identifier for this edit.
-etgEditId :: Lens' EditsTestersGet Text
-etgEditId
-  = lens _etgEditId (\ s a -> s{_etgEditId = a})
-
-instance GoogleRequest EditsTestersGet where
-        type Rs EditsTestersGet = Testers
-        type Scopes EditsTestersGet =
-             '["https://www.googleapis.com/auth/androidpublisher"]
-        requestClient EditsTestersGet'{..}
-          = go _etgPackageName _etgEditId _etgTrack
-              (Just AltJSON)
-              androidPublisherService
-          where go
-                  = buildClient
-                      (Proxy :: Proxy EditsTestersGetResource)
-                      mempty
diff --git a/gen/Network/Google/Resource/AndroidPublisher/Edits/Testers/Patch.hs b/gen/Network/Google/Resource/AndroidPublisher/Edits/Testers/Patch.hs
deleted file mode 100644
--- a/gen/Network/Google/Resource/AndroidPublisher/Edits/Testers/Patch.hs
+++ /dev/null
@@ -1,128 +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.Testers.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)
---
--- /See:/ <https://developers.google.com/android-publisher Google Play Developer API Reference> for @androidpublisher.edits.testers.patch@.
-module Network.Google.Resource.AndroidPublisher.Edits.Testers.Patch
-    (
-    -- * REST Resource
-      EditsTestersPatchResource
-
-    -- * Creating a Request
-    , editsTestersPatch
-    , EditsTestersPatch
-
-    -- * Request Lenses
-    , etpTrack
-    , etpPackageName
-    , etpPayload
-    , etpEditId
-    ) where
-
-import           Network.Google.AndroidPublisher.Types
-import           Network.Google.Prelude
-
--- | A resource alias for @androidpublisher.edits.testers.patch@ method which the
--- 'EditsTestersPatch' request conforms to.
-type EditsTestersPatchResource =
-     "androidpublisher" :>
-       "v3" :>
-         "applications" :>
-           Capture "packageName" Text :>
-             "edits" :>
-               Capture "editId" Text :>
-                 "testers" :>
-                   Capture "track" Text :>
-                     QueryParam "alt" AltJSON :>
-                       ReqBody '[JSON] Testers :> Patch '[JSON] Testers
-
---
--- /See:/ 'editsTestersPatch' smart constructor.
-data EditsTestersPatch =
-  EditsTestersPatch'
-    { _etpTrack       :: !Text
-    , _etpPackageName :: !Text
-    , _etpPayload     :: !Testers
-    , _etpEditId      :: !Text
-    }
-  deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'EditsTestersPatch' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'etpTrack'
---
--- * 'etpPackageName'
---
--- * 'etpPayload'
---
--- * 'etpEditId'
-editsTestersPatch
-    :: Text -- ^ 'etpTrack'
-    -> Text -- ^ 'etpPackageName'
-    -> Testers -- ^ 'etpPayload'
-    -> Text -- ^ 'etpEditId'
-    -> EditsTestersPatch
-editsTestersPatch pEtpTrack_ pEtpPackageName_ pEtpPayload_ pEtpEditId_ =
-  EditsTestersPatch'
-    { _etpTrack = pEtpTrack_
-    , _etpPackageName = pEtpPackageName_
-    , _etpPayload = pEtpPayload_
-    , _etpEditId = pEtpEditId_
-    }
-
-
--- | The track to read or modify.
-etpTrack :: Lens' EditsTestersPatch Text
-etpTrack = lens _etpTrack (\ s a -> s{_etpTrack = a})
-
--- | Unique identifier for the Android app that is being updated; for
--- example, \"com.spiffygame\".
-etpPackageName :: Lens' EditsTestersPatch Text
-etpPackageName
-  = lens _etpPackageName
-      (\ s a -> s{_etpPackageName = a})
-
--- | Multipart request metadata.
-etpPayload :: Lens' EditsTestersPatch Testers
-etpPayload
-  = lens _etpPayload (\ s a -> s{_etpPayload = a})
-
--- | Unique identifier for this edit.
-etpEditId :: Lens' EditsTestersPatch Text
-etpEditId
-  = lens _etpEditId (\ s a -> s{_etpEditId = a})
-
-instance GoogleRequest EditsTestersPatch where
-        type Rs EditsTestersPatch = Testers
-        type Scopes EditsTestersPatch =
-             '["https://www.googleapis.com/auth/androidpublisher"]
-        requestClient EditsTestersPatch'{..}
-          = go _etpPackageName _etpEditId _etpTrack
-              (Just AltJSON)
-              _etpPayload
-              androidPublisherService
-          where go
-                  = buildClient
-                      (Proxy :: Proxy EditsTestersPatchResource)
-                      mempty
diff --git a/gen/Network/Google/Resource/AndroidPublisher/Edits/Testers/Update.hs b/gen/Network/Google/Resource/AndroidPublisher/Edits/Testers/Update.hs
deleted file mode 100644
--- a/gen/Network/Google/Resource/AndroidPublisher/Edits/Testers/Update.hs
+++ /dev/null
@@ -1,129 +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.Testers.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)
---
--- /See:/ <https://developers.google.com/android-publisher Google Play Developer API Reference> for @androidpublisher.edits.testers.update@.
-module Network.Google.Resource.AndroidPublisher.Edits.Testers.Update
-    (
-    -- * REST Resource
-      EditsTestersUpdateResource
-
-    -- * Creating a Request
-    , editsTestersUpdate
-    , EditsTestersUpdate
-
-    -- * Request Lenses
-    , etutTrack
-    , etutPackageName
-    , etutPayload
-    , etutEditId
-    ) where
-
-import           Network.Google.AndroidPublisher.Types
-import           Network.Google.Prelude
-
--- | A resource alias for @androidpublisher.edits.testers.update@ method which the
--- 'EditsTestersUpdate' request conforms to.
-type EditsTestersUpdateResource =
-     "androidpublisher" :>
-       "v3" :>
-         "applications" :>
-           Capture "packageName" Text :>
-             "edits" :>
-               Capture "editId" Text :>
-                 "testers" :>
-                   Capture "track" Text :>
-                     QueryParam "alt" AltJSON :>
-                       ReqBody '[JSON] Testers :> Put '[JSON] Testers
-
---
--- /See:/ 'editsTestersUpdate' smart constructor.
-data EditsTestersUpdate =
-  EditsTestersUpdate'
-    { _etutTrack       :: !Text
-    , _etutPackageName :: !Text
-    , _etutPayload     :: !Testers
-    , _etutEditId      :: !Text
-    }
-  deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'EditsTestersUpdate' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'etutTrack'
---
--- * 'etutPackageName'
---
--- * 'etutPayload'
---
--- * 'etutEditId'
-editsTestersUpdate
-    :: Text -- ^ 'etutTrack'
-    -> Text -- ^ 'etutPackageName'
-    -> Testers -- ^ 'etutPayload'
-    -> Text -- ^ 'etutEditId'
-    -> EditsTestersUpdate
-editsTestersUpdate pEtutTrack_ pEtutPackageName_ pEtutPayload_ pEtutEditId_ =
-  EditsTestersUpdate'
-    { _etutTrack = pEtutTrack_
-    , _etutPackageName = pEtutPackageName_
-    , _etutPayload = pEtutPayload_
-    , _etutEditId = pEtutEditId_
-    }
-
-
--- | The track to read or modify.
-etutTrack :: Lens' EditsTestersUpdate Text
-etutTrack
-  = lens _etutTrack (\ s a -> s{_etutTrack = a})
-
--- | Unique identifier for the Android app that is being updated; for
--- example, \"com.spiffygame\".
-etutPackageName :: Lens' EditsTestersUpdate Text
-etutPackageName
-  = lens _etutPackageName
-      (\ s a -> s{_etutPackageName = a})
-
--- | Multipart request metadata.
-etutPayload :: Lens' EditsTestersUpdate Testers
-etutPayload
-  = lens _etutPayload (\ s a -> s{_etutPayload = a})
-
--- | Unique identifier for this edit.
-etutEditId :: Lens' EditsTestersUpdate Text
-etutEditId
-  = lens _etutEditId (\ s a -> s{_etutEditId = a})
-
-instance GoogleRequest EditsTestersUpdate where
-        type Rs EditsTestersUpdate = Testers
-        type Scopes EditsTestersUpdate =
-             '["https://www.googleapis.com/auth/androidpublisher"]
-        requestClient EditsTestersUpdate'{..}
-          = go _etutPackageName _etutEditId _etutTrack
-              (Just AltJSON)
-              _etutPayload
-              androidPublisherService
-          where go
-                  = buildClient
-                      (Proxy :: Proxy EditsTestersUpdateResource)
-                      mempty
diff --git a/gen/Network/Google/Resource/AndroidPublisher/Edits/Tracks/Get.hs b/gen/Network/Google/Resource/AndroidPublisher/Edits/Tracks/Get.hs
deleted file mode 100644
--- a/gen/Network/Google/Resource/AndroidPublisher/Edits/Tracks/Get.hs
+++ /dev/null
@@ -1,120 +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.Tracks.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 track configuration for the specified track type. Includes
--- the APK version codes that are in this track.
---
--- /See:/ <https://developers.google.com/android-publisher Google Play Developer API Reference> for @androidpublisher.edits.tracks.get@.
-module Network.Google.Resource.AndroidPublisher.Edits.Tracks.Get
-    (
-    -- * REST Resource
-      EditsTracksGetResource
-
-    -- * Creating a Request
-    , editsTracksGet
-    , EditsTracksGet
-
-    -- * Request Lenses
-    , etgtTrack
-    , etgtPackageName
-    , etgtEditId
-    ) where
-
-import           Network.Google.AndroidPublisher.Types
-import           Network.Google.Prelude
-
--- | A resource alias for @androidpublisher.edits.tracks.get@ method which the
--- 'EditsTracksGet' request conforms to.
-type EditsTracksGetResource =
-     "androidpublisher" :>
-       "v3" :>
-         "applications" :>
-           Capture "packageName" Text :>
-             "edits" :>
-               Capture "editId" Text :>
-                 "tracks" :>
-                   Capture "track" Text :>
-                     QueryParam "alt" AltJSON :> Get '[JSON] Track
-
--- | Fetches the track configuration for the specified track type. Includes
--- the APK version codes that are in this track.
---
--- /See:/ 'editsTracksGet' smart constructor.
-data EditsTracksGet =
-  EditsTracksGet'
-    { _etgtTrack       :: !Text
-    , _etgtPackageName :: !Text
-    , _etgtEditId      :: !Text
-    }
-  deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'EditsTracksGet' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'etgtTrack'
---
--- * 'etgtPackageName'
---
--- * 'etgtEditId'
-editsTracksGet
-    :: Text -- ^ 'etgtTrack'
-    -> Text -- ^ 'etgtPackageName'
-    -> Text -- ^ 'etgtEditId'
-    -> EditsTracksGet
-editsTracksGet pEtgtTrack_ pEtgtPackageName_ pEtgtEditId_ =
-  EditsTracksGet'
-    { _etgtTrack = pEtgtTrack_
-    , _etgtPackageName = pEtgtPackageName_
-    , _etgtEditId = pEtgtEditId_
-    }
-
-
--- | The track to read or modify.
-etgtTrack :: Lens' EditsTracksGet Text
-etgtTrack
-  = lens _etgtTrack (\ s a -> s{_etgtTrack = a})
-
--- | Unique identifier for the Android app that is being updated; for
--- example, \"com.spiffygame\".
-etgtPackageName :: Lens' EditsTracksGet Text
-etgtPackageName
-  = lens _etgtPackageName
-      (\ s a -> s{_etgtPackageName = a})
-
--- | Unique identifier for this edit.
-etgtEditId :: Lens' EditsTracksGet Text
-etgtEditId
-  = lens _etgtEditId (\ s a -> s{_etgtEditId = a})
-
-instance GoogleRequest EditsTracksGet where
-        type Rs EditsTracksGet = Track
-        type Scopes EditsTracksGet =
-             '["https://www.googleapis.com/auth/androidpublisher"]
-        requestClient EditsTracksGet'{..}
-          = go _etgtPackageName _etgtEditId _etgtTrack
-              (Just AltJSON)
-              androidPublisherService
-          where go
-                  = buildClient (Proxy :: Proxy EditsTracksGetResource)
-                      mempty
diff --git a/gen/Network/Google/Resource/AndroidPublisher/Edits/Tracks/List.hs b/gen/Network/Google/Resource/AndroidPublisher/Edits/Tracks/List.hs
deleted file mode 100644
--- a/gen/Network/Google/Resource/AndroidPublisher/Edits/Tracks/List.hs
+++ /dev/null
@@ -1,105 +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.Tracks.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 track configurations for this edit.
---
--- /See:/ <https://developers.google.com/android-publisher Google Play Developer API Reference> for @androidpublisher.edits.tracks.list@.
-module Network.Google.Resource.AndroidPublisher.Edits.Tracks.List
-    (
-    -- * REST Resource
-      EditsTracksListResource
-
-    -- * Creating a Request
-    , editsTracksList
-    , EditsTracksList
-
-    -- * Request Lenses
-    , etlPackageName
-    , etlEditId
-    ) where
-
-import           Network.Google.AndroidPublisher.Types
-import           Network.Google.Prelude
-
--- | A resource alias for @androidpublisher.edits.tracks.list@ method which the
--- 'EditsTracksList' request conforms to.
-type EditsTracksListResource =
-     "androidpublisher" :>
-       "v3" :>
-         "applications" :>
-           Capture "packageName" Text :>
-             "edits" :>
-               Capture "editId" Text :>
-                 "tracks" :>
-                   QueryParam "alt" AltJSON :>
-                     Get '[JSON] TracksListResponse
-
--- | Lists all the track configurations for this edit.
---
--- /See:/ 'editsTracksList' smart constructor.
-data EditsTracksList =
-  EditsTracksList'
-    { _etlPackageName :: !Text
-    , _etlEditId      :: !Text
-    }
-  deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'EditsTracksList' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'etlPackageName'
---
--- * 'etlEditId'
-editsTracksList
-    :: Text -- ^ 'etlPackageName'
-    -> Text -- ^ 'etlEditId'
-    -> EditsTracksList
-editsTracksList pEtlPackageName_ pEtlEditId_ =
-  EditsTracksList'
-    {_etlPackageName = pEtlPackageName_, _etlEditId = pEtlEditId_}
-
-
--- | Unique identifier for the Android app that is being updated; for
--- example, \"com.spiffygame\".
-etlPackageName :: Lens' EditsTracksList Text
-etlPackageName
-  = lens _etlPackageName
-      (\ s a -> s{_etlPackageName = a})
-
--- | Unique identifier for this edit.
-etlEditId :: Lens' EditsTracksList Text
-etlEditId
-  = lens _etlEditId (\ s a -> s{_etlEditId = a})
-
-instance GoogleRequest EditsTracksList where
-        type Rs EditsTracksList = TracksListResponse
-        type Scopes EditsTracksList =
-             '["https://www.googleapis.com/auth/androidpublisher"]
-        requestClient EditsTracksList'{..}
-          = go _etlPackageName _etlEditId (Just AltJSON)
-              androidPublisherService
-          where go
-                  = buildClient
-                      (Proxy :: Proxy EditsTracksListResource)
-                      mempty
diff --git a/gen/Network/Google/Resource/AndroidPublisher/Edits/Tracks/Patch.hs b/gen/Network/Google/Resource/AndroidPublisher/Edits/Tracks/Patch.hs
deleted file mode 100644
--- a/gen/Network/Google/Resource/AndroidPublisher/Edits/Tracks/Patch.hs
+++ /dev/null
@@ -1,134 +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.Tracks.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 the track configuration for the specified track type. This
--- method supports patch semantics.
---
--- /See:/ <https://developers.google.com/android-publisher Google Play Developer API Reference> for @androidpublisher.edits.tracks.patch@.
-module Network.Google.Resource.AndroidPublisher.Edits.Tracks.Patch
-    (
-    -- * REST Resource
-      EditsTracksPatchResource
-
-    -- * Creating a Request
-    , editsTracksPatch
-    , EditsTracksPatch
-
-    -- * Request Lenses
-    , etptTrack
-    , etptPackageName
-    , etptPayload
-    , etptEditId
-    ) where
-
-import           Network.Google.AndroidPublisher.Types
-import           Network.Google.Prelude
-
--- | A resource alias for @androidpublisher.edits.tracks.patch@ method which the
--- 'EditsTracksPatch' request conforms to.
-type EditsTracksPatchResource =
-     "androidpublisher" :>
-       "v3" :>
-         "applications" :>
-           Capture "packageName" Text :>
-             "edits" :>
-               Capture "editId" Text :>
-                 "tracks" :>
-                   Capture "track" Text :>
-                     QueryParam "alt" AltJSON :>
-                       ReqBody '[JSON] Track :> Patch '[JSON] Track
-
--- | Updates the track configuration for the specified track type. This
--- method supports patch semantics.
---
--- /See:/ 'editsTracksPatch' smart constructor.
-data EditsTracksPatch =
-  EditsTracksPatch'
-    { _etptTrack       :: !Text
-    , _etptPackageName :: !Text
-    , _etptPayload     :: !Track
-    , _etptEditId      :: !Text
-    }
-  deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'EditsTracksPatch' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'etptTrack'
---
--- * 'etptPackageName'
---
--- * 'etptPayload'
---
--- * 'etptEditId'
-editsTracksPatch
-    :: Text -- ^ 'etptTrack'
-    -> Text -- ^ 'etptPackageName'
-    -> Track -- ^ 'etptPayload'
-    -> Text -- ^ 'etptEditId'
-    -> EditsTracksPatch
-editsTracksPatch pEtptTrack_ pEtptPackageName_ pEtptPayload_ pEtptEditId_ =
-  EditsTracksPatch'
-    { _etptTrack = pEtptTrack_
-    , _etptPackageName = pEtptPackageName_
-    , _etptPayload = pEtptPayload_
-    , _etptEditId = pEtptEditId_
-    }
-
-
--- | The track to read or modify.
-etptTrack :: Lens' EditsTracksPatch Text
-etptTrack
-  = lens _etptTrack (\ s a -> s{_etptTrack = a})
-
--- | Unique identifier for the Android app that is being updated; for
--- example, \"com.spiffygame\".
-etptPackageName :: Lens' EditsTracksPatch Text
-etptPackageName
-  = lens _etptPackageName
-      (\ s a -> s{_etptPackageName = a})
-
--- | Multipart request metadata.
-etptPayload :: Lens' EditsTracksPatch Track
-etptPayload
-  = lens _etptPayload (\ s a -> s{_etptPayload = a})
-
--- | Unique identifier for this edit.
-etptEditId :: Lens' EditsTracksPatch Text
-etptEditId
-  = lens _etptEditId (\ s a -> s{_etptEditId = a})
-
-instance GoogleRequest EditsTracksPatch where
-        type Rs EditsTracksPatch = Track
-        type Scopes EditsTracksPatch =
-             '["https://www.googleapis.com/auth/androidpublisher"]
-        requestClient EditsTracksPatch'{..}
-          = go _etptPackageName _etptEditId _etptTrack
-              (Just AltJSON)
-              _etptPayload
-              androidPublisherService
-          where go
-                  = buildClient
-                      (Proxy :: Proxy EditsTracksPatchResource)
-                      mempty
diff --git a/gen/Network/Google/Resource/AndroidPublisher/Edits/Tracks/Update.hs b/gen/Network/Google/Resource/AndroidPublisher/Edits/Tracks/Update.hs
deleted file mode 100644
--- a/gen/Network/Google/Resource/AndroidPublisher/Edits/Tracks/Update.hs
+++ /dev/null
@@ -1,131 +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.Tracks.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 the track configuration for the specified track type.
---
--- /See:/ <https://developers.google.com/android-publisher Google Play Developer API Reference> for @androidpublisher.edits.tracks.update@.
-module Network.Google.Resource.AndroidPublisher.Edits.Tracks.Update
-    (
-    -- * REST Resource
-      EditsTracksUpdateResource
-
-    -- * Creating a Request
-    , editsTracksUpdate
-    , EditsTracksUpdate
-
-    -- * Request Lenses
-    , etuTrack
-    , etuPackageName
-    , etuPayload
-    , etuEditId
-    ) where
-
-import           Network.Google.AndroidPublisher.Types
-import           Network.Google.Prelude
-
--- | A resource alias for @androidpublisher.edits.tracks.update@ method which the
--- 'EditsTracksUpdate' request conforms to.
-type EditsTracksUpdateResource =
-     "androidpublisher" :>
-       "v3" :>
-         "applications" :>
-           Capture "packageName" Text :>
-             "edits" :>
-               Capture "editId" Text :>
-                 "tracks" :>
-                   Capture "track" Text :>
-                     QueryParam "alt" AltJSON :>
-                       ReqBody '[JSON] Track :> Put '[JSON] Track
-
--- | Updates the track configuration for the specified track type.
---
--- /See:/ 'editsTracksUpdate' smart constructor.
-data EditsTracksUpdate =
-  EditsTracksUpdate'
-    { _etuTrack       :: !Text
-    , _etuPackageName :: !Text
-    , _etuPayload     :: !Track
-    , _etuEditId      :: !Text
-    }
-  deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'EditsTracksUpdate' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'etuTrack'
---
--- * 'etuPackageName'
---
--- * 'etuPayload'
---
--- * 'etuEditId'
-editsTracksUpdate
-    :: Text -- ^ 'etuTrack'
-    -> Text -- ^ 'etuPackageName'
-    -> Track -- ^ 'etuPayload'
-    -> Text -- ^ 'etuEditId'
-    -> EditsTracksUpdate
-editsTracksUpdate pEtuTrack_ pEtuPackageName_ pEtuPayload_ pEtuEditId_ =
-  EditsTracksUpdate'
-    { _etuTrack = pEtuTrack_
-    , _etuPackageName = pEtuPackageName_
-    , _etuPayload = pEtuPayload_
-    , _etuEditId = pEtuEditId_
-    }
-
-
--- | 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
--- example, \"com.spiffygame\".
-etuPackageName :: Lens' EditsTracksUpdate Text
-etuPackageName
-  = lens _etuPackageName
-      (\ s a -> s{_etuPackageName = a})
-
--- | Multipart request metadata.
-etuPayload :: Lens' EditsTracksUpdate Track
-etuPayload
-  = lens _etuPayload (\ s a -> s{_etuPayload = a})
-
--- | Unique identifier for this edit.
-etuEditId :: Lens' EditsTracksUpdate Text
-etuEditId
-  = lens _etuEditId (\ s a -> s{_etuEditId = a})
-
-instance GoogleRequest EditsTracksUpdate where
-        type Rs EditsTracksUpdate = Track
-        type Scopes EditsTracksUpdate =
-             '["https://www.googleapis.com/auth/androidpublisher"]
-        requestClient EditsTracksUpdate'{..}
-          = go _etuPackageName _etuEditId _etuTrack
-              (Just AltJSON)
-              _etuPayload
-              androidPublisherService
-          where go
-                  = buildClient
-                      (Proxy :: Proxy EditsTracksUpdateResource)
-                      mempty
diff --git a/gen/Network/Google/Resource/AndroidPublisher/Edits/Validate.hs b/gen/Network/Google/Resource/AndroidPublisher/Edits/Validate.hs
deleted file mode 100644
--- a/gen/Network/Google/Resource/AndroidPublisher/Edits/Validate.hs
+++ /dev/null
@@ -1,102 +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.Validate
--- 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)
---
--- Checks that the edit can be successfully committed. The edit\'s changes
--- are not applied to the live app.
---
--- /See:/ <https://developers.google.com/android-publisher Google Play Developer API Reference> for @androidpublisher.edits.validate@.
-module Network.Google.Resource.AndroidPublisher.Edits.Validate
-    (
-    -- * REST Resource
-      EditsValidateResource
-
-    -- * Creating a Request
-    , editsValidate
-    , EditsValidate
-
-    -- * Request Lenses
-    , evPackageName
-    , evEditId
-    ) where
-
-import           Network.Google.AndroidPublisher.Types
-import           Network.Google.Prelude
-
--- | A resource alias for @androidpublisher.edits.validate@ method which the
--- 'EditsValidate' request conforms to.
-type EditsValidateResource =
-     "androidpublisher" :>
-       "v3" :>
-         "applications" :>
-           Capture "packageName" Text :>
-             "edits" :>
-               CaptureMode "editId" "validate" Text :>
-                 QueryParam "alt" AltJSON :> Post '[JSON] AppEdit
-
--- | Checks that the edit can be successfully committed. The edit\'s changes
--- are not applied to the live app.
---
--- /See:/ 'editsValidate' smart constructor.
-data EditsValidate =
-  EditsValidate'
-    { _evPackageName :: !Text
-    , _evEditId      :: !Text
-    }
-  deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'EditsValidate' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'evPackageName'
---
--- * 'evEditId'
-editsValidate
-    :: Text -- ^ 'evPackageName'
-    -> Text -- ^ 'evEditId'
-    -> EditsValidate
-editsValidate pEvPackageName_ pEvEditId_ =
-  EditsValidate' {_evPackageName = pEvPackageName_, _evEditId = pEvEditId_}
-
-
--- | Unique identifier for the Android app that is being updated; for
--- example, \"com.spiffygame\".
-evPackageName :: Lens' EditsValidate Text
-evPackageName
-  = lens _evPackageName
-      (\ s a -> s{_evPackageName = a})
-
--- | Unique identifier for this edit.
-evEditId :: Lens' EditsValidate Text
-evEditId = lens _evEditId (\ s a -> s{_evEditId = a})
-
-instance GoogleRequest EditsValidate where
-        type Rs EditsValidate = AppEdit
-        type Scopes EditsValidate =
-             '["https://www.googleapis.com/auth/androidpublisher"]
-        requestClient EditsValidate'{..}
-          = go _evPackageName _evEditId (Just AltJSON)
-              androidPublisherService
-          where go
-                  = buildClient (Proxy :: Proxy EditsValidateResource)
-                      mempty
diff --git a/gen/Network/Google/Resource/AndroidPublisher/InAppProducts/Delete.hs b/gen/Network/Google/Resource/AndroidPublisher/InAppProducts/Delete.hs
deleted file mode 100644
--- a/gen/Network/Google/Resource/AndroidPublisher/InAppProducts/Delete.hs
+++ /dev/null
@@ -1,102 +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.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)
---
--- Delete an in-app product for an app.
---
--- /See:/ <https://developers.google.com/android-publisher Google Play Developer API Reference> for @androidpublisher.inappproducts.delete@.
-module Network.Google.Resource.AndroidPublisher.InAppProducts.Delete
-    (
-    -- * REST Resource
-      InAppProductsDeleteResource
-
-    -- * Creating a Request
-    , inAppProductsDelete
-    , InAppProductsDelete
-
-    -- * Request Lenses
-    , iapdPackageName
-    , iapdSKU
-    ) where
-
-import           Network.Google.AndroidPublisher.Types
-import           Network.Google.Prelude
-
--- | A resource alias for @androidpublisher.inappproducts.delete@ method which the
--- 'InAppProductsDelete' request conforms to.
-type InAppProductsDeleteResource =
-     "androidpublisher" :>
-       "v3" :>
-         "applications" :>
-           Capture "packageName" Text :>
-             "inappproducts" :>
-               Capture "sku" Text :>
-                 QueryParam "alt" AltJSON :> Delete '[JSON] ()
-
--- | Delete an in-app product for an app.
---
--- /See:/ 'inAppProductsDelete' smart constructor.
-data InAppProductsDelete =
-  InAppProductsDelete'
-    { _iapdPackageName :: !Text
-    , _iapdSKU         :: !Text
-    }
-  deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'InAppProductsDelete' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'iapdPackageName'
---
--- * 'iapdSKU'
-inAppProductsDelete
-    :: Text -- ^ 'iapdPackageName'
-    -> Text -- ^ 'iapdSKU'
-    -> InAppProductsDelete
-inAppProductsDelete pIapdPackageName_ pIapdSKU_ =
-  InAppProductsDelete'
-    {_iapdPackageName = pIapdPackageName_, _iapdSKU = pIapdSKU_}
-
-
--- | Unique identifier for the Android app with the in-app product; for
--- example, \"com.spiffygame\".
-iapdPackageName :: Lens' InAppProductsDelete Text
-iapdPackageName
-  = lens _iapdPackageName
-      (\ s a -> s{_iapdPackageName = a})
-
--- | Unique identifier for the in-app product.
-iapdSKU :: Lens' InAppProductsDelete Text
-iapdSKU = lens _iapdSKU (\ s a -> s{_iapdSKU = a})
-
-instance GoogleRequest InAppProductsDelete where
-        type Rs InAppProductsDelete = ()
-        type Scopes InAppProductsDelete =
-             '["https://www.googleapis.com/auth/androidpublisher"]
-        requestClient InAppProductsDelete'{..}
-          = go _iapdPackageName _iapdSKU (Just AltJSON)
-              androidPublisherService
-          where go
-                  = buildClient
-                      (Proxy :: Proxy InAppProductsDeleteResource)
-                      mempty
diff --git a/gen/Network/Google/Resource/AndroidPublisher/InAppProducts/Get.hs b/gen/Network/Google/Resource/AndroidPublisher/InAppProducts/Get.hs
deleted file mode 100644
--- a/gen/Network/Google/Resource/AndroidPublisher/InAppProducts/Get.hs
+++ /dev/null
@@ -1,99 +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.Get
--- Copyright   : (c) 2015-2016 Brendan Hay
--- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
--- Stability   : auto-generated
--- Portability : non-portable (GHC extensions)
---
--- Returns information about the in-app product specified.
---
--- /See:/ <https://developers.google.com/android-publisher Google Play Developer API Reference> for @androidpublisher.inappproducts.get@.
-module Network.Google.Resource.AndroidPublisher.InAppProducts.Get
-    (
-    -- * REST Resource
-      InAppProductsGetResource
-
-    -- * Creating a Request
-    , inAppProductsGet
-    , InAppProductsGet
-
-    -- * Request Lenses
-    , iapgPackageName
-    , iapgSKU
-    ) where
-
-import           Network.Google.AndroidPublisher.Types
-import           Network.Google.Prelude
-
--- | A resource alias for @androidpublisher.inappproducts.get@ method which the
--- 'InAppProductsGet' request conforms to.
-type InAppProductsGetResource =
-     "androidpublisher" :>
-       "v3" :>
-         "applications" :>
-           Capture "packageName" Text :>
-             "inappproducts" :>
-               Capture "sku" Text :>
-                 QueryParam "alt" AltJSON :> Get '[JSON] InAppProduct
-
--- | Returns information about the in-app product specified.
---
--- /See:/ 'inAppProductsGet' smart constructor.
-data InAppProductsGet =
-  InAppProductsGet'
-    { _iapgPackageName :: !Text
-    , _iapgSKU         :: !Text
-    }
-  deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'InAppProductsGet' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'iapgPackageName'
---
--- * 'iapgSKU'
-inAppProductsGet
-    :: Text -- ^ 'iapgPackageName'
-    -> Text -- ^ 'iapgSKU'
-    -> InAppProductsGet
-inAppProductsGet pIapgPackageName_ pIapgSKU_ =
-  InAppProductsGet' {_iapgPackageName = pIapgPackageName_, _iapgSKU = pIapgSKU_}
-
-
-iapgPackageName :: Lens' InAppProductsGet Text
-iapgPackageName
-  = lens _iapgPackageName
-      (\ s a -> s{_iapgPackageName = a})
-
--- | Unique identifier for the in-app product.
-iapgSKU :: Lens' InAppProductsGet Text
-iapgSKU = lens _iapgSKU (\ s a -> s{_iapgSKU = a})
-
-instance GoogleRequest InAppProductsGet where
-        type Rs InAppProductsGet = InAppProduct
-        type Scopes InAppProductsGet =
-             '["https://www.googleapis.com/auth/androidpublisher"]
-        requestClient InAppProductsGet'{..}
-          = go _iapgPackageName _iapgSKU (Just AltJSON)
-              androidPublisherService
-          where go
-                  = buildClient
-                      (Proxy :: Proxy InAppProductsGetResource)
-                      mempty
diff --git a/gen/Network/Google/Resource/AndroidPublisher/InAppProducts/Insert.hs b/gen/Network/Google/Resource/AndroidPublisher/InAppProducts/Insert.hs
deleted file mode 100644
--- a/gen/Network/Google/Resource/AndroidPublisher/InAppProducts/Insert.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.InAppProducts.Insert
--- 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)
---
--- Creates a new in-app product for an app.
---
--- /See:/ <https://developers.google.com/android-publisher Google Play Developer API Reference> for @androidpublisher.inappproducts.insert@.
-module Network.Google.Resource.AndroidPublisher.InAppProducts.Insert
-    (
-    -- * REST Resource
-      InAppProductsInsertResource
-
-    -- * Creating a Request
-    , inAppProductsInsert
-    , InAppProductsInsert
-
-    -- * Request Lenses
-    , iapiAutoConvertMissingPrices
-    , iapiPackageName
-    , iapiPayload
-    ) where
-
-import           Network.Google.AndroidPublisher.Types
-import           Network.Google.Prelude
-
--- | A resource alias for @androidpublisher.inappproducts.insert@ method which the
--- 'InAppProductsInsert' request conforms to.
-type InAppProductsInsertResource =
-     "androidpublisher" :>
-       "v3" :>
-         "applications" :>
-           Capture "packageName" Text :>
-             "inappproducts" :>
-               QueryParam "autoConvertMissingPrices" Bool :>
-                 QueryParam "alt" AltJSON :>
-                   ReqBody '[JSON] InAppProduct :>
-                     Post '[JSON] InAppProduct
-
--- | Creates a new in-app product for an app.
---
--- /See:/ 'inAppProductsInsert' smart constructor.
-data InAppProductsInsert =
-  InAppProductsInsert'
-    { _iapiAutoConvertMissingPrices :: !(Maybe Bool)
-    , _iapiPackageName              :: !Text
-    , _iapiPayload                  :: !InAppProduct
-    }
-  deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'InAppProductsInsert' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'iapiAutoConvertMissingPrices'
---
--- * 'iapiPackageName'
---
--- * 'iapiPayload'
-inAppProductsInsert
-    :: Text -- ^ 'iapiPackageName'
-    -> InAppProduct -- ^ 'iapiPayload'
-    -> InAppProductsInsert
-inAppProductsInsert pIapiPackageName_ pIapiPayload_ =
-  InAppProductsInsert'
-    { _iapiAutoConvertMissingPrices = Nothing
-    , _iapiPackageName = pIapiPackageName_
-    , _iapiPayload = pIapiPayload_
-    }
-
-
--- | If true the prices for all regions targeted by the parent app that
--- don\'t have a price specified for this in-app product will be auto
--- converted to the target currency based on the default price. Defaults to
--- false.
-iapiAutoConvertMissingPrices :: Lens' InAppProductsInsert (Maybe Bool)
-iapiAutoConvertMissingPrices
-  = lens _iapiAutoConvertMissingPrices
-      (\ s a -> s{_iapiAutoConvertMissingPrices = a})
-
--- | Unique identifier for the Android app; for example, \"com.spiffygame\".
-iapiPackageName :: Lens' InAppProductsInsert Text
-iapiPackageName
-  = lens _iapiPackageName
-      (\ s a -> s{_iapiPackageName = a})
-
--- | Multipart request metadata.
-iapiPayload :: Lens' InAppProductsInsert InAppProduct
-iapiPayload
-  = lens _iapiPayload (\ s a -> s{_iapiPayload = a})
-
-instance GoogleRequest InAppProductsInsert where
-        type Rs InAppProductsInsert = InAppProduct
-        type Scopes InAppProductsInsert =
-             '["https://www.googleapis.com/auth/androidpublisher"]
-        requestClient InAppProductsInsert'{..}
-          = go _iapiPackageName _iapiAutoConvertMissingPrices
-              (Just AltJSON)
-              _iapiPayload
-              androidPublisherService
-          where go
-                  = buildClient
-                      (Proxy :: Proxy InAppProductsInsertResource)
-                      mempty
diff --git a/gen/Network/Google/Resource/AndroidPublisher/InAppProducts/List.hs b/gen/Network/Google/Resource/AndroidPublisher/InAppProducts/List.hs
deleted file mode 100644
--- a/gen/Network/Google/Resource/AndroidPublisher/InAppProducts/List.hs
+++ /dev/null
@@ -1,132 +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.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)
---
--- List all the in-app products for an Android app, both subscriptions and
--- managed in-app products..
---
--- /See:/ <https://developers.google.com/android-publisher Google Play Developer API Reference> for @androidpublisher.inappproducts.list@.
-module Network.Google.Resource.AndroidPublisher.InAppProducts.List
-    (
-    -- * REST Resource
-      InAppProductsListResource
-
-    -- * Creating a Request
-    , inAppProductsList
-    , InAppProductsList
-
-    -- * Request Lenses
-    , iaplPackageName
-    , iaplToken
-    , iaplStartIndex
-    , iaplMaxResults
-    ) where
-
-import           Network.Google.AndroidPublisher.Types
-import           Network.Google.Prelude
-
--- | A resource alias for @androidpublisher.inappproducts.list@ method which the
--- 'InAppProductsList' request conforms to.
-type InAppProductsListResource =
-     "androidpublisher" :>
-       "v3" :>
-         "applications" :>
-           Capture "packageName" Text :>
-             "inappproducts" :>
-               QueryParam "token" Text :>
-                 QueryParam "startIndex" (Textual Word32) :>
-                   QueryParam "maxResults" (Textual Word32) :>
-                     QueryParam "alt" AltJSON :>
-                       Get '[JSON] InAppProductsListResponse
-
--- | List all the in-app products for an Android app, both subscriptions and
--- managed in-app products..
---
--- /See:/ 'inAppProductsList' smart constructor.
-data InAppProductsList =
-  InAppProductsList'
-    { _iaplPackageName :: !Text
-    , _iaplToken       :: !(Maybe Text)
-    , _iaplStartIndex  :: !(Maybe (Textual Word32))
-    , _iaplMaxResults  :: !(Maybe (Textual Word32))
-    }
-  deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'InAppProductsList' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'iaplPackageName'
---
--- * 'iaplToken'
---
--- * 'iaplStartIndex'
---
--- * 'iaplMaxResults'
-inAppProductsList
-    :: Text -- ^ 'iaplPackageName'
-    -> InAppProductsList
-inAppProductsList pIaplPackageName_ =
-  InAppProductsList'
-    { _iaplPackageName = pIaplPackageName_
-    , _iaplToken = Nothing
-    , _iaplStartIndex = Nothing
-    , _iaplMaxResults = Nothing
-    }
-
-
--- | Unique identifier for the Android app with in-app products; for example,
--- \"com.spiffygame\".
-iaplPackageName :: Lens' InAppProductsList Text
-iaplPackageName
-  = lens _iaplPackageName
-      (\ s a -> s{_iaplPackageName = a})
-
-iaplToken :: Lens' InAppProductsList (Maybe Text)
-iaplToken
-  = lens _iaplToken (\ s a -> s{_iaplToken = a})
-
-iaplStartIndex :: Lens' InAppProductsList (Maybe Word32)
-iaplStartIndex
-  = lens _iaplStartIndex
-      (\ s a -> s{_iaplStartIndex = a})
-      . mapping _Coerce
-
-iaplMaxResults :: Lens' InAppProductsList (Maybe Word32)
-iaplMaxResults
-  = lens _iaplMaxResults
-      (\ s a -> s{_iaplMaxResults = a})
-      . mapping _Coerce
-
-instance GoogleRequest InAppProductsList where
-        type Rs InAppProductsList = InAppProductsListResponse
-        type Scopes InAppProductsList =
-             '["https://www.googleapis.com/auth/androidpublisher"]
-        requestClient InAppProductsList'{..}
-          = go _iaplPackageName _iaplToken _iaplStartIndex
-              _iaplMaxResults
-              (Just AltJSON)
-              androidPublisherService
-          where go
-                  = buildClient
-                      (Proxy :: Proxy InAppProductsListResource)
-                      mempty
diff --git a/gen/Network/Google/Resource/AndroidPublisher/InAppProducts/Patch.hs b/gen/Network/Google/Resource/AndroidPublisher/InAppProducts/Patch.hs
deleted file mode 100644
--- a/gen/Network/Google/Resource/AndroidPublisher/InAppProducts/Patch.hs
+++ /dev/null
@@ -1,137 +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.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 the details of an in-app product. This method supports patch
--- semantics.
---
--- /See:/ <https://developers.google.com/android-publisher Google Play Developer API Reference> for @androidpublisher.inappproducts.patch@.
-module Network.Google.Resource.AndroidPublisher.InAppProducts.Patch
-    (
-    -- * REST Resource
-      InAppProductsPatchResource
-
-    -- * Creating a Request
-    , inAppProductsPatch
-    , InAppProductsPatch
-
-    -- * Request Lenses
-    , iAppAutoConvertMissingPrices
-    , iAppPackageName
-    , iAppPayload
-    , iAppSKU
-    ) where
-
-import           Network.Google.AndroidPublisher.Types
-import           Network.Google.Prelude
-
--- | A resource alias for @androidpublisher.inappproducts.patch@ method which the
--- 'InAppProductsPatch' request conforms to.
-type InAppProductsPatchResource =
-     "androidpublisher" :>
-       "v3" :>
-         "applications" :>
-           Capture "packageName" Text :>
-             "inappproducts" :>
-               Capture "sku" Text :>
-                 QueryParam "autoConvertMissingPrices" Bool :>
-                   QueryParam "alt" AltJSON :>
-                     ReqBody '[JSON] InAppProduct :>
-                       Patch '[JSON] InAppProduct
-
--- | Updates the details of an in-app product. This method supports patch
--- semantics.
---
--- /See:/ 'inAppProductsPatch' smart constructor.
-data InAppProductsPatch =
-  InAppProductsPatch'
-    { _iAppAutoConvertMissingPrices :: !(Maybe Bool)
-    , _iAppPackageName              :: !Text
-    , _iAppPayload                  :: !InAppProduct
-    , _iAppSKU                      :: !Text
-    }
-  deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'InAppProductsPatch' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'iAppAutoConvertMissingPrices'
---
--- * 'iAppPackageName'
---
--- * 'iAppPayload'
---
--- * 'iAppSKU'
-inAppProductsPatch
-    :: Text -- ^ 'iAppPackageName'
-    -> InAppProduct -- ^ 'iAppPayload'
-    -> Text -- ^ 'iAppSKU'
-    -> InAppProductsPatch
-inAppProductsPatch pIAppPackageName_ pIAppPayload_ pIAppSKU_ =
-  InAppProductsPatch'
-    { _iAppAutoConvertMissingPrices = Nothing
-    , _iAppPackageName = pIAppPackageName_
-    , _iAppPayload = pIAppPayload_
-    , _iAppSKU = pIAppSKU_
-    }
-
-
--- | If true the prices for all regions targeted by the parent app that
--- don\'t have a price specified for this in-app product will be auto
--- converted to the target currency based on the default price. Defaults to
--- false.
-iAppAutoConvertMissingPrices :: Lens' InAppProductsPatch (Maybe Bool)
-iAppAutoConvertMissingPrices
-  = lens _iAppAutoConvertMissingPrices
-      (\ s a -> s{_iAppAutoConvertMissingPrices = a})
-
--- | Unique identifier for the Android app with the in-app product; for
--- example, \"com.spiffygame\".
-iAppPackageName :: Lens' InAppProductsPatch Text
-iAppPackageName
-  = lens _iAppPackageName
-      (\ s a -> s{_iAppPackageName = a})
-
--- | Multipart request metadata.
-iAppPayload :: Lens' InAppProductsPatch InAppProduct
-iAppPayload
-  = lens _iAppPayload (\ s a -> s{_iAppPayload = a})
-
--- | Unique identifier for the in-app product.
-iAppSKU :: Lens' InAppProductsPatch Text
-iAppSKU = lens _iAppSKU (\ s a -> s{_iAppSKU = a})
-
-instance GoogleRequest InAppProductsPatch where
-        type Rs InAppProductsPatch = InAppProduct
-        type Scopes InAppProductsPatch =
-             '["https://www.googleapis.com/auth/androidpublisher"]
-        requestClient InAppProductsPatch'{..}
-          = go _iAppPackageName _iAppSKU
-              _iAppAutoConvertMissingPrices
-              (Just AltJSON)
-              _iAppPayload
-              androidPublisherService
-          where go
-                  = buildClient
-                      (Proxy :: Proxy InAppProductsPatchResource)
-                      mempty
diff --git a/gen/Network/Google/Resource/AndroidPublisher/InAppProducts/Update.hs b/gen/Network/Google/Resource/AndroidPublisher/InAppProducts/Update.hs
deleted file mode 100644
--- a/gen/Network/Google/Resource/AndroidPublisher/InAppProducts/Update.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.InAppProducts.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 the details of an in-app product.
---
--- /See:/ <https://developers.google.com/android-publisher Google Play Developer API Reference> for @androidpublisher.inappproducts.update@.
-module Network.Google.Resource.AndroidPublisher.InAppProducts.Update
-    (
-    -- * REST Resource
-      InAppProductsUpdateResource
-
-    -- * Creating a Request
-    , inAppProductsUpdate
-    , InAppProductsUpdate
-
-    -- * Request Lenses
-    , iapuAutoConvertMissingPrices
-    , iapuPackageName
-    , iapuPayload
-    , iapuSKU
-    ) where
-
-import           Network.Google.AndroidPublisher.Types
-import           Network.Google.Prelude
-
--- | A resource alias for @androidpublisher.inappproducts.update@ method which the
--- 'InAppProductsUpdate' request conforms to.
-type InAppProductsUpdateResource =
-     "androidpublisher" :>
-       "v3" :>
-         "applications" :>
-           Capture "packageName" Text :>
-             "inappproducts" :>
-               Capture "sku" Text :>
-                 QueryParam "autoConvertMissingPrices" Bool :>
-                   QueryParam "alt" AltJSON :>
-                     ReqBody '[JSON] InAppProduct :>
-                       Put '[JSON] InAppProduct
-
--- | Updates the details of an in-app product.
---
--- /See:/ 'inAppProductsUpdate' smart constructor.
-data InAppProductsUpdate =
-  InAppProductsUpdate'
-    { _iapuAutoConvertMissingPrices :: !(Maybe Bool)
-    , _iapuPackageName              :: !Text
-    , _iapuPayload                  :: !InAppProduct
-    , _iapuSKU                      :: !Text
-    }
-  deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'InAppProductsUpdate' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'iapuAutoConvertMissingPrices'
---
--- * 'iapuPackageName'
---
--- * 'iapuPayload'
---
--- * 'iapuSKU'
-inAppProductsUpdate
-    :: Text -- ^ 'iapuPackageName'
-    -> InAppProduct -- ^ 'iapuPayload'
-    -> Text -- ^ 'iapuSKU'
-    -> InAppProductsUpdate
-inAppProductsUpdate pIapuPackageName_ pIapuPayload_ pIapuSKU_ =
-  InAppProductsUpdate'
-    { _iapuAutoConvertMissingPrices = Nothing
-    , _iapuPackageName = pIapuPackageName_
-    , _iapuPayload = pIapuPayload_
-    , _iapuSKU = pIapuSKU_
-    }
-
-
--- | If true the prices for all regions targeted by the parent app that
--- don\'t have a price specified for this in-app product will be auto
--- converted to the target currency based on the default price. Defaults to
--- false.
-iapuAutoConvertMissingPrices :: Lens' InAppProductsUpdate (Maybe Bool)
-iapuAutoConvertMissingPrices
-  = lens _iapuAutoConvertMissingPrices
-      (\ s a -> s{_iapuAutoConvertMissingPrices = a})
-
--- | Unique identifier for the Android app with the in-app product; for
--- example, \"com.spiffygame\".
-iapuPackageName :: Lens' InAppProductsUpdate Text
-iapuPackageName
-  = lens _iapuPackageName
-      (\ s a -> s{_iapuPackageName = a})
-
--- | Multipart request metadata.
-iapuPayload :: Lens' InAppProductsUpdate InAppProduct
-iapuPayload
-  = lens _iapuPayload (\ s a -> s{_iapuPayload = a})
-
--- | Unique identifier for the in-app product.
-iapuSKU :: Lens' InAppProductsUpdate Text
-iapuSKU = lens _iapuSKU (\ s a -> s{_iapuSKU = a})
-
-instance GoogleRequest InAppProductsUpdate where
-        type Rs InAppProductsUpdate = InAppProduct
-        type Scopes InAppProductsUpdate =
-             '["https://www.googleapis.com/auth/androidpublisher"]
-        requestClient InAppProductsUpdate'{..}
-          = go _iapuPackageName _iapuSKU
-              _iapuAutoConvertMissingPrices
-              (Just AltJSON)
-              _iapuPayload
-              androidPublisherService
-          where go
-                  = buildClient
-                      (Proxy :: Proxy InAppProductsUpdateResource)
-                      mempty
diff --git a/gen/Network/Google/Resource/AndroidPublisher/Orders/Refund.hs b/gen/Network/Google/Resource/AndroidPublisher/Orders/Refund.hs
deleted file mode 100644
--- a/gen/Network/Google/Resource/AndroidPublisher/Orders/Refund.hs
+++ /dev/null
@@ -1,120 +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.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
deleted file mode 100644
--- a/gen/Network/Google/Resource/AndroidPublisher/Purchases/Products/Get.hs
+++ /dev/null
@@ -1,121 +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.Purchases.Products.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)
---
--- Checks the purchase and consumption status of an inapp item.
---
--- /See:/ <https://developers.google.com/android-publisher Google Play Developer API Reference> for @androidpublisher.purchases.products.get@.
-module Network.Google.Resource.AndroidPublisher.Purchases.Products.Get
-    (
-    -- * REST Resource
-      PurchasesProductsGetResource
-
-    -- * Creating a Request
-    , purchasesProductsGet
-    , PurchasesProductsGet
-
-    -- * Request Lenses
-    , ppgPackageName
-    , ppgToken
-    , ppgProductId
-    ) where
-
-import           Network.Google.AndroidPublisher.Types
-import           Network.Google.Prelude
-
--- | A resource alias for @androidpublisher.purchases.products.get@ method which the
--- 'PurchasesProductsGet' request conforms to.
-type PurchasesProductsGetResource =
-     "androidpublisher" :>
-       "v3" :>
-         "applications" :>
-           Capture "packageName" Text :>
-             "purchases" :>
-               "products" :>
-                 Capture "productId" Text :>
-                   "tokens" :>
-                     Capture "token" Text :>
-                       QueryParam "alt" AltJSON :>
-                         Get '[JSON] ProductPurchase
-
--- | Checks the purchase and consumption status of an inapp item.
---
--- /See:/ 'purchasesProductsGet' smart constructor.
-data PurchasesProductsGet =
-  PurchasesProductsGet'
-    { _ppgPackageName :: !Text
-    , _ppgToken       :: !Text
-    , _ppgProductId   :: !Text
-    }
-  deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'PurchasesProductsGet' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'ppgPackageName'
---
--- * 'ppgToken'
---
--- * 'ppgProductId'
-purchasesProductsGet
-    :: Text -- ^ 'ppgPackageName'
-    -> Text -- ^ 'ppgToken'
-    -> Text -- ^ 'ppgProductId'
-    -> PurchasesProductsGet
-purchasesProductsGet pPpgPackageName_ pPpgToken_ pPpgProductId_ =
-  PurchasesProductsGet'
-    { _ppgPackageName = pPpgPackageName_
-    , _ppgToken = pPpgToken_
-    , _ppgProductId = pPpgProductId_
-    }
-
-
--- | The package name of the application the inapp product was sold in (for
--- example, \'com.some.thing\').
-ppgPackageName :: Lens' PurchasesProductsGet Text
-ppgPackageName
-  = lens _ppgPackageName
-      (\ s a -> s{_ppgPackageName = a})
-
--- | The token provided to the user\'s device when the inapp product was
--- purchased.
-ppgToken :: Lens' PurchasesProductsGet Text
-ppgToken = lens _ppgToken (\ s a -> s{_ppgToken = a})
-
--- | The inapp product SKU (for example, \'com.some.thing.inapp1\').
-ppgProductId :: Lens' PurchasesProductsGet Text
-ppgProductId
-  = lens _ppgProductId (\ s a -> s{_ppgProductId = a})
-
-instance GoogleRequest PurchasesProductsGet where
-        type Rs PurchasesProductsGet = ProductPurchase
-        type Scopes PurchasesProductsGet =
-             '["https://www.googleapis.com/auth/androidpublisher"]
-        requestClient PurchasesProductsGet'{..}
-          = go _ppgPackageName _ppgProductId _ppgToken
-              (Just AltJSON)
-              androidPublisherService
-          where go
-                  = buildClient
-                      (Proxy :: Proxy PurchasesProductsGetResource)
-                      mempty
diff --git a/gen/Network/Google/Resource/AndroidPublisher/Purchases/Subscriptions/Cancel.hs b/gen/Network/Google/Resource/AndroidPublisher/Purchases/Subscriptions/Cancel.hs
deleted file mode 100644
--- a/gen/Network/Google/Resource/AndroidPublisher/Purchases/Subscriptions/Cancel.hs
+++ /dev/null
@@ -1,124 +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.Purchases.Subscriptions.Cancel
--- 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)
---
--- Cancels a user\'s subscription purchase. The subscription remains valid
--- until its expiration time.
---
--- /See:/ <https://developers.google.com/android-publisher Google Play Developer API Reference> for @androidpublisher.purchases.subscriptions.cancel@.
-module Network.Google.Resource.AndroidPublisher.Purchases.Subscriptions.Cancel
-    (
-    -- * REST Resource
-      PurchasesSubscriptionsCancelResource
-
-    -- * Creating a Request
-    , purchasesSubscriptionsCancel
-    , PurchasesSubscriptionsCancel
-
-    -- * Request Lenses
-    , pscPackageName
-    , pscToken
-    , pscSubscriptionId
-    ) where
-
-import           Network.Google.AndroidPublisher.Types
-import           Network.Google.Prelude
-
--- | A resource alias for @androidpublisher.purchases.subscriptions.cancel@ method which the
--- 'PurchasesSubscriptionsCancel' request conforms to.
-type PurchasesSubscriptionsCancelResource =
-     "androidpublisher" :>
-       "v3" :>
-         "applications" :>
-           Capture "packageName" Text :>
-             "purchases" :>
-               "subscriptions" :>
-                 Capture "subscriptionId" Text :>
-                   "tokens" :>
-                     CaptureMode "token" "cancel" Text :>
-                       QueryParam "alt" AltJSON :> Post '[JSON] ()
-
--- | Cancels a user\'s subscription purchase. The subscription remains valid
--- until its expiration time.
---
--- /See:/ 'purchasesSubscriptionsCancel' smart constructor.
-data PurchasesSubscriptionsCancel =
-  PurchasesSubscriptionsCancel'
-    { _pscPackageName    :: !Text
-    , _pscToken          :: !Text
-    , _pscSubscriptionId :: !Text
-    }
-  deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'PurchasesSubscriptionsCancel' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'pscPackageName'
---
--- * 'pscToken'
---
--- * 'pscSubscriptionId'
-purchasesSubscriptionsCancel
-    :: Text -- ^ 'pscPackageName'
-    -> Text -- ^ 'pscToken'
-    -> Text -- ^ 'pscSubscriptionId'
-    -> PurchasesSubscriptionsCancel
-purchasesSubscriptionsCancel pPscPackageName_ pPscToken_ pPscSubscriptionId_ =
-  PurchasesSubscriptionsCancel'
-    { _pscPackageName = pPscPackageName_
-    , _pscToken = pPscToken_
-    , _pscSubscriptionId = pPscSubscriptionId_
-    }
-
-
--- | The package name of the application for which this subscription was
--- purchased (for example, \'com.some.thing\').
-pscPackageName :: Lens' PurchasesSubscriptionsCancel Text
-pscPackageName
-  = lens _pscPackageName
-      (\ s a -> s{_pscPackageName = a})
-
--- | The token provided to the user\'s device when the subscription was
--- purchased.
-pscToken :: Lens' PurchasesSubscriptionsCancel Text
-pscToken = lens _pscToken (\ s a -> s{_pscToken = a})
-
--- | The purchased subscription ID (for example, \'monthly001\').
-pscSubscriptionId :: Lens' PurchasesSubscriptionsCancel Text
-pscSubscriptionId
-  = lens _pscSubscriptionId
-      (\ s a -> s{_pscSubscriptionId = a})
-
-instance GoogleRequest PurchasesSubscriptionsCancel
-         where
-        type Rs PurchasesSubscriptionsCancel = ()
-        type Scopes PurchasesSubscriptionsCancel =
-             '["https://www.googleapis.com/auth/androidpublisher"]
-        requestClient PurchasesSubscriptionsCancel'{..}
-          = go _pscPackageName _pscSubscriptionId _pscToken
-              (Just AltJSON)
-              androidPublisherService
-          where go
-                  = buildClient
-                      (Proxy :: Proxy PurchasesSubscriptionsCancelResource)
-                      mempty
diff --git a/gen/Network/Google/Resource/AndroidPublisher/Purchases/Subscriptions/Defer.hs b/gen/Network/Google/Resource/AndroidPublisher/Purchases/Subscriptions/Defer.hs
deleted file mode 100644
--- a/gen/Network/Google/Resource/AndroidPublisher/Purchases/Subscriptions/Defer.hs
+++ /dev/null
@@ -1,139 +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.Purchases.Subscriptions.Defer
--- 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)
---
--- Defers a user\'s subscription purchase until a specified future
--- expiration time.
---
--- /See:/ <https://developers.google.com/android-publisher Google Play Developer API Reference> for @androidpublisher.purchases.subscriptions.defer@.
-module Network.Google.Resource.AndroidPublisher.Purchases.Subscriptions.Defer
-    (
-    -- * REST Resource
-      PurchasesSubscriptionsDeferResource
-
-    -- * Creating a Request
-    , purchasesSubscriptionsDefer
-    , PurchasesSubscriptionsDefer
-
-    -- * Request Lenses
-    , psdPackageName
-    , psdToken
-    , psdPayload
-    , psdSubscriptionId
-    ) where
-
-import           Network.Google.AndroidPublisher.Types
-import           Network.Google.Prelude
-
--- | A resource alias for @androidpublisher.purchases.subscriptions.defer@ method which the
--- 'PurchasesSubscriptionsDefer' request conforms to.
-type PurchasesSubscriptionsDeferResource =
-     "androidpublisher" :>
-       "v3" :>
-         "applications" :>
-           Capture "packageName" Text :>
-             "purchases" :>
-               "subscriptions" :>
-                 Capture "subscriptionId" Text :>
-                   "tokens" :>
-                     CaptureMode "token" "defer" Text :>
-                       QueryParam "alt" AltJSON :>
-                         ReqBody '[JSON] SubscriptionPurchasesDeferRequest :>
-                           Post '[JSON] SubscriptionPurchasesDeferResponse
-
--- | Defers a user\'s subscription purchase until a specified future
--- expiration time.
---
--- /See:/ 'purchasesSubscriptionsDefer' smart constructor.
-data PurchasesSubscriptionsDefer =
-  PurchasesSubscriptionsDefer'
-    { _psdPackageName    :: !Text
-    , _psdToken          :: !Text
-    , _psdPayload        :: !SubscriptionPurchasesDeferRequest
-    , _psdSubscriptionId :: !Text
-    }
-  deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'PurchasesSubscriptionsDefer' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'psdPackageName'
---
--- * 'psdToken'
---
--- * 'psdPayload'
---
--- * 'psdSubscriptionId'
-purchasesSubscriptionsDefer
-    :: Text -- ^ 'psdPackageName'
-    -> Text -- ^ 'psdToken'
-    -> SubscriptionPurchasesDeferRequest -- ^ 'psdPayload'
-    -> Text -- ^ 'psdSubscriptionId'
-    -> PurchasesSubscriptionsDefer
-purchasesSubscriptionsDefer pPsdPackageName_ pPsdToken_ pPsdPayload_ pPsdSubscriptionId_ =
-  PurchasesSubscriptionsDefer'
-    { _psdPackageName = pPsdPackageName_
-    , _psdToken = pPsdToken_
-    , _psdPayload = pPsdPayload_
-    , _psdSubscriptionId = pPsdSubscriptionId_
-    }
-
-
--- | The package name of the application for which this subscription was
--- purchased (for example, \'com.some.thing\').
-psdPackageName :: Lens' PurchasesSubscriptionsDefer Text
-psdPackageName
-  = lens _psdPackageName
-      (\ s a -> s{_psdPackageName = a})
-
--- | The token provided to the user\'s device when the subscription was
--- purchased.
-psdToken :: Lens' PurchasesSubscriptionsDefer Text
-psdToken = lens _psdToken (\ s a -> s{_psdToken = a})
-
--- | Multipart request metadata.
-psdPayload :: Lens' PurchasesSubscriptionsDefer SubscriptionPurchasesDeferRequest
-psdPayload
-  = lens _psdPayload (\ s a -> s{_psdPayload = a})
-
--- | The purchased subscription ID (for example, \'monthly001\').
-psdSubscriptionId :: Lens' PurchasesSubscriptionsDefer Text
-psdSubscriptionId
-  = lens _psdSubscriptionId
-      (\ s a -> s{_psdSubscriptionId = a})
-
-instance GoogleRequest PurchasesSubscriptionsDefer
-         where
-        type Rs PurchasesSubscriptionsDefer =
-             SubscriptionPurchasesDeferResponse
-        type Scopes PurchasesSubscriptionsDefer =
-             '["https://www.googleapis.com/auth/androidpublisher"]
-        requestClient PurchasesSubscriptionsDefer'{..}
-          = go _psdPackageName _psdSubscriptionId _psdToken
-              (Just AltJSON)
-              _psdPayload
-              androidPublisherService
-          where go
-                  = buildClient
-                      (Proxy :: Proxy PurchasesSubscriptionsDeferResource)
-                      mempty
diff --git a/gen/Network/Google/Resource/AndroidPublisher/Purchases/Subscriptions/Get.hs b/gen/Network/Google/Resource/AndroidPublisher/Purchases/Subscriptions/Get.hs
deleted file mode 100644
--- a/gen/Network/Google/Resource/AndroidPublisher/Purchases/Subscriptions/Get.hs
+++ /dev/null
@@ -1,126 +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.Purchases.Subscriptions.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)
---
--- Checks whether a user\'s subscription purchase is valid and returns its
--- expiry time.
---
--- /See:/ <https://developers.google.com/android-publisher Google Play Developer API Reference> for @androidpublisher.purchases.subscriptions.get@.
-module Network.Google.Resource.AndroidPublisher.Purchases.Subscriptions.Get
-    (
-    -- * REST Resource
-      PurchasesSubscriptionsGetResource
-
-    -- * Creating a Request
-    , purchasesSubscriptionsGet
-    , PurchasesSubscriptionsGet
-
-    -- * Request Lenses
-    , psgPackageName
-    , psgToken
-    , psgSubscriptionId
-    ) where
-
-import           Network.Google.AndroidPublisher.Types
-import           Network.Google.Prelude
-
--- | A resource alias for @androidpublisher.purchases.subscriptions.get@ method which the
--- 'PurchasesSubscriptionsGet' request conforms to.
-type PurchasesSubscriptionsGetResource =
-     "androidpublisher" :>
-       "v3" :>
-         "applications" :>
-           Capture "packageName" Text :>
-             "purchases" :>
-               "subscriptions" :>
-                 Capture "subscriptionId" Text :>
-                   "tokens" :>
-                     Capture "token" Text :>
-                       QueryParam "alt" AltJSON :>
-                         Get '[JSON] SubscriptionPurchase
-
--- | Checks whether a user\'s subscription purchase is valid and returns its
--- expiry time.
---
--- /See:/ 'purchasesSubscriptionsGet' smart constructor.
-data PurchasesSubscriptionsGet =
-  PurchasesSubscriptionsGet'
-    { _psgPackageName    :: !Text
-    , _psgToken          :: !Text
-    , _psgSubscriptionId :: !Text
-    }
-  deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'PurchasesSubscriptionsGet' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'psgPackageName'
---
--- * 'psgToken'
---
--- * 'psgSubscriptionId'
-purchasesSubscriptionsGet
-    :: Text -- ^ 'psgPackageName'
-    -> Text -- ^ 'psgToken'
-    -> Text -- ^ 'psgSubscriptionId'
-    -> PurchasesSubscriptionsGet
-purchasesSubscriptionsGet pPsgPackageName_ pPsgToken_ pPsgSubscriptionId_ =
-  PurchasesSubscriptionsGet'
-    { _psgPackageName = pPsgPackageName_
-    , _psgToken = pPsgToken_
-    , _psgSubscriptionId = pPsgSubscriptionId_
-    }
-
-
--- | The package name of the application for which this subscription was
--- purchased (for example, \'com.some.thing\').
-psgPackageName :: Lens' PurchasesSubscriptionsGet Text
-psgPackageName
-  = lens _psgPackageName
-      (\ s a -> s{_psgPackageName = a})
-
--- | The token provided to the user\'s device when the subscription was
--- purchased.
-psgToken :: Lens' PurchasesSubscriptionsGet Text
-psgToken = lens _psgToken (\ s a -> s{_psgToken = a})
-
--- | The purchased subscription ID (for example, \'monthly001\').
-psgSubscriptionId :: Lens' PurchasesSubscriptionsGet Text
-psgSubscriptionId
-  = lens _psgSubscriptionId
-      (\ s a -> s{_psgSubscriptionId = a})
-
-instance GoogleRequest PurchasesSubscriptionsGet
-         where
-        type Rs PurchasesSubscriptionsGet =
-             SubscriptionPurchase
-        type Scopes PurchasesSubscriptionsGet =
-             '["https://www.googleapis.com/auth/androidpublisher"]
-        requestClient PurchasesSubscriptionsGet'{..}
-          = go _psgPackageName _psgSubscriptionId _psgToken
-              (Just AltJSON)
-              androidPublisherService
-          where go
-                  = buildClient
-                      (Proxy :: Proxy PurchasesSubscriptionsGetResource)
-                      mempty
diff --git a/gen/Network/Google/Resource/AndroidPublisher/Purchases/Subscriptions/Refund.hs b/gen/Network/Google/Resource/AndroidPublisher/Purchases/Subscriptions/Refund.hs
deleted file mode 100644
--- a/gen/Network/Google/Resource/AndroidPublisher/Purchases/Subscriptions/Refund.hs
+++ /dev/null
@@ -1,124 +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.Purchases.Subscriptions.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)
---
--- Refunds a user\'s subscription purchase, but the subscription remains
--- valid until its expiration time and it will continue to recur.
---
--- /See:/ <https://developers.google.com/android-publisher Google Play Developer API Reference> for @androidpublisher.purchases.subscriptions.refund@.
-module Network.Google.Resource.AndroidPublisher.Purchases.Subscriptions.Refund
-    (
-    -- * REST Resource
-      PurchasesSubscriptionsRefundResource
-
-    -- * Creating a Request
-    , purchasesSubscriptionsRefund
-    , PurchasesSubscriptionsRefund
-
-    -- * Request Lenses
-    , psrPackageName
-    , psrToken
-    , psrSubscriptionId
-    ) where
-
-import           Network.Google.AndroidPublisher.Types
-import           Network.Google.Prelude
-
--- | A resource alias for @androidpublisher.purchases.subscriptions.refund@ method which the
--- 'PurchasesSubscriptionsRefund' request conforms to.
-type PurchasesSubscriptionsRefundResource =
-     "androidpublisher" :>
-       "v3" :>
-         "applications" :>
-           Capture "packageName" Text :>
-             "purchases" :>
-               "subscriptions" :>
-                 Capture "subscriptionId" Text :>
-                   "tokens" :>
-                     CaptureMode "token" "refund" Text :>
-                       QueryParam "alt" AltJSON :> Post '[JSON] ()
-
--- | Refunds a user\'s subscription purchase, but the subscription remains
--- valid until its expiration time and it will continue to recur.
---
--- /See:/ 'purchasesSubscriptionsRefund' smart constructor.
-data PurchasesSubscriptionsRefund =
-  PurchasesSubscriptionsRefund'
-    { _psrPackageName    :: !Text
-    , _psrToken          :: !Text
-    , _psrSubscriptionId :: !Text
-    }
-  deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'PurchasesSubscriptionsRefund' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'psrPackageName'
---
--- * 'psrToken'
---
--- * 'psrSubscriptionId'
-purchasesSubscriptionsRefund
-    :: Text -- ^ 'psrPackageName'
-    -> Text -- ^ 'psrToken'
-    -> Text -- ^ 'psrSubscriptionId'
-    -> PurchasesSubscriptionsRefund
-purchasesSubscriptionsRefund pPsrPackageName_ pPsrToken_ pPsrSubscriptionId_ =
-  PurchasesSubscriptionsRefund'
-    { _psrPackageName = pPsrPackageName_
-    , _psrToken = pPsrToken_
-    , _psrSubscriptionId = pPsrSubscriptionId_
-    }
-
-
--- | The package name of the application for which this subscription was
--- purchased (for example, \'com.some.thing\').
-psrPackageName :: Lens' PurchasesSubscriptionsRefund Text
-psrPackageName
-  = lens _psrPackageName
-      (\ s a -> s{_psrPackageName = a})
-
--- | The token provided to the user\'s device when the subscription was
--- purchased.
-psrToken :: Lens' PurchasesSubscriptionsRefund Text
-psrToken = lens _psrToken (\ s a -> s{_psrToken = a})
-
--- | The purchased subscription ID (for example, \'monthly001\').
-psrSubscriptionId :: Lens' PurchasesSubscriptionsRefund Text
-psrSubscriptionId
-  = lens _psrSubscriptionId
-      (\ s a -> s{_psrSubscriptionId = a})
-
-instance GoogleRequest PurchasesSubscriptionsRefund
-         where
-        type Rs PurchasesSubscriptionsRefund = ()
-        type Scopes PurchasesSubscriptionsRefund =
-             '["https://www.googleapis.com/auth/androidpublisher"]
-        requestClient PurchasesSubscriptionsRefund'{..}
-          = go _psrPackageName _psrSubscriptionId _psrToken
-              (Just AltJSON)
-              androidPublisherService
-          where go
-                  = buildClient
-                      (Proxy :: Proxy PurchasesSubscriptionsRefundResource)
-                      mempty
diff --git a/gen/Network/Google/Resource/AndroidPublisher/Purchases/Subscriptions/Revoke.hs b/gen/Network/Google/Resource/AndroidPublisher/Purchases/Subscriptions/Revoke.hs
deleted file mode 100644
--- a/gen/Network/Google/Resource/AndroidPublisher/Purchases/Subscriptions/Revoke.hs
+++ /dev/null
@@ -1,125 +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.Purchases.Subscriptions.Revoke
--- 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)
---
--- Refunds and immediately revokes a user\'s subscription purchase. Access
--- to the subscription will be terminated immediately and it will stop
--- recurring.
---
--- /See:/ <https://developers.google.com/android-publisher Google Play Developer API Reference> for @androidpublisher.purchases.subscriptions.revoke@.
-module Network.Google.Resource.AndroidPublisher.Purchases.Subscriptions.Revoke
-    (
-    -- * REST Resource
-      PurchasesSubscriptionsRevokeResource
-
-    -- * Creating a Request
-    , purchasesSubscriptionsRevoke
-    , PurchasesSubscriptionsRevoke
-
-    -- * Request Lenses
-    , pPackageName
-    , pToken
-    , pSubscriptionId
-    ) where
-
-import           Network.Google.AndroidPublisher.Types
-import           Network.Google.Prelude
-
--- | A resource alias for @androidpublisher.purchases.subscriptions.revoke@ method which the
--- 'PurchasesSubscriptionsRevoke' request conforms to.
-type PurchasesSubscriptionsRevokeResource =
-     "androidpublisher" :>
-       "v3" :>
-         "applications" :>
-           Capture "packageName" Text :>
-             "purchases" :>
-               "subscriptions" :>
-                 Capture "subscriptionId" Text :>
-                   "tokens" :>
-                     CaptureMode "token" "revoke" Text :>
-                       QueryParam "alt" AltJSON :> Post '[JSON] ()
-
--- | Refunds and immediately revokes a user\'s subscription purchase. Access
--- to the subscription will be terminated immediately and it will stop
--- recurring.
---
--- /See:/ 'purchasesSubscriptionsRevoke' smart constructor.
-data PurchasesSubscriptionsRevoke =
-  PurchasesSubscriptionsRevoke'
-    { _pPackageName    :: !Text
-    , _pToken          :: !Text
-    , _pSubscriptionId :: !Text
-    }
-  deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'PurchasesSubscriptionsRevoke' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'pPackageName'
---
--- * 'pToken'
---
--- * 'pSubscriptionId'
-purchasesSubscriptionsRevoke
-    :: Text -- ^ 'pPackageName'
-    -> Text -- ^ 'pToken'
-    -> Text -- ^ 'pSubscriptionId'
-    -> PurchasesSubscriptionsRevoke
-purchasesSubscriptionsRevoke pPPackageName_ pPToken_ pPSubscriptionId_ =
-  PurchasesSubscriptionsRevoke'
-    { _pPackageName = pPPackageName_
-    , _pToken = pPToken_
-    , _pSubscriptionId = pPSubscriptionId_
-    }
-
-
--- | The package name of the application for which this subscription was
--- purchased (for example, \'com.some.thing\').
-pPackageName :: Lens' PurchasesSubscriptionsRevoke Text
-pPackageName
-  = lens _pPackageName (\ s a -> s{_pPackageName = a})
-
--- | The token provided to the user\'s device when the subscription was
--- purchased.
-pToken :: Lens' PurchasesSubscriptionsRevoke Text
-pToken = lens _pToken (\ s a -> s{_pToken = a})
-
--- | The purchased subscription ID (for example, \'monthly001\').
-pSubscriptionId :: Lens' PurchasesSubscriptionsRevoke Text
-pSubscriptionId
-  = lens _pSubscriptionId
-      (\ s a -> s{_pSubscriptionId = a})
-
-instance GoogleRequest PurchasesSubscriptionsRevoke
-         where
-        type Rs PurchasesSubscriptionsRevoke = ()
-        type Scopes PurchasesSubscriptionsRevoke =
-             '["https://www.googleapis.com/auth/androidpublisher"]
-        requestClient PurchasesSubscriptionsRevoke'{..}
-          = go _pPackageName _pSubscriptionId _pToken
-              (Just AltJSON)
-              androidPublisherService
-          where go
-                  = buildClient
-                      (Proxy :: Proxy PurchasesSubscriptionsRevokeResource)
-                      mempty
diff --git a/gen/Network/Google/Resource/AndroidPublisher/Purchases/Voidedpurchases/List.hs b/gen/Network/Google/Resource/AndroidPublisher/Purchases/Voidedpurchases/List.hs
deleted file mode 100644
--- a/gen/Network/Google/Resource/AndroidPublisher/Purchases/Voidedpurchases/List.hs
+++ /dev/null
@@ -1,168 +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.Purchases.Voidedpurchases.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 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
-    (
-    -- * REST Resource
-      PurchasesVoidedpurchasesListResource
-
-    -- * Creating a Request
-    , purchasesVoidedpurchasesList
-    , PurchasesVoidedpurchasesList
-
-    -- * Request Lenses
-    , pvlPackageName
-    , pvlStartTime
-    , pvlToken
-    , pvlEndTime
-    , pvlStartIndex
-    , pvlMaxResults
-    ) where
-
-import           Network.Google.AndroidPublisher.Types
-import           Network.Google.Prelude
-
--- | A resource alias for @androidpublisher.purchases.voidedpurchases.list@ method which the
--- 'PurchasesVoidedpurchasesList' request conforms to.
-type PurchasesVoidedpurchasesListResource =
-     "androidpublisher" :>
-       "v3" :>
-         "applications" :>
-           Capture "packageName" Text :>
-             "purchases" :>
-               "voidedpurchases" :>
-                 QueryParam "startTime" (Textual Int64) :>
-                   QueryParam "token" Text :>
-                     QueryParam "endTime" (Textual Int64) :>
-                       QueryParam "startIndex" (Textual Word32) :>
-                         QueryParam "maxResults" (Textual Word32) :>
-                           QueryParam "alt" AltJSON :>
-                             Get '[JSON] VoidedPurchasesListResponse
-
--- | Lists the purchases that were canceled, refunded or charged-back.
---
--- /See:/ 'purchasesVoidedpurchasesList' smart constructor.
-data PurchasesVoidedpurchasesList =
-  PurchasesVoidedpurchasesList'
-    { _pvlPackageName :: !Text
-    , _pvlStartTime   :: !(Maybe (Textual Int64))
-    , _pvlToken       :: !(Maybe Text)
-    , _pvlEndTime     :: !(Maybe (Textual Int64))
-    , _pvlStartIndex  :: !(Maybe (Textual Word32))
-    , _pvlMaxResults  :: !(Maybe (Textual Word32))
-    }
-  deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'PurchasesVoidedpurchasesList' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'pvlPackageName'
---
--- * 'pvlStartTime'
---
--- * 'pvlToken'
---
--- * 'pvlEndTime'
---
--- * 'pvlStartIndex'
---
--- * 'pvlMaxResults'
-purchasesVoidedpurchasesList
-    :: Text -- ^ 'pvlPackageName'
-    -> PurchasesVoidedpurchasesList
-purchasesVoidedpurchasesList pPvlPackageName_ =
-  PurchasesVoidedpurchasesList'
-    { _pvlPackageName = pPvlPackageName_
-    , _pvlStartTime = Nothing
-    , _pvlToken = Nothing
-    , _pvlEndTime = Nothing
-    , _pvlStartIndex = Nothing
-    , _pvlMaxResults = Nothing
-    }
-
-
--- | The package name of the application for which voided purchases need to
--- be returned (for example, \'com.some.thing\').
-pvlPackageName :: Lens' PurchasesVoidedpurchasesList Text
-pvlPackageName
-  = lens _pvlPackageName
-      (\ s a -> s{_pvlPackageName = a})
-
--- | 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. 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})
-      . mapping _Coerce
-
-pvlToken :: Lens' PurchasesVoidedpurchasesList (Maybe Text)
-pvlToken = lens _pvlToken (\ s a -> s{_pvlToken = a})
-
--- | 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. 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}) .
-      mapping _Coerce
-
-pvlStartIndex :: Lens' PurchasesVoidedpurchasesList (Maybe Word32)
-pvlStartIndex
-  = lens _pvlStartIndex
-      (\ s a -> s{_pvlStartIndex = a})
-      . mapping _Coerce
-
-pvlMaxResults :: Lens' PurchasesVoidedpurchasesList (Maybe Word32)
-pvlMaxResults
-  = lens _pvlMaxResults
-      (\ s a -> s{_pvlMaxResults = a})
-      . mapping _Coerce
-
-instance GoogleRequest PurchasesVoidedpurchasesList
-         where
-        type Rs PurchasesVoidedpurchasesList =
-             VoidedPurchasesListResponse
-        type Scopes PurchasesVoidedpurchasesList =
-             '["https://www.googleapis.com/auth/androidpublisher"]
-        requestClient PurchasesVoidedpurchasesList'{..}
-          = go _pvlPackageName _pvlStartTime _pvlToken
-              _pvlEndTime
-              _pvlStartIndex
-              _pvlMaxResults
-              (Just AltJSON)
-              androidPublisherService
-          where go
-                  = buildClient
-                      (Proxy :: Proxy PurchasesVoidedpurchasesListResource)
-                      mempty
diff --git a/gen/Network/Google/Resource/AndroidPublisher/Reviews/Get.hs b/gen/Network/Google/Resource/AndroidPublisher/Reviews/Get.hs
deleted file mode 100644
--- a/gen/Network/Google/Resource/AndroidPublisher/Reviews/Get.hs
+++ /dev/null
@@ -1,116 +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.Reviews.Get
--- Copyright   : (c) 2015-2016 Brendan Hay
--- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
--- Stability   : auto-generated
--- Portability : non-portable (GHC extensions)
---
--- Returns a single review.
---
--- /See:/ <https://developers.google.com/android-publisher Google Play Developer API Reference> for @androidpublisher.reviews.get@.
-module Network.Google.Resource.AndroidPublisher.Reviews.Get
-    (
-    -- * REST Resource
-      ReviewsGetResource
-
-    -- * Creating a Request
-    , reviewsGet
-    , ReviewsGet
-
-    -- * Request Lenses
-    , rgReviewId
-    , rgPackageName
-    , rgTranslationLanguage
-    ) where
-
-import           Network.Google.AndroidPublisher.Types
-import           Network.Google.Prelude
-
--- | A resource alias for @androidpublisher.reviews.get@ method which the
--- 'ReviewsGet' request conforms to.
-type ReviewsGetResource =
-     "androidpublisher" :>
-       "v3" :>
-         "applications" :>
-           Capture "packageName" Text :>
-             "reviews" :>
-               Capture "reviewId" Text :>
-                 QueryParam "translationLanguage" Text :>
-                   QueryParam "alt" AltJSON :> Get '[JSON] Review
-
--- | Returns a single review.
---
--- /See:/ 'reviewsGet' smart constructor.
-data ReviewsGet =
-  ReviewsGet'
-    { _rgReviewId            :: !Text
-    , _rgPackageName         :: !Text
-    , _rgTranslationLanguage :: !(Maybe Text)
-    }
-  deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'ReviewsGet' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'rgReviewId'
---
--- * 'rgPackageName'
---
--- * 'rgTranslationLanguage'
-reviewsGet
-    :: Text -- ^ 'rgReviewId'
-    -> Text -- ^ 'rgPackageName'
-    -> ReviewsGet
-reviewsGet pRgReviewId_ pRgPackageName_ =
-  ReviewsGet'
-    { _rgReviewId = pRgReviewId_
-    , _rgPackageName = pRgPackageName_
-    , _rgTranslationLanguage = Nothing
-    }
-
-
-rgReviewId :: Lens' ReviewsGet Text
-rgReviewId
-  = lens _rgReviewId (\ s a -> s{_rgReviewId = a})
-
--- | Unique identifier for the Android app for which we want reviews; for
--- example, \"com.spiffygame\".
-rgPackageName :: Lens' ReviewsGet Text
-rgPackageName
-  = lens _rgPackageName
-      (\ s a -> s{_rgPackageName = a})
-
-rgTranslationLanguage :: Lens' ReviewsGet (Maybe Text)
-rgTranslationLanguage
-  = lens _rgTranslationLanguage
-      (\ s a -> s{_rgTranslationLanguage = a})
-
-instance GoogleRequest ReviewsGet where
-        type Rs ReviewsGet = Review
-        type Scopes ReviewsGet =
-             '["https://www.googleapis.com/auth/androidpublisher"]
-        requestClient ReviewsGet'{..}
-          = go _rgPackageName _rgReviewId
-              _rgTranslationLanguage
-              (Just AltJSON)
-              androidPublisherService
-          where go
-                  = buildClient (Proxy :: Proxy ReviewsGetResource)
-                      mempty
diff --git a/gen/Network/Google/Resource/AndroidPublisher/Reviews/List.hs b/gen/Network/Google/Resource/AndroidPublisher/Reviews/List.hs
deleted file mode 100644
--- a/gen/Network/Google/Resource/AndroidPublisher/Reviews/List.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.Reviews.List
--- Copyright   : (c) 2015-2016 Brendan Hay
--- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
--- Stability   : auto-generated
--- Portability : non-portable (GHC extensions)
---
--- Returns a list of reviews. 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
-    (
-    -- * REST Resource
-      ReviewsListResource
-
-    -- * Creating a Request
-    , reviewsList
-    , ReviewsList
-
-    -- * Request Lenses
-    , rlPackageName
-    , rlToken
-    , rlTranslationLanguage
-    , rlStartIndex
-    , rlMaxResults
-    ) where
-
-import           Network.Google.AndroidPublisher.Types
-import           Network.Google.Prelude
-
--- | A resource alias for @androidpublisher.reviews.list@ method which the
--- 'ReviewsList' request conforms to.
-type ReviewsListResource =
-     "androidpublisher" :>
-       "v3" :>
-         "applications" :>
-           Capture "packageName" Text :>
-             "reviews" :>
-               QueryParam "token" Text :>
-                 QueryParam "translationLanguage" Text :>
-                   QueryParam "startIndex" (Textual Word32) :>
-                     QueryParam "maxResults" (Textual Word32) :>
-                       QueryParam "alt" AltJSON :>
-                         Get '[JSON] ReviewsListResponse
-
--- | Returns a list of reviews. Only reviews from last week will be returned.
---
--- /See:/ 'reviewsList' smart constructor.
-data ReviewsList =
-  ReviewsList'
-    { _rlPackageName         :: !Text
-    , _rlToken               :: !(Maybe Text)
-    , _rlTranslationLanguage :: !(Maybe Text)
-    , _rlStartIndex          :: !(Maybe (Textual Word32))
-    , _rlMaxResults          :: !(Maybe (Textual Word32))
-    }
-  deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'ReviewsList' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'rlPackageName'
---
--- * 'rlToken'
---
--- * 'rlTranslationLanguage'
---
--- * 'rlStartIndex'
---
--- * 'rlMaxResults'
-reviewsList
-    :: Text -- ^ 'rlPackageName'
-    -> ReviewsList
-reviewsList pRlPackageName_ =
-  ReviewsList'
-    { _rlPackageName = pRlPackageName_
-    , _rlToken = Nothing
-    , _rlTranslationLanguage = Nothing
-    , _rlStartIndex = Nothing
-    , _rlMaxResults = Nothing
-    }
-
-
--- | Unique identifier for the Android app for which we want reviews; for
--- example, \"com.spiffygame\".
-rlPackageName :: Lens' ReviewsList Text
-rlPackageName
-  = lens _rlPackageName
-      (\ s a -> s{_rlPackageName = a})
-
-rlToken :: Lens' ReviewsList (Maybe Text)
-rlToken = lens _rlToken (\ s a -> s{_rlToken = a})
-
-rlTranslationLanguage :: Lens' ReviewsList (Maybe Text)
-rlTranslationLanguage
-  = lens _rlTranslationLanguage
-      (\ s a -> s{_rlTranslationLanguage = a})
-
-rlStartIndex :: Lens' ReviewsList (Maybe Word32)
-rlStartIndex
-  = lens _rlStartIndex (\ s a -> s{_rlStartIndex = a})
-      . mapping _Coerce
-
-rlMaxResults :: Lens' ReviewsList (Maybe Word32)
-rlMaxResults
-  = lens _rlMaxResults (\ s a -> s{_rlMaxResults = a})
-      . mapping _Coerce
-
-instance GoogleRequest ReviewsList where
-        type Rs ReviewsList = ReviewsListResponse
-        type Scopes ReviewsList =
-             '["https://www.googleapis.com/auth/androidpublisher"]
-        requestClient ReviewsList'{..}
-          = go _rlPackageName _rlToken _rlTranslationLanguage
-              _rlStartIndex
-              _rlMaxResults
-              (Just AltJSON)
-              androidPublisherService
-          where go
-                  = buildClient (Proxy :: Proxy ReviewsListResource)
-                      mempty
diff --git a/gen/Network/Google/Resource/AndroidPublisher/Reviews/Reply.hs b/gen/Network/Google/Resource/AndroidPublisher/Reviews/Reply.hs
deleted file mode 100644
--- a/gen/Network/Google/Resource/AndroidPublisher/Reviews/Reply.hs
+++ /dev/null
@@ -1,117 +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.Reviews.Reply
--- Copyright   : (c) 2015-2016 Brendan Hay
--- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
--- Stability   : auto-generated
--- Portability : non-portable (GHC extensions)
---
--- Reply to a single review, or update an existing reply.
---
--- /See:/ <https://developers.google.com/android-publisher Google Play Developer API Reference> for @androidpublisher.reviews.reply@.
-module Network.Google.Resource.AndroidPublisher.Reviews.Reply
-    (
-    -- * REST Resource
-      ReviewsReplyResource
-
-    -- * Creating a Request
-    , reviewsReply
-    , ReviewsReply
-
-    -- * Request Lenses
-    , rrReviewId
-    , rrPackageName
-    , rrPayload
-    ) where
-
-import           Network.Google.AndroidPublisher.Types
-import           Network.Google.Prelude
-
--- | A resource alias for @androidpublisher.reviews.reply@ method which the
--- 'ReviewsReply' request conforms to.
-type ReviewsReplyResource =
-     "androidpublisher" :>
-       "v3" :>
-         "applications" :>
-           Capture "packageName" Text :>
-             "reviews" :>
-               CaptureMode "reviewId" "reply" Text :>
-                 QueryParam "alt" AltJSON :>
-                   ReqBody '[JSON] ReviewsReplyRequest :>
-                     Post '[JSON] ReviewsReplyResponse
-
--- | Reply to a single review, or update an existing reply.
---
--- /See:/ 'reviewsReply' smart constructor.
-data ReviewsReply =
-  ReviewsReply'
-    { _rrReviewId    :: !Text
-    , _rrPackageName :: !Text
-    , _rrPayload     :: !ReviewsReplyRequest
-    }
-  deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'ReviewsReply' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'rrReviewId'
---
--- * 'rrPackageName'
---
--- * 'rrPayload'
-reviewsReply
-    :: Text -- ^ 'rrReviewId'
-    -> Text -- ^ 'rrPackageName'
-    -> ReviewsReplyRequest -- ^ 'rrPayload'
-    -> ReviewsReply
-reviewsReply pRrReviewId_ pRrPackageName_ pRrPayload_ =
-  ReviewsReply'
-    { _rrReviewId = pRrReviewId_
-    , _rrPackageName = pRrPackageName_
-    , _rrPayload = pRrPayload_
-    }
-
-
-rrReviewId :: Lens' ReviewsReply Text
-rrReviewId
-  = lens _rrReviewId (\ s a -> s{_rrReviewId = a})
-
--- | Unique identifier for the Android app for which we want reviews; for
--- example, \"com.spiffygame\".
-rrPackageName :: Lens' ReviewsReply Text
-rrPackageName
-  = lens _rrPackageName
-      (\ s a -> s{_rrPackageName = a})
-
--- | Multipart request metadata.
-rrPayload :: Lens' ReviewsReply ReviewsReplyRequest
-rrPayload
-  = lens _rrPayload (\ s a -> s{_rrPayload = a})
-
-instance GoogleRequest ReviewsReply where
-        type Rs ReviewsReply = ReviewsReplyResponse
-        type Scopes ReviewsReply =
-             '["https://www.googleapis.com/auth/androidpublisher"]
-        requestClient ReviewsReply'{..}
-          = go _rrPackageName _rrReviewId (Just AltJSON)
-              _rrPayload
-              androidPublisherService
-          where go
-                  = buildClient (Proxy :: Proxy ReviewsReplyResource)
-                      mempty
diff --git a/gogol-android-publisher.cabal b/gogol-android-publisher.cabal
--- a/gogol-android-publisher.cabal
+++ b/gogol-android-publisher.cabal
@@ -1,97 +1,174 @@
-name:                  gogol-android-publisher
-version:               0.5.0
-synopsis:              Google Play Developer SDK.
-homepage:              https://github.com/brendanhay/gogol
-bug-reports:           https://github.com/brendanhay/gogol/issues
-license:               OtherLicense
-license-file:          LICENSE
-author:                Brendan Hay
-maintainer:            Brendan Hay <brendan.g.hay@gmail.com>
-copyright:             Copyright (c) 2015-2016 Brendan Hay
-category:              Network, Google, Cloud
-build-type:            Simple
-cabal-version:         >= 1.10
-extra-source-files:    README.md src/.gitkeep
+cabal-version:      2.2
+name:               gogol-android-publisher
+version:            1.0.0
+synopsis:           Google Play Android Developer SDK.
+homepage:           https://github.com/brendanhay/gogol
+bug-reports:        https://github.com/brendanhay/gogol/issues
+license:            MPL-2.0
+license-file:       LICENSE
+author:             Brendan Hay
+maintainer:
+  Brendan Hay <brendan.g.hay+gogol@gmail.com>, Toni Cebrián <toni@tonicebrian.com>
 
+copyright:          Copyright (c) 2015-2025 Brendan Hay
+category:           Google
+build-type:         Simple
+extra-source-files:
+  README.md
+  src/.gitkeep
+
 description:
-    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 @v3@
-    of the API.
+  Lets Android application developers access their Google Play accounts. At a high level, the expected workflow is to \"insert\" an Edit, make changes as necessary, and then \"commit\" it.
+  .
+  /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 @v3@
+  of the API.
 
 source-repository head
-    type:     git
-    location: git://github.com/brendanhay/gogol.git
+  type:     git
+  location: git://github.com/brendanhay/gogol.git
+  subdir:   gogol-android-publisher
 
+flag field-selectors
+  description:
+    If record field selectors should be enabled. Disabling this requires GHC >=9.2 and the NoFieldSelectors extension.
+
+  default:     False
+  manual:      True
+
 library
-    default-language:  Haskell2010
-    hs-source-dirs:    src gen
+  default-language: GHC2021
+  hs-source-dirs:   src gen
+  ghc-options:
+    -Wall -fwarn-incomplete-uni-patterns
+    -fwarn-incomplete-record-updates -funbox-strict-fields
+    -fwarn-unused-packages
 
-    ghc-options:       -Wall
+  if (!flag(field-selectors) && impl(ghc >=9.2))
+    default-extensions: NoFieldSelectors
 
-    exposed-modules:
-          Network.Google.AndroidPublisher
-        , Network.Google.AndroidPublisher.Types
-        , 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
-        , Network.Google.Resource.AndroidPublisher.Edits.Details.Get
-        , Network.Google.Resource.AndroidPublisher.Edits.Details.Patch
-        , Network.Google.Resource.AndroidPublisher.Edits.Details.Update
-        , Network.Google.Resource.AndroidPublisher.Edits.ExpansionFiles.Get
-        , Network.Google.Resource.AndroidPublisher.Edits.ExpansionFiles.Patch
-        , Network.Google.Resource.AndroidPublisher.Edits.ExpansionFiles.Update
-        , Network.Google.Resource.AndroidPublisher.Edits.ExpansionFiles.Upload
-        , Network.Google.Resource.AndroidPublisher.Edits.Get
-        , Network.Google.Resource.AndroidPublisher.Edits.Images.Delete
-        , Network.Google.Resource.AndroidPublisher.Edits.Images.Deleteall
-        , Network.Google.Resource.AndroidPublisher.Edits.Images.List
-        , Network.Google.Resource.AndroidPublisher.Edits.Images.Upload
-        , Network.Google.Resource.AndroidPublisher.Edits.Insert
-        , Network.Google.Resource.AndroidPublisher.Edits.Listings.Delete
-        , Network.Google.Resource.AndroidPublisher.Edits.Listings.Deleteall
-        , Network.Google.Resource.AndroidPublisher.Edits.Listings.Get
-        , Network.Google.Resource.AndroidPublisher.Edits.Listings.List
-        , Network.Google.Resource.AndroidPublisher.Edits.Listings.Patch
-        , Network.Google.Resource.AndroidPublisher.Edits.Listings.Update
-        , Network.Google.Resource.AndroidPublisher.Edits.Testers.Get
-        , Network.Google.Resource.AndroidPublisher.Edits.Testers.Patch
-        , Network.Google.Resource.AndroidPublisher.Edits.Testers.Update
-        , Network.Google.Resource.AndroidPublisher.Edits.Tracks.Get
-        , Network.Google.Resource.AndroidPublisher.Edits.Tracks.List
-        , Network.Google.Resource.AndroidPublisher.Edits.Tracks.Patch
-        , Network.Google.Resource.AndroidPublisher.Edits.Tracks.Update
-        , Network.Google.Resource.AndroidPublisher.Edits.Validate
-        , 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
-        , Network.Google.Resource.AndroidPublisher.Purchases.Subscriptions.Get
-        , Network.Google.Resource.AndroidPublisher.Purchases.Subscriptions.Refund
-        , Network.Google.Resource.AndroidPublisher.Purchases.Subscriptions.Revoke
-        , Network.Google.Resource.AndroidPublisher.Purchases.Voidedpurchases.List
-        , Network.Google.Resource.AndroidPublisher.Reviews.Get
-        , Network.Google.Resource.AndroidPublisher.Reviews.List
-        , Network.Google.Resource.AndroidPublisher.Reviews.Reply
+  exposed-modules:
+    Gogol.AndroidPublisher
+    Gogol.AndroidPublisher.Applications.DataSafety
+    Gogol.AndroidPublisher.Applications.DeviceTierConfigs.Create
+    Gogol.AndroidPublisher.Applications.DeviceTierConfigs.Get
+    Gogol.AndroidPublisher.Applications.DeviceTierConfigs.List
+    Gogol.AndroidPublisher.Apprecovery.AddTargeting
+    Gogol.AndroidPublisher.Apprecovery.Cancel
+    Gogol.AndroidPublisher.Apprecovery.Create
+    Gogol.AndroidPublisher.Apprecovery.Deploy
+    Gogol.AndroidPublisher.Apprecovery.List
+    Gogol.AndroidPublisher.Edits.Apks.Addexternallyhosted
+    Gogol.AndroidPublisher.Edits.Apks.List
+    Gogol.AndroidPublisher.Edits.Apks.Upload
+    Gogol.AndroidPublisher.Edits.Bundles.List
+    Gogol.AndroidPublisher.Edits.Bundles.Upload
+    Gogol.AndroidPublisher.Edits.Commit
+    Gogol.AndroidPublisher.Edits.Countryavailability.Get
+    Gogol.AndroidPublisher.Edits.Delete
+    Gogol.AndroidPublisher.Edits.Deobfuscationfiles.Upload
+    Gogol.AndroidPublisher.Edits.Details.Get
+    Gogol.AndroidPublisher.Edits.Details.Patch
+    Gogol.AndroidPublisher.Edits.Details.Update
+    Gogol.AndroidPublisher.Edits.Expansionfiles.Get
+    Gogol.AndroidPublisher.Edits.Expansionfiles.Patch
+    Gogol.AndroidPublisher.Edits.Expansionfiles.Update
+    Gogol.AndroidPublisher.Edits.Expansionfiles.Upload
+    Gogol.AndroidPublisher.Edits.Get
+    Gogol.AndroidPublisher.Edits.Images.Delete
+    Gogol.AndroidPublisher.Edits.Images.Deleteall
+    Gogol.AndroidPublisher.Edits.Images.List
+    Gogol.AndroidPublisher.Edits.Images.Upload
+    Gogol.AndroidPublisher.Edits.Insert
+    Gogol.AndroidPublisher.Edits.Listings.Delete
+    Gogol.AndroidPublisher.Edits.Listings.Deleteall
+    Gogol.AndroidPublisher.Edits.Listings.Get
+    Gogol.AndroidPublisher.Edits.Listings.List
+    Gogol.AndroidPublisher.Edits.Listings.Patch
+    Gogol.AndroidPublisher.Edits.Listings.Update
+    Gogol.AndroidPublisher.Edits.Testers.Get
+    Gogol.AndroidPublisher.Edits.Testers.Patch
+    Gogol.AndroidPublisher.Edits.Testers.Update
+    Gogol.AndroidPublisher.Edits.Tracks.Create
+    Gogol.AndroidPublisher.Edits.Tracks.Get
+    Gogol.AndroidPublisher.Edits.Tracks.List
+    Gogol.AndroidPublisher.Edits.Tracks.Patch
+    Gogol.AndroidPublisher.Edits.Tracks.Update
+    Gogol.AndroidPublisher.Edits.Validate
+    Gogol.AndroidPublisher.Externaltransactions.Createexternaltransaction
+    Gogol.AndroidPublisher.Externaltransactions.Getexternaltransaction
+    Gogol.AndroidPublisher.Externaltransactions.Refundexternaltransaction
+    Gogol.AndroidPublisher.Generatedapks.Download
+    Gogol.AndroidPublisher.Generatedapks.List
+    Gogol.AndroidPublisher.Grants.Create
+    Gogol.AndroidPublisher.Grants.Delete
+    Gogol.AndroidPublisher.Grants.Patch
+    Gogol.AndroidPublisher.Inappproducts.BatchDelete
+    Gogol.AndroidPublisher.Inappproducts.BatchGet
+    Gogol.AndroidPublisher.Inappproducts.BatchUpdate
+    Gogol.AndroidPublisher.Inappproducts.Delete
+    Gogol.AndroidPublisher.Inappproducts.Get
+    Gogol.AndroidPublisher.Inappproducts.Insert
+    Gogol.AndroidPublisher.Inappproducts.List
+    Gogol.AndroidPublisher.Inappproducts.Patch
+    Gogol.AndroidPublisher.Inappproducts.Update
+    Gogol.AndroidPublisher.Internalappsharingartifacts.Uploadapk
+    Gogol.AndroidPublisher.Internalappsharingartifacts.Uploadbundle
+    Gogol.AndroidPublisher.Monetization.ConvertRegionPrices
+    Gogol.AndroidPublisher.Monetization.Subscriptions.Archive
+    Gogol.AndroidPublisher.Monetization.Subscriptions.BasePlans.Activate
+    Gogol.AndroidPublisher.Monetization.Subscriptions.BasePlans.BatchMigratePrices
+    Gogol.AndroidPublisher.Monetization.Subscriptions.BasePlans.BatchUpdateStates
+    Gogol.AndroidPublisher.Monetization.Subscriptions.BasePlans.Deactivate
+    Gogol.AndroidPublisher.Monetization.Subscriptions.BasePlans.Delete
+    Gogol.AndroidPublisher.Monetization.Subscriptions.BasePlans.MigratePrices
+    Gogol.AndroidPublisher.Monetization.Subscriptions.BasePlans.Offers.Activate
+    Gogol.AndroidPublisher.Monetization.Subscriptions.BasePlans.Offers.BatchGet
+    Gogol.AndroidPublisher.Monetization.Subscriptions.BasePlans.Offers.BatchUpdate
+    Gogol.AndroidPublisher.Monetization.Subscriptions.BasePlans.Offers.BatchUpdateStates
+    Gogol.AndroidPublisher.Monetization.Subscriptions.BasePlans.Offers.Create
+    Gogol.AndroidPublisher.Monetization.Subscriptions.BasePlans.Offers.Deactivate
+    Gogol.AndroidPublisher.Monetization.Subscriptions.BasePlans.Offers.Delete
+    Gogol.AndroidPublisher.Monetization.Subscriptions.BasePlans.Offers.Get
+    Gogol.AndroidPublisher.Monetization.Subscriptions.BasePlans.Offers.List
+    Gogol.AndroidPublisher.Monetization.Subscriptions.BasePlans.Offers.Patch
+    Gogol.AndroidPublisher.Monetization.Subscriptions.BatchGet
+    Gogol.AndroidPublisher.Monetization.Subscriptions.BatchUpdate
+    Gogol.AndroidPublisher.Monetization.Subscriptions.Create
+    Gogol.AndroidPublisher.Monetization.Subscriptions.Delete
+    Gogol.AndroidPublisher.Monetization.Subscriptions.Get
+    Gogol.AndroidPublisher.Monetization.Subscriptions.List
+    Gogol.AndroidPublisher.Monetization.Subscriptions.Patch
+    Gogol.AndroidPublisher.Orders.Refund
+    Gogol.AndroidPublisher.Purchases.Products.Acknowledge
+    Gogol.AndroidPublisher.Purchases.Products.Consume
+    Gogol.AndroidPublisher.Purchases.Products.Get
+    Gogol.AndroidPublisher.Purchases.Subscriptions.Acknowledge
+    Gogol.AndroidPublisher.Purchases.Subscriptions.Cancel
+    Gogol.AndroidPublisher.Purchases.Subscriptions.Defer
+    Gogol.AndroidPublisher.Purchases.Subscriptions.Get
+    Gogol.AndroidPublisher.Purchases.Subscriptions.Refund
+    Gogol.AndroidPublisher.Purchases.Subscriptions.Revoke
+    Gogol.AndroidPublisher.Purchases.Subscriptionsv2.Get
+    Gogol.AndroidPublisher.Purchases.Subscriptionsv2.Revoke
+    Gogol.AndroidPublisher.Purchases.Voidedpurchases.List
+    Gogol.AndroidPublisher.Reviews.Get
+    Gogol.AndroidPublisher.Reviews.List
+    Gogol.AndroidPublisher.Reviews.Reply
+    Gogol.AndroidPublisher.Systemapks.Variants.Create
+    Gogol.AndroidPublisher.Systemapks.Variants.Download
+    Gogol.AndroidPublisher.Systemapks.Variants.Get
+    Gogol.AndroidPublisher.Systemapks.Variants.List
+    Gogol.AndroidPublisher.Types
+    Gogol.AndroidPublisher.Users.Create
+    Gogol.AndroidPublisher.Users.Delete
+    Gogol.AndroidPublisher.Users.List
+    Gogol.AndroidPublisher.Users.Patch
 
-    other-modules:
-          Network.Google.AndroidPublisher.Types.Product
-        , Network.Google.AndroidPublisher.Types.Sum
+  other-modules:
+    Gogol.AndroidPublisher.Internal.Product
+    Gogol.AndroidPublisher.Internal.Sum
 
-    build-depends:
-          gogol-core == 0.5.0.*
-        , base       >= 4.7 && < 5
+  build-depends:    gogol-core ^>=1.0.0
