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-host
+
+* [Version](#version)
+* [Description](#description)
+* [Contribute](#contribute)
+* [Licence](#licence)
+
+
+## Version
+
+`0.0.1`
+
+
+## Description
+
+A client library for the Google AdSense Host.
+
+
+## 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-host` 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/AdSenseHost.hs b/gen/Network/Google/AdSenseHost.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/AdSenseHost.hs
@@ -0,0 +1,339 @@
+{-# LANGUAGE DataKinds         #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# LANGUAGE TypeOperators     #-}
+
+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+
+-- |
+-- Module      : Network.Google.AdSenseHost
+-- 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 Hosts access to report generation, ad code generation, and
+-- publisher management capabilities.
+--
+-- /See:/ <https://developers.google.com/adsense/host/ AdSense Host API Reference>
+module Network.Google.AdSenseHost
+    (
+    -- * Service Configuration
+      adSenseHostService
+
+    -- * API Declaration
+    , AdSenseHostAPI
+
+    -- * Resources
+
+    -- ** adsensehost.accounts.adclients.get
+    , module Network.Google.Resource.AdSenseHost.Accounts.AdClients.Get
+
+    -- ** adsensehost.accounts.adclients.list
+    , module Network.Google.Resource.AdSenseHost.Accounts.AdClients.List
+
+    -- ** adsensehost.accounts.adunits.delete
+    , module Network.Google.Resource.AdSenseHost.Accounts.AdUnits.Delete
+
+    -- ** adsensehost.accounts.adunits.get
+    , module Network.Google.Resource.AdSenseHost.Accounts.AdUnits.Get
+
+    -- ** adsensehost.accounts.adunits.getAdCode
+    , module Network.Google.Resource.AdSenseHost.Accounts.AdUnits.GetAdCode
+
+    -- ** adsensehost.accounts.adunits.insert
+    , module Network.Google.Resource.AdSenseHost.Accounts.AdUnits.Insert
+
+    -- ** adsensehost.accounts.adunits.list
+    , module Network.Google.Resource.AdSenseHost.Accounts.AdUnits.List
+
+    -- ** adsensehost.accounts.adunits.patch
+    , module Network.Google.Resource.AdSenseHost.Accounts.AdUnits.Patch
+
+    -- ** adsensehost.accounts.adunits.update
+    , module Network.Google.Resource.AdSenseHost.Accounts.AdUnits.Update
+
+    -- ** adsensehost.accounts.get
+    , module Network.Google.Resource.AdSenseHost.Accounts.Get
+
+    -- ** adsensehost.accounts.list
+    , module Network.Google.Resource.AdSenseHost.Accounts.List
+
+    -- ** adsensehost.accounts.reports.generate
+    , module Network.Google.Resource.AdSenseHost.Accounts.Reports.Generate
+
+    -- ** adsensehost.adclients.get
+    , module Network.Google.Resource.AdSenseHost.AdClients.Get
+
+    -- ** adsensehost.adclients.list
+    , module Network.Google.Resource.AdSenseHost.AdClients.List
+
+    -- ** adsensehost.associationsessions.start
+    , module Network.Google.Resource.AdSenseHost.AssociationSessions.Start
+
+    -- ** adsensehost.associationsessions.verify
+    , module Network.Google.Resource.AdSenseHost.AssociationSessions.Verify
+
+    -- ** adsensehost.customchannels.delete
+    , module Network.Google.Resource.AdSenseHost.CustomChannels.Delete
+
+    -- ** adsensehost.customchannels.get
+    , module Network.Google.Resource.AdSenseHost.CustomChannels.Get
+
+    -- ** adsensehost.customchannels.insert
+    , module Network.Google.Resource.AdSenseHost.CustomChannels.Insert
+
+    -- ** adsensehost.customchannels.list
+    , module Network.Google.Resource.AdSenseHost.CustomChannels.List
+
+    -- ** adsensehost.customchannels.patch
+    , module Network.Google.Resource.AdSenseHost.CustomChannels.Patch
+
+    -- ** adsensehost.customchannels.update
+    , module Network.Google.Resource.AdSenseHost.CustomChannels.Update
+
+    -- ** adsensehost.reports.generate
+    , module Network.Google.Resource.AdSenseHost.Reports.Generate
+
+    -- ** adsensehost.urlchannels.delete
+    , module Network.Google.Resource.AdSenseHost.URLChannels.Delete
+
+    -- ** adsensehost.urlchannels.insert
+    , module Network.Google.Resource.AdSenseHost.URLChannels.Insert
+
+    -- ** adsensehost.urlchannels.list
+    , module Network.Google.Resource.AdSenseHost.URLChannels.List
+
+    -- * Types
+
+    -- ** AdClients
+    , AdClients
+    , adClients
+    , acEtag
+    , acNextPageToken
+    , acKind
+    , acItems
+
+    -- ** AssociationSession
+    , AssociationSession
+    , associationSession
+    , asStatus
+    , asKind
+    , asWebsiteLocale
+    , asUserLocale
+    , asAccountId
+    , asProductCodes
+    , asId
+    , asWebsiteURL
+    , asRedirectURL
+
+    -- ** AssociationSessionsStartProductCode
+    , AssociationSessionsStartProductCode (..)
+
+    -- ** Accounts
+    , Accounts
+    , accounts
+    , aEtag
+    , aKind
+    , aItems
+
+    -- ** AdUnits
+    , AdUnits
+    , adUnits
+    , auEtag
+    , auNextPageToken
+    , auKind
+    , auItems
+
+    -- ** URLChannels
+    , URLChannels
+    , urlChannels
+    , ucEtag
+    , ucNextPageToken
+    , ucKind
+    , ucItems
+
+    -- ** CustomChannels
+    , CustomChannels
+    , customChannels
+    , ccEtag
+    , ccNextPageToken
+    , ccKind
+    , ccItems
+
+    -- ** AdUnit
+    , AdUnit
+    , adUnit
+    , auuStatus
+    , auuMobileContentAdsSettings
+    , auuKind
+    , auuCustomStyle
+    , auuName
+    , auuContentAdsSettings
+    , auuCode
+    , auuId
+
+    -- ** Report
+    , Report
+    , report
+    , rKind
+    , rAverages
+    , rWarnings
+    , rRows
+    , rTotals
+    , rHeaders
+    , rTotalMatchedRows
+
+    -- ** AdStyleFont
+    , AdStyleFont
+    , adStyleFont
+    , asfSize
+    , asfFamily
+
+    -- ** Account
+    , Account
+    , account
+    , accStatus
+    , accKind
+    , accName
+    , accId
+
+    -- ** AdUnitMobileContentAdsSettings
+    , AdUnitMobileContentAdsSettings
+    , adUnitMobileContentAdsSettings
+    , aumcasSize
+    , aumcasScriptingLanguage
+    , aumcasMarkupLanguage
+    , aumcasType
+
+    -- ** AdStyleColors
+    , AdStyleColors
+    , adStyleColors
+    , ascText
+    , ascURL
+    , ascBOrder
+    , ascTitle
+    , ascBackgRound
+
+    -- ** AdUnitContentAdsSettingsBackupOption
+    , AdUnitContentAdsSettingsBackupOption
+    , adUnitContentAdsSettingsBackupOption
+    , aucasboColor
+    , aucasboURL
+    , aucasboType
+
+    -- ** AdClient
+    , AdClient
+    , adClient
+    , adKind
+    , adArcOptIn
+    , adSupportsReporting
+    , adId
+    , adProductCode
+
+    -- ** ReportHeadersItem
+    , ReportHeadersItem
+    , reportHeadersItem
+    , rhiName
+    , rhiCurrency
+    , rhiType
+
+    -- ** AdStyle
+    , AdStyle
+    , adStyle
+    , assCorners
+    , assKind
+    , assFont
+    , assColors
+
+    -- ** CustomChannel
+    , CustomChannel
+    , customChannel
+    , cKind
+    , cName
+    , cCode
+    , cId
+
+    -- ** URLChannel
+    , URLChannel
+    , urlChannel
+    , urlcKind
+    , urlcId
+    , urlcURLPattern
+
+    -- ** AdCode
+    , AdCode
+    , adCode
+    , aaKind
+    , aaAdCode
+
+    -- ** AdUnitContentAdsSettings
+    , AdUnitContentAdsSettings
+    , adUnitContentAdsSettings
+    , aucasBackupOption
+    , aucasSize
+    , aucasType
+    ) where
+
+import           Network.Google.AdSenseHost.Types
+import           Network.Google.Prelude
+import           Network.Google.Resource.AdSenseHost.Accounts.AdClients.Get
+import           Network.Google.Resource.AdSenseHost.Accounts.AdClients.List
+import           Network.Google.Resource.AdSenseHost.Accounts.AdUnits.Delete
+import           Network.Google.Resource.AdSenseHost.Accounts.AdUnits.Get
+import           Network.Google.Resource.AdSenseHost.Accounts.AdUnits.GetAdCode
+import           Network.Google.Resource.AdSenseHost.Accounts.AdUnits.Insert
+import           Network.Google.Resource.AdSenseHost.Accounts.AdUnits.List
+import           Network.Google.Resource.AdSenseHost.Accounts.AdUnits.Patch
+import           Network.Google.Resource.AdSenseHost.Accounts.AdUnits.Update
+import           Network.Google.Resource.AdSenseHost.Accounts.Get
+import           Network.Google.Resource.AdSenseHost.Accounts.List
+import           Network.Google.Resource.AdSenseHost.Accounts.Reports.Generate
+import           Network.Google.Resource.AdSenseHost.AdClients.Get
+import           Network.Google.Resource.AdSenseHost.AdClients.List
+import           Network.Google.Resource.AdSenseHost.AssociationSessions.Start
+import           Network.Google.Resource.AdSenseHost.AssociationSessions.Verify
+import           Network.Google.Resource.AdSenseHost.CustomChannels.Delete
+import           Network.Google.Resource.AdSenseHost.CustomChannels.Get
+import           Network.Google.Resource.AdSenseHost.CustomChannels.Insert
+import           Network.Google.Resource.AdSenseHost.CustomChannels.List
+import           Network.Google.Resource.AdSenseHost.CustomChannels.Patch
+import           Network.Google.Resource.AdSenseHost.CustomChannels.Update
+import           Network.Google.Resource.AdSenseHost.Reports.Generate
+import           Network.Google.Resource.AdSenseHost.URLChannels.Delete
+import           Network.Google.Resource.AdSenseHost.URLChannels.Insert
+import           Network.Google.Resource.AdSenseHost.URLChannels.List
+
+{- $resources
+TODO
+-}
+
+-- | Represents the entirety of the methods and resources available for the AdSense Host API service.
+type AdSenseHostAPI =
+     AssociationSessionsVerifyResource :<|>
+       AssociationSessionsStartResource
+       :<|> AdClientsListResource
+       :<|> AdClientsGetResource
+       :<|> AccountsAdClientsListResource
+       :<|> AccountsAdClientsGetResource
+       :<|> AccountsReportsGenerateResource
+       :<|> AccountsAdUnitsInsertResource
+       :<|> AccountsAdUnitsListResource
+       :<|> AccountsAdUnitsPatchResource
+       :<|> AccountsAdUnitsGetResource
+       :<|> AccountsAdUnitsGetAdCodeResource
+       :<|> AccountsAdUnitsDeleteResource
+       :<|> AccountsAdUnitsUpdateResource
+       :<|> AccountsListResource
+       :<|> AccountsGetResource
+       :<|> ReportsGenerateResource
+       :<|> URLChannelsInsertResource
+       :<|> URLChannelsListResource
+       :<|> URLChannelsDeleteResource
+       :<|> CustomChannelsInsertResource
+       :<|> CustomChannelsListResource
+       :<|> CustomChannelsPatchResource
+       :<|> CustomChannelsGetResource
+       :<|> CustomChannelsDeleteResource
+       :<|> CustomChannelsUpdateResource
diff --git a/gen/Network/Google/AdSenseHost/Types.hs b/gen/Network/Google/AdSenseHost/Types.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/AdSenseHost/Types.hs
@@ -0,0 +1,205 @@
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- |
+-- Module      : Network.Google.AdSenseHost.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.AdSenseHost.Types
+    (
+    -- * Service Configuration
+      adSenseHostService
+
+    -- * OAuth Scopes
+    , adsensehostScope
+
+    -- * AdClients
+    , AdClients
+    , adClients
+    , acEtag
+    , acNextPageToken
+    , acKind
+    , acItems
+
+    -- * AssociationSession
+    , AssociationSession
+    , associationSession
+    , asStatus
+    , asKind
+    , asWebsiteLocale
+    , asUserLocale
+    , asAccountId
+    , asProductCodes
+    , asId
+    , asWebsiteURL
+    , asRedirectURL
+
+    -- * AssociationSessionsStartProductCode
+    , AssociationSessionsStartProductCode (..)
+
+    -- * Accounts
+    , Accounts
+    , accounts
+    , aEtag
+    , aKind
+    , aItems
+
+    -- * AdUnits
+    , AdUnits
+    , adUnits
+    , auEtag
+    , auNextPageToken
+    , auKind
+    , auItems
+
+    -- * URLChannels
+    , URLChannels
+    , urlChannels
+    , ucEtag
+    , ucNextPageToken
+    , ucKind
+    , ucItems
+
+    -- * CustomChannels
+    , CustomChannels
+    , customChannels
+    , ccEtag
+    , ccNextPageToken
+    , ccKind
+    , ccItems
+
+    -- * AdUnit
+    , AdUnit
+    , adUnit
+    , auuStatus
+    , auuMobileContentAdsSettings
+    , auuKind
+    , auuCustomStyle
+    , auuName
+    , auuContentAdsSettings
+    , auuCode
+    , auuId
+
+    -- * Report
+    , Report
+    , report
+    , rKind
+    , rAverages
+    , rWarnings
+    , rRows
+    , rTotals
+    , rHeaders
+    , rTotalMatchedRows
+
+    -- * AdStyleFont
+    , AdStyleFont
+    , adStyleFont
+    , asfSize
+    , asfFamily
+
+    -- * Account
+    , Account
+    , account
+    , accStatus
+    , accKind
+    , accName
+    , accId
+
+    -- * AdUnitMobileContentAdsSettings
+    , AdUnitMobileContentAdsSettings
+    , adUnitMobileContentAdsSettings
+    , aumcasSize
+    , aumcasScriptingLanguage
+    , aumcasMarkupLanguage
+    , aumcasType
+
+    -- * AdStyleColors
+    , AdStyleColors
+    , adStyleColors
+    , ascText
+    , ascURL
+    , ascBOrder
+    , ascTitle
+    , ascBackgRound
+
+    -- * AdUnitContentAdsSettingsBackupOption
+    , AdUnitContentAdsSettingsBackupOption
+    , adUnitContentAdsSettingsBackupOption
+    , aucasboColor
+    , aucasboURL
+    , aucasboType
+
+    -- * AdClient
+    , AdClient
+    , adClient
+    , adKind
+    , adArcOptIn
+    , adSupportsReporting
+    , adId
+    , adProductCode
+
+    -- * ReportHeadersItem
+    , ReportHeadersItem
+    , reportHeadersItem
+    , rhiName
+    , rhiCurrency
+    , rhiType
+
+    -- * AdStyle
+    , AdStyle
+    , adStyle
+    , assCorners
+    , assKind
+    , assFont
+    , assColors
+
+    -- * CustomChannel
+    , CustomChannel
+    , customChannel
+    , cKind
+    , cName
+    , cCode
+    , cId
+
+    -- * URLChannel
+    , URLChannel
+    , urlChannel
+    , urlcKind
+    , urlcId
+    , urlcURLPattern
+
+    -- * AdCode
+    , AdCode
+    , adCode
+    , aaKind
+    , aaAdCode
+
+    -- * AdUnitContentAdsSettings
+    , AdUnitContentAdsSettings
+    , adUnitContentAdsSettings
+    , aucasBackupOption
+    , aucasSize
+    , aucasType
+    ) where
+
+import           Network.Google.AdSenseHost.Types.Product
+import           Network.Google.AdSenseHost.Types.Sum
+import           Network.Google.Prelude
+
+-- | Default request referring to version 'v4.1' of the AdSense Host API. This contains the host and root path used as a starting point for constructing service requests.
+adSenseHostService :: Service
+adSenseHostService
+  = defaultService (ServiceId "adsensehost:v4.1")
+      "www.googleapis.com"
+
+-- | View and manage your AdSense host data and associated accounts
+adsensehostScope :: OAuthScope
+adsensehostScope = "https://www.googleapis.com/auth/adsensehost";
diff --git a/gen/Network/Google/AdSenseHost/Types/Product.hs b/gen/Network/Google/AdSenseHost/Types/Product.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/AdSenseHost/Types/Product.hs
@@ -0,0 +1,1479 @@
+{-# 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.AdSenseHost.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.AdSenseHost.Types.Product where
+
+import           Network.Google.AdSenseHost.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 = "adsensehost#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 adsensehost#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" .!= "adsensehost#adClients")
+                     <*> (o .:? "items" .!= mempty))
+
+instance ToJSON AdClients where
+        toJSON AdClients{..}
+          = object
+              (catMaybes
+                 [("etag" .=) <$> _acEtag,
+                  ("nextPageToken" .=) <$> _acNextPageToken,
+                  Just ("kind" .= _acKind), ("items" .=) <$> _acItems])
+
+--
+-- /See:/ 'associationSession' smart constructor.
+data AssociationSession = AssociationSession
+    { _asStatus        :: !(Maybe Text)
+    , _asKind          :: !Text
+    , _asWebsiteLocale :: !(Maybe Text)
+    , _asUserLocale    :: !(Maybe Text)
+    , _asAccountId     :: !(Maybe Text)
+    , _asProductCodes  :: !(Maybe [Text])
+    , _asId            :: !(Maybe Text)
+    , _asWebsiteURL    :: !(Maybe Text)
+    , _asRedirectURL   :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'AssociationSession' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'asStatus'
+--
+-- * 'asKind'
+--
+-- * 'asWebsiteLocale'
+--
+-- * 'asUserLocale'
+--
+-- * 'asAccountId'
+--
+-- * 'asProductCodes'
+--
+-- * 'asId'
+--
+-- * 'asWebsiteURL'
+--
+-- * 'asRedirectURL'
+associationSession
+    :: AssociationSession
+associationSession =
+    AssociationSession
+    { _asStatus = Nothing
+    , _asKind = "adsensehost#associationSession"
+    , _asWebsiteLocale = Nothing
+    , _asUserLocale = Nothing
+    , _asAccountId = Nothing
+    , _asProductCodes = Nothing
+    , _asId = Nothing
+    , _asWebsiteURL = Nothing
+    , _asRedirectURL = Nothing
+    }
+
+-- | Status of the completed association, available once the association
+-- callback token has been verified. One of ACCEPTED, REJECTED, or ERROR.
+asStatus :: Lens' AssociationSession (Maybe Text)
+asStatus = lens _asStatus (\ s a -> s{_asStatus = a})
+
+-- | Kind of resource this is, in this case adsensehost#associationSession.
+asKind :: Lens' AssociationSession Text
+asKind = lens _asKind (\ s a -> s{_asKind = a})
+
+-- | The locale of the user\'s hosted website.
+asWebsiteLocale :: Lens' AssociationSession (Maybe Text)
+asWebsiteLocale
+  = lens _asWebsiteLocale
+      (\ s a -> s{_asWebsiteLocale = a})
+
+-- | The preferred locale of the user themselves when going through the
+-- AdSense association flow.
+asUserLocale :: Lens' AssociationSession (Maybe Text)
+asUserLocale
+  = lens _asUserLocale (\ s a -> s{_asUserLocale = a})
+
+-- | Hosted account id of the associated publisher after association. Present
+-- if status is ACCEPTED.
+asAccountId :: Lens' AssociationSession (Maybe Text)
+asAccountId
+  = lens _asAccountId (\ s a -> s{_asAccountId = a})
+
+-- | The products to associate with the user. Options: AFC, AFF, AFS, AFMC
+asProductCodes :: Lens' AssociationSession [Text]
+asProductCodes
+  = lens _asProductCodes
+      (\ s a -> s{_asProductCodes = a})
+      . _Default
+      . _Coerce
+
+-- | Unique identifier of this association session.
+asId :: Lens' AssociationSession (Maybe Text)
+asId = lens _asId (\ s a -> s{_asId = a})
+
+-- | The URL of the user\'s hosted website.
+asWebsiteURL :: Lens' AssociationSession (Maybe Text)
+asWebsiteURL
+  = lens _asWebsiteURL (\ s a -> s{_asWebsiteURL = a})
+
+-- | Redirect URL of this association session. Used to redirect users into
+-- the AdSense association flow.
+asRedirectURL :: Lens' AssociationSession (Maybe Text)
+asRedirectURL
+  = lens _asRedirectURL
+      (\ s a -> s{_asRedirectURL = a})
+
+instance FromJSON AssociationSession where
+        parseJSON
+          = withObject "AssociationSession"
+              (\ o ->
+                 AssociationSession <$>
+                   (o .:? "status") <*>
+                     (o .:? "kind" .!= "adsensehost#associationSession")
+                     <*> (o .:? "websiteLocale")
+                     <*> (o .:? "userLocale")
+                     <*> (o .:? "accountId")
+                     <*> (o .:? "productCodes" .!= mempty)
+                     <*> (o .:? "id")
+                     <*> (o .:? "websiteUrl")
+                     <*> (o .:? "redirectUrl"))
+
+instance ToJSON AssociationSession where
+        toJSON AssociationSession{..}
+          = object
+              (catMaybes
+                 [("status" .=) <$> _asStatus,
+                  Just ("kind" .= _asKind),
+                  ("websiteLocale" .=) <$> _asWebsiteLocale,
+                  ("userLocale" .=) <$> _asUserLocale,
+                  ("accountId" .=) <$> _asAccountId,
+                  ("productCodes" .=) <$> _asProductCodes,
+                  ("id" .=) <$> _asId,
+                  ("websiteUrl" .=) <$> _asWebsiteURL,
+                  ("redirectUrl" .=) <$> _asRedirectURL])
+
+--
+-- /See:/ 'accounts' smart constructor.
+data Accounts = Accounts
+    { _aEtag  :: !(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'
+--
+-- * 'aKind'
+--
+-- * 'aItems'
+accounts
+    :: Accounts
+accounts =
+    Accounts
+    { _aEtag = Nothing
+    , _aKind = "adsensehost#accounts"
+    , _aItems = Nothing
+    }
+
+-- | ETag of this response for caching purposes.
+aEtag :: Lens' Accounts (Maybe Text)
+aEtag = lens _aEtag (\ s a -> s{_aEtag = a})
+
+-- | Kind of list this is, in this case adsensehost#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 .:? "kind" .!= "adsensehost#accounts")
+                     <*> (o .:? "items" .!= mempty))
+
+instance ToJSON Accounts where
+        toJSON Accounts{..}
+          = object
+              (catMaybes
+                 [("etag" .=) <$> _aEtag, Just ("kind" .= _aKind),
+                  ("items" .=) <$> _aItems])
+
+--
+-- /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 = "adsensehost#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 adsensehost#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" .!= "adsensehost#adUnits")
+                     <*> (o .:? "items" .!= mempty))
+
+instance ToJSON AdUnits where
+        toJSON AdUnits{..}
+          = object
+              (catMaybes
+                 [("etag" .=) <$> _auEtag,
+                  ("nextPageToken" .=) <$> _auNextPageToken,
+                  Just ("kind" .= _auKind), ("items" .=) <$> _auItems])
+
+--
+-- /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 = "adsensehost#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 adsensehost#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" .!= "adsensehost#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 = "adsensehost#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 adsensehost#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" .!= "adsensehost#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
+    , _auuCustomStyle              :: !(Maybe AdStyle)
+    , _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'
+--
+-- * 'auuCustomStyle'
+--
+-- * 'auuName'
+--
+-- * 'auuContentAdsSettings'
+--
+-- * 'auuCode'
+--
+-- * 'auuId'
+adUnit
+    :: AdUnit
+adUnit =
+    AdUnit
+    { _auuStatus = Nothing
+    , _auuMobileContentAdsSettings = Nothing
+    , _auuKind = "adsensehost#adUnit"
+    , _auuCustomStyle = 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 adsensehost#adUnit.
+auuKind :: Lens' AdUnit Text
+auuKind = lens _auuKind (\ s a -> s{_auuKind = a})
+
+-- | Custom style information specific to this ad unit.
+auuCustomStyle :: Lens' AdUnit (Maybe AdStyle)
+auuCustomStyle
+  = lens _auuCustomStyle
+      (\ s a -> s{_auuCustomStyle = 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" .!= "adsensehost#adUnit")
+                     <*> (o .:? "customStyle")
+                     <*> (o .:? "name")
+                     <*> (o .:? "contentAdsSettings")
+                     <*> (o .:? "code")
+                     <*> (o .:? "id"))
+
+instance ToJSON AdUnit where
+        toJSON AdUnit{..}
+          = object
+              (catMaybes
+                 [("status" .=) <$> _auuStatus,
+                  ("mobileContentAdsSettings" .=) <$>
+                    _auuMobileContentAdsSettings,
+                  Just ("kind" .= _auuKind),
+                  ("customStyle" .=) <$> _auuCustomStyle,
+                  ("name" .=) <$> _auuName,
+                  ("contentAdsSettings" .=) <$> _auuContentAdsSettings,
+                  ("code" .=) <$> _auuCode, ("id" .=) <$> _auuId])
+
+--
+-- /See:/ 'report' smart constructor.
+data Report = Report
+    { _rKind             :: !Text
+    , _rAverages         :: !(Maybe [Text])
+    , _rWarnings         :: !(Maybe [Text])
+    , _rRows             :: !(Maybe [[Text]])
+    , _rTotals           :: !(Maybe [Text])
+    , _rHeaders          :: !(Maybe [ReportHeadersItem])
+    , _rTotalMatchedRows :: !(Maybe (Textual Int64))
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'Report' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'rKind'
+--
+-- * 'rAverages'
+--
+-- * 'rWarnings'
+--
+-- * 'rRows'
+--
+-- * 'rTotals'
+--
+-- * 'rHeaders'
+--
+-- * 'rTotalMatchedRows'
+report
+    :: Report
+report =
+    Report
+    { _rKind = "adsensehost#report"
+    , _rAverages = Nothing
+    , _rWarnings = Nothing
+    , _rRows = Nothing
+    , _rTotals = Nothing
+    , _rHeaders = Nothing
+    , _rTotalMatchedRows = Nothing
+    }
+
+-- | Kind this is, in this case adsensehost#report.
+rKind :: Lens' Report Text
+rKind = lens _rKind (\ s a -> s{_rKind = 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.
+rAverages :: Lens' Report [Text]
+rAverages
+  = lens _rAverages (\ s a -> s{_rAverages = a}) .
+      _Default
+      . _Coerce
+
+-- | Any warnings associated with generation of the report.
+rWarnings :: Lens' Report [Text]
+rWarnings
+  = lens _rWarnings (\ s a -> s{_rWarnings = 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.
+rRows :: Lens' Report [[Text]]
+rRows
+  = lens _rRows (\ s a -> s{_rRows = 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.
+rTotals :: Lens' Report [Text]
+rTotals
+  = lens _rTotals (\ s a -> s{_rTotals = a}) . _Default
+      . _Coerce
+
+-- | 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.
+rHeaders :: Lens' Report [ReportHeadersItem]
+rHeaders
+  = lens _rHeaders (\ s a -> s{_rHeaders = 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.
+rTotalMatchedRows :: Lens' Report (Maybe Int64)
+rTotalMatchedRows
+  = lens _rTotalMatchedRows
+      (\ s a -> s{_rTotalMatchedRows = a})
+      . mapping _Coerce
+
+instance FromJSON Report where
+        parseJSON
+          = withObject "Report"
+              (\ o ->
+                 Report <$>
+                   (o .:? "kind" .!= "adsensehost#report") <*>
+                     (o .:? "averages" .!= mempty)
+                     <*> (o .:? "warnings" .!= mempty)
+                     <*> (o .:? "rows" .!= mempty)
+                     <*> (o .:? "totals" .!= mempty)
+                     <*> (o .:? "headers" .!= mempty)
+                     <*> (o .:? "totalMatchedRows"))
+
+instance ToJSON Report where
+        toJSON Report{..}
+          = object
+              (catMaybes
+                 [Just ("kind" .= _rKind),
+                  ("averages" .=) <$> _rAverages,
+                  ("warnings" .=) <$> _rWarnings,
+                  ("rows" .=) <$> _rRows, ("totals" .=) <$> _rTotals,
+                  ("headers" .=) <$> _rHeaders,
+                  ("totalMatchedRows" .=) <$> _rTotalMatchedRows])
+
+-- | 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. Possible values are: ACCOUNT_DEFAULT_SIZE,
+-- ADSENSE_DEFAULT_SIZE, SMALL, MEDIUM and LARGE.
+asfSize :: Lens' AdStyleFont (Maybe Text)
+asfSize = lens _asfSize (\ s a -> s{_asfSize = a})
+
+-- | The family of the font. Possible values are: ACCOUNT_DEFAULT_FAMILY,
+-- ADSENSE_DEFAULT_FAMILY, ARIAL, TIMES and VERDANA.
+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
+    { _accStatus :: !(Maybe Text)
+    , _accKind   :: !Text
+    , _accName   :: !(Maybe Text)
+    , _accId     :: !(Maybe Text)
+    } 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:
+--
+-- * 'accStatus'
+--
+-- * 'accKind'
+--
+-- * 'accName'
+--
+-- * 'accId'
+account
+    :: Account
+account =
+    Account
+    { _accStatus = Nothing
+    , _accKind = "adsensehost#account"
+    , _accName = Nothing
+    , _accId = Nothing
+    }
+
+-- | Approval status of this account. One of: PENDING, APPROVED, DISABLED.
+accStatus :: Lens' Account (Maybe Text)
+accStatus
+  = lens _accStatus (\ s a -> s{_accStatus = a})
+
+-- | Kind of resource this is, in this case adsensehost#account.
+accKind :: Lens' Account Text
+accKind = lens _accKind (\ s a -> s{_accKind = 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})
+
+instance FromJSON Account where
+        parseJSON
+          = withObject "Account"
+              (\ o ->
+                 Account <$>
+                   (o .:? "status") <*>
+                     (o .:? "kind" .!= "adsensehost#account")
+                     <*> (o .:? "name")
+                     <*> (o .:? "id"))
+
+instance ToJSON Account where
+        toJSON Account{..}
+          = object
+              (catMaybes
+                 [("status" .=) <$> _accStatus,
+                  Just ("kind" .= _accKind), ("name" .=) <$> _accName,
+                  ("id" .=) <$> _accId])
+
+-- | 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])
+
+-- | The colors 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. These are represented as six
+-- hexadecimal characters, similar to HTML color codes, but without the
+-- leading hash.
+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)
+    } 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'
+adClient
+    :: AdClient
+adClient =
+    AdClient
+    { _adKind = "adsensehost#adClient"
+    , _adArcOptIn = Nothing
+    , _adSupportsReporting = Nothing
+    , _adId = Nothing
+    , _adProductCode = Nothing
+    }
+
+-- | Kind of resource this is, in this case adsensehost#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})
+
+instance FromJSON AdClient where
+        parseJSON
+          = withObject "AdClient"
+              (\ o ->
+                 AdClient <$>
+                   (o .:? "kind" .!= "adsensehost#adClient") <*>
+                     (o .:? "arcOptIn")
+                     <*> (o .:? "supportsReporting")
+                     <*> (o .:? "id")
+                     <*> (o .:? "productCode"))
+
+instance ToJSON AdClient where
+        toJSON AdClient{..}
+          = object
+              (catMaybes
+                 [Just ("kind" .= _adKind),
+                  ("arcOptIn" .=) <$> _adArcOptIn,
+                  ("supportsReporting" .=) <$> _adSupportsReporting,
+                  ("id" .=) <$> _adId,
+                  ("productCode" .=) <$> _adProductCode])
+
+--
+-- /See:/ 'reportHeadersItem' smart constructor.
+data ReportHeadersItem = ReportHeadersItem
+    { _rhiName     :: !(Maybe Text)
+    , _rhiCurrency :: !(Maybe Text)
+    , _rhiType     :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ReportHeadersItem' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'rhiName'
+--
+-- * 'rhiCurrency'
+--
+-- * 'rhiType'
+reportHeadersItem
+    :: ReportHeadersItem
+reportHeadersItem =
+    ReportHeadersItem
+    { _rhiName = Nothing
+    , _rhiCurrency = Nothing
+    , _rhiType = Nothing
+    }
+
+-- | The name of the header.
+rhiName :: Lens' ReportHeadersItem (Maybe Text)
+rhiName = lens _rhiName (\ s a -> s{_rhiName = a})
+
+-- | The currency of this column. Only present if the header type is
+-- METRIC_CURRENCY.
+rhiCurrency :: Lens' ReportHeadersItem (Maybe Text)
+rhiCurrency
+  = lens _rhiCurrency (\ s a -> s{_rhiCurrency = a})
+
+-- | The type of the header; one of DIMENSION, METRIC_TALLY, METRIC_RATIO, or
+-- METRIC_CURRENCY.
+rhiType :: Lens' ReportHeadersItem (Maybe Text)
+rhiType = lens _rhiType (\ s a -> s{_rhiType = a})
+
+instance FromJSON ReportHeadersItem where
+        parseJSON
+          = withObject "ReportHeadersItem"
+              (\ o ->
+                 ReportHeadersItem <$>
+                   (o .:? "name") <*> (o .:? "currency") <*>
+                     (o .:? "type"))
+
+instance ToJSON ReportHeadersItem where
+        toJSON ReportHeadersItem{..}
+          = object
+              (catMaybes
+                 [("name" .=) <$> _rhiName,
+                  ("currency" .=) <$> _rhiCurrency,
+                  ("type" .=) <$> _rhiType])
+
+--
+-- /See:/ 'adStyle' smart constructor.
+data AdStyle = AdStyle
+    { _assCorners :: !(Maybe Text)
+    , _assKind    :: !Text
+    , _assFont    :: !(Maybe AdStyleFont)
+    , _assColors  :: !(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:
+--
+-- * 'assCorners'
+--
+-- * 'assKind'
+--
+-- * 'assFont'
+--
+-- * 'assColors'
+adStyle
+    :: AdStyle
+adStyle =
+    AdStyle
+    { _assCorners = Nothing
+    , _assKind = "adsensehost#adStyle"
+    , _assFont = Nothing
+    , _assColors = Nothing
+    }
+
+-- | The style of the corners in the ad. Possible values are SQUARE,
+-- SLIGHTLY_ROUNDED and VERY_ROUNDED.
+assCorners :: Lens' AdStyle (Maybe Text)
+assCorners
+  = lens _assCorners (\ s a -> s{_assCorners = a})
+
+-- | Kind this is, in this case adsensehost#adStyle.
+assKind :: Lens' AdStyle Text
+assKind = lens _assKind (\ s a -> s{_assKind = a})
+
+-- | The font which is included in the style.
+assFont :: Lens' AdStyle (Maybe AdStyleFont)
+assFont = lens _assFont (\ s a -> s{_assFont = a})
+
+-- | The colors included in the style. These are represented as six
+-- hexadecimal characters, similar to HTML color codes, but without the
+-- leading hash.
+assColors :: Lens' AdStyle (Maybe AdStyleColors)
+assColors
+  = lens _assColors (\ s a -> s{_assColors = a})
+
+instance FromJSON AdStyle where
+        parseJSON
+          = withObject "AdStyle"
+              (\ o ->
+                 AdStyle <$>
+                   (o .:? "corners") <*>
+                     (o .:? "kind" .!= "adsensehost#adStyle")
+                     <*> (o .:? "font")
+                     <*> (o .:? "colors"))
+
+instance ToJSON AdStyle where
+        toJSON AdStyle{..}
+          = object
+              (catMaybes
+                 [("corners" .=) <$> _assCorners,
+                  Just ("kind" .= _assKind), ("font" .=) <$> _assFont,
+                  ("colors" .=) <$> _assColors])
+
+--
+-- /See:/ 'customChannel' smart constructor.
+data CustomChannel = CustomChannel
+    { _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:
+--
+-- * 'cKind'
+--
+-- * 'cName'
+--
+-- * 'cCode'
+--
+-- * 'cId'
+customChannel
+    :: CustomChannel
+customChannel =
+    CustomChannel
+    { _cKind = "adsensehost#customChannel"
+    , _cName = Nothing
+    , _cCode = Nothing
+    , _cId = Nothing
+    }
+
+-- | Kind of resource this is, in this case adsensehost#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 .:? "kind" .!= "adsensehost#customChannel") <*>
+                     (o .:? "name")
+                     <*> (o .:? "code")
+                     <*> (o .:? "id"))
+
+instance ToJSON CustomChannel where
+        toJSON CustomChannel{..}
+          = object
+              (catMaybes
+                 [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 = "adsensehost#urlChannel"
+    , _urlcId = Nothing
+    , _urlcURLPattern = Nothing
+    }
+
+-- | Kind of resource this is, in this case adsensehost#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" .!= "adsensehost#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
+    { _aaKind   :: !Text
+    , _aaAdCode :: !(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:
+--
+-- * 'aaKind'
+--
+-- * 'aaAdCode'
+adCode
+    :: AdCode
+adCode =
+    AdCode
+    { _aaKind = "adsensehost#adCode"
+    , _aaAdCode = Nothing
+    }
+
+-- | Kind this is, in this case adsensehost#adCode.
+aaKind :: Lens' AdCode Text
+aaKind = lens _aaKind (\ s a -> s{_aaKind = a})
+
+-- | The ad code snippet.
+aaAdCode :: Lens' AdCode (Maybe Text)
+aaAdCode = lens _aaAdCode (\ s a -> s{_aaAdCode = a})
+
+instance FromJSON AdCode where
+        parseJSON
+          = withObject "AdCode"
+              (\ o ->
+                 AdCode <$>
+                   (o .:? "kind" .!= "adsensehost#adCode") <*>
+                     (o .:? "adCode"))
+
+instance ToJSON AdCode where
+        toJSON AdCode{..}
+          = object
+              (catMaybes
+                 [Just ("kind" .= _aaKind),
+                  ("adCode" .=) <$> _aaAdCode])
+
+-- | 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. Size values are in the form SIZE_{width}_{height}.
+aucasSize :: Lens' AdUnitContentAdsSettings (Maybe Text)
+aucasSize
+  = lens _aucasSize (\ s a -> s{_aucasSize = a})
+
+-- | Type of this ad unit. Possible values are TEXT, TEXT_IMAGE, IMAGE and
+-- LINK.
+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])
diff --git a/gen/Network/Google/AdSenseHost/Types/Sum.hs b/gen/Network/Google/AdSenseHost/Types/Sum.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/AdSenseHost/Types/Sum.hs
@@ -0,0 +1,63 @@
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE LambdaCase         #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- |
+-- Module      : Network.Google.AdSenseHost.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.AdSenseHost.Types.Sum where
+
+import           Network.Google.Prelude
+
+-- | Products to associate with the user.
+data AssociationSessionsStartProductCode
+    = Afc
+      -- ^ @AFC@
+      -- AdSense For Content
+    | Afg
+      -- ^ @AFG@
+      -- AdSense For Games
+    | Afmc
+      -- ^ @AFMC@
+      -- AdSense For Mobile Content
+    | Afs
+      -- ^ @AFS@
+      -- AdSense For Search
+    | Afv
+      -- ^ @AFV@
+      -- AdSense For Video
+      deriving (Eq,Ord,Enum,Read,Show,Data,Typeable,Generic)
+
+instance Hashable AssociationSessionsStartProductCode
+
+instance FromText AssociationSessionsStartProductCode where
+    fromText = \case
+        "AFC" -> Just Afc
+        "AFG" -> Just Afg
+        "AFMC" -> Just Afmc
+        "AFS" -> Just Afs
+        "AFV" -> Just Afv
+        _ -> Nothing
+
+instance ToText AssociationSessionsStartProductCode where
+    toText = \case
+        Afc -> "AFC"
+        Afg -> "AFG"
+        Afmc -> "AFMC"
+        Afs -> "AFS"
+        Afv -> "AFV"
+
+instance FromJSON AssociationSessionsStartProductCode where
+    parseJSON = parseJSONText "AssociationSessionsStartProductCode"
+
+instance ToJSON AssociationSessionsStartProductCode where
+    toJSON = toJSONText
diff --git a/gen/Network/Google/Resource/AdSenseHost/Accounts/AdClients/Get.hs b/gen/Network/Google/Resource/AdSenseHost/Accounts/AdClients/Get.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/AdSenseHost/Accounts/AdClients/Get.hs
@@ -0,0 +1,101 @@
+{-# LANGUAGE DataKinds          #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE FlexibleInstances  #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+{-# LANGUAGE TypeOperators      #-}
+
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
+
+-- |
+-- Module      : Network.Google.Resource.AdSenseHost.Accounts.AdClients.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 one of the ad clients in the specified
+-- publisher\'s AdSense account.
+--
+-- /See:/ <https://developers.google.com/adsense/host/ AdSense Host API Reference> for @adsensehost.accounts.adclients.get@.
+module Network.Google.Resource.AdSenseHost.Accounts.AdClients.Get
+    (
+    -- * REST Resource
+      AccountsAdClientsGetResource
+
+    -- * Creating a Request
+    , accountsAdClientsGet
+    , AccountsAdClientsGet
+
+    -- * Request Lenses
+    , aacgAdClientId
+    , aacgAccountId
+    ) where
+
+import           Network.Google.AdSenseHost.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @adsensehost.accounts.adclients.get@ method which the
+-- 'AccountsAdClientsGet' request conforms to.
+type AccountsAdClientsGetResource =
+     "adsensehost" :>
+       "v4.1" :>
+         "accounts" :>
+           Capture "accountId" Text :>
+             "adclients" :>
+               Capture "adClientId" Text :>
+                 QueryParam "alt" AltJSON :> Get '[JSON] AdClient
+
+-- | Get information about one of the ad clients in the specified
+-- publisher\'s AdSense account.
+--
+-- /See:/ 'accountsAdClientsGet' smart constructor.
+data AccountsAdClientsGet = AccountsAdClientsGet
+    { _aacgAdClientId :: !Text
+    , _aacgAccountId  :: !Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'AccountsAdClientsGet' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'aacgAdClientId'
+--
+-- * 'aacgAccountId'
+accountsAdClientsGet
+    :: Text -- ^ 'aacgAdClientId'
+    -> Text -- ^ 'aacgAccountId'
+    -> AccountsAdClientsGet
+accountsAdClientsGet pAacgAdClientId_ pAacgAccountId_ =
+    AccountsAdClientsGet
+    { _aacgAdClientId = pAacgAdClientId_
+    , _aacgAccountId = pAacgAccountId_
+    }
+
+-- | Ad client to get.
+aacgAdClientId :: Lens' AccountsAdClientsGet Text
+aacgAdClientId
+  = lens _aacgAdClientId
+      (\ s a -> s{_aacgAdClientId = a})
+
+-- | Account which contains the ad client.
+aacgAccountId :: Lens' AccountsAdClientsGet Text
+aacgAccountId
+  = lens _aacgAccountId
+      (\ s a -> s{_aacgAccountId = a})
+
+instance GoogleRequest AccountsAdClientsGet where
+        type Rs AccountsAdClientsGet = AdClient
+        requestClient AccountsAdClientsGet{..}
+          = go _aacgAccountId _aacgAdClientId (Just AltJSON)
+              adSenseHostService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy AccountsAdClientsGetResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/AdSenseHost/Accounts/AdClients/List.hs b/gen/Network/Google/Resource/AdSenseHost/Accounts/AdClients/List.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/AdSenseHost/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.AdSenseHost.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 hosted ad clients in the specified hosted account.
+--
+-- /See:/ <https://developers.google.com/adsense/host/ AdSense Host API Reference> for @adsensehost.accounts.adclients.list@.
+module Network.Google.Resource.AdSenseHost.Accounts.AdClients.List
+    (
+    -- * REST Resource
+      AccountsAdClientsListResource
+
+    -- * Creating a Request
+    , accountsAdClientsList
+    , AccountsAdClientsList
+
+    -- * Request Lenses
+    , aaclAccountId
+    , aaclPageToken
+    , aaclMaxResults
+    ) where
+
+import           Network.Google.AdSenseHost.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @adsensehost.accounts.adclients.list@ method which the
+-- 'AccountsAdClientsList' request conforms to.
+type AccountsAdClientsListResource =
+     "adsensehost" :>
+       "v4.1" :>
+         "accounts" :>
+           Capture "accountId" Text :>
+             "adclients" :>
+               QueryParam "pageToken" Text :>
+                 QueryParam "maxResults" (Textual Word32) :>
+                   QueryParam "alt" AltJSON :> Get '[JSON] AdClients
+
+-- | List all hosted ad clients in the specified hosted account.
+--
+-- /See:/ 'accountsAdClientsList' smart constructor.
+data AccountsAdClientsList = AccountsAdClientsList
+    { _aaclAccountId  :: !Text
+    , _aaclPageToken  :: !(Maybe Text)
+    , _aaclMaxResults :: !(Maybe (Textual Word32))
+    } 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 Word32)
+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)
+              adSenseHostService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy AccountsAdClientsListResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/AdSenseHost/Accounts/AdUnits/Delete.hs b/gen/Network/Google/Resource/AdSenseHost/Accounts/AdUnits/Delete.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/AdSenseHost/Accounts/AdUnits/Delete.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.AdSenseHost.Accounts.AdUnits.Delete
+-- Copyright   : (c) 2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Delete the specified ad unit from the specified publisher AdSense
+-- account.
+--
+-- /See:/ <https://developers.google.com/adsense/host/ AdSense Host API Reference> for @adsensehost.accounts.adunits.delete@.
+module Network.Google.Resource.AdSenseHost.Accounts.AdUnits.Delete
+    (
+    -- * REST Resource
+      AccountsAdUnitsDeleteResource
+
+    -- * Creating a Request
+    , accountsAdUnitsDelete
+    , AccountsAdUnitsDelete
+
+    -- * Request Lenses
+    , aaudAdUnitId
+    , aaudAdClientId
+    , aaudAccountId
+    ) where
+
+import           Network.Google.AdSenseHost.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @adsensehost.accounts.adunits.delete@ method which the
+-- 'AccountsAdUnitsDelete' request conforms to.
+type AccountsAdUnitsDeleteResource =
+     "adsensehost" :>
+       "v4.1" :>
+         "accounts" :>
+           Capture "accountId" Text :>
+             "adclients" :>
+               Capture "adClientId" Text :>
+                 "adunits" :>
+                   Capture "adUnitId" Text :>
+                     QueryParam "alt" AltJSON :> Delete '[JSON] AdUnit
+
+-- | Delete the specified ad unit from the specified publisher AdSense
+-- account.
+--
+-- /See:/ 'accountsAdUnitsDelete' smart constructor.
+data AccountsAdUnitsDelete = AccountsAdUnitsDelete
+    { _aaudAdUnitId   :: !Text
+    , _aaudAdClientId :: !Text
+    , _aaudAccountId  :: !Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'AccountsAdUnitsDelete' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'aaudAdUnitId'
+--
+-- * 'aaudAdClientId'
+--
+-- * 'aaudAccountId'
+accountsAdUnitsDelete
+    :: Text -- ^ 'aaudAdUnitId'
+    -> Text -- ^ 'aaudAdClientId'
+    -> Text -- ^ 'aaudAccountId'
+    -> AccountsAdUnitsDelete
+accountsAdUnitsDelete pAaudAdUnitId_ pAaudAdClientId_ pAaudAccountId_ =
+    AccountsAdUnitsDelete
+    { _aaudAdUnitId = pAaudAdUnitId_
+    , _aaudAdClientId = pAaudAdClientId_
+    , _aaudAccountId = pAaudAccountId_
+    }
+
+-- | Ad unit to delete.
+aaudAdUnitId :: Lens' AccountsAdUnitsDelete Text
+aaudAdUnitId
+  = lens _aaudAdUnitId (\ s a -> s{_aaudAdUnitId = a})
+
+-- | Ad client for which to get ad unit.
+aaudAdClientId :: Lens' AccountsAdUnitsDelete Text
+aaudAdClientId
+  = lens _aaudAdClientId
+      (\ s a -> s{_aaudAdClientId = a})
+
+-- | Account which contains the ad unit.
+aaudAccountId :: Lens' AccountsAdUnitsDelete Text
+aaudAccountId
+  = lens _aaudAccountId
+      (\ s a -> s{_aaudAccountId = a})
+
+instance GoogleRequest AccountsAdUnitsDelete where
+        type Rs AccountsAdUnitsDelete = AdUnit
+        requestClient AccountsAdUnitsDelete{..}
+          = go _aaudAccountId _aaudAdClientId _aaudAdUnitId
+              (Just AltJSON)
+              adSenseHostService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy AccountsAdUnitsDeleteResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/AdSenseHost/Accounts/AdUnits/Get.hs b/gen/Network/Google/Resource/AdSenseHost/Accounts/AdUnits/Get.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/AdSenseHost/Accounts/AdUnits/Get.hs
@@ -0,0 +1,113 @@
+{-# LANGUAGE DataKinds          #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE FlexibleInstances  #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+{-# LANGUAGE TypeOperators      #-}
+
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
+
+-- |
+-- Module      : Network.Google.Resource.AdSenseHost.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)
+--
+-- Get the specified host ad unit in this AdSense account.
+--
+-- /See:/ <https://developers.google.com/adsense/host/ AdSense Host API Reference> for @adsensehost.accounts.adunits.get@.
+module Network.Google.Resource.AdSenseHost.Accounts.AdUnits.Get
+    (
+    -- * REST Resource
+      AccountsAdUnitsGetResource
+
+    -- * Creating a Request
+    , accountsAdUnitsGet
+    , AccountsAdUnitsGet
+
+    -- * Request Lenses
+    , aaugAdUnitId
+    , aaugAdClientId
+    , aaugAccountId
+    ) where
+
+import           Network.Google.AdSenseHost.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @adsensehost.accounts.adunits.get@ method which the
+-- 'AccountsAdUnitsGet' request conforms to.
+type AccountsAdUnitsGetResource =
+     "adsensehost" :>
+       "v4.1" :>
+         "accounts" :>
+           Capture "accountId" Text :>
+             "adclients" :>
+               Capture "adClientId" Text :>
+                 "adunits" :>
+                   Capture "adUnitId" Text :>
+                     QueryParam "alt" AltJSON :> Get '[JSON] AdUnit
+
+-- | Get the specified host ad unit in this AdSense 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 get.
+aaugAdUnitId :: Lens' AccountsAdUnitsGet Text
+aaugAdUnitId
+  = lens _aaugAdUnitId (\ s a -> s{_aaugAdUnitId = a})
+
+-- | Ad client for which to get ad unit.
+aaugAdClientId :: Lens' AccountsAdUnitsGet Text
+aaugAdClientId
+  = lens _aaugAdClientId
+      (\ s a -> s{_aaugAdClientId = a})
+
+-- | Account which contains the ad unit.
+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)
+              adSenseHostService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy AccountsAdUnitsGetResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/AdSenseHost/Accounts/AdUnits/GetAdCode.hs b/gen/Network/Google/Resource/AdSenseHost/Accounts/AdUnits/GetAdCode.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/AdSenseHost/Accounts/AdUnits/GetAdCode.hs
@@ -0,0 +1,133 @@
+{-# LANGUAGE DataKinds          #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE FlexibleInstances  #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+{-# LANGUAGE TypeOperators      #-}
+
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
+
+-- |
+-- Module      : Network.Google.Resource.AdSenseHost.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, attaching the specified host
+-- custom channels.
+--
+-- /See:/ <https://developers.google.com/adsense/host/ AdSense Host API Reference> for @adsensehost.accounts.adunits.getAdCode@.
+module Network.Google.Resource.AdSenseHost.Accounts.AdUnits.GetAdCode
+    (
+    -- * REST Resource
+      AccountsAdUnitsGetAdCodeResource
+
+    -- * Creating a Request
+    , accountsAdUnitsGetAdCode
+    , AccountsAdUnitsGetAdCode
+
+    -- * Request Lenses
+    , aaugacAdUnitId
+    , aaugacAdClientId
+    , aaugacAccountId
+    , aaugacHostCustomChannelId
+    ) where
+
+import           Network.Google.AdSenseHost.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @adsensehost.accounts.adunits.getAdCode@ method which the
+-- 'AccountsAdUnitsGetAdCode' request conforms to.
+type AccountsAdUnitsGetAdCodeResource =
+     "adsensehost" :>
+       "v4.1" :>
+         "accounts" :>
+           Capture "accountId" Text :>
+             "adclients" :>
+               Capture "adClientId" Text :>
+                 "adunits" :>
+                   Capture "adUnitId" Text :>
+                     "adcode" :>
+                       QueryParams "hostCustomChannelId" Text :>
+                         QueryParam "alt" AltJSON :> Get '[JSON] AdCode
+
+-- | Get ad code for the specified ad unit, attaching the specified host
+-- custom channels.
+--
+-- /See:/ 'accountsAdUnitsGetAdCode' smart constructor.
+data AccountsAdUnitsGetAdCode = AccountsAdUnitsGetAdCode
+    { _aaugacAdUnitId            :: !Text
+    , _aaugacAdClientId          :: !Text
+    , _aaugacAccountId           :: !Text
+    , _aaugacHostCustomChannelId :: !(Maybe [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'
+--
+-- * 'aaugacHostCustomChannelId'
+accountsAdUnitsGetAdCode
+    :: Text -- ^ 'aaugacAdUnitId'
+    -> Text -- ^ 'aaugacAdClientId'
+    -> Text -- ^ 'aaugacAccountId'
+    -> AccountsAdUnitsGetAdCode
+accountsAdUnitsGetAdCode pAaugacAdUnitId_ pAaugacAdClientId_ pAaugacAccountId_ =
+    AccountsAdUnitsGetAdCode
+    { _aaugacAdUnitId = pAaugacAdUnitId_
+    , _aaugacAdClientId = pAaugacAdClientId_
+    , _aaugacAccountId = pAaugacAccountId_
+    , _aaugacHostCustomChannelId = Nothing
+    }
+
+-- | 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})
+
+-- | Host custom channel to attach to the ad code.
+aaugacHostCustomChannelId :: Lens' AccountsAdUnitsGetAdCode [Text]
+aaugacHostCustomChannelId
+  = lens _aaugacHostCustomChannelId
+      (\ s a -> s{_aaugacHostCustomChannelId = a})
+      . _Default
+      . _Coerce
+
+instance GoogleRequest AccountsAdUnitsGetAdCode where
+        type Rs AccountsAdUnitsGetAdCode = AdCode
+        requestClient AccountsAdUnitsGetAdCode{..}
+          = go _aaugacAccountId _aaugacAdClientId
+              _aaugacAdUnitId
+              (_aaugacHostCustomChannelId ^. _Default)
+              (Just AltJSON)
+              adSenseHostService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy AccountsAdUnitsGetAdCodeResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/AdSenseHost/Accounts/AdUnits/Insert.hs b/gen/Network/Google/Resource/AdSenseHost/Accounts/AdUnits/Insert.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/AdSenseHost/Accounts/AdUnits/Insert.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.AdSenseHost.Accounts.AdUnits.Insert
+-- Copyright   : (c) 2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Insert the supplied ad unit into the specified publisher AdSense
+-- account.
+--
+-- /See:/ <https://developers.google.com/adsense/host/ AdSense Host API Reference> for @adsensehost.accounts.adunits.insert@.
+module Network.Google.Resource.AdSenseHost.Accounts.AdUnits.Insert
+    (
+    -- * REST Resource
+      AccountsAdUnitsInsertResource
+
+    -- * Creating a Request
+    , accountsAdUnitsInsert
+    , AccountsAdUnitsInsert
+
+    -- * Request Lenses
+    , aauiPayload
+    , aauiAdClientId
+    , aauiAccountId
+    ) where
+
+import           Network.Google.AdSenseHost.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @adsensehost.accounts.adunits.insert@ method which the
+-- 'AccountsAdUnitsInsert' request conforms to.
+type AccountsAdUnitsInsertResource =
+     "adsensehost" :>
+       "v4.1" :>
+         "accounts" :>
+           Capture "accountId" Text :>
+             "adclients" :>
+               Capture "adClientId" Text :>
+                 "adunits" :>
+                   QueryParam "alt" AltJSON :>
+                     ReqBody '[JSON] AdUnit :> Post '[JSON] AdUnit
+
+-- | Insert the supplied ad unit into the specified publisher AdSense
+-- account.
+--
+-- /See:/ 'accountsAdUnitsInsert' smart constructor.
+data AccountsAdUnitsInsert = AccountsAdUnitsInsert
+    { _aauiPayload    :: !AdUnit
+    , _aauiAdClientId :: !Text
+    , _aauiAccountId  :: !Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'AccountsAdUnitsInsert' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'aauiPayload'
+--
+-- * 'aauiAdClientId'
+--
+-- * 'aauiAccountId'
+accountsAdUnitsInsert
+    :: AdUnit -- ^ 'aauiPayload'
+    -> Text -- ^ 'aauiAdClientId'
+    -> Text -- ^ 'aauiAccountId'
+    -> AccountsAdUnitsInsert
+accountsAdUnitsInsert pAauiPayload_ pAauiAdClientId_ pAauiAccountId_ =
+    AccountsAdUnitsInsert
+    { _aauiPayload = pAauiPayload_
+    , _aauiAdClientId = pAauiAdClientId_
+    , _aauiAccountId = pAauiAccountId_
+    }
+
+-- | Multipart request metadata.
+aauiPayload :: Lens' AccountsAdUnitsInsert AdUnit
+aauiPayload
+  = lens _aauiPayload (\ s a -> s{_aauiPayload = a})
+
+-- | Ad client into which to insert the ad unit.
+aauiAdClientId :: Lens' AccountsAdUnitsInsert Text
+aauiAdClientId
+  = lens _aauiAdClientId
+      (\ s a -> s{_aauiAdClientId = a})
+
+-- | Account which will contain the ad unit.
+aauiAccountId :: Lens' AccountsAdUnitsInsert Text
+aauiAccountId
+  = lens _aauiAccountId
+      (\ s a -> s{_aauiAccountId = a})
+
+instance GoogleRequest AccountsAdUnitsInsert where
+        type Rs AccountsAdUnitsInsert = AdUnit
+        requestClient AccountsAdUnitsInsert{..}
+          = go _aauiAccountId _aauiAdClientId (Just AltJSON)
+              _aauiPayload
+              adSenseHostService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy AccountsAdUnitsInsertResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/AdSenseHost/Accounts/AdUnits/List.hs b/gen/Network/Google/Resource/AdSenseHost/Accounts/AdUnits/List.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/AdSenseHost/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.AdSenseHost.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 publisher\'s AdSense account.
+--
+-- /See:/ <https://developers.google.com/adsense/host/ AdSense Host API Reference> for @adsensehost.accounts.adunits.list@.
+module Network.Google.Resource.AdSenseHost.Accounts.AdUnits.List
+    (
+    -- * REST Resource
+      AccountsAdUnitsListResource
+
+    -- * Creating a Request
+    , accountsAdUnitsList
+    , AccountsAdUnitsList
+
+    -- * Request Lenses
+    , aaulIncludeInactive
+    , aaulAdClientId
+    , aaulAccountId
+    , aaulPageToken
+    , aaulMaxResults
+    ) where
+
+import           Network.Google.AdSenseHost.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @adsensehost.accounts.adunits.list@ method which the
+-- 'AccountsAdUnitsList' request conforms to.
+type AccountsAdUnitsListResource =
+     "adsensehost" :>
+       "v4.1" :>
+         "accounts" :>
+           Capture "accountId" Text :>
+             "adclients" :>
+               Capture "adClientId" Text :>
+                 "adunits" :>
+                   QueryParam "includeInactive" Bool :>
+                     QueryParam "pageToken" Text :>
+                       QueryParam "maxResults" (Textual Word32) :>
+                         QueryParam "alt" AltJSON :> Get '[JSON] AdUnits
+
+-- | List all ad units in the specified publisher\'s AdSense account.
+--
+-- /See:/ 'accountsAdUnitsList' smart constructor.
+data AccountsAdUnitsList = AccountsAdUnitsList
+    { _aaulIncludeInactive :: !(Maybe Bool)
+    , _aaulAdClientId      :: !Text
+    , _aaulAccountId       :: !Text
+    , _aaulPageToken       :: !(Maybe Text)
+    , _aaulMaxResults      :: !(Maybe (Textual Word32))
+    } 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 which contains the ad client.
+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 Word32)
+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)
+              adSenseHostService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy AccountsAdUnitsListResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/AdSenseHost/Accounts/AdUnits/Patch.hs b/gen/Network/Google/Resource/AdSenseHost/Accounts/AdUnits/Patch.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/AdSenseHost/Accounts/AdUnits/Patch.hs
@@ -0,0 +1,129 @@
+{-# LANGUAGE DataKinds          #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE FlexibleInstances  #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+{-# LANGUAGE TypeOperators      #-}
+
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
+
+-- |
+-- Module      : Network.Google.Resource.AdSenseHost.Accounts.AdUnits.Patch
+-- Copyright   : (c) 2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Update the supplied ad unit in the specified publisher AdSense account.
+-- This method supports patch semantics.
+--
+-- /See:/ <https://developers.google.com/adsense/host/ AdSense Host API Reference> for @adsensehost.accounts.adunits.patch@.
+module Network.Google.Resource.AdSenseHost.Accounts.AdUnits.Patch
+    (
+    -- * REST Resource
+      AccountsAdUnitsPatchResource
+
+    -- * Creating a Request
+    , accountsAdUnitsPatch
+    , AccountsAdUnitsPatch
+
+    -- * Request Lenses
+    , aaupAdUnitId
+    , aaupPayload
+    , aaupAdClientId
+    , aaupAccountId
+    ) where
+
+import           Network.Google.AdSenseHost.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @adsensehost.accounts.adunits.patch@ method which the
+-- 'AccountsAdUnitsPatch' request conforms to.
+type AccountsAdUnitsPatchResource =
+     "adsensehost" :>
+       "v4.1" :>
+         "accounts" :>
+           Capture "accountId" Text :>
+             "adclients" :>
+               Capture "adClientId" Text :>
+                 "adunits" :>
+                   QueryParam "adUnitId" Text :>
+                     QueryParam "alt" AltJSON :>
+                       ReqBody '[JSON] AdUnit :> Patch '[JSON] AdUnit
+
+-- | Update the supplied ad unit in the specified publisher AdSense account.
+-- This method supports patch semantics.
+--
+-- /See:/ 'accountsAdUnitsPatch' smart constructor.
+data AccountsAdUnitsPatch = AccountsAdUnitsPatch
+    { _aaupAdUnitId   :: !Text
+    , _aaupPayload    :: !AdUnit
+    , _aaupAdClientId :: !Text
+    , _aaupAccountId  :: !Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'AccountsAdUnitsPatch' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'aaupAdUnitId'
+--
+-- * 'aaupPayload'
+--
+-- * 'aaupAdClientId'
+--
+-- * 'aaupAccountId'
+accountsAdUnitsPatch
+    :: Text -- ^ 'aaupAdUnitId'
+    -> AdUnit -- ^ 'aaupPayload'
+    -> Text -- ^ 'aaupAdClientId'
+    -> Text -- ^ 'aaupAccountId'
+    -> AccountsAdUnitsPatch
+accountsAdUnitsPatch pAaupAdUnitId_ pAaupPayload_ pAaupAdClientId_ pAaupAccountId_ =
+    AccountsAdUnitsPatch
+    { _aaupAdUnitId = pAaupAdUnitId_
+    , _aaupPayload = pAaupPayload_
+    , _aaupAdClientId = pAaupAdClientId_
+    , _aaupAccountId = pAaupAccountId_
+    }
+
+-- | Ad unit to get.
+aaupAdUnitId :: Lens' AccountsAdUnitsPatch Text
+aaupAdUnitId
+  = lens _aaupAdUnitId (\ s a -> s{_aaupAdUnitId = a})
+
+-- | Multipart request metadata.
+aaupPayload :: Lens' AccountsAdUnitsPatch AdUnit
+aaupPayload
+  = lens _aaupPayload (\ s a -> s{_aaupPayload = a})
+
+-- | Ad client which contains the ad unit.
+aaupAdClientId :: Lens' AccountsAdUnitsPatch Text
+aaupAdClientId
+  = lens _aaupAdClientId
+      (\ s a -> s{_aaupAdClientId = a})
+
+-- | Account which contains the ad client.
+aaupAccountId :: Lens' AccountsAdUnitsPatch Text
+aaupAccountId
+  = lens _aaupAccountId
+      (\ s a -> s{_aaupAccountId = a})
+
+instance GoogleRequest AccountsAdUnitsPatch where
+        type Rs AccountsAdUnitsPatch = AdUnit
+        requestClient AccountsAdUnitsPatch{..}
+          = go _aaupAccountId _aaupAdClientId
+              (Just _aaupAdUnitId)
+              (Just AltJSON)
+              _aaupPayload
+              adSenseHostService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy AccountsAdUnitsPatchResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/AdSenseHost/Accounts/AdUnits/Update.hs b/gen/Network/Google/Resource/AdSenseHost/Accounts/AdUnits/Update.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/AdSenseHost/Accounts/AdUnits/Update.hs
@@ -0,0 +1,113 @@
+{-# LANGUAGE DataKinds          #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE FlexibleInstances  #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+{-# LANGUAGE TypeOperators      #-}
+
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
+
+-- |
+-- Module      : Network.Google.Resource.AdSenseHost.Accounts.AdUnits.Update
+-- Copyright   : (c) 2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Update the supplied ad unit in the specified publisher AdSense account.
+--
+-- /See:/ <https://developers.google.com/adsense/host/ AdSense Host API Reference> for @adsensehost.accounts.adunits.update@.
+module Network.Google.Resource.AdSenseHost.Accounts.AdUnits.Update
+    (
+    -- * REST Resource
+      AccountsAdUnitsUpdateResource
+
+    -- * Creating a Request
+    , accountsAdUnitsUpdate
+    , AccountsAdUnitsUpdate
+
+    -- * Request Lenses
+    , aauuPayload
+    , aauuAdClientId
+    , aauuAccountId
+    ) where
+
+import           Network.Google.AdSenseHost.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @adsensehost.accounts.adunits.update@ method which the
+-- 'AccountsAdUnitsUpdate' request conforms to.
+type AccountsAdUnitsUpdateResource =
+     "adsensehost" :>
+       "v4.1" :>
+         "accounts" :>
+           Capture "accountId" Text :>
+             "adclients" :>
+               Capture "adClientId" Text :>
+                 "adunits" :>
+                   QueryParam "alt" AltJSON :>
+                     ReqBody '[JSON] AdUnit :> Put '[JSON] AdUnit
+
+-- | Update the supplied ad unit in the specified publisher AdSense account.
+--
+-- /See:/ 'accountsAdUnitsUpdate' smart constructor.
+data AccountsAdUnitsUpdate = AccountsAdUnitsUpdate
+    { _aauuPayload    :: !AdUnit
+    , _aauuAdClientId :: !Text
+    , _aauuAccountId  :: !Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'AccountsAdUnitsUpdate' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'aauuPayload'
+--
+-- * 'aauuAdClientId'
+--
+-- * 'aauuAccountId'
+accountsAdUnitsUpdate
+    :: AdUnit -- ^ 'aauuPayload'
+    -> Text -- ^ 'aauuAdClientId'
+    -> Text -- ^ 'aauuAccountId'
+    -> AccountsAdUnitsUpdate
+accountsAdUnitsUpdate pAauuPayload_ pAauuAdClientId_ pAauuAccountId_ =
+    AccountsAdUnitsUpdate
+    { _aauuPayload = pAauuPayload_
+    , _aauuAdClientId = pAauuAdClientId_
+    , _aauuAccountId = pAauuAccountId_
+    }
+
+-- | Multipart request metadata.
+aauuPayload :: Lens' AccountsAdUnitsUpdate AdUnit
+aauuPayload
+  = lens _aauuPayload (\ s a -> s{_aauuPayload = a})
+
+-- | Ad client which contains the ad unit.
+aauuAdClientId :: Lens' AccountsAdUnitsUpdate Text
+aauuAdClientId
+  = lens _aauuAdClientId
+      (\ s a -> s{_aauuAdClientId = a})
+
+-- | Account which contains the ad client.
+aauuAccountId :: Lens' AccountsAdUnitsUpdate Text
+aauuAccountId
+  = lens _aauuAccountId
+      (\ s a -> s{_aauuAccountId = a})
+
+instance GoogleRequest AccountsAdUnitsUpdate where
+        type Rs AccountsAdUnitsUpdate = AdUnit
+        requestClient AccountsAdUnitsUpdate{..}
+          = go _aauuAccountId _aauuAdClientId (Just AltJSON)
+              _aauuPayload
+              adSenseHostService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy AccountsAdUnitsUpdateResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/AdSenseHost/Accounts/Get.hs b/gen/Network/Google/Resource/AdSenseHost/Accounts/Get.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/AdSenseHost/Accounts/Get.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.AdSenseHost.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 associated AdSense account.
+--
+-- /See:/ <https://developers.google.com/adsense/host/ AdSense Host API Reference> for @adsensehost.accounts.get@.
+module Network.Google.Resource.AdSenseHost.Accounts.Get
+    (
+    -- * REST Resource
+      AccountsGetResource
+
+    -- * Creating a Request
+    , accountsGet
+    , AccountsGet
+
+    -- * Request Lenses
+    , agAccountId
+    ) where
+
+import           Network.Google.AdSenseHost.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @adsensehost.accounts.get@ method which the
+-- 'AccountsGet' request conforms to.
+type AccountsGetResource =
+     "adsensehost" :>
+       "v4.1" :>
+         "accounts" :>
+           Capture "accountId" Text :>
+             QueryParam "alt" AltJSON :> Get '[JSON] Account
+
+-- | Get information about the selected associated AdSense account.
+--
+-- /See:/ 'accountsGet' smart constructor.
+newtype AccountsGet = AccountsGet
+    { _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:
+--
+-- * 'agAccountId'
+accountsGet
+    :: Text -- ^ 'agAccountId'
+    -> AccountsGet
+accountsGet pAgAccountId_ =
+    AccountsGet
+    { _agAccountId = pAgAccountId_
+    }
+
+-- | 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 (Just AltJSON) adSenseHostService
+          where go
+                  = buildClient (Proxy :: Proxy AccountsGetResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/AdSenseHost/Accounts/List.hs b/gen/Network/Google/Resource/AdSenseHost/Accounts/List.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/AdSenseHost/Accounts/List.hs
@@ -0,0 +1,87 @@
+{-# 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.AdSenseHost.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 hosted accounts associated with this AdSense account by ad client
+-- id.
+--
+-- /See:/ <https://developers.google.com/adsense/host/ AdSense Host API Reference> for @adsensehost.accounts.list@.
+module Network.Google.Resource.AdSenseHost.Accounts.List
+    (
+    -- * REST Resource
+      AccountsListResource
+
+    -- * Creating a Request
+    , accountsList
+    , AccountsList
+
+    -- * Request Lenses
+    , alFilterAdClientId
+    ) where
+
+import           Network.Google.AdSenseHost.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @adsensehost.accounts.list@ method which the
+-- 'AccountsList' request conforms to.
+type AccountsListResource =
+     "adsensehost" :>
+       "v4.1" :>
+         "accounts" :>
+           QueryParams "filterAdClientId" Text :>
+             QueryParam "alt" AltJSON :> Get '[JSON] Accounts
+
+-- | List hosted accounts associated with this AdSense account by ad client
+-- id.
+--
+-- /See:/ 'accountsList' smart constructor.
+newtype AccountsList = AccountsList
+    { _alFilterAdClientId :: [Text]
+    } 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:
+--
+-- * 'alFilterAdClientId'
+accountsList
+    :: [Text] -- ^ 'alFilterAdClientId'
+    -> AccountsList
+accountsList pAlFilterAdClientId_ =
+    AccountsList
+    { _alFilterAdClientId = _Coerce # pAlFilterAdClientId_
+    }
+
+-- | Ad clients to list accounts for.
+alFilterAdClientId :: Lens' AccountsList [Text]
+alFilterAdClientId
+  = lens _alFilterAdClientId
+      (\ s a -> s{_alFilterAdClientId = a})
+      . _Coerce
+
+instance GoogleRequest AccountsList where
+        type Rs AccountsList = Accounts
+        requestClient AccountsList{..}
+          = go _alFilterAdClientId (Just AltJSON)
+              adSenseHostService
+          where go
+                  = buildClient (Proxy :: Proxy AccountsListResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/AdSenseHost/Accounts/Reports/Generate.hs b/gen/Network/Google/Resource/AdSenseHost/Accounts/Reports/Generate.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/AdSenseHost/Accounts/Reports/Generate.hs
@@ -0,0 +1,214 @@
+{-# 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.AdSenseHost.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/host/ AdSense Host API Reference> for @adsensehost.accounts.reports.generate@.
+module Network.Google.Resource.AdSenseHost.Accounts.Reports.Generate
+    (
+    -- * REST Resource
+      AccountsReportsGenerateResource
+
+    -- * Creating a Request
+    , accountsReportsGenerate
+    , AccountsReportsGenerate
+
+    -- * Request Lenses
+    , argDimension
+    , argLocale
+    , argEndDate
+    , argStartDate
+    , argAccountId
+    , argMetric
+    , argSort
+    , argFilter
+    , argStartIndex
+    , argMaxResults
+    ) where
+
+import           Network.Google.AdSenseHost.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @adsensehost.accounts.reports.generate@ method which the
+-- 'AccountsReportsGenerate' request conforms to.
+type AccountsReportsGenerateResource =
+     "adsensehost" :>
+       "v4.1" :>
+         "accounts" :>
+           Capture "accountId" Text :>
+             "reports" :>
+               QueryParam "startDate" Text :>
+                 QueryParam "endDate" Text :>
+                   QueryParams "dimension" Text :>
+                     QueryParam "locale" Text :>
+                       QueryParams "metric" Text :>
+                         QueryParams "sort" Text :>
+                           QueryParams "filter" Text :>
+                             QueryParam "startIndex" (Textual Word32) :>
+                               QueryParam "maxResults" (Textual Word32) :>
+                                 QueryParam "alt" AltJSON :> Get '[JSON] Report
+
+-- | 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])
+    , _argSort       :: !(Maybe [Text])
+    , _argFilter     :: !(Maybe [Text])
+    , _argStartIndex :: !(Maybe (Textual Word32))
+    , _argMaxResults :: !(Maybe (Textual Word32))
+    } 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'
+--
+-- * 'argSort'
+--
+-- * 'argFilter'
+--
+-- * 'argStartIndex'
+--
+-- * '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
+    , _argSort = Nothing
+    , _argFilter = Nothing
+    , _argStartIndex = 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})
+
+-- | Hosted 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
+
+-- | 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 Word32)
+argStartIndex
+  = lens _argStartIndex
+      (\ s a -> s{_argStartIndex = a})
+      . mapping _Coerce
+
+-- | The maximum number of rows of report data to return.
+argMaxResults :: Lens' AccountsReportsGenerate (Maybe Word32)
+argMaxResults
+  = lens _argMaxResults
+      (\ s a -> s{_argMaxResults = a})
+      . mapping _Coerce
+
+instance GoogleRequest AccountsReportsGenerate where
+        type Rs AccountsReportsGenerate = Report
+        requestClient AccountsReportsGenerate{..}
+          = go _argAccountId (Just _argStartDate)
+              (Just _argEndDate)
+              (_argDimension ^. _Default)
+              _argLocale
+              (_argMetric ^. _Default)
+              (_argSort ^. _Default)
+              (_argFilter ^. _Default)
+              _argStartIndex
+              _argMaxResults
+              (Just AltJSON)
+              adSenseHostService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy AccountsReportsGenerateResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/AdSenseHost/AdClients/Get.hs b/gen/Network/Google/Resource/AdSenseHost/AdClients/Get.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/AdSenseHost/AdClients/Get.hs
@@ -0,0 +1,83 @@
+{-# 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.AdSenseHost.AdClients.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 one of the ad clients in the Host AdSense account.
+--
+-- /See:/ <https://developers.google.com/adsense/host/ AdSense Host API Reference> for @adsensehost.adclients.get@.
+module Network.Google.Resource.AdSenseHost.AdClients.Get
+    (
+    -- * REST Resource
+      AdClientsGetResource
+
+    -- * Creating a Request
+    , adClientsGet
+    , AdClientsGet
+
+    -- * Request Lenses
+    , acgAdClientId
+    ) where
+
+import           Network.Google.AdSenseHost.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @adsensehost.adclients.get@ method which the
+-- 'AdClientsGet' request conforms to.
+type AdClientsGetResource =
+     "adsensehost" :>
+       "v4.1" :>
+         "adclients" :>
+           Capture "adClientId" Text :>
+             QueryParam "alt" AltJSON :> Get '[JSON] AdClient
+
+-- | Get information about one of the ad clients in the Host AdSense account.
+--
+-- /See:/ 'adClientsGet' smart constructor.
+newtype AdClientsGet = AdClientsGet
+    { _acgAdClientId :: Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'AdClientsGet' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'acgAdClientId'
+adClientsGet
+    :: Text -- ^ 'acgAdClientId'
+    -> AdClientsGet
+adClientsGet pAcgAdClientId_ =
+    AdClientsGet
+    { _acgAdClientId = pAcgAdClientId_
+    }
+
+-- | Ad client to get.
+acgAdClientId :: Lens' AdClientsGet Text
+acgAdClientId
+  = lens _acgAdClientId
+      (\ s a -> s{_acgAdClientId = a})
+
+instance GoogleRequest AdClientsGet where
+        type Rs AdClientsGet = AdClient
+        requestClient AdClientsGet{..}
+          = go _acgAdClientId (Just AltJSON) adSenseHostService
+          where go
+                  = buildClient (Proxy :: Proxy AdClientsGetResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/AdSenseHost/AdClients/List.hs b/gen/Network/Google/Resource/AdSenseHost/AdClients/List.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/AdSenseHost/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.AdSenseHost.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 host ad clients in this AdSense account.
+--
+-- /See:/ <https://developers.google.com/adsense/host/ AdSense Host API Reference> for @adsensehost.adclients.list@.
+module Network.Google.Resource.AdSenseHost.AdClients.List
+    (
+    -- * REST Resource
+      AdClientsListResource
+
+    -- * Creating a Request
+    , adClientsList
+    , AdClientsList
+
+    -- * Request Lenses
+    , aclPageToken
+    , aclMaxResults
+    ) where
+
+import           Network.Google.AdSenseHost.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @adsensehost.adclients.list@ method which the
+-- 'AdClientsList' request conforms to.
+type AdClientsListResource =
+     "adsensehost" :>
+       "v4.1" :>
+         "adclients" :>
+           QueryParam "pageToken" Text :>
+             QueryParam "maxResults" (Textual Word32) :>
+               QueryParam "alt" AltJSON :> Get '[JSON] AdClients
+
+-- | List all host ad clients in this AdSense account.
+--
+-- /See:/ 'adClientsList' smart constructor.
+data AdClientsList = AdClientsList
+    { _aclPageToken  :: !(Maybe Text)
+    , _aclMaxResults :: !(Maybe (Textual Word32))
+    } 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 Word32)
+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)
+              adSenseHostService
+          where go
+                  = buildClient (Proxy :: Proxy AdClientsListResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/AdSenseHost/AssociationSessions/Start.hs b/gen/Network/Google/Resource/AdSenseHost/AssociationSessions/Start.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/AdSenseHost/AssociationSessions/Start.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.AdSenseHost.AssociationSessions.Start
+-- 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)
+--
+-- Create an association session for initiating an association with an
+-- AdSense user.
+--
+-- /See:/ <https://developers.google.com/adsense/host/ AdSense Host API Reference> for @adsensehost.associationsessions.start@.
+module Network.Google.Resource.AdSenseHost.AssociationSessions.Start
+    (
+    -- * REST Resource
+      AssociationSessionsStartResource
+
+    -- * Creating a Request
+    , associationSessionsStart
+    , AssociationSessionsStart
+
+    -- * Request Lenses
+    , assWebsiteLocale
+    , assUserLocale
+    , assWebsiteURL
+    , assProductCode
+    ) where
+
+import           Network.Google.AdSenseHost.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @adsensehost.associationsessions.start@ method which the
+-- 'AssociationSessionsStart' request conforms to.
+type AssociationSessionsStartResource =
+     "adsensehost" :>
+       "v4.1" :>
+         "associationsessions" :>
+           "start" :>
+             QueryParams "productCode"
+               AssociationSessionsStartProductCode
+               :>
+               QueryParam "websiteUrl" Text :>
+                 QueryParam "websiteLocale" Text :>
+                   QueryParam "userLocale" Text :>
+                     QueryParam "alt" AltJSON :>
+                       Get '[JSON] AssociationSession
+
+-- | Create an association session for initiating an association with an
+-- AdSense user.
+--
+-- /See:/ 'associationSessionsStart' smart constructor.
+data AssociationSessionsStart = AssociationSessionsStart
+    { _assWebsiteLocale :: !(Maybe Text)
+    , _assUserLocale    :: !(Maybe Text)
+    , _assWebsiteURL    :: !Text
+    , _assProductCode   :: ![AssociationSessionsStartProductCode]
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'AssociationSessionsStart' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'assWebsiteLocale'
+--
+-- * 'assUserLocale'
+--
+-- * 'assWebsiteURL'
+--
+-- * 'assProductCode'
+associationSessionsStart
+    :: Text -- ^ 'assWebsiteURL'
+    -> [AssociationSessionsStartProductCode] -- ^ 'assProductCode'
+    -> AssociationSessionsStart
+associationSessionsStart pAssWebsiteURL_ pAssProductCode_ =
+    AssociationSessionsStart
+    { _assWebsiteLocale = Nothing
+    , _assUserLocale = Nothing
+    , _assWebsiteURL = pAssWebsiteURL_
+    , _assProductCode = _Coerce # pAssProductCode_
+    }
+
+-- | The locale of the user\'s hosted website.
+assWebsiteLocale :: Lens' AssociationSessionsStart (Maybe Text)
+assWebsiteLocale
+  = lens _assWebsiteLocale
+      (\ s a -> s{_assWebsiteLocale = a})
+
+-- | The preferred locale of the user.
+assUserLocale :: Lens' AssociationSessionsStart (Maybe Text)
+assUserLocale
+  = lens _assUserLocale
+      (\ s a -> s{_assUserLocale = a})
+
+-- | The URL of the user\'s hosted website.
+assWebsiteURL :: Lens' AssociationSessionsStart Text
+assWebsiteURL
+  = lens _assWebsiteURL
+      (\ s a -> s{_assWebsiteURL = a})
+
+-- | Products to associate with the user.
+assProductCode :: Lens' AssociationSessionsStart [AssociationSessionsStartProductCode]
+assProductCode
+  = lens _assProductCode
+      (\ s a -> s{_assProductCode = a})
+      . _Coerce
+
+instance GoogleRequest AssociationSessionsStart where
+        type Rs AssociationSessionsStart = AssociationSession
+        requestClient AssociationSessionsStart{..}
+          = go _assProductCode (Just _assWebsiteURL)
+              _assWebsiteLocale
+              _assUserLocale
+              (Just AltJSON)
+              adSenseHostService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy AssociationSessionsStartResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/AdSenseHost/AssociationSessions/Verify.hs b/gen/Network/Google/Resource/AdSenseHost/AssociationSessions/Verify.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/AdSenseHost/AssociationSessions/Verify.hs
@@ -0,0 +1,89 @@
+{-# 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.AdSenseHost.AssociationSessions.Verify
+-- 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)
+--
+-- Verify an association session after the association callback returns
+-- from AdSense signup.
+--
+-- /See:/ <https://developers.google.com/adsense/host/ AdSense Host API Reference> for @adsensehost.associationsessions.verify@.
+module Network.Google.Resource.AdSenseHost.AssociationSessions.Verify
+    (
+    -- * REST Resource
+      AssociationSessionsVerifyResource
+
+    -- * Creating a Request
+    , associationSessionsVerify
+    , AssociationSessionsVerify
+
+    -- * Request Lenses
+    , asvToken
+    ) where
+
+import           Network.Google.AdSenseHost.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @adsensehost.associationsessions.verify@ method which the
+-- 'AssociationSessionsVerify' request conforms to.
+type AssociationSessionsVerifyResource =
+     "adsensehost" :>
+       "v4.1" :>
+         "associationsessions" :>
+           "verify" :>
+             QueryParam "token" Text :>
+               QueryParam "alt" AltJSON :>
+                 Get '[JSON] AssociationSession
+
+-- | Verify an association session after the association callback returns
+-- from AdSense signup.
+--
+-- /See:/ 'associationSessionsVerify' smart constructor.
+newtype AssociationSessionsVerify = AssociationSessionsVerify
+    { _asvToken :: Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'AssociationSessionsVerify' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'asvToken'
+associationSessionsVerify
+    :: Text -- ^ 'asvToken'
+    -> AssociationSessionsVerify
+associationSessionsVerify pAsvToken_ =
+    AssociationSessionsVerify
+    { _asvToken = pAsvToken_
+    }
+
+-- | The token returned to the association callback URL.
+asvToken :: Lens' AssociationSessionsVerify Text
+asvToken = lens _asvToken (\ s a -> s{_asvToken = a})
+
+instance GoogleRequest AssociationSessionsVerify
+         where
+        type Rs AssociationSessionsVerify =
+             AssociationSession
+        requestClient AssociationSessionsVerify{..}
+          = go (Just _asvToken) (Just AltJSON)
+              adSenseHostService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy AssociationSessionsVerifyResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/AdSenseHost/CustomChannels/Delete.hs b/gen/Network/Google/Resource/AdSenseHost/CustomChannels/Delete.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/AdSenseHost/CustomChannels/Delete.hs
@@ -0,0 +1,101 @@
+{-# LANGUAGE DataKinds          #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE FlexibleInstances  #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+{-# LANGUAGE TypeOperators      #-}
+
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
+
+-- |
+-- Module      : Network.Google.Resource.AdSenseHost.CustomChannels.Delete
+-- Copyright   : (c) 2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Delete a specific custom channel from the host AdSense account.
+--
+-- /See:/ <https://developers.google.com/adsense/host/ AdSense Host API Reference> for @adsensehost.customchannels.delete@.
+module Network.Google.Resource.AdSenseHost.CustomChannels.Delete
+    (
+    -- * REST Resource
+      CustomChannelsDeleteResource
+
+    -- * Creating a Request
+    , customChannelsDelete
+    , CustomChannelsDelete
+
+    -- * Request Lenses
+    , ccdCustomChannelId
+    , ccdAdClientId
+    ) where
+
+import           Network.Google.AdSenseHost.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @adsensehost.customchannels.delete@ method which the
+-- 'CustomChannelsDelete' request conforms to.
+type CustomChannelsDeleteResource =
+     "adsensehost" :>
+       "v4.1" :>
+         "adclients" :>
+           Capture "adClientId" Text :>
+             "customchannels" :>
+               Capture "customChannelId" Text :>
+                 QueryParam "alt" AltJSON :>
+                   Delete '[JSON] CustomChannel
+
+-- | Delete a specific custom channel from the host AdSense account.
+--
+-- /See:/ 'customChannelsDelete' smart constructor.
+data CustomChannelsDelete = CustomChannelsDelete
+    { _ccdCustomChannelId :: !Text
+    , _ccdAdClientId      :: !Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'CustomChannelsDelete' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'ccdCustomChannelId'
+--
+-- * 'ccdAdClientId'
+customChannelsDelete
+    :: Text -- ^ 'ccdCustomChannelId'
+    -> Text -- ^ 'ccdAdClientId'
+    -> CustomChannelsDelete
+customChannelsDelete pCcdCustomChannelId_ pCcdAdClientId_ =
+    CustomChannelsDelete
+    { _ccdCustomChannelId = pCcdCustomChannelId_
+    , _ccdAdClientId = pCcdAdClientId_
+    }
+
+-- | Custom channel to delete.
+ccdCustomChannelId :: Lens' CustomChannelsDelete Text
+ccdCustomChannelId
+  = lens _ccdCustomChannelId
+      (\ s a -> s{_ccdCustomChannelId = a})
+
+-- | Ad client from which to delete the custom channel.
+ccdAdClientId :: Lens' CustomChannelsDelete Text
+ccdAdClientId
+  = lens _ccdAdClientId
+      (\ s a -> s{_ccdAdClientId = a})
+
+instance GoogleRequest CustomChannelsDelete where
+        type Rs CustomChannelsDelete = CustomChannel
+        requestClient CustomChannelsDelete{..}
+          = go _ccdAdClientId _ccdCustomChannelId
+              (Just AltJSON)
+              adSenseHostService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy CustomChannelsDeleteResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/AdSenseHost/CustomChannels/Get.hs b/gen/Network/Google/Resource/AdSenseHost/CustomChannels/Get.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/AdSenseHost/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.AdSenseHost.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 a specific custom channel from the host AdSense account.
+--
+-- /See:/ <https://developers.google.com/adsense/host/ AdSense Host API Reference> for @adsensehost.customchannels.get@.
+module Network.Google.Resource.AdSenseHost.CustomChannels.Get
+    (
+    -- * REST Resource
+      CustomChannelsGetResource
+
+    -- * Creating a Request
+    , customChannelsGet
+    , CustomChannelsGet
+
+    -- * Request Lenses
+    , ccgCustomChannelId
+    , ccgAdClientId
+    ) where
+
+import           Network.Google.AdSenseHost.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @adsensehost.customchannels.get@ method which the
+-- 'CustomChannelsGet' request conforms to.
+type CustomChannelsGetResource =
+     "adsensehost" :>
+       "v4.1" :>
+         "adclients" :>
+           Capture "adClientId" Text :>
+             "customchannels" :>
+               Capture "customChannelId" Text :>
+                 QueryParam "alt" AltJSON :> Get '[JSON] CustomChannel
+
+-- | Get a specific custom channel from the host AdSense account.
+--
+-- /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 get.
+ccgCustomChannelId :: Lens' CustomChannelsGet Text
+ccgCustomChannelId
+  = lens _ccgCustomChannelId
+      (\ s a -> s{_ccgCustomChannelId = a})
+
+-- | Ad client from which to get 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)
+              adSenseHostService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy CustomChannelsGetResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/AdSenseHost/CustomChannels/Insert.hs b/gen/Network/Google/Resource/AdSenseHost/CustomChannels/Insert.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/AdSenseHost/CustomChannels/Insert.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.AdSenseHost.CustomChannels.Insert
+-- Copyright   : (c) 2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Add a new custom channel to the host AdSense account.
+--
+-- /See:/ <https://developers.google.com/adsense/host/ AdSense Host API Reference> for @adsensehost.customchannels.insert@.
+module Network.Google.Resource.AdSenseHost.CustomChannels.Insert
+    (
+    -- * REST Resource
+      CustomChannelsInsertResource
+
+    -- * Creating a Request
+    , customChannelsInsert
+    , CustomChannelsInsert
+
+    -- * Request Lenses
+    , cciPayload
+    , cciAdClientId
+    ) where
+
+import           Network.Google.AdSenseHost.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @adsensehost.customchannels.insert@ method which the
+-- 'CustomChannelsInsert' request conforms to.
+type CustomChannelsInsertResource =
+     "adsensehost" :>
+       "v4.1" :>
+         "adclients" :>
+           Capture "adClientId" Text :>
+             "customchannels" :>
+               QueryParam "alt" AltJSON :>
+                 ReqBody '[JSON] CustomChannel :>
+                   Post '[JSON] CustomChannel
+
+-- | Add a new custom channel to the host AdSense account.
+--
+-- /See:/ 'customChannelsInsert' smart constructor.
+data CustomChannelsInsert = CustomChannelsInsert
+    { _cciPayload    :: !CustomChannel
+    , _cciAdClientId :: !Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'CustomChannelsInsert' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'cciPayload'
+--
+-- * 'cciAdClientId'
+customChannelsInsert
+    :: CustomChannel -- ^ 'cciPayload'
+    -> Text -- ^ 'cciAdClientId'
+    -> CustomChannelsInsert
+customChannelsInsert pCciPayload_ pCciAdClientId_ =
+    CustomChannelsInsert
+    { _cciPayload = pCciPayload_
+    , _cciAdClientId = pCciAdClientId_
+    }
+
+-- | Multipart request metadata.
+cciPayload :: Lens' CustomChannelsInsert CustomChannel
+cciPayload
+  = lens _cciPayload (\ s a -> s{_cciPayload = a})
+
+-- | Ad client to which the new custom channel will be added.
+cciAdClientId :: Lens' CustomChannelsInsert Text
+cciAdClientId
+  = lens _cciAdClientId
+      (\ s a -> s{_cciAdClientId = a})
+
+instance GoogleRequest CustomChannelsInsert where
+        type Rs CustomChannelsInsert = CustomChannel
+        requestClient CustomChannelsInsert{..}
+          = go _cciAdClientId (Just AltJSON) _cciPayload
+              adSenseHostService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy CustomChannelsInsertResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/AdSenseHost/CustomChannels/List.hs b/gen/Network/Google/Resource/AdSenseHost/CustomChannels/List.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/AdSenseHost/CustomChannels/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.AdSenseHost.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 host custom channels in this AdSense account.
+--
+-- /See:/ <https://developers.google.com/adsense/host/ AdSense Host API Reference> for @adsensehost.customchannels.list@.
+module Network.Google.Resource.AdSenseHost.CustomChannels.List
+    (
+    -- * REST Resource
+      CustomChannelsListResource
+
+    -- * Creating a Request
+    , customChannelsList
+    , CustomChannelsList
+
+    -- * Request Lenses
+    , cclAdClientId
+    , cclPageToken
+    , cclMaxResults
+    ) where
+
+import           Network.Google.AdSenseHost.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @adsensehost.customchannels.list@ method which the
+-- 'CustomChannelsList' request conforms to.
+type CustomChannelsListResource =
+     "adsensehost" :>
+       "v4.1" :>
+         "adclients" :>
+           Capture "adClientId" Text :>
+             "customchannels" :>
+               QueryParam "pageToken" Text :>
+                 QueryParam "maxResults" (Textual Word32) :>
+                   QueryParam "alt" AltJSON :>
+                     Get '[JSON] CustomChannels
+
+-- | List all host custom channels in this AdSense account.
+--
+-- /See:/ 'customChannelsList' smart constructor.
+data CustomChannelsList = CustomChannelsList
+    { _cclAdClientId :: !Text
+    , _cclPageToken  :: !(Maybe Text)
+    , _cclMaxResults :: !(Maybe (Textual Word32))
+    } 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 Word32)
+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)
+              adSenseHostService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy CustomChannelsListResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/AdSenseHost/CustomChannels/Patch.hs b/gen/Network/Google/Resource/AdSenseHost/CustomChannels/Patch.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/AdSenseHost/CustomChannels/Patch.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.AdSenseHost.CustomChannels.Patch
+-- Copyright   : (c) 2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Update a custom channel in the host AdSense account. This method
+-- supports patch semantics.
+--
+-- /See:/ <https://developers.google.com/adsense/host/ AdSense Host API Reference> for @adsensehost.customchannels.patch@.
+module Network.Google.Resource.AdSenseHost.CustomChannels.Patch
+    (
+    -- * REST Resource
+      CustomChannelsPatchResource
+
+    -- * Creating a Request
+    , customChannelsPatch
+    , CustomChannelsPatch
+
+    -- * Request Lenses
+    , ccpCustomChannelId
+    , ccpPayload
+    , ccpAdClientId
+    ) where
+
+import           Network.Google.AdSenseHost.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @adsensehost.customchannels.patch@ method which the
+-- 'CustomChannelsPatch' request conforms to.
+type CustomChannelsPatchResource =
+     "adsensehost" :>
+       "v4.1" :>
+         "adclients" :>
+           Capture "adClientId" Text :>
+             "customchannels" :>
+               QueryParam "customChannelId" Text :>
+                 QueryParam "alt" AltJSON :>
+                   ReqBody '[JSON] CustomChannel :>
+                     Patch '[JSON] CustomChannel
+
+-- | Update a custom channel in the host AdSense account. This method
+-- supports patch semantics.
+--
+-- /See:/ 'customChannelsPatch' smart constructor.
+data CustomChannelsPatch = CustomChannelsPatch
+    { _ccpCustomChannelId :: !Text
+    , _ccpPayload         :: !CustomChannel
+    , _ccpAdClientId      :: !Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'CustomChannelsPatch' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'ccpCustomChannelId'
+--
+-- * 'ccpPayload'
+--
+-- * 'ccpAdClientId'
+customChannelsPatch
+    :: Text -- ^ 'ccpCustomChannelId'
+    -> CustomChannel -- ^ 'ccpPayload'
+    -> Text -- ^ 'ccpAdClientId'
+    -> CustomChannelsPatch
+customChannelsPatch pCcpCustomChannelId_ pCcpPayload_ pCcpAdClientId_ =
+    CustomChannelsPatch
+    { _ccpCustomChannelId = pCcpCustomChannelId_
+    , _ccpPayload = pCcpPayload_
+    , _ccpAdClientId = pCcpAdClientId_
+    }
+
+-- | Custom channel to get.
+ccpCustomChannelId :: Lens' CustomChannelsPatch Text
+ccpCustomChannelId
+  = lens _ccpCustomChannelId
+      (\ s a -> s{_ccpCustomChannelId = a})
+
+-- | Multipart request metadata.
+ccpPayload :: Lens' CustomChannelsPatch CustomChannel
+ccpPayload
+  = lens _ccpPayload (\ s a -> s{_ccpPayload = a})
+
+-- | Ad client in which the custom channel will be updated.
+ccpAdClientId :: Lens' CustomChannelsPatch Text
+ccpAdClientId
+  = lens _ccpAdClientId
+      (\ s a -> s{_ccpAdClientId = a})
+
+instance GoogleRequest CustomChannelsPatch where
+        type Rs CustomChannelsPatch = CustomChannel
+        requestClient CustomChannelsPatch{..}
+          = go _ccpAdClientId (Just _ccpCustomChannelId)
+              (Just AltJSON)
+              _ccpPayload
+              adSenseHostService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy CustomChannelsPatchResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/AdSenseHost/CustomChannels/Update.hs b/gen/Network/Google/Resource/AdSenseHost/CustomChannels/Update.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/AdSenseHost/CustomChannels/Update.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.AdSenseHost.CustomChannels.Update
+-- Copyright   : (c) 2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Update a custom channel in the host AdSense account.
+--
+-- /See:/ <https://developers.google.com/adsense/host/ AdSense Host API Reference> for @adsensehost.customchannels.update@.
+module Network.Google.Resource.AdSenseHost.CustomChannels.Update
+    (
+    -- * REST Resource
+      CustomChannelsUpdateResource
+
+    -- * Creating a Request
+    , customChannelsUpdate
+    , CustomChannelsUpdate
+
+    -- * Request Lenses
+    , ccuPayload
+    , ccuAdClientId
+    ) where
+
+import           Network.Google.AdSenseHost.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @adsensehost.customchannels.update@ method which the
+-- 'CustomChannelsUpdate' request conforms to.
+type CustomChannelsUpdateResource =
+     "adsensehost" :>
+       "v4.1" :>
+         "adclients" :>
+           Capture "adClientId" Text :>
+             "customchannels" :>
+               QueryParam "alt" AltJSON :>
+                 ReqBody '[JSON] CustomChannel :>
+                   Put '[JSON] CustomChannel
+
+-- | Update a custom channel in the host AdSense account.
+--
+-- /See:/ 'customChannelsUpdate' smart constructor.
+data CustomChannelsUpdate = CustomChannelsUpdate
+    { _ccuPayload    :: !CustomChannel
+    , _ccuAdClientId :: !Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'CustomChannelsUpdate' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'ccuPayload'
+--
+-- * 'ccuAdClientId'
+customChannelsUpdate
+    :: CustomChannel -- ^ 'ccuPayload'
+    -> Text -- ^ 'ccuAdClientId'
+    -> CustomChannelsUpdate
+customChannelsUpdate pCcuPayload_ pCcuAdClientId_ =
+    CustomChannelsUpdate
+    { _ccuPayload = pCcuPayload_
+    , _ccuAdClientId = pCcuAdClientId_
+    }
+
+-- | Multipart request metadata.
+ccuPayload :: Lens' CustomChannelsUpdate CustomChannel
+ccuPayload
+  = lens _ccuPayload (\ s a -> s{_ccuPayload = a})
+
+-- | Ad client in which the custom channel will be updated.
+ccuAdClientId :: Lens' CustomChannelsUpdate Text
+ccuAdClientId
+  = lens _ccuAdClientId
+      (\ s a -> s{_ccuAdClientId = a})
+
+instance GoogleRequest CustomChannelsUpdate where
+        type Rs CustomChannelsUpdate = CustomChannel
+        requestClient CustomChannelsUpdate{..}
+          = go _ccuAdClientId (Just AltJSON) _ccuPayload
+              adSenseHostService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy CustomChannelsUpdateResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/AdSenseHost/Reports/Generate.hs b/gen/Network/Google/Resource/AdSenseHost/Reports/Generate.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/AdSenseHost/Reports/Generate.hs
@@ -0,0 +1,197 @@
+{-# 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.AdSenseHost.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/host/ AdSense Host API Reference> for @adsensehost.reports.generate@.
+module Network.Google.Resource.AdSenseHost.Reports.Generate
+    (
+    -- * REST Resource
+      ReportsGenerateResource
+
+    -- * Creating a Request
+    , reportsGenerate
+    , ReportsGenerate
+
+    -- * Request Lenses
+    , rgDimension
+    , rgLocale
+    , rgEndDate
+    , rgStartDate
+    , rgMetric
+    , rgSort
+    , rgFilter
+    , rgStartIndex
+    , rgMaxResults
+    ) where
+
+import           Network.Google.AdSenseHost.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @adsensehost.reports.generate@ method which the
+-- 'ReportsGenerate' request conforms to.
+type ReportsGenerateResource =
+     "adsensehost" :>
+       "v4.1" :>
+         "reports" :>
+           QueryParam "startDate" Text :>
+             QueryParam "endDate" Text :>
+               QueryParams "dimension" Text :>
+                 QueryParam "locale" Text :>
+                   QueryParams "metric" Text :>
+                     QueryParams "sort" Text :>
+                       QueryParams "filter" Text :>
+                         QueryParam "startIndex" (Textual Word32) :>
+                           QueryParam "maxResults" (Textual Word32) :>
+                             QueryParam "alt" AltJSON :> Get '[JSON] Report
+
+-- | 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
+    , _rgMetric     :: !(Maybe [Text])
+    , _rgSort       :: !(Maybe [Text])
+    , _rgFilter     :: !(Maybe [Text])
+    , _rgStartIndex :: !(Maybe (Textual Word32))
+    , _rgMaxResults :: !(Maybe (Textual Word32))
+    } 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'
+--
+-- * 'rgMetric'
+--
+-- * 'rgSort'
+--
+-- * 'rgFilter'
+--
+-- * 'rgStartIndex'
+--
+-- * 'rgMaxResults'
+reportsGenerate
+    :: Text -- ^ 'rgEndDate'
+    -> Text -- ^ 'rgStartDate'
+    -> ReportsGenerate
+reportsGenerate pRgEndDate_ pRgStartDate_ =
+    ReportsGenerate
+    { _rgDimension = Nothing
+    , _rgLocale = Nothing
+    , _rgEndDate = pRgEndDate_
+    , _rgStartDate = pRgStartDate_
+    , _rgMetric = Nothing
+    , _rgSort = Nothing
+    , _rgFilter = Nothing
+    , _rgStartIndex = 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})
+
+-- | Numeric columns to include in the report.
+rgMetric :: Lens' ReportsGenerate [Text]
+rgMetric
+  = lens _rgMetric (\ s a -> s{_rgMetric = a}) .
+      _Default
+      . _Coerce
+
+-- | 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 Word32)
+rgStartIndex
+  = lens _rgStartIndex (\ s a -> s{_rgStartIndex = a})
+      . mapping _Coerce
+
+-- | The maximum number of rows of report data to return.
+rgMaxResults :: Lens' ReportsGenerate (Maybe Word32)
+rgMaxResults
+  = lens _rgMaxResults (\ s a -> s{_rgMaxResults = a})
+      . mapping _Coerce
+
+instance GoogleRequest ReportsGenerate where
+        type Rs ReportsGenerate = Report
+        requestClient ReportsGenerate{..}
+          = go (Just _rgStartDate) (Just _rgEndDate)
+              (_rgDimension ^. _Default)
+              _rgLocale
+              (_rgMetric ^. _Default)
+              (_rgSort ^. _Default)
+              (_rgFilter ^. _Default)
+              _rgStartIndex
+              _rgMaxResults
+              (Just AltJSON)
+              adSenseHostService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy ReportsGenerateResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/AdSenseHost/URLChannels/Delete.hs b/gen/Network/Google/Resource/AdSenseHost/URLChannels/Delete.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/AdSenseHost/URLChannels/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.AdSenseHost.URLChannels.Delete
+-- Copyright   : (c) 2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Delete a URL channel from the host AdSense account.
+--
+-- /See:/ <https://developers.google.com/adsense/host/ AdSense Host API Reference> for @adsensehost.urlchannels.delete@.
+module Network.Google.Resource.AdSenseHost.URLChannels.Delete
+    (
+    -- * REST Resource
+      URLChannelsDeleteResource
+
+    -- * Creating a Request
+    , urlChannelsDelete
+    , URLChannelsDelete
+
+    -- * Request Lenses
+    , ucdURLChannelId
+    , ucdAdClientId
+    ) where
+
+import           Network.Google.AdSenseHost.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @adsensehost.urlchannels.delete@ method which the
+-- 'URLChannelsDelete' request conforms to.
+type URLChannelsDeleteResource =
+     "adsensehost" :>
+       "v4.1" :>
+         "adclients" :>
+           Capture "adClientId" Text :>
+             "urlchannels" :>
+               Capture "urlChannelId" Text :>
+                 QueryParam "alt" AltJSON :> Delete '[JSON] URLChannel
+
+-- | Delete a URL channel from the host AdSense account.
+--
+-- /See:/ 'urlChannelsDelete' smart constructor.
+data URLChannelsDelete = URLChannelsDelete
+    { _ucdURLChannelId :: !Text
+    , _ucdAdClientId   :: !Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'URLChannelsDelete' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'ucdURLChannelId'
+--
+-- * 'ucdAdClientId'
+urlChannelsDelete
+    :: Text -- ^ 'ucdURLChannelId'
+    -> Text -- ^ 'ucdAdClientId'
+    -> URLChannelsDelete
+urlChannelsDelete pUcdURLChannelId_ pUcdAdClientId_ =
+    URLChannelsDelete
+    { _ucdURLChannelId = pUcdURLChannelId_
+    , _ucdAdClientId = pUcdAdClientId_
+    }
+
+-- | URL channel to delete.
+ucdURLChannelId :: Lens' URLChannelsDelete Text
+ucdURLChannelId
+  = lens _ucdURLChannelId
+      (\ s a -> s{_ucdURLChannelId = a})
+
+-- | Ad client from which to delete the URL channel.
+ucdAdClientId :: Lens' URLChannelsDelete Text
+ucdAdClientId
+  = lens _ucdAdClientId
+      (\ s a -> s{_ucdAdClientId = a})
+
+instance GoogleRequest URLChannelsDelete where
+        type Rs URLChannelsDelete = URLChannel
+        requestClient URLChannelsDelete{..}
+          = go _ucdAdClientId _ucdURLChannelId (Just AltJSON)
+              adSenseHostService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy URLChannelsDeleteResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/AdSenseHost/URLChannels/Insert.hs b/gen/Network/Google/Resource/AdSenseHost/URLChannels/Insert.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/AdSenseHost/URLChannels/Insert.hs
@@ -0,0 +1,98 @@
+{-# LANGUAGE DataKinds          #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE FlexibleInstances  #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+{-# LANGUAGE TypeOperators      #-}
+
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
+
+-- |
+-- Module      : Network.Google.Resource.AdSenseHost.URLChannels.Insert
+-- Copyright   : (c) 2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Add a new URL channel to the host AdSense account.
+--
+-- /See:/ <https://developers.google.com/adsense/host/ AdSense Host API Reference> for @adsensehost.urlchannels.insert@.
+module Network.Google.Resource.AdSenseHost.URLChannels.Insert
+    (
+    -- * REST Resource
+      URLChannelsInsertResource
+
+    -- * Creating a Request
+    , urlChannelsInsert
+    , URLChannelsInsert
+
+    -- * Request Lenses
+    , uciPayload
+    , uciAdClientId
+    ) where
+
+import           Network.Google.AdSenseHost.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @adsensehost.urlchannels.insert@ method which the
+-- 'URLChannelsInsert' request conforms to.
+type URLChannelsInsertResource =
+     "adsensehost" :>
+       "v4.1" :>
+         "adclients" :>
+           Capture "adClientId" Text :>
+             "urlchannels" :>
+               QueryParam "alt" AltJSON :>
+                 ReqBody '[JSON] URLChannel :> Post '[JSON] URLChannel
+
+-- | Add a new URL channel to the host AdSense account.
+--
+-- /See:/ 'urlChannelsInsert' smart constructor.
+data URLChannelsInsert = URLChannelsInsert
+    { _uciPayload    :: !URLChannel
+    , _uciAdClientId :: !Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'URLChannelsInsert' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'uciPayload'
+--
+-- * 'uciAdClientId'
+urlChannelsInsert
+    :: URLChannel -- ^ 'uciPayload'
+    -> Text -- ^ 'uciAdClientId'
+    -> URLChannelsInsert
+urlChannelsInsert pUciPayload_ pUciAdClientId_ =
+    URLChannelsInsert
+    { _uciPayload = pUciPayload_
+    , _uciAdClientId = pUciAdClientId_
+    }
+
+-- | Multipart request metadata.
+uciPayload :: Lens' URLChannelsInsert URLChannel
+uciPayload
+  = lens _uciPayload (\ s a -> s{_uciPayload = a})
+
+-- | Ad client to which the new URL channel will be added.
+uciAdClientId :: Lens' URLChannelsInsert Text
+uciAdClientId
+  = lens _uciAdClientId
+      (\ s a -> s{_uciAdClientId = a})
+
+instance GoogleRequest URLChannelsInsert where
+        type Rs URLChannelsInsert = URLChannel
+        requestClient URLChannelsInsert{..}
+          = go _uciAdClientId (Just AltJSON) _uciPayload
+              adSenseHostService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy URLChannelsInsertResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/AdSenseHost/URLChannels/List.hs b/gen/Network/Google/Resource/AdSenseHost/URLChannels/List.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/AdSenseHost/URLChannels/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.AdSenseHost.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 host URL channels in the host AdSense account.
+--
+-- /See:/ <https://developers.google.com/adsense/host/ AdSense Host API Reference> for @adsensehost.urlchannels.list@.
+module Network.Google.Resource.AdSenseHost.URLChannels.List
+    (
+    -- * REST Resource
+      URLChannelsListResource
+
+    -- * Creating a Request
+    , urlChannelsList
+    , URLChannelsList
+
+    -- * Request Lenses
+    , uclAdClientId
+    , uclPageToken
+    , uclMaxResults
+    ) where
+
+import           Network.Google.AdSenseHost.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @adsensehost.urlchannels.list@ method which the
+-- 'URLChannelsList' request conforms to.
+type URLChannelsListResource =
+     "adsensehost" :>
+       "v4.1" :>
+         "adclients" :>
+           Capture "adClientId" Text :>
+             "urlchannels" :>
+               QueryParam "pageToken" Text :>
+                 QueryParam "maxResults" (Textual Word32) :>
+                   QueryParam "alt" AltJSON :> Get '[JSON] URLChannels
+
+-- | List all host URL channels in the host AdSense account.
+--
+-- /See:/ 'urlChannelsList' smart constructor.
+data URLChannelsList = URLChannelsList
+    { _uclAdClientId :: !Text
+    , _uclPageToken  :: !(Maybe Text)
+    , _uclMaxResults :: !(Maybe (Textual Word32))
+    } 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 Word32)
+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)
+              adSenseHostService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy URLChannelsListResource)
+                      mempty
diff --git a/gogol-adsense-host.cabal b/gogol-adsense-host.cabal
new file mode 100644
--- /dev/null
+++ b/gogol-adsense-host.cabal
@@ -0,0 +1,76 @@
+name:                  gogol-adsense-host
+version:               0.0.1
+synopsis:              Google AdSense Host 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 Hosts access to report generation, ad code generation, and
+    publisher management capabilities.
+    .
+    /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 @v4.1@
+    of the API.
+    .
+    Labels:
+    .
+    * Limited Availability
+
+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.AdSenseHost
+        , Network.Google.AdSenseHost.Types
+        , Network.Google.Resource.AdSenseHost.Accounts.AdClients.Get
+        , Network.Google.Resource.AdSenseHost.Accounts.AdClients.List
+        , Network.Google.Resource.AdSenseHost.Accounts.AdUnits.Delete
+        , Network.Google.Resource.AdSenseHost.Accounts.AdUnits.Get
+        , Network.Google.Resource.AdSenseHost.Accounts.AdUnits.GetAdCode
+        , Network.Google.Resource.AdSenseHost.Accounts.AdUnits.Insert
+        , Network.Google.Resource.AdSenseHost.Accounts.AdUnits.List
+        , Network.Google.Resource.AdSenseHost.Accounts.AdUnits.Patch
+        , Network.Google.Resource.AdSenseHost.Accounts.AdUnits.Update
+        , Network.Google.Resource.AdSenseHost.Accounts.Get
+        , Network.Google.Resource.AdSenseHost.Accounts.List
+        , Network.Google.Resource.AdSenseHost.Accounts.Reports.Generate
+        , Network.Google.Resource.AdSenseHost.AdClients.Get
+        , Network.Google.Resource.AdSenseHost.AdClients.List
+        , Network.Google.Resource.AdSenseHost.AssociationSessions.Start
+        , Network.Google.Resource.AdSenseHost.AssociationSessions.Verify
+        , Network.Google.Resource.AdSenseHost.CustomChannels.Delete
+        , Network.Google.Resource.AdSenseHost.CustomChannels.Get
+        , Network.Google.Resource.AdSenseHost.CustomChannels.Insert
+        , Network.Google.Resource.AdSenseHost.CustomChannels.List
+        , Network.Google.Resource.AdSenseHost.CustomChannels.Patch
+        , Network.Google.Resource.AdSenseHost.CustomChannels.Update
+        , Network.Google.Resource.AdSenseHost.Reports.Generate
+        , Network.Google.Resource.AdSenseHost.URLChannels.Delete
+        , Network.Google.Resource.AdSenseHost.URLChannels.Insert
+        , Network.Google.Resource.AdSenseHost.URLChannels.List
+
+    other-modules:
+          Network.Google.AdSenseHost.Types.Product
+        , Network.Google.AdSenseHost.Types.Sum
+
+    build-depends:
+          gogol-core == 0.0.1.*
+        , base       >= 4.7 && < 5
