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-adsense
+
+* [Version](#version)
+* [Description](#description)
+* [Contribute](#contribute)
+* [Licence](#licence)
+
+
+## Version
+
+`0.0.1`
+
+
+## Description
+
+A client library for the Google AdSense Management.
+
+
+## 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-adsense` 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/AdSense.hs b/gen/Network/Google/AdSense.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/AdSense.hs
@@ -0,0 +1,488 @@
+{-# LANGUAGE DataKinds         #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# LANGUAGE TypeOperators     #-}
+
+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+
+-- |
+-- Module      : Network.Google.AdSense
+-- 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)
+--
+-- Gives AdSense publishers access to their inventory and the ability to
+-- generate reports
+--
+-- /See:/ <https://developers.google.com/adsense/management/ AdSense Management API Reference>
+module Network.Google.AdSense
+    (
+    -- * Service Configuration
+      adSenseService
+
+    -- * API Declaration
+    , AdSenseAPI
+
+    -- * Resources
+
+    -- ** adsense.accounts.adclients.list
+    , module Network.Google.Resource.AdSense.Accounts.AdClients.List
+
+    -- ** adsense.accounts.adunits.customchannels.list
+    , module Network.Google.Resource.AdSense.Accounts.AdUnits.CustomChannels.List
+
+    -- ** adsense.accounts.adunits.get
+    , module Network.Google.Resource.AdSense.Accounts.AdUnits.Get
+
+    -- ** adsense.accounts.adunits.getAdCode
+    , module Network.Google.Resource.AdSense.Accounts.AdUnits.GetAdCode
+
+    -- ** adsense.accounts.adunits.list
+    , module Network.Google.Resource.AdSense.Accounts.AdUnits.List
+
+    -- ** adsense.accounts.alerts.delete
+    , module Network.Google.Resource.AdSense.Accounts.Alerts.Delete
+
+    -- ** adsense.accounts.alerts.list
+    , module Network.Google.Resource.AdSense.Accounts.Alerts.List
+
+    -- ** adsense.accounts.customchannels.adunits.list
+    , module Network.Google.Resource.AdSense.Accounts.CustomChannels.AdUnits.List
+
+    -- ** adsense.accounts.customchannels.get
+    , module Network.Google.Resource.AdSense.Accounts.CustomChannels.Get
+
+    -- ** adsense.accounts.customchannels.list
+    , module Network.Google.Resource.AdSense.Accounts.CustomChannels.List
+
+    -- ** adsense.accounts.get
+    , module Network.Google.Resource.AdSense.Accounts.Get
+
+    -- ** adsense.accounts.list
+    , module Network.Google.Resource.AdSense.Accounts.List
+
+    -- ** adsense.accounts.payments.list
+    , module Network.Google.Resource.AdSense.Accounts.Payments.List
+
+    -- ** adsense.accounts.reports.generate
+    , module Network.Google.Resource.AdSense.Accounts.Reports.Generate
+
+    -- ** adsense.accounts.reports.saved.generate
+    , module Network.Google.Resource.AdSense.Accounts.Reports.Saved.Generate
+
+    -- ** adsense.accounts.reports.saved.list
+    , module Network.Google.Resource.AdSense.Accounts.Reports.Saved.List
+
+    -- ** adsense.accounts.savedadstyles.get
+    , module Network.Google.Resource.AdSense.Accounts.Savedadstyles.Get
+
+    -- ** adsense.accounts.savedadstyles.list
+    , module Network.Google.Resource.AdSense.Accounts.Savedadstyles.List
+
+    -- ** adsense.accounts.urlchannels.list
+    , module Network.Google.Resource.AdSense.Accounts.URLChannels.List
+
+    -- ** adsense.adclients.list
+    , module Network.Google.Resource.AdSense.AdClients.List
+
+    -- ** adsense.adunits.customchannels.list
+    , module Network.Google.Resource.AdSense.AdUnits.CustomChannels.List
+
+    -- ** adsense.adunits.get
+    , module Network.Google.Resource.AdSense.AdUnits.Get
+
+    -- ** adsense.adunits.getAdCode
+    , module Network.Google.Resource.AdSense.AdUnits.GetAdCode
+
+    -- ** adsense.adunits.list
+    , module Network.Google.Resource.AdSense.AdUnits.List
+
+    -- ** adsense.alerts.delete
+    , module Network.Google.Resource.AdSense.Alerts.Delete
+
+    -- ** adsense.alerts.list
+    , module Network.Google.Resource.AdSense.Alerts.List
+
+    -- ** adsense.customchannels.adunits.list
+    , module Network.Google.Resource.AdSense.CustomChannels.AdUnits.List
+
+    -- ** adsense.customchannels.get
+    , module Network.Google.Resource.AdSense.CustomChannels.Get
+
+    -- ** adsense.customchannels.list
+    , module Network.Google.Resource.AdSense.CustomChannels.List
+
+    -- ** adsense.metadata.dimensions.list
+    , module Network.Google.Resource.AdSense.Metadata.Dimensions.List
+
+    -- ** adsense.metadata.metrics.list
+    , module Network.Google.Resource.AdSense.Metadata.Metrics.List
+
+    -- ** adsense.payments.list
+    , module Network.Google.Resource.AdSense.Payments.List
+
+    -- ** adsense.reports.generate
+    , module Network.Google.Resource.AdSense.Reports.Generate
+
+    -- ** adsense.reports.saved.generate
+    , module Network.Google.Resource.AdSense.Reports.Saved.Generate
+
+    -- ** adsense.reports.saved.list
+    , module Network.Google.Resource.AdSense.Reports.Saved.List
+
+    -- ** adsense.savedadstyles.get
+    , module Network.Google.Resource.AdSense.Savedadstyles.Get
+
+    -- ** adsense.savedadstyles.list
+    , module Network.Google.Resource.AdSense.Savedadstyles.List
+
+    -- ** adsense.urlchannels.list
+    , module Network.Google.Resource.AdSense.URLChannels.List
+
+    -- * Types
+
+    -- ** AdClients
+    , AdClients
+    , adClients
+    , acEtag
+    , acNextPageToken
+    , acKind
+    , acItems
+
+    -- ** ReportingMetadataEntry
+    , ReportingMetadataEntry
+    , reportingMetadataEntry
+    , rmeKind
+    , rmeRequiredMetrics
+    , rmeCompatibleMetrics
+    , rmeRequiredDimensions
+    , rmeId
+    , rmeCompatibleDimensions
+    , rmeSupportedProducts
+
+    -- ** AdsenseReportsGenerateResponseHeadersItem
+    , AdsenseReportsGenerateResponseHeadersItem
+    , adsenseReportsGenerateResponseHeadersItem
+    , argrhiName
+    , argrhiCurrency
+    , argrhiType
+
+    -- ** Payment
+    , Payment
+    , payment
+    , pPaymentAmountCurrencyCode
+    , pKind
+    , pPaymentDate
+    , pId
+    , pPaymentAmount
+
+    -- ** Accounts
+    , Accounts
+    , accounts
+    , aEtag
+    , aNextPageToken
+    , aKind
+    , aItems
+
+    -- ** Alerts
+    , Alerts
+    , alerts
+    , aleKind
+    , aleItems
+
+    -- ** SavedReports
+    , SavedReports
+    , savedReports
+    , srEtag
+    , srNextPageToken
+    , srKind
+    , srItems
+
+    -- ** AdUnits
+    , AdUnits
+    , adUnits
+    , auEtag
+    , auNextPageToken
+    , auKind
+    , auItems
+
+    -- ** SavedReport
+    , SavedReport
+    , savedReport
+    , sKind
+    , sName
+    , sId
+
+    -- ** URLChannels
+    , URLChannels
+    , urlChannels
+    , ucEtag
+    , ucNextPageToken
+    , ucKind
+    , ucItems
+
+    -- ** CustomChannels
+    , CustomChannels
+    , customChannels
+    , ccEtag
+    , ccNextPageToken
+    , ccKind
+    , ccItems
+
+    -- ** AdUnit
+    , AdUnit
+    , adUnit
+    , auuStatus
+    , auuMobileContentAdsSettings
+    , auuKind
+    , auuFeedAdsSettings
+    , auuCustomStyle
+    , auuSavedStyleId
+    , auuName
+    , auuContentAdsSettings
+    , auuCode
+    , auuId
+
+    -- ** Alert
+    , Alert
+    , alert
+    , aaIsDismissible
+    , aaKind
+    , aaSeverity
+    , aaId
+    , aaType
+    , aaMessage
+
+    -- ** AdStyleFont
+    , AdStyleFont
+    , adStyleFont
+    , asfSize
+    , asfFamily
+
+    -- ** Account
+    , Account
+    , account
+    , accKind
+    , accCreationTime
+    , accPremium
+    , accName
+    , accId
+    , accTimezone
+    , accSubAccounts
+
+    -- ** AdUnitMobileContentAdsSettings
+    , AdUnitMobileContentAdsSettings
+    , adUnitMobileContentAdsSettings
+    , aumcasSize
+    , aumcasScriptingLanguage
+    , aumcasMarkupLanguage
+    , aumcasType
+
+    -- ** SavedAdStyles
+    , SavedAdStyles
+    , savedAdStyles
+    , sasEtag
+    , sasNextPageToken
+    , sasKind
+    , sasItems
+
+    -- ** AdStyleColors
+    , AdStyleColors
+    , adStyleColors
+    , ascText
+    , ascURL
+    , ascBOrder
+    , ascTitle
+    , ascBackgRound
+
+    -- ** AdUnitContentAdsSettingsBackupOption
+    , AdUnitContentAdsSettingsBackupOption
+    , adUnitContentAdsSettingsBackupOption
+    , aucasboColor
+    , aucasboURL
+    , aucasboType
+
+    -- ** AdClient
+    , AdClient
+    , adClient
+    , adKind
+    , adArcOptIn
+    , adSupportsReporting
+    , adId
+    , adProductCode
+    , adArcReviewMode
+
+    -- ** SavedAdStyle
+    , SavedAdStyle
+    , savedAdStyle
+    , savKind
+    , savName
+    , savAdStyle
+    , savId
+
+    -- ** CustomChannelTargetingInfo
+    , CustomChannelTargetingInfo
+    , customChannelTargetingInfo
+    , cctiLocation
+    , cctiSiteLanguage
+    , cctiAdsAppearOn
+    , cctiDescription
+
+    -- ** AdStyle
+    , AdStyle
+    , adStyle
+    , asCorners
+    , asKind
+    , asFont
+    , asColors
+
+    -- ** AdUnitFeedAdsSettings
+    , AdUnitFeedAdsSettings
+    , adUnitFeedAdsSettings
+    , aufasFrequency
+    , aufasAdPosition
+    , aufasType
+    , aufasMinimumWordCount
+
+    -- ** Metadata
+    , Metadata
+    , metadata
+    , mKind
+    , mItems
+
+    -- ** CustomChannel
+    , CustomChannel
+    , customChannel
+    , cTargetingInfo
+    , cKind
+    , cName
+    , cCode
+    , cId
+
+    -- ** URLChannel
+    , URLChannel
+    , urlChannel
+    , urlcKind
+    , urlcId
+    , urlcURLPattern
+
+    -- ** AdCode
+    , AdCode
+    , adCode
+    , addKind
+    , addAdCode
+
+    -- ** AdsenseReportsGenerateResponse
+    , AdsenseReportsGenerateResponse
+    , adsenseReportsGenerateResponse
+    , argrKind
+    , argrAverages
+    , argrEndDate
+    , argrWarnings
+    , argrRows
+    , argrTotals
+    , argrStartDate
+    , argrHeaders
+    , argrTotalMatchedRows
+
+    -- ** AdUnitContentAdsSettings
+    , AdUnitContentAdsSettings
+    , adUnitContentAdsSettings
+    , aucasBackupOption
+    , aucasSize
+    , aucasType
+
+    -- ** Payments
+    , Payments
+    , payments
+    , payKind
+    , payItems
+    ) where
+
+import           Network.Google.AdSense.Types
+import           Network.Google.Prelude
+import           Network.Google.Resource.AdSense.Accounts.AdClients.List
+import           Network.Google.Resource.AdSense.Accounts.AdUnits.CustomChannels.List
+import           Network.Google.Resource.AdSense.Accounts.AdUnits.Get
+import           Network.Google.Resource.AdSense.Accounts.AdUnits.GetAdCode
+import           Network.Google.Resource.AdSense.Accounts.AdUnits.List
+import           Network.Google.Resource.AdSense.Accounts.Alerts.Delete
+import           Network.Google.Resource.AdSense.Accounts.Alerts.List
+import           Network.Google.Resource.AdSense.Accounts.CustomChannels.AdUnits.List
+import           Network.Google.Resource.AdSense.Accounts.CustomChannels.Get
+import           Network.Google.Resource.AdSense.Accounts.CustomChannels.List
+import           Network.Google.Resource.AdSense.Accounts.Get
+import           Network.Google.Resource.AdSense.Accounts.List
+import           Network.Google.Resource.AdSense.Accounts.Payments.List
+import           Network.Google.Resource.AdSense.Accounts.Reports.Generate
+import           Network.Google.Resource.AdSense.Accounts.Reports.Saved.Generate
+import           Network.Google.Resource.AdSense.Accounts.Reports.Saved.List
+import           Network.Google.Resource.AdSense.Accounts.Savedadstyles.Get
+import           Network.Google.Resource.AdSense.Accounts.Savedadstyles.List
+import           Network.Google.Resource.AdSense.Accounts.URLChannels.List
+import           Network.Google.Resource.AdSense.AdClients.List
+import           Network.Google.Resource.AdSense.AdUnits.CustomChannels.List
+import           Network.Google.Resource.AdSense.AdUnits.Get
+import           Network.Google.Resource.AdSense.AdUnits.GetAdCode
+import           Network.Google.Resource.AdSense.AdUnits.List
+import           Network.Google.Resource.AdSense.Alerts.Delete
+import           Network.Google.Resource.AdSense.Alerts.List
+import           Network.Google.Resource.AdSense.CustomChannels.AdUnits.List
+import           Network.Google.Resource.AdSense.CustomChannels.Get
+import           Network.Google.Resource.AdSense.CustomChannels.List
+import           Network.Google.Resource.AdSense.Metadata.Dimensions.List
+import           Network.Google.Resource.AdSense.Metadata.Metrics.List
+import           Network.Google.Resource.AdSense.Payments.List
+import           Network.Google.Resource.AdSense.Reports.Generate
+import           Network.Google.Resource.AdSense.Reports.Saved.Generate
+import           Network.Google.Resource.AdSense.Reports.Saved.List
+import           Network.Google.Resource.AdSense.Savedadstyles.Get
+import           Network.Google.Resource.AdSense.Savedadstyles.List
+import           Network.Google.Resource.AdSense.URLChannels.List
+
+{- $resources
+TODO
+-}
+
+-- | Represents the entirety of the methods and resources available for the AdSense Management API service.
+type AdSenseAPI =
+     AdClientsListResource :<|>
+       AccountsAdClientsListResource
+       :<|> AccountsReportsSavedListResource
+       :<|> AccountsReportsSavedGenerateResource
+       :<|> AccountsReportsGenerateResource
+       :<|> AccountsAlertsListResource
+       :<|> AccountsAlertsDeleteResource
+       :<|> AccountsAdUnitsCustomChannelsListResource
+       :<|> AccountsAdUnitsListResource
+       :<|> AccountsAdUnitsGetResource
+       :<|> AccountsAdUnitsGetAdCodeResource
+       :<|> AccountsURLChannelsListResource
+       :<|> AccountsCustomChannelsAdUnitsListResource
+       :<|> AccountsCustomChannelsListResource
+       :<|> AccountsCustomChannelsGetResource
+       :<|> AccountsSavedadstylesListResource
+       :<|> AccountsSavedadstylesGetResource
+       :<|> AccountsPaymentsListResource
+       :<|> AccountsListResource
+       :<|> AccountsGetResource
+       :<|> ReportsSavedListResource
+       :<|> ReportsSavedGenerateResource
+       :<|> ReportsGenerateResource
+       :<|> AlertsListResource
+       :<|> AlertsDeleteResource
+       :<|> AdUnitsCustomChannelsListResource
+       :<|> AdUnitsListResource
+       :<|> AdUnitsGetResource
+       :<|> AdUnitsGetAdCodeResource
+       :<|> URLChannelsListResource
+       :<|> CustomChannelsAdUnitsListResource
+       :<|> CustomChannelsListResource
+       :<|> CustomChannelsGetResource
+       :<|> SavedadstylesListResource
+       :<|> SavedadstylesGetResource
+       :<|> MetadataMetricsListResource
+       :<|> MetadataDimensionsListResource
+       :<|> PaymentsListResource
diff --git a/gen/Network/Google/AdSense/Types.hs b/gen/Network/Google/AdSense/Types.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/AdSense/Types.hs
@@ -0,0 +1,299 @@
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- |
+-- Module      : Network.Google.AdSense.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.AdSense.Types
+    (
+    -- * Service Configuration
+      adSenseService
+
+    -- * OAuth Scopes
+    , adsenseReadonlyScope
+    , adsenseScope
+
+    -- * AdClients
+    , AdClients
+    , adClients
+    , acEtag
+    , acNextPageToken
+    , acKind
+    , acItems
+
+    -- * ReportingMetadataEntry
+    , ReportingMetadataEntry
+    , reportingMetadataEntry
+    , rmeKind
+    , rmeRequiredMetrics
+    , rmeCompatibleMetrics
+    , rmeRequiredDimensions
+    , rmeId
+    , rmeCompatibleDimensions
+    , rmeSupportedProducts
+
+    -- * AdsenseReportsGenerateResponseHeadersItem
+    , AdsenseReportsGenerateResponseHeadersItem
+    , adsenseReportsGenerateResponseHeadersItem
+    , argrhiName
+    , argrhiCurrency
+    , argrhiType
+
+    -- * Payment
+    , Payment
+    , payment
+    , pPaymentAmountCurrencyCode
+    , pKind
+    , pPaymentDate
+    , pId
+    , pPaymentAmount
+
+    -- * Accounts
+    , Accounts
+    , accounts
+    , aEtag
+    , aNextPageToken
+    , aKind
+    , aItems
+
+    -- * Alerts
+    , Alerts
+    , alerts
+    , aleKind
+    , aleItems
+
+    -- * SavedReports
+    , SavedReports
+    , savedReports
+    , srEtag
+    , srNextPageToken
+    , srKind
+    , srItems
+
+    -- * AdUnits
+    , AdUnits
+    , adUnits
+    , auEtag
+    , auNextPageToken
+    , auKind
+    , auItems
+
+    -- * SavedReport
+    , SavedReport
+    , savedReport
+    , sKind
+    , sName
+    , sId
+
+    -- * URLChannels
+    , URLChannels
+    , urlChannels
+    , ucEtag
+    , ucNextPageToken
+    , ucKind
+    , ucItems
+
+    -- * CustomChannels
+    , CustomChannels
+    , customChannels
+    , ccEtag
+    , ccNextPageToken
+    , ccKind
+    , ccItems
+
+    -- * AdUnit
+    , AdUnit
+    , adUnit
+    , auuStatus
+    , auuMobileContentAdsSettings
+    , auuKind
+    , auuFeedAdsSettings
+    , auuCustomStyle
+    , auuSavedStyleId
+    , auuName
+    , auuContentAdsSettings
+    , auuCode
+    , auuId
+
+    -- * Alert
+    , Alert
+    , alert
+    , aaIsDismissible
+    , aaKind
+    , aaSeverity
+    , aaId
+    , aaType
+    , aaMessage
+
+    -- * AdStyleFont
+    , AdStyleFont
+    , adStyleFont
+    , asfSize
+    , asfFamily
+
+    -- * Account
+    , Account
+    , account
+    , accKind
+    , accCreationTime
+    , accPremium
+    , accName
+    , accId
+    , accTimezone
+    , accSubAccounts
+
+    -- * AdUnitMobileContentAdsSettings
+    , AdUnitMobileContentAdsSettings
+    , adUnitMobileContentAdsSettings
+    , aumcasSize
+    , aumcasScriptingLanguage
+    , aumcasMarkupLanguage
+    , aumcasType
+
+    -- * SavedAdStyles
+    , SavedAdStyles
+    , savedAdStyles
+    , sasEtag
+    , sasNextPageToken
+    , sasKind
+    , sasItems
+
+    -- * AdStyleColors
+    , AdStyleColors
+    , adStyleColors
+    , ascText
+    , ascURL
+    , ascBOrder
+    , ascTitle
+    , ascBackgRound
+
+    -- * AdUnitContentAdsSettingsBackupOption
+    , AdUnitContentAdsSettingsBackupOption
+    , adUnitContentAdsSettingsBackupOption
+    , aucasboColor
+    , aucasboURL
+    , aucasboType
+
+    -- * AdClient
+    , AdClient
+    , adClient
+    , adKind
+    , adArcOptIn
+    , adSupportsReporting
+    , adId
+    , adProductCode
+    , adArcReviewMode
+
+    -- * SavedAdStyle
+    , SavedAdStyle
+    , savedAdStyle
+    , savKind
+    , savName
+    , savAdStyle
+    , savId
+
+    -- * CustomChannelTargetingInfo
+    , CustomChannelTargetingInfo
+    , customChannelTargetingInfo
+    , cctiLocation
+    , cctiSiteLanguage
+    , cctiAdsAppearOn
+    , cctiDescription
+
+    -- * AdStyle
+    , AdStyle
+    , adStyle
+    , asCorners
+    , asKind
+    , asFont
+    , asColors
+
+    -- * AdUnitFeedAdsSettings
+    , AdUnitFeedAdsSettings
+    , adUnitFeedAdsSettings
+    , aufasFrequency
+    , aufasAdPosition
+    , aufasType
+    , aufasMinimumWordCount
+
+    -- * Metadata
+    , Metadata
+    , metadata
+    , mKind
+    , mItems
+
+    -- * CustomChannel
+    , CustomChannel
+    , customChannel
+    , cTargetingInfo
+    , cKind
+    , cName
+    , cCode
+    , cId
+
+    -- * URLChannel
+    , URLChannel
+    , urlChannel
+    , urlcKind
+    , urlcId
+    , urlcURLPattern
+
+    -- * AdCode
+    , AdCode
+    , adCode
+    , addKind
+    , addAdCode
+
+    -- * AdsenseReportsGenerateResponse
+    , AdsenseReportsGenerateResponse
+    , adsenseReportsGenerateResponse
+    , argrKind
+    , argrAverages
+    , argrEndDate
+    , argrWarnings
+    , argrRows
+    , argrTotals
+    , argrStartDate
+    , argrHeaders
+    , argrTotalMatchedRows
+
+    -- * AdUnitContentAdsSettings
+    , AdUnitContentAdsSettings
+    , adUnitContentAdsSettings
+    , aucasBackupOption
+    , aucasSize
+    , aucasType
+
+    -- * Payments
+    , Payments
+    , payments
+    , payKind
+    , payItems
+    ) where
+
+import           Network.Google.AdSense.Types.Product
+import           Network.Google.AdSense.Types.Sum
+import           Network.Google.Prelude
+
+-- | Default request referring to version 'v1.4' of the AdSense Management API. This contains the host and root path used as a starting point for constructing service requests.
+adSenseService :: Service
+adSenseService
+  = defaultService (ServiceId "adsense:v1.4")
+      "www.googleapis.com"
+
+-- | View your AdSense data
+adsenseReadonlyScope :: OAuthScope
+adsenseReadonlyScope = "https://www.googleapis.com/auth/adsense.readonly";
+
+-- | View and manage your AdSense data
+adsenseScope :: OAuthScope
+adsenseScope = "https://www.googleapis.com/auth/adsense";
diff --git a/gen/Network/Google/AdSense/Types/Product.hs b/gen/Network/Google/AdSense/Types/Product.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/AdSense/Types/Product.hs
@@ -0,0 +1,2328 @@
+{-# 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.AdSense.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.AdSense.Types.Product where
+
+import           Network.Google.AdSense.Types.Sum
+import           Network.Google.Prelude
+
+--
+-- /See:/ 'adClients' smart constructor.
+data AdClients = AdClients
+    { _acEtag          :: !(Maybe Text)
+    , _acNextPageToken :: !(Maybe Text)
+    , _acKind          :: !Text
+    , _acItems         :: !(Maybe [AdClient])
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'AdClients' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'acEtag'
+--
+-- * 'acNextPageToken'
+--
+-- * 'acKind'
+--
+-- * 'acItems'
+adClients
+    :: AdClients
+adClients =
+    AdClients
+    { _acEtag = Nothing
+    , _acNextPageToken = Nothing
+    , _acKind = "adsense#adClients"
+    , _acItems = Nothing
+    }
+
+-- | ETag of this response for caching purposes.
+acEtag :: Lens' AdClients (Maybe Text)
+acEtag = lens _acEtag (\ s a -> s{_acEtag = a})
+
+-- | Continuation token used to page through ad clients. To retrieve the next
+-- page of results, set the next request\'s \"pageToken\" value to this.
+acNextPageToken :: Lens' AdClients (Maybe Text)
+acNextPageToken
+  = lens _acNextPageToken
+      (\ s a -> s{_acNextPageToken = a})
+
+-- | Kind of list this is, in this case adsense#adClients.
+acKind :: Lens' AdClients Text
+acKind = lens _acKind (\ s a -> s{_acKind = a})
+
+-- | The ad clients returned in this list response.
+acItems :: Lens' AdClients [AdClient]
+acItems
+  = lens _acItems (\ s a -> s{_acItems = a}) . _Default
+      . _Coerce
+
+instance FromJSON AdClients where
+        parseJSON
+          = withObject "AdClients"
+              (\ o ->
+                 AdClients <$>
+                   (o .:? "etag") <*> (o .:? "nextPageToken") <*>
+                     (o .:? "kind" .!= "adsense#adClients")
+                     <*> (o .:? "items" .!= mempty))
+
+instance ToJSON AdClients where
+        toJSON AdClients{..}
+          = object
+              (catMaybes
+                 [("etag" .=) <$> _acEtag,
+                  ("nextPageToken" .=) <$> _acNextPageToken,
+                  Just ("kind" .= _acKind), ("items" .=) <$> _acItems])
+
+--
+-- /See:/ 'reportingMetadataEntry' smart constructor.
+data ReportingMetadataEntry = ReportingMetadataEntry
+    { _rmeKind                 :: !Text
+    , _rmeRequiredMetrics      :: !(Maybe [Text])
+    , _rmeCompatibleMetrics    :: !(Maybe [Text])
+    , _rmeRequiredDimensions   :: !(Maybe [Text])
+    , _rmeId                   :: !(Maybe Text)
+    , _rmeCompatibleDimensions :: !(Maybe [Text])
+    , _rmeSupportedProducts    :: !(Maybe [Text])
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ReportingMetadataEntry' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'rmeKind'
+--
+-- * 'rmeRequiredMetrics'
+--
+-- * 'rmeCompatibleMetrics'
+--
+-- * 'rmeRequiredDimensions'
+--
+-- * 'rmeId'
+--
+-- * 'rmeCompatibleDimensions'
+--
+-- * 'rmeSupportedProducts'
+reportingMetadataEntry
+    :: ReportingMetadataEntry
+reportingMetadataEntry =
+    ReportingMetadataEntry
+    { _rmeKind = "adsense#reportingMetadataEntry"
+    , _rmeRequiredMetrics = Nothing
+    , _rmeCompatibleMetrics = Nothing
+    , _rmeRequiredDimensions = Nothing
+    , _rmeId = Nothing
+    , _rmeCompatibleDimensions = Nothing
+    , _rmeSupportedProducts = Nothing
+    }
+
+-- | Kind of resource this is, in this case adsense#reportingMetadataEntry.
+rmeKind :: Lens' ReportingMetadataEntry Text
+rmeKind = lens _rmeKind (\ s a -> s{_rmeKind = a})
+
+-- | The names of the metrics which the dimension or metric this reporting
+-- metadata entry describes requires to also be present in order for the
+-- report to be valid. Omitting these will not cause an error or warning,
+-- but may result in data which cannot be correctly interpreted.
+rmeRequiredMetrics :: Lens' ReportingMetadataEntry [Text]
+rmeRequiredMetrics
+  = lens _rmeRequiredMetrics
+      (\ s a -> s{_rmeRequiredMetrics = a})
+      . _Default
+      . _Coerce
+
+-- | The names of the metrics the dimension or metric this reporting metadata
+-- entry describes is compatible with.
+rmeCompatibleMetrics :: Lens' ReportingMetadataEntry [Text]
+rmeCompatibleMetrics
+  = lens _rmeCompatibleMetrics
+      (\ s a -> s{_rmeCompatibleMetrics = a})
+      . _Default
+      . _Coerce
+
+-- | The names of the dimensions which the dimension or metric this reporting
+-- metadata entry describes requires to also be present in order for the
+-- report to be valid. Omitting these will not cause an error or warning,
+-- but may result in data which cannot be correctly interpreted.
+rmeRequiredDimensions :: Lens' ReportingMetadataEntry [Text]
+rmeRequiredDimensions
+  = lens _rmeRequiredDimensions
+      (\ s a -> s{_rmeRequiredDimensions = a})
+      . _Default
+      . _Coerce
+
+-- | Unique identifier of this reporting metadata entry, corresponding to the
+-- name of the appropriate dimension or metric.
+rmeId :: Lens' ReportingMetadataEntry (Maybe Text)
+rmeId = lens _rmeId (\ s a -> s{_rmeId = a})
+
+-- | For metrics this is a list of dimension IDs which the metric is
+-- compatible with, for dimensions it is a list of compatibility groups the
+-- dimension belongs to.
+rmeCompatibleDimensions :: Lens' ReportingMetadataEntry [Text]
+rmeCompatibleDimensions
+  = lens _rmeCompatibleDimensions
+      (\ s a -> s{_rmeCompatibleDimensions = a})
+      . _Default
+      . _Coerce
+
+-- | The codes of the projects supported by the dimension or metric this
+-- reporting metadata entry describes.
+rmeSupportedProducts :: Lens' ReportingMetadataEntry [Text]
+rmeSupportedProducts
+  = lens _rmeSupportedProducts
+      (\ s a -> s{_rmeSupportedProducts = a})
+      . _Default
+      . _Coerce
+
+instance FromJSON ReportingMetadataEntry where
+        parseJSON
+          = withObject "ReportingMetadataEntry"
+              (\ o ->
+                 ReportingMetadataEntry <$>
+                   (o .:? "kind" .!= "adsense#reportingMetadataEntry")
+                     <*> (o .:? "requiredMetrics" .!= mempty)
+                     <*> (o .:? "compatibleMetrics" .!= mempty)
+                     <*> (o .:? "requiredDimensions" .!= mempty)
+                     <*> (o .:? "id")
+                     <*> (o .:? "compatibleDimensions" .!= mempty)
+                     <*> (o .:? "supportedProducts" .!= mempty))
+
+instance ToJSON ReportingMetadataEntry where
+        toJSON ReportingMetadataEntry{..}
+          = object
+              (catMaybes
+                 [Just ("kind" .= _rmeKind),
+                  ("requiredMetrics" .=) <$> _rmeRequiredMetrics,
+                  ("compatibleMetrics" .=) <$> _rmeCompatibleMetrics,
+                  ("requiredDimensions" .=) <$> _rmeRequiredDimensions,
+                  ("id" .=) <$> _rmeId,
+                  ("compatibleDimensions" .=) <$>
+                    _rmeCompatibleDimensions,
+                  ("supportedProducts" .=) <$> _rmeSupportedProducts])
+
+--
+-- /See:/ 'adsenseReportsGenerateResponseHeadersItem' smart constructor.
+data AdsenseReportsGenerateResponseHeadersItem = AdsenseReportsGenerateResponseHeadersItem
+    { _argrhiName     :: !(Maybe Text)
+    , _argrhiCurrency :: !(Maybe Text)
+    , _argrhiType     :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'AdsenseReportsGenerateResponseHeadersItem' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'argrhiName'
+--
+-- * 'argrhiCurrency'
+--
+-- * 'argrhiType'
+adsenseReportsGenerateResponseHeadersItem
+    :: AdsenseReportsGenerateResponseHeadersItem
+adsenseReportsGenerateResponseHeadersItem =
+    AdsenseReportsGenerateResponseHeadersItem
+    { _argrhiName = Nothing
+    , _argrhiCurrency = Nothing
+    , _argrhiType = Nothing
+    }
+
+-- | The name of the header.
+argrhiName :: Lens' AdsenseReportsGenerateResponseHeadersItem (Maybe Text)
+argrhiName
+  = lens _argrhiName (\ s a -> s{_argrhiName = a})
+
+-- | The currency of this column. Only present if the header type is
+-- METRIC_CURRENCY.
+argrhiCurrency :: Lens' AdsenseReportsGenerateResponseHeadersItem (Maybe Text)
+argrhiCurrency
+  = lens _argrhiCurrency
+      (\ s a -> s{_argrhiCurrency = a})
+
+-- | The type of the header; one of DIMENSION, METRIC_TALLY, METRIC_RATIO, or
+-- METRIC_CURRENCY.
+argrhiType :: Lens' AdsenseReportsGenerateResponseHeadersItem (Maybe Text)
+argrhiType
+  = lens _argrhiType (\ s a -> s{_argrhiType = a})
+
+instance FromJSON
+         AdsenseReportsGenerateResponseHeadersItem where
+        parseJSON
+          = withObject
+              "AdsenseReportsGenerateResponseHeadersItem"
+              (\ o ->
+                 AdsenseReportsGenerateResponseHeadersItem <$>
+                   (o .:? "name") <*> (o .:? "currency") <*>
+                     (o .:? "type"))
+
+instance ToJSON
+         AdsenseReportsGenerateResponseHeadersItem where
+        toJSON AdsenseReportsGenerateResponseHeadersItem{..}
+          = object
+              (catMaybes
+                 [("name" .=) <$> _argrhiName,
+                  ("currency" .=) <$> _argrhiCurrency,
+                  ("type" .=) <$> _argrhiType])
+
+--
+-- /See:/ 'payment' smart constructor.
+data Payment = Payment
+    { _pPaymentAmountCurrencyCode :: !(Maybe Text)
+    , _pKind                      :: !Text
+    , _pPaymentDate               :: !(Maybe Text)
+    , _pId                        :: !(Maybe Text)
+    , _pPaymentAmount             :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'Payment' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'pPaymentAmountCurrencyCode'
+--
+-- * 'pKind'
+--
+-- * 'pPaymentDate'
+--
+-- * 'pId'
+--
+-- * 'pPaymentAmount'
+payment
+    :: Payment
+payment =
+    Payment
+    { _pPaymentAmountCurrencyCode = Nothing
+    , _pKind = "adsense#payment"
+    , _pPaymentDate = Nothing
+    , _pId = Nothing
+    , _pPaymentAmount = Nothing
+    }
+
+-- | The currency code for the amount to be paid.
+pPaymentAmountCurrencyCode :: Lens' Payment (Maybe Text)
+pPaymentAmountCurrencyCode
+  = lens _pPaymentAmountCurrencyCode
+      (\ s a -> s{_pPaymentAmountCurrencyCode = a})
+
+-- | Kind of resource this is, in this case adsense#payment.
+pKind :: Lens' Payment Text
+pKind = lens _pKind (\ s a -> s{_pKind = a})
+
+-- | The date this payment was\/will be credited to the user, or none if the
+-- payment threshold has not been met.
+pPaymentDate :: Lens' Payment (Maybe Text)
+pPaymentDate
+  = lens _pPaymentDate (\ s a -> s{_pPaymentDate = a})
+
+-- | Unique identifier of this Payment.
+pId :: Lens' Payment (Maybe Text)
+pId = lens _pId (\ s a -> s{_pId = a})
+
+-- | The amount to be paid.
+pPaymentAmount :: Lens' Payment (Maybe Text)
+pPaymentAmount
+  = lens _pPaymentAmount
+      (\ s a -> s{_pPaymentAmount = a})
+
+instance FromJSON Payment where
+        parseJSON
+          = withObject "Payment"
+              (\ o ->
+                 Payment <$>
+                   (o .:? "paymentAmountCurrencyCode") <*>
+                     (o .:? "kind" .!= "adsense#payment")
+                     <*> (o .:? "paymentDate")
+                     <*> (o .:? "id")
+                     <*> (o .:? "paymentAmount"))
+
+instance ToJSON Payment where
+        toJSON Payment{..}
+          = object
+              (catMaybes
+                 [("paymentAmountCurrencyCode" .=) <$>
+                    _pPaymentAmountCurrencyCode,
+                  Just ("kind" .= _pKind),
+                  ("paymentDate" .=) <$> _pPaymentDate,
+                  ("id" .=) <$> _pId,
+                  ("paymentAmount" .=) <$> _pPaymentAmount])
+
+--
+-- /See:/ 'accounts' smart constructor.
+data Accounts = Accounts
+    { _aEtag          :: !(Maybe Text)
+    , _aNextPageToken :: !(Maybe Text)
+    , _aKind          :: !Text
+    , _aItems         :: !(Maybe [Account])
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'Accounts' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'aEtag'
+--
+-- * 'aNextPageToken'
+--
+-- * 'aKind'
+--
+-- * 'aItems'
+accounts
+    :: Accounts
+accounts =
+    Accounts
+    { _aEtag = Nothing
+    , _aNextPageToken = Nothing
+    , _aKind = "adsense#accounts"
+    , _aItems = Nothing
+    }
+
+-- | ETag of this response for caching purposes.
+aEtag :: Lens' Accounts (Maybe Text)
+aEtag = lens _aEtag (\ s a -> s{_aEtag = a})
+
+-- | Continuation token used to page through accounts. To retrieve the next
+-- page of results, set the next request\'s \"pageToken\" value to this.
+aNextPageToken :: Lens' Accounts (Maybe Text)
+aNextPageToken
+  = lens _aNextPageToken
+      (\ s a -> s{_aNextPageToken = a})
+
+-- | Kind of list this is, in this case adsense#accounts.
+aKind :: Lens' Accounts Text
+aKind = lens _aKind (\ s a -> s{_aKind = a})
+
+-- | The accounts returned in this list response.
+aItems :: Lens' Accounts [Account]
+aItems
+  = lens _aItems (\ s a -> s{_aItems = a}) . _Default .
+      _Coerce
+
+instance FromJSON Accounts where
+        parseJSON
+          = withObject "Accounts"
+              (\ o ->
+                 Accounts <$>
+                   (o .:? "etag") <*> (o .:? "nextPageToken") <*>
+                     (o .:? "kind" .!= "adsense#accounts")
+                     <*> (o .:? "items" .!= mempty))
+
+instance ToJSON Accounts where
+        toJSON Accounts{..}
+          = object
+              (catMaybes
+                 [("etag" .=) <$> _aEtag,
+                  ("nextPageToken" .=) <$> _aNextPageToken,
+                  Just ("kind" .= _aKind), ("items" .=) <$> _aItems])
+
+--
+-- /See:/ 'alerts' smart constructor.
+data Alerts = Alerts
+    { _aleKind  :: !Text
+    , _aleItems :: !(Maybe [Alert])
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'Alerts' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'aleKind'
+--
+-- * 'aleItems'
+alerts
+    :: Alerts
+alerts =
+    Alerts
+    { _aleKind = "adsense#alerts"
+    , _aleItems = Nothing
+    }
+
+-- | Kind of list this is, in this case adsense#alerts.
+aleKind :: Lens' Alerts Text
+aleKind = lens _aleKind (\ s a -> s{_aleKind = a})
+
+-- | The alerts returned in this list response.
+aleItems :: Lens' Alerts [Alert]
+aleItems
+  = lens _aleItems (\ s a -> s{_aleItems = a}) .
+      _Default
+      . _Coerce
+
+instance FromJSON Alerts where
+        parseJSON
+          = withObject "Alerts"
+              (\ o ->
+                 Alerts <$>
+                   (o .:? "kind" .!= "adsense#alerts") <*>
+                     (o .:? "items" .!= mempty))
+
+instance ToJSON Alerts where
+        toJSON Alerts{..}
+          = object
+              (catMaybes
+                 [Just ("kind" .= _aleKind),
+                  ("items" .=) <$> _aleItems])
+
+--
+-- /See:/ 'savedReports' smart constructor.
+data SavedReports = SavedReports
+    { _srEtag          :: !(Maybe Text)
+    , _srNextPageToken :: !(Maybe Text)
+    , _srKind          :: !Text
+    , _srItems         :: !(Maybe [SavedReport])
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'SavedReports' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'srEtag'
+--
+-- * 'srNextPageToken'
+--
+-- * 'srKind'
+--
+-- * 'srItems'
+savedReports
+    :: SavedReports
+savedReports =
+    SavedReports
+    { _srEtag = Nothing
+    , _srNextPageToken = Nothing
+    , _srKind = "adsense#savedReports"
+    , _srItems = Nothing
+    }
+
+-- | ETag of this response for caching purposes.
+srEtag :: Lens' SavedReports (Maybe Text)
+srEtag = lens _srEtag (\ s a -> s{_srEtag = a})
+
+-- | Continuation token used to page through saved reports. To retrieve the
+-- next page of results, set the next request\'s \"pageToken\" value to
+-- this.
+srNextPageToken :: Lens' SavedReports (Maybe Text)
+srNextPageToken
+  = lens _srNextPageToken
+      (\ s a -> s{_srNextPageToken = a})
+
+-- | Kind of list this is, in this case adsense#savedReports.
+srKind :: Lens' SavedReports Text
+srKind = lens _srKind (\ s a -> s{_srKind = a})
+
+-- | The saved reports returned in this list response.
+srItems :: Lens' SavedReports [SavedReport]
+srItems
+  = lens _srItems (\ s a -> s{_srItems = a}) . _Default
+      . _Coerce
+
+instance FromJSON SavedReports where
+        parseJSON
+          = withObject "SavedReports"
+              (\ o ->
+                 SavedReports <$>
+                   (o .:? "etag") <*> (o .:? "nextPageToken") <*>
+                     (o .:? "kind" .!= "adsense#savedReports")
+                     <*> (o .:? "items" .!= mempty))
+
+instance ToJSON SavedReports where
+        toJSON SavedReports{..}
+          = object
+              (catMaybes
+                 [("etag" .=) <$> _srEtag,
+                  ("nextPageToken" .=) <$> _srNextPageToken,
+                  Just ("kind" .= _srKind), ("items" .=) <$> _srItems])
+
+--
+-- /See:/ 'adUnits' smart constructor.
+data AdUnits = AdUnits
+    { _auEtag          :: !(Maybe Text)
+    , _auNextPageToken :: !(Maybe Text)
+    , _auKind          :: !Text
+    , _auItems         :: !(Maybe [AdUnit])
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'AdUnits' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'auEtag'
+--
+-- * 'auNextPageToken'
+--
+-- * 'auKind'
+--
+-- * 'auItems'
+adUnits
+    :: AdUnits
+adUnits =
+    AdUnits
+    { _auEtag = Nothing
+    , _auNextPageToken = Nothing
+    , _auKind = "adsense#adUnits"
+    , _auItems = Nothing
+    }
+
+-- | ETag of this response for caching purposes.
+auEtag :: Lens' AdUnits (Maybe Text)
+auEtag = lens _auEtag (\ s a -> s{_auEtag = a})
+
+-- | Continuation token used to page through ad units. To retrieve the next
+-- page of results, set the next request\'s \"pageToken\" value to this.
+auNextPageToken :: Lens' AdUnits (Maybe Text)
+auNextPageToken
+  = lens _auNextPageToken
+      (\ s a -> s{_auNextPageToken = a})
+
+-- | Kind of list this is, in this case adsense#adUnits.
+auKind :: Lens' AdUnits Text
+auKind = lens _auKind (\ s a -> s{_auKind = a})
+
+-- | The ad units returned in this list response.
+auItems :: Lens' AdUnits [AdUnit]
+auItems
+  = lens _auItems (\ s a -> s{_auItems = a}) . _Default
+      . _Coerce
+
+instance FromJSON AdUnits where
+        parseJSON
+          = withObject "AdUnits"
+              (\ o ->
+                 AdUnits <$>
+                   (o .:? "etag") <*> (o .:? "nextPageToken") <*>
+                     (o .:? "kind" .!= "adsense#adUnits")
+                     <*> (o .:? "items" .!= mempty))
+
+instance ToJSON AdUnits where
+        toJSON AdUnits{..}
+          = object
+              (catMaybes
+                 [("etag" .=) <$> _auEtag,
+                  ("nextPageToken" .=) <$> _auNextPageToken,
+                  Just ("kind" .= _auKind), ("items" .=) <$> _auItems])
+
+--
+-- /See:/ 'savedReport' smart constructor.
+data SavedReport = SavedReport
+    { _sKind :: !Text
+    , _sName :: !(Maybe Text)
+    , _sId   :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'SavedReport' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'sKind'
+--
+-- * 'sName'
+--
+-- * 'sId'
+savedReport
+    :: SavedReport
+savedReport =
+    SavedReport
+    { _sKind = "adsense#savedReport"
+    , _sName = Nothing
+    , _sId = Nothing
+    }
+
+-- | Kind of resource this is, in this case adsense#savedReport.
+sKind :: Lens' SavedReport Text
+sKind = lens _sKind (\ s a -> s{_sKind = a})
+
+-- | This saved report\'s name.
+sName :: Lens' SavedReport (Maybe Text)
+sName = lens _sName (\ s a -> s{_sName = a})
+
+-- | Unique identifier of this saved report.
+sId :: Lens' SavedReport (Maybe Text)
+sId = lens _sId (\ s a -> s{_sId = a})
+
+instance FromJSON SavedReport where
+        parseJSON
+          = withObject "SavedReport"
+              (\ o ->
+                 SavedReport <$>
+                   (o .:? "kind" .!= "adsense#savedReport") <*>
+                     (o .:? "name")
+                     <*> (o .:? "id"))
+
+instance ToJSON SavedReport where
+        toJSON SavedReport{..}
+          = object
+              (catMaybes
+                 [Just ("kind" .= _sKind), ("name" .=) <$> _sName,
+                  ("id" .=) <$> _sId])
+
+--
+-- /See:/ 'urlChannels' smart constructor.
+data URLChannels = URLChannels
+    { _ucEtag          :: !(Maybe Text)
+    , _ucNextPageToken :: !(Maybe Text)
+    , _ucKind          :: !Text
+    , _ucItems         :: !(Maybe [URLChannel])
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'URLChannels' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'ucEtag'
+--
+-- * 'ucNextPageToken'
+--
+-- * 'ucKind'
+--
+-- * 'ucItems'
+urlChannels
+    :: URLChannels
+urlChannels =
+    URLChannels
+    { _ucEtag = Nothing
+    , _ucNextPageToken = Nothing
+    , _ucKind = "adsense#urlChannels"
+    , _ucItems = Nothing
+    }
+
+-- | ETag of this response for caching purposes.
+ucEtag :: Lens' URLChannels (Maybe Text)
+ucEtag = lens _ucEtag (\ s a -> s{_ucEtag = a})
+
+-- | Continuation token used to page through URL channels. To retrieve the
+-- next page of results, set the next request\'s \"pageToken\" value to
+-- this.
+ucNextPageToken :: Lens' URLChannels (Maybe Text)
+ucNextPageToken
+  = lens _ucNextPageToken
+      (\ s a -> s{_ucNextPageToken = a})
+
+-- | Kind of list this is, in this case adsense#urlChannels.
+ucKind :: Lens' URLChannels Text
+ucKind = lens _ucKind (\ s a -> s{_ucKind = a})
+
+-- | The URL channels returned in this list response.
+ucItems :: Lens' URLChannels [URLChannel]
+ucItems
+  = lens _ucItems (\ s a -> s{_ucItems = a}) . _Default
+      . _Coerce
+
+instance FromJSON URLChannels where
+        parseJSON
+          = withObject "URLChannels"
+              (\ o ->
+                 URLChannels <$>
+                   (o .:? "etag") <*> (o .:? "nextPageToken") <*>
+                     (o .:? "kind" .!= "adsense#urlChannels")
+                     <*> (o .:? "items" .!= mempty))
+
+instance ToJSON URLChannels where
+        toJSON URLChannels{..}
+          = object
+              (catMaybes
+                 [("etag" .=) <$> _ucEtag,
+                  ("nextPageToken" .=) <$> _ucNextPageToken,
+                  Just ("kind" .= _ucKind), ("items" .=) <$> _ucItems])
+
+--
+-- /See:/ 'customChannels' smart constructor.
+data CustomChannels = CustomChannels
+    { _ccEtag          :: !(Maybe Text)
+    , _ccNextPageToken :: !(Maybe Text)
+    , _ccKind          :: !Text
+    , _ccItems         :: !(Maybe [CustomChannel])
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'CustomChannels' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'ccEtag'
+--
+-- * 'ccNextPageToken'
+--
+-- * 'ccKind'
+--
+-- * 'ccItems'
+customChannels
+    :: CustomChannels
+customChannels =
+    CustomChannels
+    { _ccEtag = Nothing
+    , _ccNextPageToken = Nothing
+    , _ccKind = "adsense#customChannels"
+    , _ccItems = Nothing
+    }
+
+-- | ETag of this response for caching purposes.
+ccEtag :: Lens' CustomChannels (Maybe Text)
+ccEtag = lens _ccEtag (\ s a -> s{_ccEtag = a})
+
+-- | Continuation token used to page through custom channels. To retrieve the
+-- next page of results, set the next request\'s \"pageToken\" value to
+-- this.
+ccNextPageToken :: Lens' CustomChannels (Maybe Text)
+ccNextPageToken
+  = lens _ccNextPageToken
+      (\ s a -> s{_ccNextPageToken = a})
+
+-- | Kind of list this is, in this case adsense#customChannels.
+ccKind :: Lens' CustomChannels Text
+ccKind = lens _ccKind (\ s a -> s{_ccKind = a})
+
+-- | The custom channels returned in this list response.
+ccItems :: Lens' CustomChannels [CustomChannel]
+ccItems
+  = lens _ccItems (\ s a -> s{_ccItems = a}) . _Default
+      . _Coerce
+
+instance FromJSON CustomChannels where
+        parseJSON
+          = withObject "CustomChannels"
+              (\ o ->
+                 CustomChannels <$>
+                   (o .:? "etag") <*> (o .:? "nextPageToken") <*>
+                     (o .:? "kind" .!= "adsense#customChannels")
+                     <*> (o .:? "items" .!= mempty))
+
+instance ToJSON CustomChannels where
+        toJSON CustomChannels{..}
+          = object
+              (catMaybes
+                 [("etag" .=) <$> _ccEtag,
+                  ("nextPageToken" .=) <$> _ccNextPageToken,
+                  Just ("kind" .= _ccKind), ("items" .=) <$> _ccItems])
+
+--
+-- /See:/ 'adUnit' smart constructor.
+data AdUnit = AdUnit
+    { _auuStatus                   :: !(Maybe Text)
+    , _auuMobileContentAdsSettings :: !(Maybe AdUnitMobileContentAdsSettings)
+    , _auuKind                     :: !Text
+    , _auuFeedAdsSettings          :: !(Maybe AdUnitFeedAdsSettings)
+    , _auuCustomStyle              :: !(Maybe AdStyle)
+    , _auuSavedStyleId             :: !(Maybe Text)
+    , _auuName                     :: !(Maybe Text)
+    , _auuContentAdsSettings       :: !(Maybe AdUnitContentAdsSettings)
+    , _auuCode                     :: !(Maybe Text)
+    , _auuId                       :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'AdUnit' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'auuStatus'
+--
+-- * 'auuMobileContentAdsSettings'
+--
+-- * 'auuKind'
+--
+-- * 'auuFeedAdsSettings'
+--
+-- * 'auuCustomStyle'
+--
+-- * 'auuSavedStyleId'
+--
+-- * 'auuName'
+--
+-- * 'auuContentAdsSettings'
+--
+-- * 'auuCode'
+--
+-- * 'auuId'
+adUnit
+    :: AdUnit
+adUnit =
+    AdUnit
+    { _auuStatus = Nothing
+    , _auuMobileContentAdsSettings = Nothing
+    , _auuKind = "adsense#adUnit"
+    , _auuFeedAdsSettings = Nothing
+    , _auuCustomStyle = Nothing
+    , _auuSavedStyleId = Nothing
+    , _auuName = Nothing
+    , _auuContentAdsSettings = Nothing
+    , _auuCode = Nothing
+    , _auuId = Nothing
+    }
+
+-- | Status of this ad unit. Possible values are: NEW: Indicates that the ad
+-- unit was created within the last seven days and does not yet have any
+-- activity associated with it. ACTIVE: Indicates that there has been
+-- activity on this ad unit in the last seven days. INACTIVE: Indicates
+-- that there has been no activity on this ad unit in the last seven days.
+auuStatus :: Lens' AdUnit (Maybe Text)
+auuStatus
+  = lens _auuStatus (\ s a -> s{_auuStatus = a})
+
+-- | Settings specific to WAP mobile content ads (AFMC).
+auuMobileContentAdsSettings :: Lens' AdUnit (Maybe AdUnitMobileContentAdsSettings)
+auuMobileContentAdsSettings
+  = lens _auuMobileContentAdsSettings
+      (\ s a -> s{_auuMobileContentAdsSettings = a})
+
+-- | Kind of resource this is, in this case adsense#adUnit.
+auuKind :: Lens' AdUnit Text
+auuKind = lens _auuKind (\ s a -> s{_auuKind = a})
+
+-- | Settings specific to feed ads (AFF).
+auuFeedAdsSettings :: Lens' AdUnit (Maybe AdUnitFeedAdsSettings)
+auuFeedAdsSettings
+  = lens _auuFeedAdsSettings
+      (\ s a -> s{_auuFeedAdsSettings = a})
+
+-- | Custom style information specific to this ad unit.
+auuCustomStyle :: Lens' AdUnit (Maybe AdStyle)
+auuCustomStyle
+  = lens _auuCustomStyle
+      (\ s a -> s{_auuCustomStyle = a})
+
+-- | ID of the saved ad style which holds this ad unit\'s style information.
+auuSavedStyleId :: Lens' AdUnit (Maybe Text)
+auuSavedStyleId
+  = lens _auuSavedStyleId
+      (\ s a -> s{_auuSavedStyleId = a})
+
+-- | Name of this ad unit.
+auuName :: Lens' AdUnit (Maybe Text)
+auuName = lens _auuName (\ s a -> s{_auuName = a})
+
+-- | Settings specific to content ads (AFC) and highend mobile content ads
+-- (AFMC).
+auuContentAdsSettings :: Lens' AdUnit (Maybe AdUnitContentAdsSettings)
+auuContentAdsSettings
+  = lens _auuContentAdsSettings
+      (\ s a -> s{_auuContentAdsSettings = a})
+
+-- | Identity code of this ad unit, not necessarily unique across ad clients.
+auuCode :: Lens' AdUnit (Maybe Text)
+auuCode = lens _auuCode (\ s a -> s{_auuCode = a})
+
+-- | Unique identifier of this ad unit. This should be considered an opaque
+-- identifier; it is not safe to rely on it being in any particular format.
+auuId :: Lens' AdUnit (Maybe Text)
+auuId = lens _auuId (\ s a -> s{_auuId = a})
+
+instance FromJSON AdUnit where
+        parseJSON
+          = withObject "AdUnit"
+              (\ o ->
+                 AdUnit <$>
+                   (o .:? "status") <*>
+                     (o .:? "mobileContentAdsSettings")
+                     <*> (o .:? "kind" .!= "adsense#adUnit")
+                     <*> (o .:? "feedAdsSettings")
+                     <*> (o .:? "customStyle")
+                     <*> (o .:? "savedStyleId")
+                     <*> (o .:? "name")
+                     <*> (o .:? "contentAdsSettings")
+                     <*> (o .:? "code")
+                     <*> (o .:? "id"))
+
+instance ToJSON AdUnit where
+        toJSON AdUnit{..}
+          = object
+              (catMaybes
+                 [("status" .=) <$> _auuStatus,
+                  ("mobileContentAdsSettings" .=) <$>
+                    _auuMobileContentAdsSettings,
+                  Just ("kind" .= _auuKind),
+                  ("feedAdsSettings" .=) <$> _auuFeedAdsSettings,
+                  ("customStyle" .=) <$> _auuCustomStyle,
+                  ("savedStyleId" .=) <$> _auuSavedStyleId,
+                  ("name" .=) <$> _auuName,
+                  ("contentAdsSettings" .=) <$> _auuContentAdsSettings,
+                  ("code" .=) <$> _auuCode, ("id" .=) <$> _auuId])
+
+--
+-- /See:/ 'alert' smart constructor.
+data Alert = Alert
+    { _aaIsDismissible :: !(Maybe Bool)
+    , _aaKind          :: !Text
+    , _aaSeverity      :: !(Maybe Text)
+    , _aaId            :: !(Maybe Text)
+    , _aaType          :: !(Maybe Text)
+    , _aaMessage       :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'Alert' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'aaIsDismissible'
+--
+-- * 'aaKind'
+--
+-- * 'aaSeverity'
+--
+-- * 'aaId'
+--
+-- * 'aaType'
+--
+-- * 'aaMessage'
+alert
+    :: Alert
+alert =
+    Alert
+    { _aaIsDismissible = Nothing
+    , _aaKind = "adsense#alert"
+    , _aaSeverity = Nothing
+    , _aaId = Nothing
+    , _aaType = Nothing
+    , _aaMessage = Nothing
+    }
+
+-- | Whether this alert can be dismissed.
+aaIsDismissible :: Lens' Alert (Maybe Bool)
+aaIsDismissible
+  = lens _aaIsDismissible
+      (\ s a -> s{_aaIsDismissible = a})
+
+-- | Kind of resource this is, in this case adsense#alert.
+aaKind :: Lens' Alert Text
+aaKind = lens _aaKind (\ s a -> s{_aaKind = a})
+
+-- | Severity of this alert. Possible values: INFO, WARNING, SEVERE.
+aaSeverity :: Lens' Alert (Maybe Text)
+aaSeverity
+  = lens _aaSeverity (\ s a -> s{_aaSeverity = a})
+
+-- | Unique identifier of this alert. This should be considered an opaque
+-- identifier; it is not safe to rely on it being in any particular format.
+aaId :: Lens' Alert (Maybe Text)
+aaId = lens _aaId (\ s a -> s{_aaId = a})
+
+-- | Type of this alert. Possible values: SELF_HOLD, MIGRATED_TO_BILLING3,
+-- ADDRESS_PIN_VERIFICATION, PHONE_PIN_VERIFICATION, CORPORATE_ENTITY,
+-- GRAYLISTED_PUBLISHER, API_HOLD.
+aaType :: Lens' Alert (Maybe Text)
+aaType = lens _aaType (\ s a -> s{_aaType = a})
+
+-- | The localized alert message.
+aaMessage :: Lens' Alert (Maybe Text)
+aaMessage
+  = lens _aaMessage (\ s a -> s{_aaMessage = a})
+
+instance FromJSON Alert where
+        parseJSON
+          = withObject "Alert"
+              (\ o ->
+                 Alert <$>
+                   (o .:? "isDismissible") <*>
+                     (o .:? "kind" .!= "adsense#alert")
+                     <*> (o .:? "severity")
+                     <*> (o .:? "id")
+                     <*> (o .:? "type")
+                     <*> (o .:? "message"))
+
+instance ToJSON Alert where
+        toJSON Alert{..}
+          = object
+              (catMaybes
+                 [("isDismissible" .=) <$> _aaIsDismissible,
+                  Just ("kind" .= _aaKind),
+                  ("severity" .=) <$> _aaSeverity, ("id" .=) <$> _aaId,
+                  ("type" .=) <$> _aaType,
+                  ("message" .=) <$> _aaMessage])
+
+-- | The font which is included in the style.
+--
+-- /See:/ 'adStyleFont' smart constructor.
+data AdStyleFont = AdStyleFont
+    { _asfSize   :: !(Maybe Text)
+    , _asfFamily :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'AdStyleFont' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'asfSize'
+--
+-- * 'asfFamily'
+adStyleFont
+    :: AdStyleFont
+adStyleFont =
+    AdStyleFont
+    { _asfSize = Nothing
+    , _asfFamily = Nothing
+    }
+
+-- | The size of the font.
+asfSize :: Lens' AdStyleFont (Maybe Text)
+asfSize = lens _asfSize (\ s a -> s{_asfSize = a})
+
+-- | The family of the font.
+asfFamily :: Lens' AdStyleFont (Maybe Text)
+asfFamily
+  = lens _asfFamily (\ s a -> s{_asfFamily = a})
+
+instance FromJSON AdStyleFont where
+        parseJSON
+          = withObject "AdStyleFont"
+              (\ o ->
+                 AdStyleFont <$> (o .:? "size") <*> (o .:? "family"))
+
+instance ToJSON AdStyleFont where
+        toJSON AdStyleFont{..}
+          = object
+              (catMaybes
+                 [("size" .=) <$> _asfSize,
+                  ("family" .=) <$> _asfFamily])
+
+--
+-- /See:/ 'account' smart constructor.
+data Account = Account
+    { _accKind         :: !Text
+    , _accCreationTime :: !(Maybe (Textual Int64))
+    , _accPremium      :: !(Maybe Bool)
+    , _accName         :: !(Maybe Text)
+    , _accId           :: !(Maybe Text)
+    , _accTimezone     :: !(Maybe Text)
+    , _accSubAccounts  :: !(Maybe [Account])
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'Account' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'accKind'
+--
+-- * 'accCreationTime'
+--
+-- * 'accPremium'
+--
+-- * 'accName'
+--
+-- * 'accId'
+--
+-- * 'accTimezone'
+--
+-- * 'accSubAccounts'
+account
+    :: Account
+account =
+    Account
+    { _accKind = "adsense#account"
+    , _accCreationTime = Nothing
+    , _accPremium = Nothing
+    , _accName = Nothing
+    , _accId = Nothing
+    , _accTimezone = Nothing
+    , _accSubAccounts = Nothing
+    }
+
+-- | Kind of resource this is, in this case adsense#account.
+accKind :: Lens' Account Text
+accKind = lens _accKind (\ s a -> s{_accKind = a})
+
+accCreationTime :: Lens' Account (Maybe Int64)
+accCreationTime
+  = lens _accCreationTime
+      (\ s a -> s{_accCreationTime = a})
+      . mapping _Coerce
+
+-- | Whether this account is premium.
+accPremium :: Lens' Account (Maybe Bool)
+accPremium
+  = lens _accPremium (\ s a -> s{_accPremium = a})
+
+-- | Name of this account.
+accName :: Lens' Account (Maybe Text)
+accName = lens _accName (\ s a -> s{_accName = a})
+
+-- | Unique identifier of this account.
+accId :: Lens' Account (Maybe Text)
+accId = lens _accId (\ s a -> s{_accId = a})
+
+-- | AdSense timezone of this account.
+accTimezone :: Lens' Account (Maybe Text)
+accTimezone
+  = lens _accTimezone (\ s a -> s{_accTimezone = a})
+
+-- | Sub accounts of the this account.
+accSubAccounts :: Lens' Account [Account]
+accSubAccounts
+  = lens _accSubAccounts
+      (\ s a -> s{_accSubAccounts = a})
+      . _Default
+      . _Coerce
+
+instance FromJSON Account where
+        parseJSON
+          = withObject "Account"
+              (\ o ->
+                 Account <$>
+                   (o .:? "kind" .!= "adsense#account") <*>
+                     (o .:? "creation_time")
+                     <*> (o .:? "premium")
+                     <*> (o .:? "name")
+                     <*> (o .:? "id")
+                     <*> (o .:? "timezone")
+                     <*> (o .:? "subAccounts" .!= mempty))
+
+instance ToJSON Account where
+        toJSON Account{..}
+          = object
+              (catMaybes
+                 [Just ("kind" .= _accKind),
+                  ("creation_time" .=) <$> _accCreationTime,
+                  ("premium" .=) <$> _accPremium,
+                  ("name" .=) <$> _accName, ("id" .=) <$> _accId,
+                  ("timezone" .=) <$> _accTimezone,
+                  ("subAccounts" .=) <$> _accSubAccounts])
+
+-- | Settings specific to WAP mobile content ads (AFMC).
+--
+-- /See:/ 'adUnitMobileContentAdsSettings' smart constructor.
+data AdUnitMobileContentAdsSettings = AdUnitMobileContentAdsSettings
+    { _aumcasSize              :: !(Maybe Text)
+    , _aumcasScriptingLanguage :: !(Maybe Text)
+    , _aumcasMarkupLanguage    :: !(Maybe Text)
+    , _aumcasType              :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'AdUnitMobileContentAdsSettings' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'aumcasSize'
+--
+-- * 'aumcasScriptingLanguage'
+--
+-- * 'aumcasMarkupLanguage'
+--
+-- * 'aumcasType'
+adUnitMobileContentAdsSettings
+    :: AdUnitMobileContentAdsSettings
+adUnitMobileContentAdsSettings =
+    AdUnitMobileContentAdsSettings
+    { _aumcasSize = Nothing
+    , _aumcasScriptingLanguage = Nothing
+    , _aumcasMarkupLanguage = Nothing
+    , _aumcasType = Nothing
+    }
+
+-- | Size of this ad unit.
+aumcasSize :: Lens' AdUnitMobileContentAdsSettings (Maybe Text)
+aumcasSize
+  = lens _aumcasSize (\ s a -> s{_aumcasSize = a})
+
+-- | The scripting language to use for this ad unit.
+aumcasScriptingLanguage :: Lens' AdUnitMobileContentAdsSettings (Maybe Text)
+aumcasScriptingLanguage
+  = lens _aumcasScriptingLanguage
+      (\ s a -> s{_aumcasScriptingLanguage = a})
+
+-- | The markup language to use for this ad unit.
+aumcasMarkupLanguage :: Lens' AdUnitMobileContentAdsSettings (Maybe Text)
+aumcasMarkupLanguage
+  = lens _aumcasMarkupLanguage
+      (\ s a -> s{_aumcasMarkupLanguage = a})
+
+-- | Type of this ad unit.
+aumcasType :: Lens' AdUnitMobileContentAdsSettings (Maybe Text)
+aumcasType
+  = lens _aumcasType (\ s a -> s{_aumcasType = a})
+
+instance FromJSON AdUnitMobileContentAdsSettings
+         where
+        parseJSON
+          = withObject "AdUnitMobileContentAdsSettings"
+              (\ o ->
+                 AdUnitMobileContentAdsSettings <$>
+                   (o .:? "size") <*> (o .:? "scriptingLanguage") <*>
+                     (o .:? "markupLanguage")
+                     <*> (o .:? "type"))
+
+instance ToJSON AdUnitMobileContentAdsSettings where
+        toJSON AdUnitMobileContentAdsSettings{..}
+          = object
+              (catMaybes
+                 [("size" .=) <$> _aumcasSize,
+                  ("scriptingLanguage" .=) <$>
+                    _aumcasScriptingLanguage,
+                  ("markupLanguage" .=) <$> _aumcasMarkupLanguage,
+                  ("type" .=) <$> _aumcasType])
+
+--
+-- /See:/ 'savedAdStyles' smart constructor.
+data SavedAdStyles = SavedAdStyles
+    { _sasEtag          :: !(Maybe Text)
+    , _sasNextPageToken :: !(Maybe Text)
+    , _sasKind          :: !Text
+    , _sasItems         :: !(Maybe [SavedAdStyle])
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'SavedAdStyles' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'sasEtag'
+--
+-- * 'sasNextPageToken'
+--
+-- * 'sasKind'
+--
+-- * 'sasItems'
+savedAdStyles
+    :: SavedAdStyles
+savedAdStyles =
+    SavedAdStyles
+    { _sasEtag = Nothing
+    , _sasNextPageToken = Nothing
+    , _sasKind = "adsense#savedAdStyles"
+    , _sasItems = Nothing
+    }
+
+-- | ETag of this response for caching purposes.
+sasEtag :: Lens' SavedAdStyles (Maybe Text)
+sasEtag = lens _sasEtag (\ s a -> s{_sasEtag = a})
+
+-- | Continuation token used to page through ad units. To retrieve the next
+-- page of results, set the next request\'s \"pageToken\" value to this.
+sasNextPageToken :: Lens' SavedAdStyles (Maybe Text)
+sasNextPageToken
+  = lens _sasNextPageToken
+      (\ s a -> s{_sasNextPageToken = a})
+
+-- | Kind of list this is, in this case adsense#savedAdStyles.
+sasKind :: Lens' SavedAdStyles Text
+sasKind = lens _sasKind (\ s a -> s{_sasKind = a})
+
+-- | The saved ad styles returned in this list response.
+sasItems :: Lens' SavedAdStyles [SavedAdStyle]
+sasItems
+  = lens _sasItems (\ s a -> s{_sasItems = a}) .
+      _Default
+      . _Coerce
+
+instance FromJSON SavedAdStyles where
+        parseJSON
+          = withObject "SavedAdStyles"
+              (\ o ->
+                 SavedAdStyles <$>
+                   (o .:? "etag") <*> (o .:? "nextPageToken") <*>
+                     (o .:? "kind" .!= "adsense#savedAdStyles")
+                     <*> (o .:? "items" .!= mempty))
+
+instance ToJSON SavedAdStyles where
+        toJSON SavedAdStyles{..}
+          = object
+              (catMaybes
+                 [("etag" .=) <$> _sasEtag,
+                  ("nextPageToken" .=) <$> _sasNextPageToken,
+                  Just ("kind" .= _sasKind),
+                  ("items" .=) <$> _sasItems])
+
+-- | The colors which are included in the style. These are represented as six
+-- hexadecimal characters, similar to HTML color codes, but without the
+-- leading hash.
+--
+-- /See:/ 'adStyleColors' smart constructor.
+data AdStyleColors = AdStyleColors
+    { _ascText       :: !(Maybe Text)
+    , _ascURL        :: !(Maybe Text)
+    , _ascBOrder     :: !(Maybe Text)
+    , _ascTitle      :: !(Maybe Text)
+    , _ascBackgRound :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'AdStyleColors' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'ascText'
+--
+-- * 'ascURL'
+--
+-- * 'ascBOrder'
+--
+-- * 'ascTitle'
+--
+-- * 'ascBackgRound'
+adStyleColors
+    :: AdStyleColors
+adStyleColors =
+    AdStyleColors
+    { _ascText = Nothing
+    , _ascURL = Nothing
+    , _ascBOrder = Nothing
+    , _ascTitle = Nothing
+    , _ascBackgRound = Nothing
+    }
+
+-- | The color of the ad text.
+ascText :: Lens' AdStyleColors (Maybe Text)
+ascText = lens _ascText (\ s a -> s{_ascText = a})
+
+-- | The color of the ad url.
+ascURL :: Lens' AdStyleColors (Maybe Text)
+ascURL = lens _ascURL (\ s a -> s{_ascURL = a})
+
+-- | The color of the ad border.
+ascBOrder :: Lens' AdStyleColors (Maybe Text)
+ascBOrder
+  = lens _ascBOrder (\ s a -> s{_ascBOrder = a})
+
+-- | The color of the ad title.
+ascTitle :: Lens' AdStyleColors (Maybe Text)
+ascTitle = lens _ascTitle (\ s a -> s{_ascTitle = a})
+
+-- | The color of the ad background.
+ascBackgRound :: Lens' AdStyleColors (Maybe Text)
+ascBackgRound
+  = lens _ascBackgRound
+      (\ s a -> s{_ascBackgRound = a})
+
+instance FromJSON AdStyleColors where
+        parseJSON
+          = withObject "AdStyleColors"
+              (\ o ->
+                 AdStyleColors <$>
+                   (o .:? "text") <*> (o .:? "url") <*> (o .:? "border")
+                     <*> (o .:? "title")
+                     <*> (o .:? "background"))
+
+instance ToJSON AdStyleColors where
+        toJSON AdStyleColors{..}
+          = object
+              (catMaybes
+                 [("text" .=) <$> _ascText, ("url" .=) <$> _ascURL,
+                  ("border" .=) <$> _ascBOrder,
+                  ("title" .=) <$> _ascTitle,
+                  ("background" .=) <$> _ascBackgRound])
+
+-- | The backup option to be used in instances where no ad is available.
+--
+-- /See:/ 'adUnitContentAdsSettingsBackupOption' smart constructor.
+data AdUnitContentAdsSettingsBackupOption = AdUnitContentAdsSettingsBackupOption
+    { _aucasboColor :: !(Maybe Text)
+    , _aucasboURL   :: !(Maybe Text)
+    , _aucasboType  :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'AdUnitContentAdsSettingsBackupOption' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'aucasboColor'
+--
+-- * 'aucasboURL'
+--
+-- * 'aucasboType'
+adUnitContentAdsSettingsBackupOption
+    :: AdUnitContentAdsSettingsBackupOption
+adUnitContentAdsSettingsBackupOption =
+    AdUnitContentAdsSettingsBackupOption
+    { _aucasboColor = Nothing
+    , _aucasboURL = Nothing
+    , _aucasboType = Nothing
+    }
+
+-- | Color to use when type is set to COLOR.
+aucasboColor :: Lens' AdUnitContentAdsSettingsBackupOption (Maybe Text)
+aucasboColor
+  = lens _aucasboColor (\ s a -> s{_aucasboColor = a})
+
+-- | URL to use when type is set to URL.
+aucasboURL :: Lens' AdUnitContentAdsSettingsBackupOption (Maybe Text)
+aucasboURL
+  = lens _aucasboURL (\ s a -> s{_aucasboURL = a})
+
+-- | Type of the backup option. Possible values are BLANK, COLOR and URL.
+aucasboType :: Lens' AdUnitContentAdsSettingsBackupOption (Maybe Text)
+aucasboType
+  = lens _aucasboType (\ s a -> s{_aucasboType = a})
+
+instance FromJSON
+         AdUnitContentAdsSettingsBackupOption where
+        parseJSON
+          = withObject "AdUnitContentAdsSettingsBackupOption"
+              (\ o ->
+                 AdUnitContentAdsSettingsBackupOption <$>
+                   (o .:? "color") <*> (o .:? "url") <*> (o .:? "type"))
+
+instance ToJSON AdUnitContentAdsSettingsBackupOption
+         where
+        toJSON AdUnitContentAdsSettingsBackupOption{..}
+          = object
+              (catMaybes
+                 [("color" .=) <$> _aucasboColor,
+                  ("url" .=) <$> _aucasboURL,
+                  ("type" .=) <$> _aucasboType])
+
+--
+-- /See:/ 'adClient' smart constructor.
+data AdClient = AdClient
+    { _adKind              :: !Text
+    , _adArcOptIn          :: !(Maybe Bool)
+    , _adSupportsReporting :: !(Maybe Bool)
+    , _adId                :: !(Maybe Text)
+    , _adProductCode       :: !(Maybe Text)
+    , _adArcReviewMode     :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'AdClient' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'adKind'
+--
+-- * 'adArcOptIn'
+--
+-- * 'adSupportsReporting'
+--
+-- * 'adId'
+--
+-- * 'adProductCode'
+--
+-- * 'adArcReviewMode'
+adClient
+    :: AdClient
+adClient =
+    AdClient
+    { _adKind = "adsense#adClient"
+    , _adArcOptIn = Nothing
+    , _adSupportsReporting = Nothing
+    , _adId = Nothing
+    , _adProductCode = Nothing
+    , _adArcReviewMode = Nothing
+    }
+
+-- | Kind of resource this is, in this case adsense#adClient.
+adKind :: Lens' AdClient Text
+adKind = lens _adKind (\ s a -> s{_adKind = a})
+
+-- | Whether this ad client is opted in to ARC.
+adArcOptIn :: Lens' AdClient (Maybe Bool)
+adArcOptIn
+  = lens _adArcOptIn (\ s a -> s{_adArcOptIn = a})
+
+-- | Whether this ad client supports being reported on.
+adSupportsReporting :: Lens' AdClient (Maybe Bool)
+adSupportsReporting
+  = lens _adSupportsReporting
+      (\ s a -> s{_adSupportsReporting = a})
+
+-- | Unique identifier of this ad client.
+adId :: Lens' AdClient (Maybe Text)
+adId = lens _adId (\ s a -> s{_adId = a})
+
+-- | This ad client\'s product code, which corresponds to the PRODUCT_CODE
+-- report dimension.
+adProductCode :: Lens' AdClient (Maybe Text)
+adProductCode
+  = lens _adProductCode
+      (\ s a -> s{_adProductCode = a})
+
+-- | ARC review mode this ad client is in. Empty if the client is not opted
+-- in to ARC. Possible values: POST_REVIEW, AUTOMATIC_PRE_REVIEW.
+adArcReviewMode :: Lens' AdClient (Maybe Text)
+adArcReviewMode
+  = lens _adArcReviewMode
+      (\ s a -> s{_adArcReviewMode = a})
+
+instance FromJSON AdClient where
+        parseJSON
+          = withObject "AdClient"
+              (\ o ->
+                 AdClient <$>
+                   (o .:? "kind" .!= "adsense#adClient") <*>
+                     (o .:? "arcOptIn")
+                     <*> (o .:? "supportsReporting")
+                     <*> (o .:? "id")
+                     <*> (o .:? "productCode")
+                     <*> (o .:? "arcReviewMode"))
+
+instance ToJSON AdClient where
+        toJSON AdClient{..}
+          = object
+              (catMaybes
+                 [Just ("kind" .= _adKind),
+                  ("arcOptIn" .=) <$> _adArcOptIn,
+                  ("supportsReporting" .=) <$> _adSupportsReporting,
+                  ("id" .=) <$> _adId,
+                  ("productCode" .=) <$> _adProductCode,
+                  ("arcReviewMode" .=) <$> _adArcReviewMode])
+
+--
+-- /See:/ 'savedAdStyle' smart constructor.
+data SavedAdStyle = SavedAdStyle
+    { _savKind    :: !Text
+    , _savName    :: !(Maybe Text)
+    , _savAdStyle :: !(Maybe AdStyle)
+    , _savId      :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'SavedAdStyle' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'savKind'
+--
+-- * 'savName'
+--
+-- * 'savAdStyle'
+--
+-- * 'savId'
+savedAdStyle
+    :: SavedAdStyle
+savedAdStyle =
+    SavedAdStyle
+    { _savKind = "adsense#savedAdStyle"
+    , _savName = Nothing
+    , _savAdStyle = Nothing
+    , _savId = Nothing
+    }
+
+-- | Kind of resource this is, in this case adsense#savedAdStyle.
+savKind :: Lens' SavedAdStyle Text
+savKind = lens _savKind (\ s a -> s{_savKind = a})
+
+-- | The user selected name of this SavedAdStyle.
+savName :: Lens' SavedAdStyle (Maybe Text)
+savName = lens _savName (\ s a -> s{_savName = a})
+
+-- | The AdStyle itself.
+savAdStyle :: Lens' SavedAdStyle (Maybe AdStyle)
+savAdStyle
+  = lens _savAdStyle (\ s a -> s{_savAdStyle = a})
+
+-- | Unique identifier of this saved ad style. This should be considered an
+-- opaque identifier; it is not safe to rely on it being in any particular
+-- format.
+savId :: Lens' SavedAdStyle (Maybe Text)
+savId = lens _savId (\ s a -> s{_savId = a})
+
+instance FromJSON SavedAdStyle where
+        parseJSON
+          = withObject "SavedAdStyle"
+              (\ o ->
+                 SavedAdStyle <$>
+                   (o .:? "kind" .!= "adsense#savedAdStyle") <*>
+                     (o .:? "name")
+                     <*> (o .:? "adStyle")
+                     <*> (o .:? "id"))
+
+instance ToJSON SavedAdStyle where
+        toJSON SavedAdStyle{..}
+          = object
+              (catMaybes
+                 [Just ("kind" .= _savKind), ("name" .=) <$> _savName,
+                  ("adStyle" .=) <$> _savAdStyle,
+                  ("id" .=) <$> _savId])
+
+-- | The targeting information of this custom channel, if activated.
+--
+-- /See:/ 'customChannelTargetingInfo' smart constructor.
+data CustomChannelTargetingInfo = CustomChannelTargetingInfo
+    { _cctiLocation     :: !(Maybe Text)
+    , _cctiSiteLanguage :: !(Maybe Text)
+    , _cctiAdsAppearOn  :: !(Maybe Text)
+    , _cctiDescription  :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'CustomChannelTargetingInfo' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'cctiLocation'
+--
+-- * 'cctiSiteLanguage'
+--
+-- * 'cctiAdsAppearOn'
+--
+-- * 'cctiDescription'
+customChannelTargetingInfo
+    :: CustomChannelTargetingInfo
+customChannelTargetingInfo =
+    CustomChannelTargetingInfo
+    { _cctiLocation = Nothing
+    , _cctiSiteLanguage = Nothing
+    , _cctiAdsAppearOn = Nothing
+    , _cctiDescription = Nothing
+    }
+
+-- | The locations in which ads appear. (Only valid for content and mobile
+-- content ads). Acceptable values for content ads are: TOP_LEFT,
+-- TOP_CENTER, TOP_RIGHT, MIDDLE_LEFT, MIDDLE_CENTER, MIDDLE_RIGHT,
+-- BOTTOM_LEFT, BOTTOM_CENTER, BOTTOM_RIGHT, MULTIPLE_LOCATIONS. Acceptable
+-- values for mobile content ads are: TOP, MIDDLE, BOTTOM,
+-- MULTIPLE_LOCATIONS.
+cctiLocation :: Lens' CustomChannelTargetingInfo (Maybe Text)
+cctiLocation
+  = lens _cctiLocation (\ s a -> s{_cctiLocation = a})
+
+-- | The language of the sites ads will be displayed on.
+cctiSiteLanguage :: Lens' CustomChannelTargetingInfo (Maybe Text)
+cctiSiteLanguage
+  = lens _cctiSiteLanguage
+      (\ s a -> s{_cctiSiteLanguage = a})
+
+-- | The name used to describe this channel externally.
+cctiAdsAppearOn :: Lens' CustomChannelTargetingInfo (Maybe Text)
+cctiAdsAppearOn
+  = lens _cctiAdsAppearOn
+      (\ s a -> s{_cctiAdsAppearOn = a})
+
+-- | The external description of the channel.
+cctiDescription :: Lens' CustomChannelTargetingInfo (Maybe Text)
+cctiDescription
+  = lens _cctiDescription
+      (\ s a -> s{_cctiDescription = a})
+
+instance FromJSON CustomChannelTargetingInfo where
+        parseJSON
+          = withObject "CustomChannelTargetingInfo"
+              (\ o ->
+                 CustomChannelTargetingInfo <$>
+                   (o .:? "location") <*> (o .:? "siteLanguage") <*>
+                     (o .:? "adsAppearOn")
+                     <*> (o .:? "description"))
+
+instance ToJSON CustomChannelTargetingInfo where
+        toJSON CustomChannelTargetingInfo{..}
+          = object
+              (catMaybes
+                 [("location" .=) <$> _cctiLocation,
+                  ("siteLanguage" .=) <$> _cctiSiteLanguage,
+                  ("adsAppearOn" .=) <$> _cctiAdsAppearOn,
+                  ("description" .=) <$> _cctiDescription])
+
+--
+-- /See:/ 'adStyle' smart constructor.
+data AdStyle = AdStyle
+    { _asCorners :: !(Maybe Text)
+    , _asKind    :: !Text
+    , _asFont    :: !(Maybe AdStyleFont)
+    , _asColors  :: !(Maybe AdStyleColors)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'AdStyle' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'asCorners'
+--
+-- * 'asKind'
+--
+-- * 'asFont'
+--
+-- * 'asColors'
+adStyle
+    :: AdStyle
+adStyle =
+    AdStyle
+    { _asCorners = Nothing
+    , _asKind = "adsense#adStyle"
+    , _asFont = Nothing
+    , _asColors = Nothing
+    }
+
+-- | The style of the corners in the ad.
+asCorners :: Lens' AdStyle (Maybe Text)
+asCorners
+  = lens _asCorners (\ s a -> s{_asCorners = a})
+
+-- | Kind this is, in this case adsense#adStyle.
+asKind :: Lens' AdStyle Text
+asKind = lens _asKind (\ s a -> s{_asKind = a})
+
+-- | The font which is included in the style.
+asFont :: Lens' AdStyle (Maybe AdStyleFont)
+asFont = lens _asFont (\ s a -> s{_asFont = a})
+
+-- | The colors which are included in the style. These are represented as six
+-- hexadecimal characters, similar to HTML color codes, but without the
+-- leading hash.
+asColors :: Lens' AdStyle (Maybe AdStyleColors)
+asColors = lens _asColors (\ s a -> s{_asColors = a})
+
+instance FromJSON AdStyle where
+        parseJSON
+          = withObject "AdStyle"
+              (\ o ->
+                 AdStyle <$>
+                   (o .:? "corners") <*>
+                     (o .:? "kind" .!= "adsense#adStyle")
+                     <*> (o .:? "font")
+                     <*> (o .:? "colors"))
+
+instance ToJSON AdStyle where
+        toJSON AdStyle{..}
+          = object
+              (catMaybes
+                 [("corners" .=) <$> _asCorners,
+                  Just ("kind" .= _asKind), ("font" .=) <$> _asFont,
+                  ("colors" .=) <$> _asColors])
+
+-- | Settings specific to feed ads (AFF).
+--
+-- /See:/ 'adUnitFeedAdsSettings' smart constructor.
+data AdUnitFeedAdsSettings = AdUnitFeedAdsSettings
+    { _aufasFrequency        :: !(Maybe (Textual Int32))
+    , _aufasAdPosition       :: !(Maybe Text)
+    , _aufasType             :: !(Maybe Text)
+    , _aufasMinimumWordCount :: !(Maybe (Textual Int32))
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'AdUnitFeedAdsSettings' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'aufasFrequency'
+--
+-- * 'aufasAdPosition'
+--
+-- * 'aufasType'
+--
+-- * 'aufasMinimumWordCount'
+adUnitFeedAdsSettings
+    :: AdUnitFeedAdsSettings
+adUnitFeedAdsSettings =
+    AdUnitFeedAdsSettings
+    { _aufasFrequency = Nothing
+    , _aufasAdPosition = Nothing
+    , _aufasType = Nothing
+    , _aufasMinimumWordCount = Nothing
+    }
+
+-- | The frequency at which ads should appear in the feed (i.e. every N
+-- entries).
+aufasFrequency :: Lens' AdUnitFeedAdsSettings (Maybe Int32)
+aufasFrequency
+  = lens _aufasFrequency
+      (\ s a -> s{_aufasFrequency = a})
+      . mapping _Coerce
+
+-- | The position of the ads relative to the feed entries.
+aufasAdPosition :: Lens' AdUnitFeedAdsSettings (Maybe Text)
+aufasAdPosition
+  = lens _aufasAdPosition
+      (\ s a -> s{_aufasAdPosition = a})
+
+-- | The type of ads which should appear.
+aufasType :: Lens' AdUnitFeedAdsSettings (Maybe Text)
+aufasType
+  = lens _aufasType (\ s a -> s{_aufasType = a})
+
+-- | The minimum length an entry should be in order to have attached ads.
+aufasMinimumWordCount :: Lens' AdUnitFeedAdsSettings (Maybe Int32)
+aufasMinimumWordCount
+  = lens _aufasMinimumWordCount
+      (\ s a -> s{_aufasMinimumWordCount = a})
+      . mapping _Coerce
+
+instance FromJSON AdUnitFeedAdsSettings where
+        parseJSON
+          = withObject "AdUnitFeedAdsSettings"
+              (\ o ->
+                 AdUnitFeedAdsSettings <$>
+                   (o .:? "frequency") <*> (o .:? "adPosition") <*>
+                     (o .:? "type")
+                     <*> (o .:? "minimumWordCount"))
+
+instance ToJSON AdUnitFeedAdsSettings where
+        toJSON AdUnitFeedAdsSettings{..}
+          = object
+              (catMaybes
+                 [("frequency" .=) <$> _aufasFrequency,
+                  ("adPosition" .=) <$> _aufasAdPosition,
+                  ("type" .=) <$> _aufasType,
+                  ("minimumWordCount" .=) <$> _aufasMinimumWordCount])
+
+--
+-- /See:/ 'metadata' smart constructor.
+data Metadata = Metadata
+    { _mKind  :: !Text
+    , _mItems :: !(Maybe [ReportingMetadataEntry])
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'Metadata' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'mKind'
+--
+-- * 'mItems'
+metadata
+    :: Metadata
+metadata =
+    Metadata
+    { _mKind = "adsense#metadata"
+    , _mItems = Nothing
+    }
+
+-- | Kind of list this is, in this case adsense#metadata.
+mKind :: Lens' Metadata Text
+mKind = lens _mKind (\ s a -> s{_mKind = a})
+
+mItems :: Lens' Metadata [ReportingMetadataEntry]
+mItems
+  = lens _mItems (\ s a -> s{_mItems = a}) . _Default .
+      _Coerce
+
+instance FromJSON Metadata where
+        parseJSON
+          = withObject "Metadata"
+              (\ o ->
+                 Metadata <$>
+                   (o .:? "kind" .!= "adsense#metadata") <*>
+                     (o .:? "items" .!= mempty))
+
+instance ToJSON Metadata where
+        toJSON Metadata{..}
+          = object
+              (catMaybes
+                 [Just ("kind" .= _mKind), ("items" .=) <$> _mItems])
+
+--
+-- /See:/ 'customChannel' smart constructor.
+data CustomChannel = CustomChannel
+    { _cTargetingInfo :: !(Maybe CustomChannelTargetingInfo)
+    , _cKind          :: !Text
+    , _cName          :: !(Maybe Text)
+    , _cCode          :: !(Maybe Text)
+    , _cId            :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'CustomChannel' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'cTargetingInfo'
+--
+-- * 'cKind'
+--
+-- * 'cName'
+--
+-- * 'cCode'
+--
+-- * 'cId'
+customChannel
+    :: CustomChannel
+customChannel =
+    CustomChannel
+    { _cTargetingInfo = Nothing
+    , _cKind = "adsense#customChannel"
+    , _cName = Nothing
+    , _cCode = Nothing
+    , _cId = Nothing
+    }
+
+-- | The targeting information of this custom channel, if activated.
+cTargetingInfo :: Lens' CustomChannel (Maybe CustomChannelTargetingInfo)
+cTargetingInfo
+  = lens _cTargetingInfo
+      (\ s a -> s{_cTargetingInfo = a})
+
+-- | Kind of resource this is, in this case adsense#customChannel.
+cKind :: Lens' CustomChannel Text
+cKind = lens _cKind (\ s a -> s{_cKind = a})
+
+-- | Name of this custom channel.
+cName :: Lens' CustomChannel (Maybe Text)
+cName = lens _cName (\ s a -> s{_cName = a})
+
+-- | Code of this custom channel, not necessarily unique across ad clients.
+cCode :: Lens' CustomChannel (Maybe Text)
+cCode = lens _cCode (\ s a -> s{_cCode = a})
+
+-- | Unique identifier of this custom channel. This should be considered an
+-- opaque identifier; it is not safe to rely on it being in any particular
+-- format.
+cId :: Lens' CustomChannel (Maybe Text)
+cId = lens _cId (\ s a -> s{_cId = a})
+
+instance FromJSON CustomChannel where
+        parseJSON
+          = withObject "CustomChannel"
+              (\ o ->
+                 CustomChannel <$>
+                   (o .:? "targetingInfo") <*>
+                     (o .:? "kind" .!= "adsense#customChannel")
+                     <*> (o .:? "name")
+                     <*> (o .:? "code")
+                     <*> (o .:? "id"))
+
+instance ToJSON CustomChannel where
+        toJSON CustomChannel{..}
+          = object
+              (catMaybes
+                 [("targetingInfo" .=) <$> _cTargetingInfo,
+                  Just ("kind" .= _cKind), ("name" .=) <$> _cName,
+                  ("code" .=) <$> _cCode, ("id" .=) <$> _cId])
+
+--
+-- /See:/ 'urlChannel' smart constructor.
+data URLChannel = URLChannel
+    { _urlcKind       :: !Text
+    , _urlcId         :: !(Maybe Text)
+    , _urlcURLPattern :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'URLChannel' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'urlcKind'
+--
+-- * 'urlcId'
+--
+-- * 'urlcURLPattern'
+urlChannel
+    :: URLChannel
+urlChannel =
+    URLChannel
+    { _urlcKind = "adsense#urlChannel"
+    , _urlcId = Nothing
+    , _urlcURLPattern = Nothing
+    }
+
+-- | Kind of resource this is, in this case adsense#urlChannel.
+urlcKind :: Lens' URLChannel Text
+urlcKind = lens _urlcKind (\ s a -> s{_urlcKind = a})
+
+-- | Unique identifier of this URL channel. This should be considered an
+-- opaque identifier; it is not safe to rely on it being in any particular
+-- format.
+urlcId :: Lens' URLChannel (Maybe Text)
+urlcId = lens _urlcId (\ s a -> s{_urlcId = a})
+
+-- | URL Pattern of this URL channel. Does not include \"http:\/\/\" or
+-- \"https:\/\/\". Example: www.example.com\/home
+urlcURLPattern :: Lens' URLChannel (Maybe Text)
+urlcURLPattern
+  = lens _urlcURLPattern
+      (\ s a -> s{_urlcURLPattern = a})
+
+instance FromJSON URLChannel where
+        parseJSON
+          = withObject "URLChannel"
+              (\ o ->
+                 URLChannel <$>
+                   (o .:? "kind" .!= "adsense#urlChannel") <*>
+                     (o .:? "id")
+                     <*> (o .:? "urlPattern"))
+
+instance ToJSON URLChannel where
+        toJSON URLChannel{..}
+          = object
+              (catMaybes
+                 [Just ("kind" .= _urlcKind), ("id" .=) <$> _urlcId,
+                  ("urlPattern" .=) <$> _urlcURLPattern])
+
+--
+-- /See:/ 'adCode' smart constructor.
+data AdCode = AdCode
+    { _addKind   :: !Text
+    , _addAdCode :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'AdCode' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'addKind'
+--
+-- * 'addAdCode'
+adCode
+    :: AdCode
+adCode =
+    AdCode
+    { _addKind = "adsense#adCode"
+    , _addAdCode = Nothing
+    }
+
+-- | Kind this is, in this case adsense#adCode.
+addKind :: Lens' AdCode Text
+addKind = lens _addKind (\ s a -> s{_addKind = a})
+
+-- | The ad code snippet.
+addAdCode :: Lens' AdCode (Maybe Text)
+addAdCode
+  = lens _addAdCode (\ s a -> s{_addAdCode = a})
+
+instance FromJSON AdCode where
+        parseJSON
+          = withObject "AdCode"
+              (\ o ->
+                 AdCode <$>
+                   (o .:? "kind" .!= "adsense#adCode") <*>
+                     (o .:? "adCode"))
+
+instance ToJSON AdCode where
+        toJSON AdCode{..}
+          = object
+              (catMaybes
+                 [Just ("kind" .= _addKind),
+                  ("adCode" .=) <$> _addAdCode])
+
+--
+-- /See:/ 'adsenseReportsGenerateResponse' smart constructor.
+data AdsenseReportsGenerateResponse = AdsenseReportsGenerateResponse
+    { _argrKind             :: !Text
+    , _argrAverages         :: !(Maybe [Text])
+    , _argrEndDate          :: !(Maybe Text)
+    , _argrWarnings         :: !(Maybe [Text])
+    , _argrRows             :: !(Maybe [[Text]])
+    , _argrTotals           :: !(Maybe [Text])
+    , _argrStartDate        :: !(Maybe Text)
+    , _argrHeaders          :: !(Maybe [AdsenseReportsGenerateResponseHeadersItem])
+    , _argrTotalMatchedRows :: !(Maybe (Textual Int64))
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'AdsenseReportsGenerateResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'argrKind'
+--
+-- * 'argrAverages'
+--
+-- * 'argrEndDate'
+--
+-- * 'argrWarnings'
+--
+-- * 'argrRows'
+--
+-- * 'argrTotals'
+--
+-- * 'argrStartDate'
+--
+-- * 'argrHeaders'
+--
+-- * 'argrTotalMatchedRows'
+adsenseReportsGenerateResponse
+    :: AdsenseReportsGenerateResponse
+adsenseReportsGenerateResponse =
+    AdsenseReportsGenerateResponse
+    { _argrKind = "adsense#report"
+    , _argrAverages = Nothing
+    , _argrEndDate = Nothing
+    , _argrWarnings = Nothing
+    , _argrRows = Nothing
+    , _argrTotals = Nothing
+    , _argrStartDate = Nothing
+    , _argrHeaders = Nothing
+    , _argrTotalMatchedRows = Nothing
+    }
+
+-- | Kind this is, in this case adsense#report.
+argrKind :: Lens' AdsenseReportsGenerateResponse Text
+argrKind = lens _argrKind (\ s a -> s{_argrKind = a})
+
+-- | The averages of the report. This is the same length as any other row in
+-- the report; cells corresponding to dimension columns are empty.
+argrAverages :: Lens' AdsenseReportsGenerateResponse [Text]
+argrAverages
+  = lens _argrAverages (\ s a -> s{_argrAverages = a})
+      . _Default
+      . _Coerce
+
+-- | The requested end date in yyyy-mm-dd format.
+argrEndDate :: Lens' AdsenseReportsGenerateResponse (Maybe Text)
+argrEndDate
+  = lens _argrEndDate (\ s a -> s{_argrEndDate = a})
+
+-- | Any warnings associated with generation of the report.
+argrWarnings :: Lens' AdsenseReportsGenerateResponse [Text]
+argrWarnings
+  = lens _argrWarnings (\ s a -> s{_argrWarnings = a})
+      . _Default
+      . _Coerce
+
+-- | The output rows of the report. Each row is a list of cells; one for each
+-- dimension in the request, followed by one for each metric in the
+-- request. The dimension cells contain strings, and the metric cells
+-- contain numbers.
+argrRows :: Lens' AdsenseReportsGenerateResponse [[Text]]
+argrRows
+  = lens _argrRows (\ s a -> s{_argrRows = a}) .
+      _Default
+      . _Coerce
+
+-- | The totals of the report. This is the same length as any other row in
+-- the report; cells corresponding to dimension columns are empty.
+argrTotals :: Lens' AdsenseReportsGenerateResponse [Text]
+argrTotals
+  = lens _argrTotals (\ s a -> s{_argrTotals = a}) .
+      _Default
+      . _Coerce
+
+-- | The requested start date in yyyy-mm-dd format.
+argrStartDate :: Lens' AdsenseReportsGenerateResponse (Maybe Text)
+argrStartDate
+  = lens _argrStartDate
+      (\ s a -> s{_argrStartDate = a})
+
+-- | The header information of the columns requested in the report. This is a
+-- list of headers; one for each dimension in the request, followed by one
+-- for each metric in the request.
+argrHeaders :: Lens' AdsenseReportsGenerateResponse [AdsenseReportsGenerateResponseHeadersItem]
+argrHeaders
+  = lens _argrHeaders (\ s a -> s{_argrHeaders = a}) .
+      _Default
+      . _Coerce
+
+-- | The total number of rows matched by the report request. Fewer rows may
+-- be returned in the response due to being limited by the row count
+-- requested or the report row limit.
+argrTotalMatchedRows :: Lens' AdsenseReportsGenerateResponse (Maybe Int64)
+argrTotalMatchedRows
+  = lens _argrTotalMatchedRows
+      (\ s a -> s{_argrTotalMatchedRows = a})
+      . mapping _Coerce
+
+instance FromJSON AdsenseReportsGenerateResponse
+         where
+        parseJSON
+          = withObject "AdsenseReportsGenerateResponse"
+              (\ o ->
+                 AdsenseReportsGenerateResponse <$>
+                   (o .:? "kind" .!= "adsense#report") <*>
+                     (o .:? "averages" .!= mempty)
+                     <*> (o .:? "endDate")
+                     <*> (o .:? "warnings" .!= mempty)
+                     <*> (o .:? "rows" .!= mempty)
+                     <*> (o .:? "totals" .!= mempty)
+                     <*> (o .:? "startDate")
+                     <*> (o .:? "headers" .!= mempty)
+                     <*> (o .:? "totalMatchedRows"))
+
+instance ToJSON AdsenseReportsGenerateResponse where
+        toJSON AdsenseReportsGenerateResponse{..}
+          = object
+              (catMaybes
+                 [Just ("kind" .= _argrKind),
+                  ("averages" .=) <$> _argrAverages,
+                  ("endDate" .=) <$> _argrEndDate,
+                  ("warnings" .=) <$> _argrWarnings,
+                  ("rows" .=) <$> _argrRows,
+                  ("totals" .=) <$> _argrTotals,
+                  ("startDate" .=) <$> _argrStartDate,
+                  ("headers" .=) <$> _argrHeaders,
+                  ("totalMatchedRows" .=) <$> _argrTotalMatchedRows])
+
+-- | Settings specific to content ads (AFC) and highend mobile content ads
+-- (AFMC).
+--
+-- /See:/ 'adUnitContentAdsSettings' smart constructor.
+data AdUnitContentAdsSettings = AdUnitContentAdsSettings
+    { _aucasBackupOption :: !(Maybe AdUnitContentAdsSettingsBackupOption)
+    , _aucasSize         :: !(Maybe Text)
+    , _aucasType         :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'AdUnitContentAdsSettings' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'aucasBackupOption'
+--
+-- * 'aucasSize'
+--
+-- * 'aucasType'
+adUnitContentAdsSettings
+    :: AdUnitContentAdsSettings
+adUnitContentAdsSettings =
+    AdUnitContentAdsSettings
+    { _aucasBackupOption = Nothing
+    , _aucasSize = Nothing
+    , _aucasType = Nothing
+    }
+
+-- | The backup option to be used in instances where no ad is available.
+aucasBackupOption :: Lens' AdUnitContentAdsSettings (Maybe AdUnitContentAdsSettingsBackupOption)
+aucasBackupOption
+  = lens _aucasBackupOption
+      (\ s a -> s{_aucasBackupOption = a})
+
+-- | Size of this ad unit.
+aucasSize :: Lens' AdUnitContentAdsSettings (Maybe Text)
+aucasSize
+  = lens _aucasSize (\ s a -> s{_aucasSize = a})
+
+-- | Type of this ad unit.
+aucasType :: Lens' AdUnitContentAdsSettings (Maybe Text)
+aucasType
+  = lens _aucasType (\ s a -> s{_aucasType = a})
+
+instance FromJSON AdUnitContentAdsSettings where
+        parseJSON
+          = withObject "AdUnitContentAdsSettings"
+              (\ o ->
+                 AdUnitContentAdsSettings <$>
+                   (o .:? "backupOption") <*> (o .:? "size") <*>
+                     (o .:? "type"))
+
+instance ToJSON AdUnitContentAdsSettings where
+        toJSON AdUnitContentAdsSettings{..}
+          = object
+              (catMaybes
+                 [("backupOption" .=) <$> _aucasBackupOption,
+                  ("size" .=) <$> _aucasSize,
+                  ("type" .=) <$> _aucasType])
+
+--
+-- /See:/ 'payments' smart constructor.
+data Payments = Payments
+    { _payKind  :: !Text
+    , _payItems :: !(Maybe [Payment])
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'Payments' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'payKind'
+--
+-- * 'payItems'
+payments
+    :: Payments
+payments =
+    Payments
+    { _payKind = "adsense#payments"
+    , _payItems = Nothing
+    }
+
+-- | Kind of list this is, in this case adsense#payments.
+payKind :: Lens' Payments Text
+payKind = lens _payKind (\ s a -> s{_payKind = a})
+
+-- | The list of Payments for the account. One or both of a) the account\'s
+-- most recent payment; and b) the account\'s upcoming payment.
+payItems :: Lens' Payments [Payment]
+payItems
+  = lens _payItems (\ s a -> s{_payItems = a}) .
+      _Default
+      . _Coerce
+
+instance FromJSON Payments where
+        parseJSON
+          = withObject "Payments"
+              (\ o ->
+                 Payments <$>
+                   (o .:? "kind" .!= "adsense#payments") <*>
+                     (o .:? "items" .!= mempty))
+
+instance ToJSON Payments where
+        toJSON Payments{..}
+          = object
+              (catMaybes
+                 [Just ("kind" .= _payKind),
+                  ("items" .=) <$> _payItems])
diff --git a/gen/Network/Google/AdSense/Types/Sum.hs b/gen/Network/Google/AdSense/Types/Sum.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/AdSense/Types/Sum.hs
@@ -0,0 +1,19 @@
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE LambdaCase         #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- |
+-- Module      : Network.Google.AdSense.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.AdSense.Types.Sum where
+
+import           Network.Google.Prelude
diff --git a/gen/Network/Google/Resource/AdSense/Accounts/AdClients/List.hs b/gen/Network/Google/Resource/AdSense/Accounts/AdClients/List.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/AdSense/Accounts/AdClients/List.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.AdSense.Accounts.AdClients.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 ad clients in the specified account.
+--
+-- /See:/ <https://developers.google.com/adsense/management/ AdSense Management API Reference> for @adsense.accounts.adclients.list@.
+module Network.Google.Resource.AdSense.Accounts.AdClients.List
+    (
+    -- * REST Resource
+      AccountsAdClientsListResource
+
+    -- * Creating a Request
+    , accountsAdClientsList
+    , AccountsAdClientsList
+
+    -- * Request Lenses
+    , aaclAccountId
+    , aaclPageToken
+    , aaclMaxResults
+    ) where
+
+import           Network.Google.AdSense.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @adsense.accounts.adclients.list@ method which the
+-- 'AccountsAdClientsList' request conforms to.
+type AccountsAdClientsListResource =
+     "adsense" :>
+       "v1.4" :>
+         "accounts" :>
+           Capture "accountId" Text :>
+             "adclients" :>
+               QueryParam "pageToken" Text :>
+                 QueryParam "maxResults" (Textual Int32) :>
+                   QueryParam "alt" AltJSON :> Get '[JSON] AdClients
+
+-- | List all ad clients in the specified account.
+--
+-- /See:/ 'accountsAdClientsList' smart constructor.
+data AccountsAdClientsList = AccountsAdClientsList
+    { _aaclAccountId  :: !Text
+    , _aaclPageToken  :: !(Maybe Text)
+    , _aaclMaxResults :: !(Maybe (Textual Int32))
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'AccountsAdClientsList' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'aaclAccountId'
+--
+-- * 'aaclPageToken'
+--
+-- * 'aaclMaxResults'
+accountsAdClientsList
+    :: Text -- ^ 'aaclAccountId'
+    -> AccountsAdClientsList
+accountsAdClientsList pAaclAccountId_ =
+    AccountsAdClientsList
+    { _aaclAccountId = pAaclAccountId_
+    , _aaclPageToken = Nothing
+    , _aaclMaxResults = Nothing
+    }
+
+-- | Account for which to list ad clients.
+aaclAccountId :: Lens' AccountsAdClientsList Text
+aaclAccountId
+  = lens _aaclAccountId
+      (\ s a -> s{_aaclAccountId = a})
+
+-- | A continuation token, used to page through ad clients. To retrieve the
+-- next page, set this parameter to the value of \"nextPageToken\" from the
+-- previous response.
+aaclPageToken :: Lens' AccountsAdClientsList (Maybe Text)
+aaclPageToken
+  = lens _aaclPageToken
+      (\ s a -> s{_aaclPageToken = a})
+
+-- | The maximum number of ad clients to include in the response, used for
+-- paging.
+aaclMaxResults :: Lens' AccountsAdClientsList (Maybe Int32)
+aaclMaxResults
+  = lens _aaclMaxResults
+      (\ s a -> s{_aaclMaxResults = a})
+      . mapping _Coerce
+
+instance GoogleRequest AccountsAdClientsList where
+        type Rs AccountsAdClientsList = AdClients
+        requestClient AccountsAdClientsList{..}
+          = go _aaclAccountId _aaclPageToken _aaclMaxResults
+              (Just AltJSON)
+              adSenseService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy AccountsAdClientsListResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/AdSense/Accounts/AdUnits/CustomChannels/List.hs b/gen/Network/Google/Resource/AdSense/Accounts/AdUnits/CustomChannels/List.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/AdSense/Accounts/AdUnits/CustomChannels/List.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.AdSense.Accounts.AdUnits.CustomChannels.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 custom channels which the specified ad unit belongs to.
+--
+-- /See:/ <https://developers.google.com/adsense/management/ AdSense Management API Reference> for @adsense.accounts.adunits.customchannels.list@.
+module Network.Google.Resource.AdSense.Accounts.AdUnits.CustomChannels.List
+    (
+    -- * REST Resource
+      AccountsAdUnitsCustomChannelsListResource
+
+    -- * Creating a Request
+    , accountsAdUnitsCustomChannelsList
+    , AccountsAdUnitsCustomChannelsList
+
+    -- * Request Lenses
+    , aaucclAdUnitId
+    , aaucclAdClientId
+    , aaucclAccountId
+    , aaucclPageToken
+    , aaucclMaxResults
+    ) where
+
+import           Network.Google.AdSense.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @adsense.accounts.adunits.customchannels.list@ method which the
+-- 'AccountsAdUnitsCustomChannelsList' request conforms to.
+type AccountsAdUnitsCustomChannelsListResource =
+     "adsense" :>
+       "v1.4" :>
+         "accounts" :>
+           Capture "accountId" Text :>
+             "adclients" :>
+               Capture "adClientId" Text :>
+                 "adunits" :>
+                   Capture "adUnitId" Text :>
+                     "customchannels" :>
+                       QueryParam "pageToken" Text :>
+                         QueryParam "maxResults" (Textual Int32) :>
+                           QueryParam "alt" AltJSON :>
+                             Get '[JSON] CustomChannels
+
+-- | List all custom channels which the specified ad unit belongs to.
+--
+-- /See:/ 'accountsAdUnitsCustomChannelsList' smart constructor.
+data AccountsAdUnitsCustomChannelsList = AccountsAdUnitsCustomChannelsList
+    { _aaucclAdUnitId   :: !Text
+    , _aaucclAdClientId :: !Text
+    , _aaucclAccountId  :: !Text
+    , _aaucclPageToken  :: !(Maybe Text)
+    , _aaucclMaxResults :: !(Maybe (Textual Int32))
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'AccountsAdUnitsCustomChannelsList' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'aaucclAdUnitId'
+--
+-- * 'aaucclAdClientId'
+--
+-- * 'aaucclAccountId'
+--
+-- * 'aaucclPageToken'
+--
+-- * 'aaucclMaxResults'
+accountsAdUnitsCustomChannelsList
+    :: Text -- ^ 'aaucclAdUnitId'
+    -> Text -- ^ 'aaucclAdClientId'
+    -> Text -- ^ 'aaucclAccountId'
+    -> AccountsAdUnitsCustomChannelsList
+accountsAdUnitsCustomChannelsList pAaucclAdUnitId_ pAaucclAdClientId_ pAaucclAccountId_ =
+    AccountsAdUnitsCustomChannelsList
+    { _aaucclAdUnitId = pAaucclAdUnitId_
+    , _aaucclAdClientId = pAaucclAdClientId_
+    , _aaucclAccountId = pAaucclAccountId_
+    , _aaucclPageToken = Nothing
+    , _aaucclMaxResults = Nothing
+    }
+
+-- | Ad unit for which to list custom channels.
+aaucclAdUnitId :: Lens' AccountsAdUnitsCustomChannelsList Text
+aaucclAdUnitId
+  = lens _aaucclAdUnitId
+      (\ s a -> s{_aaucclAdUnitId = a})
+
+-- | Ad client which contains the ad unit.
+aaucclAdClientId :: Lens' AccountsAdUnitsCustomChannelsList Text
+aaucclAdClientId
+  = lens _aaucclAdClientId
+      (\ s a -> s{_aaucclAdClientId = a})
+
+-- | Account to which the ad client belongs.
+aaucclAccountId :: Lens' AccountsAdUnitsCustomChannelsList Text
+aaucclAccountId
+  = lens _aaucclAccountId
+      (\ s a -> s{_aaucclAccountId = a})
+
+-- | A continuation token, used to page through custom channels. To retrieve
+-- the next page, set this parameter to the value of \"nextPageToken\" from
+-- the previous response.
+aaucclPageToken :: Lens' AccountsAdUnitsCustomChannelsList (Maybe Text)
+aaucclPageToken
+  = lens _aaucclPageToken
+      (\ s a -> s{_aaucclPageToken = a})
+
+-- | The maximum number of custom channels to include in the response, used
+-- for paging.
+aaucclMaxResults :: Lens' AccountsAdUnitsCustomChannelsList (Maybe Int32)
+aaucclMaxResults
+  = lens _aaucclMaxResults
+      (\ s a -> s{_aaucclMaxResults = a})
+      . mapping _Coerce
+
+instance GoogleRequest
+         AccountsAdUnitsCustomChannelsList where
+        type Rs AccountsAdUnitsCustomChannelsList =
+             CustomChannels
+        requestClient AccountsAdUnitsCustomChannelsList{..}
+          = go _aaucclAccountId _aaucclAdClientId
+              _aaucclAdUnitId
+              _aaucclPageToken
+              _aaucclMaxResults
+              (Just AltJSON)
+              adSenseService
+          where go
+                  = buildClient
+                      (Proxy ::
+                         Proxy AccountsAdUnitsCustomChannelsListResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/AdSense/Accounts/AdUnits/Get.hs b/gen/Network/Google/Resource/AdSense/Accounts/AdUnits/Get.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/AdSense/Accounts/AdUnits/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.AdSense.Accounts.AdUnits.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)
+--
+-- Gets the specified ad unit in the specified ad client for the specified
+-- account.
+--
+-- /See:/ <https://developers.google.com/adsense/management/ AdSense Management API Reference> for @adsense.accounts.adunits.get@.
+module Network.Google.Resource.AdSense.Accounts.AdUnits.Get
+    (
+    -- * REST Resource
+      AccountsAdUnitsGetResource
+
+    -- * Creating a Request
+    , accountsAdUnitsGet
+    , AccountsAdUnitsGet
+
+    -- * Request Lenses
+    , aaugAdUnitId
+    , aaugAdClientId
+    , aaugAccountId
+    ) where
+
+import           Network.Google.AdSense.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @adsense.accounts.adunits.get@ method which the
+-- 'AccountsAdUnitsGet' request conforms to.
+type AccountsAdUnitsGetResource =
+     "adsense" :>
+       "v1.4" :>
+         "accounts" :>
+           Capture "accountId" Text :>
+             "adclients" :>
+               Capture "adClientId" Text :>
+                 "adunits" :>
+                   Capture "adUnitId" Text :>
+                     QueryParam "alt" AltJSON :> Get '[JSON] AdUnit
+
+-- | Gets the specified ad unit in the specified ad client for the specified
+-- account.
+--
+-- /See:/ 'accountsAdUnitsGet' smart constructor.
+data AccountsAdUnitsGet = AccountsAdUnitsGet
+    { _aaugAdUnitId   :: !Text
+    , _aaugAdClientId :: !Text
+    , _aaugAccountId  :: !Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'AccountsAdUnitsGet' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'aaugAdUnitId'
+--
+-- * 'aaugAdClientId'
+--
+-- * 'aaugAccountId'
+accountsAdUnitsGet
+    :: Text -- ^ 'aaugAdUnitId'
+    -> Text -- ^ 'aaugAdClientId'
+    -> Text -- ^ 'aaugAccountId'
+    -> AccountsAdUnitsGet
+accountsAdUnitsGet pAaugAdUnitId_ pAaugAdClientId_ pAaugAccountId_ =
+    AccountsAdUnitsGet
+    { _aaugAdUnitId = pAaugAdUnitId_
+    , _aaugAdClientId = pAaugAdClientId_
+    , _aaugAccountId = pAaugAccountId_
+    }
+
+-- | Ad unit to retrieve.
+aaugAdUnitId :: Lens' AccountsAdUnitsGet Text
+aaugAdUnitId
+  = lens _aaugAdUnitId (\ s a -> s{_aaugAdUnitId = a})
+
+-- | Ad client for which to get the ad unit.
+aaugAdClientId :: Lens' AccountsAdUnitsGet Text
+aaugAdClientId
+  = lens _aaugAdClientId
+      (\ s a -> s{_aaugAdClientId = a})
+
+-- | Account to which the ad client belongs.
+aaugAccountId :: Lens' AccountsAdUnitsGet Text
+aaugAccountId
+  = lens _aaugAccountId
+      (\ s a -> s{_aaugAccountId = a})
+
+instance GoogleRequest AccountsAdUnitsGet where
+        type Rs AccountsAdUnitsGet = AdUnit
+        requestClient AccountsAdUnitsGet{..}
+          = go _aaugAccountId _aaugAdClientId _aaugAdUnitId
+              (Just AltJSON)
+              adSenseService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy AccountsAdUnitsGetResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/AdSense/Accounts/AdUnits/GetAdCode.hs b/gen/Network/Google/Resource/AdSense/Accounts/AdUnits/GetAdCode.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/AdSense/Accounts/AdUnits/GetAdCode.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.AdSense.Accounts.AdUnits.GetAdCode
+-- 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)
+--
+-- Get ad code for the specified ad unit.
+--
+-- /See:/ <https://developers.google.com/adsense/management/ AdSense Management API Reference> for @adsense.accounts.adunits.getAdCode@.
+module Network.Google.Resource.AdSense.Accounts.AdUnits.GetAdCode
+    (
+    -- * REST Resource
+      AccountsAdUnitsGetAdCodeResource
+
+    -- * Creating a Request
+    , accountsAdUnitsGetAdCode
+    , AccountsAdUnitsGetAdCode
+
+    -- * Request Lenses
+    , aaugacAdUnitId
+    , aaugacAdClientId
+    , aaugacAccountId
+    ) where
+
+import           Network.Google.AdSense.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @adsense.accounts.adunits.getAdCode@ method which the
+-- 'AccountsAdUnitsGetAdCode' request conforms to.
+type AccountsAdUnitsGetAdCodeResource =
+     "adsense" :>
+       "v1.4" :>
+         "accounts" :>
+           Capture "accountId" Text :>
+             "adclients" :>
+               Capture "adClientId" Text :>
+                 "adunits" :>
+                   Capture "adUnitId" Text :>
+                     "adcode" :>
+                       QueryParam "alt" AltJSON :> Get '[JSON] AdCode
+
+-- | Get ad code for the specified ad unit.
+--
+-- /See:/ 'accountsAdUnitsGetAdCode' smart constructor.
+data AccountsAdUnitsGetAdCode = AccountsAdUnitsGetAdCode
+    { _aaugacAdUnitId   :: !Text
+    , _aaugacAdClientId :: !Text
+    , _aaugacAccountId  :: !Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'AccountsAdUnitsGetAdCode' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'aaugacAdUnitId'
+--
+-- * 'aaugacAdClientId'
+--
+-- * 'aaugacAccountId'
+accountsAdUnitsGetAdCode
+    :: Text -- ^ 'aaugacAdUnitId'
+    -> Text -- ^ 'aaugacAdClientId'
+    -> Text -- ^ 'aaugacAccountId'
+    -> AccountsAdUnitsGetAdCode
+accountsAdUnitsGetAdCode pAaugacAdUnitId_ pAaugacAdClientId_ pAaugacAccountId_ =
+    AccountsAdUnitsGetAdCode
+    { _aaugacAdUnitId = pAaugacAdUnitId_
+    , _aaugacAdClientId = pAaugacAdClientId_
+    , _aaugacAccountId = pAaugacAccountId_
+    }
+
+-- | Ad unit to get the code for.
+aaugacAdUnitId :: Lens' AccountsAdUnitsGetAdCode Text
+aaugacAdUnitId
+  = lens _aaugacAdUnitId
+      (\ s a -> s{_aaugacAdUnitId = a})
+
+-- | Ad client with contains the ad unit.
+aaugacAdClientId :: Lens' AccountsAdUnitsGetAdCode Text
+aaugacAdClientId
+  = lens _aaugacAdClientId
+      (\ s a -> s{_aaugacAdClientId = a})
+
+-- | Account which contains the ad client.
+aaugacAccountId :: Lens' AccountsAdUnitsGetAdCode Text
+aaugacAccountId
+  = lens _aaugacAccountId
+      (\ s a -> s{_aaugacAccountId = a})
+
+instance GoogleRequest AccountsAdUnitsGetAdCode where
+        type Rs AccountsAdUnitsGetAdCode = AdCode
+        requestClient AccountsAdUnitsGetAdCode{..}
+          = go _aaugacAccountId _aaugacAdClientId
+              _aaugacAdUnitId
+              (Just AltJSON)
+              adSenseService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy AccountsAdUnitsGetAdCodeResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/AdSense/Accounts/AdUnits/List.hs b/gen/Network/Google/Resource/AdSense/Accounts/AdUnits/List.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/AdSense/Accounts/AdUnits/List.hs
@@ -0,0 +1,144 @@
+{-# 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.AdSense.Accounts.AdUnits.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 ad units in the specified ad client for the specified account.
+--
+-- /See:/ <https://developers.google.com/adsense/management/ AdSense Management API Reference> for @adsense.accounts.adunits.list@.
+module Network.Google.Resource.AdSense.Accounts.AdUnits.List
+    (
+    -- * REST Resource
+      AccountsAdUnitsListResource
+
+    -- * Creating a Request
+    , accountsAdUnitsList
+    , AccountsAdUnitsList
+
+    -- * Request Lenses
+    , aaulIncludeInactive
+    , aaulAdClientId
+    , aaulAccountId
+    , aaulPageToken
+    , aaulMaxResults
+    ) where
+
+import           Network.Google.AdSense.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @adsense.accounts.adunits.list@ method which the
+-- 'AccountsAdUnitsList' request conforms to.
+type AccountsAdUnitsListResource =
+     "adsense" :>
+       "v1.4" :>
+         "accounts" :>
+           Capture "accountId" Text :>
+             "adclients" :>
+               Capture "adClientId" Text :>
+                 "adunits" :>
+                   QueryParam "includeInactive" Bool :>
+                     QueryParam "pageToken" Text :>
+                       QueryParam "maxResults" (Textual Int32) :>
+                         QueryParam "alt" AltJSON :> Get '[JSON] AdUnits
+
+-- | List all ad units in the specified ad client for the specified account.
+--
+-- /See:/ 'accountsAdUnitsList' smart constructor.
+data AccountsAdUnitsList = AccountsAdUnitsList
+    { _aaulIncludeInactive :: !(Maybe Bool)
+    , _aaulAdClientId      :: !Text
+    , _aaulAccountId       :: !Text
+    , _aaulPageToken       :: !(Maybe Text)
+    , _aaulMaxResults      :: !(Maybe (Textual Int32))
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'AccountsAdUnitsList' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'aaulIncludeInactive'
+--
+-- * 'aaulAdClientId'
+--
+-- * 'aaulAccountId'
+--
+-- * 'aaulPageToken'
+--
+-- * 'aaulMaxResults'
+accountsAdUnitsList
+    :: Text -- ^ 'aaulAdClientId'
+    -> Text -- ^ 'aaulAccountId'
+    -> AccountsAdUnitsList
+accountsAdUnitsList pAaulAdClientId_ pAaulAccountId_ =
+    AccountsAdUnitsList
+    { _aaulIncludeInactive = Nothing
+    , _aaulAdClientId = pAaulAdClientId_
+    , _aaulAccountId = pAaulAccountId_
+    , _aaulPageToken = Nothing
+    , _aaulMaxResults = Nothing
+    }
+
+-- | Whether to include inactive ad units. Default: true.
+aaulIncludeInactive :: Lens' AccountsAdUnitsList (Maybe Bool)
+aaulIncludeInactive
+  = lens _aaulIncludeInactive
+      (\ s a -> s{_aaulIncludeInactive = a})
+
+-- | Ad client for which to list ad units.
+aaulAdClientId :: Lens' AccountsAdUnitsList Text
+aaulAdClientId
+  = lens _aaulAdClientId
+      (\ s a -> s{_aaulAdClientId = a})
+
+-- | Account to which the ad client belongs.
+aaulAccountId :: Lens' AccountsAdUnitsList Text
+aaulAccountId
+  = lens _aaulAccountId
+      (\ s a -> s{_aaulAccountId = a})
+
+-- | A continuation token, used to page through ad units. To retrieve the
+-- next page, set this parameter to the value of \"nextPageToken\" from the
+-- previous response.
+aaulPageToken :: Lens' AccountsAdUnitsList (Maybe Text)
+aaulPageToken
+  = lens _aaulPageToken
+      (\ s a -> s{_aaulPageToken = a})
+
+-- | The maximum number of ad units to include in the response, used for
+-- paging.
+aaulMaxResults :: Lens' AccountsAdUnitsList (Maybe Int32)
+aaulMaxResults
+  = lens _aaulMaxResults
+      (\ s a -> s{_aaulMaxResults = a})
+      . mapping _Coerce
+
+instance GoogleRequest AccountsAdUnitsList where
+        type Rs AccountsAdUnitsList = AdUnits
+        requestClient AccountsAdUnitsList{..}
+          = go _aaulAccountId _aaulAdClientId
+              _aaulIncludeInactive
+              _aaulPageToken
+              _aaulMaxResults
+              (Just AltJSON)
+              adSenseService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy AccountsAdUnitsListResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/AdSense/Accounts/Alerts/Delete.hs b/gen/Network/Google/Resource/AdSense/Accounts/Alerts/Delete.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/AdSense/Accounts/Alerts/Delete.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.AdSense.Accounts.Alerts.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)
+--
+-- Dismiss (delete) the specified alert from the specified publisher
+-- AdSense account.
+--
+-- /See:/ <https://developers.google.com/adsense/management/ AdSense Management API Reference> for @adsense.accounts.alerts.delete@.
+module Network.Google.Resource.AdSense.Accounts.Alerts.Delete
+    (
+    -- * REST Resource
+      AccountsAlertsDeleteResource
+
+    -- * Creating a Request
+    , accountsAlertsDelete
+    , AccountsAlertsDelete
+
+    -- * Request Lenses
+    , aadAlertId
+    , aadAccountId
+    ) where
+
+import           Network.Google.AdSense.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @adsense.accounts.alerts.delete@ method which the
+-- 'AccountsAlertsDelete' request conforms to.
+type AccountsAlertsDeleteResource =
+     "adsense" :>
+       "v1.4" :>
+         "accounts" :>
+           Capture "accountId" Text :>
+             "alerts" :>
+               Capture "alertId" Text :>
+                 QueryParam "alt" AltJSON :> Delete '[JSON] ()
+
+-- | Dismiss (delete) the specified alert from the specified publisher
+-- AdSense account.
+--
+-- /See:/ 'accountsAlertsDelete' smart constructor.
+data AccountsAlertsDelete = AccountsAlertsDelete
+    { _aadAlertId   :: !Text
+    , _aadAccountId :: !Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'AccountsAlertsDelete' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'aadAlertId'
+--
+-- * 'aadAccountId'
+accountsAlertsDelete
+    :: Text -- ^ 'aadAlertId'
+    -> Text -- ^ 'aadAccountId'
+    -> AccountsAlertsDelete
+accountsAlertsDelete pAadAlertId_ pAadAccountId_ =
+    AccountsAlertsDelete
+    { _aadAlertId = pAadAlertId_
+    , _aadAccountId = pAadAccountId_
+    }
+
+-- | Alert to delete.
+aadAlertId :: Lens' AccountsAlertsDelete Text
+aadAlertId
+  = lens _aadAlertId (\ s a -> s{_aadAlertId = a})
+
+-- | Account which contains the ad unit.
+aadAccountId :: Lens' AccountsAlertsDelete Text
+aadAccountId
+  = lens _aadAccountId (\ s a -> s{_aadAccountId = a})
+
+instance GoogleRequest AccountsAlertsDelete where
+        type Rs AccountsAlertsDelete = ()
+        requestClient AccountsAlertsDelete{..}
+          = go _aadAccountId _aadAlertId (Just AltJSON)
+              adSenseService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy AccountsAlertsDeleteResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/AdSense/Accounts/Alerts/List.hs b/gen/Network/Google/Resource/AdSense/Accounts/Alerts/List.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/AdSense/Accounts/Alerts/List.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.AdSense.Accounts.Alerts.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 the alerts for the specified AdSense account.
+--
+-- /See:/ <https://developers.google.com/adsense/management/ AdSense Management API Reference> for @adsense.accounts.alerts.list@.
+module Network.Google.Resource.AdSense.Accounts.Alerts.List
+    (
+    -- * REST Resource
+      AccountsAlertsListResource
+
+    -- * Creating a Request
+    , accountsAlertsList
+    , AccountsAlertsList
+
+    -- * Request Lenses
+    , aalLocale
+    , aalAccountId
+    ) where
+
+import           Network.Google.AdSense.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @adsense.accounts.alerts.list@ method which the
+-- 'AccountsAlertsList' request conforms to.
+type AccountsAlertsListResource =
+     "adsense" :>
+       "v1.4" :>
+         "accounts" :>
+           Capture "accountId" Text :>
+             "alerts" :>
+               QueryParam "locale" Text :>
+                 QueryParam "alt" AltJSON :> Get '[JSON] Alerts
+
+-- | List the alerts for the specified AdSense account.
+--
+-- /See:/ 'accountsAlertsList' smart constructor.
+data AccountsAlertsList = AccountsAlertsList
+    { _aalLocale    :: !(Maybe Text)
+    , _aalAccountId :: !Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'AccountsAlertsList' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'aalLocale'
+--
+-- * 'aalAccountId'
+accountsAlertsList
+    :: Text -- ^ 'aalAccountId'
+    -> AccountsAlertsList
+accountsAlertsList pAalAccountId_ =
+    AccountsAlertsList
+    { _aalLocale = Nothing
+    , _aalAccountId = pAalAccountId_
+    }
+
+-- | The locale to use for translating alert messages. The account locale
+-- will be used if this is not supplied. The AdSense default (English) will
+-- be used if the supplied locale is invalid or unsupported.
+aalLocale :: Lens' AccountsAlertsList (Maybe Text)
+aalLocale
+  = lens _aalLocale (\ s a -> s{_aalLocale = a})
+
+-- | Account for which to retrieve the alerts.
+aalAccountId :: Lens' AccountsAlertsList Text
+aalAccountId
+  = lens _aalAccountId (\ s a -> s{_aalAccountId = a})
+
+instance GoogleRequest AccountsAlertsList where
+        type Rs AccountsAlertsList = Alerts
+        requestClient AccountsAlertsList{..}
+          = go _aalAccountId _aalLocale (Just AltJSON)
+              adSenseService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy AccountsAlertsListResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/AdSense/Accounts/CustomChannels/AdUnits/List.hs b/gen/Network/Google/Resource/AdSense/Accounts/CustomChannels/AdUnits/List.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/AdSense/Accounts/CustomChannels/AdUnits/List.hs
@@ -0,0 +1,161 @@
+{-# 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.AdSense.Accounts.CustomChannels.AdUnits.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 ad units in the specified custom channel.
+--
+-- /See:/ <https://developers.google.com/adsense/management/ AdSense Management API Reference> for @adsense.accounts.customchannels.adunits.list@.
+module Network.Google.Resource.AdSense.Accounts.CustomChannels.AdUnits.List
+    (
+    -- * REST Resource
+      AccountsCustomChannelsAdUnitsListResource
+
+    -- * Creating a Request
+    , accountsCustomChannelsAdUnitsList
+    , AccountsCustomChannelsAdUnitsList
+
+    -- * Request Lenses
+    , accaulIncludeInactive
+    , accaulCustomChannelId
+    , accaulAdClientId
+    , accaulAccountId
+    , accaulPageToken
+    , accaulMaxResults
+    ) where
+
+import           Network.Google.AdSense.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @adsense.accounts.customchannels.adunits.list@ method which the
+-- 'AccountsCustomChannelsAdUnitsList' request conforms to.
+type AccountsCustomChannelsAdUnitsListResource =
+     "adsense" :>
+       "v1.4" :>
+         "accounts" :>
+           Capture "accountId" Text :>
+             "adclients" :>
+               Capture "adClientId" Text :>
+                 "customchannels" :>
+                   Capture "customChannelId" Text :>
+                     "adunits" :>
+                       QueryParam "includeInactive" Bool :>
+                         QueryParam "pageToken" Text :>
+                           QueryParam "maxResults" (Textual Int32) :>
+                             QueryParam "alt" AltJSON :> Get '[JSON] AdUnits
+
+-- | List all ad units in the specified custom channel.
+--
+-- /See:/ 'accountsCustomChannelsAdUnitsList' smart constructor.
+data AccountsCustomChannelsAdUnitsList = AccountsCustomChannelsAdUnitsList
+    { _accaulIncludeInactive :: !(Maybe Bool)
+    , _accaulCustomChannelId :: !Text
+    , _accaulAdClientId      :: !Text
+    , _accaulAccountId       :: !Text
+    , _accaulPageToken       :: !(Maybe Text)
+    , _accaulMaxResults      :: !(Maybe (Textual Int32))
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'AccountsCustomChannelsAdUnitsList' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'accaulIncludeInactive'
+--
+-- * 'accaulCustomChannelId'
+--
+-- * 'accaulAdClientId'
+--
+-- * 'accaulAccountId'
+--
+-- * 'accaulPageToken'
+--
+-- * 'accaulMaxResults'
+accountsCustomChannelsAdUnitsList
+    :: Text -- ^ 'accaulCustomChannelId'
+    -> Text -- ^ 'accaulAdClientId'
+    -> Text -- ^ 'accaulAccountId'
+    -> AccountsCustomChannelsAdUnitsList
+accountsCustomChannelsAdUnitsList pAccaulCustomChannelId_ pAccaulAdClientId_ pAccaulAccountId_ =
+    AccountsCustomChannelsAdUnitsList
+    { _accaulIncludeInactive = Nothing
+    , _accaulCustomChannelId = pAccaulCustomChannelId_
+    , _accaulAdClientId = pAccaulAdClientId_
+    , _accaulAccountId = pAccaulAccountId_
+    , _accaulPageToken = Nothing
+    , _accaulMaxResults = Nothing
+    }
+
+-- | Whether to include inactive ad units. Default: true.
+accaulIncludeInactive :: Lens' AccountsCustomChannelsAdUnitsList (Maybe Bool)
+accaulIncludeInactive
+  = lens _accaulIncludeInactive
+      (\ s a -> s{_accaulIncludeInactive = a})
+
+-- | Custom channel for which to list ad units.
+accaulCustomChannelId :: Lens' AccountsCustomChannelsAdUnitsList Text
+accaulCustomChannelId
+  = lens _accaulCustomChannelId
+      (\ s a -> s{_accaulCustomChannelId = a})
+
+-- | Ad client which contains the custom channel.
+accaulAdClientId :: Lens' AccountsCustomChannelsAdUnitsList Text
+accaulAdClientId
+  = lens _accaulAdClientId
+      (\ s a -> s{_accaulAdClientId = a})
+
+-- | Account to which the ad client belongs.
+accaulAccountId :: Lens' AccountsCustomChannelsAdUnitsList Text
+accaulAccountId
+  = lens _accaulAccountId
+      (\ s a -> s{_accaulAccountId = a})
+
+-- | A continuation token, used to page through ad units. To retrieve the
+-- next page, set this parameter to the value of \"nextPageToken\" from the
+-- previous response.
+accaulPageToken :: Lens' AccountsCustomChannelsAdUnitsList (Maybe Text)
+accaulPageToken
+  = lens _accaulPageToken
+      (\ s a -> s{_accaulPageToken = a})
+
+-- | The maximum number of ad units to include in the response, used for
+-- paging.
+accaulMaxResults :: Lens' AccountsCustomChannelsAdUnitsList (Maybe Int32)
+accaulMaxResults
+  = lens _accaulMaxResults
+      (\ s a -> s{_accaulMaxResults = a})
+      . mapping _Coerce
+
+instance GoogleRequest
+         AccountsCustomChannelsAdUnitsList where
+        type Rs AccountsCustomChannelsAdUnitsList = AdUnits
+        requestClient AccountsCustomChannelsAdUnitsList{..}
+          = go _accaulAccountId _accaulAdClientId
+              _accaulCustomChannelId
+              _accaulIncludeInactive
+              _accaulPageToken
+              _accaulMaxResults
+              (Just AltJSON)
+              adSenseService
+          where go
+                  = buildClient
+                      (Proxy ::
+                         Proxy AccountsCustomChannelsAdUnitsListResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/AdSense/Accounts/CustomChannels/Get.hs b/gen/Network/Google/Resource/AdSense/Accounts/CustomChannels/Get.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/AdSense/Accounts/CustomChannels/Get.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.AdSense.Accounts.CustomChannels.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)
+--
+-- Get the specified custom channel from the specified ad client for the
+-- specified account.
+--
+-- /See:/ <https://developers.google.com/adsense/management/ AdSense Management API Reference> for @adsense.accounts.customchannels.get@.
+module Network.Google.Resource.AdSense.Accounts.CustomChannels.Get
+    (
+    -- * REST Resource
+      AccountsCustomChannelsGetResource
+
+    -- * Creating a Request
+    , accountsCustomChannelsGet
+    , AccountsCustomChannelsGet
+
+    -- * Request Lenses
+    , accgCustomChannelId
+    , accgAdClientId
+    , accgAccountId
+    ) where
+
+import           Network.Google.AdSense.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @adsense.accounts.customchannels.get@ method which the
+-- 'AccountsCustomChannelsGet' request conforms to.
+type AccountsCustomChannelsGetResource =
+     "adsense" :>
+       "v1.4" :>
+         "accounts" :>
+           Capture "accountId" Text :>
+             "adclients" :>
+               Capture "adClientId" Text :>
+                 "customchannels" :>
+                   Capture "customChannelId" Text :>
+                     QueryParam "alt" AltJSON :> Get '[JSON] CustomChannel
+
+-- | Get the specified custom channel from the specified ad client for the
+-- specified account.
+--
+-- /See:/ 'accountsCustomChannelsGet' smart constructor.
+data AccountsCustomChannelsGet = AccountsCustomChannelsGet
+    { _accgCustomChannelId :: !Text
+    , _accgAdClientId      :: !Text
+    , _accgAccountId       :: !Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'AccountsCustomChannelsGet' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'accgCustomChannelId'
+--
+-- * 'accgAdClientId'
+--
+-- * 'accgAccountId'
+accountsCustomChannelsGet
+    :: Text -- ^ 'accgCustomChannelId'
+    -> Text -- ^ 'accgAdClientId'
+    -> Text -- ^ 'accgAccountId'
+    -> AccountsCustomChannelsGet
+accountsCustomChannelsGet pAccgCustomChannelId_ pAccgAdClientId_ pAccgAccountId_ =
+    AccountsCustomChannelsGet
+    { _accgCustomChannelId = pAccgCustomChannelId_
+    , _accgAdClientId = pAccgAdClientId_
+    , _accgAccountId = pAccgAccountId_
+    }
+
+-- | Custom channel to retrieve.
+accgCustomChannelId :: Lens' AccountsCustomChannelsGet Text
+accgCustomChannelId
+  = lens _accgCustomChannelId
+      (\ s a -> s{_accgCustomChannelId = a})
+
+-- | Ad client which contains the custom channel.
+accgAdClientId :: Lens' AccountsCustomChannelsGet Text
+accgAdClientId
+  = lens _accgAdClientId
+      (\ s a -> s{_accgAdClientId = a})
+
+-- | Account to which the ad client belongs.
+accgAccountId :: Lens' AccountsCustomChannelsGet Text
+accgAccountId
+  = lens _accgAccountId
+      (\ s a -> s{_accgAccountId = a})
+
+instance GoogleRequest AccountsCustomChannelsGet
+         where
+        type Rs AccountsCustomChannelsGet = CustomChannel
+        requestClient AccountsCustomChannelsGet{..}
+          = go _accgAccountId _accgAdClientId
+              _accgCustomChannelId
+              (Just AltJSON)
+              adSenseService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy AccountsCustomChannelsGetResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/AdSense/Accounts/CustomChannels/List.hs b/gen/Network/Google/Resource/AdSense/Accounts/CustomChannels/List.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/AdSense/Accounts/CustomChannels/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.AdSense.Accounts.CustomChannels.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 custom channels in the specified ad client for the specified
+-- account.
+--
+-- /See:/ <https://developers.google.com/adsense/management/ AdSense Management API Reference> for @adsense.accounts.customchannels.list@.
+module Network.Google.Resource.AdSense.Accounts.CustomChannels.List
+    (
+    -- * REST Resource
+      AccountsCustomChannelsListResource
+
+    -- * Creating a Request
+    , accountsCustomChannelsList
+    , AccountsCustomChannelsList
+
+    -- * Request Lenses
+    , acclAdClientId
+    , acclAccountId
+    , acclPageToken
+    , acclMaxResults
+    ) where
+
+import           Network.Google.AdSense.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @adsense.accounts.customchannels.list@ method which the
+-- 'AccountsCustomChannelsList' request conforms to.
+type AccountsCustomChannelsListResource =
+     "adsense" :>
+       "v1.4" :>
+         "accounts" :>
+           Capture "accountId" Text :>
+             "adclients" :>
+               Capture "adClientId" Text :>
+                 "customchannels" :>
+                   QueryParam "pageToken" Text :>
+                     QueryParam "maxResults" (Textual Int32) :>
+                       QueryParam "alt" AltJSON :>
+                         Get '[JSON] CustomChannels
+
+-- | List all custom channels in the specified ad client for the specified
+-- account.
+--
+-- /See:/ 'accountsCustomChannelsList' smart constructor.
+data AccountsCustomChannelsList = AccountsCustomChannelsList
+    { _acclAdClientId :: !Text
+    , _acclAccountId  :: !Text
+    , _acclPageToken  :: !(Maybe Text)
+    , _acclMaxResults :: !(Maybe (Textual Int32))
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'AccountsCustomChannelsList' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'acclAdClientId'
+--
+-- * 'acclAccountId'
+--
+-- * 'acclPageToken'
+--
+-- * 'acclMaxResults'
+accountsCustomChannelsList
+    :: Text -- ^ 'acclAdClientId'
+    -> Text -- ^ 'acclAccountId'
+    -> AccountsCustomChannelsList
+accountsCustomChannelsList pAcclAdClientId_ pAcclAccountId_ =
+    AccountsCustomChannelsList
+    { _acclAdClientId = pAcclAdClientId_
+    , _acclAccountId = pAcclAccountId_
+    , _acclPageToken = Nothing
+    , _acclMaxResults = Nothing
+    }
+
+-- | Ad client for which to list custom channels.
+acclAdClientId :: Lens' AccountsCustomChannelsList Text
+acclAdClientId
+  = lens _acclAdClientId
+      (\ s a -> s{_acclAdClientId = a})
+
+-- | Account to which the ad client belongs.
+acclAccountId :: Lens' AccountsCustomChannelsList Text
+acclAccountId
+  = lens _acclAccountId
+      (\ s a -> s{_acclAccountId = a})
+
+-- | A continuation token, used to page through custom channels. To retrieve
+-- the next page, set this parameter to the value of \"nextPageToken\" from
+-- the previous response.
+acclPageToken :: Lens' AccountsCustomChannelsList (Maybe Text)
+acclPageToken
+  = lens _acclPageToken
+      (\ s a -> s{_acclPageToken = a})
+
+-- | The maximum number of custom channels to include in the response, used
+-- for paging.
+acclMaxResults :: Lens' AccountsCustomChannelsList (Maybe Int32)
+acclMaxResults
+  = lens _acclMaxResults
+      (\ s a -> s{_acclMaxResults = a})
+      . mapping _Coerce
+
+instance GoogleRequest AccountsCustomChannelsList
+         where
+        type Rs AccountsCustomChannelsList = CustomChannels
+        requestClient AccountsCustomChannelsList{..}
+          = go _acclAccountId _acclAdClientId _acclPageToken
+              _acclMaxResults
+              (Just AltJSON)
+              adSenseService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy AccountsCustomChannelsListResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/AdSense/Accounts/Get.hs b/gen/Network/Google/Resource/AdSense/Accounts/Get.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/AdSense/Accounts/Get.hs
@@ -0,0 +1,93 @@
+{-# 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.AdSense.Accounts.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)
+--
+-- Get information about the selected AdSense account.
+--
+-- /See:/ <https://developers.google.com/adsense/management/ AdSense Management API Reference> for @adsense.accounts.get@.
+module Network.Google.Resource.AdSense.Accounts.Get
+    (
+    -- * REST Resource
+      AccountsGetResource
+
+    -- * Creating a Request
+    , accountsGet
+    , AccountsGet
+
+    -- * Request Lenses
+    , agTree
+    , agAccountId
+    ) where
+
+import           Network.Google.AdSense.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @adsense.accounts.get@ method which the
+-- 'AccountsGet' request conforms to.
+type AccountsGetResource =
+     "adsense" :>
+       "v1.4" :>
+         "accounts" :>
+           Capture "accountId" Text :>
+             QueryParam "tree" Bool :>
+               QueryParam "alt" AltJSON :> Get '[JSON] Account
+
+-- | Get information about the selected AdSense account.
+--
+-- /See:/ 'accountsGet' smart constructor.
+data AccountsGet = AccountsGet
+    { _agTree      :: !(Maybe Bool)
+    , _agAccountId :: !Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'AccountsGet' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'agTree'
+--
+-- * 'agAccountId'
+accountsGet
+    :: Text -- ^ 'agAccountId'
+    -> AccountsGet
+accountsGet pAgAccountId_ =
+    AccountsGet
+    { _agTree = Nothing
+    , _agAccountId = pAgAccountId_
+    }
+
+-- | Whether the tree of sub accounts should be returned.
+agTree :: Lens' AccountsGet (Maybe Bool)
+agTree = lens _agTree (\ s a -> s{_agTree = a})
+
+-- | Account to get information about.
+agAccountId :: Lens' AccountsGet Text
+agAccountId
+  = lens _agAccountId (\ s a -> s{_agAccountId = a})
+
+instance GoogleRequest AccountsGet where
+        type Rs AccountsGet = Account
+        requestClient AccountsGet{..}
+          = go _agAccountId _agTree (Just AltJSON)
+              adSenseService
+          where go
+                  = buildClient (Proxy :: Proxy AccountsGetResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/AdSense/Accounts/List.hs b/gen/Network/Google/Resource/AdSense/Accounts/List.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/AdSense/Accounts/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.AdSense.Accounts.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 accounts available to this AdSense account.
+--
+-- /See:/ <https://developers.google.com/adsense/management/ AdSense Management API Reference> for @adsense.accounts.list@.
+module Network.Google.Resource.AdSense.Accounts.List
+    (
+    -- * REST Resource
+      AccountsListResource
+
+    -- * Creating a Request
+    , accountsList
+    , AccountsList
+
+    -- * Request Lenses
+    , alPageToken
+    , alMaxResults
+    ) where
+
+import           Network.Google.AdSense.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @adsense.accounts.list@ method which the
+-- 'AccountsList' request conforms to.
+type AccountsListResource =
+     "adsense" :>
+       "v1.4" :>
+         "accounts" :>
+           QueryParam "pageToken" Text :>
+             QueryParam "maxResults" (Textual Int32) :>
+               QueryParam "alt" AltJSON :> Get '[JSON] Accounts
+
+-- | List all accounts available to this AdSense account.
+--
+-- /See:/ 'accountsList' smart constructor.
+data AccountsList = AccountsList
+    { _alPageToken  :: !(Maybe Text)
+    , _alMaxResults :: !(Maybe (Textual Int32))
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'AccountsList' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'alPageToken'
+--
+-- * 'alMaxResults'
+accountsList
+    :: AccountsList
+accountsList =
+    AccountsList
+    { _alPageToken = Nothing
+    , _alMaxResults = Nothing
+    }
+
+-- | A continuation token, used to page through accounts. To retrieve the
+-- next page, set this parameter to the value of \"nextPageToken\" from the
+-- previous response.
+alPageToken :: Lens' AccountsList (Maybe Text)
+alPageToken
+  = lens _alPageToken (\ s a -> s{_alPageToken = a})
+
+-- | The maximum number of accounts to include in the response, used for
+-- paging.
+alMaxResults :: Lens' AccountsList (Maybe Int32)
+alMaxResults
+  = lens _alMaxResults (\ s a -> s{_alMaxResults = a})
+      . mapping _Coerce
+
+instance GoogleRequest AccountsList where
+        type Rs AccountsList = Accounts
+        requestClient AccountsList{..}
+          = go _alPageToken _alMaxResults (Just AltJSON)
+              adSenseService
+          where go
+                  = buildClient (Proxy :: Proxy AccountsListResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/AdSense/Accounts/Payments/List.hs b/gen/Network/Google/Resource/AdSense/Accounts/Payments/List.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/AdSense/Accounts/Payments/List.hs
@@ -0,0 +1,84 @@
+{-# 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.AdSense.Accounts.Payments.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 the payments for the specified AdSense account.
+--
+-- /See:/ <https://developers.google.com/adsense/management/ AdSense Management API Reference> for @adsense.accounts.payments.list@.
+module Network.Google.Resource.AdSense.Accounts.Payments.List
+    (
+    -- * REST Resource
+      AccountsPaymentsListResource
+
+    -- * Creating a Request
+    , accountsPaymentsList
+    , AccountsPaymentsList
+
+    -- * Request Lenses
+    , aplAccountId
+    ) where
+
+import           Network.Google.AdSense.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @adsense.accounts.payments.list@ method which the
+-- 'AccountsPaymentsList' request conforms to.
+type AccountsPaymentsListResource =
+     "adsense" :>
+       "v1.4" :>
+         "accounts" :>
+           Capture "accountId" Text :>
+             "payments" :>
+               QueryParam "alt" AltJSON :> Get '[JSON] Payments
+
+-- | List the payments for the specified AdSense account.
+--
+-- /See:/ 'accountsPaymentsList' smart constructor.
+newtype AccountsPaymentsList = AccountsPaymentsList
+    { _aplAccountId :: Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'AccountsPaymentsList' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'aplAccountId'
+accountsPaymentsList
+    :: Text -- ^ 'aplAccountId'
+    -> AccountsPaymentsList
+accountsPaymentsList pAplAccountId_ =
+    AccountsPaymentsList
+    { _aplAccountId = pAplAccountId_
+    }
+
+-- | Account for which to retrieve the payments.
+aplAccountId :: Lens' AccountsPaymentsList Text
+aplAccountId
+  = lens _aplAccountId (\ s a -> s{_aplAccountId = a})
+
+instance GoogleRequest AccountsPaymentsList where
+        type Rs AccountsPaymentsList = Payments
+        requestClient AccountsPaymentsList{..}
+          = go _aplAccountId (Just AltJSON) adSenseService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy AccountsPaymentsListResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/AdSense/Accounts/Reports/Generate.hs b/gen/Network/Google/Resource/AdSense/Accounts/Reports/Generate.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/AdSense/Accounts/Reports/Generate.hs
@@ -0,0 +1,287 @@
+{-# 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.AdSense.Accounts.Reports.Generate
+-- 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)
+--
+-- Generate an AdSense report based on the report request sent in the query
+-- parameters. Returns the result as JSON; to retrieve output in CSV format
+-- specify \"alt=csv\" as a query parameter.
+--
+-- /See:/ <https://developers.google.com/adsense/management/ AdSense Management API Reference> for @adsense.accounts.reports.generate@.
+module Network.Google.Resource.AdSense.Accounts.Reports.Generate
+    (
+    -- * REST Resource
+      AccountsReportsGenerateResource
+
+    -- * Creating a Request
+    , accountsReportsGenerate
+    , AccountsReportsGenerate
+
+    -- * Request Lenses
+    , argDimension
+    , argLocale
+    , argEndDate
+    , argStartDate
+    , argAccountId
+    , argMetric
+    , argCurrency
+    , argSort
+    , argFilter
+    , argStartIndex
+    , argUseTimezoneReporting
+    , argMaxResults
+    ) where
+
+import           Network.Google.AdSense.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @adsense.accounts.reports.generate@ method which the
+-- 'AccountsReportsGenerate' request conforms to.
+type AccountsReportsGenerateResource =
+     "adsense" :>
+       "v1.4" :>
+         "accounts" :>
+           Capture "accountId" Text :>
+             "reports" :>
+               QueryParam "startDate" Text :>
+                 QueryParam "endDate" Text :>
+                   QueryParams "dimension" Text :>
+                     QueryParam "locale" Text :>
+                       QueryParams "metric" Text :>
+                         QueryParam "currency" Text :>
+                           QueryParams "sort" Text :>
+                             QueryParams "filter" Text :>
+                               QueryParam "startIndex" (Textual Int32) :>
+                                 QueryParam "useTimezoneReporting" Bool :>
+                                   QueryParam "maxResults" (Textual Int32) :>
+                                     QueryParam "alt" AltJSON :>
+                                       Get '[JSON]
+                                         AdsenseReportsGenerateResponse
+       :<|>
+       "adsense" :>
+         "v1.4" :>
+           "accounts" :>
+             Capture "accountId" Text :>
+               "reports" :>
+                 QueryParam "startDate" Text :>
+                   QueryParam "endDate" Text :>
+                     QueryParams "dimension" Text :>
+                       QueryParam "locale" Text :>
+                         QueryParams "metric" Text :>
+                           QueryParam "currency" Text :>
+                             QueryParams "sort" Text :>
+                               QueryParams "filter" Text :>
+                                 QueryParam "startIndex" (Textual Int32) :>
+                                   QueryParam "useTimezoneReporting" Bool :>
+                                     QueryParam "maxResults" (Textual Int32) :>
+                                       QueryParam "alt" AltMedia :>
+                                         Get '[OctetStream] Stream
+
+-- | Generate an AdSense report based on the report request sent in the query
+-- parameters. Returns the result as JSON; to retrieve output in CSV format
+-- specify \"alt=csv\" as a query parameter.
+--
+-- /See:/ 'accountsReportsGenerate' smart constructor.
+data AccountsReportsGenerate = AccountsReportsGenerate
+    { _argDimension            :: !(Maybe [Text])
+    , _argLocale               :: !(Maybe Text)
+    , _argEndDate              :: !Text
+    , _argStartDate            :: !Text
+    , _argAccountId            :: !Text
+    , _argMetric               :: !(Maybe [Text])
+    , _argCurrency             :: !(Maybe Text)
+    , _argSort                 :: !(Maybe [Text])
+    , _argFilter               :: !(Maybe [Text])
+    , _argStartIndex           :: !(Maybe (Textual Int32))
+    , _argUseTimezoneReporting :: !(Maybe Bool)
+    , _argMaxResults           :: !(Maybe (Textual Int32))
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'AccountsReportsGenerate' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'argDimension'
+--
+-- * 'argLocale'
+--
+-- * 'argEndDate'
+--
+-- * 'argStartDate'
+--
+-- * 'argAccountId'
+--
+-- * 'argMetric'
+--
+-- * 'argCurrency'
+--
+-- * 'argSort'
+--
+-- * 'argFilter'
+--
+-- * 'argStartIndex'
+--
+-- * 'argUseTimezoneReporting'
+--
+-- * 'argMaxResults'
+accountsReportsGenerate
+    :: Text -- ^ 'argEndDate'
+    -> Text -- ^ 'argStartDate'
+    -> Text -- ^ 'argAccountId'
+    -> AccountsReportsGenerate
+accountsReportsGenerate pArgEndDate_ pArgStartDate_ pArgAccountId_ =
+    AccountsReportsGenerate
+    { _argDimension = Nothing
+    , _argLocale = Nothing
+    , _argEndDate = pArgEndDate_
+    , _argStartDate = pArgStartDate_
+    , _argAccountId = pArgAccountId_
+    , _argMetric = Nothing
+    , _argCurrency = Nothing
+    , _argSort = Nothing
+    , _argFilter = Nothing
+    , _argStartIndex = Nothing
+    , _argUseTimezoneReporting = Nothing
+    , _argMaxResults = Nothing
+    }
+
+-- | Dimensions to base the report on.
+argDimension :: Lens' AccountsReportsGenerate [Text]
+argDimension
+  = lens _argDimension (\ s a -> s{_argDimension = a})
+      . _Default
+      . _Coerce
+
+-- | Optional locale to use for translating report output to a local
+-- language. Defaults to \"en_US\" if not specified.
+argLocale :: Lens' AccountsReportsGenerate (Maybe Text)
+argLocale
+  = lens _argLocale (\ s a -> s{_argLocale = a})
+
+-- | End of the date range to report on in \"YYYY-MM-DD\" format, inclusive.
+argEndDate :: Lens' AccountsReportsGenerate Text
+argEndDate
+  = lens _argEndDate (\ s a -> s{_argEndDate = a})
+
+-- | Start of the date range to report on in \"YYYY-MM-DD\" format,
+-- inclusive.
+argStartDate :: Lens' AccountsReportsGenerate Text
+argStartDate
+  = lens _argStartDate (\ s a -> s{_argStartDate = a})
+
+-- | Account upon which to report.
+argAccountId :: Lens' AccountsReportsGenerate Text
+argAccountId
+  = lens _argAccountId (\ s a -> s{_argAccountId = a})
+
+-- | Numeric columns to include in the report.
+argMetric :: Lens' AccountsReportsGenerate [Text]
+argMetric
+  = lens _argMetric (\ s a -> s{_argMetric = a}) .
+      _Default
+      . _Coerce
+
+-- | Optional currency to use when reporting on monetary metrics. Defaults to
+-- the account\'s currency if not set.
+argCurrency :: Lens' AccountsReportsGenerate (Maybe Text)
+argCurrency
+  = lens _argCurrency (\ s a -> s{_argCurrency = a})
+
+-- | The name of a dimension or metric to sort the resulting report on,
+-- optionally prefixed with \"+\" to sort ascending or \"-\" to sort
+-- descending. If no prefix is specified, the column is sorted ascending.
+argSort :: Lens' AccountsReportsGenerate [Text]
+argSort
+  = lens _argSort (\ s a -> s{_argSort = a}) . _Default
+      . _Coerce
+
+-- | Filters to be run on the report.
+argFilter :: Lens' AccountsReportsGenerate [Text]
+argFilter
+  = lens _argFilter (\ s a -> s{_argFilter = a}) .
+      _Default
+      . _Coerce
+
+-- | Index of the first row of report data to return.
+argStartIndex :: Lens' AccountsReportsGenerate (Maybe Int32)
+argStartIndex
+  = lens _argStartIndex
+      (\ s a -> s{_argStartIndex = a})
+      . mapping _Coerce
+
+-- | Whether the report should be generated in the AdSense account\'s local
+-- timezone. If false default PST\/PDT timezone will be used.
+argUseTimezoneReporting :: Lens' AccountsReportsGenerate (Maybe Bool)
+argUseTimezoneReporting
+  = lens _argUseTimezoneReporting
+      (\ s a -> s{_argUseTimezoneReporting = a})
+
+-- | The maximum number of rows of report data to return.
+argMaxResults :: Lens' AccountsReportsGenerate (Maybe Int32)
+argMaxResults
+  = lens _argMaxResults
+      (\ s a -> s{_argMaxResults = a})
+      . mapping _Coerce
+
+instance GoogleRequest AccountsReportsGenerate where
+        type Rs AccountsReportsGenerate =
+             AdsenseReportsGenerateResponse
+        requestClient AccountsReportsGenerate{..}
+          = go _argAccountId (Just _argStartDate)
+              (Just _argEndDate)
+              (_argDimension ^. _Default)
+              _argLocale
+              (_argMetric ^. _Default)
+              _argCurrency
+              (_argSort ^. _Default)
+              (_argFilter ^. _Default)
+              _argStartIndex
+              _argUseTimezoneReporting
+              _argMaxResults
+              (Just AltJSON)
+              adSenseService
+          where go :<|> _
+                  = buildClient
+                      (Proxy :: Proxy AccountsReportsGenerateResource)
+                      mempty
+
+instance GoogleRequest
+         (MediaDownload AccountsReportsGenerate) where
+        type Rs (MediaDownload AccountsReportsGenerate) =
+             Stream
+        requestClient
+          (MediaDownload AccountsReportsGenerate{..})
+          = go _argAccountId (Just _argStartDate)
+              (Just _argEndDate)
+              (_argDimension ^. _Default)
+              _argLocale
+              (_argMetric ^. _Default)
+              _argCurrency
+              (_argSort ^. _Default)
+              (_argFilter ^. _Default)
+              _argStartIndex
+              _argUseTimezoneReporting
+              _argMaxResults
+              (Just AltMedia)
+              adSenseService
+          where _ :<|> go
+                  = buildClient
+                      (Proxy :: Proxy AccountsReportsGenerateResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/AdSense/Accounts/Reports/Saved/Generate.hs b/gen/Network/Google/Resource/AdSense/Accounts/Reports/Saved/Generate.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/AdSense/Accounts/Reports/Saved/Generate.hs
@@ -0,0 +1,145 @@
+{-# 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.AdSense.Accounts.Reports.Saved.Generate
+-- 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)
+--
+-- Generate an AdSense report based on the saved report ID sent in the
+-- query parameters.
+--
+-- /See:/ <https://developers.google.com/adsense/management/ AdSense Management API Reference> for @adsense.accounts.reports.saved.generate@.
+module Network.Google.Resource.AdSense.Accounts.Reports.Saved.Generate
+    (
+    -- * REST Resource
+      AccountsReportsSavedGenerateResource
+
+    -- * Creating a Request
+    , accountsReportsSavedGenerate
+    , AccountsReportsSavedGenerate
+
+    -- * Request Lenses
+    , arsgLocale
+    , arsgSavedReportId
+    , arsgAccountId
+    , arsgStartIndex
+    , arsgMaxResults
+    ) where
+
+import           Network.Google.AdSense.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @adsense.accounts.reports.saved.generate@ method which the
+-- 'AccountsReportsSavedGenerate' request conforms to.
+type AccountsReportsSavedGenerateResource =
+     "adsense" :>
+       "v1.4" :>
+         "accounts" :>
+           Capture "accountId" Text :>
+             "reports" :>
+               Capture "savedReportId" Text :>
+                 QueryParam "locale" Text :>
+                   QueryParam "startIndex" (Textual Int32) :>
+                     QueryParam "maxResults" (Textual Int32) :>
+                       QueryParam "alt" AltJSON :>
+                         Get '[JSON] AdsenseReportsGenerateResponse
+
+-- | Generate an AdSense report based on the saved report ID sent in the
+-- query parameters.
+--
+-- /See:/ 'accountsReportsSavedGenerate' smart constructor.
+data AccountsReportsSavedGenerate = AccountsReportsSavedGenerate
+    { _arsgLocale        :: !(Maybe Text)
+    , _arsgSavedReportId :: !Text
+    , _arsgAccountId     :: !Text
+    , _arsgStartIndex    :: !(Maybe (Textual Int32))
+    , _arsgMaxResults    :: !(Maybe (Textual Int32))
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'AccountsReportsSavedGenerate' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'arsgLocale'
+--
+-- * 'arsgSavedReportId'
+--
+-- * 'arsgAccountId'
+--
+-- * 'arsgStartIndex'
+--
+-- * 'arsgMaxResults'
+accountsReportsSavedGenerate
+    :: Text -- ^ 'arsgSavedReportId'
+    -> Text -- ^ 'arsgAccountId'
+    -> AccountsReportsSavedGenerate
+accountsReportsSavedGenerate pArsgSavedReportId_ pArsgAccountId_ =
+    AccountsReportsSavedGenerate
+    { _arsgLocale = Nothing
+    , _arsgSavedReportId = pArsgSavedReportId_
+    , _arsgAccountId = pArsgAccountId_
+    , _arsgStartIndex = Nothing
+    , _arsgMaxResults = Nothing
+    }
+
+-- | Optional locale to use for translating report output to a local
+-- language. Defaults to \"en_US\" if not specified.
+arsgLocale :: Lens' AccountsReportsSavedGenerate (Maybe Text)
+arsgLocale
+  = lens _arsgLocale (\ s a -> s{_arsgLocale = a})
+
+-- | The saved report to retrieve.
+arsgSavedReportId :: Lens' AccountsReportsSavedGenerate Text
+arsgSavedReportId
+  = lens _arsgSavedReportId
+      (\ s a -> s{_arsgSavedReportId = a})
+
+-- | Account to which the saved reports belong.
+arsgAccountId :: Lens' AccountsReportsSavedGenerate Text
+arsgAccountId
+  = lens _arsgAccountId
+      (\ s a -> s{_arsgAccountId = a})
+
+-- | Index of the first row of report data to return.
+arsgStartIndex :: Lens' AccountsReportsSavedGenerate (Maybe Int32)
+arsgStartIndex
+  = lens _arsgStartIndex
+      (\ s a -> s{_arsgStartIndex = a})
+      . mapping _Coerce
+
+-- | The maximum number of rows of report data to return.
+arsgMaxResults :: Lens' AccountsReportsSavedGenerate (Maybe Int32)
+arsgMaxResults
+  = lens _arsgMaxResults
+      (\ s a -> s{_arsgMaxResults = a})
+      . mapping _Coerce
+
+instance GoogleRequest AccountsReportsSavedGenerate
+         where
+        type Rs AccountsReportsSavedGenerate =
+             AdsenseReportsGenerateResponse
+        requestClient AccountsReportsSavedGenerate{..}
+          = go _arsgAccountId _arsgSavedReportId _arsgLocale
+              _arsgStartIndex
+              _arsgMaxResults
+              (Just AltJSON)
+              adSenseService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy AccountsReportsSavedGenerateResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/AdSense/Accounts/Reports/Saved/List.hs b/gen/Network/Google/Resource/AdSense/Accounts/Reports/Saved/List.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/AdSense/Accounts/Reports/Saved/List.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.AdSense.Accounts.Reports.Saved.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 saved reports in the specified AdSense account.
+--
+-- /See:/ <https://developers.google.com/adsense/management/ AdSense Management API Reference> for @adsense.accounts.reports.saved.list@.
+module Network.Google.Resource.AdSense.Accounts.Reports.Saved.List
+    (
+    -- * REST Resource
+      AccountsReportsSavedListResource
+
+    -- * Creating a Request
+    , accountsReportsSavedList
+    , AccountsReportsSavedList
+
+    -- * Request Lenses
+    , arslAccountId
+    , arslPageToken
+    , arslMaxResults
+    ) where
+
+import           Network.Google.AdSense.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @adsense.accounts.reports.saved.list@ method which the
+-- 'AccountsReportsSavedList' request conforms to.
+type AccountsReportsSavedListResource =
+     "adsense" :>
+       "v1.4" :>
+         "accounts" :>
+           Capture "accountId" Text :>
+             "reports" :>
+               "saved" :>
+                 QueryParam "pageToken" Text :>
+                   QueryParam "maxResults" (Textual Int32) :>
+                     QueryParam "alt" AltJSON :> Get '[JSON] SavedReports
+
+-- | List all saved reports in the specified AdSense account.
+--
+-- /See:/ 'accountsReportsSavedList' smart constructor.
+data AccountsReportsSavedList = AccountsReportsSavedList
+    { _arslAccountId  :: !Text
+    , _arslPageToken  :: !(Maybe Text)
+    , _arslMaxResults :: !(Maybe (Textual Int32))
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'AccountsReportsSavedList' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'arslAccountId'
+--
+-- * 'arslPageToken'
+--
+-- * 'arslMaxResults'
+accountsReportsSavedList
+    :: Text -- ^ 'arslAccountId'
+    -> AccountsReportsSavedList
+accountsReportsSavedList pArslAccountId_ =
+    AccountsReportsSavedList
+    { _arslAccountId = pArslAccountId_
+    , _arslPageToken = Nothing
+    , _arslMaxResults = Nothing
+    }
+
+-- | Account to which the saved reports belong.
+arslAccountId :: Lens' AccountsReportsSavedList Text
+arslAccountId
+  = lens _arslAccountId
+      (\ s a -> s{_arslAccountId = a})
+
+-- | A continuation token, used to page through saved reports. To retrieve
+-- the next page, set this parameter to the value of \"nextPageToken\" from
+-- the previous response.
+arslPageToken :: Lens' AccountsReportsSavedList (Maybe Text)
+arslPageToken
+  = lens _arslPageToken
+      (\ s a -> s{_arslPageToken = a})
+
+-- | The maximum number of saved reports to include in the response, used for
+-- paging.
+arslMaxResults :: Lens' AccountsReportsSavedList (Maybe Int32)
+arslMaxResults
+  = lens _arslMaxResults
+      (\ s a -> s{_arslMaxResults = a})
+      . mapping _Coerce
+
+instance GoogleRequest AccountsReportsSavedList where
+        type Rs AccountsReportsSavedList = SavedReports
+        requestClient AccountsReportsSavedList{..}
+          = go _arslAccountId _arslPageToken _arslMaxResults
+              (Just AltJSON)
+              adSenseService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy AccountsReportsSavedListResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/AdSense/Accounts/Savedadstyles/Get.hs b/gen/Network/Google/Resource/AdSense/Accounts/Savedadstyles/Get.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/AdSense/Accounts/Savedadstyles/Get.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.AdSense.Accounts.Savedadstyles.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)
+--
+-- List a specific saved ad style for the specified account.
+--
+-- /See:/ <https://developers.google.com/adsense/management/ AdSense Management API Reference> for @adsense.accounts.savedadstyles.get@.
+module Network.Google.Resource.AdSense.Accounts.Savedadstyles.Get
+    (
+    -- * REST Resource
+      AccountsSavedadstylesGetResource
+
+    -- * Creating a Request
+    , accountsSavedadstylesGet
+    , AccountsSavedadstylesGet
+
+    -- * Request Lenses
+    , asgSavedAdStyleId
+    , asgAccountId
+    ) where
+
+import           Network.Google.AdSense.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @adsense.accounts.savedadstyles.get@ method which the
+-- 'AccountsSavedadstylesGet' request conforms to.
+type AccountsSavedadstylesGetResource =
+     "adsense" :>
+       "v1.4" :>
+         "accounts" :>
+           Capture "accountId" Text :>
+             "savedadstyles" :>
+               Capture "savedAdStyleId" Text :>
+                 QueryParam "alt" AltJSON :> Get '[JSON] SavedAdStyle
+
+-- | List a specific saved ad style for the specified account.
+--
+-- /See:/ 'accountsSavedadstylesGet' smart constructor.
+data AccountsSavedadstylesGet = AccountsSavedadstylesGet
+    { _asgSavedAdStyleId :: !Text
+    , _asgAccountId      :: !Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'AccountsSavedadstylesGet' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'asgSavedAdStyleId'
+--
+-- * 'asgAccountId'
+accountsSavedadstylesGet
+    :: Text -- ^ 'asgSavedAdStyleId'
+    -> Text -- ^ 'asgAccountId'
+    -> AccountsSavedadstylesGet
+accountsSavedadstylesGet pAsgSavedAdStyleId_ pAsgAccountId_ =
+    AccountsSavedadstylesGet
+    { _asgSavedAdStyleId = pAsgSavedAdStyleId_
+    , _asgAccountId = pAsgAccountId_
+    }
+
+-- | Saved ad style to retrieve.
+asgSavedAdStyleId :: Lens' AccountsSavedadstylesGet Text
+asgSavedAdStyleId
+  = lens _asgSavedAdStyleId
+      (\ s a -> s{_asgSavedAdStyleId = a})
+
+-- | Account for which to get the saved ad style.
+asgAccountId :: Lens' AccountsSavedadstylesGet Text
+asgAccountId
+  = lens _asgAccountId (\ s a -> s{_asgAccountId = a})
+
+instance GoogleRequest AccountsSavedadstylesGet where
+        type Rs AccountsSavedadstylesGet = SavedAdStyle
+        requestClient AccountsSavedadstylesGet{..}
+          = go _asgAccountId _asgSavedAdStyleId (Just AltJSON)
+              adSenseService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy AccountsSavedadstylesGetResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/AdSense/Accounts/Savedadstyles/List.hs b/gen/Network/Google/Resource/AdSense/Accounts/Savedadstyles/List.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/AdSense/Accounts/Savedadstyles/List.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.AdSense.Accounts.Savedadstyles.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 saved ad styles in the specified account.
+--
+-- /See:/ <https://developers.google.com/adsense/management/ AdSense Management API Reference> for @adsense.accounts.savedadstyles.list@.
+module Network.Google.Resource.AdSense.Accounts.Savedadstyles.List
+    (
+    -- * REST Resource
+      AccountsSavedadstylesListResource
+
+    -- * Creating a Request
+    , accountsSavedadstylesList
+    , AccountsSavedadstylesList
+
+    -- * Request Lenses
+    , aslAccountId
+    , aslPageToken
+    , aslMaxResults
+    ) where
+
+import           Network.Google.AdSense.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @adsense.accounts.savedadstyles.list@ method which the
+-- 'AccountsSavedadstylesList' request conforms to.
+type AccountsSavedadstylesListResource =
+     "adsense" :>
+       "v1.4" :>
+         "accounts" :>
+           Capture "accountId" Text :>
+             "savedadstyles" :>
+               QueryParam "pageToken" Text :>
+                 QueryParam "maxResults" (Textual Int32) :>
+                   QueryParam "alt" AltJSON :> Get '[JSON] SavedAdStyles
+
+-- | List all saved ad styles in the specified account.
+--
+-- /See:/ 'accountsSavedadstylesList' smart constructor.
+data AccountsSavedadstylesList = AccountsSavedadstylesList
+    { _aslAccountId  :: !Text
+    , _aslPageToken  :: !(Maybe Text)
+    , _aslMaxResults :: !(Maybe (Textual Int32))
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'AccountsSavedadstylesList' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'aslAccountId'
+--
+-- * 'aslPageToken'
+--
+-- * 'aslMaxResults'
+accountsSavedadstylesList
+    :: Text -- ^ 'aslAccountId'
+    -> AccountsSavedadstylesList
+accountsSavedadstylesList pAslAccountId_ =
+    AccountsSavedadstylesList
+    { _aslAccountId = pAslAccountId_
+    , _aslPageToken = Nothing
+    , _aslMaxResults = Nothing
+    }
+
+-- | Account for which to list saved ad styles.
+aslAccountId :: Lens' AccountsSavedadstylesList Text
+aslAccountId
+  = lens _aslAccountId (\ s a -> s{_aslAccountId = a})
+
+-- | A continuation token, used to page through saved ad styles. To retrieve
+-- the next page, set this parameter to the value of \"nextPageToken\" from
+-- the previous response.
+aslPageToken :: Lens' AccountsSavedadstylesList (Maybe Text)
+aslPageToken
+  = lens _aslPageToken (\ s a -> s{_aslPageToken = a})
+
+-- | The maximum number of saved ad styles to include in the response, used
+-- for paging.
+aslMaxResults :: Lens' AccountsSavedadstylesList (Maybe Int32)
+aslMaxResults
+  = lens _aslMaxResults
+      (\ s a -> s{_aslMaxResults = a})
+      . mapping _Coerce
+
+instance GoogleRequest AccountsSavedadstylesList
+         where
+        type Rs AccountsSavedadstylesList = SavedAdStyles
+        requestClient AccountsSavedadstylesList{..}
+          = go _aslAccountId _aslPageToken _aslMaxResults
+              (Just AltJSON)
+              adSenseService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy AccountsSavedadstylesListResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/AdSense/Accounts/URLChannels/List.hs b/gen/Network/Google/Resource/AdSense/Accounts/URLChannels/List.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/AdSense/Accounts/URLChannels/List.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.AdSense.Accounts.URLChannels.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 URL channels in the specified ad client for the specified
+-- account.
+--
+-- /See:/ <https://developers.google.com/adsense/management/ AdSense Management API Reference> for @adsense.accounts.urlchannels.list@.
+module Network.Google.Resource.AdSense.Accounts.URLChannels.List
+    (
+    -- * REST Resource
+      AccountsURLChannelsListResource
+
+    -- * Creating a Request
+    , accountsURLChannelsList
+    , AccountsURLChannelsList
+
+    -- * Request Lenses
+    , auclAdClientId
+    , auclAccountId
+    , auclPageToken
+    , auclMaxResults
+    ) where
+
+import           Network.Google.AdSense.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @adsense.accounts.urlchannels.list@ method which the
+-- 'AccountsURLChannelsList' request conforms to.
+type AccountsURLChannelsListResource =
+     "adsense" :>
+       "v1.4" :>
+         "accounts" :>
+           Capture "accountId" Text :>
+             "adclients" :>
+               Capture "adClientId" Text :>
+                 "urlchannels" :>
+                   QueryParam "pageToken" Text :>
+                     QueryParam "maxResults" (Textual Int32) :>
+                       QueryParam "alt" AltJSON :> Get '[JSON] URLChannels
+
+-- | List all URL channels in the specified ad client for the specified
+-- account.
+--
+-- /See:/ 'accountsURLChannelsList' smart constructor.
+data AccountsURLChannelsList = AccountsURLChannelsList
+    { _auclAdClientId :: !Text
+    , _auclAccountId  :: !Text
+    , _auclPageToken  :: !(Maybe Text)
+    , _auclMaxResults :: !(Maybe (Textual Int32))
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'AccountsURLChannelsList' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'auclAdClientId'
+--
+-- * 'auclAccountId'
+--
+-- * 'auclPageToken'
+--
+-- * 'auclMaxResults'
+accountsURLChannelsList
+    :: Text -- ^ 'auclAdClientId'
+    -> Text -- ^ 'auclAccountId'
+    -> AccountsURLChannelsList
+accountsURLChannelsList pAuclAdClientId_ pAuclAccountId_ =
+    AccountsURLChannelsList
+    { _auclAdClientId = pAuclAdClientId_
+    , _auclAccountId = pAuclAccountId_
+    , _auclPageToken = Nothing
+    , _auclMaxResults = Nothing
+    }
+
+-- | Ad client for which to list URL channels.
+auclAdClientId :: Lens' AccountsURLChannelsList Text
+auclAdClientId
+  = lens _auclAdClientId
+      (\ s a -> s{_auclAdClientId = a})
+
+-- | Account to which the ad client belongs.
+auclAccountId :: Lens' AccountsURLChannelsList Text
+auclAccountId
+  = lens _auclAccountId
+      (\ s a -> s{_auclAccountId = a})
+
+-- | A continuation token, used to page through URL channels. To retrieve the
+-- next page, set this parameter to the value of \"nextPageToken\" from the
+-- previous response.
+auclPageToken :: Lens' AccountsURLChannelsList (Maybe Text)
+auclPageToken
+  = lens _auclPageToken
+      (\ s a -> s{_auclPageToken = a})
+
+-- | The maximum number of URL channels to include in the response, used for
+-- paging.
+auclMaxResults :: Lens' AccountsURLChannelsList (Maybe Int32)
+auclMaxResults
+  = lens _auclMaxResults
+      (\ s a -> s{_auclMaxResults = a})
+      . mapping _Coerce
+
+instance GoogleRequest AccountsURLChannelsList where
+        type Rs AccountsURLChannelsList = URLChannels
+        requestClient AccountsURLChannelsList{..}
+          = go _auclAccountId _auclAdClientId _auclPageToken
+              _auclMaxResults
+              (Just AltJSON)
+              adSenseService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy AccountsURLChannelsListResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/AdSense/AdClients/List.hs b/gen/Network/Google/Resource/AdSense/AdClients/List.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/AdSense/AdClients/List.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.AdSense.AdClients.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 ad clients in this AdSense account.
+--
+-- /See:/ <https://developers.google.com/adsense/management/ AdSense Management API Reference> for @adsense.adclients.list@.
+module Network.Google.Resource.AdSense.AdClients.List
+    (
+    -- * REST Resource
+      AdClientsListResource
+
+    -- * Creating a Request
+    , adClientsList
+    , AdClientsList
+
+    -- * Request Lenses
+    , aclPageToken
+    , aclMaxResults
+    ) where
+
+import           Network.Google.AdSense.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @adsense.adclients.list@ method which the
+-- 'AdClientsList' request conforms to.
+type AdClientsListResource =
+     "adsense" :>
+       "v1.4" :>
+         "adclients" :>
+           QueryParam "pageToken" Text :>
+             QueryParam "maxResults" (Textual Int32) :>
+               QueryParam "alt" AltJSON :> Get '[JSON] AdClients
+
+-- | List all ad clients in this AdSense account.
+--
+-- /See:/ 'adClientsList' smart constructor.
+data AdClientsList = AdClientsList
+    { _aclPageToken  :: !(Maybe Text)
+    , _aclMaxResults :: !(Maybe (Textual Int32))
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'AdClientsList' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'aclPageToken'
+--
+-- * 'aclMaxResults'
+adClientsList
+    :: AdClientsList
+adClientsList =
+    AdClientsList
+    { _aclPageToken = Nothing
+    , _aclMaxResults = Nothing
+    }
+
+-- | A continuation token, used to page through ad clients. To retrieve the
+-- next page, set this parameter to the value of \"nextPageToken\" from the
+-- previous response.
+aclPageToken :: Lens' AdClientsList (Maybe Text)
+aclPageToken
+  = lens _aclPageToken (\ s a -> s{_aclPageToken = a})
+
+-- | The maximum number of ad clients to include in the response, used for
+-- paging.
+aclMaxResults :: Lens' AdClientsList (Maybe Int32)
+aclMaxResults
+  = lens _aclMaxResults
+      (\ s a -> s{_aclMaxResults = a})
+      . mapping _Coerce
+
+instance GoogleRequest AdClientsList where
+        type Rs AdClientsList = AdClients
+        requestClient AdClientsList{..}
+          = go _aclPageToken _aclMaxResults (Just AltJSON)
+              adSenseService
+          where go
+                  = buildClient (Proxy :: Proxy AdClientsListResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/AdSense/AdUnits/CustomChannels/List.hs b/gen/Network/Google/Resource/AdSense/AdUnits/CustomChannels/List.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/AdSense/AdUnits/CustomChannels/List.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.AdSense.AdUnits.CustomChannels.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 custom channels which the specified ad unit belongs to.
+--
+-- /See:/ <https://developers.google.com/adsense/management/ AdSense Management API Reference> for @adsense.adunits.customchannels.list@.
+module Network.Google.Resource.AdSense.AdUnits.CustomChannels.List
+    (
+    -- * REST Resource
+      AdUnitsCustomChannelsListResource
+
+    -- * Creating a Request
+    , adUnitsCustomChannelsList
+    , AdUnitsCustomChannelsList
+
+    -- * Request Lenses
+    , aucclAdUnitId
+    , aucclAdClientId
+    , aucclPageToken
+    , aucclMaxResults
+    ) where
+
+import           Network.Google.AdSense.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @adsense.adunits.customchannels.list@ method which the
+-- 'AdUnitsCustomChannelsList' request conforms to.
+type AdUnitsCustomChannelsListResource =
+     "adsense" :>
+       "v1.4" :>
+         "adclients" :>
+           Capture "adClientId" Text :>
+             "adunits" :>
+               Capture "adUnitId" Text :>
+                 "customchannels" :>
+                   QueryParam "pageToken" Text :>
+                     QueryParam "maxResults" (Textual Int32) :>
+                       QueryParam "alt" AltJSON :>
+                         Get '[JSON] CustomChannels
+
+-- | List all custom channels which the specified ad unit belongs to.
+--
+-- /See:/ 'adUnitsCustomChannelsList' smart constructor.
+data AdUnitsCustomChannelsList = AdUnitsCustomChannelsList
+    { _aucclAdUnitId   :: !Text
+    , _aucclAdClientId :: !Text
+    , _aucclPageToken  :: !(Maybe Text)
+    , _aucclMaxResults :: !(Maybe (Textual Int32))
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'AdUnitsCustomChannelsList' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'aucclAdUnitId'
+--
+-- * 'aucclAdClientId'
+--
+-- * 'aucclPageToken'
+--
+-- * 'aucclMaxResults'
+adUnitsCustomChannelsList
+    :: Text -- ^ 'aucclAdUnitId'
+    -> Text -- ^ 'aucclAdClientId'
+    -> AdUnitsCustomChannelsList
+adUnitsCustomChannelsList pAucclAdUnitId_ pAucclAdClientId_ =
+    AdUnitsCustomChannelsList
+    { _aucclAdUnitId = pAucclAdUnitId_
+    , _aucclAdClientId = pAucclAdClientId_
+    , _aucclPageToken = Nothing
+    , _aucclMaxResults = Nothing
+    }
+
+-- | Ad unit for which to list custom channels.
+aucclAdUnitId :: Lens' AdUnitsCustomChannelsList Text
+aucclAdUnitId
+  = lens _aucclAdUnitId
+      (\ s a -> s{_aucclAdUnitId = a})
+
+-- | Ad client which contains the ad unit.
+aucclAdClientId :: Lens' AdUnitsCustomChannelsList Text
+aucclAdClientId
+  = lens _aucclAdClientId
+      (\ s a -> s{_aucclAdClientId = a})
+
+-- | A continuation token, used to page through custom channels. To retrieve
+-- the next page, set this parameter to the value of \"nextPageToken\" from
+-- the previous response.
+aucclPageToken :: Lens' AdUnitsCustomChannelsList (Maybe Text)
+aucclPageToken
+  = lens _aucclPageToken
+      (\ s a -> s{_aucclPageToken = a})
+
+-- | The maximum number of custom channels to include in the response, used
+-- for paging.
+aucclMaxResults :: Lens' AdUnitsCustomChannelsList (Maybe Int32)
+aucclMaxResults
+  = lens _aucclMaxResults
+      (\ s a -> s{_aucclMaxResults = a})
+      . mapping _Coerce
+
+instance GoogleRequest AdUnitsCustomChannelsList
+         where
+        type Rs AdUnitsCustomChannelsList = CustomChannels
+        requestClient AdUnitsCustomChannelsList{..}
+          = go _aucclAdClientId _aucclAdUnitId _aucclPageToken
+              _aucclMaxResults
+              (Just AltJSON)
+              adSenseService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy AdUnitsCustomChannelsListResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/AdSense/AdUnits/Get.hs b/gen/Network/Google/Resource/AdSense/AdUnits/Get.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/AdSense/AdUnits/Get.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.AdSense.AdUnits.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)
+--
+-- Gets the specified ad unit in the specified ad client.
+--
+-- /See:/ <https://developers.google.com/adsense/management/ AdSense Management API Reference> for @adsense.adunits.get@.
+module Network.Google.Resource.AdSense.AdUnits.Get
+    (
+    -- * REST Resource
+      AdUnitsGetResource
+
+    -- * Creating a Request
+    , adUnitsGet
+    , AdUnitsGet
+
+    -- * Request Lenses
+    , augAdUnitId
+    , augAdClientId
+    ) where
+
+import           Network.Google.AdSense.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @adsense.adunits.get@ method which the
+-- 'AdUnitsGet' request conforms to.
+type AdUnitsGetResource =
+     "adsense" :>
+       "v1.4" :>
+         "adclients" :>
+           Capture "adClientId" Text :>
+             "adunits" :>
+               Capture "adUnitId" Text :>
+                 QueryParam "alt" AltJSON :> Get '[JSON] AdUnit
+
+-- | Gets the specified ad unit in the specified ad client.
+--
+-- /See:/ 'adUnitsGet' smart constructor.
+data AdUnitsGet = AdUnitsGet
+    { _augAdUnitId   :: !Text
+    , _augAdClientId :: !Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'AdUnitsGet' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'augAdUnitId'
+--
+-- * 'augAdClientId'
+adUnitsGet
+    :: Text -- ^ 'augAdUnitId'
+    -> Text -- ^ 'augAdClientId'
+    -> AdUnitsGet
+adUnitsGet pAugAdUnitId_ pAugAdClientId_ =
+    AdUnitsGet
+    { _augAdUnitId = pAugAdUnitId_
+    , _augAdClientId = pAugAdClientId_
+    }
+
+-- | Ad unit to retrieve.
+augAdUnitId :: Lens' AdUnitsGet Text
+augAdUnitId
+  = lens _augAdUnitId (\ s a -> s{_augAdUnitId = a})
+
+-- | Ad client for which to get the ad unit.
+augAdClientId :: Lens' AdUnitsGet Text
+augAdClientId
+  = lens _augAdClientId
+      (\ s a -> s{_augAdClientId = a})
+
+instance GoogleRequest AdUnitsGet where
+        type Rs AdUnitsGet = AdUnit
+        requestClient AdUnitsGet{..}
+          = go _augAdClientId _augAdUnitId (Just AltJSON)
+              adSenseService
+          where go
+                  = buildClient (Proxy :: Proxy AdUnitsGetResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/AdSense/AdUnits/GetAdCode.hs b/gen/Network/Google/Resource/AdSense/AdUnits/GetAdCode.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/AdSense/AdUnits/GetAdCode.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.AdSense.AdUnits.GetAdCode
+-- 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)
+--
+-- Get ad code for the specified ad unit.
+--
+-- /See:/ <https://developers.google.com/adsense/management/ AdSense Management API Reference> for @adsense.adunits.getAdCode@.
+module Network.Google.Resource.AdSense.AdUnits.GetAdCode
+    (
+    -- * REST Resource
+      AdUnitsGetAdCodeResource
+
+    -- * Creating a Request
+    , adUnitsGetAdCode
+    , AdUnitsGetAdCode
+
+    -- * Request Lenses
+    , augacAdUnitId
+    , augacAdClientId
+    ) where
+
+import           Network.Google.AdSense.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @adsense.adunits.getAdCode@ method which the
+-- 'AdUnitsGetAdCode' request conforms to.
+type AdUnitsGetAdCodeResource =
+     "adsense" :>
+       "v1.4" :>
+         "adclients" :>
+           Capture "adClientId" Text :>
+             "adunits" :>
+               Capture "adUnitId" Text :>
+                 "adcode" :>
+                   QueryParam "alt" AltJSON :> Get '[JSON] AdCode
+
+-- | Get ad code for the specified ad unit.
+--
+-- /See:/ 'adUnitsGetAdCode' smart constructor.
+data AdUnitsGetAdCode = AdUnitsGetAdCode
+    { _augacAdUnitId   :: !Text
+    , _augacAdClientId :: !Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'AdUnitsGetAdCode' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'augacAdUnitId'
+--
+-- * 'augacAdClientId'
+adUnitsGetAdCode
+    :: Text -- ^ 'augacAdUnitId'
+    -> Text -- ^ 'augacAdClientId'
+    -> AdUnitsGetAdCode
+adUnitsGetAdCode pAugacAdUnitId_ pAugacAdClientId_ =
+    AdUnitsGetAdCode
+    { _augacAdUnitId = pAugacAdUnitId_
+    , _augacAdClientId = pAugacAdClientId_
+    }
+
+-- | Ad unit to get the code for.
+augacAdUnitId :: Lens' AdUnitsGetAdCode Text
+augacAdUnitId
+  = lens _augacAdUnitId
+      (\ s a -> s{_augacAdUnitId = a})
+
+-- | Ad client with contains the ad unit.
+augacAdClientId :: Lens' AdUnitsGetAdCode Text
+augacAdClientId
+  = lens _augacAdClientId
+      (\ s a -> s{_augacAdClientId = a})
+
+instance GoogleRequest AdUnitsGetAdCode where
+        type Rs AdUnitsGetAdCode = AdCode
+        requestClient AdUnitsGetAdCode{..}
+          = go _augacAdClientId _augacAdUnitId (Just AltJSON)
+              adSenseService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy AdUnitsGetAdCodeResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/AdSense/AdUnits/List.hs b/gen/Network/Google/Resource/AdSense/AdUnits/List.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/AdSense/AdUnits/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.AdSense.AdUnits.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 ad units in the specified ad client for this AdSense account.
+--
+-- /See:/ <https://developers.google.com/adsense/management/ AdSense Management API Reference> for @adsense.adunits.list@.
+module Network.Google.Resource.AdSense.AdUnits.List
+    (
+    -- * REST Resource
+      AdUnitsListResource
+
+    -- * Creating a Request
+    , adUnitsList
+    , AdUnitsList
+
+    -- * Request Lenses
+    , aulIncludeInactive
+    , aulAdClientId
+    , aulPageToken
+    , aulMaxResults
+    ) where
+
+import           Network.Google.AdSense.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @adsense.adunits.list@ method which the
+-- 'AdUnitsList' request conforms to.
+type AdUnitsListResource =
+     "adsense" :>
+       "v1.4" :>
+         "adclients" :>
+           Capture "adClientId" Text :>
+             "adunits" :>
+               QueryParam "includeInactive" Bool :>
+                 QueryParam "pageToken" Text :>
+                   QueryParam "maxResults" (Textual Int32) :>
+                     QueryParam "alt" AltJSON :> Get '[JSON] AdUnits
+
+-- | List all ad units in the specified ad client for this AdSense account.
+--
+-- /See:/ 'adUnitsList' smart constructor.
+data AdUnitsList = AdUnitsList
+    { _aulIncludeInactive :: !(Maybe Bool)
+    , _aulAdClientId      :: !Text
+    , _aulPageToken       :: !(Maybe Text)
+    , _aulMaxResults      :: !(Maybe (Textual Int32))
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'AdUnitsList' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'aulIncludeInactive'
+--
+-- * 'aulAdClientId'
+--
+-- * 'aulPageToken'
+--
+-- * 'aulMaxResults'
+adUnitsList
+    :: Text -- ^ 'aulAdClientId'
+    -> AdUnitsList
+adUnitsList pAulAdClientId_ =
+    AdUnitsList
+    { _aulIncludeInactive = Nothing
+    , _aulAdClientId = pAulAdClientId_
+    , _aulPageToken = Nothing
+    , _aulMaxResults = Nothing
+    }
+
+-- | Whether to include inactive ad units. Default: true.
+aulIncludeInactive :: Lens' AdUnitsList (Maybe Bool)
+aulIncludeInactive
+  = lens _aulIncludeInactive
+      (\ s a -> s{_aulIncludeInactive = a})
+
+-- | Ad client for which to list ad units.
+aulAdClientId :: Lens' AdUnitsList Text
+aulAdClientId
+  = lens _aulAdClientId
+      (\ s a -> s{_aulAdClientId = a})
+
+-- | A continuation token, used to page through ad units. To retrieve the
+-- next page, set this parameter to the value of \"nextPageToken\" from the
+-- previous response.
+aulPageToken :: Lens' AdUnitsList (Maybe Text)
+aulPageToken
+  = lens _aulPageToken (\ s a -> s{_aulPageToken = a})
+
+-- | The maximum number of ad units to include in the response, used for
+-- paging.
+aulMaxResults :: Lens' AdUnitsList (Maybe Int32)
+aulMaxResults
+  = lens _aulMaxResults
+      (\ s a -> s{_aulMaxResults = a})
+      . mapping _Coerce
+
+instance GoogleRequest AdUnitsList where
+        type Rs AdUnitsList = AdUnits
+        requestClient AdUnitsList{..}
+          = go _aulAdClientId _aulIncludeInactive _aulPageToken
+              _aulMaxResults
+              (Just AltJSON)
+              adSenseService
+          where go
+                  = buildClient (Proxy :: Proxy AdUnitsListResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/AdSense/Alerts/Delete.hs b/gen/Network/Google/Resource/AdSense/Alerts/Delete.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/AdSense/Alerts/Delete.hs
@@ -0,0 +1,84 @@
+{-# 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.AdSense.Alerts.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)
+--
+-- Dismiss (delete) the specified alert from the publisher\'s AdSense
+-- account.
+--
+-- /See:/ <https://developers.google.com/adsense/management/ AdSense Management API Reference> for @adsense.alerts.delete@.
+module Network.Google.Resource.AdSense.Alerts.Delete
+    (
+    -- * REST Resource
+      AlertsDeleteResource
+
+    -- * Creating a Request
+    , alertsDelete
+    , AlertsDelete
+
+    -- * Request Lenses
+    , adAlertId
+    ) where
+
+import           Network.Google.AdSense.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @adsense.alerts.delete@ method which the
+-- 'AlertsDelete' request conforms to.
+type AlertsDeleteResource =
+     "adsense" :>
+       "v1.4" :>
+         "alerts" :>
+           Capture "alertId" Text :>
+             QueryParam "alt" AltJSON :> Delete '[JSON] ()
+
+-- | Dismiss (delete) the specified alert from the publisher\'s AdSense
+-- account.
+--
+-- /See:/ 'alertsDelete' smart constructor.
+newtype AlertsDelete = AlertsDelete
+    { _adAlertId :: Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'AlertsDelete' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'adAlertId'
+alertsDelete
+    :: Text -- ^ 'adAlertId'
+    -> AlertsDelete
+alertsDelete pAdAlertId_ =
+    AlertsDelete
+    { _adAlertId = pAdAlertId_
+    }
+
+-- | Alert to delete.
+adAlertId :: Lens' AlertsDelete Text
+adAlertId
+  = lens _adAlertId (\ s a -> s{_adAlertId = a})
+
+instance GoogleRequest AlertsDelete where
+        type Rs AlertsDelete = ()
+        requestClient AlertsDelete{..}
+          = go _adAlertId (Just AltJSON) adSenseService
+          where go
+                  = buildClient (Proxy :: Proxy AlertsDeleteResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/AdSense/Alerts/List.hs b/gen/Network/Google/Resource/AdSense/Alerts/List.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/AdSense/Alerts/List.hs
@@ -0,0 +1,82 @@
+{-# 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.AdSense.Alerts.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 the alerts for this AdSense account.
+--
+-- /See:/ <https://developers.google.com/adsense/management/ AdSense Management API Reference> for @adsense.alerts.list@.
+module Network.Google.Resource.AdSense.Alerts.List
+    (
+    -- * REST Resource
+      AlertsListResource
+
+    -- * Creating a Request
+    , alertsList
+    , AlertsList
+
+    -- * Request Lenses
+    , alLocale
+    ) where
+
+import           Network.Google.AdSense.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @adsense.alerts.list@ method which the
+-- 'AlertsList' request conforms to.
+type AlertsListResource =
+     "adsense" :>
+       "v1.4" :>
+         "alerts" :>
+           QueryParam "locale" Text :>
+             QueryParam "alt" AltJSON :> Get '[JSON] Alerts
+
+-- | List the alerts for this AdSense account.
+--
+-- /See:/ 'alertsList' smart constructor.
+newtype AlertsList = AlertsList
+    { _alLocale :: Maybe Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'AlertsList' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'alLocale'
+alertsList
+    :: AlertsList
+alertsList =
+    AlertsList
+    { _alLocale = Nothing
+    }
+
+-- | The locale to use for translating alert messages. The account locale
+-- will be used if this is not supplied. The AdSense default (English) will
+-- be used if the supplied locale is invalid or unsupported.
+alLocale :: Lens' AlertsList (Maybe Text)
+alLocale = lens _alLocale (\ s a -> s{_alLocale = a})
+
+instance GoogleRequest AlertsList where
+        type Rs AlertsList = Alerts
+        requestClient AlertsList{..}
+          = go _alLocale (Just AltJSON) adSenseService
+          where go
+                  = buildClient (Proxy :: Proxy AlertsListResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/AdSense/CustomChannels/AdUnits/List.hs b/gen/Network/Google/Resource/AdSense/CustomChannels/AdUnits/List.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/AdSense/CustomChannels/AdUnits/List.hs
@@ -0,0 +1,145 @@
+{-# 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.AdSense.CustomChannels.AdUnits.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 ad units in the specified custom channel.
+--
+-- /See:/ <https://developers.google.com/adsense/management/ AdSense Management API Reference> for @adsense.customchannels.adunits.list@.
+module Network.Google.Resource.AdSense.CustomChannels.AdUnits.List
+    (
+    -- * REST Resource
+      CustomChannelsAdUnitsListResource
+
+    -- * Creating a Request
+    , customChannelsAdUnitsList
+    , CustomChannelsAdUnitsList
+
+    -- * Request Lenses
+    , ccaulIncludeInactive
+    , ccaulCustomChannelId
+    , ccaulAdClientId
+    , ccaulPageToken
+    , ccaulMaxResults
+    ) where
+
+import           Network.Google.AdSense.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @adsense.customchannels.adunits.list@ method which the
+-- 'CustomChannelsAdUnitsList' request conforms to.
+type CustomChannelsAdUnitsListResource =
+     "adsense" :>
+       "v1.4" :>
+         "adclients" :>
+           Capture "adClientId" Text :>
+             "customchannels" :>
+               Capture "customChannelId" Text :>
+                 "adunits" :>
+                   QueryParam "includeInactive" Bool :>
+                     QueryParam "pageToken" Text :>
+                       QueryParam "maxResults" (Textual Int32) :>
+                         QueryParam "alt" AltJSON :> Get '[JSON] AdUnits
+
+-- | List all ad units in the specified custom channel.
+--
+-- /See:/ 'customChannelsAdUnitsList' smart constructor.
+data CustomChannelsAdUnitsList = CustomChannelsAdUnitsList
+    { _ccaulIncludeInactive :: !(Maybe Bool)
+    , _ccaulCustomChannelId :: !Text
+    , _ccaulAdClientId      :: !Text
+    , _ccaulPageToken       :: !(Maybe Text)
+    , _ccaulMaxResults      :: !(Maybe (Textual Int32))
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'CustomChannelsAdUnitsList' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'ccaulIncludeInactive'
+--
+-- * 'ccaulCustomChannelId'
+--
+-- * 'ccaulAdClientId'
+--
+-- * 'ccaulPageToken'
+--
+-- * 'ccaulMaxResults'
+customChannelsAdUnitsList
+    :: Text -- ^ 'ccaulCustomChannelId'
+    -> Text -- ^ 'ccaulAdClientId'
+    -> CustomChannelsAdUnitsList
+customChannelsAdUnitsList pCcaulCustomChannelId_ pCcaulAdClientId_ =
+    CustomChannelsAdUnitsList
+    { _ccaulIncludeInactive = Nothing
+    , _ccaulCustomChannelId = pCcaulCustomChannelId_
+    , _ccaulAdClientId = pCcaulAdClientId_
+    , _ccaulPageToken = Nothing
+    , _ccaulMaxResults = Nothing
+    }
+
+-- | Whether to include inactive ad units. Default: true.
+ccaulIncludeInactive :: Lens' CustomChannelsAdUnitsList (Maybe Bool)
+ccaulIncludeInactive
+  = lens _ccaulIncludeInactive
+      (\ s a -> s{_ccaulIncludeInactive = a})
+
+-- | Custom channel for which to list ad units.
+ccaulCustomChannelId :: Lens' CustomChannelsAdUnitsList Text
+ccaulCustomChannelId
+  = lens _ccaulCustomChannelId
+      (\ s a -> s{_ccaulCustomChannelId = a})
+
+-- | Ad client which contains the custom channel.
+ccaulAdClientId :: Lens' CustomChannelsAdUnitsList Text
+ccaulAdClientId
+  = lens _ccaulAdClientId
+      (\ s a -> s{_ccaulAdClientId = a})
+
+-- | A continuation token, used to page through ad units. To retrieve the
+-- next page, set this parameter to the value of \"nextPageToken\" from the
+-- previous response.
+ccaulPageToken :: Lens' CustomChannelsAdUnitsList (Maybe Text)
+ccaulPageToken
+  = lens _ccaulPageToken
+      (\ s a -> s{_ccaulPageToken = a})
+
+-- | The maximum number of ad units to include in the response, used for
+-- paging.
+ccaulMaxResults :: Lens' CustomChannelsAdUnitsList (Maybe Int32)
+ccaulMaxResults
+  = lens _ccaulMaxResults
+      (\ s a -> s{_ccaulMaxResults = a})
+      . mapping _Coerce
+
+instance GoogleRequest CustomChannelsAdUnitsList
+         where
+        type Rs CustomChannelsAdUnitsList = AdUnits
+        requestClient CustomChannelsAdUnitsList{..}
+          = go _ccaulAdClientId _ccaulCustomChannelId
+              _ccaulIncludeInactive
+              _ccaulPageToken
+              _ccaulMaxResults
+              (Just AltJSON)
+              adSenseService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy CustomChannelsAdUnitsListResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/AdSense/CustomChannels/Get.hs b/gen/Network/Google/Resource/AdSense/CustomChannels/Get.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/AdSense/CustomChannels/Get.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.AdSense.CustomChannels.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)
+--
+-- Get the specified custom channel from the specified ad client.
+--
+-- /See:/ <https://developers.google.com/adsense/management/ AdSense Management API Reference> for @adsense.customchannels.get@.
+module Network.Google.Resource.AdSense.CustomChannels.Get
+    (
+    -- * REST Resource
+      CustomChannelsGetResource
+
+    -- * Creating a Request
+    , customChannelsGet
+    , CustomChannelsGet
+
+    -- * Request Lenses
+    , ccgCustomChannelId
+    , ccgAdClientId
+    ) where
+
+import           Network.Google.AdSense.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @adsense.customchannels.get@ method which the
+-- 'CustomChannelsGet' request conforms to.
+type CustomChannelsGetResource =
+     "adsense" :>
+       "v1.4" :>
+         "adclients" :>
+           Capture "adClientId" Text :>
+             "customchannels" :>
+               Capture "customChannelId" Text :>
+                 QueryParam "alt" AltJSON :> Get '[JSON] CustomChannel
+
+-- | Get the specified custom channel from the specified ad client.
+--
+-- /See:/ 'customChannelsGet' smart constructor.
+data CustomChannelsGet = CustomChannelsGet
+    { _ccgCustomChannelId :: !Text
+    , _ccgAdClientId      :: !Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'CustomChannelsGet' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'ccgCustomChannelId'
+--
+-- * 'ccgAdClientId'
+customChannelsGet
+    :: Text -- ^ 'ccgCustomChannelId'
+    -> Text -- ^ 'ccgAdClientId'
+    -> CustomChannelsGet
+customChannelsGet pCcgCustomChannelId_ pCcgAdClientId_ =
+    CustomChannelsGet
+    { _ccgCustomChannelId = pCcgCustomChannelId_
+    , _ccgAdClientId = pCcgAdClientId_
+    }
+
+-- | Custom channel to retrieve.
+ccgCustomChannelId :: Lens' CustomChannelsGet Text
+ccgCustomChannelId
+  = lens _ccgCustomChannelId
+      (\ s a -> s{_ccgCustomChannelId = a})
+
+-- | Ad client which contains the custom channel.
+ccgAdClientId :: Lens' CustomChannelsGet Text
+ccgAdClientId
+  = lens _ccgAdClientId
+      (\ s a -> s{_ccgAdClientId = a})
+
+instance GoogleRequest CustomChannelsGet where
+        type Rs CustomChannelsGet = CustomChannel
+        requestClient CustomChannelsGet{..}
+          = go _ccgAdClientId _ccgCustomChannelId
+              (Just AltJSON)
+              adSenseService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy CustomChannelsGetResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/AdSense/CustomChannels/List.hs b/gen/Network/Google/Resource/AdSense/CustomChannels/List.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/AdSense/CustomChannels/List.hs
@@ -0,0 +1,117 @@
+{-# 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.AdSense.CustomChannels.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 custom channels in the specified ad client for this AdSense
+-- account.
+--
+-- /See:/ <https://developers.google.com/adsense/management/ AdSense Management API Reference> for @adsense.customchannels.list@.
+module Network.Google.Resource.AdSense.CustomChannels.List
+    (
+    -- * REST Resource
+      CustomChannelsListResource
+
+    -- * Creating a Request
+    , customChannelsList
+    , CustomChannelsList
+
+    -- * Request Lenses
+    , cclAdClientId
+    , cclPageToken
+    , cclMaxResults
+    ) where
+
+import           Network.Google.AdSense.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @adsense.customchannels.list@ method which the
+-- 'CustomChannelsList' request conforms to.
+type CustomChannelsListResource =
+     "adsense" :>
+       "v1.4" :>
+         "adclients" :>
+           Capture "adClientId" Text :>
+             "customchannels" :>
+               QueryParam "pageToken" Text :>
+                 QueryParam "maxResults" (Textual Int32) :>
+                   QueryParam "alt" AltJSON :>
+                     Get '[JSON] CustomChannels
+
+-- | List all custom channels in the specified ad client for this AdSense
+-- account.
+--
+-- /See:/ 'customChannelsList' smart constructor.
+data CustomChannelsList = CustomChannelsList
+    { _cclAdClientId :: !Text
+    , _cclPageToken  :: !(Maybe Text)
+    , _cclMaxResults :: !(Maybe (Textual Int32))
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'CustomChannelsList' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'cclAdClientId'
+--
+-- * 'cclPageToken'
+--
+-- * 'cclMaxResults'
+customChannelsList
+    :: Text -- ^ 'cclAdClientId'
+    -> CustomChannelsList
+customChannelsList pCclAdClientId_ =
+    CustomChannelsList
+    { _cclAdClientId = pCclAdClientId_
+    , _cclPageToken = Nothing
+    , _cclMaxResults = Nothing
+    }
+
+-- | Ad client for which to list custom channels.
+cclAdClientId :: Lens' CustomChannelsList Text
+cclAdClientId
+  = lens _cclAdClientId
+      (\ s a -> s{_cclAdClientId = a})
+
+-- | A continuation token, used to page through custom channels. To retrieve
+-- the next page, set this parameter to the value of \"nextPageToken\" from
+-- the previous response.
+cclPageToken :: Lens' CustomChannelsList (Maybe Text)
+cclPageToken
+  = lens _cclPageToken (\ s a -> s{_cclPageToken = a})
+
+-- | The maximum number of custom channels to include in the response, used
+-- for paging.
+cclMaxResults :: Lens' CustomChannelsList (Maybe Int32)
+cclMaxResults
+  = lens _cclMaxResults
+      (\ s a -> s{_cclMaxResults = a})
+      . mapping _Coerce
+
+instance GoogleRequest CustomChannelsList where
+        type Rs CustomChannelsList = CustomChannels
+        requestClient CustomChannelsList{..}
+          = go _cclAdClientId _cclPageToken _cclMaxResults
+              (Just AltJSON)
+              adSenseService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy CustomChannelsListResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/AdSense/Metadata/Dimensions/List.hs b/gen/Network/Google/Resource/AdSense/Metadata/Dimensions/List.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/AdSense/Metadata/Dimensions/List.hs
@@ -0,0 +1,69 @@
+{-# 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.AdSense.Metadata.Dimensions.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 the metadata for the dimensions available to this AdSense account.
+--
+-- /See:/ <https://developers.google.com/adsense/management/ AdSense Management API Reference> for @adsense.metadata.dimensions.list@.
+module Network.Google.Resource.AdSense.Metadata.Dimensions.List
+    (
+    -- * REST Resource
+      MetadataDimensionsListResource
+
+    -- * Creating a Request
+    , metadataDimensionsList
+    , MetadataDimensionsList
+
+    ) where
+
+import           Network.Google.AdSense.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @adsense.metadata.dimensions.list@ method which the
+-- 'MetadataDimensionsList' request conforms to.
+type MetadataDimensionsListResource =
+     "adsense" :>
+       "v1.4" :>
+         "metadata" :>
+           "dimensions" :>
+             QueryParam "alt" AltJSON :> Get '[JSON] Metadata
+
+-- | List the metadata for the dimensions available to this AdSense account.
+--
+-- /See:/ 'metadataDimensionsList' smart constructor.
+data MetadataDimensionsList =
+    MetadataDimensionsList
+    deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'MetadataDimensionsList' with the minimum fields required to make a request.
+--
+metadataDimensionsList
+    :: MetadataDimensionsList
+metadataDimensionsList = MetadataDimensionsList
+
+instance GoogleRequest MetadataDimensionsList where
+        type Rs MetadataDimensionsList = Metadata
+        requestClient MetadataDimensionsList{}
+          = go (Just AltJSON) adSenseService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy MetadataDimensionsListResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/AdSense/Metadata/Metrics/List.hs b/gen/Network/Google/Resource/AdSense/Metadata/Metrics/List.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/AdSense/Metadata/Metrics/List.hs
@@ -0,0 +1,69 @@
+{-# 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.AdSense.Metadata.Metrics.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 the metadata for the metrics available to this AdSense account.
+--
+-- /See:/ <https://developers.google.com/adsense/management/ AdSense Management API Reference> for @adsense.metadata.metrics.list@.
+module Network.Google.Resource.AdSense.Metadata.Metrics.List
+    (
+    -- * REST Resource
+      MetadataMetricsListResource
+
+    -- * Creating a Request
+    , metadataMetricsList
+    , MetadataMetricsList
+
+    ) where
+
+import           Network.Google.AdSense.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @adsense.metadata.metrics.list@ method which the
+-- 'MetadataMetricsList' request conforms to.
+type MetadataMetricsListResource =
+     "adsense" :>
+       "v1.4" :>
+         "metadata" :>
+           "metrics" :>
+             QueryParam "alt" AltJSON :> Get '[JSON] Metadata
+
+-- | List the metadata for the metrics available to this AdSense account.
+--
+-- /See:/ 'metadataMetricsList' smart constructor.
+data MetadataMetricsList =
+    MetadataMetricsList
+    deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'MetadataMetricsList' with the minimum fields required to make a request.
+--
+metadataMetricsList
+    :: MetadataMetricsList
+metadataMetricsList = MetadataMetricsList
+
+instance GoogleRequest MetadataMetricsList where
+        type Rs MetadataMetricsList = Metadata
+        requestClient MetadataMetricsList{}
+          = go (Just AltJSON) adSenseService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy MetadataMetricsListResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/AdSense/Payments/List.hs b/gen/Network/Google/Resource/AdSense/Payments/List.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/AdSense/Payments/List.hs
@@ -0,0 +1,67 @@
+{-# 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.AdSense.Payments.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 the payments for this AdSense account.
+--
+-- /See:/ <https://developers.google.com/adsense/management/ AdSense Management API Reference> for @adsense.payments.list@.
+module Network.Google.Resource.AdSense.Payments.List
+    (
+    -- * REST Resource
+      PaymentsListResource
+
+    -- * Creating a Request
+    , paymentsList
+    , PaymentsList
+
+    ) where
+
+import           Network.Google.AdSense.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @adsense.payments.list@ method which the
+-- 'PaymentsList' request conforms to.
+type PaymentsListResource =
+     "adsense" :>
+       "v1.4" :>
+         "payments" :>
+           QueryParam "alt" AltJSON :> Get '[JSON] Payments
+
+-- | List the payments for this AdSense account.
+--
+-- /See:/ 'paymentsList' smart constructor.
+data PaymentsList =
+    PaymentsList
+    deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'PaymentsList' with the minimum fields required to make a request.
+--
+paymentsList
+    :: PaymentsList
+paymentsList = PaymentsList
+
+instance GoogleRequest PaymentsList where
+        type Rs PaymentsList = Payments
+        requestClient PaymentsList{}
+          = go (Just AltJSON) adSenseService
+          where go
+                  = buildClient (Proxy :: Proxy PaymentsListResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/AdSense/Reports/Generate.hs b/gen/Network/Google/Resource/AdSense/Reports/Generate.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/AdSense/Reports/Generate.hs
@@ -0,0 +1,280 @@
+{-# 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.AdSense.Reports.Generate
+-- 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)
+--
+-- Generate an AdSense report based on the report request sent in the query
+-- parameters. Returns the result as JSON; to retrieve output in CSV format
+-- specify \"alt=csv\" as a query parameter.
+--
+-- /See:/ <https://developers.google.com/adsense/management/ AdSense Management API Reference> for @adsense.reports.generate@.
+module Network.Google.Resource.AdSense.Reports.Generate
+    (
+    -- * REST Resource
+      ReportsGenerateResource
+
+    -- * Creating a Request
+    , reportsGenerate
+    , ReportsGenerate
+
+    -- * Request Lenses
+    , rgDimension
+    , rgLocale
+    , rgEndDate
+    , rgStartDate
+    , rgAccountId
+    , rgMetric
+    , rgCurrency
+    , rgSort
+    , rgFilter
+    , rgStartIndex
+    , rgUseTimezoneReporting
+    , rgMaxResults
+    ) where
+
+import           Network.Google.AdSense.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @adsense.reports.generate@ method which the
+-- 'ReportsGenerate' request conforms to.
+type ReportsGenerateResource =
+     "adsense" :>
+       "v1.4" :>
+         "reports" :>
+           QueryParam "startDate" Text :>
+             QueryParam "endDate" Text :>
+               QueryParams "dimension" Text :>
+                 QueryParam "locale" Text :>
+                   QueryParams "accountId" Text :>
+                     QueryParams "metric" Text :>
+                       QueryParam "currency" Text :>
+                         QueryParams "sort" Text :>
+                           QueryParams "filter" Text :>
+                             QueryParam "startIndex" (Textual Int32) :>
+                               QueryParam "useTimezoneReporting" Bool :>
+                                 QueryParam "maxResults" (Textual Int32) :>
+                                   QueryParam "alt" AltJSON :>
+                                     Get '[JSON] AdsenseReportsGenerateResponse
+       :<|>
+       "adsense" :>
+         "v1.4" :>
+           "reports" :>
+             QueryParam "startDate" Text :>
+               QueryParam "endDate" Text :>
+                 QueryParams "dimension" Text :>
+                   QueryParam "locale" Text :>
+                     QueryParams "accountId" Text :>
+                       QueryParams "metric" Text :>
+                         QueryParam "currency" Text :>
+                           QueryParams "sort" Text :>
+                             QueryParams "filter" Text :>
+                               QueryParam "startIndex" (Textual Int32) :>
+                                 QueryParam "useTimezoneReporting" Bool :>
+                                   QueryParam "maxResults" (Textual Int32) :>
+                                     QueryParam "alt" AltMedia :>
+                                       Get '[OctetStream] Stream
+
+-- | Generate an AdSense report based on the report request sent in the query
+-- parameters. Returns the result as JSON; to retrieve output in CSV format
+-- specify \"alt=csv\" as a query parameter.
+--
+-- /See:/ 'reportsGenerate' smart constructor.
+data ReportsGenerate = ReportsGenerate
+    { _rgDimension            :: !(Maybe [Text])
+    , _rgLocale               :: !(Maybe Text)
+    , _rgEndDate              :: !Text
+    , _rgStartDate            :: !Text
+    , _rgAccountId            :: !(Maybe [Text])
+    , _rgMetric               :: !(Maybe [Text])
+    , _rgCurrency             :: !(Maybe Text)
+    , _rgSort                 :: !(Maybe [Text])
+    , _rgFilter               :: !(Maybe [Text])
+    , _rgStartIndex           :: !(Maybe (Textual Int32))
+    , _rgUseTimezoneReporting :: !(Maybe Bool)
+    , _rgMaxResults           :: !(Maybe (Textual Int32))
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ReportsGenerate' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'rgDimension'
+--
+-- * 'rgLocale'
+--
+-- * 'rgEndDate'
+--
+-- * 'rgStartDate'
+--
+-- * 'rgAccountId'
+--
+-- * 'rgMetric'
+--
+-- * 'rgCurrency'
+--
+-- * 'rgSort'
+--
+-- * 'rgFilter'
+--
+-- * 'rgStartIndex'
+--
+-- * 'rgUseTimezoneReporting'
+--
+-- * 'rgMaxResults'
+reportsGenerate
+    :: Text -- ^ 'rgEndDate'
+    -> Text -- ^ 'rgStartDate'
+    -> ReportsGenerate
+reportsGenerate pRgEndDate_ pRgStartDate_ =
+    ReportsGenerate
+    { _rgDimension = Nothing
+    , _rgLocale = Nothing
+    , _rgEndDate = pRgEndDate_
+    , _rgStartDate = pRgStartDate_
+    , _rgAccountId = Nothing
+    , _rgMetric = Nothing
+    , _rgCurrency = Nothing
+    , _rgSort = Nothing
+    , _rgFilter = Nothing
+    , _rgStartIndex = Nothing
+    , _rgUseTimezoneReporting = Nothing
+    , _rgMaxResults = Nothing
+    }
+
+-- | Dimensions to base the report on.
+rgDimension :: Lens' ReportsGenerate [Text]
+rgDimension
+  = lens _rgDimension (\ s a -> s{_rgDimension = a}) .
+      _Default
+      . _Coerce
+
+-- | Optional locale to use for translating report output to a local
+-- language. Defaults to \"en_US\" if not specified.
+rgLocale :: Lens' ReportsGenerate (Maybe Text)
+rgLocale = lens _rgLocale (\ s a -> s{_rgLocale = a})
+
+-- | End of the date range to report on in \"YYYY-MM-DD\" format, inclusive.
+rgEndDate :: Lens' ReportsGenerate Text
+rgEndDate
+  = lens _rgEndDate (\ s a -> s{_rgEndDate = a})
+
+-- | Start of the date range to report on in \"YYYY-MM-DD\" format,
+-- inclusive.
+rgStartDate :: Lens' ReportsGenerate Text
+rgStartDate
+  = lens _rgStartDate (\ s a -> s{_rgStartDate = a})
+
+-- | Accounts upon which to report.
+rgAccountId :: Lens' ReportsGenerate [Text]
+rgAccountId
+  = lens _rgAccountId (\ s a -> s{_rgAccountId = a}) .
+      _Default
+      . _Coerce
+
+-- | Numeric columns to include in the report.
+rgMetric :: Lens' ReportsGenerate [Text]
+rgMetric
+  = lens _rgMetric (\ s a -> s{_rgMetric = a}) .
+      _Default
+      . _Coerce
+
+-- | Optional currency to use when reporting on monetary metrics. Defaults to
+-- the account\'s currency if not set.
+rgCurrency :: Lens' ReportsGenerate (Maybe Text)
+rgCurrency
+  = lens _rgCurrency (\ s a -> s{_rgCurrency = a})
+
+-- | The name of a dimension or metric to sort the resulting report on,
+-- optionally prefixed with \"+\" to sort ascending or \"-\" to sort
+-- descending. If no prefix is specified, the column is sorted ascending.
+rgSort :: Lens' ReportsGenerate [Text]
+rgSort
+  = lens _rgSort (\ s a -> s{_rgSort = a}) . _Default .
+      _Coerce
+
+-- | Filters to be run on the report.
+rgFilter :: Lens' ReportsGenerate [Text]
+rgFilter
+  = lens _rgFilter (\ s a -> s{_rgFilter = a}) .
+      _Default
+      . _Coerce
+
+-- | Index of the first row of report data to return.
+rgStartIndex :: Lens' ReportsGenerate (Maybe Int32)
+rgStartIndex
+  = lens _rgStartIndex (\ s a -> s{_rgStartIndex = a})
+      . mapping _Coerce
+
+-- | Whether the report should be generated in the AdSense account\'s local
+-- timezone. If false default PST\/PDT timezone will be used.
+rgUseTimezoneReporting :: Lens' ReportsGenerate (Maybe Bool)
+rgUseTimezoneReporting
+  = lens _rgUseTimezoneReporting
+      (\ s a -> s{_rgUseTimezoneReporting = a})
+
+-- | The maximum number of rows of report data to return.
+rgMaxResults :: Lens' ReportsGenerate (Maybe Int32)
+rgMaxResults
+  = lens _rgMaxResults (\ s a -> s{_rgMaxResults = a})
+      . mapping _Coerce
+
+instance GoogleRequest ReportsGenerate where
+        type Rs ReportsGenerate =
+             AdsenseReportsGenerateResponse
+        requestClient ReportsGenerate{..}
+          = go (Just _rgStartDate) (Just _rgEndDate)
+              (_rgDimension ^. _Default)
+              _rgLocale
+              (_rgAccountId ^. _Default)
+              (_rgMetric ^. _Default)
+              _rgCurrency
+              (_rgSort ^. _Default)
+              (_rgFilter ^. _Default)
+              _rgStartIndex
+              _rgUseTimezoneReporting
+              _rgMaxResults
+              (Just AltJSON)
+              adSenseService
+          where go :<|> _
+                  = buildClient
+                      (Proxy :: Proxy ReportsGenerateResource)
+                      mempty
+
+instance GoogleRequest
+         (MediaDownload ReportsGenerate) where
+        type Rs (MediaDownload ReportsGenerate) = Stream
+        requestClient (MediaDownload ReportsGenerate{..})
+          = go (Just _rgStartDate) (Just _rgEndDate)
+              (_rgDimension ^. _Default)
+              _rgLocale
+              (_rgAccountId ^. _Default)
+              (_rgMetric ^. _Default)
+              _rgCurrency
+              (_rgSort ^. _Default)
+              (_rgFilter ^. _Default)
+              _rgStartIndex
+              _rgUseTimezoneReporting
+              _rgMaxResults
+              (Just AltMedia)
+              adSenseService
+          where _ :<|> go
+                  = buildClient
+                      (Proxy :: Proxy ReportsGenerateResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/AdSense/Reports/Saved/Generate.hs b/gen/Network/Google/Resource/AdSense/Reports/Saved/Generate.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/AdSense/Reports/Saved/Generate.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.AdSense.Reports.Saved.Generate
+-- 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)
+--
+-- Generate an AdSense report based on the saved report ID sent in the
+-- query parameters.
+--
+-- /See:/ <https://developers.google.com/adsense/management/ AdSense Management API Reference> for @adsense.reports.saved.generate@.
+module Network.Google.Resource.AdSense.Reports.Saved.Generate
+    (
+    -- * REST Resource
+      ReportsSavedGenerateResource
+
+    -- * Creating a Request
+    , reportsSavedGenerate
+    , ReportsSavedGenerate
+
+    -- * Request Lenses
+    , rsgLocale
+    , rsgSavedReportId
+    , rsgStartIndex
+    , rsgMaxResults
+    ) where
+
+import           Network.Google.AdSense.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @adsense.reports.saved.generate@ method which the
+-- 'ReportsSavedGenerate' request conforms to.
+type ReportsSavedGenerateResource =
+     "adsense" :>
+       "v1.4" :>
+         "reports" :>
+           Capture "savedReportId" Text :>
+             QueryParam "locale" Text :>
+               QueryParam "startIndex" (Textual Int32) :>
+                 QueryParam "maxResults" (Textual Int32) :>
+                   QueryParam "alt" AltJSON :>
+                     Get '[JSON] AdsenseReportsGenerateResponse
+
+-- | Generate an AdSense report based on the saved report ID sent in the
+-- query parameters.
+--
+-- /See:/ 'reportsSavedGenerate' smart constructor.
+data ReportsSavedGenerate = ReportsSavedGenerate
+    { _rsgLocale        :: !(Maybe Text)
+    , _rsgSavedReportId :: !Text
+    , _rsgStartIndex    :: !(Maybe (Textual Int32))
+    , _rsgMaxResults    :: !(Maybe (Textual Int32))
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ReportsSavedGenerate' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'rsgLocale'
+--
+-- * 'rsgSavedReportId'
+--
+-- * 'rsgStartIndex'
+--
+-- * 'rsgMaxResults'
+reportsSavedGenerate
+    :: Text -- ^ 'rsgSavedReportId'
+    -> ReportsSavedGenerate
+reportsSavedGenerate pRsgSavedReportId_ =
+    ReportsSavedGenerate
+    { _rsgLocale = Nothing
+    , _rsgSavedReportId = pRsgSavedReportId_
+    , _rsgStartIndex = Nothing
+    , _rsgMaxResults = Nothing
+    }
+
+-- | Optional locale to use for translating report output to a local
+-- language. Defaults to \"en_US\" if not specified.
+rsgLocale :: Lens' ReportsSavedGenerate (Maybe Text)
+rsgLocale
+  = lens _rsgLocale (\ s a -> s{_rsgLocale = a})
+
+-- | The saved report to retrieve.
+rsgSavedReportId :: Lens' ReportsSavedGenerate Text
+rsgSavedReportId
+  = lens _rsgSavedReportId
+      (\ s a -> s{_rsgSavedReportId = a})
+
+-- | Index of the first row of report data to return.
+rsgStartIndex :: Lens' ReportsSavedGenerate (Maybe Int32)
+rsgStartIndex
+  = lens _rsgStartIndex
+      (\ s a -> s{_rsgStartIndex = a})
+      . mapping _Coerce
+
+-- | The maximum number of rows of report data to return.
+rsgMaxResults :: Lens' ReportsSavedGenerate (Maybe Int32)
+rsgMaxResults
+  = lens _rsgMaxResults
+      (\ s a -> s{_rsgMaxResults = a})
+      . mapping _Coerce
+
+instance GoogleRequest ReportsSavedGenerate where
+        type Rs ReportsSavedGenerate =
+             AdsenseReportsGenerateResponse
+        requestClient ReportsSavedGenerate{..}
+          = go _rsgSavedReportId _rsgLocale _rsgStartIndex
+              _rsgMaxResults
+              (Just AltJSON)
+              adSenseService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy ReportsSavedGenerateResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/AdSense/Reports/Saved/List.hs b/gen/Network/Google/Resource/AdSense/Reports/Saved/List.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/AdSense/Reports/Saved/List.hs
@@ -0,0 +1,100 @@
+{-# LANGUAGE DataKinds          #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE FlexibleInstances  #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+{-# LANGUAGE TypeOperators      #-}
+
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
+
+-- |
+-- Module      : Network.Google.Resource.AdSense.Reports.Saved.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 saved reports in this AdSense account.
+--
+-- /See:/ <https://developers.google.com/adsense/management/ AdSense Management API Reference> for @adsense.reports.saved.list@.
+module Network.Google.Resource.AdSense.Reports.Saved.List
+    (
+    -- * REST Resource
+      ReportsSavedListResource
+
+    -- * Creating a Request
+    , reportsSavedList
+    , ReportsSavedList
+
+    -- * Request Lenses
+    , rslPageToken
+    , rslMaxResults
+    ) where
+
+import           Network.Google.AdSense.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @adsense.reports.saved.list@ method which the
+-- 'ReportsSavedList' request conforms to.
+type ReportsSavedListResource =
+     "adsense" :>
+       "v1.4" :>
+         "reports" :>
+           "saved" :>
+             QueryParam "pageToken" Text :>
+               QueryParam "maxResults" (Textual Int32) :>
+                 QueryParam "alt" AltJSON :> Get '[JSON] SavedReports
+
+-- | List all saved reports in this AdSense account.
+--
+-- /See:/ 'reportsSavedList' smart constructor.
+data ReportsSavedList = ReportsSavedList
+    { _rslPageToken  :: !(Maybe Text)
+    , _rslMaxResults :: !(Maybe (Textual Int32))
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ReportsSavedList' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'rslPageToken'
+--
+-- * 'rslMaxResults'
+reportsSavedList
+    :: ReportsSavedList
+reportsSavedList =
+    ReportsSavedList
+    { _rslPageToken = Nothing
+    , _rslMaxResults = Nothing
+    }
+
+-- | A continuation token, used to page through saved reports. To retrieve
+-- the next page, set this parameter to the value of \"nextPageToken\" from
+-- the previous response.
+rslPageToken :: Lens' ReportsSavedList (Maybe Text)
+rslPageToken
+  = lens _rslPageToken (\ s a -> s{_rslPageToken = a})
+
+-- | The maximum number of saved reports to include in the response, used for
+-- paging.
+rslMaxResults :: Lens' ReportsSavedList (Maybe Int32)
+rslMaxResults
+  = lens _rslMaxResults
+      (\ s a -> s{_rslMaxResults = a})
+      . mapping _Coerce
+
+instance GoogleRequest ReportsSavedList where
+        type Rs ReportsSavedList = SavedReports
+        requestClient ReportsSavedList{..}
+          = go _rslPageToken _rslMaxResults (Just AltJSON)
+              adSenseService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy ReportsSavedListResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/AdSense/Savedadstyles/Get.hs b/gen/Network/Google/Resource/AdSense/Savedadstyles/Get.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/AdSense/Savedadstyles/Get.hs
@@ -0,0 +1,84 @@
+{-# 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.AdSense.Savedadstyles.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)
+--
+-- Get a specific saved ad style from the user\'s account.
+--
+-- /See:/ <https://developers.google.com/adsense/management/ AdSense Management API Reference> for @adsense.savedadstyles.get@.
+module Network.Google.Resource.AdSense.Savedadstyles.Get
+    (
+    -- * REST Resource
+      SavedadstylesGetResource
+
+    -- * Creating a Request
+    , savedadstylesGet
+    , SavedadstylesGet
+
+    -- * Request Lenses
+    , sgSavedAdStyleId
+    ) where
+
+import           Network.Google.AdSense.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @adsense.savedadstyles.get@ method which the
+-- 'SavedadstylesGet' request conforms to.
+type SavedadstylesGetResource =
+     "adsense" :>
+       "v1.4" :>
+         "savedadstyles" :>
+           Capture "savedAdStyleId" Text :>
+             QueryParam "alt" AltJSON :> Get '[JSON] SavedAdStyle
+
+-- | Get a specific saved ad style from the user\'s account.
+--
+-- /See:/ 'savedadstylesGet' smart constructor.
+newtype SavedadstylesGet = SavedadstylesGet
+    { _sgSavedAdStyleId :: Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'SavedadstylesGet' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'sgSavedAdStyleId'
+savedadstylesGet
+    :: Text -- ^ 'sgSavedAdStyleId'
+    -> SavedadstylesGet
+savedadstylesGet pSgSavedAdStyleId_ =
+    SavedadstylesGet
+    { _sgSavedAdStyleId = pSgSavedAdStyleId_
+    }
+
+-- | Saved ad style to retrieve.
+sgSavedAdStyleId :: Lens' SavedadstylesGet Text
+sgSavedAdStyleId
+  = lens _sgSavedAdStyleId
+      (\ s a -> s{_sgSavedAdStyleId = a})
+
+instance GoogleRequest SavedadstylesGet where
+        type Rs SavedadstylesGet = SavedAdStyle
+        requestClient SavedadstylesGet{..}
+          = go _sgSavedAdStyleId (Just AltJSON) adSenseService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy SavedadstylesGetResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/AdSense/Savedadstyles/List.hs b/gen/Network/Google/Resource/AdSense/Savedadstyles/List.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/AdSense/Savedadstyles/List.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.AdSense.Savedadstyles.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 saved ad styles in the user\'s account.
+--
+-- /See:/ <https://developers.google.com/adsense/management/ AdSense Management API Reference> for @adsense.savedadstyles.list@.
+module Network.Google.Resource.AdSense.Savedadstyles.List
+    (
+    -- * REST Resource
+      SavedadstylesListResource
+
+    -- * Creating a Request
+    , savedadstylesList
+    , SavedadstylesList
+
+    -- * Request Lenses
+    , slPageToken
+    , slMaxResults
+    ) where
+
+import           Network.Google.AdSense.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @adsense.savedadstyles.list@ method which the
+-- 'SavedadstylesList' request conforms to.
+type SavedadstylesListResource =
+     "adsense" :>
+       "v1.4" :>
+         "savedadstyles" :>
+           QueryParam "pageToken" Text :>
+             QueryParam "maxResults" (Textual Int32) :>
+               QueryParam "alt" AltJSON :> Get '[JSON] SavedAdStyles
+
+-- | List all saved ad styles in the user\'s account.
+--
+-- /See:/ 'savedadstylesList' smart constructor.
+data SavedadstylesList = SavedadstylesList
+    { _slPageToken  :: !(Maybe Text)
+    , _slMaxResults :: !(Maybe (Textual Int32))
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'SavedadstylesList' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'slPageToken'
+--
+-- * 'slMaxResults'
+savedadstylesList
+    :: SavedadstylesList
+savedadstylesList =
+    SavedadstylesList
+    { _slPageToken = Nothing
+    , _slMaxResults = Nothing
+    }
+
+-- | A continuation token, used to page through saved ad styles. To retrieve
+-- the next page, set this parameter to the value of \"nextPageToken\" from
+-- the previous response.
+slPageToken :: Lens' SavedadstylesList (Maybe Text)
+slPageToken
+  = lens _slPageToken (\ s a -> s{_slPageToken = a})
+
+-- | The maximum number of saved ad styles to include in the response, used
+-- for paging.
+slMaxResults :: Lens' SavedadstylesList (Maybe Int32)
+slMaxResults
+  = lens _slMaxResults (\ s a -> s{_slMaxResults = a})
+      . mapping _Coerce
+
+instance GoogleRequest SavedadstylesList where
+        type Rs SavedadstylesList = SavedAdStyles
+        requestClient SavedadstylesList{..}
+          = go _slPageToken _slMaxResults (Just AltJSON)
+              adSenseService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy SavedadstylesListResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/AdSense/URLChannels/List.hs b/gen/Network/Google/Resource/AdSense/URLChannels/List.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/AdSense/URLChannels/List.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.AdSense.URLChannels.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 URL channels in the specified ad client for this AdSense
+-- account.
+--
+-- /See:/ <https://developers.google.com/adsense/management/ AdSense Management API Reference> for @adsense.urlchannels.list@.
+module Network.Google.Resource.AdSense.URLChannels.List
+    (
+    -- * REST Resource
+      URLChannelsListResource
+
+    -- * Creating a Request
+    , urlChannelsList
+    , URLChannelsList
+
+    -- * Request Lenses
+    , uclAdClientId
+    , uclPageToken
+    , uclMaxResults
+    ) where
+
+import           Network.Google.AdSense.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @adsense.urlchannels.list@ method which the
+-- 'URLChannelsList' request conforms to.
+type URLChannelsListResource =
+     "adsense" :>
+       "v1.4" :>
+         "adclients" :>
+           Capture "adClientId" Text :>
+             "urlchannels" :>
+               QueryParam "pageToken" Text :>
+                 QueryParam "maxResults" (Textual Int32) :>
+                   QueryParam "alt" AltJSON :> Get '[JSON] URLChannels
+
+-- | List all URL channels in the specified ad client for this AdSense
+-- account.
+--
+-- /See:/ 'urlChannelsList' smart constructor.
+data URLChannelsList = URLChannelsList
+    { _uclAdClientId :: !Text
+    , _uclPageToken  :: !(Maybe Text)
+    , _uclMaxResults :: !(Maybe (Textual Int32))
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'URLChannelsList' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'uclAdClientId'
+--
+-- * 'uclPageToken'
+--
+-- * 'uclMaxResults'
+urlChannelsList
+    :: Text -- ^ 'uclAdClientId'
+    -> URLChannelsList
+urlChannelsList pUclAdClientId_ =
+    URLChannelsList
+    { _uclAdClientId = pUclAdClientId_
+    , _uclPageToken = Nothing
+    , _uclMaxResults = Nothing
+    }
+
+-- | Ad client for which to list URL channels.
+uclAdClientId :: Lens' URLChannelsList Text
+uclAdClientId
+  = lens _uclAdClientId
+      (\ s a -> s{_uclAdClientId = a})
+
+-- | A continuation token, used to page through URL channels. To retrieve the
+-- next page, set this parameter to the value of \"nextPageToken\" from the
+-- previous response.
+uclPageToken :: Lens' URLChannelsList (Maybe Text)
+uclPageToken
+  = lens _uclPageToken (\ s a -> s{_uclPageToken = a})
+
+-- | The maximum number of URL channels to include in the response, used for
+-- paging.
+uclMaxResults :: Lens' URLChannelsList (Maybe Int32)
+uclMaxResults
+  = lens _uclMaxResults
+      (\ s a -> s{_uclMaxResults = a})
+      . mapping _Coerce
+
+instance GoogleRequest URLChannelsList where
+        type Rs URLChannelsList = URLChannels
+        requestClient URLChannelsList{..}
+          = go _uclAdClientId _uclPageToken _uclMaxResults
+              (Just AltJSON)
+              adSenseService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy URLChannelsListResource)
+                      mempty
diff --git a/gogol-adsense.cabal b/gogol-adsense.cabal
new file mode 100644
--- /dev/null
+++ b/gogol-adsense.cabal
@@ -0,0 +1,84 @@
+name:                  gogol-adsense
+version:               0.0.1
+synopsis:              Google AdSense Management 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:
+    Gives AdSense publishers access to their inventory and the ability to
+    generate reports
+    .
+    /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 @v1.4@
+    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.AdSense
+        , Network.Google.AdSense.Types
+        , Network.Google.Resource.AdSense.Accounts.AdClients.List
+        , Network.Google.Resource.AdSense.Accounts.AdUnits.CustomChannels.List
+        , Network.Google.Resource.AdSense.Accounts.AdUnits.Get
+        , Network.Google.Resource.AdSense.Accounts.AdUnits.GetAdCode
+        , Network.Google.Resource.AdSense.Accounts.AdUnits.List
+        , Network.Google.Resource.AdSense.Accounts.Alerts.Delete
+        , Network.Google.Resource.AdSense.Accounts.Alerts.List
+        , Network.Google.Resource.AdSense.Accounts.CustomChannels.AdUnits.List
+        , Network.Google.Resource.AdSense.Accounts.CustomChannels.Get
+        , Network.Google.Resource.AdSense.Accounts.CustomChannels.List
+        , Network.Google.Resource.AdSense.Accounts.Get
+        , Network.Google.Resource.AdSense.Accounts.List
+        , Network.Google.Resource.AdSense.Accounts.Payments.List
+        , Network.Google.Resource.AdSense.Accounts.Reports.Generate
+        , Network.Google.Resource.AdSense.Accounts.Reports.Saved.Generate
+        , Network.Google.Resource.AdSense.Accounts.Reports.Saved.List
+        , Network.Google.Resource.AdSense.Accounts.Savedadstyles.Get
+        , Network.Google.Resource.AdSense.Accounts.Savedadstyles.List
+        , Network.Google.Resource.AdSense.Accounts.URLChannels.List
+        , Network.Google.Resource.AdSense.AdClients.List
+        , Network.Google.Resource.AdSense.AdUnits.CustomChannels.List
+        , Network.Google.Resource.AdSense.AdUnits.Get
+        , Network.Google.Resource.AdSense.AdUnits.GetAdCode
+        , Network.Google.Resource.AdSense.AdUnits.List
+        , Network.Google.Resource.AdSense.Alerts.Delete
+        , Network.Google.Resource.AdSense.Alerts.List
+        , Network.Google.Resource.AdSense.CustomChannels.AdUnits.List
+        , Network.Google.Resource.AdSense.CustomChannels.Get
+        , Network.Google.Resource.AdSense.CustomChannels.List
+        , Network.Google.Resource.AdSense.Metadata.Dimensions.List
+        , Network.Google.Resource.AdSense.Metadata.Metrics.List
+        , Network.Google.Resource.AdSense.Payments.List
+        , Network.Google.Resource.AdSense.Reports.Generate
+        , Network.Google.Resource.AdSense.Reports.Saved.Generate
+        , Network.Google.Resource.AdSense.Reports.Saved.List
+        , Network.Google.Resource.AdSense.Savedadstyles.Get
+        , Network.Google.Resource.AdSense.Savedadstyles.List
+        , Network.Google.Resource.AdSense.URLChannels.List
+
+    other-modules:
+          Network.Google.AdSense.Types.Product
+        , Network.Google.AdSense.Types.Sum
+
+    build-depends:
+          gogol-core == 0.0.1.*
+        , base       >= 4.7 && < 5
