diff --git a/LICENSE b/LICENSE
new file mode 100644
--- /dev/null
+++ b/LICENSE
@@ -0,0 +1,367 @@
+Mozilla Public License Version 2.0
+==================================
+
+1. Definitions
+--------------
+
+1.1. "Contributor"
+    means each individual or legal entity that creates, contributes to
+    the creation of, or owns Covered Software.
+
+1.2. "Contributor Version"
+    means the combination of the Contributions of others (if any) used
+    by a Contributor and that particular Contributor's Contribution.
+
+1.3. "Contribution"
+    means Covered Software of a particular Contributor.
+
+1.4. "Covered Software"
+    means Source Code Form to which the initial Contributor has attached
+    the notice in Exhibit A, the Executable Form of such Source Code
+    Form, and Modifications of such Source Code Form, in each case
+    including portions thereof.
+
+1.5. "Incompatible With Secondary Licenses"
+    means
+
+    (a) that the initial Contributor has attached the notice described
+        in Exhibit B to the Covered Software; or
+
+    (b) that the Covered Software was made available under the terms of
+        version 1.1 or earlier of the License, but not also under the
+        terms of a Secondary License.
+
+1.6. "Executable Form"
+    means any form of the work other than Source Code Form.
+
+1.7. "Larger Work"
+    means a work that combines Covered Software with other material, in
+    a separate file or files, that is not Covered Software.
+
+1.8. "License"
+    means this document.
+
+1.9. "Licensable"
+    means having the right to grant, to the maximum extent possible,
+    whether at the time of the initial grant or subsequently, any and
+    all of the rights conveyed by this License.
+
+1.10. "Modifications"
+    means any of the following:
+
+    (a) any file in Source Code Form that results from an addition to,
+        deletion from, or modification of the contents of Covered
+        Software; or
+
+    (b) any new file in Source Code Form that contains any Covered
+        Software.
+
+1.11. "Patent Claims" of a Contributor
+    means any patent claim(s), including without limitation, method,
+    process, and apparatus claims, in any patent Licensable by such
+    Contributor that would be infringed, but for the grant of the
+    License, by the making, using, selling, offering for sale, having
+    made, import, or transfer of either its Contributions or its
+    Contributor Version.
+
+1.12. "Secondary License"
+    means either the GNU General Public License, Version 2.0, the GNU
+    Lesser General Public License, Version 2.1, the GNU Affero General
+    Public License, Version 3.0, or any later versions of those
+    licenses.
+
+1.13. "Source Code Form"
+    means the form of the work preferred for making modifications.
+
+1.14. "You" (or "Your")
+    means an individual or a legal entity exercising rights under this
+    License. For legal entities, "You" includes any entity that
+    controls, is controlled by, or is under common control with You. For
+    purposes of this definition, "control" means (a) the power, direct
+    or indirect, to cause the direction or management of such entity,
+    whether by contract or otherwise, or (b) ownership of more than
+    fifty percent (50%) of the outstanding shares or beneficial
+    ownership of such entity.
+
+2. License Grants and Conditions
+--------------------------------
+
+2.1. Grants
+
+Each Contributor hereby grants You a world-wide, royalty-free,
+non-exclusive license:
+
+(a) under intellectual property rights (other than patent or trademark)
+    Licensable by such Contributor to use, reproduce, make available,
+    modify, display, perform, distribute, and otherwise exploit its
+    Contributions, either on an unmodified basis, with Modifications, or
+    as part of a Larger Work; and
+
+(b) under Patent Claims of such Contributor to make, use, sell, offer
+    for sale, have made, import, and otherwise transfer either its
+    Contributions or its Contributor Version.
+
+2.2. Effective Date
+
+The licenses granted in Section 2.1 with respect to any Contribution
+become effective for each Contribution on the date the Contributor first
+distributes such Contribution.
+
+2.3. Limitations on Grant Scope
+
+The licenses granted in this Section 2 are the only rights granted under
+this License. No additional rights or licenses will be implied from the
+distribution or licensing of Covered Software under this License.
+Notwithstanding Section 2.1(b) above, no patent license is granted by a
+Contributor:
+
+(a) for any code that a Contributor has removed from Covered Software;
+    or
+
+(b) for infringements caused by: (i) Your and any other third party's
+    modifications of Covered Software, or (ii) the combination of its
+    Contributions with other software (except as part of its Contributor
+    Version); or
+
+(c) under Patent Claims infringed by Covered Software in the absence of
+    its Contributions.
+
+This License does not grant any rights in the trademarks, service marks,
+or logos of any Contributor (except as may be necessary to comply with
+the notice requirements in Section 3.4).
+
+2.4. Subsequent Licenses
+
+No Contributor makes additional grants as a result of Your choice to
+distribute the Covered Software under a subsequent version of this
+License (see Section 10.2) or under the terms of a Secondary License (if
+permitted under the terms of Section 3.3).
+
+2.5. Representation
+
+Each Contributor represents that the Contributor believes its
+Contributions are its original creation(s) or it has sufficient rights
+to grant the rights to its Contributions conveyed by this License.
+
+2.6. Fair Use
+
+This License is not intended to limit any rights You have under
+applicable copyright doctrines of fair use, fair dealing, or other
+equivalents.
+
+2.7. Conditions
+
+Sections 3.1, 3.2, 3.3, and 3.4 are conditions of the licenses granted
+in Section 2.1.
+
+3. Responsibilities
+-------------------
+
+3.1. Distribution of Source Form
+
+All distribution of Covered Software in Source Code Form, including any
+Modifications that You create or to which You contribute, must be under
+the terms of this License. You must inform recipients that the Source
+Code Form of the Covered Software is governed by the terms of this
+License, and how they can obtain a copy of this License. You may not
+attempt to alter or restrict the recipients' rights in the Source Code
+Form.
+
+3.2. Distribution of Executable Form
+
+If You distribute Covered Software in Executable Form then:
+
+(a) such Covered Software must also be made available in Source Code
+    Form, as described in Section 3.1, and You must inform recipients of
+    the Executable Form how they can obtain a copy of such Source Code
+    Form by reasonable means in a timely manner, at a charge no more
+    than the cost of distribution to the recipient; and
+
+(b) You may distribute such Executable Form under the terms of this
+    License, or sublicense it under different terms, provided that the
+    license for the Executable Form does not attempt to limit or alter
+    the recipients' rights in the Source Code Form under this License.
+
+3.3. Distribution of a Larger Work
+
+You may create and distribute a Larger Work under terms of Your choice,
+provided that You also comply with the requirements of this License for
+the Covered Software. If the Larger Work is a combination of Covered
+Software with a work governed by one or more Secondary Licenses, and the
+Covered Software is not Incompatible With Secondary Licenses, this
+License permits You to additionally distribute such Covered Software
+under the terms of such Secondary License(s), so that the recipient of
+the Larger Work may, at their option, further distribute the Covered
+Software under the terms of either this License or such Secondary
+License(s).
+
+3.4. Notices
+
+You may not remove or alter the substance of any license notices
+(including copyright notices, patent notices, disclaimers of warranty,
+or limitations of liability) contained within the Source Code Form of
+the Covered Software, except that You may alter any license notices to
+the extent required to remedy known factual inaccuracies.
+
+3.5. Application of Additional Terms
+
+You may choose to offer, and to charge a fee for, warranty, support,
+indemnity or liability obligations to one or more recipients of Covered
+Software. However, You may do so only on Your own behalf, and not on
+behalf of any Contributor. You must make it absolutely clear that any
+such warranty, support, indemnity, or liability obligation is offered by
+You alone, and You hereby agree to indemnify every Contributor for any
+liability incurred by such Contributor as a result of warranty, support,
+indemnity or liability terms You offer. You may include additional
+disclaimers of warranty and limitations of liability specific to any
+jurisdiction.
+
+4. Inability to Comply Due to Statute or Regulation
+---------------------------------------------------
+
+If it is impossible for You to comply with any of the terms of this
+License with respect to some or all of the Covered Software due to
+statute, judicial order, or regulation then You must: (a) comply with
+the terms of this License to the maximum extent possible; and (b)
+describe the limitations and the code they affect. Such description must
+be placed in a text file included with all distributions of the Covered
+Software under this License. Except to the extent prohibited by statute
+or regulation, such description must be sufficiently detailed for a
+recipient of ordinary skill to be able to understand it.
+
+5. Termination
+--------------
+
+5.1. The rights granted under this License will terminate automatically
+if You fail to comply with any of its terms. However, if You become
+compliant, then the rights granted under this License from a particular
+Contributor are reinstated (a) provisionally, unless and until such
+Contributor explicitly and finally terminates Your grants, and (b) on an
+ongoing basis, if such Contributor fails to notify You of the
+non-compliance by some reasonable means prior to 60 days after You have
+come back into compliance. Moreover, Your grants from a particular
+Contributor are reinstated on an ongoing basis if such Contributor
+notifies You of the non-compliance by some reasonable means, this is the
+first time You have received notice of non-compliance with this License
+from such Contributor, and You become compliant prior to 30 days after
+Your receipt of the notice.
+
+5.2. If You initiate litigation against any entity by asserting a patent
+infringement claim (excluding declaratory judgment actions,
+counter-claims, and cross-claims) alleging that a Contributor Version
+directly or indirectly infringes any patent, then the rights granted to
+You by any and all Contributors for the Covered Software under Section
+2.1 of this License shall terminate.
+
+5.3. In the event of termination under Sections 5.1 or 5.2 above, all
+end user license agreements (excluding distributors and resellers) which
+have been validly granted by You or Your distributors under this License
+prior to termination shall survive termination.
+
+************************************************************************
+*                                                                      *
+*  6. Disclaimer of Warranty                                           *
+*  -------------------------                                           *
+*                                                                      *
+*  Covered Software is provided under this License on an "as is"       *
+*  basis, without warranty of any kind, either expressed, implied, or  *
+*  statutory, including, without limitation, warranties that the       *
+*  Covered Software is free of defects, merchantable, fit for a        *
+*  particular purpose or non-infringing. The entire risk as to the     *
+*  quality and performance of the Covered Software is with You.        *
+*  Should any Covered Software prove defective in any respect, You     *
+*  (not any Contributor) assume the cost of any necessary servicing,   *
+*  repair, or correction. This disclaimer of warranty constitutes an   *
+*  essential part of this License. No use of any Covered Software is   *
+*  authorized under this License except under this disclaimer.         *
+*                                                                      *
+************************************************************************
+
+************************************************************************
+*                                                                      *
+*  7. Limitation of Liability                                          *
+*  --------------------------                                          *
+*                                                                      *
+*  Under no circumstances and under no legal theory, whether tort      *
+*  (including negligence), contract, or otherwise, shall any           *
+*  Contributor, or anyone who distributes Covered Software as          *
+*  permitted above, be liable to You for any direct, indirect,         *
+*  special, incidental, or consequential damages of any character      *
+*  including, without limitation, damages for lost profits, loss of    *
+*  goodwill, work stoppage, computer failure or malfunction, or any    *
+*  and all other commercial damages or losses, even if such party      *
+*  shall have been informed of the possibility of such damages. This   *
+*  limitation of liability shall not apply to liability for death or   *
+*  personal injury resulting from such party's negligence to the       *
+*  extent applicable law prohibits such limitation. Some               *
+*  jurisdictions do not allow the exclusion or limitation of           *
+*  incidental or consequential damages, so this exclusion and          *
+*  limitation may not apply to You.                                    *
+*                                                                      *
+************************************************************************
+
+8. Litigation
+-------------
+
+Any litigation relating to this License may be brought only in the
+courts of a jurisdiction where the defendant maintains its principal
+place of business and such litigation shall be governed by laws of that
+jurisdiction, without reference to its conflict-of-law provisions.
+Nothing in this Section shall prevent a party's ability to bring
+cross-claims or counter-claims.
+
+9. Miscellaneous
+----------------
+
+This License represents the complete agreement concerning the subject
+matter hereof. If any provision of this License is held to be
+unenforceable, such provision shall be reformed only to the extent
+necessary to make it enforceable. Any law or regulation which provides
+that the language of a contract shall be construed against the drafter
+shall not be used to construe this License against a Contributor.
+
+10. Versions of the License
+---------------------------
+
+10.1. New Versions
+
+Mozilla Foundation is the license steward. Except as provided in Section
+10.3, no one other than the license steward has the right to modify or
+publish new versions of this License. Each version will be given a
+distinguishing version number.
+
+10.2. Effect of New Versions
+
+You may distribute the Covered Software under the terms of the version
+of the License under which You originally received the Covered Software,
+or under the terms of any subsequent version published by the license
+steward.
+
+10.3. Modified Versions
+
+If you create software not governed by this License, and you want to
+create a new license for such software, you may create and use a
+modified version of this License if you rename the license and remove
+any references to the name of the license steward (except to note that
+such modified license differs from this License).
+
+10.4. Distributing Source Code Form that is Incompatible With Secondary
+Licenses
+
+If You choose to distribute Source Code Form that is Incompatible With
+Secondary Licenses under the terms of this version of the License, the
+notice described in Exhibit B of this License must be attached.
+
+Exhibit A - Source Code Form License Notice
+-------------------------------------------
+
+  This Source Code Form is subject to the terms of the Mozilla Public
+  License, v. 2.0. If a copy of the MPL was not distributed with this
+  file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+If it is not possible or desirable to put the notice in a particular
+file, then You may include the notice in a location (such as a LICENSE
+file in a relevant directory) where a recipient would be likely to look
+for such a notice.
+
+You may add additional accurate notices of copyright ownership.
diff --git a/README.md b/README.md
new file mode 100644
--- /dev/null
+++ b/README.md
@@ -0,0 +1,28 @@
+# gogol-android-publisher
+
+* [Version](#version)
+* [Description](#description)
+* [Contribute](#contribute)
+* [Licence](#licence)
+
+
+## Version
+
+`0.0.1`
+
+
+## Description
+
+A client library for the Google Play Developer.
+
+
+## Contribute
+
+For any problems, comments, or feedback please create an issue [here on GitHub](https://github.com/brendanhay/amazonka/issues).
+
+> _Note:_ this library is an auto-generated Haskell package. Please see `amazonka-gen` for more information.
+
+
+## Licence
+
+`gogol-android-publisher` is released under the [Mozilla Public License Version 2.0](http://www.mozilla.org/MPL/).
diff --git a/Setup.hs b/Setup.hs
new file mode 100644
--- /dev/null
+++ b/Setup.hs
@@ -0,0 +1,2 @@
+import           Distribution.Simple
+main = defaultMain
diff --git a/gen/Network/Google/AndroidPublisher.hs b/gen/Network/Google/AndroidPublisher.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/AndroidPublisher.hs
@@ -0,0 +1,651 @@
+{-# 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 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)
+--
+-- Lets Android application developers access their Google Play accounts.
+--
+-- /See:/ <https://developers.google.com/android-publisher Google Play Developer API Reference>
+module Network.Google.AndroidPublisher
+    (
+    -- * Service Configuration
+      androidPublisherService
+
+    -- * API Declaration
+    , AndroidPublisherAPI
+
+    -- * Resources
+
+    -- ** androidpublisher.edits.apklistings.delete
+    , module Network.Google.Resource.AndroidPublisher.Edits.APKListings.Delete
+
+    -- ** androidpublisher.edits.apklistings.deleteall
+    , module Network.Google.Resource.AndroidPublisher.Edits.APKListings.Deleteall
+
+    -- ** androidpublisher.edits.apklistings.get
+    , module Network.Google.Resource.AndroidPublisher.Edits.APKListings.Get
+
+    -- ** androidpublisher.edits.apklistings.list
+    , module Network.Google.Resource.AndroidPublisher.Edits.APKListings.List
+
+    -- ** androidpublisher.edits.apklistings.patch
+    , module Network.Google.Resource.AndroidPublisher.Edits.APKListings.Patch
+
+    -- ** androidpublisher.edits.apklistings.update
+    , module Network.Google.Resource.AndroidPublisher.Edits.APKListings.Update
+
+    -- ** androidpublisher.edits.apks.addexternallyhosted
+    , module Network.Google.Resource.AndroidPublisher.Edits.APKs.Addexternallyhosted
+
+    -- ** 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.commit
+    , module Network.Google.Resource.AndroidPublisher.Edits.Commit
+
+    -- ** androidpublisher.edits.delete
+    , module Network.Google.Resource.AndroidPublisher.Edits.Delete
+
+    -- ** 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.entitlements.list
+    , module Network.Google.Resource.AndroidPublisher.Entitlements.List
+
+    -- ** androidpublisher.inappproducts.batch
+    , module Network.Google.Resource.AndroidPublisher.InAppProducts.Batch
+
+    -- ** androidpublisher.inappproducts.delete
+    , module Network.Google.Resource.AndroidPublisher.InAppProducts.Delete
+
+    -- ** 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.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
+
+    -- * Types
+
+    -- ** InAppProductListings
+    , InAppProductListings
+    , inAppProductListings
+    , iaplAddtional
+
+    -- ** InAppProductsUpdateResponse
+    , InAppProductsUpdateResponse
+    , inAppProductsUpdateResponse
+    , iapurInAppProduct
+
+    -- ** EditsImagesDeleteallImageType
+    , EditsImagesDeleteallImageType (..)
+
+    -- ** MonthDay
+    , MonthDay
+    , monthDay
+    , mdDay
+    , mdMonth
+
+    -- ** Track
+    , Track
+    , track
+    , tVersionCodes
+    , tTrack
+    , tUserFraction
+
+    -- ** Image
+    , Image
+    , image
+    , iURL
+    , iSha1
+    , iId
+
+    -- ** InAppProductsBatchRequestEntry
+    , InAppProductsBatchRequestEntry
+    , inAppProductsBatchRequestEntry
+    , iapbreMethodName
+    , iapbreInAppProductsinsertrequest
+    , iapbreInAppProductsupdaterequest
+    , iapbreBatchId
+
+    -- ** InAppProductListing
+    , InAppProductListing
+    , inAppProductListing
+    , iaplTitle
+    , iaplDescription
+
+    -- ** ImagesDeleteAllResponse
+    , ImagesDeleteAllResponse
+    , imagesDeleteAllResponse
+    , idarDeleted
+
+    -- ** TokenPagination
+    , TokenPagination
+    , tokenPagination
+    , tpNextPageToken
+    , tpPreviousPageToken
+
+    -- ** ExpansionFile
+    , ExpansionFile
+    , expansionFile
+    , efFileSize
+    , efReferencesVersion
+
+    -- ** EditsTracksPatchTrack
+    , EditsTracksPatchTrack (..)
+
+    -- ** Testers
+    , Testers
+    , testers
+    , tGooglePlusCommUnities
+    , tGoogleGroups
+
+    -- ** EditsTracksGetTrack
+    , EditsTracksGetTrack (..)
+
+    -- ** Listing
+    , Listing
+    , listing
+    , lFullDescription
+    , lVideo
+    , lShortDescription
+    , lLanguage
+    , lTitle
+
+    -- ** APK
+    , APK
+    , aPK
+    , aVersionCode
+    , aBinary
+
+    -- ** SubscriptionPurchasesDeferRequest
+    , SubscriptionPurchasesDeferRequest
+    , subscriptionPurchasesDeferRequest
+    , spdrDeferralInfo
+
+    -- ** TracksListResponse
+    , TracksListResponse
+    , tracksListResponse
+    , tlrTracks
+    , tlrKind
+
+    -- ** EditsTracksUpdateTrack
+    , EditsTracksUpdateTrack (..)
+
+    -- ** Season
+    , Season
+    , season
+    , sStart
+    , sEnd
+
+    -- ** PageInfo
+    , PageInfo
+    , pageInfo
+    , piResultPerPage
+    , piTotalResults
+    , piStartIndex
+
+    -- ** ImagesListResponse
+    , ImagesListResponse
+    , imagesListResponse
+    , ilrImages
+
+    -- ** AppEdit
+    , AppEdit
+    , appEdit
+    , aeId
+    , aeExpiryTimeSeconds
+
+    -- ** ProductPurchase
+    , ProductPurchase
+    , productPurchase
+    , ppPurchaseState
+    , ppConsumptionState
+    , ppKind
+    , ppPurchaseTimeMillis
+    , ppDeveloperPayload
+
+    -- ** SubscriptionPurchasesDeferResponse
+    , SubscriptionPurchasesDeferResponse
+    , subscriptionPurchasesDeferResponse
+    , spdrNewExpiryTimeMillis
+
+    -- ** APKListing
+    , APKListing
+    , aPKListing
+    , apklLanguage
+    , apklRecentChanges
+
+    -- ** SubscriptionPurchase
+    , SubscriptionPurchase
+    , subscriptionPurchase
+    , spKind
+    , spExpiryTimeMillis
+    , spAutoRenewing
+    , spStartTimeMillis
+
+    -- ** AppDetails
+    , AppDetails
+    , appDetails
+    , adContactPhone
+    , adContactEmail
+    , adContactWebsite
+    , adDefaultLanguage
+
+    -- ** InAppProductPrices
+    , InAppProductPrices
+    , inAppProductPrices
+    , iAppAddtional
+
+    -- ** InAppProductsBatchRequest
+    , InAppProductsBatchRequest
+    , inAppProductsBatchRequest
+    , iapbrEntrys
+
+    -- ** ExternallyHostedAPK
+    , ExternallyHostedAPK
+    , externallyHostedAPK
+    , ehapkApplicationLabel
+    , ehapkMaximumSdk
+    , ehapkNATiveCodes
+    , ehapkVersionCode
+    , ehapkFileSha256Base64
+    , ehapkExternallyHostedURL
+    , ehapkVersionName
+    , ehapkPackageName
+    , ehapkFileSize
+    , ehapkIconBase64
+    , ehapkUsesFeatures
+    , ehapkMinimumSdk
+    , ehapkFileSha1Base64
+    , ehapkUsesPermissions
+    , ehapkCertificateBase64s
+
+    -- ** EditsImagesListImageType
+    , EditsImagesListImageType (..)
+
+    -- ** EditsTestersPatchTrack
+    , EditsTestersPatchTrack (..)
+
+    -- ** EditsTestersGetTrack
+    , EditsTestersGetTrack (..)
+
+    -- ** ExpansionFilesUploadResponse
+    , ExpansionFilesUploadResponse
+    , expansionFilesUploadResponse
+    , efurExpansionFile
+
+    -- ** ImagesUploadResponse
+    , ImagesUploadResponse
+    , imagesUploadResponse
+    , iurImage
+
+    -- ** EditsImagesUploadImageType
+    , EditsImagesUploadImageType (..)
+
+    -- ** InAppProductsListResponse
+    , InAppProductsListResponse
+    , inAppProductsListResponse
+    , iaplrTokenPagination
+    , iaplrPageInfo
+    , iaplrKind
+    , iaplrInAppProduct
+
+    -- ** EditsExpansionFilesUploadExpansionFileType
+    , EditsExpansionFilesUploadExpansionFileType (..)
+
+    -- ** APKListingsListResponse
+    , APKListingsListResponse
+    , aPKListingsListResponse
+    , apkllrKind
+    , apkllrListings
+
+    -- ** InAppProductsInsertResponse
+    , InAppProductsInsertResponse
+    , inAppProductsInsertResponse
+    , iapirInAppProduct
+
+    -- ** APKsAddExternallyHostedResponse
+    , APKsAddExternallyHostedResponse
+    , aPKsAddExternallyHostedResponse
+    , apkaehrExternallyHostedAPK
+
+    -- ** SubscriptionDeferralInfo
+    , SubscriptionDeferralInfo
+    , subscriptionDeferralInfo
+    , sdiDesiredExpiryTimeMillis
+    , sdiExpectedExpiryTimeMillis
+
+    -- ** EditsExpansionFilesGetExpansionFileType
+    , EditsExpansionFilesGetExpansionFileType (..)
+
+    -- ** EditsExpansionFilesPatchExpansionFileType
+    , EditsExpansionFilesPatchExpansionFileType (..)
+
+    -- ** EditsExpansionFilesUpdateExpansionFileType
+    , EditsExpansionFilesUpdateExpansionFileType (..)
+
+    -- ** InAppProduct
+    , InAppProduct
+    , inAppProduct
+    , iapStatus
+    , iapTrialPeriod
+    , iapPackageName
+    , iapSeason
+    , iapPurchaseType
+    , iapSubscriptionPeriod
+    , iapPrices
+    , iapSKU
+    , iapDefaultPrice
+    , iapListings
+    , iapDefaultLanguage
+
+    -- ** InAppProductsBatchResponseEntry
+    , InAppProductsBatchResponseEntry
+    , inAppProductsBatchResponseEntry
+    , iInAppProductsupdateresponse
+    , iInAppProductsinsertresponse
+    , iBatchId
+
+    -- ** Price
+    , Price
+    , price
+    , pPriceMicros
+    , pCurrency
+
+    -- ** EditsImagesDeleteImageType
+    , EditsImagesDeleteImageType (..)
+
+    -- ** APKBinary
+    , APKBinary
+    , aPKBinary
+    , apkbSha1
+
+    -- ** APKsListResponse
+    , APKsListResponse
+    , aPKsListResponse
+    , apklrKind
+    , apklrAPKs
+
+    -- ** ExternallyHostedAPKUsesPermission
+    , ExternallyHostedAPKUsesPermission
+    , externallyHostedAPKUsesPermission
+    , ehapkupName
+    , ehapkupMaxSdkVersion
+
+    -- ** ListingsListResponse
+    , ListingsListResponse
+    , listingsListResponse
+    , llrKind
+    , llrListings
+
+    -- ** APKsAddExternallyHostedRequest
+    , APKsAddExternallyHostedRequest
+    , aPKsAddExternallyHostedRequest
+    , aExternallyHostedAPK
+
+    -- ** InAppProductsInsertRequest
+    , InAppProductsInsertRequest
+    , inAppProductsInsertRequest
+    , iInAppProduct
+
+    -- ** EntitlementsListResponse
+    , EntitlementsListResponse
+    , entitlementsListResponse
+    , elrTokenPagination
+    , elrPageInfo
+    , elrResources
+
+    -- ** EditsTestersUpdateTrack
+    , EditsTestersUpdateTrack (..)
+
+    -- ** InAppProductsUpdateRequest
+    , InAppProductsUpdateRequest
+    , inAppProductsUpdateRequest
+    , inInAppProduct
+
+    -- ** Entitlement
+    , Entitlement
+    , entitlement
+    , eKind
+    , eProductType
+    , eToken
+    , eProductId
+
+    -- ** InAppProductsBatchResponse
+    , InAppProductsBatchResponse
+    , inAppProductsBatchResponse
+    , iEntrys
+    , iKind
+    ) where
+
+import           Network.Google.AndroidPublisher.Types
+import           Network.Google.Prelude
+import           Network.Google.Resource.AndroidPublisher.Edits.APKListings.Delete
+import           Network.Google.Resource.AndroidPublisher.Edits.APKListings.Deleteall
+import           Network.Google.Resource.AndroidPublisher.Edits.APKListings.Get
+import           Network.Google.Resource.AndroidPublisher.Edits.APKListings.List
+import           Network.Google.Resource.AndroidPublisher.Edits.APKListings.Patch
+import           Network.Google.Resource.AndroidPublisher.Edits.APKListings.Update
+import           Network.Google.Resource.AndroidPublisher.Edits.APKs.Addexternallyhosted
+import           Network.Google.Resource.AndroidPublisher.Edits.APKs.List
+import           Network.Google.Resource.AndroidPublisher.Edits.APKs.Upload
+import           Network.Google.Resource.AndroidPublisher.Edits.Commit
+import           Network.Google.Resource.AndroidPublisher.Edits.Delete
+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.Entitlements.List
+import           Network.Google.Resource.AndroidPublisher.InAppProducts.Batch
+import           Network.Google.Resource.AndroidPublisher.InAppProducts.Delete
+import           Network.Google.Resource.AndroidPublisher.InAppProducts.Get
+import           Network.Google.Resource.AndroidPublisher.InAppProducts.Insert
+import           Network.Google.Resource.AndroidPublisher.InAppProducts.List
+import           Network.Google.Resource.AndroidPublisher.InAppProducts.Patch
+import           Network.Google.Resource.AndroidPublisher.InAppProducts.Update
+import           Network.Google.Resource.AndroidPublisher.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
+
+{- $resources
+TODO
+-}
+
+-- | Represents the entirety of the methods and resources available for the Google Play Developer API service.
+type AndroidPublisherAPI =
+     InAppProductsBatchResource :<|>
+       InAppProductsInsertResource
+       :<|> InAppProductsListResource
+       :<|> InAppProductsPatchResource
+       :<|> InAppProductsGetResource
+       :<|> InAppProductsDeleteResource
+       :<|> InAppProductsUpdateResource
+       :<|> EditsImagesListResource
+       :<|> EditsImagesDeleteallResource
+       :<|> EditsImagesUploadResource
+       :<|> EditsImagesDeleteResource
+       :<|> EditsExpansionFilesPatchResource
+       :<|> EditsExpansionFilesGetResource
+       :<|> EditsExpansionFilesUploadResource
+       :<|> EditsExpansionFilesUpdateResource
+       :<|> EditsTracksListResource
+       :<|> EditsTracksPatchResource
+       :<|> EditsTracksGetResource
+       :<|> EditsTracksUpdateResource
+       :<|> EditsTestersPatchResource
+       :<|> EditsTestersGetResource
+       :<|> EditsTestersUpdateResource
+       :<|> EditsDetailsPatchResource
+       :<|> EditsDetailsGetResource
+       :<|> EditsDetailsUpdateResource
+       :<|> EditsAPKListingsListResource
+       :<|> EditsAPKListingsDeleteallResource
+       :<|> EditsAPKListingsPatchResource
+       :<|> EditsAPKListingsGetResource
+       :<|> EditsAPKListingsDeleteResource
+       :<|> EditsAPKListingsUpdateResource
+       :<|> EditsAPKsListResource
+       :<|> EditsAPKsAddexternallyhostedResource
+       :<|> EditsAPKsUploadResource
+       :<|> EditsListingsListResource
+       :<|> EditsListingsDeleteallResource
+       :<|> EditsListingsPatchResource
+       :<|> EditsListingsGetResource
+       :<|> EditsListingsDeleteResource
+       :<|> EditsListingsUpdateResource
+       :<|> EditsInsertResource
+       :<|> EditsGetResource
+       :<|> EditsValidateResource
+       :<|> EditsDeleteResource
+       :<|> EditsCommitResource
+       :<|> EntitlementsListResource
+       :<|> PurchasesProductsGetResource
+       :<|> PurchasesSubscriptionsDeferResource
+       :<|> PurchasesSubscriptionsGetResource
+       :<|> PurchasesSubscriptionsRefundResource
+       :<|> PurchasesSubscriptionsRevokeResource
+       :<|> PurchasesSubscriptionsCancelResource
diff --git a/gen/Network/Google/AndroidPublisher/Types.hs b/gen/Network/Google/AndroidPublisher/Types.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/AndroidPublisher/Types.hs
@@ -0,0 +1,388 @@
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- |
+-- Module      : Network.Google.AndroidPublisher.Types
+-- Copyright   : (c) 2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+module Network.Google.AndroidPublisher.Types
+    (
+    -- * Service Configuration
+      androidPublisherService
+
+    -- * OAuth Scopes
+    , androidpublisherScope
+
+    -- * InAppProductListings
+    , InAppProductListings
+    , inAppProductListings
+    , iaplAddtional
+
+    -- * InAppProductsUpdateResponse
+    , InAppProductsUpdateResponse
+    , inAppProductsUpdateResponse
+    , iapurInAppProduct
+
+    -- * EditsImagesDeleteallImageType
+    , EditsImagesDeleteallImageType (..)
+
+    -- * MonthDay
+    , MonthDay
+    , monthDay
+    , mdDay
+    , mdMonth
+
+    -- * Track
+    , Track
+    , track
+    , tVersionCodes
+    , tTrack
+    , tUserFraction
+
+    -- * Image
+    , Image
+    , image
+    , iURL
+    , iSha1
+    , iId
+
+    -- * InAppProductsBatchRequestEntry
+    , InAppProductsBatchRequestEntry
+    , inAppProductsBatchRequestEntry
+    , iapbreMethodName
+    , iapbreInAppProductsinsertrequest
+    , iapbreInAppProductsupdaterequest
+    , iapbreBatchId
+
+    -- * InAppProductListing
+    , InAppProductListing
+    , inAppProductListing
+    , iaplTitle
+    , iaplDescription
+
+    -- * ImagesDeleteAllResponse
+    , ImagesDeleteAllResponse
+    , imagesDeleteAllResponse
+    , idarDeleted
+
+    -- * TokenPagination
+    , TokenPagination
+    , tokenPagination
+    , tpNextPageToken
+    , tpPreviousPageToken
+
+    -- * ExpansionFile
+    , ExpansionFile
+    , expansionFile
+    , efFileSize
+    , efReferencesVersion
+
+    -- * EditsTracksPatchTrack
+    , EditsTracksPatchTrack (..)
+
+    -- * Testers
+    , Testers
+    , testers
+    , tGooglePlusCommUnities
+    , tGoogleGroups
+
+    -- * EditsTracksGetTrack
+    , EditsTracksGetTrack (..)
+
+    -- * Listing
+    , Listing
+    , listing
+    , lFullDescription
+    , lVideo
+    , lShortDescription
+    , lLanguage
+    , lTitle
+
+    -- * APK
+    , APK
+    , aPK
+    , aVersionCode
+    , aBinary
+
+    -- * SubscriptionPurchasesDeferRequest
+    , SubscriptionPurchasesDeferRequest
+    , subscriptionPurchasesDeferRequest
+    , spdrDeferralInfo
+
+    -- * TracksListResponse
+    , TracksListResponse
+    , tracksListResponse
+    , tlrTracks
+    , tlrKind
+
+    -- * EditsTracksUpdateTrack
+    , EditsTracksUpdateTrack (..)
+
+    -- * Season
+    , Season
+    , season
+    , sStart
+    , sEnd
+
+    -- * PageInfo
+    , PageInfo
+    , pageInfo
+    , piResultPerPage
+    , piTotalResults
+    , piStartIndex
+
+    -- * ImagesListResponse
+    , ImagesListResponse
+    , imagesListResponse
+    , ilrImages
+
+    -- * AppEdit
+    , AppEdit
+    , appEdit
+    , aeId
+    , aeExpiryTimeSeconds
+
+    -- * ProductPurchase
+    , ProductPurchase
+    , productPurchase
+    , ppPurchaseState
+    , ppConsumptionState
+    , ppKind
+    , ppPurchaseTimeMillis
+    , ppDeveloperPayload
+
+    -- * SubscriptionPurchasesDeferResponse
+    , SubscriptionPurchasesDeferResponse
+    , subscriptionPurchasesDeferResponse
+    , spdrNewExpiryTimeMillis
+
+    -- * APKListing
+    , APKListing
+    , aPKListing
+    , apklLanguage
+    , apklRecentChanges
+
+    -- * SubscriptionPurchase
+    , SubscriptionPurchase
+    , subscriptionPurchase
+    , spKind
+    , spExpiryTimeMillis
+    , spAutoRenewing
+    , spStartTimeMillis
+
+    -- * AppDetails
+    , AppDetails
+    , appDetails
+    , adContactPhone
+    , adContactEmail
+    , adContactWebsite
+    , adDefaultLanguage
+
+    -- * InAppProductPrices
+    , InAppProductPrices
+    , inAppProductPrices
+    , iAppAddtional
+
+    -- * InAppProductsBatchRequest
+    , InAppProductsBatchRequest
+    , inAppProductsBatchRequest
+    , iapbrEntrys
+
+    -- * ExternallyHostedAPK
+    , ExternallyHostedAPK
+    , externallyHostedAPK
+    , ehapkApplicationLabel
+    , ehapkMaximumSdk
+    , ehapkNATiveCodes
+    , ehapkVersionCode
+    , ehapkFileSha256Base64
+    , ehapkExternallyHostedURL
+    , ehapkVersionName
+    , ehapkPackageName
+    , ehapkFileSize
+    , ehapkIconBase64
+    , ehapkUsesFeatures
+    , ehapkMinimumSdk
+    , ehapkFileSha1Base64
+    , ehapkUsesPermissions
+    , ehapkCertificateBase64s
+
+    -- * EditsImagesListImageType
+    , EditsImagesListImageType (..)
+
+    -- * EditsTestersPatchTrack
+    , EditsTestersPatchTrack (..)
+
+    -- * EditsTestersGetTrack
+    , EditsTestersGetTrack (..)
+
+    -- * ExpansionFilesUploadResponse
+    , ExpansionFilesUploadResponse
+    , expansionFilesUploadResponse
+    , efurExpansionFile
+
+    -- * ImagesUploadResponse
+    , ImagesUploadResponse
+    , imagesUploadResponse
+    , iurImage
+
+    -- * EditsImagesUploadImageType
+    , EditsImagesUploadImageType (..)
+
+    -- * InAppProductsListResponse
+    , InAppProductsListResponse
+    , inAppProductsListResponse
+    , iaplrTokenPagination
+    , iaplrPageInfo
+    , iaplrKind
+    , iaplrInAppProduct
+
+    -- * EditsExpansionFilesUploadExpansionFileType
+    , EditsExpansionFilesUploadExpansionFileType (..)
+
+    -- * APKListingsListResponse
+    , APKListingsListResponse
+    , aPKListingsListResponse
+    , apkllrKind
+    , apkllrListings
+
+    -- * InAppProductsInsertResponse
+    , InAppProductsInsertResponse
+    , inAppProductsInsertResponse
+    , iapirInAppProduct
+
+    -- * APKsAddExternallyHostedResponse
+    , APKsAddExternallyHostedResponse
+    , aPKsAddExternallyHostedResponse
+    , apkaehrExternallyHostedAPK
+
+    -- * SubscriptionDeferralInfo
+    , SubscriptionDeferralInfo
+    , subscriptionDeferralInfo
+    , sdiDesiredExpiryTimeMillis
+    , sdiExpectedExpiryTimeMillis
+
+    -- * EditsExpansionFilesGetExpansionFileType
+    , EditsExpansionFilesGetExpansionFileType (..)
+
+    -- * EditsExpansionFilesPatchExpansionFileType
+    , EditsExpansionFilesPatchExpansionFileType (..)
+
+    -- * EditsExpansionFilesUpdateExpansionFileType
+    , EditsExpansionFilesUpdateExpansionFileType (..)
+
+    -- * InAppProduct
+    , InAppProduct
+    , inAppProduct
+    , iapStatus
+    , iapTrialPeriod
+    , iapPackageName
+    , iapSeason
+    , iapPurchaseType
+    , iapSubscriptionPeriod
+    , iapPrices
+    , iapSKU
+    , iapDefaultPrice
+    , iapListings
+    , iapDefaultLanguage
+
+    -- * InAppProductsBatchResponseEntry
+    , InAppProductsBatchResponseEntry
+    , inAppProductsBatchResponseEntry
+    , iInAppProductsupdateresponse
+    , iInAppProductsinsertresponse
+    , iBatchId
+
+    -- * Price
+    , Price
+    , price
+    , pPriceMicros
+    , pCurrency
+
+    -- * EditsImagesDeleteImageType
+    , EditsImagesDeleteImageType (..)
+
+    -- * APKBinary
+    , APKBinary
+    , aPKBinary
+    , apkbSha1
+
+    -- * APKsListResponse
+    , APKsListResponse
+    , aPKsListResponse
+    , apklrKind
+    , apklrAPKs
+
+    -- * ExternallyHostedAPKUsesPermission
+    , ExternallyHostedAPKUsesPermission
+    , externallyHostedAPKUsesPermission
+    , ehapkupName
+    , ehapkupMaxSdkVersion
+
+    -- * ListingsListResponse
+    , ListingsListResponse
+    , listingsListResponse
+    , llrKind
+    , llrListings
+
+    -- * APKsAddExternallyHostedRequest
+    , APKsAddExternallyHostedRequest
+    , aPKsAddExternallyHostedRequest
+    , aExternallyHostedAPK
+
+    -- * InAppProductsInsertRequest
+    , InAppProductsInsertRequest
+    , inAppProductsInsertRequest
+    , iInAppProduct
+
+    -- * EntitlementsListResponse
+    , EntitlementsListResponse
+    , entitlementsListResponse
+    , elrTokenPagination
+    , elrPageInfo
+    , elrResources
+
+    -- * EditsTestersUpdateTrack
+    , EditsTestersUpdateTrack (..)
+
+    -- * InAppProductsUpdateRequest
+    , InAppProductsUpdateRequest
+    , inAppProductsUpdateRequest
+    , inInAppProduct
+
+    -- * Entitlement
+    , Entitlement
+    , entitlement
+    , eKind
+    , eProductType
+    , eToken
+    , eProductId
+
+    -- * InAppProductsBatchResponse
+    , InAppProductsBatchResponse
+    , inAppProductsBatchResponse
+    , iEntrys
+    , iKind
+    ) where
+
+import           Network.Google.AndroidPublisher.Types.Product
+import           Network.Google.AndroidPublisher.Types.Sum
+import           Network.Google.Prelude
+
+-- | Default request referring to version 'v2' of the Google Play Developer API. This contains the host and root path used as a starting point for constructing service requests.
+androidPublisherService :: Service
+androidPublisherService
+  = defaultService (ServiceId "androidpublisher:v2")
+      "www.googleapis.com"
+
+-- | View and manage your Google Play Developer account
+androidpublisherScope :: OAuthScope
+androidpublisherScope = "https://www.googleapis.com/auth/androidpublisher";
diff --git a/gen/Network/Google/AndroidPublisher/Types/Product.hs b/gen/Network/Google/AndroidPublisher/Types/Product.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/AndroidPublisher/Types/Product.hs
@@ -0,0 +1,2636 @@
+{-# 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 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+module Network.Google.AndroidPublisher.Types.Product where
+
+import           Network.Google.AndroidPublisher.Types.Sum
+import           Network.Google.Prelude
+
+-- | List of localized title and description data.
+--
+-- /See:/ 'inAppProductListings' smart constructor.
+newtype InAppProductListings = InAppProductListings
+    { _iaplAddtional :: HashMap Text InAppProductListing
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'InAppProductListings' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'iaplAddtional'
+inAppProductListings
+    :: HashMap Text InAppProductListing -- ^ 'iaplAddtional'
+    -> InAppProductListings
+inAppProductListings pIaplAddtional_ =
+    InAppProductListings
+    { _iaplAddtional = _Coerce # pIaplAddtional_
+    }
+
+-- | The language of the localized data, as defined by BCP 47. i.e.:
+-- \"en-US\", \"en-GB\".
+iaplAddtional :: Lens' InAppProductListings (HashMap Text InAppProductListing)
+iaplAddtional
+  = lens _iaplAddtional
+      (\ s a -> s{_iaplAddtional = a})
+      . _Coerce
+
+instance FromJSON InAppProductListings where
+        parseJSON
+          = withObject "InAppProductListings"
+              (\ o -> InAppProductListings <$> (parseJSONObject o))
+
+instance ToJSON InAppProductListings where
+        toJSON = toJSON . _iaplAddtional
+
+--
+-- /See:/ 'inAppProductsUpdateResponse' smart constructor.
+newtype InAppProductsUpdateResponse = InAppProductsUpdateResponse
+    { _iapurInAppProduct :: Maybe InAppProduct
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'InAppProductsUpdateResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'iapurInAppProduct'
+inAppProductsUpdateResponse
+    :: InAppProductsUpdateResponse
+inAppProductsUpdateResponse =
+    InAppProductsUpdateResponse
+    { _iapurInAppProduct = Nothing
+    }
+
+iapurInAppProduct :: Lens' InAppProductsUpdateResponse (Maybe InAppProduct)
+iapurInAppProduct
+  = lens _iapurInAppProduct
+      (\ s a -> s{_iapurInAppProduct = a})
+
+instance FromJSON InAppProductsUpdateResponse where
+        parseJSON
+          = withObject "InAppProductsUpdateResponse"
+              (\ o ->
+                 InAppProductsUpdateResponse <$>
+                   (o .:? "inappproduct"))
+
+instance ToJSON InAppProductsUpdateResponse where
+        toJSON InAppProductsUpdateResponse{..}
+          = object
+              (catMaybes
+                 [("inappproduct" .=) <$> _iapurInAppProduct])
+
+--
+-- /See:/ 'monthDay' smart constructor.
+data MonthDay = MonthDay
+    { _mdDay   :: !(Maybe (Textual Word32))
+    , _mdMonth :: !(Maybe (Textual Word32))
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'MonthDay' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'mdDay'
+--
+-- * 'mdMonth'
+monthDay
+    :: MonthDay
+monthDay =
+    MonthDay
+    { _mdDay = Nothing
+    , _mdMonth = Nothing
+    }
+
+-- | Day of a month, value in [1, 31] range. Valid range depends on the
+-- specified month.
+mdDay :: Lens' MonthDay (Maybe Word32)
+mdDay
+  = lens _mdDay (\ s a -> s{_mdDay = a}) .
+      mapping _Coerce
+
+-- | Month of a year. e.g. 1 = JAN, 2 = FEB etc.
+mdMonth :: Lens' MonthDay (Maybe Word32)
+mdMonth
+  = lens _mdMonth (\ s a -> s{_mdMonth = a}) .
+      mapping _Coerce
+
+instance FromJSON MonthDay where
+        parseJSON
+          = withObject "MonthDay"
+              (\ o ->
+                 MonthDay <$> (o .:? "day") <*> (o .:? "month"))
+
+instance ToJSON MonthDay where
+        toJSON MonthDay{..}
+          = object
+              (catMaybes
+                 [("day" .=) <$> _mdDay, ("month" .=) <$> _mdMonth])
+
+--
+-- /See:/ 'track' smart constructor.
+data Track = Track
+    { _tVersionCodes :: !(Maybe [Textual Int32])
+    , _tTrack        :: !(Maybe Text)
+    , _tUserFraction :: !(Maybe (Textual Double))
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'Track' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'tVersionCodes'
+--
+-- * 'tTrack'
+--
+-- * 'tUserFraction'
+track
+    :: Track
+track =
+    Track
+    { _tVersionCodes = Nothing
+    , _tTrack = Nothing
+    , _tUserFraction = Nothing
+    }
+
+tVersionCodes :: Lens' Track [Int32]
+tVersionCodes
+  = lens _tVersionCodes
+      (\ s a -> s{_tVersionCodes = a})
+      . _Default
+      . _Coerce
+
+tTrack :: Lens' Track (Maybe Text)
+tTrack = lens _tTrack (\ s a -> s{_tTrack = a})
+
+tUserFraction :: Lens' Track (Maybe Double)
+tUserFraction
+  = lens _tUserFraction
+      (\ s a -> s{_tUserFraction = a})
+      . mapping _Coerce
+
+instance FromJSON Track where
+        parseJSON
+          = withObject "Track"
+              (\ o ->
+                 Track <$>
+                   (o .:? "versionCodes" .!= mempty) <*> (o .:? "track")
+                     <*> (o .:? "userFraction"))
+
+instance ToJSON Track where
+        toJSON Track{..}
+          = object
+              (catMaybes
+                 [("versionCodes" .=) <$> _tVersionCodes,
+                  ("track" .=) <$> _tTrack,
+                  ("userFraction" .=) <$> _tUserFraction])
+
+--
+-- /See:/ 'image' smart constructor.
+data Image = Image
+    { _iURL  :: !(Maybe Text)
+    , _iSha1 :: !(Maybe Text)
+    , _iId   :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'Image' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'iURL'
+--
+-- * 'iSha1'
+--
+-- * 'iId'
+image
+    :: Image
+image =
+    Image
+    { _iURL = Nothing
+    , _iSha1 = Nothing
+    , _iId = Nothing
+    }
+
+-- | A URL that will serve a preview of the image.
+iURL :: Lens' Image (Maybe Text)
+iURL = lens _iURL (\ s a -> s{_iURL = a})
+
+-- | A sha1 hash of the image that was uploaded.
+iSha1 :: Lens' Image (Maybe Text)
+iSha1 = lens _iSha1 (\ s a -> s{_iSha1 = a})
+
+-- | A unique id representing this image.
+iId :: Lens' Image (Maybe Text)
+iId = lens _iId (\ s a -> s{_iId = a})
+
+instance FromJSON Image where
+        parseJSON
+          = withObject "Image"
+              (\ o ->
+                 Image <$>
+                   (o .:? "url") <*> (o .:? "sha1") <*> (o .:? "id"))
+
+instance ToJSON Image where
+        toJSON Image{..}
+          = object
+              (catMaybes
+                 [("url" .=) <$> _iURL, ("sha1" .=) <$> _iSha1,
+                  ("id" .=) <$> _iId])
+
+--
+-- /See:/ 'inAppProductsBatchRequestEntry' smart constructor.
+data InAppProductsBatchRequestEntry = InAppProductsBatchRequestEntry
+    { _iapbreMethodName                 :: !(Maybe Text)
+    , _iapbreInAppProductsinsertrequest :: !(Maybe InAppProductsInsertRequest)
+    , _iapbreInAppProductsupdaterequest :: !(Maybe InAppProductsUpdateRequest)
+    , _iapbreBatchId                    :: !(Maybe (Textual Word32))
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'InAppProductsBatchRequestEntry' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'iapbreMethodName'
+--
+-- * 'iapbreInAppProductsinsertrequest'
+--
+-- * 'iapbreInAppProductsupdaterequest'
+--
+-- * 'iapbreBatchId'
+inAppProductsBatchRequestEntry
+    :: InAppProductsBatchRequestEntry
+inAppProductsBatchRequestEntry =
+    InAppProductsBatchRequestEntry
+    { _iapbreMethodName = Nothing
+    , _iapbreInAppProductsinsertrequest = Nothing
+    , _iapbreInAppProductsupdaterequest = Nothing
+    , _iapbreBatchId = Nothing
+    }
+
+iapbreMethodName :: Lens' InAppProductsBatchRequestEntry (Maybe Text)
+iapbreMethodName
+  = lens _iapbreMethodName
+      (\ s a -> s{_iapbreMethodName = a})
+
+iapbreInAppProductsinsertrequest :: Lens' InAppProductsBatchRequestEntry (Maybe InAppProductsInsertRequest)
+iapbreInAppProductsinsertrequest
+  = lens _iapbreInAppProductsinsertrequest
+      (\ s a -> s{_iapbreInAppProductsinsertrequest = a})
+
+iapbreInAppProductsupdaterequest :: Lens' InAppProductsBatchRequestEntry (Maybe InAppProductsUpdateRequest)
+iapbreInAppProductsupdaterequest
+  = lens _iapbreInAppProductsupdaterequest
+      (\ s a -> s{_iapbreInAppProductsupdaterequest = a})
+
+iapbreBatchId :: Lens' InAppProductsBatchRequestEntry (Maybe Word32)
+iapbreBatchId
+  = lens _iapbreBatchId
+      (\ s a -> s{_iapbreBatchId = a})
+      . mapping _Coerce
+
+instance FromJSON InAppProductsBatchRequestEntry
+         where
+        parseJSON
+          = withObject "InAppProductsBatchRequestEntry"
+              (\ o ->
+                 InAppProductsBatchRequestEntry <$>
+                   (o .:? "methodName") <*>
+                     (o .:? "inappproductsinsertrequest")
+                     <*> (o .:? "inappproductsupdaterequest")
+                     <*> (o .:? "batchId"))
+
+instance ToJSON InAppProductsBatchRequestEntry where
+        toJSON InAppProductsBatchRequestEntry{..}
+          = object
+              (catMaybes
+                 [("methodName" .=) <$> _iapbreMethodName,
+                  ("inappproductsinsertrequest" .=) <$>
+                    _iapbreInAppProductsinsertrequest,
+                  ("inappproductsupdaterequest" .=) <$>
+                    _iapbreInAppProductsupdaterequest,
+                  ("batchId" .=) <$> _iapbreBatchId])
+
+--
+-- /See:/ 'inAppProductListing' smart constructor.
+data InAppProductListing = InAppProductListing
+    { _iaplTitle       :: !(Maybe Text)
+    , _iaplDescription :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'InAppProductListing' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'iaplTitle'
+--
+-- * 'iaplDescription'
+inAppProductListing
+    :: InAppProductListing
+inAppProductListing =
+    InAppProductListing
+    { _iaplTitle = Nothing
+    , _iaplDescription = Nothing
+    }
+
+iaplTitle :: Lens' InAppProductListing (Maybe Text)
+iaplTitle
+  = lens _iaplTitle (\ s a -> s{_iaplTitle = a})
+
+iaplDescription :: Lens' InAppProductListing (Maybe Text)
+iaplDescription
+  = lens _iaplDescription
+      (\ s a -> s{_iaplDescription = a})
+
+instance FromJSON InAppProductListing where
+        parseJSON
+          = withObject "InAppProductListing"
+              (\ o ->
+                 InAppProductListing <$>
+                   (o .:? "title") <*> (o .:? "description"))
+
+instance ToJSON InAppProductListing where
+        toJSON InAppProductListing{..}
+          = object
+              (catMaybes
+                 [("title" .=) <$> _iaplTitle,
+                  ("description" .=) <$> _iaplDescription])
+
+--
+-- /See:/ 'imagesDeleteAllResponse' smart constructor.
+newtype ImagesDeleteAllResponse = ImagesDeleteAllResponse
+    { _idarDeleted :: Maybe [Image]
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ImagesDeleteAllResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'idarDeleted'
+imagesDeleteAllResponse
+    :: ImagesDeleteAllResponse
+imagesDeleteAllResponse =
+    ImagesDeleteAllResponse
+    { _idarDeleted = Nothing
+    }
+
+idarDeleted :: Lens' ImagesDeleteAllResponse [Image]
+idarDeleted
+  = lens _idarDeleted (\ s a -> s{_idarDeleted = a}) .
+      _Default
+      . _Coerce
+
+instance FromJSON ImagesDeleteAllResponse where
+        parseJSON
+          = withObject "ImagesDeleteAllResponse"
+              (\ o ->
+                 ImagesDeleteAllResponse <$>
+                   (o .:? "deleted" .!= mempty))
+
+instance ToJSON ImagesDeleteAllResponse where
+        toJSON ImagesDeleteAllResponse{..}
+          = object
+              (catMaybes [("deleted" .=) <$> _idarDeleted])
+
+--
+-- /See:/ 'tokenPagination' smart constructor.
+data TokenPagination = TokenPagination
+    { _tpNextPageToken     :: !(Maybe Text)
+    , _tpPreviousPageToken :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'TokenPagination' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'tpNextPageToken'
+--
+-- * 'tpPreviousPageToken'
+tokenPagination
+    :: TokenPagination
+tokenPagination =
+    TokenPagination
+    { _tpNextPageToken = Nothing
+    , _tpPreviousPageToken = Nothing
+    }
+
+tpNextPageToken :: Lens' TokenPagination (Maybe Text)
+tpNextPageToken
+  = lens _tpNextPageToken
+      (\ s a -> s{_tpNextPageToken = a})
+
+tpPreviousPageToken :: Lens' TokenPagination (Maybe Text)
+tpPreviousPageToken
+  = lens _tpPreviousPageToken
+      (\ s a -> s{_tpPreviousPageToken = a})
+
+instance FromJSON TokenPagination where
+        parseJSON
+          = withObject "TokenPagination"
+              (\ o ->
+                 TokenPagination <$>
+                   (o .:? "nextPageToken") <*>
+                     (o .:? "previousPageToken"))
+
+instance ToJSON TokenPagination where
+        toJSON TokenPagination{..}
+          = object
+              (catMaybes
+                 [("nextPageToken" .=) <$> _tpNextPageToken,
+                  ("previousPageToken" .=) <$> _tpPreviousPageToken])
+
+--
+-- /See:/ 'expansionFile' smart constructor.
+data ExpansionFile = ExpansionFile
+    { _efFileSize          :: !(Maybe (Textual Int64))
+    , _efReferencesVersion :: !(Maybe (Textual Int32))
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ExpansionFile' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'efFileSize'
+--
+-- * 'efReferencesVersion'
+expansionFile
+    :: ExpansionFile
+expansionFile =
+    ExpansionFile
+    { _efFileSize = Nothing
+    , _efReferencesVersion = Nothing
+    }
+
+-- | If set this field indicates that this APK has an Expansion File uploaded
+-- to it: this APK does not reference another APK\'s Expansion File. The
+-- field\'s value is the size of the uploaded Expansion File in bytes.
+efFileSize :: Lens' ExpansionFile (Maybe Int64)
+efFileSize
+  = lens _efFileSize (\ s a -> s{_efFileSize = a}) .
+      mapping _Coerce
+
+-- | If set this APK\'s Expansion File references another APK\'s Expansion
+-- File. The file_size field will not be set.
+efReferencesVersion :: Lens' ExpansionFile (Maybe Int32)
+efReferencesVersion
+  = lens _efReferencesVersion
+      (\ s a -> s{_efReferencesVersion = a})
+      . mapping _Coerce
+
+instance FromJSON ExpansionFile where
+        parseJSON
+          = withObject "ExpansionFile"
+              (\ o ->
+                 ExpansionFile <$>
+                   (o .:? "fileSize") <*> (o .:? "referencesVersion"))
+
+instance ToJSON ExpansionFile where
+        toJSON ExpansionFile{..}
+          = object
+              (catMaybes
+                 [("fileSize" .=) <$> _efFileSize,
+                  ("referencesVersion" .=) <$> _efReferencesVersion])
+
+--
+-- /See:/ 'testers' smart constructor.
+data Testers = Testers
+    { _tGooglePlusCommUnities :: !(Maybe [Text])
+    , _tGoogleGroups          :: !(Maybe [Text])
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'Testers' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'tGooglePlusCommUnities'
+--
+-- * 'tGoogleGroups'
+testers
+    :: Testers
+testers =
+    Testers
+    { _tGooglePlusCommUnities = Nothing
+    , _tGoogleGroups = Nothing
+    }
+
+tGooglePlusCommUnities :: Lens' Testers [Text]
+tGooglePlusCommUnities
+  = lens _tGooglePlusCommUnities
+      (\ s a -> s{_tGooglePlusCommUnities = a})
+      . _Default
+      . _Coerce
+
+tGoogleGroups :: Lens' Testers [Text]
+tGoogleGroups
+  = lens _tGoogleGroups
+      (\ s a -> s{_tGoogleGroups = a})
+      . _Default
+      . _Coerce
+
+instance FromJSON Testers where
+        parseJSON
+          = withObject "Testers"
+              (\ o ->
+                 Testers <$>
+                   (o .:? "googlePlusCommunities" .!= mempty) <*>
+                     (o .:? "googleGroups" .!= mempty))
+
+instance ToJSON Testers where
+        toJSON Testers{..}
+          = object
+              (catMaybes
+                 [("googlePlusCommunities" .=) <$>
+                    _tGooglePlusCommUnities,
+                  ("googleGroups" .=) <$> _tGoogleGroups])
+
+--
+-- /See:/ 'listing' smart constructor.
+data Listing = Listing
+    { _lFullDescription  :: !(Maybe Text)
+    , _lVideo            :: !(Maybe Text)
+    , _lShortDescription :: !(Maybe Text)
+    , _lLanguage         :: !(Maybe Text)
+    , _lTitle            :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'Listing' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'lFullDescription'
+--
+-- * 'lVideo'
+--
+-- * 'lShortDescription'
+--
+-- * 'lLanguage'
+--
+-- * 'lTitle'
+listing
+    :: Listing
+listing =
+    Listing
+    { _lFullDescription = Nothing
+    , _lVideo = Nothing
+    , _lShortDescription = Nothing
+    , _lLanguage = Nothing
+    , _lTitle = Nothing
+    }
+
+-- | Full description of the app; this may be up to 4000 characters in
+-- length.
+lFullDescription :: Lens' Listing (Maybe Text)
+lFullDescription
+  = lens _lFullDescription
+      (\ s a -> s{_lFullDescription = a})
+
+-- | URL of a promotional YouTube video for the app.
+lVideo :: Lens' Listing (Maybe Text)
+lVideo = lens _lVideo (\ s a -> s{_lVideo = a})
+
+-- | Short description of the app (previously known as promo text); this may
+-- be up to 80 characters in length.
+lShortDescription :: Lens' Listing (Maybe Text)
+lShortDescription
+  = lens _lShortDescription
+      (\ s a -> s{_lShortDescription = a})
+
+-- | Language localization code (for example, \"de-AT\" for Austrian German).
+lLanguage :: Lens' Listing (Maybe Text)
+lLanguage
+  = lens _lLanguage (\ s a -> s{_lLanguage = a})
+
+-- | App\'s localized title.
+lTitle :: Lens' Listing (Maybe Text)
+lTitle = lens _lTitle (\ s a -> s{_lTitle = a})
+
+instance FromJSON Listing where
+        parseJSON
+          = withObject "Listing"
+              (\ o ->
+                 Listing <$>
+                   (o .:? "fullDescription") <*> (o .:? "video") <*>
+                     (o .:? "shortDescription")
+                     <*> (o .:? "language")
+                     <*> (o .:? "title"))
+
+instance ToJSON Listing where
+        toJSON Listing{..}
+          = object
+              (catMaybes
+                 [("fullDescription" .=) <$> _lFullDescription,
+                  ("video" .=) <$> _lVideo,
+                  ("shortDescription" .=) <$> _lShortDescription,
+                  ("language" .=) <$> _lLanguage,
+                  ("title" .=) <$> _lTitle])
+
+--
+-- /See:/ 'aPK' smart constructor.
+data APK = APK
+    { _aVersionCode :: !(Maybe (Textual Int32))
+    , _aBinary      :: !(Maybe APKBinary)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'APK' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'aVersionCode'
+--
+-- * 'aBinary'
+aPK
+    :: APK
+aPK =
+    APK
+    { _aVersionCode = Nothing
+    , _aBinary = Nothing
+    }
+
+-- | The version code of the APK, as specified in the APK\'s manifest file.
+aVersionCode :: Lens' APK (Maybe Int32)
+aVersionCode
+  = lens _aVersionCode (\ s a -> s{_aVersionCode = a})
+      . mapping _Coerce
+
+-- | Information about the binary payload of this APK.
+aBinary :: Lens' APK (Maybe APKBinary)
+aBinary = lens _aBinary (\ s a -> s{_aBinary = a})
+
+instance FromJSON APK where
+        parseJSON
+          = withObject "APK"
+              (\ o ->
+                 APK <$> (o .:? "versionCode") <*> (o .:? "binary"))
+
+instance ToJSON APK where
+        toJSON APK{..}
+          = object
+              (catMaybes
+                 [("versionCode" .=) <$> _aVersionCode,
+                  ("binary" .=) <$> _aBinary])
+
+--
+-- /See:/ 'subscriptionPurchasesDeferRequest' smart constructor.
+newtype SubscriptionPurchasesDeferRequest = SubscriptionPurchasesDeferRequest
+    { _spdrDeferralInfo :: Maybe SubscriptionDeferralInfo
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'SubscriptionPurchasesDeferRequest' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'spdrDeferralInfo'
+subscriptionPurchasesDeferRequest
+    :: SubscriptionPurchasesDeferRequest
+subscriptionPurchasesDeferRequest =
+    SubscriptionPurchasesDeferRequest
+    { _spdrDeferralInfo = Nothing
+    }
+
+-- | The information about the new desired expiry time for the subscription.
+spdrDeferralInfo :: Lens' SubscriptionPurchasesDeferRequest (Maybe SubscriptionDeferralInfo)
+spdrDeferralInfo
+  = lens _spdrDeferralInfo
+      (\ s a -> s{_spdrDeferralInfo = a})
+
+instance FromJSON SubscriptionPurchasesDeferRequest
+         where
+        parseJSON
+          = withObject "SubscriptionPurchasesDeferRequest"
+              (\ o ->
+                 SubscriptionPurchasesDeferRequest <$>
+                   (o .:? "deferralInfo"))
+
+instance ToJSON SubscriptionPurchasesDeferRequest
+         where
+        toJSON SubscriptionPurchasesDeferRequest{..}
+          = object
+              (catMaybes
+                 [("deferralInfo" .=) <$> _spdrDeferralInfo])
+
+--
+-- /See:/ 'tracksListResponse' smart constructor.
+data TracksListResponse = TracksListResponse
+    { _tlrTracks :: !(Maybe [Track])
+    , _tlrKind   :: !Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'TracksListResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'tlrTracks'
+--
+-- * 'tlrKind'
+tracksListResponse
+    :: TracksListResponse
+tracksListResponse =
+    TracksListResponse
+    { _tlrTracks = Nothing
+    , _tlrKind = "androidpublisher#tracksListResponse"
+    }
+
+tlrTracks :: Lens' TracksListResponse [Track]
+tlrTracks
+  = lens _tlrTracks (\ s a -> s{_tlrTracks = a}) .
+      _Default
+      . _Coerce
+
+-- | Identifies what kind of resource this is. Value: the fixed string
+-- \"androidpublisher#tracksListResponse\".
+tlrKind :: Lens' TracksListResponse Text
+tlrKind = lens _tlrKind (\ s a -> s{_tlrKind = a})
+
+instance FromJSON TracksListResponse where
+        parseJSON
+          = withObject "TracksListResponse"
+              (\ o ->
+                 TracksListResponse <$>
+                   (o .:? "tracks" .!= mempty) <*>
+                     (o .:? "kind" .!=
+                        "androidpublisher#tracksListResponse"))
+
+instance ToJSON TracksListResponse where
+        toJSON TracksListResponse{..}
+          = object
+              (catMaybes
+                 [("tracks" .=) <$> _tlrTracks,
+                  Just ("kind" .= _tlrKind)])
+
+--
+-- /See:/ 'season' smart constructor.
+data Season = Season
+    { _sStart :: !(Maybe MonthDay)
+    , _sEnd   :: !(Maybe MonthDay)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'Season' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'sStart'
+--
+-- * 'sEnd'
+season
+    :: Season
+season =
+    Season
+    { _sStart = Nothing
+    , _sEnd = Nothing
+    }
+
+-- | Inclusive start date of the recurrence period.
+sStart :: Lens' Season (Maybe MonthDay)
+sStart = lens _sStart (\ s a -> s{_sStart = a})
+
+-- | Inclusive end date of the recurrence period.
+sEnd :: Lens' Season (Maybe MonthDay)
+sEnd = lens _sEnd (\ s a -> s{_sEnd = a})
+
+instance FromJSON Season where
+        parseJSON
+          = withObject "Season"
+              (\ o -> Season <$> (o .:? "start") <*> (o .:? "end"))
+
+instance ToJSON Season where
+        toJSON Season{..}
+          = object
+              (catMaybes
+                 [("start" .=) <$> _sStart, ("end" .=) <$> _sEnd])
+
+--
+-- /See:/ 'pageInfo' smart constructor.
+data PageInfo = PageInfo
+    { _piResultPerPage :: !(Maybe (Textual Int32))
+    , _piTotalResults  :: !(Maybe (Textual Int32))
+    , _piStartIndex    :: !(Maybe (Textual Int32))
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'PageInfo' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'piResultPerPage'
+--
+-- * 'piTotalResults'
+--
+-- * 'piStartIndex'
+pageInfo
+    :: PageInfo
+pageInfo =
+    PageInfo
+    { _piResultPerPage = Nothing
+    , _piTotalResults = Nothing
+    , _piStartIndex = Nothing
+    }
+
+piResultPerPage :: Lens' PageInfo (Maybe Int32)
+piResultPerPage
+  = lens _piResultPerPage
+      (\ s a -> s{_piResultPerPage = a})
+      . mapping _Coerce
+
+piTotalResults :: Lens' PageInfo (Maybe Int32)
+piTotalResults
+  = lens _piTotalResults
+      (\ s a -> s{_piTotalResults = a})
+      . mapping _Coerce
+
+piStartIndex :: Lens' PageInfo (Maybe Int32)
+piStartIndex
+  = lens _piStartIndex (\ s a -> s{_piStartIndex = a})
+      . mapping _Coerce
+
+instance FromJSON PageInfo where
+        parseJSON
+          = withObject "PageInfo"
+              (\ o ->
+                 PageInfo <$>
+                   (o .:? "resultPerPage") <*> (o .:? "totalResults")
+                     <*> (o .:? "startIndex"))
+
+instance ToJSON PageInfo where
+        toJSON PageInfo{..}
+          = object
+              (catMaybes
+                 [("resultPerPage" .=) <$> _piResultPerPage,
+                  ("totalResults" .=) <$> _piTotalResults,
+                  ("startIndex" .=) <$> _piStartIndex])
+
+--
+-- /See:/ 'imagesListResponse' smart constructor.
+newtype ImagesListResponse = ImagesListResponse
+    { _ilrImages :: Maybe [Image]
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ImagesListResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'ilrImages'
+imagesListResponse
+    :: ImagesListResponse
+imagesListResponse =
+    ImagesListResponse
+    { _ilrImages = Nothing
+    }
+
+ilrImages :: Lens' ImagesListResponse [Image]
+ilrImages
+  = lens _ilrImages (\ s a -> s{_ilrImages = a}) .
+      _Default
+      . _Coerce
+
+instance FromJSON ImagesListResponse where
+        parseJSON
+          = withObject "ImagesListResponse"
+              (\ o ->
+                 ImagesListResponse <$> (o .:? "images" .!= mempty))
+
+instance ToJSON ImagesListResponse where
+        toJSON ImagesListResponse{..}
+          = object (catMaybes [("images" .=) <$> _ilrImages])
+
+-- | Represents an edit of an app. An edit allows clients to make multiple
+-- changes before committing them in one operation.
+--
+-- /See:/ 'appEdit' smart constructor.
+data AppEdit = AppEdit
+    { _aeId                :: !(Maybe Text)
+    , _aeExpiryTimeSeconds :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'AppEdit' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'aeId'
+--
+-- * 'aeExpiryTimeSeconds'
+appEdit
+    :: AppEdit
+appEdit =
+    AppEdit
+    { _aeId = Nothing
+    , _aeExpiryTimeSeconds = Nothing
+    }
+
+-- | The ID of the edit that can be used in subsequent API calls.
+aeId :: Lens' AppEdit (Maybe Text)
+aeId = lens _aeId (\ s a -> s{_aeId = a})
+
+-- | The time at which the edit will expire and will be no longer valid for
+-- use in any subsequent API calls (encoded as seconds since the Epoch).
+aeExpiryTimeSeconds :: Lens' AppEdit (Maybe Text)
+aeExpiryTimeSeconds
+  = lens _aeExpiryTimeSeconds
+      (\ s a -> s{_aeExpiryTimeSeconds = a})
+
+instance FromJSON AppEdit where
+        parseJSON
+          = withObject "AppEdit"
+              (\ o ->
+                 AppEdit <$>
+                   (o .:? "id") <*> (o .:? "expiryTimeSeconds"))
+
+instance ToJSON AppEdit where
+        toJSON AppEdit{..}
+          = object
+              (catMaybes
+                 [("id" .=) <$> _aeId,
+                  ("expiryTimeSeconds" .=) <$> _aeExpiryTimeSeconds])
+
+-- | A ProductPurchase resource indicates the status of a user\'s inapp
+-- product purchase.
+--
+-- /See:/ 'productPurchase' smart constructor.
+data ProductPurchase = ProductPurchase
+    { _ppPurchaseState      :: !(Maybe (Textual Int32))
+    , _ppConsumptionState   :: !(Maybe (Textual Int32))
+    , _ppKind               :: !Text
+    , _ppPurchaseTimeMillis :: !(Maybe (Textual Int64))
+    , _ppDeveloperPayload   :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ProductPurchase' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'ppPurchaseState'
+--
+-- * 'ppConsumptionState'
+--
+-- * 'ppKind'
+--
+-- * 'ppPurchaseTimeMillis'
+--
+-- * 'ppDeveloperPayload'
+productPurchase
+    :: ProductPurchase
+productPurchase =
+    ProductPurchase
+    { _ppPurchaseState = Nothing
+    , _ppConsumptionState = Nothing
+    , _ppKind = "androidpublisher#productPurchase"
+    , _ppPurchaseTimeMillis = Nothing
+    , _ppDeveloperPayload = Nothing
+    }
+
+-- | The purchase state of the order. Possible values are: - Purchased -
+-- Cancelled
+ppPurchaseState :: Lens' ProductPurchase (Maybe Int32)
+ppPurchaseState
+  = lens _ppPurchaseState
+      (\ s a -> s{_ppPurchaseState = a})
+      . mapping _Coerce
+
+-- | The consumption state of the inapp product. Possible values are: - Yet
+-- to be consumed - Consumed
+ppConsumptionState :: Lens' ProductPurchase (Maybe Int32)
+ppConsumptionState
+  = lens _ppConsumptionState
+      (\ s a -> s{_ppConsumptionState = a})
+      . mapping _Coerce
+
+-- | This kind represents an inappPurchase object in the androidpublisher
+-- service.
+ppKind :: Lens' ProductPurchase Text
+ppKind = lens _ppKind (\ s a -> s{_ppKind = a})
+
+-- | The time the product was purchased, in milliseconds since the epoch (Jan
+-- 1, 1970).
+ppPurchaseTimeMillis :: Lens' ProductPurchase (Maybe Int64)
+ppPurchaseTimeMillis
+  = lens _ppPurchaseTimeMillis
+      (\ s a -> s{_ppPurchaseTimeMillis = a})
+      . mapping _Coerce
+
+-- | A developer-specified string that contains supplemental information
+-- about an order.
+ppDeveloperPayload :: Lens' ProductPurchase (Maybe Text)
+ppDeveloperPayload
+  = lens _ppDeveloperPayload
+      (\ s a -> s{_ppDeveloperPayload = a})
+
+instance FromJSON ProductPurchase where
+        parseJSON
+          = withObject "ProductPurchase"
+              (\ o ->
+                 ProductPurchase <$>
+                   (o .:? "purchaseState") <*>
+                     (o .:? "consumptionState")
+                     <*>
+                     (o .:? "kind" .!= "androidpublisher#productPurchase")
+                     <*> (o .:? "purchaseTimeMillis")
+                     <*> (o .:? "developerPayload"))
+
+instance ToJSON ProductPurchase where
+        toJSON ProductPurchase{..}
+          = object
+              (catMaybes
+                 [("purchaseState" .=) <$> _ppPurchaseState,
+                  ("consumptionState" .=) <$> _ppConsumptionState,
+                  Just ("kind" .= _ppKind),
+                  ("purchaseTimeMillis" .=) <$> _ppPurchaseTimeMillis,
+                  ("developerPayload" .=) <$> _ppDeveloperPayload])
+
+--
+-- /See:/ 'subscriptionPurchasesDeferResponse' smart constructor.
+newtype SubscriptionPurchasesDeferResponse = SubscriptionPurchasesDeferResponse
+    { _spdrNewExpiryTimeMillis :: Maybe (Textual Int64)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'SubscriptionPurchasesDeferResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'spdrNewExpiryTimeMillis'
+subscriptionPurchasesDeferResponse
+    :: SubscriptionPurchasesDeferResponse
+subscriptionPurchasesDeferResponse =
+    SubscriptionPurchasesDeferResponse
+    { _spdrNewExpiryTimeMillis = Nothing
+    }
+
+-- | The new expiry time for the subscription in milliseconds since the
+-- Epoch.
+spdrNewExpiryTimeMillis :: Lens' SubscriptionPurchasesDeferResponse (Maybe Int64)
+spdrNewExpiryTimeMillis
+  = lens _spdrNewExpiryTimeMillis
+      (\ s a -> s{_spdrNewExpiryTimeMillis = a})
+      . mapping _Coerce
+
+instance FromJSON SubscriptionPurchasesDeferResponse
+         where
+        parseJSON
+          = withObject "SubscriptionPurchasesDeferResponse"
+              (\ o ->
+                 SubscriptionPurchasesDeferResponse <$>
+                   (o .:? "newExpiryTimeMillis"))
+
+instance ToJSON SubscriptionPurchasesDeferResponse
+         where
+        toJSON SubscriptionPurchasesDeferResponse{..}
+          = object
+              (catMaybes
+                 [("newExpiryTimeMillis" .=) <$>
+                    _spdrNewExpiryTimeMillis])
+
+--
+-- /See:/ 'aPKListing' smart constructor.
+data APKListing = APKListing
+    { _apklLanguage      :: !(Maybe Text)
+    , _apklRecentChanges :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'APKListing' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'apklLanguage'
+--
+-- * 'apklRecentChanges'
+aPKListing
+    :: APKListing
+aPKListing =
+    APKListing
+    { _apklLanguage = Nothing
+    , _apklRecentChanges = Nothing
+    }
+
+-- | The language code, in BCP 47 format (eg \"en-US\").
+apklLanguage :: Lens' APKListing (Maybe Text)
+apklLanguage
+  = lens _apklLanguage (\ s a -> s{_apklLanguage = a})
+
+-- | Describe what\'s new in your APK.
+apklRecentChanges :: Lens' APKListing (Maybe Text)
+apklRecentChanges
+  = lens _apklRecentChanges
+      (\ s a -> s{_apklRecentChanges = a})
+
+instance FromJSON APKListing where
+        parseJSON
+          = withObject "APKListing"
+              (\ o ->
+                 APKListing <$>
+                   (o .:? "language") <*> (o .:? "recentChanges"))
+
+instance ToJSON APKListing where
+        toJSON APKListing{..}
+          = object
+              (catMaybes
+                 [("language" .=) <$> _apklLanguage,
+                  ("recentChanges" .=) <$> _apklRecentChanges])
+
+-- | A SubscriptionPurchase resource indicates the status of a user\'s
+-- subscription purchase.
+--
+-- /See:/ 'subscriptionPurchase' smart constructor.
+data SubscriptionPurchase = SubscriptionPurchase
+    { _spKind             :: !Text
+    , _spExpiryTimeMillis :: !(Maybe (Textual Int64))
+    , _spAutoRenewing     :: !(Maybe Bool)
+    , _spStartTimeMillis  :: !(Maybe (Textual Int64))
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'SubscriptionPurchase' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'spKind'
+--
+-- * 'spExpiryTimeMillis'
+--
+-- * 'spAutoRenewing'
+--
+-- * 'spStartTimeMillis'
+subscriptionPurchase
+    :: SubscriptionPurchase
+subscriptionPurchase =
+    SubscriptionPurchase
+    { _spKind = "androidpublisher#subscriptionPurchase"
+    , _spExpiryTimeMillis = Nothing
+    , _spAutoRenewing = Nothing
+    , _spStartTimeMillis = Nothing
+    }
+
+-- | This kind represents a subscriptionPurchase object in the
+-- androidpublisher service.
+spKind :: Lens' SubscriptionPurchase Text
+spKind = lens _spKind (\ s a -> s{_spKind = a})
+
+-- | Time at which the subscription will expire, in milliseconds since Epoch.
+spExpiryTimeMillis :: Lens' SubscriptionPurchase (Maybe Int64)
+spExpiryTimeMillis
+  = lens _spExpiryTimeMillis
+      (\ s a -> s{_spExpiryTimeMillis = a})
+      . mapping _Coerce
+
+-- | Whether the subscription will automatically be renewed when it reaches
+-- its current expiry time.
+spAutoRenewing :: Lens' SubscriptionPurchase (Maybe Bool)
+spAutoRenewing
+  = lens _spAutoRenewing
+      (\ s a -> s{_spAutoRenewing = a})
+
+-- | Time at which the subscription was granted, in milliseconds since Epoch.
+spStartTimeMillis :: Lens' SubscriptionPurchase (Maybe Int64)
+spStartTimeMillis
+  = lens _spStartTimeMillis
+      (\ s a -> s{_spStartTimeMillis = a})
+      . mapping _Coerce
+
+instance FromJSON SubscriptionPurchase where
+        parseJSON
+          = withObject "SubscriptionPurchase"
+              (\ o ->
+                 SubscriptionPurchase <$>
+                   (o .:? "kind" .!=
+                      "androidpublisher#subscriptionPurchase")
+                     <*> (o .:? "expiryTimeMillis")
+                     <*> (o .:? "autoRenewing")
+                     <*> (o .:? "startTimeMillis"))
+
+instance ToJSON SubscriptionPurchase where
+        toJSON SubscriptionPurchase{..}
+          = object
+              (catMaybes
+                 [Just ("kind" .= _spKind),
+                  ("expiryTimeMillis" .=) <$> _spExpiryTimeMillis,
+                  ("autoRenewing" .=) <$> _spAutoRenewing,
+                  ("startTimeMillis" .=) <$> _spStartTimeMillis])
+
+--
+-- /See:/ 'appDetails' smart constructor.
+data AppDetails = AppDetails
+    { _adContactPhone    :: !(Maybe Text)
+    , _adContactEmail    :: !(Maybe Text)
+    , _adContactWebsite  :: !(Maybe Text)
+    , _adDefaultLanguage :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'AppDetails' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'adContactPhone'
+--
+-- * 'adContactEmail'
+--
+-- * 'adContactWebsite'
+--
+-- * 'adDefaultLanguage'
+appDetails
+    :: AppDetails
+appDetails =
+    AppDetails
+    { _adContactPhone = Nothing
+    , _adContactEmail = Nothing
+    , _adContactWebsite = Nothing
+    , _adDefaultLanguage = Nothing
+    }
+
+-- | The user-visible support telephone number for this app.
+adContactPhone :: Lens' AppDetails (Maybe Text)
+adContactPhone
+  = lens _adContactPhone
+      (\ s a -> s{_adContactPhone = a})
+
+-- | The user-visible support email for this app.
+adContactEmail :: Lens' AppDetails (Maybe Text)
+adContactEmail
+  = lens _adContactEmail
+      (\ s a -> s{_adContactEmail = a})
+
+-- | The user-visible website for this app.
+adContactWebsite :: Lens' AppDetails (Maybe Text)
+adContactWebsite
+  = lens _adContactWebsite
+      (\ s a -> s{_adContactWebsite = a})
+
+-- | Default language code, in BCP 47 format (eg \"en-US\").
+adDefaultLanguage :: Lens' AppDetails (Maybe Text)
+adDefaultLanguage
+  = lens _adDefaultLanguage
+      (\ s a -> s{_adDefaultLanguage = a})
+
+instance FromJSON AppDetails where
+        parseJSON
+          = withObject "AppDetails"
+              (\ o ->
+                 AppDetails <$>
+                   (o .:? "contactPhone") <*> (o .:? "contactEmail") <*>
+                     (o .:? "contactWebsite")
+                     <*> (o .:? "defaultLanguage"))
+
+instance ToJSON AppDetails where
+        toJSON AppDetails{..}
+          = object
+              (catMaybes
+                 [("contactPhone" .=) <$> _adContactPhone,
+                  ("contactEmail" .=) <$> _adContactEmail,
+                  ("contactWebsite" .=) <$> _adContactWebsite,
+                  ("defaultLanguage" .=) <$> _adDefaultLanguage])
+
+-- | Prices per buyer region. None of these prices should be zero. In-app
+-- products can never be free.
+--
+-- /See:/ 'inAppProductPrices' smart constructor.
+newtype InAppProductPrices = InAppProductPrices
+    { _iAppAddtional :: HashMap Text Price
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'InAppProductPrices' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'iAppAddtional'
+inAppProductPrices
+    :: HashMap Text Price -- ^ 'iAppAddtional'
+    -> InAppProductPrices
+inAppProductPrices pIAppAddtional_ =
+    InAppProductPrices
+    { _iAppAddtional = _Coerce # pIAppAddtional_
+    }
+
+-- | Region code, as defined by ISO 3166-2.
+iAppAddtional :: Lens' InAppProductPrices (HashMap Text Price)
+iAppAddtional
+  = lens _iAppAddtional
+      (\ s a -> s{_iAppAddtional = a})
+      . _Coerce
+
+instance FromJSON InAppProductPrices where
+        parseJSON
+          = withObject "InAppProductPrices"
+              (\ o -> InAppProductPrices <$> (parseJSONObject o))
+
+instance ToJSON InAppProductPrices where
+        toJSON = toJSON . _iAppAddtional
+
+--
+-- /See:/ 'inAppProductsBatchRequest' smart constructor.
+newtype InAppProductsBatchRequest = InAppProductsBatchRequest
+    { _iapbrEntrys :: Maybe [InAppProductsBatchRequestEntry]
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'InAppProductsBatchRequest' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'iapbrEntrys'
+inAppProductsBatchRequest
+    :: InAppProductsBatchRequest
+inAppProductsBatchRequest =
+    InAppProductsBatchRequest
+    { _iapbrEntrys = Nothing
+    }
+
+iapbrEntrys :: Lens' InAppProductsBatchRequest [InAppProductsBatchRequestEntry]
+iapbrEntrys
+  = lens _iapbrEntrys (\ s a -> s{_iapbrEntrys = a}) .
+      _Default
+      . _Coerce
+
+instance FromJSON InAppProductsBatchRequest where
+        parseJSON
+          = withObject "InAppProductsBatchRequest"
+              (\ o ->
+                 InAppProductsBatchRequest <$>
+                   (o .:? "entrys" .!= mempty))
+
+instance ToJSON InAppProductsBatchRequest where
+        toJSON InAppProductsBatchRequest{..}
+          = object (catMaybes [("entrys" .=) <$> _iapbrEntrys])
+
+-- | Defines an APK available for this application that is hosted externally
+-- and not uploaded to Google Play. This function is only available to
+-- enterprises who are using Google Play for Work, and whos application is
+-- restricted to the enterprise private channel
+--
+-- /See:/ 'externallyHostedAPK' smart constructor.
+data ExternallyHostedAPK = ExternallyHostedAPK
+    { _ehapkApplicationLabel    :: !(Maybe Text)
+    , _ehapkMaximumSdk          :: !(Maybe (Textual Int32))
+    , _ehapkNATiveCodes         :: !(Maybe [Text])
+    , _ehapkVersionCode         :: !(Maybe (Textual Int32))
+    , _ehapkFileSha256Base64    :: !(Maybe Text)
+    , _ehapkExternallyHostedURL :: !(Maybe Text)
+    , _ehapkVersionName         :: !(Maybe Text)
+    , _ehapkPackageName         :: !(Maybe Text)
+    , _ehapkFileSize            :: !(Maybe (Textual Int64))
+    , _ehapkIconBase64          :: !(Maybe Text)
+    , _ehapkUsesFeatures        :: !(Maybe [Text])
+    , _ehapkMinimumSdk          :: !(Maybe (Textual Int32))
+    , _ehapkFileSha1Base64      :: !(Maybe Text)
+    , _ehapkUsesPermissions     :: !(Maybe [ExternallyHostedAPKUsesPermission])
+    , _ehapkCertificateBase64s  :: !(Maybe [Text])
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ExternallyHostedAPK' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'ehapkApplicationLabel'
+--
+-- * 'ehapkMaximumSdk'
+--
+-- * 'ehapkNATiveCodes'
+--
+-- * 'ehapkVersionCode'
+--
+-- * 'ehapkFileSha256Base64'
+--
+-- * 'ehapkExternallyHostedURL'
+--
+-- * 'ehapkVersionName'
+--
+-- * 'ehapkPackageName'
+--
+-- * 'ehapkFileSize'
+--
+-- * 'ehapkIconBase64'
+--
+-- * 'ehapkUsesFeatures'
+--
+-- * 'ehapkMinimumSdk'
+--
+-- * 'ehapkFileSha1Base64'
+--
+-- * 'ehapkUsesPermissions'
+--
+-- * 'ehapkCertificateBase64s'
+externallyHostedAPK
+    :: ExternallyHostedAPK
+externallyHostedAPK =
+    ExternallyHostedAPK
+    { _ehapkApplicationLabel = Nothing
+    , _ehapkMaximumSdk = Nothing
+    , _ehapkNATiveCodes = Nothing
+    , _ehapkVersionCode = Nothing
+    , _ehapkFileSha256Base64 = Nothing
+    , _ehapkExternallyHostedURL = Nothing
+    , _ehapkVersionName = Nothing
+    , _ehapkPackageName = Nothing
+    , _ehapkFileSize = Nothing
+    , _ehapkIconBase64 = Nothing
+    , _ehapkUsesFeatures = Nothing
+    , _ehapkMinimumSdk = Nothing
+    , _ehapkFileSha1Base64 = Nothing
+    , _ehapkUsesPermissions = Nothing
+    , _ehapkCertificateBase64s = Nothing
+    }
+
+-- | The application label.
+ehapkApplicationLabel :: Lens' ExternallyHostedAPK (Maybe Text)
+ehapkApplicationLabel
+  = lens _ehapkApplicationLabel
+      (\ s a -> s{_ehapkApplicationLabel = a})
+
+-- | The maximum SDK supported by this APK (optional).
+ehapkMaximumSdk :: Lens' ExternallyHostedAPK (Maybe Int32)
+ehapkMaximumSdk
+  = lens _ehapkMaximumSdk
+      (\ s a -> s{_ehapkMaximumSdk = a})
+      . mapping _Coerce
+
+-- | The native code environments supported by this APK (optional).
+ehapkNATiveCodes :: Lens' ExternallyHostedAPK [Text]
+ehapkNATiveCodes
+  = lens _ehapkNATiveCodes
+      (\ s a -> s{_ehapkNATiveCodes = a})
+      . _Default
+      . _Coerce
+
+-- | The version code of this APK.
+ehapkVersionCode :: Lens' ExternallyHostedAPK (Maybe Int32)
+ehapkVersionCode
+  = lens _ehapkVersionCode
+      (\ s a -> s{_ehapkVersionCode = a})
+      . mapping _Coerce
+
+-- | The SHA256 checksum of this APK, represented as a base64 encoded byte
+-- array.
+ehapkFileSha256Base64 :: Lens' ExternallyHostedAPK (Maybe Text)
+ehapkFileSha256Base64
+  = lens _ehapkFileSha256Base64
+      (\ s a -> s{_ehapkFileSha256Base64 = a})
+
+-- | The URL at which the APK is hosted. This must be an https URL.
+ehapkExternallyHostedURL :: Lens' ExternallyHostedAPK (Maybe Text)
+ehapkExternallyHostedURL
+  = lens _ehapkExternallyHostedURL
+      (\ s a -> s{_ehapkExternallyHostedURL = a})
+
+-- | The version name of this APK.
+ehapkVersionName :: Lens' ExternallyHostedAPK (Maybe Text)
+ehapkVersionName
+  = lens _ehapkVersionName
+      (\ s a -> s{_ehapkVersionName = a})
+
+-- | The package name.
+ehapkPackageName :: Lens' ExternallyHostedAPK (Maybe Text)
+ehapkPackageName
+  = lens _ehapkPackageName
+      (\ s a -> s{_ehapkPackageName = a})
+
+-- | The file size in bytes of this APK.
+ehapkFileSize :: Lens' ExternallyHostedAPK (Maybe Int64)
+ehapkFileSize
+  = lens _ehapkFileSize
+      (\ s a -> s{_ehapkFileSize = a})
+      . mapping _Coerce
+
+-- | The icon image from the APK, as a base64 encoded byte array.
+ehapkIconBase64 :: Lens' ExternallyHostedAPK (Maybe Text)
+ehapkIconBase64
+  = lens _ehapkIconBase64
+      (\ s a -> s{_ehapkIconBase64 = a})
+
+-- | The features required by this APK (optional).
+ehapkUsesFeatures :: Lens' ExternallyHostedAPK [Text]
+ehapkUsesFeatures
+  = lens _ehapkUsesFeatures
+      (\ s a -> s{_ehapkUsesFeatures = a})
+      . _Default
+      . _Coerce
+
+-- | The minimum SDK targeted by this APK.
+ehapkMinimumSdk :: Lens' ExternallyHostedAPK (Maybe Int32)
+ehapkMinimumSdk
+  = lens _ehapkMinimumSdk
+      (\ s a -> s{_ehapkMinimumSdk = a})
+      . mapping _Coerce
+
+-- | The SHA1 checksum of this APK, represented as a base64 encoded byte
+-- array.
+ehapkFileSha1Base64 :: Lens' ExternallyHostedAPK (Maybe Text)
+ehapkFileSha1Base64
+  = lens _ehapkFileSha1Base64
+      (\ s a -> s{_ehapkFileSha1Base64 = a})
+
+-- | The permissions requested by this APK.
+ehapkUsesPermissions :: Lens' ExternallyHostedAPK [ExternallyHostedAPKUsesPermission]
+ehapkUsesPermissions
+  = lens _ehapkUsesPermissions
+      (\ s a -> s{_ehapkUsesPermissions = a})
+      . _Default
+      . _Coerce
+
+-- | A certificate (or array of certificates if a certificate-chain is used)
+-- used to signed this APK, represented as a base64 encoded byte array.
+ehapkCertificateBase64s :: Lens' ExternallyHostedAPK [Text]
+ehapkCertificateBase64s
+  = lens _ehapkCertificateBase64s
+      (\ s a -> s{_ehapkCertificateBase64s = a})
+      . _Default
+      . _Coerce
+
+instance FromJSON ExternallyHostedAPK where
+        parseJSON
+          = withObject "ExternallyHostedAPK"
+              (\ o ->
+                 ExternallyHostedAPK <$>
+                   (o .:? "applicationLabel") <*> (o .:? "maximumSdk")
+                     <*> (o .:? "nativeCodes" .!= mempty)
+                     <*> (o .:? "versionCode")
+                     <*> (o .:? "fileSha256Base64")
+                     <*> (o .:? "externallyHostedUrl")
+                     <*> (o .:? "versionName")
+                     <*> (o .:? "packageName")
+                     <*> (o .:? "fileSize")
+                     <*> (o .:? "iconBase64")
+                     <*> (o .:? "usesFeatures" .!= mempty)
+                     <*> (o .:? "minimumSdk")
+                     <*> (o .:? "fileSha1Base64")
+                     <*> (o .:? "usesPermissions" .!= mempty)
+                     <*> (o .:? "certificateBase64s" .!= mempty))
+
+instance ToJSON ExternallyHostedAPK where
+        toJSON ExternallyHostedAPK{..}
+          = object
+              (catMaybes
+                 [("applicationLabel" .=) <$> _ehapkApplicationLabel,
+                  ("maximumSdk" .=) <$> _ehapkMaximumSdk,
+                  ("nativeCodes" .=) <$> _ehapkNATiveCodes,
+                  ("versionCode" .=) <$> _ehapkVersionCode,
+                  ("fileSha256Base64" .=) <$> _ehapkFileSha256Base64,
+                  ("externallyHostedUrl" .=) <$>
+                    _ehapkExternallyHostedURL,
+                  ("versionName" .=) <$> _ehapkVersionName,
+                  ("packageName" .=) <$> _ehapkPackageName,
+                  ("fileSize" .=) <$> _ehapkFileSize,
+                  ("iconBase64" .=) <$> _ehapkIconBase64,
+                  ("usesFeatures" .=) <$> _ehapkUsesFeatures,
+                  ("minimumSdk" .=) <$> _ehapkMinimumSdk,
+                  ("fileSha1Base64" .=) <$> _ehapkFileSha1Base64,
+                  ("usesPermissions" .=) <$> _ehapkUsesPermissions,
+                  ("certificateBase64s" .=) <$>
+                    _ehapkCertificateBase64s])
+
+--
+-- /See:/ 'expansionFilesUploadResponse' smart constructor.
+newtype ExpansionFilesUploadResponse = ExpansionFilesUploadResponse
+    { _efurExpansionFile :: Maybe ExpansionFile
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ExpansionFilesUploadResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'efurExpansionFile'
+expansionFilesUploadResponse
+    :: ExpansionFilesUploadResponse
+expansionFilesUploadResponse =
+    ExpansionFilesUploadResponse
+    { _efurExpansionFile = Nothing
+    }
+
+efurExpansionFile :: Lens' ExpansionFilesUploadResponse (Maybe ExpansionFile)
+efurExpansionFile
+  = lens _efurExpansionFile
+      (\ s a -> s{_efurExpansionFile = a})
+
+instance FromJSON ExpansionFilesUploadResponse where
+        parseJSON
+          = withObject "ExpansionFilesUploadResponse"
+              (\ o ->
+                 ExpansionFilesUploadResponse <$>
+                   (o .:? "expansionFile"))
+
+instance ToJSON ExpansionFilesUploadResponse where
+        toJSON ExpansionFilesUploadResponse{..}
+          = object
+              (catMaybes
+                 [("expansionFile" .=) <$> _efurExpansionFile])
+
+--
+-- /See:/ 'imagesUploadResponse' smart constructor.
+newtype ImagesUploadResponse = ImagesUploadResponse
+    { _iurImage :: Maybe Image
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ImagesUploadResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'iurImage'
+imagesUploadResponse
+    :: ImagesUploadResponse
+imagesUploadResponse =
+    ImagesUploadResponse
+    { _iurImage = Nothing
+    }
+
+iurImage :: Lens' ImagesUploadResponse (Maybe Image)
+iurImage = lens _iurImage (\ s a -> s{_iurImage = a})
+
+instance FromJSON ImagesUploadResponse where
+        parseJSON
+          = withObject "ImagesUploadResponse"
+              (\ o -> ImagesUploadResponse <$> (o .:? "image"))
+
+instance ToJSON ImagesUploadResponse where
+        toJSON ImagesUploadResponse{..}
+          = object (catMaybes [("image" .=) <$> _iurImage])
+
+--
+-- /See:/ 'inAppProductsListResponse' smart constructor.
+data InAppProductsListResponse = InAppProductsListResponse
+    { _iaplrTokenPagination :: !(Maybe TokenPagination)
+    , _iaplrPageInfo        :: !(Maybe PageInfo)
+    , _iaplrKind            :: !Text
+    , _iaplrInAppProduct    :: !(Maybe [InAppProduct])
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'InAppProductsListResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'iaplrTokenPagination'
+--
+-- * 'iaplrPageInfo'
+--
+-- * 'iaplrKind'
+--
+-- * 'iaplrInAppProduct'
+inAppProductsListResponse
+    :: InAppProductsListResponse
+inAppProductsListResponse =
+    InAppProductsListResponse
+    { _iaplrTokenPagination = Nothing
+    , _iaplrPageInfo = Nothing
+    , _iaplrKind = "androidpublisher#inappproductsListResponse"
+    , _iaplrInAppProduct = Nothing
+    }
+
+iaplrTokenPagination :: Lens' InAppProductsListResponse (Maybe TokenPagination)
+iaplrTokenPagination
+  = lens _iaplrTokenPagination
+      (\ s a -> s{_iaplrTokenPagination = a})
+
+iaplrPageInfo :: Lens' InAppProductsListResponse (Maybe PageInfo)
+iaplrPageInfo
+  = lens _iaplrPageInfo
+      (\ s a -> s{_iaplrPageInfo = a})
+
+-- | Identifies what kind of resource this is. Value: the fixed string
+-- \"androidpublisher#inappproductsListResponse\".
+iaplrKind :: Lens' InAppProductsListResponse Text
+iaplrKind
+  = lens _iaplrKind (\ s a -> s{_iaplrKind = a})
+
+iaplrInAppProduct :: Lens' InAppProductsListResponse [InAppProduct]
+iaplrInAppProduct
+  = lens _iaplrInAppProduct
+      (\ s a -> s{_iaplrInAppProduct = a})
+      . _Default
+      . _Coerce
+
+instance FromJSON InAppProductsListResponse where
+        parseJSON
+          = withObject "InAppProductsListResponse"
+              (\ o ->
+                 InAppProductsListResponse <$>
+                   (o .:? "tokenPagination") <*> (o .:? "pageInfo") <*>
+                     (o .:? "kind" .!=
+                        "androidpublisher#inappproductsListResponse")
+                     <*> (o .:? "inappproduct" .!= mempty))
+
+instance ToJSON InAppProductsListResponse where
+        toJSON InAppProductsListResponse{..}
+          = object
+              (catMaybes
+                 [("tokenPagination" .=) <$> _iaplrTokenPagination,
+                  ("pageInfo" .=) <$> _iaplrPageInfo,
+                  Just ("kind" .= _iaplrKind),
+                  ("inappproduct" .=) <$> _iaplrInAppProduct])
+
+--
+-- /See:/ 'aPKListingsListResponse' smart constructor.
+data APKListingsListResponse = APKListingsListResponse
+    { _apkllrKind     :: !Text
+    , _apkllrListings :: !(Maybe [APKListing])
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'APKListingsListResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'apkllrKind'
+--
+-- * 'apkllrListings'
+aPKListingsListResponse
+    :: APKListingsListResponse
+aPKListingsListResponse =
+    APKListingsListResponse
+    { _apkllrKind = "androidpublisher#apkListingsListResponse"
+    , _apkllrListings = Nothing
+    }
+
+-- | Identifies what kind of resource this is. Value: the fixed string
+-- \"androidpublisher#apkListingsListResponse\".
+apkllrKind :: Lens' APKListingsListResponse Text
+apkllrKind
+  = lens _apkllrKind (\ s a -> s{_apkllrKind = a})
+
+apkllrListings :: Lens' APKListingsListResponse [APKListing]
+apkllrListings
+  = lens _apkllrListings
+      (\ s a -> s{_apkllrListings = a})
+      . _Default
+      . _Coerce
+
+instance FromJSON APKListingsListResponse where
+        parseJSON
+          = withObject "APKListingsListResponse"
+              (\ o ->
+                 APKListingsListResponse <$>
+                   (o .:? "kind" .!=
+                      "androidpublisher#apkListingsListResponse")
+                     <*> (o .:? "listings" .!= mempty))
+
+instance ToJSON APKListingsListResponse where
+        toJSON APKListingsListResponse{..}
+          = object
+              (catMaybes
+                 [Just ("kind" .= _apkllrKind),
+                  ("listings" .=) <$> _apkllrListings])
+
+--
+-- /See:/ 'inAppProductsInsertResponse' smart constructor.
+newtype InAppProductsInsertResponse = InAppProductsInsertResponse
+    { _iapirInAppProduct :: Maybe InAppProduct
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'InAppProductsInsertResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'iapirInAppProduct'
+inAppProductsInsertResponse
+    :: InAppProductsInsertResponse
+inAppProductsInsertResponse =
+    InAppProductsInsertResponse
+    { _iapirInAppProduct = Nothing
+    }
+
+iapirInAppProduct :: Lens' InAppProductsInsertResponse (Maybe InAppProduct)
+iapirInAppProduct
+  = lens _iapirInAppProduct
+      (\ s a -> s{_iapirInAppProduct = a})
+
+instance FromJSON InAppProductsInsertResponse where
+        parseJSON
+          = withObject "InAppProductsInsertResponse"
+              (\ o ->
+                 InAppProductsInsertResponse <$>
+                   (o .:? "inappproduct"))
+
+instance ToJSON InAppProductsInsertResponse where
+        toJSON InAppProductsInsertResponse{..}
+          = object
+              (catMaybes
+                 [("inappproduct" .=) <$> _iapirInAppProduct])
+
+--
+-- /See:/ 'aPKsAddExternallyHostedResponse' smart constructor.
+newtype APKsAddExternallyHostedResponse = APKsAddExternallyHostedResponse
+    { _apkaehrExternallyHostedAPK :: Maybe ExternallyHostedAPK
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'APKsAddExternallyHostedResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'apkaehrExternallyHostedAPK'
+aPKsAddExternallyHostedResponse
+    :: APKsAddExternallyHostedResponse
+aPKsAddExternallyHostedResponse =
+    APKsAddExternallyHostedResponse
+    { _apkaehrExternallyHostedAPK = Nothing
+    }
+
+-- | The definition of the externally-hosted APK and where it is located.
+apkaehrExternallyHostedAPK :: Lens' APKsAddExternallyHostedResponse (Maybe ExternallyHostedAPK)
+apkaehrExternallyHostedAPK
+  = lens _apkaehrExternallyHostedAPK
+      (\ s a -> s{_apkaehrExternallyHostedAPK = a})
+
+instance FromJSON APKsAddExternallyHostedResponse
+         where
+        parseJSON
+          = withObject "APKsAddExternallyHostedResponse"
+              (\ o ->
+                 APKsAddExternallyHostedResponse <$>
+                   (o .:? "externallyHostedApk"))
+
+instance ToJSON APKsAddExternallyHostedResponse where
+        toJSON APKsAddExternallyHostedResponse{..}
+          = object
+              (catMaybes
+                 [("externallyHostedApk" .=) <$>
+                    _apkaehrExternallyHostedAPK])
+
+-- | A SubscriptionDeferralInfo contains the data needed to defer a
+-- subscription purchase to a future expiry time.
+--
+-- /See:/ 'subscriptionDeferralInfo' smart constructor.
+data SubscriptionDeferralInfo = SubscriptionDeferralInfo
+    { _sdiDesiredExpiryTimeMillis  :: !(Maybe (Textual Int64))
+    , _sdiExpectedExpiryTimeMillis :: !(Maybe (Textual Int64))
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'SubscriptionDeferralInfo' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'sdiDesiredExpiryTimeMillis'
+--
+-- * 'sdiExpectedExpiryTimeMillis'
+subscriptionDeferralInfo
+    :: SubscriptionDeferralInfo
+subscriptionDeferralInfo =
+    SubscriptionDeferralInfo
+    { _sdiDesiredExpiryTimeMillis = Nothing
+    , _sdiExpectedExpiryTimeMillis = Nothing
+    }
+
+-- | The desired next expiry time for the subscription in milliseconds since
+-- Epoch. The given time must be after the current expiry time for the
+-- subscription.
+sdiDesiredExpiryTimeMillis :: Lens' SubscriptionDeferralInfo (Maybe Int64)
+sdiDesiredExpiryTimeMillis
+  = lens _sdiDesiredExpiryTimeMillis
+      (\ s a -> s{_sdiDesiredExpiryTimeMillis = a})
+      . mapping _Coerce
+
+-- | The expected expiry time for the subscription. If the current expiry
+-- time for the subscription is not the value specified here, the deferral
+-- will not occur.
+sdiExpectedExpiryTimeMillis :: Lens' SubscriptionDeferralInfo (Maybe Int64)
+sdiExpectedExpiryTimeMillis
+  = lens _sdiExpectedExpiryTimeMillis
+      (\ s a -> s{_sdiExpectedExpiryTimeMillis = a})
+      . mapping _Coerce
+
+instance FromJSON SubscriptionDeferralInfo where
+        parseJSON
+          = withObject "SubscriptionDeferralInfo"
+              (\ o ->
+                 SubscriptionDeferralInfo <$>
+                   (o .:? "desiredExpiryTimeMillis") <*>
+                     (o .:? "expectedExpiryTimeMillis"))
+
+instance ToJSON SubscriptionDeferralInfo where
+        toJSON SubscriptionDeferralInfo{..}
+          = object
+              (catMaybes
+                 [("desiredExpiryTimeMillis" .=) <$>
+                    _sdiDesiredExpiryTimeMillis,
+                  ("expectedExpiryTimeMillis" .=) <$>
+                    _sdiExpectedExpiryTimeMillis])
+
+--
+-- /See:/ 'inAppProduct' smart constructor.
+data InAppProduct = InAppProduct
+    { _iapStatus             :: !(Maybe Text)
+    , _iapTrialPeriod        :: !(Maybe Text)
+    , _iapPackageName        :: !(Maybe Text)
+    , _iapSeason             :: !(Maybe Season)
+    , _iapPurchaseType       :: !(Maybe Text)
+    , _iapSubscriptionPeriod :: !(Maybe Text)
+    , _iapPrices             :: !(Maybe InAppProductPrices)
+    , _iapSKU                :: !(Maybe Text)
+    , _iapDefaultPrice       :: !(Maybe Price)
+    , _iapListings           :: !(Maybe InAppProductListings)
+    , _iapDefaultLanguage    :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'InAppProduct' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'iapStatus'
+--
+-- * 'iapTrialPeriod'
+--
+-- * 'iapPackageName'
+--
+-- * 'iapSeason'
+--
+-- * 'iapPurchaseType'
+--
+-- * 'iapSubscriptionPeriod'
+--
+-- * 'iapPrices'
+--
+-- * 'iapSKU'
+--
+-- * 'iapDefaultPrice'
+--
+-- * 'iapListings'
+--
+-- * 'iapDefaultLanguage'
+inAppProduct
+    :: InAppProduct
+inAppProduct =
+    InAppProduct
+    { _iapStatus = Nothing
+    , _iapTrialPeriod = Nothing
+    , _iapPackageName = Nothing
+    , _iapSeason = Nothing
+    , _iapPurchaseType = Nothing
+    , _iapSubscriptionPeriod = Nothing
+    , _iapPrices = Nothing
+    , _iapSKU = Nothing
+    , _iapDefaultPrice = Nothing
+    , _iapListings = Nothing
+    , _iapDefaultLanguage = Nothing
+    }
+
+iapStatus :: Lens' InAppProduct (Maybe Text)
+iapStatus
+  = lens _iapStatus (\ s a -> s{_iapStatus = a})
+
+-- | Trial period, specified in ISO 8601 format. Acceptable values are
+-- anything between \"P7D\" (seven days) and \"P999D\" (999 days). Seasonal
+-- subscriptions cannot have a trial period.
+iapTrialPeriod :: Lens' InAppProduct (Maybe Text)
+iapTrialPeriod
+  = lens _iapTrialPeriod
+      (\ s a -> s{_iapTrialPeriod = a})
+
+-- | The package name of the parent app.
+iapPackageName :: Lens' InAppProduct (Maybe Text)
+iapPackageName
+  = lens _iapPackageName
+      (\ s a -> s{_iapPackageName = a})
+
+-- | Definition of a season for a seasonal subscription. Can be defined only
+-- for yearly subscriptions.
+iapSeason :: Lens' InAppProduct (Maybe Season)
+iapSeason
+  = lens _iapSeason (\ s a -> s{_iapSeason = a})
+
+-- | Purchase type enum value. Unmodifiable after creation.
+iapPurchaseType :: Lens' InAppProduct (Maybe Text)
+iapPurchaseType
+  = lens _iapPurchaseType
+      (\ s a -> s{_iapPurchaseType = a})
+
+-- | Subscription period, specified in ISO 8601 format. Acceptable values are
+-- \"P1W\" (one week), \"P1M\" (one month) and \"P1Y\" (one year).
+iapSubscriptionPeriod :: Lens' InAppProduct (Maybe Text)
+iapSubscriptionPeriod
+  = lens _iapSubscriptionPeriod
+      (\ s a -> s{_iapSubscriptionPeriod = a})
+
+-- | Prices per buyer region. None of these prices should be zero. In-app
+-- products can never be free.
+iapPrices :: Lens' InAppProduct (Maybe InAppProductPrices)
+iapPrices
+  = lens _iapPrices (\ s a -> s{_iapPrices = a})
+
+-- | The stock-keeping-unit (SKU) of the product, unique within an app.
+iapSKU :: Lens' InAppProduct (Maybe Text)
+iapSKU = lens _iapSKU (\ s a -> s{_iapSKU = a})
+
+-- | Default price cannot be zero. In-app products can never be free. Default
+-- price is always in the developer\'s Checkout merchant currency.
+iapDefaultPrice :: Lens' InAppProduct (Maybe Price)
+iapDefaultPrice
+  = lens _iapDefaultPrice
+      (\ s a -> s{_iapDefaultPrice = a})
+
+-- | List of localized title and description data.
+iapListings :: Lens' InAppProduct (Maybe InAppProductListings)
+iapListings
+  = lens _iapListings (\ s a -> s{_iapListings = a})
+
+-- | The default language of the localized data, as defined by BCP 47. e.g.
+-- \"en-US\", \"en-GB\".
+iapDefaultLanguage :: Lens' InAppProduct (Maybe Text)
+iapDefaultLanguage
+  = lens _iapDefaultLanguage
+      (\ s a -> s{_iapDefaultLanguage = a})
+
+instance FromJSON InAppProduct where
+        parseJSON
+          = withObject "InAppProduct"
+              (\ o ->
+                 InAppProduct <$>
+                   (o .:? "status") <*> (o .:? "trialPeriod") <*>
+                     (o .:? "packageName")
+                     <*> (o .:? "season")
+                     <*> (o .:? "purchaseType")
+                     <*> (o .:? "subscriptionPeriod")
+                     <*> (o .:? "prices")
+                     <*> (o .:? "sku")
+                     <*> (o .:? "defaultPrice")
+                     <*> (o .:? "listings")
+                     <*> (o .:? "defaultLanguage"))
+
+instance ToJSON InAppProduct where
+        toJSON InAppProduct{..}
+          = object
+              (catMaybes
+                 [("status" .=) <$> _iapStatus,
+                  ("trialPeriod" .=) <$> _iapTrialPeriod,
+                  ("packageName" .=) <$> _iapPackageName,
+                  ("season" .=) <$> _iapSeason,
+                  ("purchaseType" .=) <$> _iapPurchaseType,
+                  ("subscriptionPeriod" .=) <$> _iapSubscriptionPeriod,
+                  ("prices" .=) <$> _iapPrices, ("sku" .=) <$> _iapSKU,
+                  ("defaultPrice" .=) <$> _iapDefaultPrice,
+                  ("listings" .=) <$> _iapListings,
+                  ("defaultLanguage" .=) <$> _iapDefaultLanguage])
+
+--
+-- /See:/ 'inAppProductsBatchResponseEntry' smart constructor.
+data InAppProductsBatchResponseEntry = InAppProductsBatchResponseEntry
+    { _iInAppProductsupdateresponse :: !(Maybe InAppProductsUpdateResponse)
+    , _iInAppProductsinsertresponse :: !(Maybe InAppProductsInsertResponse)
+    , _iBatchId                     :: !(Maybe (Textual Word32))
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'InAppProductsBatchResponseEntry' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'iInAppProductsupdateresponse'
+--
+-- * 'iInAppProductsinsertresponse'
+--
+-- * 'iBatchId'
+inAppProductsBatchResponseEntry
+    :: InAppProductsBatchResponseEntry
+inAppProductsBatchResponseEntry =
+    InAppProductsBatchResponseEntry
+    { _iInAppProductsupdateresponse = Nothing
+    , _iInAppProductsinsertresponse = Nothing
+    , _iBatchId = Nothing
+    }
+
+iInAppProductsupdateresponse :: Lens' InAppProductsBatchResponseEntry (Maybe InAppProductsUpdateResponse)
+iInAppProductsupdateresponse
+  = lens _iInAppProductsupdateresponse
+      (\ s a -> s{_iInAppProductsupdateresponse = a})
+
+iInAppProductsinsertresponse :: Lens' InAppProductsBatchResponseEntry (Maybe InAppProductsInsertResponse)
+iInAppProductsinsertresponse
+  = lens _iInAppProductsinsertresponse
+      (\ s a -> s{_iInAppProductsinsertresponse = a})
+
+iBatchId :: Lens' InAppProductsBatchResponseEntry (Maybe Word32)
+iBatchId
+  = lens _iBatchId (\ s a -> s{_iBatchId = a}) .
+      mapping _Coerce
+
+instance FromJSON InAppProductsBatchResponseEntry
+         where
+        parseJSON
+          = withObject "InAppProductsBatchResponseEntry"
+              (\ o ->
+                 InAppProductsBatchResponseEntry <$>
+                   (o .:? "inappproductsupdateresponse") <*>
+                     (o .:? "inappproductsinsertresponse")
+                     <*> (o .:? "batchId"))
+
+instance ToJSON InAppProductsBatchResponseEntry where
+        toJSON InAppProductsBatchResponseEntry{..}
+          = object
+              (catMaybes
+                 [("inappproductsupdateresponse" .=) <$>
+                    _iInAppProductsupdateresponse,
+                  ("inappproductsinsertresponse" .=) <$>
+                    _iInAppProductsinsertresponse,
+                  ("batchId" .=) <$> _iBatchId])
+
+--
+-- /See:/ 'price' smart constructor.
+data Price = Price
+    { _pPriceMicros :: !(Maybe Text)
+    , _pCurrency    :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'Price' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'pPriceMicros'
+--
+-- * 'pCurrency'
+price
+    :: Price
+price =
+    Price
+    { _pPriceMicros = Nothing
+    , _pCurrency = Nothing
+    }
+
+-- | The price in millionths of the currency base unit represented as a
+-- string.
+pPriceMicros :: Lens' Price (Maybe Text)
+pPriceMicros
+  = lens _pPriceMicros (\ s a -> s{_pPriceMicros = a})
+
+-- | 3 letter Currency code, as defined by ISO 4217.
+pCurrency :: Lens' Price (Maybe Text)
+pCurrency
+  = lens _pCurrency (\ s a -> s{_pCurrency = a})
+
+instance FromJSON Price where
+        parseJSON
+          = withObject "Price"
+              (\ o ->
+                 Price <$>
+                   (o .:? "priceMicros") <*> (o .:? "currency"))
+
+instance ToJSON Price where
+        toJSON Price{..}
+          = object
+              (catMaybes
+                 [("priceMicros" .=) <$> _pPriceMicros,
+                  ("currency" .=) <$> _pCurrency])
+
+-- | Represents the binary payload of an APK.
+--
+-- /See:/ 'aPKBinary' smart constructor.
+newtype APKBinary = APKBinary
+    { _apkbSha1 :: Maybe Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'APKBinary' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'apkbSha1'
+aPKBinary
+    :: APKBinary
+aPKBinary =
+    APKBinary
+    { _apkbSha1 = Nothing
+    }
+
+-- | A sha1 hash of the APK payload, encoded as a hex string and matching the
+-- output of the sha1sum command.
+apkbSha1 :: Lens' APKBinary (Maybe Text)
+apkbSha1 = lens _apkbSha1 (\ s a -> s{_apkbSha1 = a})
+
+instance FromJSON APKBinary where
+        parseJSON
+          = withObject "APKBinary"
+              (\ o -> APKBinary <$> (o .:? "sha1"))
+
+instance ToJSON APKBinary where
+        toJSON APKBinary{..}
+          = object (catMaybes [("sha1" .=) <$> _apkbSha1])
+
+--
+-- /See:/ 'aPKsListResponse' smart constructor.
+data APKsListResponse = APKsListResponse
+    { _apklrKind :: !Text
+    , _apklrAPKs :: !(Maybe [APK])
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'APKsListResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'apklrKind'
+--
+-- * 'apklrAPKs'
+aPKsListResponse
+    :: APKsListResponse
+aPKsListResponse =
+    APKsListResponse
+    { _apklrKind = "androidpublisher#apksListResponse"
+    , _apklrAPKs = Nothing
+    }
+
+-- | Identifies what kind of resource this is. Value: the fixed string
+-- \"androidpublisher#apksListResponse\".
+apklrKind :: Lens' APKsListResponse Text
+apklrKind
+  = lens _apklrKind (\ s a -> s{_apklrKind = a})
+
+apklrAPKs :: Lens' APKsListResponse [APK]
+apklrAPKs
+  = lens _apklrAPKs (\ s a -> s{_apklrAPKs = a}) .
+      _Default
+      . _Coerce
+
+instance FromJSON APKsListResponse where
+        parseJSON
+          = withObject "APKsListResponse"
+              (\ o ->
+                 APKsListResponse <$>
+                   (o .:? "kind" .!=
+                      "androidpublisher#apksListResponse")
+                     <*> (o .:? "apks" .!= mempty))
+
+instance ToJSON APKsListResponse where
+        toJSON APKsListResponse{..}
+          = object
+              (catMaybes
+                 [Just ("kind" .= _apklrKind),
+                  ("apks" .=) <$> _apklrAPKs])
+
+-- | A permission used by this APK.
+--
+-- /See:/ 'externallyHostedAPKUsesPermission' smart constructor.
+data ExternallyHostedAPKUsesPermission = ExternallyHostedAPKUsesPermission
+    { _ehapkupName          :: !(Maybe Text)
+    , _ehapkupMaxSdkVersion :: !(Maybe (Textual Int32))
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ExternallyHostedAPKUsesPermission' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'ehapkupName'
+--
+-- * 'ehapkupMaxSdkVersion'
+externallyHostedAPKUsesPermission
+    :: ExternallyHostedAPKUsesPermission
+externallyHostedAPKUsesPermission =
+    ExternallyHostedAPKUsesPermission
+    { _ehapkupName = Nothing
+    , _ehapkupMaxSdkVersion = Nothing
+    }
+
+-- | The name of the permission requested.
+ehapkupName :: Lens' ExternallyHostedAPKUsesPermission (Maybe Text)
+ehapkupName
+  = lens _ehapkupName (\ s a -> s{_ehapkupName = a})
+
+-- | Optionally, the maximum SDK version for which the permission is
+-- required.
+ehapkupMaxSdkVersion :: Lens' ExternallyHostedAPKUsesPermission (Maybe Int32)
+ehapkupMaxSdkVersion
+  = lens _ehapkupMaxSdkVersion
+      (\ s a -> s{_ehapkupMaxSdkVersion = a})
+      . mapping _Coerce
+
+instance FromJSON ExternallyHostedAPKUsesPermission
+         where
+        parseJSON
+          = withObject "ExternallyHostedAPKUsesPermission"
+              (\ o ->
+                 ExternallyHostedAPKUsesPermission <$>
+                   (o .:? "name") <*> (o .:? "maxSdkVersion"))
+
+instance ToJSON ExternallyHostedAPKUsesPermission
+         where
+        toJSON ExternallyHostedAPKUsesPermission{..}
+          = object
+              (catMaybes
+                 [("name" .=) <$> _ehapkupName,
+                  ("maxSdkVersion" .=) <$> _ehapkupMaxSdkVersion])
+
+--
+-- /See:/ 'listingsListResponse' smart constructor.
+data ListingsListResponse = ListingsListResponse
+    { _llrKind     :: !Text
+    , _llrListings :: !(Maybe [Listing])
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ListingsListResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'llrKind'
+--
+-- * 'llrListings'
+listingsListResponse
+    :: ListingsListResponse
+listingsListResponse =
+    ListingsListResponse
+    { _llrKind = "androidpublisher#listingsListResponse"
+    , _llrListings = Nothing
+    }
+
+-- | Identifies what kind of resource this is. Value: the fixed string
+-- \"androidpublisher#listingsListResponse\".
+llrKind :: Lens' ListingsListResponse Text
+llrKind = lens _llrKind (\ s a -> s{_llrKind = a})
+
+llrListings :: Lens' ListingsListResponse [Listing]
+llrListings
+  = lens _llrListings (\ s a -> s{_llrListings = a}) .
+      _Default
+      . _Coerce
+
+instance FromJSON ListingsListResponse where
+        parseJSON
+          = withObject "ListingsListResponse"
+              (\ o ->
+                 ListingsListResponse <$>
+                   (o .:? "kind" .!=
+                      "androidpublisher#listingsListResponse")
+                     <*> (o .:? "listings" .!= mempty))
+
+instance ToJSON ListingsListResponse where
+        toJSON ListingsListResponse{..}
+          = object
+              (catMaybes
+                 [Just ("kind" .= _llrKind),
+                  ("listings" .=) <$> _llrListings])
+
+--
+-- /See:/ 'aPKsAddExternallyHostedRequest' smart constructor.
+newtype APKsAddExternallyHostedRequest = APKsAddExternallyHostedRequest
+    { _aExternallyHostedAPK :: Maybe ExternallyHostedAPK
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'APKsAddExternallyHostedRequest' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'aExternallyHostedAPK'
+aPKsAddExternallyHostedRequest
+    :: APKsAddExternallyHostedRequest
+aPKsAddExternallyHostedRequest =
+    APKsAddExternallyHostedRequest
+    { _aExternallyHostedAPK = Nothing
+    }
+
+-- | The definition of the externally-hosted APK and where it is located.
+aExternallyHostedAPK :: Lens' APKsAddExternallyHostedRequest (Maybe ExternallyHostedAPK)
+aExternallyHostedAPK
+  = lens _aExternallyHostedAPK
+      (\ s a -> s{_aExternallyHostedAPK = a})
+
+instance FromJSON APKsAddExternallyHostedRequest
+         where
+        parseJSON
+          = withObject "APKsAddExternallyHostedRequest"
+              (\ o ->
+                 APKsAddExternallyHostedRequest <$>
+                   (o .:? "externallyHostedApk"))
+
+instance ToJSON APKsAddExternallyHostedRequest where
+        toJSON APKsAddExternallyHostedRequest{..}
+          = object
+              (catMaybes
+                 [("externallyHostedApk" .=) <$>
+                    _aExternallyHostedAPK])
+
+--
+-- /See:/ 'inAppProductsInsertRequest' smart constructor.
+newtype InAppProductsInsertRequest = InAppProductsInsertRequest
+    { _iInAppProduct :: Maybe InAppProduct
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'InAppProductsInsertRequest' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'iInAppProduct'
+inAppProductsInsertRequest
+    :: InAppProductsInsertRequest
+inAppProductsInsertRequest =
+    InAppProductsInsertRequest
+    { _iInAppProduct = Nothing
+    }
+
+iInAppProduct :: Lens' InAppProductsInsertRequest (Maybe InAppProduct)
+iInAppProduct
+  = lens _iInAppProduct
+      (\ s a -> s{_iInAppProduct = a})
+
+instance FromJSON InAppProductsInsertRequest where
+        parseJSON
+          = withObject "InAppProductsInsertRequest"
+              (\ o ->
+                 InAppProductsInsertRequest <$>
+                   (o .:? "inappproduct"))
+
+instance ToJSON InAppProductsInsertRequest where
+        toJSON InAppProductsInsertRequest{..}
+          = object
+              (catMaybes [("inappproduct" .=) <$> _iInAppProduct])
+
+--
+-- /See:/ 'entitlementsListResponse' smart constructor.
+data EntitlementsListResponse = EntitlementsListResponse
+    { _elrTokenPagination :: !(Maybe TokenPagination)
+    , _elrPageInfo        :: !(Maybe PageInfo)
+    , _elrResources       :: !(Maybe [Entitlement])
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'EntitlementsListResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'elrTokenPagination'
+--
+-- * 'elrPageInfo'
+--
+-- * 'elrResources'
+entitlementsListResponse
+    :: EntitlementsListResponse
+entitlementsListResponse =
+    EntitlementsListResponse
+    { _elrTokenPagination = Nothing
+    , _elrPageInfo = Nothing
+    , _elrResources = Nothing
+    }
+
+elrTokenPagination :: Lens' EntitlementsListResponse (Maybe TokenPagination)
+elrTokenPagination
+  = lens _elrTokenPagination
+      (\ s a -> s{_elrTokenPagination = a})
+
+elrPageInfo :: Lens' EntitlementsListResponse (Maybe PageInfo)
+elrPageInfo
+  = lens _elrPageInfo (\ s a -> s{_elrPageInfo = a})
+
+elrResources :: Lens' EntitlementsListResponse [Entitlement]
+elrResources
+  = lens _elrResources (\ s a -> s{_elrResources = a})
+      . _Default
+      . _Coerce
+
+instance FromJSON EntitlementsListResponse where
+        parseJSON
+          = withObject "EntitlementsListResponse"
+              (\ o ->
+                 EntitlementsListResponse <$>
+                   (o .:? "tokenPagination") <*> (o .:? "pageInfo") <*>
+                     (o .:? "resources" .!= mempty))
+
+instance ToJSON EntitlementsListResponse where
+        toJSON EntitlementsListResponse{..}
+          = object
+              (catMaybes
+                 [("tokenPagination" .=) <$> _elrTokenPagination,
+                  ("pageInfo" .=) <$> _elrPageInfo,
+                  ("resources" .=) <$> _elrResources])
+
+--
+-- /See:/ 'inAppProductsUpdateRequest' smart constructor.
+newtype InAppProductsUpdateRequest = InAppProductsUpdateRequest
+    { _inInAppProduct :: Maybe InAppProduct
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'InAppProductsUpdateRequest' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'inInAppProduct'
+inAppProductsUpdateRequest
+    :: InAppProductsUpdateRequest
+inAppProductsUpdateRequest =
+    InAppProductsUpdateRequest
+    { _inInAppProduct = Nothing
+    }
+
+inInAppProduct :: Lens' InAppProductsUpdateRequest (Maybe InAppProduct)
+inInAppProduct
+  = lens _inInAppProduct
+      (\ s a -> s{_inInAppProduct = a})
+
+instance FromJSON InAppProductsUpdateRequest where
+        parseJSON
+          = withObject "InAppProductsUpdateRequest"
+              (\ o ->
+                 InAppProductsUpdateRequest <$>
+                   (o .:? "inappproduct"))
+
+instance ToJSON InAppProductsUpdateRequest where
+        toJSON InAppProductsUpdateRequest{..}
+          = object
+              (catMaybes [("inappproduct" .=) <$> _inInAppProduct])
+
+-- | An Entitlement resource indicates a user\'s current entitlement to an
+-- inapp item or subscription.
+--
+-- /See:/ 'entitlement' smart constructor.
+data Entitlement = Entitlement
+    { _eKind        :: !Text
+    , _eProductType :: !(Maybe Text)
+    , _eToken       :: !(Maybe Text)
+    , _eProductId   :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'Entitlement' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'eKind'
+--
+-- * 'eProductType'
+--
+-- * 'eToken'
+--
+-- * 'eProductId'
+entitlement
+    :: Entitlement
+entitlement =
+    Entitlement
+    { _eKind = "androidpublisher#entitlement"
+    , _eProductType = Nothing
+    , _eToken = Nothing
+    , _eProductId = Nothing
+    }
+
+-- | This kind represents an entitlement object in the androidpublisher
+-- service.
+eKind :: Lens' Entitlement Text
+eKind = lens _eKind (\ s a -> s{_eKind = a})
+
+-- | The type of the inapp product. Possible values are: - In-app item:
+-- \"inapp\" - Subscription: \"subs\"
+eProductType :: Lens' Entitlement (Maybe Text)
+eProductType
+  = lens _eProductType (\ s a -> s{_eProductType = a})
+
+-- | The token which can be verified using the subscriptions or products API.
+eToken :: Lens' Entitlement (Maybe Text)
+eToken = lens _eToken (\ s a -> s{_eToken = a})
+
+-- | The SKU of the product.
+eProductId :: Lens' Entitlement (Maybe Text)
+eProductId
+  = lens _eProductId (\ s a -> s{_eProductId = a})
+
+instance FromJSON Entitlement where
+        parseJSON
+          = withObject "Entitlement"
+              (\ o ->
+                 Entitlement <$>
+                   (o .:? "kind" .!= "androidpublisher#entitlement") <*>
+                     (o .:? "productType")
+                     <*> (o .:? "token")
+                     <*> (o .:? "productId"))
+
+instance ToJSON Entitlement where
+        toJSON Entitlement{..}
+          = object
+              (catMaybes
+                 [Just ("kind" .= _eKind),
+                  ("productType" .=) <$> _eProductType,
+                  ("token" .=) <$> _eToken,
+                  ("productId" .=) <$> _eProductId])
+
+--
+-- /See:/ 'inAppProductsBatchResponse' smart constructor.
+data InAppProductsBatchResponse = InAppProductsBatchResponse
+    { _iEntrys :: !(Maybe [InAppProductsBatchResponseEntry])
+    , _iKind   :: !Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'InAppProductsBatchResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'iEntrys'
+--
+-- * 'iKind'
+inAppProductsBatchResponse
+    :: InAppProductsBatchResponse
+inAppProductsBatchResponse =
+    InAppProductsBatchResponse
+    { _iEntrys = Nothing
+    , _iKind = "androidpublisher#inappproductsBatchResponse"
+    }
+
+iEntrys :: Lens' InAppProductsBatchResponse [InAppProductsBatchResponseEntry]
+iEntrys
+  = lens _iEntrys (\ s a -> s{_iEntrys = a}) . _Default
+      . _Coerce
+
+-- | Identifies what kind of resource this is. Value: the fixed string
+-- \"androidpublisher#inappproductsBatchResponse\".
+iKind :: Lens' InAppProductsBatchResponse Text
+iKind = lens _iKind (\ s a -> s{_iKind = a})
+
+instance FromJSON InAppProductsBatchResponse where
+        parseJSON
+          = withObject "InAppProductsBatchResponse"
+              (\ o ->
+                 InAppProductsBatchResponse <$>
+                   (o .:? "entrys" .!= mempty) <*>
+                     (o .:? "kind" .!=
+                        "androidpublisher#inappproductsBatchResponse"))
+
+instance ToJSON InAppProductsBatchResponse where
+        toJSON InAppProductsBatchResponse{..}
+          = object
+              (catMaybes
+                 [("entrys" .=) <$> _iEntrys,
+                  Just ("kind" .= _iKind)])
diff --git a/gen/Network/Google/AndroidPublisher/Types/Sum.hs b/gen/Network/Google/AndroidPublisher/Types/Sum.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/AndroidPublisher/Types/Sum.hs
@@ -0,0 +1,546 @@
+{-# 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 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
+
+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 FromText EditsImagesDeleteallImageType where
+    fromText = \case
+        "featureGraphic" -> Just FeatureGraphic
+        "icon" -> Just Icon
+        "phoneScreenshots" -> Just PhoneScreenshots
+        "promoGraphic" -> Just PromoGraphic
+        "sevenInchScreenshots" -> Just SevenInchScreenshots
+        "tenInchScreenshots" -> Just TenInchScreenshots
+        "tvBanner" -> Just TvBanner
+        "tvScreenshots" -> Just TvScreenshots
+        "wearScreenshots" -> Just WearScreenshots
+        _ -> Nothing
+
+instance ToText EditsImagesDeleteallImageType where
+    toText = \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
+
+-- | The track type to read or modify.
+data EditsTracksPatchTrack
+    = Alpha
+      -- ^ @alpha@
+    | Beta
+      -- ^ @beta@
+    | Production
+      -- ^ @production@
+    | Rollout
+      -- ^ @rollout@
+      deriving (Eq,Ord,Enum,Read,Show,Data,Typeable,Generic)
+
+instance Hashable EditsTracksPatchTrack
+
+instance FromText EditsTracksPatchTrack where
+    fromText = \case
+        "alpha" -> Just Alpha
+        "beta" -> Just Beta
+        "production" -> Just Production
+        "rollout" -> Just Rollout
+        _ -> Nothing
+
+instance ToText EditsTracksPatchTrack where
+    toText = \case
+        Alpha -> "alpha"
+        Beta -> "beta"
+        Production -> "production"
+        Rollout -> "rollout"
+
+instance FromJSON EditsTracksPatchTrack where
+    parseJSON = parseJSONText "EditsTracksPatchTrack"
+
+instance ToJSON EditsTracksPatchTrack where
+    toJSON = toJSONText
+
+-- | The track type to read or modify.
+data EditsTracksGetTrack
+    = ETGTAlpha
+      -- ^ @alpha@
+    | ETGTBeta
+      -- ^ @beta@
+    | ETGTProduction
+      -- ^ @production@
+    | ETGTRollout
+      -- ^ @rollout@
+      deriving (Eq,Ord,Enum,Read,Show,Data,Typeable,Generic)
+
+instance Hashable EditsTracksGetTrack
+
+instance FromText EditsTracksGetTrack where
+    fromText = \case
+        "alpha" -> Just ETGTAlpha
+        "beta" -> Just ETGTBeta
+        "production" -> Just ETGTProduction
+        "rollout" -> Just ETGTRollout
+        _ -> Nothing
+
+instance ToText EditsTracksGetTrack where
+    toText = \case
+        ETGTAlpha -> "alpha"
+        ETGTBeta -> "beta"
+        ETGTProduction -> "production"
+        ETGTRollout -> "rollout"
+
+instance FromJSON EditsTracksGetTrack where
+    parseJSON = parseJSONText "EditsTracksGetTrack"
+
+instance ToJSON EditsTracksGetTrack where
+    toJSON = toJSONText
+
+-- | The track type to read or modify.
+data EditsTracksUpdateTrack
+    = ETUTAlpha
+      -- ^ @alpha@
+    | ETUTBeta
+      -- ^ @beta@
+    | ETUTProduction
+      -- ^ @production@
+    | ETUTRollout
+      -- ^ @rollout@
+      deriving (Eq,Ord,Enum,Read,Show,Data,Typeable,Generic)
+
+instance Hashable EditsTracksUpdateTrack
+
+instance FromText EditsTracksUpdateTrack where
+    fromText = \case
+        "alpha" -> Just ETUTAlpha
+        "beta" -> Just ETUTBeta
+        "production" -> Just ETUTProduction
+        "rollout" -> Just ETUTRollout
+        _ -> Nothing
+
+instance ToText EditsTracksUpdateTrack where
+    toText = \case
+        ETUTAlpha -> "alpha"
+        ETUTBeta -> "beta"
+        ETUTProduction -> "production"
+        ETUTRollout -> "rollout"
+
+instance FromJSON EditsTracksUpdateTrack where
+    parseJSON = parseJSONText "EditsTracksUpdateTrack"
+
+instance ToJSON EditsTracksUpdateTrack where
+    toJSON = toJSONText
+
+data EditsImagesListImageType
+    = EILITFeatureGraphic
+      -- ^ @featureGraphic@
+    | 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 FromText EditsImagesListImageType where
+    fromText = \case
+        "featureGraphic" -> Just EILITFeatureGraphic
+        "icon" -> Just EILITIcon
+        "phoneScreenshots" -> Just EILITPhoneScreenshots
+        "promoGraphic" -> Just EILITPromoGraphic
+        "sevenInchScreenshots" -> Just EILITSevenInchScreenshots
+        "tenInchScreenshots" -> Just EILITTenInchScreenshots
+        "tvBanner" -> Just EILITTvBanner
+        "tvScreenshots" -> Just EILITTvScreenshots
+        "wearScreenshots" -> Just EILITWearScreenshots
+        _ -> Nothing
+
+instance ToText EditsImagesListImageType where
+    toText = \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 EditsTestersPatchTrack
+    = ETPTAlpha
+      -- ^ @alpha@
+    | ETPTBeta
+      -- ^ @beta@
+    | ETPTProduction
+      -- ^ @production@
+    | ETPTRollout
+      -- ^ @rollout@
+      deriving (Eq,Ord,Enum,Read,Show,Data,Typeable,Generic)
+
+instance Hashable EditsTestersPatchTrack
+
+instance FromText EditsTestersPatchTrack where
+    fromText = \case
+        "alpha" -> Just ETPTAlpha
+        "beta" -> Just ETPTBeta
+        "production" -> Just ETPTProduction
+        "rollout" -> Just ETPTRollout
+        _ -> Nothing
+
+instance ToText EditsTestersPatchTrack where
+    toText = \case
+        ETPTAlpha -> "alpha"
+        ETPTBeta -> "beta"
+        ETPTProduction -> "production"
+        ETPTRollout -> "rollout"
+
+instance FromJSON EditsTestersPatchTrack where
+    parseJSON = parseJSONText "EditsTestersPatchTrack"
+
+instance ToJSON EditsTestersPatchTrack where
+    toJSON = toJSONText
+
+data EditsTestersGetTrack
+    = EAlpha
+      -- ^ @alpha@
+    | EBeta
+      -- ^ @beta@
+    | EProduction
+      -- ^ @production@
+    | ERollout
+      -- ^ @rollout@
+      deriving (Eq,Ord,Enum,Read,Show,Data,Typeable,Generic)
+
+instance Hashable EditsTestersGetTrack
+
+instance FromText EditsTestersGetTrack where
+    fromText = \case
+        "alpha" -> Just EAlpha
+        "beta" -> Just EBeta
+        "production" -> Just EProduction
+        "rollout" -> Just ERollout
+        _ -> Nothing
+
+instance ToText EditsTestersGetTrack where
+    toText = \case
+        EAlpha -> "alpha"
+        EBeta -> "beta"
+        EProduction -> "production"
+        ERollout -> "rollout"
+
+instance FromJSON EditsTestersGetTrack where
+    parseJSON = parseJSONText "EditsTestersGetTrack"
+
+instance ToJSON EditsTestersGetTrack where
+    toJSON = toJSONText
+
+data EditsImagesUploadImageType
+    = EIUITFeatureGraphic
+      -- ^ @featureGraphic@
+    | 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 FromText EditsImagesUploadImageType where
+    fromText = \case
+        "featureGraphic" -> Just EIUITFeatureGraphic
+        "icon" -> Just EIUITIcon
+        "phoneScreenshots" -> Just EIUITPhoneScreenshots
+        "promoGraphic" -> Just EIUITPromoGraphic
+        "sevenInchScreenshots" -> Just EIUITSevenInchScreenshots
+        "tenInchScreenshots" -> Just EIUITTenInchScreenshots
+        "tvBanner" -> Just EIUITTvBanner
+        "tvScreenshots" -> Just EIUITTvScreenshots
+        "wearScreenshots" -> Just EIUITWearScreenshots
+        _ -> Nothing
+
+instance ToText EditsImagesUploadImageType where
+    toText = \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 EditsExpansionFilesUploadExpansionFileType
+    = Main
+      -- ^ @main@
+    | Patch'
+      -- ^ @patch@
+      deriving (Eq,Ord,Enum,Read,Show,Data,Typeable,Generic)
+
+instance Hashable EditsExpansionFilesUploadExpansionFileType
+
+instance FromText EditsExpansionFilesUploadExpansionFileType where
+    fromText = \case
+        "main" -> Just Main
+        "patch" -> Just Patch'
+        _ -> Nothing
+
+instance ToText EditsExpansionFilesUploadExpansionFileType where
+    toText = \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 FromText EditsExpansionFilesGetExpansionFileType where
+    fromText = \case
+        "main" -> Just EEFGEFTMain
+        "patch" -> Just EEFGEFTPatch'
+        _ -> Nothing
+
+instance ToText EditsExpansionFilesGetExpansionFileType where
+    toText = \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 FromText EditsExpansionFilesPatchExpansionFileType where
+    fromText = \case
+        "main" -> Just EEFPEFTMain
+        "patch" -> Just EEFPEFTPatch'
+        _ -> Nothing
+
+instance ToText EditsExpansionFilesPatchExpansionFileType where
+    toText = \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 FromText EditsExpansionFilesUpdateExpansionFileType where
+    fromText = \case
+        "main" -> Just EEFUEFTMain
+        "patch" -> Just EEFUEFTPatch'
+        _ -> Nothing
+
+instance ToText EditsExpansionFilesUpdateExpansionFileType where
+    toText = \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 FromText EditsImagesDeleteImageType where
+    fromText = \case
+        "featureGraphic" -> Just EIDITFeatureGraphic
+        "icon" -> Just EIDITIcon
+        "phoneScreenshots" -> Just EIDITPhoneScreenshots
+        "promoGraphic" -> Just EIDITPromoGraphic
+        "sevenInchScreenshots" -> Just EIDITSevenInchScreenshots
+        "tenInchScreenshots" -> Just EIDITTenInchScreenshots
+        "tvBanner" -> Just EIDITTvBanner
+        "tvScreenshots" -> Just EIDITTvScreenshots
+        "wearScreenshots" -> Just EIDITWearScreenshots
+        _ -> Nothing
+
+instance ToText EditsImagesDeleteImageType where
+    toText = \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
+
+data EditsTestersUpdateTrack
+    = EDIAlpha
+      -- ^ @alpha@
+    | EDIBeta
+      -- ^ @beta@
+    | EDIProduction
+      -- ^ @production@
+    | EDIRollout
+      -- ^ @rollout@
+      deriving (Eq,Ord,Enum,Read,Show,Data,Typeable,Generic)
+
+instance Hashable EditsTestersUpdateTrack
+
+instance FromText EditsTestersUpdateTrack where
+    fromText = \case
+        "alpha" -> Just EDIAlpha
+        "beta" -> Just EDIBeta
+        "production" -> Just EDIProduction
+        "rollout" -> Just EDIRollout
+        _ -> Nothing
+
+instance ToText EditsTestersUpdateTrack where
+    toText = \case
+        EDIAlpha -> "alpha"
+        EDIBeta -> "beta"
+        EDIProduction -> "production"
+        EDIRollout -> "rollout"
+
+instance FromJSON EditsTestersUpdateTrack where
+    parseJSON = parseJSONText "EditsTestersUpdateTrack"
+
+instance ToJSON EditsTestersUpdateTrack where
+    toJSON = toJSONText
diff --git a/gen/Network/Google/Resource/AndroidPublisher/Edits/APKListings/Delete.hs b/gen/Network/Google/Resource/AndroidPublisher/Edits/APKListings/Delete.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/AndroidPublisher/Edits/APKListings/Delete.hs
@@ -0,0 +1,136 @@
+{-# LANGUAGE DataKinds          #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE FlexibleInstances  #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+{-# LANGUAGE TypeOperators      #-}
+
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
+
+-- |
+-- Module      : Network.Google.Resource.AndroidPublisher.Edits.APKListings.Delete
+-- Copyright   : (c) 2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Deletes the APK-specific localized listing for a specified APK and
+-- language code.
+--
+-- /See:/ <https://developers.google.com/android-publisher Google Play Developer API Reference> for @androidpublisher.edits.apklistings.delete@.
+module Network.Google.Resource.AndroidPublisher.Edits.APKListings.Delete
+    (
+    -- * REST Resource
+      EditsAPKListingsDeleteResource
+
+    -- * Creating a Request
+    , editsAPKListingsDelete
+    , EditsAPKListingsDelete
+
+    -- * Request Lenses
+    , eapkldPackageName
+    , eapkldAPKVersionCode
+    , eapkldLanguage
+    , eapkldEditId
+    ) where
+
+import           Network.Google.AndroidPublisher.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @androidpublisher.edits.apklistings.delete@ method which the
+-- 'EditsAPKListingsDelete' request conforms to.
+type EditsAPKListingsDeleteResource =
+     "androidpublisher" :>
+       "v2" :>
+         "applications" :>
+           Capture "packageName" Text :>
+             "edits" :>
+               Capture "editId" Text :>
+                 "apks" :>
+                   Capture "apkVersionCode" (Textual Int32) :>
+                     "listings" :>
+                       Capture "language" Text :>
+                         QueryParam "alt" AltJSON :> Delete '[JSON] ()
+
+-- | Deletes the APK-specific localized listing for a specified APK and
+-- language code.
+--
+-- /See:/ 'editsAPKListingsDelete' smart constructor.
+data EditsAPKListingsDelete = EditsAPKListingsDelete
+    { _eapkldPackageName    :: !Text
+    , _eapkldAPKVersionCode :: !(Textual Int32)
+    , _eapkldLanguage       :: !Text
+    , _eapkldEditId         :: !Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'EditsAPKListingsDelete' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'eapkldPackageName'
+--
+-- * 'eapkldAPKVersionCode'
+--
+-- * 'eapkldLanguage'
+--
+-- * 'eapkldEditId'
+editsAPKListingsDelete
+    :: Text -- ^ 'eapkldPackageName'
+    -> Int32 -- ^ 'eapkldAPKVersionCode'
+    -> Text -- ^ 'eapkldLanguage'
+    -> Text -- ^ 'eapkldEditId'
+    -> EditsAPKListingsDelete
+editsAPKListingsDelete pEapkldPackageName_ pEapkldAPKVersionCode_ pEapkldLanguage_ pEapkldEditId_ =
+    EditsAPKListingsDelete
+    { _eapkldPackageName = pEapkldPackageName_
+    , _eapkldAPKVersionCode = _Coerce # pEapkldAPKVersionCode_
+    , _eapkldLanguage = pEapkldLanguage_
+    , _eapkldEditId = pEapkldEditId_
+    }
+
+-- | Unique identifier for the Android app that is being updated; for
+-- example, \"com.spiffygame\".
+eapkldPackageName :: Lens' EditsAPKListingsDelete Text
+eapkldPackageName
+  = lens _eapkldPackageName
+      (\ s a -> s{_eapkldPackageName = a})
+
+-- | The APK version code whose APK-specific listings should be read or
+-- modified.
+eapkldAPKVersionCode :: Lens' EditsAPKListingsDelete Int32
+eapkldAPKVersionCode
+  = lens _eapkldAPKVersionCode
+      (\ s a -> s{_eapkldAPKVersionCode = a})
+      . _Coerce
+
+-- | The language code (a BCP-47 language tag) of the APK-specific localized
+-- listing to read or modify. For example, to select Austrian German, pass
+-- \"de-AT\".
+eapkldLanguage :: Lens' EditsAPKListingsDelete Text
+eapkldLanguage
+  = lens _eapkldLanguage
+      (\ s a -> s{_eapkldLanguage = a})
+
+-- | Unique identifier for this edit.
+eapkldEditId :: Lens' EditsAPKListingsDelete Text
+eapkldEditId
+  = lens _eapkldEditId (\ s a -> s{_eapkldEditId = a})
+
+instance GoogleRequest EditsAPKListingsDelete where
+        type Rs EditsAPKListingsDelete = ()
+        requestClient EditsAPKListingsDelete{..}
+          = go _eapkldPackageName _eapkldEditId
+              _eapkldAPKVersionCode
+              _eapkldLanguage
+              (Just AltJSON)
+              androidPublisherService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy EditsAPKListingsDeleteResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/AndroidPublisher/Edits/APKListings/Deleteall.hs b/gen/Network/Google/Resource/AndroidPublisher/Edits/APKListings/Deleteall.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/AndroidPublisher/Edits/APKListings/Deleteall.hs
@@ -0,0 +1,120 @@
+{-# LANGUAGE DataKinds          #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE FlexibleInstances  #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+{-# LANGUAGE TypeOperators      #-}
+
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
+
+-- |
+-- Module      : Network.Google.Resource.AndroidPublisher.Edits.APKListings.Deleteall
+-- Copyright   : (c) 2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Deletes all the APK-specific localized listings for a specified APK.
+--
+-- /See:/ <https://developers.google.com/android-publisher Google Play Developer API Reference> for @androidpublisher.edits.apklistings.deleteall@.
+module Network.Google.Resource.AndroidPublisher.Edits.APKListings.Deleteall
+    (
+    -- * REST Resource
+      EditsAPKListingsDeleteallResource
+
+    -- * Creating a Request
+    , editsAPKListingsDeleteall
+    , EditsAPKListingsDeleteall
+
+    -- * Request Lenses
+    , eapkldaPackageName
+    , eapkldaAPKVersionCode
+    , eapkldaEditId
+    ) where
+
+import           Network.Google.AndroidPublisher.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @androidpublisher.edits.apklistings.deleteall@ method which the
+-- 'EditsAPKListingsDeleteall' request conforms to.
+type EditsAPKListingsDeleteallResource =
+     "androidpublisher" :>
+       "v2" :>
+         "applications" :>
+           Capture "packageName" Text :>
+             "edits" :>
+               Capture "editId" Text :>
+                 "apks" :>
+                   Capture "apkVersionCode" (Textual Int32) :>
+                     "listings" :>
+                       QueryParam "alt" AltJSON :> Delete '[JSON] ()
+
+-- | Deletes all the APK-specific localized listings for a specified APK.
+--
+-- /See:/ 'editsAPKListingsDeleteall' smart constructor.
+data EditsAPKListingsDeleteall = EditsAPKListingsDeleteall
+    { _eapkldaPackageName    :: !Text
+    , _eapkldaAPKVersionCode :: !(Textual Int32)
+    , _eapkldaEditId         :: !Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'EditsAPKListingsDeleteall' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'eapkldaPackageName'
+--
+-- * 'eapkldaAPKVersionCode'
+--
+-- * 'eapkldaEditId'
+editsAPKListingsDeleteall
+    :: Text -- ^ 'eapkldaPackageName'
+    -> Int32 -- ^ 'eapkldaAPKVersionCode'
+    -> Text -- ^ 'eapkldaEditId'
+    -> EditsAPKListingsDeleteall
+editsAPKListingsDeleteall pEapkldaPackageName_ pEapkldaAPKVersionCode_ pEapkldaEditId_ =
+    EditsAPKListingsDeleteall
+    { _eapkldaPackageName = pEapkldaPackageName_
+    , _eapkldaAPKVersionCode = _Coerce # pEapkldaAPKVersionCode_
+    , _eapkldaEditId = pEapkldaEditId_
+    }
+
+-- | Unique identifier for the Android app that is being updated; for
+-- example, \"com.spiffygame\".
+eapkldaPackageName :: Lens' EditsAPKListingsDeleteall Text
+eapkldaPackageName
+  = lens _eapkldaPackageName
+      (\ s a -> s{_eapkldaPackageName = a})
+
+-- | The APK version code whose APK-specific listings should be read or
+-- modified.
+eapkldaAPKVersionCode :: Lens' EditsAPKListingsDeleteall Int32
+eapkldaAPKVersionCode
+  = lens _eapkldaAPKVersionCode
+      (\ s a -> s{_eapkldaAPKVersionCode = a})
+      . _Coerce
+
+-- | Unique identifier for this edit.
+eapkldaEditId :: Lens' EditsAPKListingsDeleteall Text
+eapkldaEditId
+  = lens _eapkldaEditId
+      (\ s a -> s{_eapkldaEditId = a})
+
+instance GoogleRequest EditsAPKListingsDeleteall
+         where
+        type Rs EditsAPKListingsDeleteall = ()
+        requestClient EditsAPKListingsDeleteall{..}
+          = go _eapkldaPackageName _eapkldaEditId
+              _eapkldaAPKVersionCode
+              (Just AltJSON)
+              androidPublisherService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy EditsAPKListingsDeleteallResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/AndroidPublisher/Edits/APKListings/Get.hs b/gen/Network/Google/Resource/AndroidPublisher/Edits/APKListings/Get.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/AndroidPublisher/Edits/APKListings/Get.hs
@@ -0,0 +1,136 @@
+{-# LANGUAGE DataKinds          #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE FlexibleInstances  #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+{-# LANGUAGE TypeOperators      #-}
+
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
+
+-- |
+-- Module      : Network.Google.Resource.AndroidPublisher.Edits.APKListings.Get
+-- Copyright   : (c) 2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Fetches the APK-specific localized listing for a specified APK and
+-- language code.
+--
+-- /See:/ <https://developers.google.com/android-publisher Google Play Developer API Reference> for @androidpublisher.edits.apklistings.get@.
+module Network.Google.Resource.AndroidPublisher.Edits.APKListings.Get
+    (
+    -- * REST Resource
+      EditsAPKListingsGetResource
+
+    -- * Creating a Request
+    , editsAPKListingsGet
+    , EditsAPKListingsGet
+
+    -- * Request Lenses
+    , eapklgPackageName
+    , eapklgAPKVersionCode
+    , eapklgLanguage
+    , eapklgEditId
+    ) where
+
+import           Network.Google.AndroidPublisher.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @androidpublisher.edits.apklistings.get@ method which the
+-- 'EditsAPKListingsGet' request conforms to.
+type EditsAPKListingsGetResource =
+     "androidpublisher" :>
+       "v2" :>
+         "applications" :>
+           Capture "packageName" Text :>
+             "edits" :>
+               Capture "editId" Text :>
+                 "apks" :>
+                   Capture "apkVersionCode" (Textual Int32) :>
+                     "listings" :>
+                       Capture "language" Text :>
+                         QueryParam "alt" AltJSON :> Get '[JSON] APKListing
+
+-- | Fetches the APK-specific localized listing for a specified APK and
+-- language code.
+--
+-- /See:/ 'editsAPKListingsGet' smart constructor.
+data EditsAPKListingsGet = EditsAPKListingsGet
+    { _eapklgPackageName    :: !Text
+    , _eapklgAPKVersionCode :: !(Textual Int32)
+    , _eapklgLanguage       :: !Text
+    , _eapklgEditId         :: !Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'EditsAPKListingsGet' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'eapklgPackageName'
+--
+-- * 'eapklgAPKVersionCode'
+--
+-- * 'eapklgLanguage'
+--
+-- * 'eapklgEditId'
+editsAPKListingsGet
+    :: Text -- ^ 'eapklgPackageName'
+    -> Int32 -- ^ 'eapklgAPKVersionCode'
+    -> Text -- ^ 'eapklgLanguage'
+    -> Text -- ^ 'eapklgEditId'
+    -> EditsAPKListingsGet
+editsAPKListingsGet pEapklgPackageName_ pEapklgAPKVersionCode_ pEapklgLanguage_ pEapklgEditId_ =
+    EditsAPKListingsGet
+    { _eapklgPackageName = pEapklgPackageName_
+    , _eapklgAPKVersionCode = _Coerce # pEapklgAPKVersionCode_
+    , _eapklgLanguage = pEapklgLanguage_
+    , _eapklgEditId = pEapklgEditId_
+    }
+
+-- | Unique identifier for the Android app that is being updated; for
+-- example, \"com.spiffygame\".
+eapklgPackageName :: Lens' EditsAPKListingsGet Text
+eapklgPackageName
+  = lens _eapklgPackageName
+      (\ s a -> s{_eapklgPackageName = a})
+
+-- | The APK version code whose APK-specific listings should be read or
+-- modified.
+eapklgAPKVersionCode :: Lens' EditsAPKListingsGet Int32
+eapklgAPKVersionCode
+  = lens _eapklgAPKVersionCode
+      (\ s a -> s{_eapklgAPKVersionCode = a})
+      . _Coerce
+
+-- | The language code (a BCP-47 language tag) of the APK-specific localized
+-- listing to read or modify. For example, to select Austrian German, pass
+-- \"de-AT\".
+eapklgLanguage :: Lens' EditsAPKListingsGet Text
+eapklgLanguage
+  = lens _eapklgLanguage
+      (\ s a -> s{_eapklgLanguage = a})
+
+-- | Unique identifier for this edit.
+eapklgEditId :: Lens' EditsAPKListingsGet Text
+eapklgEditId
+  = lens _eapklgEditId (\ s a -> s{_eapklgEditId = a})
+
+instance GoogleRequest EditsAPKListingsGet where
+        type Rs EditsAPKListingsGet = APKListing
+        requestClient EditsAPKListingsGet{..}
+          = go _eapklgPackageName _eapklgEditId
+              _eapklgAPKVersionCode
+              _eapklgLanguage
+              (Just AltJSON)
+              androidPublisherService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy EditsAPKListingsGetResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/AndroidPublisher/Edits/APKListings/List.hs b/gen/Network/Google/Resource/AndroidPublisher/Edits/APKListings/List.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/AndroidPublisher/Edits/APKListings/List.hs
@@ -0,0 +1,120 @@
+{-# LANGUAGE DataKinds          #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE FlexibleInstances  #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+{-# LANGUAGE TypeOperators      #-}
+
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
+
+-- |
+-- Module      : Network.Google.Resource.AndroidPublisher.Edits.APKListings.List
+-- Copyright   : (c) 2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Lists all the APK-specific localized listings for a specified APK.
+--
+-- /See:/ <https://developers.google.com/android-publisher Google Play Developer API Reference> for @androidpublisher.edits.apklistings.list@.
+module Network.Google.Resource.AndroidPublisher.Edits.APKListings.List
+    (
+    -- * REST Resource
+      EditsAPKListingsListResource
+
+    -- * Creating a Request
+    , editsAPKListingsList
+    , EditsAPKListingsList
+
+    -- * Request Lenses
+    , eapkllPackageName
+    , eapkllAPKVersionCode
+    , eapkllEditId
+    ) where
+
+import           Network.Google.AndroidPublisher.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @androidpublisher.edits.apklistings.list@ method which the
+-- 'EditsAPKListingsList' request conforms to.
+type EditsAPKListingsListResource =
+     "androidpublisher" :>
+       "v2" :>
+         "applications" :>
+           Capture "packageName" Text :>
+             "edits" :>
+               Capture "editId" Text :>
+                 "apks" :>
+                   Capture "apkVersionCode" (Textual Int32) :>
+                     "listings" :>
+                       QueryParam "alt" AltJSON :>
+                         Get '[JSON] APKListingsListResponse
+
+-- | Lists all the APK-specific localized listings for a specified APK.
+--
+-- /See:/ 'editsAPKListingsList' smart constructor.
+data EditsAPKListingsList = EditsAPKListingsList
+    { _eapkllPackageName    :: !Text
+    , _eapkllAPKVersionCode :: !(Textual Int32)
+    , _eapkllEditId         :: !Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'EditsAPKListingsList' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'eapkllPackageName'
+--
+-- * 'eapkllAPKVersionCode'
+--
+-- * 'eapkllEditId'
+editsAPKListingsList
+    :: Text -- ^ 'eapkllPackageName'
+    -> Int32 -- ^ 'eapkllAPKVersionCode'
+    -> Text -- ^ 'eapkllEditId'
+    -> EditsAPKListingsList
+editsAPKListingsList pEapkllPackageName_ pEapkllAPKVersionCode_ pEapkllEditId_ =
+    EditsAPKListingsList
+    { _eapkllPackageName = pEapkllPackageName_
+    , _eapkllAPKVersionCode = _Coerce # pEapkllAPKVersionCode_
+    , _eapkllEditId = pEapkllEditId_
+    }
+
+-- | Unique identifier for the Android app that is being updated; for
+-- example, \"com.spiffygame\".
+eapkllPackageName :: Lens' EditsAPKListingsList Text
+eapkllPackageName
+  = lens _eapkllPackageName
+      (\ s a -> s{_eapkllPackageName = a})
+
+-- | The APK version code whose APK-specific listings should be read or
+-- modified.
+eapkllAPKVersionCode :: Lens' EditsAPKListingsList Int32
+eapkllAPKVersionCode
+  = lens _eapkllAPKVersionCode
+      (\ s a -> s{_eapkllAPKVersionCode = a})
+      . _Coerce
+
+-- | Unique identifier for this edit.
+eapkllEditId :: Lens' EditsAPKListingsList Text
+eapkllEditId
+  = lens _eapkllEditId (\ s a -> s{_eapkllEditId = a})
+
+instance GoogleRequest EditsAPKListingsList where
+        type Rs EditsAPKListingsList =
+             APKListingsListResponse
+        requestClient EditsAPKListingsList{..}
+          = go _eapkllPackageName _eapkllEditId
+              _eapkllAPKVersionCode
+              (Just AltJSON)
+              androidPublisherService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy EditsAPKListingsListResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/AndroidPublisher/Edits/APKListings/Patch.hs b/gen/Network/Google/Resource/AndroidPublisher/Edits/APKListings/Patch.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/AndroidPublisher/Edits/APKListings/Patch.hs
@@ -0,0 +1,151 @@
+{-# LANGUAGE DataKinds          #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE FlexibleInstances  #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+{-# LANGUAGE TypeOperators      #-}
+
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
+
+-- |
+-- Module      : Network.Google.Resource.AndroidPublisher.Edits.APKListings.Patch
+-- Copyright   : (c) 2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Updates or creates the APK-specific localized listing for a specified
+-- APK and language code. This method supports patch semantics.
+--
+-- /See:/ <https://developers.google.com/android-publisher Google Play Developer API Reference> for @androidpublisher.edits.apklistings.patch@.
+module Network.Google.Resource.AndroidPublisher.Edits.APKListings.Patch
+    (
+    -- * REST Resource
+      EditsAPKListingsPatchResource
+
+    -- * Creating a Request
+    , editsAPKListingsPatch
+    , EditsAPKListingsPatch
+
+    -- * Request Lenses
+    , eapklpPackageName
+    , eapklpAPKVersionCode
+    , eapklpPayload
+    , eapklpLanguage
+    , eapklpEditId
+    ) where
+
+import           Network.Google.AndroidPublisher.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @androidpublisher.edits.apklistings.patch@ method which the
+-- 'EditsAPKListingsPatch' request conforms to.
+type EditsAPKListingsPatchResource =
+     "androidpublisher" :>
+       "v2" :>
+         "applications" :>
+           Capture "packageName" Text :>
+             "edits" :>
+               Capture "editId" Text :>
+                 "apks" :>
+                   Capture "apkVersionCode" (Textual Int32) :>
+                     "listings" :>
+                       Capture "language" Text :>
+                         QueryParam "alt" AltJSON :>
+                           ReqBody '[JSON] APKListing :>
+                             Patch '[JSON] APKListing
+
+-- | Updates or creates the APK-specific localized listing for a specified
+-- APK and language code. This method supports patch semantics.
+--
+-- /See:/ 'editsAPKListingsPatch' smart constructor.
+data EditsAPKListingsPatch = EditsAPKListingsPatch
+    { _eapklpPackageName    :: !Text
+    , _eapklpAPKVersionCode :: !(Textual Int32)
+    , _eapklpPayload        :: !APKListing
+    , _eapklpLanguage       :: !Text
+    , _eapklpEditId         :: !Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'EditsAPKListingsPatch' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'eapklpPackageName'
+--
+-- * 'eapklpAPKVersionCode'
+--
+-- * 'eapklpPayload'
+--
+-- * 'eapklpLanguage'
+--
+-- * 'eapklpEditId'
+editsAPKListingsPatch
+    :: Text -- ^ 'eapklpPackageName'
+    -> Int32 -- ^ 'eapklpAPKVersionCode'
+    -> APKListing -- ^ 'eapklpPayload'
+    -> Text -- ^ 'eapklpLanguage'
+    -> Text -- ^ 'eapklpEditId'
+    -> EditsAPKListingsPatch
+editsAPKListingsPatch pEapklpPackageName_ pEapklpAPKVersionCode_ pEapklpPayload_ pEapklpLanguage_ pEapklpEditId_ =
+    EditsAPKListingsPatch
+    { _eapklpPackageName = pEapklpPackageName_
+    , _eapklpAPKVersionCode = _Coerce # pEapklpAPKVersionCode_
+    , _eapklpPayload = pEapklpPayload_
+    , _eapklpLanguage = pEapklpLanguage_
+    , _eapklpEditId = pEapklpEditId_
+    }
+
+-- | Unique identifier for the Android app that is being updated; for
+-- example, \"com.spiffygame\".
+eapklpPackageName :: Lens' EditsAPKListingsPatch Text
+eapklpPackageName
+  = lens _eapklpPackageName
+      (\ s a -> s{_eapklpPackageName = a})
+
+-- | The APK version code whose APK-specific listings should be read or
+-- modified.
+eapklpAPKVersionCode :: Lens' EditsAPKListingsPatch Int32
+eapklpAPKVersionCode
+  = lens _eapklpAPKVersionCode
+      (\ s a -> s{_eapklpAPKVersionCode = a})
+      . _Coerce
+
+-- | Multipart request metadata.
+eapklpPayload :: Lens' EditsAPKListingsPatch APKListing
+eapklpPayload
+  = lens _eapklpPayload
+      (\ s a -> s{_eapklpPayload = a})
+
+-- | The language code (a BCP-47 language tag) of the APK-specific localized
+-- listing to read or modify. For example, to select Austrian German, pass
+-- \"de-AT\".
+eapklpLanguage :: Lens' EditsAPKListingsPatch Text
+eapklpLanguage
+  = lens _eapklpLanguage
+      (\ s a -> s{_eapklpLanguage = a})
+
+-- | Unique identifier for this edit.
+eapklpEditId :: Lens' EditsAPKListingsPatch Text
+eapklpEditId
+  = lens _eapklpEditId (\ s a -> s{_eapklpEditId = a})
+
+instance GoogleRequest EditsAPKListingsPatch where
+        type Rs EditsAPKListingsPatch = APKListing
+        requestClient EditsAPKListingsPatch{..}
+          = go _eapklpPackageName _eapklpEditId
+              _eapklpAPKVersionCode
+              _eapklpLanguage
+              (Just AltJSON)
+              _eapklpPayload
+              androidPublisherService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy EditsAPKListingsPatchResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/AndroidPublisher/Edits/APKListings/Update.hs b/gen/Network/Google/Resource/AndroidPublisher/Edits/APKListings/Update.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/AndroidPublisher/Edits/APKListings/Update.hs
@@ -0,0 +1,150 @@
+{-# LANGUAGE DataKinds          #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE FlexibleInstances  #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+{-# LANGUAGE TypeOperators      #-}
+
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
+
+-- |
+-- Module      : Network.Google.Resource.AndroidPublisher.Edits.APKListings.Update
+-- Copyright   : (c) 2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Updates or creates the APK-specific localized listing for a specified
+-- APK and language code.
+--
+-- /See:/ <https://developers.google.com/android-publisher Google Play Developer API Reference> for @androidpublisher.edits.apklistings.update@.
+module Network.Google.Resource.AndroidPublisher.Edits.APKListings.Update
+    (
+    -- * REST Resource
+      EditsAPKListingsUpdateResource
+
+    -- * Creating a Request
+    , editsAPKListingsUpdate
+    , EditsAPKListingsUpdate
+
+    -- * Request Lenses
+    , eapkluPackageName
+    , eapkluAPKVersionCode
+    , eapkluPayload
+    , eapkluLanguage
+    , eapkluEditId
+    ) where
+
+import           Network.Google.AndroidPublisher.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @androidpublisher.edits.apklistings.update@ method which the
+-- 'EditsAPKListingsUpdate' request conforms to.
+type EditsAPKListingsUpdateResource =
+     "androidpublisher" :>
+       "v2" :>
+         "applications" :>
+           Capture "packageName" Text :>
+             "edits" :>
+               Capture "editId" Text :>
+                 "apks" :>
+                   Capture "apkVersionCode" (Textual Int32) :>
+                     "listings" :>
+                       Capture "language" Text :>
+                         QueryParam "alt" AltJSON :>
+                           ReqBody '[JSON] APKListing :> Put '[JSON] APKListing
+
+-- | Updates or creates the APK-specific localized listing for a specified
+-- APK and language code.
+--
+-- /See:/ 'editsAPKListingsUpdate' smart constructor.
+data EditsAPKListingsUpdate = EditsAPKListingsUpdate
+    { _eapkluPackageName    :: !Text
+    , _eapkluAPKVersionCode :: !(Textual Int32)
+    , _eapkluPayload        :: !APKListing
+    , _eapkluLanguage       :: !Text
+    , _eapkluEditId         :: !Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'EditsAPKListingsUpdate' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'eapkluPackageName'
+--
+-- * 'eapkluAPKVersionCode'
+--
+-- * 'eapkluPayload'
+--
+-- * 'eapkluLanguage'
+--
+-- * 'eapkluEditId'
+editsAPKListingsUpdate
+    :: Text -- ^ 'eapkluPackageName'
+    -> Int32 -- ^ 'eapkluAPKVersionCode'
+    -> APKListing -- ^ 'eapkluPayload'
+    -> Text -- ^ 'eapkluLanguage'
+    -> Text -- ^ 'eapkluEditId'
+    -> EditsAPKListingsUpdate
+editsAPKListingsUpdate pEapkluPackageName_ pEapkluAPKVersionCode_ pEapkluPayload_ pEapkluLanguage_ pEapkluEditId_ =
+    EditsAPKListingsUpdate
+    { _eapkluPackageName = pEapkluPackageName_
+    , _eapkluAPKVersionCode = _Coerce # pEapkluAPKVersionCode_
+    , _eapkluPayload = pEapkluPayload_
+    , _eapkluLanguage = pEapkluLanguage_
+    , _eapkluEditId = pEapkluEditId_
+    }
+
+-- | Unique identifier for the Android app that is being updated; for
+-- example, \"com.spiffygame\".
+eapkluPackageName :: Lens' EditsAPKListingsUpdate Text
+eapkluPackageName
+  = lens _eapkluPackageName
+      (\ s a -> s{_eapkluPackageName = a})
+
+-- | The APK version code whose APK-specific listings should be read or
+-- modified.
+eapkluAPKVersionCode :: Lens' EditsAPKListingsUpdate Int32
+eapkluAPKVersionCode
+  = lens _eapkluAPKVersionCode
+      (\ s a -> s{_eapkluAPKVersionCode = a})
+      . _Coerce
+
+-- | Multipart request metadata.
+eapkluPayload :: Lens' EditsAPKListingsUpdate APKListing
+eapkluPayload
+  = lens _eapkluPayload
+      (\ s a -> s{_eapkluPayload = a})
+
+-- | The language code (a BCP-47 language tag) of the APK-specific localized
+-- listing to read or modify. For example, to select Austrian German, pass
+-- \"de-AT\".
+eapkluLanguage :: Lens' EditsAPKListingsUpdate Text
+eapkluLanguage
+  = lens _eapkluLanguage
+      (\ s a -> s{_eapkluLanguage = a})
+
+-- | Unique identifier for this edit.
+eapkluEditId :: Lens' EditsAPKListingsUpdate Text
+eapkluEditId
+  = lens _eapkluEditId (\ s a -> s{_eapkluEditId = a})
+
+instance GoogleRequest EditsAPKListingsUpdate where
+        type Rs EditsAPKListingsUpdate = APKListing
+        requestClient EditsAPKListingsUpdate{..}
+          = go _eapkluPackageName _eapkluEditId
+              _eapkluAPKVersionCode
+              _eapkluLanguage
+              (Just AltJSON)
+              _eapkluPayload
+              androidPublisherService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy EditsAPKListingsUpdateResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/AndroidPublisher/Edits/APKs/Addexternallyhosted.hs b/gen/Network/Google/Resource/AndroidPublisher/Edits/APKs/Addexternallyhosted.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/AndroidPublisher/Edits/APKs/Addexternallyhosted.hs
@@ -0,0 +1,123 @@
+{-# 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 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" :>
+       "v2" :>
+         "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
+        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
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/AndroidPublisher/Edits/APKs/List.hs
@@ -0,0 +1,97 @@
+{-# 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 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" :>
+       "v2" :>
+         "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
+        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
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/AndroidPublisher/Edits/APKs/Upload.hs
@@ -0,0 +1,123 @@
+{-# 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 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" :>
+       "v2" :>
+         "applications" :>
+           Capture "packageName" Text :>
+             "edits" :>
+               Capture "editId" Text :>
+                 "apks" :>
+                   QueryParam "alt" AltJSON :> Post '[JSON] APK
+       :<|>
+       "upload" :>
+         "androidpublisher" :>
+           "v2" :>
+             "applications" :>
+               Capture "packageName" Text :>
+                 "edits" :>
+                   Capture "editId" Text :>
+                     "apks" :>
+                       QueryParam "alt" AltJSON :>
+                         QueryParam "uploadType" AltMedia :>
+                           ReqBody '[OctetStream] RequestBody :>
+                             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
+        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
+        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/Commit.hs b/gen/Network/Google/Resource/AndroidPublisher/Edits/Commit.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/AndroidPublisher/Edits/Commit.hs
@@ -0,0 +1,97 @@
+{-# 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 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" :>
+       "v2" :>
+         "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
+        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
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/AndroidPublisher/Edits/Delete.hs
@@ -0,0 +1,101 @@
+{-# 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 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" :>
+       "v2" :>
+         "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 = ()
+        requestClient EditsDelete{..}
+          = go _edPackageName _edEditId (Just AltJSON)
+              androidPublisherService
+          where go
+                  = buildClient (Proxy :: Proxy EditsDeleteResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/AndroidPublisher/Edits/Details/Get.hs b/gen/Network/Google/Resource/AndroidPublisher/Edits/Details/Get.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/AndroidPublisher/Edits/Details/Get.hs
@@ -0,0 +1,102 @@
+{-# 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 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" :>
+       "v2" :>
+         "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
+        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
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/AndroidPublisher/Edits/Details/Patch.hs
@@ -0,0 +1,114 @@
+{-# 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 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" :>
+       "v2" :>
+         "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
+        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
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/AndroidPublisher/Edits/Details/Update.hs
@@ -0,0 +1,113 @@
+{-# LANGUAGE DataKinds          #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE FlexibleInstances  #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+{-# LANGUAGE TypeOperators      #-}
+
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
+
+-- |
+-- Module      : Network.Google.Resource.AndroidPublisher.Edits.Details.Update
+-- Copyright   : (c) 2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- 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" :>
+       "v2" :>
+         "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
+        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
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/AndroidPublisher/Edits/ExpansionFiles/Get.hs
@@ -0,0 +1,132 @@
+{-# 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 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" :>
+       "v2" :>
+         "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
+        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
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/AndroidPublisher/Edits/ExpansionFiles/Patch.hs
@@ -0,0 +1,150 @@
+{-# 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 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" :>
+       "v2" :>
+         "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
+        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
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/AndroidPublisher/Edits/ExpansionFiles/Update.hs
@@ -0,0 +1,151 @@
+{-# 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 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" :>
+       "v2" :>
+         "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
+        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
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/AndroidPublisher/Edits/ExpansionFiles/Upload.hs
@@ -0,0 +1,168 @@
+{-# 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 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" :>
+       "v2" :>
+         "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" :>
+           "v2" :>
+             "applications" :>
+               Capture "packageName" Text :>
+                 "edits" :>
+                   Capture "editId" Text :>
+                     "apks" :>
+                       Capture "apkVersionCode" (Textual Int32) :>
+                         "expansionFiles" :>
+                           Capture "expansionFileType"
+                             EditsExpansionFilesUploadExpansionFileType
+                             :>
+                             QueryParam "alt" AltJSON :>
+                               QueryParam "uploadType" AltMedia :>
+                                 ReqBody '[OctetStream] RequestBody :>
+                                   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
+        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
+        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
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/AndroidPublisher/Edits/Get.hs
@@ -0,0 +1,99 @@
+{-# LANGUAGE DataKinds          #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE FlexibleInstances  #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+{-# LANGUAGE TypeOperators      #-}
+
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
+
+-- |
+-- Module      : Network.Google.Resource.AndroidPublisher.Edits.Get
+-- Copyright   : (c) 2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- 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" :>
+       "v2" :>
+         "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
+        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
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/AndroidPublisher/Edits/Images/Delete.hs
@@ -0,0 +1,141 @@
+{-# 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 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" :>
+       "v2" :>
+         "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 = ()
+        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
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/AndroidPublisher/Edits/Images/Deleteall.hs
@@ -0,0 +1,129 @@
+{-# 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 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" :>
+       "v2" :>
+         "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
+        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
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/AndroidPublisher/Edits/Images/List.hs
@@ -0,0 +1,128 @@
+{-# 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 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" :>
+       "v2" :>
+         "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
+        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
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/AndroidPublisher/Edits/Images/Upload.hs
@@ -0,0 +1,162 @@
+{-# 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 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" :>
+       "v2" :>
+         "applications" :>
+           Capture "packageName" Text :>
+             "edits" :>
+               Capture "editId" Text :>
+                 "listings" :>
+                   Capture "language" Text :>
+                     Capture "imageType" EditsImagesUploadImageType :>
+                       QueryParam "alt" AltJSON :>
+                         Post '[JSON] ImagesUploadResponse
+       :<|>
+       "upload" :>
+         "androidpublisher" :>
+           "v2" :>
+             "applications" :>
+               Capture "packageName" Text :>
+                 "edits" :>
+                   Capture "editId" Text :>
+                     "listings" :>
+                       Capture "language" Text :>
+                         Capture "imageType" EditsImagesUploadImageType :>
+                           QueryParam "alt" AltJSON :>
+                             QueryParam "uploadType" AltMedia :>
+                               ReqBody '[OctetStream] RequestBody :>
+                                 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
+        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
+        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
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/AndroidPublisher/Edits/Insert.hs
@@ -0,0 +1,98 @@
+{-# 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 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" :>
+       "v2" :>
+         "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
+        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
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/AndroidPublisher/Edits/Listings/Delete.hs
@@ -0,0 +1,114 @@
+{-# 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 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" :>
+       "v2" :>
+         "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 = ()
+        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
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/AndroidPublisher/Edits/Listings/Deleteall.hs
@@ -0,0 +1,100 @@
+{-# LANGUAGE DataKinds          #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE FlexibleInstances  #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+{-# LANGUAGE TypeOperators      #-}
+
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
+
+-- |
+-- Module      : Network.Google.Resource.AndroidPublisher.Edits.Listings.Deleteall
+-- Copyright   : (c) 2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- 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" :>
+       "v2" :>
+         "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 = ()
+        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
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/AndroidPublisher/Edits/Listings/Get.hs
@@ -0,0 +1,114 @@
+{-# 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 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" :>
+       "v2" :>
+         "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
+        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
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/AndroidPublisher/Edits/Listings/List.hs
@@ -0,0 +1,101 @@
+{-# 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 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" :>
+       "v2" :>
+         "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
+        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
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/AndroidPublisher/Edits/Listings/Patch.hs
@@ -0,0 +1,129 @@
+{-# 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 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" :>
+       "v2" :>
+         "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
+        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
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/AndroidPublisher/Edits/Listings/Update.hs
@@ -0,0 +1,127 @@
+{-# 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 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" :>
+       "v2" :>
+         "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
+        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
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/AndroidPublisher/Edits/Testers/Get.hs
@@ -0,0 +1,108 @@
+{-# 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 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" :>
+       "v2" :>
+         "applications" :>
+           Capture "packageName" Text :>
+             "edits" :>
+               Capture "editId" Text :>
+                 "testers" :>
+                   Capture "track" EditsTestersGetTrack :>
+                     QueryParam "alt" AltJSON :> Get '[JSON] Testers
+
+--
+-- /See:/ 'editsTestersGet' smart constructor.
+data EditsTestersGet = EditsTestersGet
+    { _etgTrack       :: !EditsTestersGetTrack
+    , _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
+    :: EditsTestersGetTrack -- ^ 'etgTrack'
+    -> Text -- ^ 'etgPackageName'
+    -> Text -- ^ 'etgEditId'
+    -> EditsTestersGet
+editsTestersGet pEtgTrack_ pEtgPackageName_ pEtgEditId_ =
+    EditsTestersGet
+    { _etgTrack = pEtgTrack_
+    , _etgPackageName = pEtgPackageName_
+    , _etgEditId = pEtgEditId_
+    }
+
+etgTrack :: Lens' EditsTestersGet EditsTestersGetTrack
+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
+        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
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/AndroidPublisher/Edits/Testers/Patch.hs
@@ -0,0 +1,121 @@
+{-# 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 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" :>
+       "v2" :>
+         "applications" :>
+           Capture "packageName" Text :>
+             "edits" :>
+               Capture "editId" Text :>
+                 "testers" :>
+                   Capture "track" EditsTestersPatchTrack :>
+                     QueryParam "alt" AltJSON :>
+                       ReqBody '[JSON] Testers :> Patch '[JSON] Testers
+
+--
+-- /See:/ 'editsTestersPatch' smart constructor.
+data EditsTestersPatch = EditsTestersPatch
+    { _etpTrack       :: !EditsTestersPatchTrack
+    , _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
+    :: EditsTestersPatchTrack -- ^ 'etpTrack'
+    -> Text -- ^ 'etpPackageName'
+    -> Testers -- ^ 'etpPayload'
+    -> Text -- ^ 'etpEditId'
+    -> EditsTestersPatch
+editsTestersPatch pEtpTrack_ pEtpPackageName_ pEtpPayload_ pEtpEditId_ =
+    EditsTestersPatch
+    { _etpTrack = pEtpTrack_
+    , _etpPackageName = pEtpPackageName_
+    , _etpPayload = pEtpPayload_
+    , _etpEditId = pEtpEditId_
+    }
+
+etpTrack :: Lens' EditsTestersPatch EditsTestersPatchTrack
+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
+        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
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/AndroidPublisher/Edits/Testers/Update.hs
@@ -0,0 +1,122 @@
+{-# LANGUAGE DataKinds          #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE FlexibleInstances  #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+{-# LANGUAGE TypeOperators      #-}
+
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
+
+-- |
+-- Module      : Network.Google.Resource.AndroidPublisher.Edits.Testers.Update
+-- Copyright   : (c) 2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- /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" :>
+       "v2" :>
+         "applications" :>
+           Capture "packageName" Text :>
+             "edits" :>
+               Capture "editId" Text :>
+                 "testers" :>
+                   Capture "track" EditsTestersUpdateTrack :>
+                     QueryParam "alt" AltJSON :>
+                       ReqBody '[JSON] Testers :> Put '[JSON] Testers
+
+--
+-- /See:/ 'editsTestersUpdate' smart constructor.
+data EditsTestersUpdate = EditsTestersUpdate
+    { _etutTrack       :: !EditsTestersUpdateTrack
+    , _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
+    :: EditsTestersUpdateTrack -- ^ 'etutTrack'
+    -> Text -- ^ 'etutPackageName'
+    -> Testers -- ^ 'etutPayload'
+    -> Text -- ^ 'etutEditId'
+    -> EditsTestersUpdate
+editsTestersUpdate pEtutTrack_ pEtutPackageName_ pEtutPayload_ pEtutEditId_ =
+    EditsTestersUpdate
+    { _etutTrack = pEtutTrack_
+    , _etutPackageName = pEtutPackageName_
+    , _etutPayload = pEtutPayload_
+    , _etutEditId = pEtutEditId_
+    }
+
+etutTrack :: Lens' EditsTestersUpdate EditsTestersUpdateTrack
+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
+        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
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/AndroidPublisher/Edits/Tracks/Get.hs
@@ -0,0 +1,114 @@
+{-# 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 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" :>
+       "v2" :>
+         "applications" :>
+           Capture "packageName" Text :>
+             "edits" :>
+               Capture "editId" Text :>
+                 "tracks" :>
+                   Capture "track" EditsTracksGetTrack :>
+                     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       :: !EditsTracksGetTrack
+    , _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
+    :: EditsTracksGetTrack -- ^ 'etgtTrack'
+    -> Text -- ^ 'etgtPackageName'
+    -> Text -- ^ 'etgtEditId'
+    -> EditsTracksGet
+editsTracksGet pEtgtTrack_ pEtgtPackageName_ pEtgtEditId_ =
+    EditsTracksGet
+    { _etgtTrack = pEtgtTrack_
+    , _etgtPackageName = pEtgtPackageName_
+    , _etgtEditId = pEtgtEditId_
+    }
+
+-- | The track type to read or modify.
+etgtTrack :: Lens' EditsTracksGet EditsTracksGetTrack
+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
+        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
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/AndroidPublisher/Edits/Tracks/List.hs
@@ -0,0 +1,101 @@
+{-# 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 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" :>
+       "v2" :>
+         "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
+        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
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/AndroidPublisher/Edits/Tracks/Patch.hs
@@ -0,0 +1,132 @@
+{-# 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 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. When
+-- halted, the rollout track cannot be updated without adding new APKs, and
+-- adding new APKs will cause it to resume. 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" :>
+       "v2" :>
+         "applications" :>
+           Capture "packageName" Text :>
+             "edits" :>
+               Capture "editId" Text :>
+                 "tracks" :>
+                   Capture "track" EditsTracksPatchTrack :>
+                     QueryParam "alt" AltJSON :>
+                       ReqBody '[JSON] Track :> Patch '[JSON] Track
+
+-- | Updates the track configuration for the specified track type. When
+-- halted, the rollout track cannot be updated without adding new APKs, and
+-- adding new APKs will cause it to resume. This method supports patch
+-- semantics.
+--
+-- /See:/ 'editsTracksPatch' smart constructor.
+data EditsTracksPatch = EditsTracksPatch
+    { _etptTrack       :: !EditsTracksPatchTrack
+    , _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
+    :: EditsTracksPatchTrack -- ^ 'etptTrack'
+    -> Text -- ^ 'etptPackageName'
+    -> Track -- ^ 'etptPayload'
+    -> Text -- ^ 'etptEditId'
+    -> EditsTracksPatch
+editsTracksPatch pEtptTrack_ pEtptPackageName_ pEtptPayload_ pEtptEditId_ =
+    EditsTracksPatch
+    { _etptTrack = pEtptTrack_
+    , _etptPackageName = pEtptPackageName_
+    , _etptPayload = pEtptPayload_
+    , _etptEditId = pEtptEditId_
+    }
+
+-- | The track type to read or modify.
+etptTrack :: Lens' EditsTracksPatch EditsTracksPatchTrack
+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
+        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
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/AndroidPublisher/Edits/Tracks/Update.hs
@@ -0,0 +1,129 @@
+{-# 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 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. When
+-- halted, the rollout track cannot be updated without adding new APKs, and
+-- adding new APKs will cause it to resume.
+--
+-- /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" :>
+       "v2" :>
+         "applications" :>
+           Capture "packageName" Text :>
+             "edits" :>
+               Capture "editId" Text :>
+                 "tracks" :>
+                   Capture "track" EditsTracksUpdateTrack :>
+                     QueryParam "alt" AltJSON :>
+                       ReqBody '[JSON] Track :> Put '[JSON] Track
+
+-- | Updates the track configuration for the specified track type. When
+-- halted, the rollout track cannot be updated without adding new APKs, and
+-- adding new APKs will cause it to resume.
+--
+-- /See:/ 'editsTracksUpdate' smart constructor.
+data EditsTracksUpdate = EditsTracksUpdate
+    { _etuTrack       :: !EditsTracksUpdateTrack
+    , _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
+    :: EditsTracksUpdateTrack -- ^ 'etuTrack'
+    -> Text -- ^ 'etuPackageName'
+    -> Track -- ^ 'etuPayload'
+    -> Text -- ^ 'etuEditId'
+    -> EditsTracksUpdate
+editsTracksUpdate pEtuTrack_ pEtuPackageName_ pEtuPayload_ pEtuEditId_ =
+    EditsTracksUpdate
+    { _etuTrack = pEtuTrack_
+    , _etuPackageName = pEtuPackageName_
+    , _etuPayload = pEtuPayload_
+    , _etuEditId = pEtuEditId_
+    }
+
+-- | The track type to read or modify.
+etuTrack :: Lens' EditsTracksUpdate EditsTracksUpdateTrack
+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
+        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
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/AndroidPublisher/Edits/Validate.hs
@@ -0,0 +1,99 @@
+{-# LANGUAGE DataKinds          #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE FlexibleInstances  #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+{-# LANGUAGE TypeOperators      #-}
+
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
+
+-- |
+-- Module      : Network.Google.Resource.AndroidPublisher.Edits.Validate
+-- Copyright   : (c) 2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- 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" :>
+       "v2" :>
+         "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
+        requestClient EditsValidate{..}
+          = go _evPackageName _evEditId (Just AltJSON)
+              androidPublisherService
+          where go
+                  = buildClient (Proxy :: Proxy EditsValidateResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/AndroidPublisher/Entitlements/List.hs b/gen/Network/Google/Resource/AndroidPublisher/Entitlements/List.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/AndroidPublisher/Entitlements/List.hs
@@ -0,0 +1,134 @@
+{-# LANGUAGE DataKinds          #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE FlexibleInstances  #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+{-# LANGUAGE TypeOperators      #-}
+
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
+
+-- |
+-- Module      : Network.Google.Resource.AndroidPublisher.Entitlements.List
+-- Copyright   : (c) 2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Lists the user\'s current inapp item or subscription entitlements
+--
+-- /See:/ <https://developers.google.com/android-publisher Google Play Developer API Reference> for @androidpublisher.entitlements.list@.
+module Network.Google.Resource.AndroidPublisher.Entitlements.List
+    (
+    -- * REST Resource
+      EntitlementsListResource
+
+    -- * Creating a Request
+    , entitlementsList
+    , EntitlementsList
+
+    -- * Request Lenses
+    , elPackageName
+    , elToken
+    , elStartIndex
+    , elProductId
+    , elMaxResults
+    ) where
+
+import           Network.Google.AndroidPublisher.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @androidpublisher.entitlements.list@ method which the
+-- 'EntitlementsList' request conforms to.
+type EntitlementsListResource =
+     "androidpublisher" :>
+       "v2" :>
+         "applications" :>
+           Capture "packageName" Text :>
+             "entitlements" :>
+               QueryParam "token" Text :>
+                 QueryParam "startIndex" (Textual Word32) :>
+                   QueryParam "productId" Text :>
+                     QueryParam "maxResults" (Textual Word32) :>
+                       QueryParam "alt" AltJSON :>
+                         Get '[JSON] EntitlementsListResponse
+
+-- | Lists the user\'s current inapp item or subscription entitlements
+--
+-- /See:/ 'entitlementsList' smart constructor.
+data EntitlementsList = EntitlementsList
+    { _elPackageName :: !Text
+    , _elToken       :: !(Maybe Text)
+    , _elStartIndex  :: !(Maybe (Textual Word32))
+    , _elProductId   :: !(Maybe Text)
+    , _elMaxResults  :: !(Maybe (Textual Word32))
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'EntitlementsList' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'elPackageName'
+--
+-- * 'elToken'
+--
+-- * 'elStartIndex'
+--
+-- * 'elProductId'
+--
+-- * 'elMaxResults'
+entitlementsList
+    :: Text -- ^ 'elPackageName'
+    -> EntitlementsList
+entitlementsList pElPackageName_ =
+    EntitlementsList
+    { _elPackageName = pElPackageName_
+    , _elToken = Nothing
+    , _elStartIndex = Nothing
+    , _elProductId = Nothing
+    , _elMaxResults = Nothing
+    }
+
+-- | The package name of the application the inapp product was sold in (for
+-- example, \'com.some.thing\').
+elPackageName :: Lens' EntitlementsList Text
+elPackageName
+  = lens _elPackageName
+      (\ s a -> s{_elPackageName = a})
+
+elToken :: Lens' EntitlementsList (Maybe Text)
+elToken = lens _elToken (\ s a -> s{_elToken = a})
+
+elStartIndex :: Lens' EntitlementsList (Maybe Word32)
+elStartIndex
+  = lens _elStartIndex (\ s a -> s{_elStartIndex = a})
+      . mapping _Coerce
+
+-- | The product id of the inapp product (for example, \'sku1\'). This can be
+-- used to restrict the result set.
+elProductId :: Lens' EntitlementsList (Maybe Text)
+elProductId
+  = lens _elProductId (\ s a -> s{_elProductId = a})
+
+elMaxResults :: Lens' EntitlementsList (Maybe Word32)
+elMaxResults
+  = lens _elMaxResults (\ s a -> s{_elMaxResults = a})
+      . mapping _Coerce
+
+instance GoogleRequest EntitlementsList where
+        type Rs EntitlementsList = EntitlementsListResponse
+        requestClient EntitlementsList{..}
+          = go _elPackageName _elToken _elStartIndex
+              _elProductId
+              _elMaxResults
+              (Just AltJSON)
+              androidPublisherService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy EntitlementsListResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/AndroidPublisher/InAppProducts/Batch.hs b/gen/Network/Google/Resource/AndroidPublisher/InAppProducts/Batch.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/AndroidPublisher/InAppProducts/Batch.hs
@@ -0,0 +1,85 @@
+{-# LANGUAGE DataKinds          #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE FlexibleInstances  #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+{-# LANGUAGE TypeOperators      #-}
+
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
+
+-- |
+-- Module      : Network.Google.Resource.AndroidPublisher.InAppProducts.Batch
+-- Copyright   : (c) 2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- /See:/ <https://developers.google.com/android-publisher Google Play Developer API Reference> for @androidpublisher.inappproducts.batch@.
+module Network.Google.Resource.AndroidPublisher.InAppProducts.Batch
+    (
+    -- * REST Resource
+      InAppProductsBatchResource
+
+    -- * Creating a Request
+    , inAppProductsBatch
+    , InAppProductsBatch
+
+    -- * Request Lenses
+    , iapbPayload
+    ) where
+
+import           Network.Google.AndroidPublisher.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @androidpublisher.inappproducts.batch@ method which the
+-- 'InAppProductsBatch' request conforms to.
+type InAppProductsBatchResource =
+     "androidpublisher" :>
+       "v2" :>
+         "applications" :>
+           "inappproducts" :>
+             "batch" :>
+               QueryParam "alt" AltJSON :>
+                 ReqBody '[JSON] InAppProductsBatchRequest :>
+                   Post '[JSON] InAppProductsBatchResponse
+
+--
+-- /See:/ 'inAppProductsBatch' smart constructor.
+newtype InAppProductsBatch = InAppProductsBatch
+    { _iapbPayload :: InAppProductsBatchRequest
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'InAppProductsBatch' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'iapbPayload'
+inAppProductsBatch
+    :: InAppProductsBatchRequest -- ^ 'iapbPayload'
+    -> InAppProductsBatch
+inAppProductsBatch pIapbPayload_ =
+    InAppProductsBatch
+    { _iapbPayload = pIapbPayload_
+    }
+
+-- | Multipart request metadata.
+iapbPayload :: Lens' InAppProductsBatch InAppProductsBatchRequest
+iapbPayload
+  = lens _iapbPayload (\ s a -> s{_iapbPayload = a})
+
+instance GoogleRequest InAppProductsBatch where
+        type Rs InAppProductsBatch =
+             InAppProductsBatchResponse
+        requestClient InAppProductsBatch{..}
+          = go (Just AltJSON) _iapbPayload
+              androidPublisherService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy InAppProductsBatchResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/AndroidPublisher/InAppProducts/Delete.hs b/gen/Network/Google/Resource/AndroidPublisher/InAppProducts/Delete.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/AndroidPublisher/InAppProducts/Delete.hs
@@ -0,0 +1,98 @@
+{-# 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 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" :>
+       "v2" :>
+         "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 = ()
+        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
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/AndroidPublisher/InAppProducts/Get.hs
@@ -0,0 +1,96 @@
+{-# 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 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" :>
+       "v2" :>
+         "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
+        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
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/AndroidPublisher/InAppProducts/Insert.hs
@@ -0,0 +1,116 @@
+{-# LANGUAGE DataKinds          #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE FlexibleInstances  #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+{-# LANGUAGE TypeOperators      #-}
+
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
+
+-- |
+-- Module      : Network.Google.Resource.AndroidPublisher.InAppProducts.Insert
+-- Copyright   : (c) 2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- 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" :>
+       "v2" :>
+         "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
+        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
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/AndroidPublisher/InAppProducts/List.hs
@@ -0,0 +1,126 @@
+{-# 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 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" :>
+       "v2" :>
+         "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
+        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
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/AndroidPublisher/InAppProducts/Patch.hs
@@ -0,0 +1,131 @@
+{-# 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 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" :>
+       "v2" :>
+         "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
+        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
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/AndroidPublisher/InAppProducts/Update.hs
@@ -0,0 +1,129 @@
+{-# 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 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" :>
+       "v2" :>
+         "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
+        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/Purchases/Products/Get.hs b/gen/Network/Google/Resource/AndroidPublisher/Purchases/Products/Get.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/AndroidPublisher/Purchases/Products/Get.hs
@@ -0,0 +1,115 @@
+{-# 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 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" :>
+       "v2" :>
+         "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
+        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
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/AndroidPublisher/Purchases/Subscriptions/Cancel.hs
@@ -0,0 +1,118 @@
+{-# 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 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" :>
+       "v2" :>
+         "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 = ()
+        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
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/AndroidPublisher/Purchases/Subscriptions/Defer.hs
@@ -0,0 +1,133 @@
+{-# 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 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" :>
+       "v2" :>
+         "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
+        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
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/AndroidPublisher/Purchases/Subscriptions/Get.hs
@@ -0,0 +1,120 @@
+{-# 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 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" :>
+       "v2" :>
+         "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
+        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
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/AndroidPublisher/Purchases/Subscriptions/Refund.hs
@@ -0,0 +1,118 @@
+{-# 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 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" :>
+       "v2" :>
+         "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 = ()
+        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
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/AndroidPublisher/Purchases/Subscriptions/Revoke.hs
@@ -0,0 +1,119 @@
+{-# 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 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" :>
+       "v2" :>
+         "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 = ()
+        requestClient PurchasesSubscriptionsRevoke{..}
+          = go _pPackageName _pSubscriptionId _pToken
+              (Just AltJSON)
+              androidPublisherService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy PurchasesSubscriptionsRevokeResource)
+                      mempty
diff --git a/gogol-android-publisher.cabal b/gogol-android-publisher.cabal
new file mode 100644
--- /dev/null
+++ b/gogol-android-publisher.cabal
@@ -0,0 +1,97 @@
+name:                  gogol-android-publisher
+version:               0.0.1
+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 Brendan Hay
+category:              Network, Google, Cloud
+build-type:            Simple
+cabal-version:         >= 1.10
+extra-source-files:    README.md
+
+description:
+    Lets Android application developers access their Google Play accounts.
+    .
+    /Warning:/ This is an experimental prototype/preview release which is still
+    under exploratory development and not intended for public use, caveat emptor!
+    .
+    This library is compatible with version @v2@
+    of the API.
+
+source-repository head
+    type:     git
+    location: git://github.com/brendanhay/gogol.git
+
+library
+    default-language:  Haskell2010
+    hs-source-dirs:    src gen
+
+    ghc-options:       -Wall
+
+    exposed-modules:
+          Network.Google.AndroidPublisher
+        , Network.Google.AndroidPublisher.Types
+        , Network.Google.Resource.AndroidPublisher.Edits.APKListings.Delete
+        , Network.Google.Resource.AndroidPublisher.Edits.APKListings.Deleteall
+        , Network.Google.Resource.AndroidPublisher.Edits.APKListings.Get
+        , Network.Google.Resource.AndroidPublisher.Edits.APKListings.List
+        , Network.Google.Resource.AndroidPublisher.Edits.APKListings.Patch
+        , Network.Google.Resource.AndroidPublisher.Edits.APKListings.Update
+        , Network.Google.Resource.AndroidPublisher.Edits.APKs.Addexternallyhosted
+        , Network.Google.Resource.AndroidPublisher.Edits.APKs.List
+        , Network.Google.Resource.AndroidPublisher.Edits.APKs.Upload
+        , Network.Google.Resource.AndroidPublisher.Edits.Commit
+        , Network.Google.Resource.AndroidPublisher.Edits.Delete
+        , 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.Entitlements.List
+        , Network.Google.Resource.AndroidPublisher.InAppProducts.Batch
+        , Network.Google.Resource.AndroidPublisher.InAppProducts.Delete
+        , Network.Google.Resource.AndroidPublisher.InAppProducts.Get
+        , Network.Google.Resource.AndroidPublisher.InAppProducts.Insert
+        , Network.Google.Resource.AndroidPublisher.InAppProducts.List
+        , Network.Google.Resource.AndroidPublisher.InAppProducts.Patch
+        , Network.Google.Resource.AndroidPublisher.InAppProducts.Update
+        , Network.Google.Resource.AndroidPublisher.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
+
+    other-modules:
+          Network.Google.AndroidPublisher.Types.Product
+        , Network.Google.AndroidPublisher.Types.Sum
+
+    build-depends:
+          gogol-core == 0.0.1.*
+        , base       >= 4.7 && < 5
