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-affiliates
+
+* [Version](#version)
+* [Description](#description)
+* [Contribute](#contribute)
+* [Licence](#licence)
+
+
+## Version
+
+`0.0.1`
+
+
+## Description
+
+A client library for the Google Affiliate Network.
+
+
+## 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-affiliates` 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/Affiliates.hs b/gen/Network/Google/Affiliates.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Affiliates.hs
@@ -0,0 +1,410 @@
+{-# LANGUAGE DataKinds         #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# LANGUAGE TypeOperators     #-}
+
+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+
+-- |
+-- Module      : Network.Google.Affiliates
+-- Copyright   : (c) 2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Lets you have programmatic access to your Google Affiliate Network data.
+--
+-- /See:/ <https://developers.google.com/affiliate-network/ Google Affiliate Network API Reference>
+module Network.Google.Affiliates
+    (
+    -- * Service Configuration
+      affiliatesService
+
+    -- * API Declaration
+    , AffiliatesAPI
+
+    -- * Resources
+
+    -- ** gan.advertisers.get
+    , module Network.Google.Resource.GAN.Advertisers.Get
+
+    -- ** gan.advertisers.list
+    , module Network.Google.Resource.GAN.Advertisers.List
+
+    -- ** gan.ccOffers.list
+    , module Network.Google.Resource.GAN.CcOffers.List
+
+    -- ** gan.events.list
+    , module Network.Google.Resource.GAN.Events.List
+
+    -- ** gan.links.get
+    , module Network.Google.Resource.GAN.Links.Get
+
+    -- ** gan.links.insert
+    , module Network.Google.Resource.GAN.Links.Insert
+
+    -- ** gan.links.list
+    , module Network.Google.Resource.GAN.Links.List
+
+    -- ** gan.publishers.get
+    , module Network.Google.Resource.GAN.Publishers.Get
+
+    -- ** gan.publishers.list
+    , module Network.Google.Resource.GAN.Publishers.List
+
+    -- ** gan.reports.get
+    , module Network.Google.Resource.GAN.Reports.Get
+
+    -- * Types
+
+    -- ** Event
+    , Event
+    , event
+    , eModifyDate
+    , eStatus
+    , eCommissionableSales
+    , eChargeId
+    , eAdvertiserName
+    , eChargeType
+    , eMemberId
+    , eKind
+    , eNetworkFee
+    , eAdvertiserId
+    , eEventDate
+    , eProducts
+    , ePublisherFee
+    , eType
+    , eOrderId
+    , ePublisherId
+    , eEarnings
+    , ePublisherName
+
+    -- ** PublishersGetRole
+    , PublishersGetRole (..)
+
+    -- ** ReportsGetEventType
+    , ReportsGetEventType (..)
+
+    -- ** ReportsGetStatus
+    , ReportsGetStatus (..)
+
+    -- ** LinksListPromotionType
+    , LinksListPromotionType (..)
+
+    -- ** EventsListType
+    , EventsListType (..)
+
+    -- ** LinksListRole
+    , LinksListRole (..)
+
+    -- ** ReportsGetReportType
+    , ReportsGetReportType (..)
+
+    -- ** AdvertisersListRole
+    , AdvertisersListRole (..)
+
+    -- ** Money
+    , Money
+    , money
+    , mAmount
+    , mCurrencyCode
+
+    -- ** Link
+    , Link
+    , link
+    , lAuthorship
+    , lDestinationURL
+    , lClickTrackingURL
+    , lCreateDate
+    , lKind
+    , lAdvertiserId
+    , lEndDate
+    , lImageAltText
+    , lPromotionType
+    , lAvailability
+    , lStartDate
+    , lName
+    , lImpressionTrackingURL
+    , lSpecialOffers
+    , lEpcSevenDayAverage
+    , lId
+    , lEpcNinetyDayAverage
+    , lLinkType
+    , lIsActive
+    , lDuration
+    , lDescription
+
+    -- ** LinksInsertRole
+    , LinksInsertRole (..)
+
+    -- ** CcOffers
+    , CcOffers
+    , ccOffers
+    , coKind
+    , coItems
+
+    -- ** PublishersListRole
+    , PublishersListRole (..)
+
+    -- ** CcOfferDefaultFeesItem
+    , CcOfferDefaultFeesItem
+    , ccOfferDefaultFeesItem
+    , codfiRateType
+    , codfiMinRate
+    , codfiCategory
+    , codfiMaxRate
+
+    -- ** Report
+    , Report
+    , report
+    , rEndDate
+    , rTotalsRows
+    , rKind
+    , rStartDate
+    , rRows
+    , rMatchingRowCount
+    , rColumnNames
+    , rType
+
+    -- ** LinksListAuthorship
+    , LinksListAuthorship (..)
+
+    -- ** Advertisers
+    , Advertisers
+    , advertisers
+    , aNextPageToken
+    , aKind
+    , aItems
+
+    -- ** LinksGetRole
+    , LinksGetRole (..)
+
+    -- ** LinksListLinkType
+    , LinksListLinkType (..)
+
+    -- ** EventsListRole
+    , EventsListRole (..)
+
+    -- ** EventProductsItem
+    , EventProductsItem
+    , eventProductsItem
+    , epiSKUName
+    , epiNetworkFee
+    , epiQuantity
+    , epiCategoryName
+    , epiCategoryId
+    , epiSKU
+    , epiPublisherFee
+    , epiUnitPrice
+    , epiEarnings
+
+    -- ** AdvertisersListRelationshipStatus
+    , AdvertisersListRelationshipStatus (..)
+
+    -- ** CcOffersListProjection
+    , CcOffersListProjection (..)
+
+    -- ** CcOfferBonusRewardsItem
+    , CcOfferBonusRewardsItem
+    , ccOfferBonusRewardsItem
+    , cobriAmount
+    , cobriDetails
+
+    -- ** AdvertisersGetRole
+    , AdvertisersGetRole (..)
+
+    -- ** EventsListChargeType
+    , EventsListChargeType (..)
+
+    -- ** PublishersListRelationshipStatus
+    , PublishersListRelationshipStatus (..)
+
+    -- ** ReportsGetRole
+    , ReportsGetRole (..)
+
+    -- ** Events
+    , Events
+    , events
+    , eveNextPageToken
+    , eveKind
+    , eveItems
+
+    -- ** LinkSpecialOffers
+    , LinkSpecialOffers
+    , linkSpecialOffers
+    , lsoFreeShippingMin
+    , lsoPercentOff
+    , lsoPriceCut
+    , lsoPriceCutMin
+    , lsoPercentOffMin
+    , lsoFreeShipping
+    , lsoPromotionCodes
+    , lsoFreeGift
+
+    -- ** Publishers
+    , Publishers
+    , publishers
+    , pNextPageToken
+    , pKind
+    , pItems
+
+    -- ** Advertiser
+    , Advertiser
+    , advertiser
+    , advAllowPublisherCreatedLinks
+    , advContactPhone
+    , advContactEmail
+    , advStatus
+    , advLogoURL
+    , advKind
+    , advCategory
+    , advSiteURL
+    , advPayoutRank
+    , advJoinDate
+    , advDefaultLinkId
+    , advRedirectDomains
+    , advName
+    , advProductFeedsEnabled
+    , advMerchantCenterIds
+    , advEpcSevenDayAverage
+    , advItem
+    , advId
+    , advEpcNinetyDayAverage
+    , advCommissionDuration
+    , advDescription
+
+    -- ** CcOffer
+    , CcOffer
+    , ccOffer
+    , cMinimumFinanceCharge
+    , cTrackingURL
+    , cProhibitedCategories
+    , cBalanceComputationMethod
+    , cInitialSetupAndProcessingFee
+    , cReturnedPaymentFee
+    , cAgeMinimumDetails
+    , cVariableRatesUpdateFrequency
+    , cCreditLimitMin
+    , cTravelInsurance
+    , cApprovedCategories
+    , cAnnualFeeDisplay
+    , cOverLimitFee
+    , cMaxPurchaseRate
+    , cAgeMinimum
+    , cVariableRatesLastUpdated
+    , cIntroCashAdvanceTerms
+    , cIssuerWebsite
+    , cLuggageInsurance
+    , cKind
+    , cRewardsHaveBlackoutDates
+    , cDisclaimer
+    , cAdditionalCardHolderFee
+    , cExistingCustomerOnly
+    , cEmergencyInsurance
+    , cNetwork
+    , cCashAdvanceTerms
+    , cStatementCopyFee
+    , cAprDisplay
+    , cOffersImmediateCashReward
+    , cRewards
+    , cCardType
+    , cImageURL
+    , cCreditLimitMax
+    , cLandingPageURL
+    , cAnnualFee
+    , cRewardsExpire
+    , cFirstYearAnnualFee
+    , cCarRentalInsurance
+    , cPurchaseRateAdditionalDetails
+    , cOfferId
+    , cGracePeriodDisplay
+    , cIntroPurchaseTerms
+    , cCreditRatingDisplay
+    , cBalanceTransferTerms
+    , cLatePaymentFee
+    , cCardBenefits
+    , cIssuer
+    , cCardName
+    , cMinPurchaseRate
+    , cFraudLiability
+    , cForeignCurrencyTransactionFee
+    , cExtendedWarranty
+    , cAnnualRewardMaximum
+    , cIssuerId
+    , cIntroBalanceTransferTerms
+    , cDefaultFees
+    , cAdditionalCardBenefits
+    , cRewardUnit
+    , cBonusRewards
+    , cFlightAccidentInsurance
+    , cRewardPartner
+    , cPurchaseRateType
+
+    -- ** Links
+    , Links
+    , links
+    , linNextPageToken
+    , linKind
+    , linItems
+
+    -- ** Publisher
+    , Publisher
+    , publisher
+    , pubStatus
+    , pubKind
+    , pubPayoutRank
+    , pubJoinDate
+    , pubClassification
+    , pubName
+    , pubEpcSevenDayAverage
+    , pubItem
+    , pubId
+    , pubEpcNinetyDayAverage
+    , pubSites
+
+    -- ** CcOfferRewardsItem
+    , CcOfferRewardsItem
+    , ccOfferRewardsItem
+    , coriAmount
+    , coriExpirationMonths
+    , coriCategory
+    , coriAdditionalDetails
+    , coriMaxRewardTier
+    , coriMinRewardTier
+
+    -- ** LinksListRelationshipStatus
+    , LinksListRelationshipStatus (..)
+
+    -- ** EventsListStatus
+    , EventsListStatus (..)
+    ) where
+
+import           Network.Google.Affiliates.Types
+import           Network.Google.Prelude
+import           Network.Google.Resource.GAN.Advertisers.Get
+import           Network.Google.Resource.GAN.Advertisers.List
+import           Network.Google.Resource.GAN.CcOffers.List
+import           Network.Google.Resource.GAN.Events.List
+import           Network.Google.Resource.GAN.Links.Get
+import           Network.Google.Resource.GAN.Links.Insert
+import           Network.Google.Resource.GAN.Links.List
+import           Network.Google.Resource.GAN.Publishers.Get
+import           Network.Google.Resource.GAN.Publishers.List
+import           Network.Google.Resource.GAN.Reports.Get
+
+{- $resources
+TODO
+-}
+
+-- | Represents the entirety of the methods and resources available for the Google Affiliate Network API service.
+type AffiliatesAPI =
+     ReportsGetResource :<|> CcOffersListResource :<|>
+       AdvertisersListResource
+       :<|> AdvertisersGetResource
+       :<|> EventsListResource
+       :<|> PublishersListResource
+       :<|> PublishersGetResource
+       :<|> LinksInsertResource
+       :<|> LinksListResource
+       :<|> LinksGetResource
diff --git a/gen/Network/Google/Affiliates/Types.hs b/gen/Network/Google/Affiliates/Types.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Affiliates/Types.hs
@@ -0,0 +1,351 @@
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- |
+-- Module      : Network.Google.Affiliates.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.Affiliates.Types
+    (
+    -- * Service Configuration
+      affiliatesService
+
+    -- * Event
+    , Event
+    , event
+    , eModifyDate
+    , eStatus
+    , eCommissionableSales
+    , eChargeId
+    , eAdvertiserName
+    , eChargeType
+    , eMemberId
+    , eKind
+    , eNetworkFee
+    , eAdvertiserId
+    , eEventDate
+    , eProducts
+    , ePublisherFee
+    , eType
+    , eOrderId
+    , ePublisherId
+    , eEarnings
+    , ePublisherName
+
+    -- * PublishersGetRole
+    , PublishersGetRole (..)
+
+    -- * ReportsGetEventType
+    , ReportsGetEventType (..)
+
+    -- * ReportsGetStatus
+    , ReportsGetStatus (..)
+
+    -- * LinksListPromotionType
+    , LinksListPromotionType (..)
+
+    -- * EventsListType
+    , EventsListType (..)
+
+    -- * LinksListRole
+    , LinksListRole (..)
+
+    -- * ReportsGetReportType
+    , ReportsGetReportType (..)
+
+    -- * AdvertisersListRole
+    , AdvertisersListRole (..)
+
+    -- * Money
+    , Money
+    , money
+    , mAmount
+    , mCurrencyCode
+
+    -- * Link
+    , Link
+    , link
+    , lAuthorship
+    , lDestinationURL
+    , lClickTrackingURL
+    , lCreateDate
+    , lKind
+    , lAdvertiserId
+    , lEndDate
+    , lImageAltText
+    , lPromotionType
+    , lAvailability
+    , lStartDate
+    , lName
+    , lImpressionTrackingURL
+    , lSpecialOffers
+    , lEpcSevenDayAverage
+    , lId
+    , lEpcNinetyDayAverage
+    , lLinkType
+    , lIsActive
+    , lDuration
+    , lDescription
+
+    -- * LinksInsertRole
+    , LinksInsertRole (..)
+
+    -- * CcOffers
+    , CcOffers
+    , ccOffers
+    , coKind
+    , coItems
+
+    -- * PublishersListRole
+    , PublishersListRole (..)
+
+    -- * CcOfferDefaultFeesItem
+    , CcOfferDefaultFeesItem
+    , ccOfferDefaultFeesItem
+    , codfiRateType
+    , codfiMinRate
+    , codfiCategory
+    , codfiMaxRate
+
+    -- * Report
+    , Report
+    , report
+    , rEndDate
+    , rTotalsRows
+    , rKind
+    , rStartDate
+    , rRows
+    , rMatchingRowCount
+    , rColumnNames
+    , rType
+
+    -- * LinksListAuthorship
+    , LinksListAuthorship (..)
+
+    -- * Advertisers
+    , Advertisers
+    , advertisers
+    , aNextPageToken
+    , aKind
+    , aItems
+
+    -- * LinksGetRole
+    , LinksGetRole (..)
+
+    -- * LinksListLinkType
+    , LinksListLinkType (..)
+
+    -- * EventsListRole
+    , EventsListRole (..)
+
+    -- * EventProductsItem
+    , EventProductsItem
+    , eventProductsItem
+    , epiSKUName
+    , epiNetworkFee
+    , epiQuantity
+    , epiCategoryName
+    , epiCategoryId
+    , epiSKU
+    , epiPublisherFee
+    , epiUnitPrice
+    , epiEarnings
+
+    -- * AdvertisersListRelationshipStatus
+    , AdvertisersListRelationshipStatus (..)
+
+    -- * CcOffersListProjection
+    , CcOffersListProjection (..)
+
+    -- * CcOfferBonusRewardsItem
+    , CcOfferBonusRewardsItem
+    , ccOfferBonusRewardsItem
+    , cobriAmount
+    , cobriDetails
+
+    -- * AdvertisersGetRole
+    , AdvertisersGetRole (..)
+
+    -- * EventsListChargeType
+    , EventsListChargeType (..)
+
+    -- * PublishersListRelationshipStatus
+    , PublishersListRelationshipStatus (..)
+
+    -- * ReportsGetRole
+    , ReportsGetRole (..)
+
+    -- * Events
+    , Events
+    , events
+    , eveNextPageToken
+    , eveKind
+    , eveItems
+
+    -- * LinkSpecialOffers
+    , LinkSpecialOffers
+    , linkSpecialOffers
+    , lsoFreeShippingMin
+    , lsoPercentOff
+    , lsoPriceCut
+    , lsoPriceCutMin
+    , lsoPercentOffMin
+    , lsoFreeShipping
+    , lsoPromotionCodes
+    , lsoFreeGift
+
+    -- * Publishers
+    , Publishers
+    , publishers
+    , pNextPageToken
+    , pKind
+    , pItems
+
+    -- * Advertiser
+    , Advertiser
+    , advertiser
+    , advAllowPublisherCreatedLinks
+    , advContactPhone
+    , advContactEmail
+    , advStatus
+    , advLogoURL
+    , advKind
+    , advCategory
+    , advSiteURL
+    , advPayoutRank
+    , advJoinDate
+    , advDefaultLinkId
+    , advRedirectDomains
+    , advName
+    , advProductFeedsEnabled
+    , advMerchantCenterIds
+    , advEpcSevenDayAverage
+    , advItem
+    , advId
+    , advEpcNinetyDayAverage
+    , advCommissionDuration
+    , advDescription
+
+    -- * CcOffer
+    , CcOffer
+    , ccOffer
+    , cMinimumFinanceCharge
+    , cTrackingURL
+    , cProhibitedCategories
+    , cBalanceComputationMethod
+    , cInitialSetupAndProcessingFee
+    , cReturnedPaymentFee
+    , cAgeMinimumDetails
+    , cVariableRatesUpdateFrequency
+    , cCreditLimitMin
+    , cTravelInsurance
+    , cApprovedCategories
+    , cAnnualFeeDisplay
+    , cOverLimitFee
+    , cMaxPurchaseRate
+    , cAgeMinimum
+    , cVariableRatesLastUpdated
+    , cIntroCashAdvanceTerms
+    , cIssuerWebsite
+    , cLuggageInsurance
+    , cKind
+    , cRewardsHaveBlackoutDates
+    , cDisclaimer
+    , cAdditionalCardHolderFee
+    , cExistingCustomerOnly
+    , cEmergencyInsurance
+    , cNetwork
+    , cCashAdvanceTerms
+    , cStatementCopyFee
+    , cAprDisplay
+    , cOffersImmediateCashReward
+    , cRewards
+    , cCardType
+    , cImageURL
+    , cCreditLimitMax
+    , cLandingPageURL
+    , cAnnualFee
+    , cRewardsExpire
+    , cFirstYearAnnualFee
+    , cCarRentalInsurance
+    , cPurchaseRateAdditionalDetails
+    , cOfferId
+    , cGracePeriodDisplay
+    , cIntroPurchaseTerms
+    , cCreditRatingDisplay
+    , cBalanceTransferTerms
+    , cLatePaymentFee
+    , cCardBenefits
+    , cIssuer
+    , cCardName
+    , cMinPurchaseRate
+    , cFraudLiability
+    , cForeignCurrencyTransactionFee
+    , cExtendedWarranty
+    , cAnnualRewardMaximum
+    , cIssuerId
+    , cIntroBalanceTransferTerms
+    , cDefaultFees
+    , cAdditionalCardBenefits
+    , cRewardUnit
+    , cBonusRewards
+    , cFlightAccidentInsurance
+    , cRewardPartner
+    , cPurchaseRateType
+
+    -- * Links
+    , Links
+    , links
+    , linNextPageToken
+    , linKind
+    , linItems
+
+    -- * Publisher
+    , Publisher
+    , publisher
+    , pubStatus
+    , pubKind
+    , pubPayoutRank
+    , pubJoinDate
+    , pubClassification
+    , pubName
+    , pubEpcSevenDayAverage
+    , pubItem
+    , pubId
+    , pubEpcNinetyDayAverage
+    , pubSites
+
+    -- * CcOfferRewardsItem
+    , CcOfferRewardsItem
+    , ccOfferRewardsItem
+    , coriAmount
+    , coriExpirationMonths
+    , coriCategory
+    , coriAdditionalDetails
+    , coriMaxRewardTier
+    , coriMinRewardTier
+
+    -- * LinksListRelationshipStatus
+    , LinksListRelationshipStatus (..)
+
+    -- * EventsListStatus
+    , EventsListStatus (..)
+    ) where
+
+import           Network.Google.Affiliates.Types.Product
+import           Network.Google.Affiliates.Types.Sum
+import           Network.Google.Prelude
+
+-- | Default request referring to version 'v1beta1' of the Google Affiliate Network API. This contains the host and root path used as a starting point for constructing service requests.
+affiliatesService :: Service
+affiliatesService
+  = defaultService (ServiceId "gan:v1beta1")
+      "www.googleapis.com"
diff --git a/gen/Network/Google/Affiliates/Types/Product.hs b/gen/Network/Google/Affiliates/Types/Product.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Affiliates/Types/Product.hs
@@ -0,0 +1,2745 @@
+{-# 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.Affiliates.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.Affiliates.Types.Product where
+
+import           Network.Google.Affiliates.Types.Sum
+import           Network.Google.Prelude
+
+-- | An EventResource.
+--
+-- /See:/ 'event' smart constructor.
+data Event = Event
+    { _eModifyDate          :: !(Maybe DateTime')
+    , _eStatus              :: !(Maybe Text)
+    , _eCommissionableSales :: !(Maybe Money)
+    , _eChargeId            :: !(Maybe Text)
+    , _eAdvertiserName      :: !(Maybe Text)
+    , _eChargeType          :: !(Maybe Text)
+    , _eMemberId            :: !(Maybe Text)
+    , _eKind                :: !Text
+    , _eNetworkFee          :: !(Maybe Money)
+    , _eAdvertiserId        :: !(Maybe (Textual Int64))
+    , _eEventDate           :: !(Maybe DateTime')
+    , _eProducts            :: !(Maybe [EventProductsItem])
+    , _ePublisherFee        :: !(Maybe Money)
+    , _eType                :: !(Maybe Text)
+    , _eOrderId             :: !(Maybe Text)
+    , _ePublisherId         :: !(Maybe (Textual Int64))
+    , _eEarnings            :: !(Maybe Money)
+    , _ePublisherName       :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'Event' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'eModifyDate'
+--
+-- * 'eStatus'
+--
+-- * 'eCommissionableSales'
+--
+-- * 'eChargeId'
+--
+-- * 'eAdvertiserName'
+--
+-- * 'eChargeType'
+--
+-- * 'eMemberId'
+--
+-- * 'eKind'
+--
+-- * 'eNetworkFee'
+--
+-- * 'eAdvertiserId'
+--
+-- * 'eEventDate'
+--
+-- * 'eProducts'
+--
+-- * 'ePublisherFee'
+--
+-- * 'eType'
+--
+-- * 'eOrderId'
+--
+-- * 'ePublisherId'
+--
+-- * 'eEarnings'
+--
+-- * 'ePublisherName'
+event
+    :: Event
+event =
+    Event
+    { _eModifyDate = Nothing
+    , _eStatus = Nothing
+    , _eCommissionableSales = Nothing
+    , _eChargeId = Nothing
+    , _eAdvertiserName = Nothing
+    , _eChargeType = Nothing
+    , _eMemberId = Nothing
+    , _eKind = "gan#event"
+    , _eNetworkFee = Nothing
+    , _eAdvertiserId = Nothing
+    , _eEventDate = Nothing
+    , _eProducts = Nothing
+    , _ePublisherFee = Nothing
+    , _eType = Nothing
+    , _eOrderId = Nothing
+    , _ePublisherId = Nothing
+    , _eEarnings = Nothing
+    , _ePublisherName = Nothing
+    }
+
+-- | The date-time this event was last modified as a RFC 3339 date-time
+-- value.
+eModifyDate :: Lens' Event (Maybe UTCTime)
+eModifyDate
+  = lens _eModifyDate (\ s a -> s{_eModifyDate = a}) .
+      mapping _DateTime
+
+-- | Status of the event (active|canceled). Only returned for charge and
+-- conversion events.
+eStatus :: Lens' Event (Maybe Text)
+eStatus = lens _eStatus (\ s a -> s{_eStatus = a})
+
+-- | Amount of money exchanged during the transaction. Only returned for
+-- charge and conversion events.
+eCommissionableSales :: Lens' Event (Maybe Money)
+eCommissionableSales
+  = lens _eCommissionableSales
+      (\ s a -> s{_eCommissionableSales = a})
+
+-- | The charge ID for this event. Only returned for charge events.
+eChargeId :: Lens' Event (Maybe Text)
+eChargeId
+  = lens _eChargeId (\ s a -> s{_eChargeId = a})
+
+-- | The name of the advertiser for this event.
+eAdvertiserName :: Lens' Event (Maybe Text)
+eAdvertiserName
+  = lens _eAdvertiserName
+      (\ s a -> s{_eAdvertiserName = a})
+
+-- | Charge type of the event
+-- (other|slotting_fee|monthly_minimum|tier_bonus|debit|credit). Only
+-- returned for charge events.
+eChargeType :: Lens' Event (Maybe Text)
+eChargeType
+  = lens _eChargeType (\ s a -> s{_eChargeType = a})
+
+-- | The ID of the member attached to this event. Only returned for
+-- conversion events.
+eMemberId :: Lens' Event (Maybe Text)
+eMemberId
+  = lens _eMemberId (\ s a -> s{_eMemberId = a})
+
+-- | The kind for one event.
+eKind :: Lens' Event Text
+eKind = lens _eKind (\ s a -> s{_eKind = a})
+
+-- | Fee that the advertiser paid to the Google Affiliate Network.
+eNetworkFee :: Lens' Event (Maybe Money)
+eNetworkFee
+  = lens _eNetworkFee (\ s a -> s{_eNetworkFee = a})
+
+-- | The ID of advertiser for this event.
+eAdvertiserId :: Lens' Event (Maybe Int64)
+eAdvertiserId
+  = lens _eAdvertiserId
+      (\ s a -> s{_eAdvertiserId = a})
+      . mapping _Coerce
+
+-- | The date-time this event was initiated as a RFC 3339 date-time value.
+eEventDate :: Lens' Event (Maybe UTCTime)
+eEventDate
+  = lens _eEventDate (\ s a -> s{_eEventDate = a}) .
+      mapping _DateTime
+
+-- | Products associated with the event.
+eProducts :: Lens' Event [EventProductsItem]
+eProducts
+  = lens _eProducts (\ s a -> s{_eProducts = a}) .
+      _Default
+      . _Coerce
+
+-- | Fee that the advertiser paid to the publisher.
+ePublisherFee :: Lens' Event (Maybe Money)
+ePublisherFee
+  = lens _ePublisherFee
+      (\ s a -> s{_ePublisherFee = a})
+
+-- | Type of the event (action|transaction|charge).
+eType :: Lens' Event (Maybe Text)
+eType = lens _eType (\ s a -> s{_eType = a})
+
+-- | The order ID for this event. Only returned for conversion events.
+eOrderId :: Lens' Event (Maybe Text)
+eOrderId = lens _eOrderId (\ s a -> s{_eOrderId = a})
+
+-- | The ID of the publisher for this event.
+ePublisherId :: Lens' Event (Maybe Int64)
+ePublisherId
+  = lens _ePublisherId (\ s a -> s{_ePublisherId = a})
+      . mapping _Coerce
+
+-- | Earnings by the publisher.
+eEarnings :: Lens' Event (Maybe Money)
+eEarnings
+  = lens _eEarnings (\ s a -> s{_eEarnings = a})
+
+-- | The name of the publisher for this event.
+ePublisherName :: Lens' Event (Maybe Text)
+ePublisherName
+  = lens _ePublisherName
+      (\ s a -> s{_ePublisherName = a})
+
+instance FromJSON Event where
+        parseJSON
+          = withObject "Event"
+              (\ o ->
+                 Event <$>
+                   (o .:? "modifyDate") <*> (o .:? "status") <*>
+                     (o .:? "commissionableSales")
+                     <*> (o .:? "chargeId")
+                     <*> (o .:? "advertiserName")
+                     <*> (o .:? "chargeType")
+                     <*> (o .:? "memberId")
+                     <*> (o .:? "kind" .!= "gan#event")
+                     <*> (o .:? "networkFee")
+                     <*> (o .:? "advertiserId")
+                     <*> (o .:? "eventDate")
+                     <*> (o .:? "products" .!= mempty)
+                     <*> (o .:? "publisherFee")
+                     <*> (o .:? "type")
+                     <*> (o .:? "orderId")
+                     <*> (o .:? "publisherId")
+                     <*> (o .:? "earnings")
+                     <*> (o .:? "publisherName"))
+
+instance ToJSON Event where
+        toJSON Event{..}
+          = object
+              (catMaybes
+                 [("modifyDate" .=) <$> _eModifyDate,
+                  ("status" .=) <$> _eStatus,
+                  ("commissionableSales" .=) <$> _eCommissionableSales,
+                  ("chargeId" .=) <$> _eChargeId,
+                  ("advertiserName" .=) <$> _eAdvertiserName,
+                  ("chargeType" .=) <$> _eChargeType,
+                  ("memberId" .=) <$> _eMemberId,
+                  Just ("kind" .= _eKind),
+                  ("networkFee" .=) <$> _eNetworkFee,
+                  ("advertiserId" .=) <$> _eAdvertiserId,
+                  ("eventDate" .=) <$> _eEventDate,
+                  ("products" .=) <$> _eProducts,
+                  ("publisherFee" .=) <$> _ePublisherFee,
+                  ("type" .=) <$> _eType, ("orderId" .=) <$> _eOrderId,
+                  ("publisherId" .=) <$> _ePublisherId,
+                  ("earnings" .=) <$> _eEarnings,
+                  ("publisherName" .=) <$> _ePublisherName])
+
+-- | An ApiMoneyProto.
+--
+-- /See:/ 'money' smart constructor.
+data Money = Money
+    { _mAmount       :: !(Maybe (Textual Double))
+    , _mCurrencyCode :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'Money' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'mAmount'
+--
+-- * 'mCurrencyCode'
+money
+    :: Money
+money =
+    Money
+    { _mAmount = Nothing
+    , _mCurrencyCode = Nothing
+    }
+
+-- | The amount of money.
+mAmount :: Lens' Money (Maybe Double)
+mAmount
+  = lens _mAmount (\ s a -> s{_mAmount = a}) .
+      mapping _Coerce
+
+-- | The 3-letter code of the currency in question.
+mCurrencyCode :: Lens' Money (Maybe Text)
+mCurrencyCode
+  = lens _mCurrencyCode
+      (\ s a -> s{_mCurrencyCode = a})
+
+instance FromJSON Money where
+        parseJSON
+          = withObject "Money"
+              (\ o ->
+                 Money <$>
+                   (o .:? "amount") <*> (o .:? "currencyCode"))
+
+instance ToJSON Money where
+        toJSON Money{..}
+          = object
+              (catMaybes
+                 [("amount" .=) <$> _mAmount,
+                  ("currencyCode" .=) <$> _mCurrencyCode])
+
+-- | A LinkResource.
+--
+-- /See:/ 'link' smart constructor.
+data Link = Link
+    { _lAuthorship            :: !(Maybe Text)
+    , _lDestinationURL        :: !(Maybe Text)
+    , _lClickTrackingURL      :: !(Maybe Text)
+    , _lCreateDate            :: !(Maybe DateTime')
+    , _lKind                  :: !Text
+    , _lAdvertiserId          :: !(Maybe (Textual Int64))
+    , _lEndDate               :: !(Maybe DateTime')
+    , _lImageAltText          :: !(Maybe Text)
+    , _lPromotionType         :: !(Maybe Text)
+    , _lAvailability          :: !(Maybe Text)
+    , _lStartDate             :: !(Maybe DateTime')
+    , _lName                  :: !(Maybe Text)
+    , _lImpressionTrackingURL :: !(Maybe Text)
+    , _lSpecialOffers         :: !(Maybe LinkSpecialOffers)
+    , _lEpcSevenDayAverage    :: !(Maybe Money)
+    , _lId                    :: !(Maybe (Textual Int64))
+    , _lEpcNinetyDayAverage   :: !(Maybe Money)
+    , _lLinkType              :: !(Maybe Text)
+    , _lIsActive              :: !(Maybe Bool)
+    , _lDuration              :: !(Maybe Text)
+    , _lDescription           :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'Link' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'lAuthorship'
+--
+-- * 'lDestinationURL'
+--
+-- * 'lClickTrackingURL'
+--
+-- * 'lCreateDate'
+--
+-- * 'lKind'
+--
+-- * 'lAdvertiserId'
+--
+-- * 'lEndDate'
+--
+-- * 'lImageAltText'
+--
+-- * 'lPromotionType'
+--
+-- * 'lAvailability'
+--
+-- * 'lStartDate'
+--
+-- * 'lName'
+--
+-- * 'lImpressionTrackingURL'
+--
+-- * 'lSpecialOffers'
+--
+-- * 'lEpcSevenDayAverage'
+--
+-- * 'lId'
+--
+-- * 'lEpcNinetyDayAverage'
+--
+-- * 'lLinkType'
+--
+-- * 'lIsActive'
+--
+-- * 'lDuration'
+--
+-- * 'lDescription'
+link
+    :: Link
+link =
+    Link
+    { _lAuthorship = Nothing
+    , _lDestinationURL = Nothing
+    , _lClickTrackingURL = Nothing
+    , _lCreateDate = Nothing
+    , _lKind = "gan#link"
+    , _lAdvertiserId = Nothing
+    , _lEndDate = Nothing
+    , _lImageAltText = Nothing
+    , _lPromotionType = Nothing
+    , _lAvailability = Nothing
+    , _lStartDate = Nothing
+    , _lName = Nothing
+    , _lImpressionTrackingURL = Nothing
+    , _lSpecialOffers = Nothing
+    , _lEpcSevenDayAverage = Nothing
+    , _lId = Nothing
+    , _lEpcNinetyDayAverage = Nothing
+    , _lLinkType = Nothing
+    , _lIsActive = Nothing
+    , _lDuration = Nothing
+    , _lDescription = Nothing
+    }
+
+-- | Authorship
+lAuthorship :: Lens' Link (Maybe Text)
+lAuthorship
+  = lens _lAuthorship (\ s a -> s{_lAuthorship = a})
+
+-- | The destination URL for the link.
+lDestinationURL :: Lens' Link (Maybe Text)
+lDestinationURL
+  = lens _lDestinationURL
+      (\ s a -> s{_lDestinationURL = a})
+
+-- | Tracking url for clicks.
+lClickTrackingURL :: Lens' Link (Maybe Text)
+lClickTrackingURL
+  = lens _lClickTrackingURL
+      (\ s a -> s{_lClickTrackingURL = a})
+
+-- | Date that this link was created.
+lCreateDate :: Lens' Link (Maybe UTCTime)
+lCreateDate
+  = lens _lCreateDate (\ s a -> s{_lCreateDate = a}) .
+      mapping _DateTime
+
+-- | The kind for one entity.
+lKind :: Lens' Link Text
+lKind = lens _lKind (\ s a -> s{_lKind = a})
+
+-- | The advertiser id for the advertiser who owns this link.
+lAdvertiserId :: Lens' Link (Maybe Int64)
+lAdvertiserId
+  = lens _lAdvertiserId
+      (\ s a -> s{_lAdvertiserId = a})
+      . mapping _Coerce
+
+-- | Date that this link becomes inactive.
+lEndDate :: Lens' Link (Maybe UTCTime)
+lEndDate
+  = lens _lEndDate (\ s a -> s{_lEndDate = a}) .
+      mapping _DateTime
+
+-- | image alt text.
+lImageAltText :: Lens' Link (Maybe Text)
+lImageAltText
+  = lens _lImageAltText
+      (\ s a -> s{_lImageAltText = a})
+
+-- | Promotion Type
+lPromotionType :: Lens' Link (Maybe Text)
+lPromotionType
+  = lens _lPromotionType
+      (\ s a -> s{_lPromotionType = a})
+
+-- | Availability.
+lAvailability :: Lens' Link (Maybe Text)
+lAvailability
+  = lens _lAvailability
+      (\ s a -> s{_lAvailability = a})
+
+-- | Date that this link becomes active.
+lStartDate :: Lens' Link (Maybe UTCTime)
+lStartDate
+  = lens _lStartDate (\ s a -> s{_lStartDate = a}) .
+      mapping _DateTime
+
+-- | The logical name for this link.
+lName :: Lens' Link (Maybe Text)
+lName = lens _lName (\ s a -> s{_lName = a})
+
+-- | Tracking url for impressions.
+lImpressionTrackingURL :: Lens' Link (Maybe Text)
+lImpressionTrackingURL
+  = lens _lImpressionTrackingURL
+      (\ s a -> s{_lImpressionTrackingURL = a})
+
+-- | Special offers on the link.
+lSpecialOffers :: Lens' Link (Maybe LinkSpecialOffers)
+lSpecialOffers
+  = lens _lSpecialOffers
+      (\ s a -> s{_lSpecialOffers = a})
+
+-- | The sum of fees paid to publishers divided by the total number of clicks
+-- over the past seven days on this link. This value should be multiplied
+-- by 100 at the time of display.
+lEpcSevenDayAverage :: Lens' Link (Maybe Money)
+lEpcSevenDayAverage
+  = lens _lEpcSevenDayAverage
+      (\ s a -> s{_lEpcSevenDayAverage = a})
+
+-- | The ID of this link.
+lId :: Lens' Link (Maybe Int64)
+lId
+  = lens _lId (\ s a -> s{_lId = a}) . mapping _Coerce
+
+-- | The sum of fees paid to publishers divided by the total number of clicks
+-- over the past three months on this link. This value should be multiplied
+-- by 100 at the time of display.
+lEpcNinetyDayAverage :: Lens' Link (Maybe Money)
+lEpcNinetyDayAverage
+  = lens _lEpcNinetyDayAverage
+      (\ s a -> s{_lEpcNinetyDayAverage = a})
+
+-- | The link type.
+lLinkType :: Lens' Link (Maybe Text)
+lLinkType
+  = lens _lLinkType (\ s a -> s{_lLinkType = a})
+
+-- | Flag for if this link is active.
+lIsActive :: Lens' Link (Maybe Bool)
+lIsActive
+  = lens _lIsActive (\ s a -> s{_lIsActive = a})
+
+-- | Duration
+lDuration :: Lens' Link (Maybe Text)
+lDuration
+  = lens _lDuration (\ s a -> s{_lDuration = a})
+
+-- | Description.
+lDescription :: Lens' Link (Maybe Text)
+lDescription
+  = lens _lDescription (\ s a -> s{_lDescription = a})
+
+instance FromJSON Link where
+        parseJSON
+          = withObject "Link"
+              (\ o ->
+                 Link <$>
+                   (o .:? "authorship") <*> (o .:? "destinationUrl") <*>
+                     (o .:? "clickTrackingUrl")
+                     <*> (o .:? "createDate")
+                     <*> (o .:? "kind" .!= "gan#link")
+                     <*> (o .:? "advertiserId")
+                     <*> (o .:? "endDate")
+                     <*> (o .:? "imageAltText")
+                     <*> (o .:? "promotionType")
+                     <*> (o .:? "availability")
+                     <*> (o .:? "startDate")
+                     <*> (o .:? "name")
+                     <*> (o .:? "impressionTrackingUrl")
+                     <*> (o .:? "specialOffers")
+                     <*> (o .:? "epcSevenDayAverage")
+                     <*> (o .:? "id")
+                     <*> (o .:? "epcNinetyDayAverage")
+                     <*> (o .:? "linkType")
+                     <*> (o .:? "isActive")
+                     <*> (o .:? "duration")
+                     <*> (o .:? "description"))
+
+instance ToJSON Link where
+        toJSON Link{..}
+          = object
+              (catMaybes
+                 [("authorship" .=) <$> _lAuthorship,
+                  ("destinationUrl" .=) <$> _lDestinationURL,
+                  ("clickTrackingUrl" .=) <$> _lClickTrackingURL,
+                  ("createDate" .=) <$> _lCreateDate,
+                  Just ("kind" .= _lKind),
+                  ("advertiserId" .=) <$> _lAdvertiserId,
+                  ("endDate" .=) <$> _lEndDate,
+                  ("imageAltText" .=) <$> _lImageAltText,
+                  ("promotionType" .=) <$> _lPromotionType,
+                  ("availability" .=) <$> _lAvailability,
+                  ("startDate" .=) <$> _lStartDate,
+                  ("name" .=) <$> _lName,
+                  ("impressionTrackingUrl" .=) <$>
+                    _lImpressionTrackingURL,
+                  ("specialOffers" .=) <$> _lSpecialOffers,
+                  ("epcSevenDayAverage" .=) <$> _lEpcSevenDayAverage,
+                  ("id" .=) <$> _lId,
+                  ("epcNinetyDayAverage" .=) <$> _lEpcNinetyDayAverage,
+                  ("linkType" .=) <$> _lLinkType,
+                  ("isActive" .=) <$> _lIsActive,
+                  ("duration" .=) <$> _lDuration,
+                  ("description" .=) <$> _lDescription])
+
+--
+-- /See:/ 'ccOffers' smart constructor.
+data CcOffers = CcOffers
+    { _coKind  :: !Text
+    , _coItems :: !(Maybe [CcOffer])
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'CcOffers' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'coKind'
+--
+-- * 'coItems'
+ccOffers
+    :: CcOffers
+ccOffers =
+    CcOffers
+    { _coKind = "gan#ccOffers"
+    , _coItems = Nothing
+    }
+
+-- | The kind for a page of credit card offers.
+coKind :: Lens' CcOffers Text
+coKind = lens _coKind (\ s a -> s{_coKind = a})
+
+-- | The credit card offers.
+coItems :: Lens' CcOffers [CcOffer]
+coItems
+  = lens _coItems (\ s a -> s{_coItems = a}) . _Default
+      . _Coerce
+
+instance FromJSON CcOffers where
+        parseJSON
+          = withObject "CcOffers"
+              (\ o ->
+                 CcOffers <$>
+                   (o .:? "kind" .!= "gan#ccOffers") <*>
+                     (o .:? "items" .!= mempty))
+
+instance ToJSON CcOffers where
+        toJSON CcOffers{..}
+          = object
+              (catMaybes
+                 [Just ("kind" .= _coKind),
+                  ("items" .=) <$> _coItems])
+
+--
+-- /See:/ 'ccOfferDefaultFeesItem' smart constructor.
+data CcOfferDefaultFeesItem = CcOfferDefaultFeesItem
+    { _codfiRateType :: !(Maybe Text)
+    , _codfiMinRate  :: !(Maybe (Textual Double))
+    , _codfiCategory :: !(Maybe Text)
+    , _codfiMaxRate  :: !(Maybe (Textual Double))
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'CcOfferDefaultFeesItem' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'codfiRateType'
+--
+-- * 'codfiMinRate'
+--
+-- * 'codfiCategory'
+--
+-- * 'codfiMaxRate'
+ccOfferDefaultFeesItem
+    :: CcOfferDefaultFeesItem
+ccOfferDefaultFeesItem =
+    CcOfferDefaultFeesItem
+    { _codfiRateType = Nothing
+    , _codfiMinRate = Nothing
+    , _codfiCategory = Nothing
+    , _codfiMaxRate = Nothing
+    }
+
+-- | Fixed or variable.
+codfiRateType :: Lens' CcOfferDefaultFeesItem (Maybe Text)
+codfiRateType
+  = lens _codfiRateType
+      (\ s a -> s{_codfiRateType = a})
+
+-- | The lowest rate the issuer may charge for defaulting on debt in this
+-- category. Expressed as an absolute number, not as a percentage.
+codfiMinRate :: Lens' CcOfferDefaultFeesItem (Maybe Double)
+codfiMinRate
+  = lens _codfiMinRate (\ s a -> s{_codfiMinRate = a})
+      . mapping _Coerce
+
+-- | The type of charge, for example Purchases.
+codfiCategory :: Lens' CcOfferDefaultFeesItem (Maybe Text)
+codfiCategory
+  = lens _codfiCategory
+      (\ s a -> s{_codfiCategory = a})
+
+-- | The highest rate the issuer may charge for defaulting on debt in this
+-- category. Expressed as an absolute number, not as a percentage.
+codfiMaxRate :: Lens' CcOfferDefaultFeesItem (Maybe Double)
+codfiMaxRate
+  = lens _codfiMaxRate (\ s a -> s{_codfiMaxRate = a})
+      . mapping _Coerce
+
+instance FromJSON CcOfferDefaultFeesItem where
+        parseJSON
+          = withObject "CcOfferDefaultFeesItem"
+              (\ o ->
+                 CcOfferDefaultFeesItem <$>
+                   (o .:? "rateType") <*> (o .:? "minRate") <*>
+                     (o .:? "category")
+                     <*> (o .:? "maxRate"))
+
+instance ToJSON CcOfferDefaultFeesItem where
+        toJSON CcOfferDefaultFeesItem{..}
+          = object
+              (catMaybes
+                 [("rateType" .=) <$> _codfiRateType,
+                  ("minRate" .=) <$> _codfiMinRate,
+                  ("category" .=) <$> _codfiCategory,
+                  ("maxRate" .=) <$> _codfiMaxRate])
+
+-- | A ReportResource representing a report of a certain type either for an
+-- advertiser or publisher.
+--
+-- /See:/ 'report' smart constructor.
+data Report = Report
+    { _rEndDate          :: !(Maybe Text)
+    , _rTotalsRows       :: !(Maybe [[JSONValue]])
+    , _rKind             :: !Text
+    , _rStartDate        :: !(Maybe Text)
+    , _rRows             :: !(Maybe [[JSONValue]])
+    , _rMatchingRowCount :: !(Maybe (Textual Int64))
+    , _rColumnNames      :: !(Maybe [Text])
+    , _rType             :: !(Maybe Text)
+    } 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:
+--
+-- * 'rEndDate'
+--
+-- * 'rTotalsRows'
+--
+-- * 'rKind'
+--
+-- * 'rStartDate'
+--
+-- * 'rRows'
+--
+-- * 'rMatchingRowCount'
+--
+-- * 'rColumnNames'
+--
+-- * 'rType'
+report
+    :: Report
+report =
+    Report
+    { _rEndDate = Nothing
+    , _rTotalsRows = Nothing
+    , _rKind = "gan#report"
+    , _rStartDate = Nothing
+    , _rRows = Nothing
+    , _rMatchingRowCount = Nothing
+    , _rColumnNames = Nothing
+    , _rType = Nothing
+    }
+
+-- | The end of the date range for this report, exclusive.
+rEndDate :: Lens' Report (Maybe Text)
+rEndDate = lens _rEndDate (\ s a -> s{_rEndDate = a})
+
+-- | The totals rows for the report
+rTotalsRows :: Lens' Report [[JSONValue]]
+rTotalsRows
+  = lens _rTotalsRows (\ s a -> s{_rTotalsRows = a}) .
+      _Default
+      . _Coerce
+
+-- | The kind for a report.
+rKind :: Lens' Report Text
+rKind = lens _rKind (\ s a -> s{_rKind = a})
+
+-- | The start of the date range for this report, inclusive.
+rStartDate :: Lens' Report (Maybe Text)
+rStartDate
+  = lens _rStartDate (\ s a -> s{_rStartDate = a})
+
+-- | The rows of data for the report
+rRows :: Lens' Report [[JSONValue]]
+rRows
+  = lens _rRows (\ s a -> s{_rRows = a}) . _Default .
+      _Coerce
+
+-- | The number of matching rows before paging is applied.
+rMatchingRowCount :: Lens' Report (Maybe Int64)
+rMatchingRowCount
+  = lens _rMatchingRowCount
+      (\ s a -> s{_rMatchingRowCount = a})
+      . mapping _Coerce
+
+-- | The column names for the report
+rColumnNames :: Lens' Report [Text]
+rColumnNames
+  = lens _rColumnNames (\ s a -> s{_rColumnNames = a})
+      . _Default
+      . _Coerce
+
+-- | The report type.
+rType :: Lens' Report (Maybe Text)
+rType = lens _rType (\ s a -> s{_rType = a})
+
+instance FromJSON Report where
+        parseJSON
+          = withObject "Report"
+              (\ o ->
+                 Report <$>
+                   (o .:? "end_date") <*>
+                     (o .:? "totals_rows" .!= mempty)
+                     <*> (o .:? "kind" .!= "gan#report")
+                     <*> (o .:? "start_date")
+                     <*> (o .:? "rows" .!= mempty)
+                     <*> (o .:? "matching_row_count")
+                     <*> (o .:? "column_names" .!= mempty)
+                     <*> (o .:? "type"))
+
+instance ToJSON Report where
+        toJSON Report{..}
+          = object
+              (catMaybes
+                 [("end_date" .=) <$> _rEndDate,
+                  ("totals_rows" .=) <$> _rTotalsRows,
+                  Just ("kind" .= _rKind),
+                  ("start_date" .=) <$> _rStartDate,
+                  ("rows" .=) <$> _rRows,
+                  ("matching_row_count" .=) <$> _rMatchingRowCount,
+                  ("column_names" .=) <$> _rColumnNames,
+                  ("type" .=) <$> _rType])
+
+--
+-- /See:/ 'advertisers' smart constructor.
+data Advertisers = Advertisers
+    { _aNextPageToken :: !(Maybe Text)
+    , _aKind          :: !Text
+    , _aItems         :: !(Maybe [Advertiser])
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'Advertisers' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'aNextPageToken'
+--
+-- * 'aKind'
+--
+-- * 'aItems'
+advertisers
+    :: Advertisers
+advertisers =
+    Advertisers
+    { _aNextPageToken = Nothing
+    , _aKind = "gan#advertisers"
+    , _aItems = Nothing
+    }
+
+-- | The \'pageToken\' to pass to the next request to get the next page, if
+-- there are more to retrieve.
+aNextPageToken :: Lens' Advertisers (Maybe Text)
+aNextPageToken
+  = lens _aNextPageToken
+      (\ s a -> s{_aNextPageToken = a})
+
+-- | The kind for a page of advertisers.
+aKind :: Lens' Advertisers Text
+aKind = lens _aKind (\ s a -> s{_aKind = a})
+
+-- | The advertiser list.
+aItems :: Lens' Advertisers [Advertiser]
+aItems
+  = lens _aItems (\ s a -> s{_aItems = a}) . _Default .
+      _Coerce
+
+instance FromJSON Advertisers where
+        parseJSON
+          = withObject "Advertisers"
+              (\ o ->
+                 Advertisers <$>
+                   (o .:? "nextPageToken") <*>
+                     (o .:? "kind" .!= "gan#advertisers")
+                     <*> (o .:? "items" .!= mempty))
+
+instance ToJSON Advertisers where
+        toJSON Advertisers{..}
+          = object
+              (catMaybes
+                 [("nextPageToken" .=) <$> _aNextPageToken,
+                  Just ("kind" .= _aKind), ("items" .=) <$> _aItems])
+
+--
+-- /See:/ 'eventProductsItem' smart constructor.
+data EventProductsItem = EventProductsItem
+    { _epiSKUName      :: !(Maybe Text)
+    , _epiNetworkFee   :: !(Maybe Money)
+    , _epiQuantity     :: !(Maybe (Textual Int64))
+    , _epiCategoryName :: !(Maybe Text)
+    , _epiCategoryId   :: !(Maybe Text)
+    , _epiSKU          :: !(Maybe Text)
+    , _epiPublisherFee :: !(Maybe Money)
+    , _epiUnitPrice    :: !(Maybe Money)
+    , _epiEarnings     :: !(Maybe Money)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'EventProductsItem' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'epiSKUName'
+--
+-- * 'epiNetworkFee'
+--
+-- * 'epiQuantity'
+--
+-- * 'epiCategoryName'
+--
+-- * 'epiCategoryId'
+--
+-- * 'epiSKU'
+--
+-- * 'epiPublisherFee'
+--
+-- * 'epiUnitPrice'
+--
+-- * 'epiEarnings'
+eventProductsItem
+    :: EventProductsItem
+eventProductsItem =
+    EventProductsItem
+    { _epiSKUName = Nothing
+    , _epiNetworkFee = Nothing
+    , _epiQuantity = Nothing
+    , _epiCategoryName = Nothing
+    , _epiCategoryId = Nothing
+    , _epiSKU = Nothing
+    , _epiPublisherFee = Nothing
+    , _epiUnitPrice = Nothing
+    , _epiEarnings = Nothing
+    }
+
+-- | Sku name of this product.
+epiSKUName :: Lens' EventProductsItem (Maybe Text)
+epiSKUName
+  = lens _epiSKUName (\ s a -> s{_epiSKUName = a})
+
+-- | Fee that the advertiser paid to the Google Affiliate Network for this
+-- product.
+epiNetworkFee :: Lens' EventProductsItem (Maybe Money)
+epiNetworkFee
+  = lens _epiNetworkFee
+      (\ s a -> s{_epiNetworkFee = a})
+
+-- | Quantity of this product bought\/exchanged.
+epiQuantity :: Lens' EventProductsItem (Maybe Int64)
+epiQuantity
+  = lens _epiQuantity (\ s a -> s{_epiQuantity = a}) .
+      mapping _Coerce
+
+-- | Name of the category this product belongs to.
+epiCategoryName :: Lens' EventProductsItem (Maybe Text)
+epiCategoryName
+  = lens _epiCategoryName
+      (\ s a -> s{_epiCategoryName = a})
+
+-- | Id of the category this product belongs to.
+epiCategoryId :: Lens' EventProductsItem (Maybe Text)
+epiCategoryId
+  = lens _epiCategoryId
+      (\ s a -> s{_epiCategoryId = a})
+
+-- | Sku of this product.
+epiSKU :: Lens' EventProductsItem (Maybe Text)
+epiSKU = lens _epiSKU (\ s a -> s{_epiSKU = a})
+
+-- | Fee that the advertiser paid to the publisehr for this product.
+epiPublisherFee :: Lens' EventProductsItem (Maybe Money)
+epiPublisherFee
+  = lens _epiPublisherFee
+      (\ s a -> s{_epiPublisherFee = a})
+
+-- | Price per unit of this product.
+epiUnitPrice :: Lens' EventProductsItem (Maybe Money)
+epiUnitPrice
+  = lens _epiUnitPrice (\ s a -> s{_epiUnitPrice = a})
+
+-- | Amount earned by the publisher on this product.
+epiEarnings :: Lens' EventProductsItem (Maybe Money)
+epiEarnings
+  = lens _epiEarnings (\ s a -> s{_epiEarnings = a})
+
+instance FromJSON EventProductsItem where
+        parseJSON
+          = withObject "EventProductsItem"
+              (\ o ->
+                 EventProductsItem <$>
+                   (o .:? "skuName") <*> (o .:? "networkFee") <*>
+                     (o .:? "quantity")
+                     <*> (o .:? "categoryName")
+                     <*> (o .:? "categoryId")
+                     <*> (o .:? "sku")
+                     <*> (o .:? "publisherFee")
+                     <*> (o .:? "unitPrice")
+                     <*> (o .:? "earnings"))
+
+instance ToJSON EventProductsItem where
+        toJSON EventProductsItem{..}
+          = object
+              (catMaybes
+                 [("skuName" .=) <$> _epiSKUName,
+                  ("networkFee" .=) <$> _epiNetworkFee,
+                  ("quantity" .=) <$> _epiQuantity,
+                  ("categoryName" .=) <$> _epiCategoryName,
+                  ("categoryId" .=) <$> _epiCategoryId,
+                  ("sku" .=) <$> _epiSKU,
+                  ("publisherFee" .=) <$> _epiPublisherFee,
+                  ("unitPrice" .=) <$> _epiUnitPrice,
+                  ("earnings" .=) <$> _epiEarnings])
+
+--
+-- /See:/ 'ccOfferBonusRewardsItem' smart constructor.
+data CcOfferBonusRewardsItem = CcOfferBonusRewardsItem
+    { _cobriAmount  :: !(Maybe (Textual Double))
+    , _cobriDetails :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'CcOfferBonusRewardsItem' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'cobriAmount'
+--
+-- * 'cobriDetails'
+ccOfferBonusRewardsItem
+    :: CcOfferBonusRewardsItem
+ccOfferBonusRewardsItem =
+    CcOfferBonusRewardsItem
+    { _cobriAmount = Nothing
+    , _cobriDetails = Nothing
+    }
+
+-- | How many units of reward will be granted.
+cobriAmount :: Lens' CcOfferBonusRewardsItem (Maybe Double)
+cobriAmount
+  = lens _cobriAmount (\ s a -> s{_cobriAmount = a}) .
+      mapping _Coerce
+
+-- | The circumstances under which this rule applies, for example, booking a
+-- flight via Orbitz.
+cobriDetails :: Lens' CcOfferBonusRewardsItem (Maybe Text)
+cobriDetails
+  = lens _cobriDetails (\ s a -> s{_cobriDetails = a})
+
+instance FromJSON CcOfferBonusRewardsItem where
+        parseJSON
+          = withObject "CcOfferBonusRewardsItem"
+              (\ o ->
+                 CcOfferBonusRewardsItem <$>
+                   (o .:? "amount") <*> (o .:? "details"))
+
+instance ToJSON CcOfferBonusRewardsItem where
+        toJSON CcOfferBonusRewardsItem{..}
+          = object
+              (catMaybes
+                 [("amount" .=) <$> _cobriAmount,
+                  ("details" .=) <$> _cobriDetails])
+
+--
+-- /See:/ 'events' smart constructor.
+data Events = Events
+    { _eveNextPageToken :: !(Maybe Text)
+    , _eveKind          :: !Text
+    , _eveItems         :: !(Maybe [Event])
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'Events' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'eveNextPageToken'
+--
+-- * 'eveKind'
+--
+-- * 'eveItems'
+events
+    :: Events
+events =
+    Events
+    { _eveNextPageToken = Nothing
+    , _eveKind = "gan#events"
+    , _eveItems = Nothing
+    }
+
+-- | The \'pageToken\' to pass to the next request to get the next page, if
+-- there are more to retrieve.
+eveNextPageToken :: Lens' Events (Maybe Text)
+eveNextPageToken
+  = lens _eveNextPageToken
+      (\ s a -> s{_eveNextPageToken = a})
+
+-- | The kind for a page of events.
+eveKind :: Lens' Events Text
+eveKind = lens _eveKind (\ s a -> s{_eveKind = a})
+
+-- | The event list.
+eveItems :: Lens' Events [Event]
+eveItems
+  = lens _eveItems (\ s a -> s{_eveItems = a}) .
+      _Default
+      . _Coerce
+
+instance FromJSON Events where
+        parseJSON
+          = withObject "Events"
+              (\ o ->
+                 Events <$>
+                   (o .:? "nextPageToken") <*>
+                     (o .:? "kind" .!= "gan#events")
+                     <*> (o .:? "items" .!= mempty))
+
+instance ToJSON Events where
+        toJSON Events{..}
+          = object
+              (catMaybes
+                 [("nextPageToken" .=) <$> _eveNextPageToken,
+                  Just ("kind" .= _eveKind),
+                  ("items" .=) <$> _eveItems])
+
+-- | Special offers on the link.
+--
+-- /See:/ 'linkSpecialOffers' smart constructor.
+data LinkSpecialOffers = LinkSpecialOffers
+    { _lsoFreeShippingMin :: !(Maybe Money)
+    , _lsoPercentOff      :: !(Maybe (Textual Double))
+    , _lsoPriceCut        :: !(Maybe Money)
+    , _lsoPriceCutMin     :: !(Maybe Money)
+    , _lsoPercentOffMin   :: !(Maybe Money)
+    , _lsoFreeShipping    :: !(Maybe Bool)
+    , _lsoPromotionCodes  :: !(Maybe [Text])
+    , _lsoFreeGift        :: !(Maybe Bool)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'LinkSpecialOffers' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'lsoFreeShippingMin'
+--
+-- * 'lsoPercentOff'
+--
+-- * 'lsoPriceCut'
+--
+-- * 'lsoPriceCutMin'
+--
+-- * 'lsoPercentOffMin'
+--
+-- * 'lsoFreeShipping'
+--
+-- * 'lsoPromotionCodes'
+--
+-- * 'lsoFreeGift'
+linkSpecialOffers
+    :: LinkSpecialOffers
+linkSpecialOffers =
+    LinkSpecialOffers
+    { _lsoFreeShippingMin = Nothing
+    , _lsoPercentOff = Nothing
+    , _lsoPriceCut = Nothing
+    , _lsoPriceCutMin = Nothing
+    , _lsoPercentOffMin = Nothing
+    , _lsoFreeShipping = Nothing
+    , _lsoPromotionCodes = Nothing
+    , _lsoFreeGift = Nothing
+    }
+
+-- | Minimum purchase amount for free shipping promotion
+lsoFreeShippingMin :: Lens' LinkSpecialOffers (Maybe Money)
+lsoFreeShippingMin
+  = lens _lsoFreeShippingMin
+      (\ s a -> s{_lsoFreeShippingMin = a})
+
+-- | Percent off on the purchase
+lsoPercentOff :: Lens' LinkSpecialOffers (Maybe Double)
+lsoPercentOff
+  = lens _lsoPercentOff
+      (\ s a -> s{_lsoPercentOff = a})
+      . mapping _Coerce
+
+-- | Price cut on the purchase
+lsoPriceCut :: Lens' LinkSpecialOffers (Maybe Money)
+lsoPriceCut
+  = lens _lsoPriceCut (\ s a -> s{_lsoPriceCut = a})
+
+-- | Minimum purchase amount for price cut promotion
+lsoPriceCutMin :: Lens' LinkSpecialOffers (Maybe Money)
+lsoPriceCutMin
+  = lens _lsoPriceCutMin
+      (\ s a -> s{_lsoPriceCutMin = a})
+
+-- | Minimum purchase amount for percent off promotion
+lsoPercentOffMin :: Lens' LinkSpecialOffers (Maybe Money)
+lsoPercentOffMin
+  = lens _lsoPercentOffMin
+      (\ s a -> s{_lsoPercentOffMin = a})
+
+-- | Whether there is free shipping
+lsoFreeShipping :: Lens' LinkSpecialOffers (Maybe Bool)
+lsoFreeShipping
+  = lens _lsoFreeShipping
+      (\ s a -> s{_lsoFreeShipping = a})
+
+-- | List of promotion code associated with the link
+lsoPromotionCodes :: Lens' LinkSpecialOffers [Text]
+lsoPromotionCodes
+  = lens _lsoPromotionCodes
+      (\ s a -> s{_lsoPromotionCodes = a})
+      . _Default
+      . _Coerce
+
+-- | Whether there is a free gift
+lsoFreeGift :: Lens' LinkSpecialOffers (Maybe Bool)
+lsoFreeGift
+  = lens _lsoFreeGift (\ s a -> s{_lsoFreeGift = a})
+
+instance FromJSON LinkSpecialOffers where
+        parseJSON
+          = withObject "LinkSpecialOffers"
+              (\ o ->
+                 LinkSpecialOffers <$>
+                   (o .:? "freeShippingMin") <*> (o .:? "percentOff")
+                     <*> (o .:? "priceCut")
+                     <*> (o .:? "priceCutMin")
+                     <*> (o .:? "percentOffMin")
+                     <*> (o .:? "freeShipping")
+                     <*> (o .:? "promotionCodes" .!= mempty)
+                     <*> (o .:? "freeGift"))
+
+instance ToJSON LinkSpecialOffers where
+        toJSON LinkSpecialOffers{..}
+          = object
+              (catMaybes
+                 [("freeShippingMin" .=) <$> _lsoFreeShippingMin,
+                  ("percentOff" .=) <$> _lsoPercentOff,
+                  ("priceCut" .=) <$> _lsoPriceCut,
+                  ("priceCutMin" .=) <$> _lsoPriceCutMin,
+                  ("percentOffMin" .=) <$> _lsoPercentOffMin,
+                  ("freeShipping" .=) <$> _lsoFreeShipping,
+                  ("promotionCodes" .=) <$> _lsoPromotionCodes,
+                  ("freeGift" .=) <$> _lsoFreeGift])
+
+--
+-- /See:/ 'publishers' smart constructor.
+data Publishers = Publishers
+    { _pNextPageToken :: !(Maybe Text)
+    , _pKind          :: !Text
+    , _pItems         :: !(Maybe [Publisher])
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'Publishers' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'pNextPageToken'
+--
+-- * 'pKind'
+--
+-- * 'pItems'
+publishers
+    :: Publishers
+publishers =
+    Publishers
+    { _pNextPageToken = Nothing
+    , _pKind = "gan#publishers"
+    , _pItems = Nothing
+    }
+
+-- | The \'pageToken\' to pass to the next request to get the next page, if
+-- there are more to retrieve.
+pNextPageToken :: Lens' Publishers (Maybe Text)
+pNextPageToken
+  = lens _pNextPageToken
+      (\ s a -> s{_pNextPageToken = a})
+
+-- | The kind for a page of entities.
+pKind :: Lens' Publishers Text
+pKind = lens _pKind (\ s a -> s{_pKind = a})
+
+-- | The entity list.
+pItems :: Lens' Publishers [Publisher]
+pItems
+  = lens _pItems (\ s a -> s{_pItems = a}) . _Default .
+      _Coerce
+
+instance FromJSON Publishers where
+        parseJSON
+          = withObject "Publishers"
+              (\ o ->
+                 Publishers <$>
+                   (o .:? "nextPageToken") <*>
+                     (o .:? "kind" .!= "gan#publishers")
+                     <*> (o .:? "items" .!= mempty))
+
+instance ToJSON Publishers where
+        toJSON Publishers{..}
+          = object
+              (catMaybes
+                 [("nextPageToken" .=) <$> _pNextPageToken,
+                  Just ("kind" .= _pKind), ("items" .=) <$> _pItems])
+
+-- | An AdvertiserResource.
+--
+-- /See:/ 'advertiser' smart constructor.
+data Advertiser = Advertiser
+    { _advAllowPublisherCreatedLinks :: !(Maybe Bool)
+    , _advContactPhone               :: !(Maybe Text)
+    , _advContactEmail               :: !(Maybe Text)
+    , _advStatus                     :: !(Maybe Text)
+    , _advLogoURL                    :: !(Maybe Text)
+    , _advKind                       :: !Text
+    , _advCategory                   :: !(Maybe Text)
+    , _advSiteURL                    :: !(Maybe Text)
+    , _advPayoutRank                 :: !(Maybe Text)
+    , _advJoinDate                   :: !(Maybe DateTime')
+    , _advDefaultLinkId              :: !(Maybe (Textual Int64))
+    , _advRedirectDomains            :: !(Maybe [Text])
+    , _advName                       :: !(Maybe Text)
+    , _advProductFeedsEnabled        :: !(Maybe Bool)
+    , _advMerchantCenterIds          :: !(Maybe [Textual Int64])
+    , _advEpcSevenDayAverage         :: !(Maybe Money)
+    , _advItem                       :: !(Maybe Advertiser)
+    , _advId                         :: !(Maybe (Textual Int64))
+    , _advEpcNinetyDayAverage        :: !(Maybe Money)
+    , _advCommissionDuration         :: !(Maybe (Textual Int32))
+    , _advDescription                :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'Advertiser' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'advAllowPublisherCreatedLinks'
+--
+-- * 'advContactPhone'
+--
+-- * 'advContactEmail'
+--
+-- * 'advStatus'
+--
+-- * 'advLogoURL'
+--
+-- * 'advKind'
+--
+-- * 'advCategory'
+--
+-- * 'advSiteURL'
+--
+-- * 'advPayoutRank'
+--
+-- * 'advJoinDate'
+--
+-- * 'advDefaultLinkId'
+--
+-- * 'advRedirectDomains'
+--
+-- * 'advName'
+--
+-- * 'advProductFeedsEnabled'
+--
+-- * 'advMerchantCenterIds'
+--
+-- * 'advEpcSevenDayAverage'
+--
+-- * 'advItem'
+--
+-- * 'advId'
+--
+-- * 'advEpcNinetyDayAverage'
+--
+-- * 'advCommissionDuration'
+--
+-- * 'advDescription'
+advertiser
+    :: Advertiser
+advertiser =
+    Advertiser
+    { _advAllowPublisherCreatedLinks = Nothing
+    , _advContactPhone = Nothing
+    , _advContactEmail = Nothing
+    , _advStatus = Nothing
+    , _advLogoURL = Nothing
+    , _advKind = "gan#advertiser"
+    , _advCategory = Nothing
+    , _advSiteURL = Nothing
+    , _advPayoutRank = Nothing
+    , _advJoinDate = Nothing
+    , _advDefaultLinkId = Nothing
+    , _advRedirectDomains = Nothing
+    , _advName = Nothing
+    , _advProductFeedsEnabled = Nothing
+    , _advMerchantCenterIds = Nothing
+    , _advEpcSevenDayAverage = Nothing
+    , _advItem = Nothing
+    , _advId = Nothing
+    , _advEpcNinetyDayAverage = Nothing
+    , _advCommissionDuration = Nothing
+    , _advDescription = Nothing
+    }
+
+-- | True if the advertiser allows publisher created links, otherwise false.
+advAllowPublisherCreatedLinks :: Lens' Advertiser (Maybe Bool)
+advAllowPublisherCreatedLinks
+  = lens _advAllowPublisherCreatedLinks
+      (\ s a -> s{_advAllowPublisherCreatedLinks = a})
+
+-- | Phone that this advertiser would like publishers to contact them with.
+advContactPhone :: Lens' Advertiser (Maybe Text)
+advContactPhone
+  = lens _advContactPhone
+      (\ s a -> s{_advContactPhone = a})
+
+-- | Email that this advertiser would like publishers to contact them with.
+advContactEmail :: Lens' Advertiser (Maybe Text)
+advContactEmail
+  = lens _advContactEmail
+      (\ s a -> s{_advContactEmail = a})
+
+-- | The status of the requesting publisher\'s relationship this advertiser.
+advStatus :: Lens' Advertiser (Maybe Text)
+advStatus
+  = lens _advStatus (\ s a -> s{_advStatus = a})
+
+-- | URL to the logo this advertiser uses on the Google Affiliate Network.
+advLogoURL :: Lens' Advertiser (Maybe Text)
+advLogoURL
+  = lens _advLogoURL (\ s a -> s{_advLogoURL = a})
+
+-- | The kind for an advertiser.
+advKind :: Lens' Advertiser Text
+advKind = lens _advKind (\ s a -> s{_advKind = a})
+
+-- | Category that this advertiser belongs to. A valid list of categories can
+-- be found here:
+-- http:\/\/www.google.com\/support\/affiliatenetwork\/advertiser\/bin\/answer.py?hl=en&answer=107581
+advCategory :: Lens' Advertiser (Maybe Text)
+advCategory
+  = lens _advCategory (\ s a -> s{_advCategory = a})
+
+-- | URL of the website this advertiser advertises from.
+advSiteURL :: Lens' Advertiser (Maybe Text)
+advSiteURL
+  = lens _advSiteURL (\ s a -> s{_advSiteURL = a})
+
+-- | A rank based on commissions paid to publishers over the past 90 days. A
+-- number between 1 and 4 where 4 means the top quartile (most money paid)
+-- and 1 means the bottom quartile (least money paid).
+advPayoutRank :: Lens' Advertiser (Maybe Text)
+advPayoutRank
+  = lens _advPayoutRank
+      (\ s a -> s{_advPayoutRank = a})
+
+-- | Date that this advertiser was approved as a Google Affiliate Network
+-- advertiser.
+advJoinDate :: Lens' Advertiser (Maybe UTCTime)
+advJoinDate
+  = lens _advJoinDate (\ s a -> s{_advJoinDate = a}) .
+      mapping _DateTime
+
+-- | The default link id for this advertiser.
+advDefaultLinkId :: Lens' Advertiser (Maybe Int64)
+advDefaultLinkId
+  = lens _advDefaultLinkId
+      (\ s a -> s{_advDefaultLinkId = a})
+      . mapping _Coerce
+
+-- | List of redirect URLs for this advertiser
+advRedirectDomains :: Lens' Advertiser [Text]
+advRedirectDomains
+  = lens _advRedirectDomains
+      (\ s a -> s{_advRedirectDomains = a})
+      . _Default
+      . _Coerce
+
+-- | The name of this advertiser.
+advName :: Lens' Advertiser (Maybe Text)
+advName = lens _advName (\ s a -> s{_advName = a})
+
+-- | Allows advertisers to submit product listings to Google Product Search.
+advProductFeedsEnabled :: Lens' Advertiser (Maybe Bool)
+advProductFeedsEnabled
+  = lens _advProductFeedsEnabled
+      (\ s a -> s{_advProductFeedsEnabled = a})
+
+-- | List of merchant center ids for this advertiser
+advMerchantCenterIds :: Lens' Advertiser [Int64]
+advMerchantCenterIds
+  = lens _advMerchantCenterIds
+      (\ s a -> s{_advMerchantCenterIds = a})
+      . _Default
+      . _Coerce
+
+-- | The sum of fees paid to publishers divided by the total number of clicks
+-- over the past seven days. This value should be multiplied by 100 at the
+-- time of display.
+advEpcSevenDayAverage :: Lens' Advertiser (Maybe Money)
+advEpcSevenDayAverage
+  = lens _advEpcSevenDayAverage
+      (\ s a -> s{_advEpcSevenDayAverage = a})
+
+-- | The requested advertiser.
+advItem :: Lens' Advertiser (Maybe Advertiser)
+advItem = lens _advItem (\ s a -> s{_advItem = a})
+
+-- | The ID of this advertiser.
+advId :: Lens' Advertiser (Maybe Int64)
+advId
+  = lens _advId (\ s a -> s{_advId = a}) .
+      mapping _Coerce
+
+-- | The sum of fees paid to publishers divided by the total number of clicks
+-- over the past three months. This value should be multiplied by 100 at
+-- the time of display.
+advEpcNinetyDayAverage :: Lens' Advertiser (Maybe Money)
+advEpcNinetyDayAverage
+  = lens _advEpcNinetyDayAverage
+      (\ s a -> s{_advEpcNinetyDayAverage = a})
+
+-- | The longest possible length of a commission (how long the cookies on the
+-- customer\'s browser last before they expire).
+advCommissionDuration :: Lens' Advertiser (Maybe Int32)
+advCommissionDuration
+  = lens _advCommissionDuration
+      (\ s a -> s{_advCommissionDuration = a})
+      . mapping _Coerce
+
+-- | Description of the website the advertiser advertises from.
+advDescription :: Lens' Advertiser (Maybe Text)
+advDescription
+  = lens _advDescription
+      (\ s a -> s{_advDescription = a})
+
+instance FromJSON Advertiser where
+        parseJSON
+          = withObject "Advertiser"
+              (\ o ->
+                 Advertiser <$>
+                   (o .:? "allowPublisherCreatedLinks") <*>
+                     (o .:? "contactPhone")
+                     <*> (o .:? "contactEmail")
+                     <*> (o .:? "status")
+                     <*> (o .:? "logoUrl")
+                     <*> (o .:? "kind" .!= "gan#advertiser")
+                     <*> (o .:? "category")
+                     <*> (o .:? "siteUrl")
+                     <*> (o .:? "payoutRank")
+                     <*> (o .:? "joinDate")
+                     <*> (o .:? "defaultLinkId")
+                     <*> (o .:? "redirectDomains" .!= mempty)
+                     <*> (o .:? "name")
+                     <*> (o .:? "productFeedsEnabled")
+                     <*> (o .:? "merchantCenterIds" .!= mempty)
+                     <*> (o .:? "epcSevenDayAverage")
+                     <*> (o .:? "item")
+                     <*> (o .:? "id")
+                     <*> (o .:? "epcNinetyDayAverage")
+                     <*> (o .:? "commissionDuration")
+                     <*> (o .:? "description"))
+
+instance ToJSON Advertiser where
+        toJSON Advertiser{..}
+          = object
+              (catMaybes
+                 [("allowPublisherCreatedLinks" .=) <$>
+                    _advAllowPublisherCreatedLinks,
+                  ("contactPhone" .=) <$> _advContactPhone,
+                  ("contactEmail" .=) <$> _advContactEmail,
+                  ("status" .=) <$> _advStatus,
+                  ("logoUrl" .=) <$> _advLogoURL,
+                  Just ("kind" .= _advKind),
+                  ("category" .=) <$> _advCategory,
+                  ("siteUrl" .=) <$> _advSiteURL,
+                  ("payoutRank" .=) <$> _advPayoutRank,
+                  ("joinDate" .=) <$> _advJoinDate,
+                  ("defaultLinkId" .=) <$> _advDefaultLinkId,
+                  ("redirectDomains" .=) <$> _advRedirectDomains,
+                  ("name" .=) <$> _advName,
+                  ("productFeedsEnabled" .=) <$>
+                    _advProductFeedsEnabled,
+                  ("merchantCenterIds" .=) <$> _advMerchantCenterIds,
+                  ("epcSevenDayAverage" .=) <$> _advEpcSevenDayAverage,
+                  ("item" .=) <$> _advItem, ("id" .=) <$> _advId,
+                  ("epcNinetyDayAverage" .=) <$>
+                    _advEpcNinetyDayAverage,
+                  ("commissionDuration" .=) <$> _advCommissionDuration,
+                  ("description" .=) <$> _advDescription])
+
+-- | A credit card offer. There are many possible result fields. We provide
+-- two different views of the data, or \"projections.\" The \"full\"
+-- projection includes every result field. And the \"summary\" projection,
+-- which is the default, includes a smaller subset of the fields. The
+-- fields included in the summary projection are marked as such in their
+-- descriptions.
+--
+-- /See:/ 'ccOffer' smart constructor.
+data CcOffer = CcOffer
+    { _cMinimumFinanceCharge          :: !(Maybe Text)
+    , _cTrackingURL                   :: !(Maybe Text)
+    , _cProhibitedCategories          :: !(Maybe [Text])
+    , _cBalanceComputationMethod      :: !(Maybe Text)
+    , _cInitialSetupAndProcessingFee  :: !(Maybe Text)
+    , _cReturnedPaymentFee            :: !(Maybe Text)
+    , _cAgeMinimumDetails             :: !(Maybe Text)
+    , _cVariableRatesUpdateFrequency  :: !(Maybe Text)
+    , _cCreditLimitMin                :: !(Maybe (Textual Double))
+    , _cTravelInsurance               :: !(Maybe Text)
+    , _cApprovedCategories            :: !(Maybe [Text])
+    , _cAnnualFeeDisplay              :: !(Maybe Text)
+    , _cOverLimitFee                  :: !(Maybe Text)
+    , _cMaxPurchaseRate               :: !(Maybe (Textual Double))
+    , _cAgeMinimum                    :: !(Maybe (Textual Double))
+    , _cVariableRatesLastUpdated      :: !(Maybe Text)
+    , _cIntroCashAdvanceTerms         :: !(Maybe Text)
+    , _cIssuerWebsite                 :: !(Maybe Text)
+    , _cLuggageInsurance              :: !(Maybe Text)
+    , _cKind                          :: !Text
+    , _cRewardsHaveBlackoutDates      :: !(Maybe Bool)
+    , _cDisclaimer                    :: !(Maybe Text)
+    , _cAdditionalCardHolderFee       :: !(Maybe Text)
+    , _cExistingCustomerOnly          :: !(Maybe Bool)
+    , _cEmergencyInsurance            :: !(Maybe Text)
+    , _cNetwork                       :: !(Maybe Text)
+    , _cCashAdvanceTerms              :: !(Maybe Text)
+    , _cStatementCopyFee              :: !(Maybe Text)
+    , _cAprDisplay                    :: !(Maybe Text)
+    , _cOffersImmediateCashReward     :: !(Maybe Bool)
+    , _cRewards                       :: !(Maybe [CcOfferRewardsItem])
+    , _cCardType                      :: !(Maybe Text)
+    , _cImageURL                      :: !(Maybe Text)
+    , _cCreditLimitMax                :: !(Maybe (Textual Double))
+    , _cLandingPageURL                :: !(Maybe Text)
+    , _cAnnualFee                     :: !(Maybe (Textual Double))
+    , _cRewardsExpire                 :: !(Maybe Bool)
+    , _cFirstYearAnnualFee            :: !(Maybe (Textual Double))
+    , _cCarRentalInsurance            :: !(Maybe Text)
+    , _cPurchaseRateAdditionalDetails :: !(Maybe Text)
+    , _cOfferId                       :: !(Maybe Text)
+    , _cGracePeriodDisplay            :: !(Maybe Text)
+    , _cIntroPurchaseTerms            :: !(Maybe Text)
+    , _cCreditRatingDisplay           :: !(Maybe Text)
+    , _cBalanceTransferTerms          :: !(Maybe Text)
+    , _cLatePaymentFee                :: !(Maybe Text)
+    , _cCardBenefits                  :: !(Maybe [Text])
+    , _cIssuer                        :: !(Maybe Text)
+    , _cCardName                      :: !(Maybe Text)
+    , _cMinPurchaseRate               :: !(Maybe (Textual Double))
+    , _cFraudLiability                :: !(Maybe Text)
+    , _cForeignCurrencyTransactionFee :: !(Maybe Text)
+    , _cExtendedWarranty              :: !(Maybe Text)
+    , _cAnnualRewardMaximum           :: !(Maybe (Textual Double))
+    , _cIssuerId                      :: !(Maybe Text)
+    , _cIntroBalanceTransferTerms     :: !(Maybe Text)
+    , _cDefaultFees                   :: !(Maybe [CcOfferDefaultFeesItem])
+    , _cAdditionalCardBenefits        :: !(Maybe [Text])
+    , _cRewardUnit                    :: !(Maybe Text)
+    , _cBonusRewards                  :: !(Maybe [CcOfferBonusRewardsItem])
+    , _cFlightAccidentInsurance       :: !(Maybe Text)
+    , _cRewardPartner                 :: !(Maybe Text)
+    , _cPurchaseRateType              :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'CcOffer' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'cMinimumFinanceCharge'
+--
+-- * 'cTrackingURL'
+--
+-- * 'cProhibitedCategories'
+--
+-- * 'cBalanceComputationMethod'
+--
+-- * 'cInitialSetupAndProcessingFee'
+--
+-- * 'cReturnedPaymentFee'
+--
+-- * 'cAgeMinimumDetails'
+--
+-- * 'cVariableRatesUpdateFrequency'
+--
+-- * 'cCreditLimitMin'
+--
+-- * 'cTravelInsurance'
+--
+-- * 'cApprovedCategories'
+--
+-- * 'cAnnualFeeDisplay'
+--
+-- * 'cOverLimitFee'
+--
+-- * 'cMaxPurchaseRate'
+--
+-- * 'cAgeMinimum'
+--
+-- * 'cVariableRatesLastUpdated'
+--
+-- * 'cIntroCashAdvanceTerms'
+--
+-- * 'cIssuerWebsite'
+--
+-- * 'cLuggageInsurance'
+--
+-- * 'cKind'
+--
+-- * 'cRewardsHaveBlackoutDates'
+--
+-- * 'cDisclaimer'
+--
+-- * 'cAdditionalCardHolderFee'
+--
+-- * 'cExistingCustomerOnly'
+--
+-- * 'cEmergencyInsurance'
+--
+-- * 'cNetwork'
+--
+-- * 'cCashAdvanceTerms'
+--
+-- * 'cStatementCopyFee'
+--
+-- * 'cAprDisplay'
+--
+-- * 'cOffersImmediateCashReward'
+--
+-- * 'cRewards'
+--
+-- * 'cCardType'
+--
+-- * 'cImageURL'
+--
+-- * 'cCreditLimitMax'
+--
+-- * 'cLandingPageURL'
+--
+-- * 'cAnnualFee'
+--
+-- * 'cRewardsExpire'
+--
+-- * 'cFirstYearAnnualFee'
+--
+-- * 'cCarRentalInsurance'
+--
+-- * 'cPurchaseRateAdditionalDetails'
+--
+-- * 'cOfferId'
+--
+-- * 'cGracePeriodDisplay'
+--
+-- * 'cIntroPurchaseTerms'
+--
+-- * 'cCreditRatingDisplay'
+--
+-- * 'cBalanceTransferTerms'
+--
+-- * 'cLatePaymentFee'
+--
+-- * 'cCardBenefits'
+--
+-- * 'cIssuer'
+--
+-- * 'cCardName'
+--
+-- * 'cMinPurchaseRate'
+--
+-- * 'cFraudLiability'
+--
+-- * 'cForeignCurrencyTransactionFee'
+--
+-- * 'cExtendedWarranty'
+--
+-- * 'cAnnualRewardMaximum'
+--
+-- * 'cIssuerId'
+--
+-- * 'cIntroBalanceTransferTerms'
+--
+-- * 'cDefaultFees'
+--
+-- * 'cAdditionalCardBenefits'
+--
+-- * 'cRewardUnit'
+--
+-- * 'cBonusRewards'
+--
+-- * 'cFlightAccidentInsurance'
+--
+-- * 'cRewardPartner'
+--
+-- * 'cPurchaseRateType'
+ccOffer
+    :: CcOffer
+ccOffer =
+    CcOffer
+    { _cMinimumFinanceCharge = Nothing
+    , _cTrackingURL = Nothing
+    , _cProhibitedCategories = Nothing
+    , _cBalanceComputationMethod = Nothing
+    , _cInitialSetupAndProcessingFee = Nothing
+    , _cReturnedPaymentFee = Nothing
+    , _cAgeMinimumDetails = Nothing
+    , _cVariableRatesUpdateFrequency = Nothing
+    , _cCreditLimitMin = Nothing
+    , _cTravelInsurance = Nothing
+    , _cApprovedCategories = Nothing
+    , _cAnnualFeeDisplay = Nothing
+    , _cOverLimitFee = Nothing
+    , _cMaxPurchaseRate = Nothing
+    , _cAgeMinimum = Nothing
+    , _cVariableRatesLastUpdated = Nothing
+    , _cIntroCashAdvanceTerms = Nothing
+    , _cIssuerWebsite = Nothing
+    , _cLuggageInsurance = Nothing
+    , _cKind = "gan#ccOffer"
+    , _cRewardsHaveBlackoutDates = Nothing
+    , _cDisclaimer = Nothing
+    , _cAdditionalCardHolderFee = Nothing
+    , _cExistingCustomerOnly = Nothing
+    , _cEmergencyInsurance = Nothing
+    , _cNetwork = Nothing
+    , _cCashAdvanceTerms = Nothing
+    , _cStatementCopyFee = Nothing
+    , _cAprDisplay = Nothing
+    , _cOffersImmediateCashReward = Nothing
+    , _cRewards = Nothing
+    , _cCardType = Nothing
+    , _cImageURL = Nothing
+    , _cCreditLimitMax = Nothing
+    , _cLandingPageURL = Nothing
+    , _cAnnualFee = Nothing
+    , _cRewardsExpire = Nothing
+    , _cFirstYearAnnualFee = Nothing
+    , _cCarRentalInsurance = Nothing
+    , _cPurchaseRateAdditionalDetails = Nothing
+    , _cOfferId = Nothing
+    , _cGracePeriodDisplay = Nothing
+    , _cIntroPurchaseTerms = Nothing
+    , _cCreditRatingDisplay = Nothing
+    , _cBalanceTransferTerms = Nothing
+    , _cLatePaymentFee = Nothing
+    , _cCardBenefits = Nothing
+    , _cIssuer = Nothing
+    , _cCardName = Nothing
+    , _cMinPurchaseRate = Nothing
+    , _cFraudLiability = Nothing
+    , _cForeignCurrencyTransactionFee = Nothing
+    , _cExtendedWarranty = Nothing
+    , _cAnnualRewardMaximum = Nothing
+    , _cIssuerId = Nothing
+    , _cIntroBalanceTransferTerms = Nothing
+    , _cDefaultFees = Nothing
+    , _cAdditionalCardBenefits = Nothing
+    , _cRewardUnit = Nothing
+    , _cBonusRewards = Nothing
+    , _cFlightAccidentInsurance = Nothing
+    , _cRewardPartner = Nothing
+    , _cPurchaseRateType = Nothing
+    }
+
+-- | Text describing how much missing the grace period will cost.
+cMinimumFinanceCharge :: Lens' CcOffer (Maybe Text)
+cMinimumFinanceCharge
+  = lens _cMinimumFinanceCharge
+      (\ s a -> s{_cMinimumFinanceCharge = a})
+
+-- | The link to ping to register a click on this offer. A summary field.
+cTrackingURL :: Lens' CcOffer (Maybe Text)
+cTrackingURL
+  = lens _cTrackingURL (\ s a -> s{_cTrackingURL = a})
+
+-- | Categories in which the issuer does not wish the card to be displayed. A
+-- summary field.
+cProhibitedCategories :: Lens' CcOffer [Text]
+cProhibitedCategories
+  = lens _cProhibitedCategories
+      (\ s a -> s{_cProhibitedCategories = a})
+      . _Default
+      . _Coerce
+
+-- | Text describing how the balance is computed. A summary field.
+cBalanceComputationMethod :: Lens' CcOffer (Maybe Text)
+cBalanceComputationMethod
+  = lens _cBalanceComputationMethod
+      (\ s a -> s{_cBalanceComputationMethod = a})
+
+-- | Fee for setting up the card.
+cInitialSetupAndProcessingFee :: Lens' CcOffer (Maybe Text)
+cInitialSetupAndProcessingFee
+  = lens _cInitialSetupAndProcessingFee
+      (\ s a -> s{_cInitialSetupAndProcessingFee = a})
+
+-- | Text describing the fee for a payment that doesn\'t clear. A summary
+-- field.
+cReturnedPaymentFee :: Lens' CcOffer (Maybe Text)
+cReturnedPaymentFee
+  = lens _cReturnedPaymentFee
+      (\ s a -> s{_cReturnedPaymentFee = a})
+
+-- | Text describing the details of the age minimum restriction.
+cAgeMinimumDetails :: Lens' CcOffer (Maybe Text)
+cAgeMinimumDetails
+  = lens _cAgeMinimumDetails
+      (\ s a -> s{_cAgeMinimumDetails = a})
+
+-- | How often variable rates are updated.
+cVariableRatesUpdateFrequency :: Lens' CcOffer (Maybe Text)
+cVariableRatesUpdateFrequency
+  = lens _cVariableRatesUpdateFrequency
+      (\ s a -> s{_cVariableRatesUpdateFrequency = a})
+
+-- | The low end for credit limits the issuer imposes on recipients of this
+-- card.
+cCreditLimitMin :: Lens' CcOffer (Maybe Double)
+cCreditLimitMin
+  = lens _cCreditLimitMin
+      (\ s a -> s{_cCreditLimitMin = a})
+      . mapping _Coerce
+
+-- | If you get coverage when you use the card for the given activity, this
+-- field describes it.
+cTravelInsurance :: Lens' CcOffer (Maybe Text)
+cTravelInsurance
+  = lens _cTravelInsurance
+      (\ s a -> s{_cTravelInsurance = a})
+
+-- | Possible categories for this card, eg \"Low Interest\" or \"Good.\" A
+-- summary field.
+cApprovedCategories :: Lens' CcOffer [Text]
+cApprovedCategories
+  = lens _cApprovedCategories
+      (\ s a -> s{_cApprovedCategories = a})
+      . _Default
+      . _Coerce
+
+-- | Text describing the annual fee, including any difference for the first
+-- year. A summary field.
+cAnnualFeeDisplay :: Lens' CcOffer (Maybe Text)
+cAnnualFeeDisplay
+  = lens _cAnnualFeeDisplay
+      (\ s a -> s{_cAnnualFeeDisplay = a})
+
+-- | Fee for exceeding the card\'s charge limit.
+cOverLimitFee :: Lens' CcOffer (Maybe Text)
+cOverLimitFee
+  = lens _cOverLimitFee
+      (\ s a -> s{_cOverLimitFee = a})
+
+-- | The highest interest rate the issuer charges on this card. Expressed as
+-- an absolute number, not as a percentage.
+cMaxPurchaseRate :: Lens' CcOffer (Maybe Double)
+cMaxPurchaseRate
+  = lens _cMaxPurchaseRate
+      (\ s a -> s{_cMaxPurchaseRate = a})
+      . mapping _Coerce
+
+-- | The youngest a recipient of this card may be.
+cAgeMinimum :: Lens' CcOffer (Maybe Double)
+cAgeMinimum
+  = lens _cAgeMinimum (\ s a -> s{_cAgeMinimum = a}) .
+      mapping _Coerce
+
+-- | When variable rates were last updated.
+cVariableRatesLastUpdated :: Lens' CcOffer (Maybe Text)
+cVariableRatesLastUpdated
+  = lens _cVariableRatesLastUpdated
+      (\ s a -> s{_cVariableRatesLastUpdated = a})
+
+-- | Text describing the terms for introductory period cash advances. A
+-- summary field.
+cIntroCashAdvanceTerms :: Lens' CcOffer (Maybe Text)
+cIntroCashAdvanceTerms
+  = lens _cIntroCashAdvanceTerms
+      (\ s a -> s{_cIntroCashAdvanceTerms = a})
+
+-- | The generic link to the issuer\'s site.
+cIssuerWebsite :: Lens' CcOffer (Maybe Text)
+cIssuerWebsite
+  = lens _cIssuerWebsite
+      (\ s a -> s{_cIssuerWebsite = a})
+
+-- | If you get coverage when you use the card for the given activity, this
+-- field describes it.
+cLuggageInsurance :: Lens' CcOffer (Maybe Text)
+cLuggageInsurance
+  = lens _cLuggageInsurance
+      (\ s a -> s{_cLuggageInsurance = a})
+
+-- | The kind for one credit card offer. A summary field.
+cKind :: Lens' CcOffer Text
+cKind = lens _cKind (\ s a -> s{_cKind = a})
+
+-- | For airline miles rewards, tells whether blackout dates apply to the
+-- miles.
+cRewardsHaveBlackoutDates :: Lens' CcOffer (Maybe Bool)
+cRewardsHaveBlackoutDates
+  = lens _cRewardsHaveBlackoutDates
+      (\ s a -> s{_cRewardsHaveBlackoutDates = a})
+
+-- | A notice that, if present, is referenced via an asterisk by many of the
+-- other summary fields. If this field is present, it will always start
+-- with an asterisk (\"*\"), and must be prominently displayed with the
+-- offer. A summary field.
+cDisclaimer :: Lens' CcOffer (Maybe Text)
+cDisclaimer
+  = lens _cDisclaimer (\ s a -> s{_cDisclaimer = a})
+
+-- | Any extra fees levied on card holders.
+cAdditionalCardHolderFee :: Lens' CcOffer (Maybe Text)
+cAdditionalCardHolderFee
+  = lens _cAdditionalCardHolderFee
+      (\ s a -> s{_cAdditionalCardHolderFee = a})
+
+-- | Whether this card is only available to existing customers of the issuer.
+cExistingCustomerOnly :: Lens' CcOffer (Maybe Bool)
+cExistingCustomerOnly
+  = lens _cExistingCustomerOnly
+      (\ s a -> s{_cExistingCustomerOnly = a})
+
+-- | If you get coverage when you use the card for the given activity, this
+-- field describes it.
+cEmergencyInsurance :: Lens' CcOffer (Maybe Text)
+cEmergencyInsurance
+  = lens _cEmergencyInsurance
+      (\ s a -> s{_cEmergencyInsurance = a})
+
+-- | Which network (eg Visa) the card belongs to. A summary field.
+cNetwork :: Lens' CcOffer (Maybe Text)
+cNetwork = lens _cNetwork (\ s a -> s{_cNetwork = a})
+
+-- | Text describing the terms for cash advances. A summary field.
+cCashAdvanceTerms :: Lens' CcOffer (Maybe Text)
+cCashAdvanceTerms
+  = lens _cCashAdvanceTerms
+      (\ s a -> s{_cCashAdvanceTerms = a})
+
+-- | Fee for requesting a copy of your statement.
+cStatementCopyFee :: Lens' CcOffer (Maybe Text)
+cStatementCopyFee
+  = lens _cStatementCopyFee
+      (\ s a -> s{_cStatementCopyFee = a})
+
+-- | Text describing the purchase APR. A summary field.
+cAprDisplay :: Lens' CcOffer (Maybe Text)
+cAprDisplay
+  = lens _cAprDisplay (\ s a -> s{_cAprDisplay = a})
+
+-- | Whether a cash reward program lets you get cash back sooner than end of
+-- year or other longish period.
+cOffersImmediateCashReward :: Lens' CcOffer (Maybe Bool)
+cOffersImmediateCashReward
+  = lens _cOffersImmediateCashReward
+      (\ s a -> s{_cOffersImmediateCashReward = a})
+
+-- | For cards with rewards programs, detailed rules about how the program
+-- works.
+cRewards :: Lens' CcOffer [CcOfferRewardsItem]
+cRewards
+  = lens _cRewards (\ s a -> s{_cRewards = a}) .
+      _Default
+      . _Coerce
+
+-- | What kind of credit card this is, for example secured or unsecured.
+cCardType :: Lens' CcOffer (Maybe Text)
+cCardType
+  = lens _cCardType (\ s a -> s{_cCardType = a})
+
+-- | The link to the image of the card that is shown on Connect Commerce. A
+-- summary field.
+cImageURL :: Lens' CcOffer (Maybe Text)
+cImageURL
+  = lens _cImageURL (\ s a -> s{_cImageURL = a})
+
+-- | The high end for credit limits the issuer imposes on recipients of this
+-- card.
+cCreditLimitMax :: Lens' CcOffer (Maybe Double)
+cCreditLimitMax
+  = lens _cCreditLimitMax
+      (\ s a -> s{_cCreditLimitMax = a})
+      . mapping _Coerce
+
+-- | The link to the issuer\'s page for this card. A summary field.
+cLandingPageURL :: Lens' CcOffer (Maybe Text)
+cLandingPageURL
+  = lens _cLandingPageURL
+      (\ s a -> s{_cLandingPageURL = a})
+
+-- | The ongoing annual fee, in dollars.
+cAnnualFee :: Lens' CcOffer (Maybe Double)
+cAnnualFee
+  = lens _cAnnualFee (\ s a -> s{_cAnnualFee = a}) .
+      mapping _Coerce
+
+-- | Whether accumulated rewards ever expire.
+cRewardsExpire :: Lens' CcOffer (Maybe Bool)
+cRewardsExpire
+  = lens _cRewardsExpire
+      (\ s a -> s{_cRewardsExpire = a})
+
+-- | The annual fee for the first year, if different from the ongoing fee.
+-- Optional.
+cFirstYearAnnualFee :: Lens' CcOffer (Maybe Double)
+cFirstYearAnnualFee
+  = lens _cFirstYearAnnualFee
+      (\ s a -> s{_cFirstYearAnnualFee = a})
+      . mapping _Coerce
+
+-- | If you get coverage when you use the card for the given activity, this
+-- field describes it.
+cCarRentalInsurance :: Lens' CcOffer (Maybe Text)
+cCarRentalInsurance
+  = lens _cCarRentalInsurance
+      (\ s a -> s{_cCarRentalInsurance = a})
+
+-- | Text describing any additional details for the purchase rate. A summary
+-- field.
+cPurchaseRateAdditionalDetails :: Lens' CcOffer (Maybe Text)
+cPurchaseRateAdditionalDetails
+  = lens _cPurchaseRateAdditionalDetails
+      (\ s a -> s{_cPurchaseRateAdditionalDetails = a})
+
+-- | This offer\'s ID. A summary field.
+cOfferId :: Lens' CcOffer (Maybe Text)
+cOfferId = lens _cOfferId (\ s a -> s{_cOfferId = a})
+
+-- | Text describing the grace period before finance charges apply. A summary
+-- field.
+cGracePeriodDisplay :: Lens' CcOffer (Maybe Text)
+cGracePeriodDisplay
+  = lens _cGracePeriodDisplay
+      (\ s a -> s{_cGracePeriodDisplay = a})
+
+-- | Text describing the terms for introductory period purchases. A summary
+-- field.
+cIntroPurchaseTerms :: Lens' CcOffer (Maybe Text)
+cIntroPurchaseTerms
+  = lens _cIntroPurchaseTerms
+      (\ s a -> s{_cIntroPurchaseTerms = a})
+
+-- | Text describing the credit ratings required for recipients of this card,
+-- for example \"Excellent\/Good.\" A summary field.
+cCreditRatingDisplay :: Lens' CcOffer (Maybe Text)
+cCreditRatingDisplay
+  = lens _cCreditRatingDisplay
+      (\ s a -> s{_cCreditRatingDisplay = a})
+
+-- | Text describing the terms for balance transfers. A summary field.
+cBalanceTransferTerms :: Lens' CcOffer (Maybe Text)
+cBalanceTransferTerms
+  = lens _cBalanceTransferTerms
+      (\ s a -> s{_cBalanceTransferTerms = a})
+
+-- | Text describing how much a late payment will cost, eg \"up to $35.\" A
+-- summary field.
+cLatePaymentFee :: Lens' CcOffer (Maybe Text)
+cLatePaymentFee
+  = lens _cLatePaymentFee
+      (\ s a -> s{_cLatePaymentFee = a})
+
+-- | A list of what the issuer thinks are the most important benefits of the
+-- card. Usually summarizes the rewards program, if there is one. A summary
+-- field.
+cCardBenefits :: Lens' CcOffer [Text]
+cCardBenefits
+  = lens _cCardBenefits
+      (\ s a -> s{_cCardBenefits = a})
+      . _Default
+      . _Coerce
+
+-- | Name of card issuer. A summary field.
+cIssuer :: Lens' CcOffer (Maybe Text)
+cIssuer = lens _cIssuer (\ s a -> s{_cIssuer = a})
+
+-- | The issuer\'s name for the card, including any trademark or service mark
+-- designators. A summary field.
+cCardName :: Lens' CcOffer (Maybe Text)
+cCardName
+  = lens _cCardName (\ s a -> s{_cCardName = a})
+
+-- | The lowest interest rate the issuer charges on this card. Expressed as
+-- an absolute number, not as a percentage.
+cMinPurchaseRate :: Lens' CcOffer (Maybe Double)
+cMinPurchaseRate
+  = lens _cMinPurchaseRate
+      (\ s a -> s{_cMinPurchaseRate = a})
+      . mapping _Coerce
+
+-- | If you get coverage when you use the card for the given activity, this
+-- field describes it.
+cFraudLiability :: Lens' CcOffer (Maybe Text)
+cFraudLiability
+  = lens _cFraudLiability
+      (\ s a -> s{_cFraudLiability = a})
+
+-- | Fee for each transaction involving a foreign currency.
+cForeignCurrencyTransactionFee :: Lens' CcOffer (Maybe Text)
+cForeignCurrencyTransactionFee
+  = lens _cForeignCurrencyTransactionFee
+      (\ s a -> s{_cForeignCurrencyTransactionFee = a})
+
+-- | If you get coverage when you use the card for the given activity, this
+-- field describes it.
+cExtendedWarranty :: Lens' CcOffer (Maybe Text)
+cExtendedWarranty
+  = lens _cExtendedWarranty
+      (\ s a -> s{_cExtendedWarranty = a})
+
+-- | The largest number of units you may accumulate in a year.
+cAnnualRewardMaximum :: Lens' CcOffer (Maybe Double)
+cAnnualRewardMaximum
+  = lens _cAnnualRewardMaximum
+      (\ s a -> s{_cAnnualRewardMaximum = a})
+      . mapping _Coerce
+
+-- | The Google Affiliate Network ID of the advertiser making this offer.
+cIssuerId :: Lens' CcOffer (Maybe Text)
+cIssuerId
+  = lens _cIssuerId (\ s a -> s{_cIssuerId = a})
+
+-- | Text describing the terms for introductory period balance transfers. A
+-- summary field.
+cIntroBalanceTransferTerms :: Lens' CcOffer (Maybe Text)
+cIntroBalanceTransferTerms
+  = lens _cIntroBalanceTransferTerms
+      (\ s a -> s{_cIntroBalanceTransferTerms = a})
+
+-- | Fees for defaulting on your payments.
+cDefaultFees :: Lens' CcOffer [CcOfferDefaultFeesItem]
+cDefaultFees
+  = lens _cDefaultFees (\ s a -> s{_cDefaultFees = a})
+      . _Default
+      . _Coerce
+
+-- | More marketing copy about the card\'s benefits. A summary field.
+cAdditionalCardBenefits :: Lens' CcOffer [Text]
+cAdditionalCardBenefits
+  = lens _cAdditionalCardBenefits
+      (\ s a -> s{_cAdditionalCardBenefits = a})
+      . _Default
+      . _Coerce
+
+-- | For cards with rewards programs, the unit of reward. For example, miles,
+-- cash back, points.
+cRewardUnit :: Lens' CcOffer (Maybe Text)
+cRewardUnit
+  = lens _cRewardUnit (\ s a -> s{_cRewardUnit = a})
+
+-- | For cards with rewards programs, extra circumstances whereby additional
+-- rewards may be granted.
+cBonusRewards :: Lens' CcOffer [CcOfferBonusRewardsItem]
+cBonusRewards
+  = lens _cBonusRewards
+      (\ s a -> s{_cBonusRewards = a})
+      . _Default
+      . _Coerce
+
+-- | If you get coverage when you use the card for the given activity, this
+-- field describes it.
+cFlightAccidentInsurance :: Lens' CcOffer (Maybe Text)
+cFlightAccidentInsurance
+  = lens _cFlightAccidentInsurance
+      (\ s a -> s{_cFlightAccidentInsurance = a})
+
+-- | The company that redeems the rewards, if different from the issuer.
+cRewardPartner :: Lens' CcOffer (Maybe Text)
+cRewardPartner
+  = lens _cRewardPartner
+      (\ s a -> s{_cRewardPartner = a})
+
+-- | Fixed or variable.
+cPurchaseRateType :: Lens' CcOffer (Maybe Text)
+cPurchaseRateType
+  = lens _cPurchaseRateType
+      (\ s a -> s{_cPurchaseRateType = a})
+
+instance FromJSON CcOffer where
+        parseJSON
+          = withObject "CcOffer"
+              (\ o ->
+                 CcOffer <$>
+                   (o .:? "minimumFinanceCharge") <*>
+                     (o .:? "trackingUrl")
+                     <*> (o .:? "prohibitedCategories" .!= mempty)
+                     <*> (o .:? "balanceComputationMethod")
+                     <*> (o .:? "initialSetupAndProcessingFee")
+                     <*> (o .:? "returnedPaymentFee")
+                     <*> (o .:? "ageMinimumDetails")
+                     <*> (o .:? "variableRatesUpdateFrequency")
+                     <*> (o .:? "creditLimitMin")
+                     <*> (o .:? "travelInsurance")
+                     <*> (o .:? "approvedCategories" .!= mempty)
+                     <*> (o .:? "annualFeeDisplay")
+                     <*> (o .:? "overLimitFee")
+                     <*> (o .:? "maxPurchaseRate")
+                     <*> (o .:? "ageMinimum")
+                     <*> (o .:? "variableRatesLastUpdated")
+                     <*> (o .:? "introCashAdvanceTerms")
+                     <*> (o .:? "issuerWebsite")
+                     <*> (o .:? "luggageInsurance")
+                     <*> (o .:? "kind" .!= "gan#ccOffer")
+                     <*> (o .:? "rewardsHaveBlackoutDates")
+                     <*> (o .:? "disclaimer")
+                     <*> (o .:? "additionalCardHolderFee")
+                     <*> (o .:? "existingCustomerOnly")
+                     <*> (o .:? "emergencyInsurance")
+                     <*> (o .:? "network")
+                     <*> (o .:? "cashAdvanceTerms")
+                     <*> (o .:? "statementCopyFee")
+                     <*> (o .:? "aprDisplay")
+                     <*> (o .:? "offersImmediateCashReward")
+                     <*> (o .:? "rewards" .!= mempty)
+                     <*> (o .:? "cardType")
+                     <*> (o .:? "imageUrl")
+                     <*> (o .:? "creditLimitMax")
+                     <*> (o .:? "landingPageUrl")
+                     <*> (o .:? "annualFee")
+                     <*> (o .:? "rewardsExpire")
+                     <*> (o .:? "firstYearAnnualFee")
+                     <*> (o .:? "carRentalInsurance")
+                     <*> (o .:? "purchaseRateAdditionalDetails")
+                     <*> (o .:? "offerId")
+                     <*> (o .:? "gracePeriodDisplay")
+                     <*> (o .:? "introPurchaseTerms")
+                     <*> (o .:? "creditRatingDisplay")
+                     <*> (o .:? "balanceTransferTerms")
+                     <*> (o .:? "latePaymentFee")
+                     <*> (o .:? "cardBenefits" .!= mempty)
+                     <*> (o .:? "issuer")
+                     <*> (o .:? "cardName")
+                     <*> (o .:? "minPurchaseRate")
+                     <*> (o .:? "fraudLiability")
+                     <*> (o .:? "foreignCurrencyTransactionFee")
+                     <*> (o .:? "extendedWarranty")
+                     <*> (o .:? "annualRewardMaximum")
+                     <*> (o .:? "issuerId")
+                     <*> (o .:? "introBalanceTransferTerms")
+                     <*> (o .:? "defaultFees" .!= mempty)
+                     <*> (o .:? "additionalCardBenefits" .!= mempty)
+                     <*> (o .:? "rewardUnit")
+                     <*> (o .:? "bonusRewards" .!= mempty)
+                     <*> (o .:? "flightAccidentInsurance")
+                     <*> (o .:? "rewardPartner")
+                     <*> (o .:? "purchaseRateType"))
+
+instance ToJSON CcOffer where
+        toJSON CcOffer{..}
+          = object
+              (catMaybes
+                 [("minimumFinanceCharge" .=) <$>
+                    _cMinimumFinanceCharge,
+                  ("trackingUrl" .=) <$> _cTrackingURL,
+                  ("prohibitedCategories" .=) <$>
+                    _cProhibitedCategories,
+                  ("balanceComputationMethod" .=) <$>
+                    _cBalanceComputationMethod,
+                  ("initialSetupAndProcessingFee" .=) <$>
+                    _cInitialSetupAndProcessingFee,
+                  ("returnedPaymentFee" .=) <$> _cReturnedPaymentFee,
+                  ("ageMinimumDetails" .=) <$> _cAgeMinimumDetails,
+                  ("variableRatesUpdateFrequency" .=) <$>
+                    _cVariableRatesUpdateFrequency,
+                  ("creditLimitMin" .=) <$> _cCreditLimitMin,
+                  ("travelInsurance" .=) <$> _cTravelInsurance,
+                  ("approvedCategories" .=) <$> _cApprovedCategories,
+                  ("annualFeeDisplay" .=) <$> _cAnnualFeeDisplay,
+                  ("overLimitFee" .=) <$> _cOverLimitFee,
+                  ("maxPurchaseRate" .=) <$> _cMaxPurchaseRate,
+                  ("ageMinimum" .=) <$> _cAgeMinimum,
+                  ("variableRatesLastUpdated" .=) <$>
+                    _cVariableRatesLastUpdated,
+                  ("introCashAdvanceTerms" .=) <$>
+                    _cIntroCashAdvanceTerms,
+                  ("issuerWebsite" .=) <$> _cIssuerWebsite,
+                  ("luggageInsurance" .=) <$> _cLuggageInsurance,
+                  Just ("kind" .= _cKind),
+                  ("rewardsHaveBlackoutDates" .=) <$>
+                    _cRewardsHaveBlackoutDates,
+                  ("disclaimer" .=) <$> _cDisclaimer,
+                  ("additionalCardHolderFee" .=) <$>
+                    _cAdditionalCardHolderFee,
+                  ("existingCustomerOnly" .=) <$>
+                    _cExistingCustomerOnly,
+                  ("emergencyInsurance" .=) <$> _cEmergencyInsurance,
+                  ("network" .=) <$> _cNetwork,
+                  ("cashAdvanceTerms" .=) <$> _cCashAdvanceTerms,
+                  ("statementCopyFee" .=) <$> _cStatementCopyFee,
+                  ("aprDisplay" .=) <$> _cAprDisplay,
+                  ("offersImmediateCashReward" .=) <$>
+                    _cOffersImmediateCashReward,
+                  ("rewards" .=) <$> _cRewards,
+                  ("cardType" .=) <$> _cCardType,
+                  ("imageUrl" .=) <$> _cImageURL,
+                  ("creditLimitMax" .=) <$> _cCreditLimitMax,
+                  ("landingPageUrl" .=) <$> _cLandingPageURL,
+                  ("annualFee" .=) <$> _cAnnualFee,
+                  ("rewardsExpire" .=) <$> _cRewardsExpire,
+                  ("firstYearAnnualFee" .=) <$> _cFirstYearAnnualFee,
+                  ("carRentalInsurance" .=) <$> _cCarRentalInsurance,
+                  ("purchaseRateAdditionalDetails" .=) <$>
+                    _cPurchaseRateAdditionalDetails,
+                  ("offerId" .=) <$> _cOfferId,
+                  ("gracePeriodDisplay" .=) <$> _cGracePeriodDisplay,
+                  ("introPurchaseTerms" .=) <$> _cIntroPurchaseTerms,
+                  ("creditRatingDisplay" .=) <$> _cCreditRatingDisplay,
+                  ("balanceTransferTerms" .=) <$>
+                    _cBalanceTransferTerms,
+                  ("latePaymentFee" .=) <$> _cLatePaymentFee,
+                  ("cardBenefits" .=) <$> _cCardBenefits,
+                  ("issuer" .=) <$> _cIssuer,
+                  ("cardName" .=) <$> _cCardName,
+                  ("minPurchaseRate" .=) <$> _cMinPurchaseRate,
+                  ("fraudLiability" .=) <$> _cFraudLiability,
+                  ("foreignCurrencyTransactionFee" .=) <$>
+                    _cForeignCurrencyTransactionFee,
+                  ("extendedWarranty" .=) <$> _cExtendedWarranty,
+                  ("annualRewardMaximum" .=) <$> _cAnnualRewardMaximum,
+                  ("issuerId" .=) <$> _cIssuerId,
+                  ("introBalanceTransferTerms" .=) <$>
+                    _cIntroBalanceTransferTerms,
+                  ("defaultFees" .=) <$> _cDefaultFees,
+                  ("additionalCardBenefits" .=) <$>
+                    _cAdditionalCardBenefits,
+                  ("rewardUnit" .=) <$> _cRewardUnit,
+                  ("bonusRewards" .=) <$> _cBonusRewards,
+                  ("flightAccidentInsurance" .=) <$>
+                    _cFlightAccidentInsurance,
+                  ("rewardPartner" .=) <$> _cRewardPartner,
+                  ("purchaseRateType" .=) <$> _cPurchaseRateType])
+
+--
+-- /See:/ 'links' smart constructor.
+data Links = Links
+    { _linNextPageToken :: !(Maybe Text)
+    , _linKind          :: !Text
+    , _linItems         :: !(Maybe [Link])
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'Links' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'linNextPageToken'
+--
+-- * 'linKind'
+--
+-- * 'linItems'
+links
+    :: Links
+links =
+    Links
+    { _linNextPageToken = Nothing
+    , _linKind = "gan#links"
+    , _linItems = Nothing
+    }
+
+-- | The next page token.
+linNextPageToken :: Lens' Links (Maybe Text)
+linNextPageToken
+  = lens _linNextPageToken
+      (\ s a -> s{_linNextPageToken = a})
+
+-- | The kind for a page of links.
+linKind :: Lens' Links Text
+linKind = lens _linKind (\ s a -> s{_linKind = a})
+
+-- | The links.
+linItems :: Lens' Links [Link]
+linItems
+  = lens _linItems (\ s a -> s{_linItems = a}) .
+      _Default
+      . _Coerce
+
+instance FromJSON Links where
+        parseJSON
+          = withObject "Links"
+              (\ o ->
+                 Links <$>
+                   (o .:? "nextPageToken") <*>
+                     (o .:? "kind" .!= "gan#links")
+                     <*> (o .:? "items" .!= mempty))
+
+instance ToJSON Links where
+        toJSON Links{..}
+          = object
+              (catMaybes
+                 [("nextPageToken" .=) <$> _linNextPageToken,
+                  Just ("kind" .= _linKind),
+                  ("items" .=) <$> _linItems])
+
+-- | A PublisherResource.
+--
+-- /See:/ 'publisher' smart constructor.
+data Publisher = Publisher
+    { _pubStatus              :: !(Maybe Text)
+    , _pubKind                :: !Text
+    , _pubPayoutRank          :: !(Maybe Text)
+    , _pubJoinDate            :: !(Maybe DateTime')
+    , _pubClassification      :: !(Maybe Text)
+    , _pubName                :: !(Maybe Text)
+    , _pubEpcSevenDayAverage  :: !(Maybe Money)
+    , _pubItem                :: !(Maybe Publisher)
+    , _pubId                  :: !(Maybe (Textual Int64))
+    , _pubEpcNinetyDayAverage :: !(Maybe Money)
+    , _pubSites               :: !(Maybe [Text])
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'Publisher' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'pubStatus'
+--
+-- * 'pubKind'
+--
+-- * 'pubPayoutRank'
+--
+-- * 'pubJoinDate'
+--
+-- * 'pubClassification'
+--
+-- * 'pubName'
+--
+-- * 'pubEpcSevenDayAverage'
+--
+-- * 'pubItem'
+--
+-- * 'pubId'
+--
+-- * 'pubEpcNinetyDayAverage'
+--
+-- * 'pubSites'
+publisher
+    :: Publisher
+publisher =
+    Publisher
+    { _pubStatus = Nothing
+    , _pubKind = "gan#publisher"
+    , _pubPayoutRank = Nothing
+    , _pubJoinDate = Nothing
+    , _pubClassification = Nothing
+    , _pubName = Nothing
+    , _pubEpcSevenDayAverage = Nothing
+    , _pubItem = Nothing
+    , _pubId = Nothing
+    , _pubEpcNinetyDayAverage = Nothing
+    , _pubSites = Nothing
+    }
+
+-- | The status of the requesting advertiser\'s relationship with this
+-- publisher.
+pubStatus :: Lens' Publisher (Maybe Text)
+pubStatus
+  = lens _pubStatus (\ s a -> s{_pubStatus = a})
+
+-- | The kind for a publisher.
+pubKind :: Lens' Publisher Text
+pubKind = lens _pubKind (\ s a -> s{_pubKind = a})
+
+-- | A rank based on commissions paid to this publisher over the past 90
+-- days. A number between 1 and 4 where 4 means the top quartile (most
+-- money paid) and 1 means the bottom quartile (least money paid).
+pubPayoutRank :: Lens' Publisher (Maybe Text)
+pubPayoutRank
+  = lens _pubPayoutRank
+      (\ s a -> s{_pubPayoutRank = a})
+
+-- | Date that this publisher was approved as a Google Affiliate Network
+-- publisher.
+pubJoinDate :: Lens' Publisher (Maybe UTCTime)
+pubJoinDate
+  = lens _pubJoinDate (\ s a -> s{_pubJoinDate = a}) .
+      mapping _DateTime
+
+-- | Classification that this publisher belongs to. See this link for all
+-- publisher classifications:
+-- http:\/\/www.google.com\/support\/affiliatenetwork\/advertiser\/bin\/answer.py?hl=en&answer=107625&ctx=cb&src=cb&cbid=-k5fihzthfaik&cbrank=4
+pubClassification :: Lens' Publisher (Maybe Text)
+pubClassification
+  = lens _pubClassification
+      (\ s a -> s{_pubClassification = a})
+
+-- | The name of this publisher.
+pubName :: Lens' Publisher (Maybe Text)
+pubName = lens _pubName (\ s a -> s{_pubName = a})
+
+-- | The sum of fees paid to this publisher divided by the total number of
+-- clicks over the past seven days. Values are multiplied by 100 for
+-- display purposes.
+pubEpcSevenDayAverage :: Lens' Publisher (Maybe Money)
+pubEpcSevenDayAverage
+  = lens _pubEpcSevenDayAverage
+      (\ s a -> s{_pubEpcSevenDayAverage = a})
+
+-- | The requested publisher.
+pubItem :: Lens' Publisher (Maybe Publisher)
+pubItem = lens _pubItem (\ s a -> s{_pubItem = a})
+
+-- | The ID of this publisher.
+pubId :: Lens' Publisher (Maybe Int64)
+pubId
+  = lens _pubId (\ s a -> s{_pubId = a}) .
+      mapping _Coerce
+
+-- | The sum of fees paid to this publisher divided by the total number of
+-- clicks over the past three months. Values are multiplied by 100 for
+-- display purposes.
+pubEpcNinetyDayAverage :: Lens' Publisher (Maybe Money)
+pubEpcNinetyDayAverage
+  = lens _pubEpcNinetyDayAverage
+      (\ s a -> s{_pubEpcNinetyDayAverage = a})
+
+-- | Websites that this publisher uses to advertise.
+pubSites :: Lens' Publisher [Text]
+pubSites
+  = lens _pubSites (\ s a -> s{_pubSites = a}) .
+      _Default
+      . _Coerce
+
+instance FromJSON Publisher where
+        parseJSON
+          = withObject "Publisher"
+              (\ o ->
+                 Publisher <$>
+                   (o .:? "status") <*>
+                     (o .:? "kind" .!= "gan#publisher")
+                     <*> (o .:? "payoutRank")
+                     <*> (o .:? "joinDate")
+                     <*> (o .:? "classification")
+                     <*> (o .:? "name")
+                     <*> (o .:? "epcSevenDayAverage")
+                     <*> (o .:? "item")
+                     <*> (o .:? "id")
+                     <*> (o .:? "epcNinetyDayAverage")
+                     <*> (o .:? "sites" .!= mempty))
+
+instance ToJSON Publisher where
+        toJSON Publisher{..}
+          = object
+              (catMaybes
+                 [("status" .=) <$> _pubStatus,
+                  Just ("kind" .= _pubKind),
+                  ("payoutRank" .=) <$> _pubPayoutRank,
+                  ("joinDate" .=) <$> _pubJoinDate,
+                  ("classification" .=) <$> _pubClassification,
+                  ("name" .=) <$> _pubName,
+                  ("epcSevenDayAverage" .=) <$> _pubEpcSevenDayAverage,
+                  ("item" .=) <$> _pubItem, ("id" .=) <$> _pubId,
+                  ("epcNinetyDayAverage" .=) <$>
+                    _pubEpcNinetyDayAverage,
+                  ("sites" .=) <$> _pubSites])
+
+--
+-- /See:/ 'ccOfferRewardsItem' smart constructor.
+data CcOfferRewardsItem = CcOfferRewardsItem
+    { _coriAmount            :: !(Maybe (Textual Double))
+    , _coriExpirationMonths  :: !(Maybe (Textual Double))
+    , _coriCategory          :: !(Maybe Text)
+    , _coriAdditionalDetails :: !(Maybe Text)
+    , _coriMaxRewardTier     :: !(Maybe (Textual Double))
+    , _coriMinRewardTier     :: !(Maybe (Textual Double))
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'CcOfferRewardsItem' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'coriAmount'
+--
+-- * 'coriExpirationMonths'
+--
+-- * 'coriCategory'
+--
+-- * 'coriAdditionalDetails'
+--
+-- * 'coriMaxRewardTier'
+--
+-- * 'coriMinRewardTier'
+ccOfferRewardsItem
+    :: CcOfferRewardsItem
+ccOfferRewardsItem =
+    CcOfferRewardsItem
+    { _coriAmount = Nothing
+    , _coriExpirationMonths = Nothing
+    , _coriCategory = Nothing
+    , _coriAdditionalDetails = Nothing
+    , _coriMaxRewardTier = Nothing
+    , _coriMinRewardTier = Nothing
+    }
+
+-- | The number of units rewarded per purchase dollar.
+coriAmount :: Lens' CcOfferRewardsItem (Maybe Double)
+coriAmount
+  = lens _coriAmount (\ s a -> s{_coriAmount = a}) .
+      mapping _Coerce
+
+-- | How long rewards granted by this rule last.
+coriExpirationMonths :: Lens' CcOfferRewardsItem (Maybe Double)
+coriExpirationMonths
+  = lens _coriExpirationMonths
+      (\ s a -> s{_coriExpirationMonths = a})
+      . mapping _Coerce
+
+-- | The kind of purchases covered by this rule.
+coriCategory :: Lens' CcOfferRewardsItem (Maybe Text)
+coriCategory
+  = lens _coriCategory (\ s a -> s{_coriCategory = a})
+
+-- | Other limits, for example, if this rule only applies during an
+-- introductory period.
+coriAdditionalDetails :: Lens' CcOfferRewardsItem (Maybe Text)
+coriAdditionalDetails
+  = lens _coriAdditionalDetails
+      (\ s a -> s{_coriAdditionalDetails = a})
+
+-- | The maximum purchase amount in the given category for this rule to
+-- apply.
+coriMaxRewardTier :: Lens' CcOfferRewardsItem (Maybe Double)
+coriMaxRewardTier
+  = lens _coriMaxRewardTier
+      (\ s a -> s{_coriMaxRewardTier = a})
+      . mapping _Coerce
+
+-- | The minimum purchase amount in the given category before this rule
+-- applies.
+coriMinRewardTier :: Lens' CcOfferRewardsItem (Maybe Double)
+coriMinRewardTier
+  = lens _coriMinRewardTier
+      (\ s a -> s{_coriMinRewardTier = a})
+      . mapping _Coerce
+
+instance FromJSON CcOfferRewardsItem where
+        parseJSON
+          = withObject "CcOfferRewardsItem"
+              (\ o ->
+                 CcOfferRewardsItem <$>
+                   (o .:? "amount") <*> (o .:? "expirationMonths") <*>
+                     (o .:? "category")
+                     <*> (o .:? "additionalDetails")
+                     <*> (o .:? "maxRewardTier")
+                     <*> (o .:? "minRewardTier"))
+
+instance ToJSON CcOfferRewardsItem where
+        toJSON CcOfferRewardsItem{..}
+          = object
+              (catMaybes
+                 [("amount" .=) <$> _coriAmount,
+                  ("expirationMonths" .=) <$> _coriExpirationMonths,
+                  ("category" .=) <$> _coriCategory,
+                  ("additionalDetails" .=) <$> _coriAdditionalDetails,
+                  ("maxRewardTier" .=) <$> _coriMaxRewardTier,
+                  ("minRewardTier" .=) <$> _coriMinRewardTier])
diff --git a/gen/Network/Google/Affiliates/Types/Sum.hs b/gen/Network/Google/Affiliates/Types/Sum.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Affiliates/Types/Sum.hs
@@ -0,0 +1,753 @@
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE LambdaCase         #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- |
+-- Module      : Network.Google.Affiliates.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.Affiliates.Types.Sum where
+
+import           Network.Google.Prelude
+
+-- | The role of the requester. Valid values: \'advertisers\' or
+-- \'publishers\'.
+data PublishersGetRole
+    = PGRAdvertisers
+      -- ^ @advertisers@
+      -- The requester is requesting as an advertiser.
+    | PGRPublishers
+      -- ^ @publishers@
+      -- The requester is requesting as a publisher.
+      deriving (Eq,Ord,Enum,Read,Show,Data,Typeable,Generic)
+
+instance Hashable PublishersGetRole
+
+instance FromText PublishersGetRole where
+    fromText = \case
+        "advertisers" -> Just PGRAdvertisers
+        "publishers" -> Just PGRPublishers
+        _ -> Nothing
+
+instance ToText PublishersGetRole where
+    toText = \case
+        PGRAdvertisers -> "advertisers"
+        PGRPublishers -> "publishers"
+
+instance FromJSON PublishersGetRole where
+    parseJSON = parseJSONText "PublishersGetRole"
+
+instance ToJSON PublishersGetRole where
+    toJSON = toJSONText
+
+-- | Filters out all events that are not of the given type. Valid values:
+-- \'action\', \'transaction\', or \'charge\'. Optional.
+data ReportsGetEventType
+    = Action
+      -- ^ @action@
+      -- Event type is action.
+    | Charge
+      -- ^ @charge@
+      -- Event type is charge.
+    | Transaction
+      -- ^ @transaction@
+      -- Event type is transaction.
+      deriving (Eq,Ord,Enum,Read,Show,Data,Typeable,Generic)
+
+instance Hashable ReportsGetEventType
+
+instance FromText ReportsGetEventType where
+    fromText = \case
+        "action" -> Just Action
+        "charge" -> Just Charge
+        "transaction" -> Just Transaction
+        _ -> Nothing
+
+instance ToText ReportsGetEventType where
+    toText = \case
+        Action -> "action"
+        Charge -> "charge"
+        Transaction -> "transaction"
+
+instance FromJSON ReportsGetEventType where
+    parseJSON = parseJSONText "ReportsGetEventType"
+
+instance ToJSON ReportsGetEventType where
+    toJSON = toJSONText
+
+-- | Filters out all events that do not have the given status. Valid values:
+-- \'active\', \'canceled\', or \'invalid\'. Optional.
+data ReportsGetStatus
+    = Active
+      -- ^ @active@
+      -- Event is currently active.
+    | Canceled
+      -- ^ @canceled@
+      -- Event is currently canceled.
+    | Invalid
+      -- ^ @invalid@
+      -- Event is currently invalid.
+      deriving (Eq,Ord,Enum,Read,Show,Data,Typeable,Generic)
+
+instance Hashable ReportsGetStatus
+
+instance FromText ReportsGetStatus where
+    fromText = \case
+        "active" -> Just Active
+        "canceled" -> Just Canceled
+        "invalid" -> Just Invalid
+        _ -> Nothing
+
+instance ToText ReportsGetStatus where
+    toText = \case
+        Active -> "active"
+        Canceled -> "canceled"
+        Invalid -> "invalid"
+
+instance FromJSON ReportsGetStatus where
+    parseJSON = parseJSONText "ReportsGetStatus"
+
+instance ToJSON ReportsGetStatus where
+    toJSON = toJSONText
+
+-- | The promotion type.
+data LinksListPromotionType
+    = Coupon
+      -- ^ @coupon@
+    | FreeGift
+      -- ^ @free_gift@
+    | FreeShipping
+      -- ^ @free_shipping@
+    | PercentOff
+      -- ^ @percent_off@
+    | PriceCut
+      -- ^ @price_cut@
+      deriving (Eq,Ord,Enum,Read,Show,Data,Typeable,Generic)
+
+instance Hashable LinksListPromotionType
+
+instance FromText LinksListPromotionType where
+    fromText = \case
+        "coupon" -> Just Coupon
+        "free_gift" -> Just FreeGift
+        "free_shipping" -> Just FreeShipping
+        "percent_off" -> Just PercentOff
+        "price_cut" -> Just PriceCut
+        _ -> Nothing
+
+instance ToText LinksListPromotionType where
+    toText = \case
+        Coupon -> "coupon"
+        FreeGift -> "free_gift"
+        FreeShipping -> "free_shipping"
+        PercentOff -> "percent_off"
+        PriceCut -> "price_cut"
+
+instance FromJSON LinksListPromotionType where
+    parseJSON = parseJSONText "LinksListPromotionType"
+
+instance ToJSON LinksListPromotionType where
+    toJSON = toJSONText
+
+-- | Filters out all events that are not of the given type. Valid values:
+-- \'action\', \'transaction\', \'charge\'. Optional.
+data EventsListType
+    = ELTAction
+      -- ^ @action@
+      -- The completion of an application, sign-up, or other process. For
+      -- example, an action occurs if a user clicks an ad for a credit card and
+      -- completes an application for that card.
+    | ELTCharge
+      -- ^ @charge@
+      -- A charge event is typically a payment between an advertiser, publisher
+      -- or Google.
+    | ELTTransaction
+      -- ^ @transaction@
+      -- A conversion event, typically an e-commerce transaction. Some
+      -- advertisers use a transaction to record other types of events, such as
+      -- magazine subscriptions.
+      deriving (Eq,Ord,Enum,Read,Show,Data,Typeable,Generic)
+
+instance Hashable EventsListType
+
+instance FromText EventsListType where
+    fromText = \case
+        "action" -> Just ELTAction
+        "charge" -> Just ELTCharge
+        "transaction" -> Just ELTTransaction
+        _ -> Nothing
+
+instance ToText EventsListType where
+    toText = \case
+        ELTAction -> "action"
+        ELTCharge -> "charge"
+        ELTTransaction -> "transaction"
+
+instance FromJSON EventsListType where
+    parseJSON = parseJSONText "EventsListType"
+
+instance ToJSON EventsListType where
+    toJSON = toJSONText
+
+-- | The role of the requester. Valid values: \'advertisers\' or
+-- \'publishers\'.
+data LinksListRole
+    = LLRAdvertisers
+      -- ^ @advertisers@
+      -- The requester is requesting as an advertiser.
+    | LLRPublishers
+      -- ^ @publishers@
+      -- The requester is requesting as a publisher.
+      deriving (Eq,Ord,Enum,Read,Show,Data,Typeable,Generic)
+
+instance Hashable LinksListRole
+
+instance FromText LinksListRole where
+    fromText = \case
+        "advertisers" -> Just LLRAdvertisers
+        "publishers" -> Just LLRPublishers
+        _ -> Nothing
+
+instance ToText LinksListRole where
+    toText = \case
+        LLRAdvertisers -> "advertisers"
+        LLRPublishers -> "publishers"
+
+instance FromJSON LinksListRole where
+    parseJSON = parseJSONText "LinksListRole"
+
+instance ToJSON LinksListRole where
+    toJSON = toJSONText
+
+-- | The type of report being requested. Valid values: \'order_delta\'.
+-- Required.
+data ReportsGetReportType
+    = OrderDelta
+      -- ^ @order_delta@
+      -- The order delta report type.
+      deriving (Eq,Ord,Enum,Read,Show,Data,Typeable,Generic)
+
+instance Hashable ReportsGetReportType
+
+instance FromText ReportsGetReportType where
+    fromText = \case
+        "order_delta" -> Just OrderDelta
+        _ -> Nothing
+
+instance ToText ReportsGetReportType where
+    toText = \case
+        OrderDelta -> "order_delta"
+
+instance FromJSON ReportsGetReportType where
+    parseJSON = parseJSONText "ReportsGetReportType"
+
+instance ToJSON ReportsGetReportType where
+    toJSON = toJSONText
+
+-- | The role of the requester. Valid values: \'advertisers\' or
+-- \'publishers\'.
+data AdvertisersListRole
+    = ALRAdvertisers
+      -- ^ @advertisers@
+      -- The requester is requesting as an advertiser.
+    | ALRPublishers
+      -- ^ @publishers@
+      -- The requester is requesting as a publisher.
+      deriving (Eq,Ord,Enum,Read,Show,Data,Typeable,Generic)
+
+instance Hashable AdvertisersListRole
+
+instance FromText AdvertisersListRole where
+    fromText = \case
+        "advertisers" -> Just ALRAdvertisers
+        "publishers" -> Just ALRPublishers
+        _ -> Nothing
+
+instance ToText AdvertisersListRole where
+    toText = \case
+        ALRAdvertisers -> "advertisers"
+        ALRPublishers -> "publishers"
+
+instance FromJSON AdvertisersListRole where
+    parseJSON = parseJSONText "AdvertisersListRole"
+
+instance ToJSON AdvertisersListRole where
+    toJSON = toJSONText
+
+-- | The role of the requester. Valid values: \'advertisers\' or
+-- \'publishers\'.
+data LinksInsertRole
+    = LIRAdvertisers
+      -- ^ @advertisers@
+      -- The requester is requesting as an advertiser.
+    | LIRPublishers
+      -- ^ @publishers@
+      -- The requester is requesting as a publisher.
+      deriving (Eq,Ord,Enum,Read,Show,Data,Typeable,Generic)
+
+instance Hashable LinksInsertRole
+
+instance FromText LinksInsertRole where
+    fromText = \case
+        "advertisers" -> Just LIRAdvertisers
+        "publishers" -> Just LIRPublishers
+        _ -> Nothing
+
+instance ToText LinksInsertRole where
+    toText = \case
+        LIRAdvertisers -> "advertisers"
+        LIRPublishers -> "publishers"
+
+instance FromJSON LinksInsertRole where
+    parseJSON = parseJSONText "LinksInsertRole"
+
+instance ToJSON LinksInsertRole where
+    toJSON = toJSONText
+
+-- | The role of the requester. Valid values: \'advertisers\' or
+-- \'publishers\'.
+data PublishersListRole
+    = PLRAdvertisers
+      -- ^ @advertisers@
+      -- The requester is requesting as an advertiser.
+    | PLRPublishers
+      -- ^ @publishers@
+      -- The requester is requesting as a publisher.
+      deriving (Eq,Ord,Enum,Read,Show,Data,Typeable,Generic)
+
+instance Hashable PublishersListRole
+
+instance FromText PublishersListRole where
+    fromText = \case
+        "advertisers" -> Just PLRAdvertisers
+        "publishers" -> Just PLRPublishers
+        _ -> Nothing
+
+instance ToText PublishersListRole where
+    toText = \case
+        PLRAdvertisers -> "advertisers"
+        PLRPublishers -> "publishers"
+
+instance FromJSON PublishersListRole where
+    parseJSON = parseJSONText "PublishersListRole"
+
+instance ToJSON PublishersListRole where
+    toJSON = toJSONText
+
+-- | The role of the author of the link.
+data LinksListAuthorship
+    = LLAAdvertiser
+      -- ^ @advertiser@
+    | LLAPublisher
+      -- ^ @publisher@
+      deriving (Eq,Ord,Enum,Read,Show,Data,Typeable,Generic)
+
+instance Hashable LinksListAuthorship
+
+instance FromText LinksListAuthorship where
+    fromText = \case
+        "advertiser" -> Just LLAAdvertiser
+        "publisher" -> Just LLAPublisher
+        _ -> Nothing
+
+instance ToText LinksListAuthorship where
+    toText = \case
+        LLAAdvertiser -> "advertiser"
+        LLAPublisher -> "publisher"
+
+instance FromJSON LinksListAuthorship where
+    parseJSON = parseJSONText "LinksListAuthorship"
+
+instance ToJSON LinksListAuthorship where
+    toJSON = toJSONText
+
+-- | The role of the requester. Valid values: \'advertisers\' or
+-- \'publishers\'.
+data LinksGetRole
+    = LGRAdvertisers
+      -- ^ @advertisers@
+      -- The requester is requesting as an advertiser.
+    | LGRPublishers
+      -- ^ @publishers@
+      -- The requester is requesting as a publisher.
+      deriving (Eq,Ord,Enum,Read,Show,Data,Typeable,Generic)
+
+instance Hashable LinksGetRole
+
+instance FromText LinksGetRole where
+    fromText = \case
+        "advertisers" -> Just LGRAdvertisers
+        "publishers" -> Just LGRPublishers
+        _ -> Nothing
+
+instance ToText LinksGetRole where
+    toText = \case
+        LGRAdvertisers -> "advertisers"
+        LGRPublishers -> "publishers"
+
+instance FromJSON LinksGetRole where
+    parseJSON = parseJSONText "LinksGetRole"
+
+instance ToJSON LinksGetRole where
+    toJSON = toJSONText
+
+-- | The type of the link.
+data LinksListLinkType
+    = Banner
+      -- ^ @banner@
+    | Text
+      -- ^ @text@
+      deriving (Eq,Ord,Enum,Read,Show,Data,Typeable,Generic)
+
+instance Hashable LinksListLinkType
+
+instance FromText LinksListLinkType where
+    fromText = \case
+        "banner" -> Just Banner
+        "text" -> Just Text
+        _ -> Nothing
+
+instance ToText LinksListLinkType where
+    toText = \case
+        Banner -> "banner"
+        Text -> "text"
+
+instance FromJSON LinksListLinkType where
+    parseJSON = parseJSONText "LinksListLinkType"
+
+instance ToJSON LinksListLinkType where
+    toJSON = toJSONText
+
+-- | The role of the requester. Valid values: \'advertisers\' or
+-- \'publishers\'.
+data EventsListRole
+    = ELRAdvertisers
+      -- ^ @advertisers@
+      -- The requester is requesting as an advertiser.
+    | ELRPublishers
+      -- ^ @publishers@
+      -- The requester is requesting as a publisher.
+      deriving (Eq,Ord,Enum,Read,Show,Data,Typeable,Generic)
+
+instance Hashable EventsListRole
+
+instance FromText EventsListRole where
+    fromText = \case
+        "advertisers" -> Just ELRAdvertisers
+        "publishers" -> Just ELRPublishers
+        _ -> Nothing
+
+instance ToText EventsListRole where
+    toText = \case
+        ELRAdvertisers -> "advertisers"
+        ELRPublishers -> "publishers"
+
+instance FromJSON EventsListRole where
+    parseJSON = parseJSONText "EventsListRole"
+
+instance ToJSON EventsListRole where
+    toJSON = toJSONText
+
+-- | Filters out all advertisers for which do not have the given relationship
+-- status with the requesting publisher.
+data AdvertisersListRelationshipStatus
+    = Approved
+      -- ^ @approved@
+      -- An advertiser that has approved your application.
+    | Available
+      -- ^ @available@
+      -- An advertiser program that\'s accepting new publishers.
+    | Deactivated
+      -- ^ @deactivated@
+      -- Deactivated means either the advertiser has removed you from their
+      -- program, or it could also mean that you chose to remove yourself from
+      -- the advertiser\'s program.
+    | Declined
+      -- ^ @declined@
+      -- An advertiser that did not approve your application.
+    | Pending
+      -- ^ @pending@
+      -- An advertiser program that you\'ve already applied to, but they haven\'t
+      -- yet decided to approve or decline your application.
+      deriving (Eq,Ord,Enum,Read,Show,Data,Typeable,Generic)
+
+instance Hashable AdvertisersListRelationshipStatus
+
+instance FromText AdvertisersListRelationshipStatus where
+    fromText = \case
+        "approved" -> Just Approved
+        "available" -> Just Available
+        "deactivated" -> Just Deactivated
+        "declined" -> Just Declined
+        "pending" -> Just Pending
+        _ -> Nothing
+
+instance ToText AdvertisersListRelationshipStatus where
+    toText = \case
+        Approved -> "approved"
+        Available -> "available"
+        Deactivated -> "deactivated"
+        Declined -> "declined"
+        Pending -> "pending"
+
+instance FromJSON AdvertisersListRelationshipStatus where
+    parseJSON = parseJSONText "AdvertisersListRelationshipStatus"
+
+instance ToJSON AdvertisersListRelationshipStatus where
+    toJSON = toJSONText
+
+-- | The set of fields to return.
+data CcOffersListProjection
+    = Full
+      -- ^ @full@
+      -- Include all offer fields. This is the default.
+    | Summary
+      -- ^ @summary@
+      -- Include only the basic fields needed to display an offer.
+      deriving (Eq,Ord,Enum,Read,Show,Data,Typeable,Generic)
+
+instance Hashable CcOffersListProjection
+
+instance FromText CcOffersListProjection where
+    fromText = \case
+        "full" -> Just Full
+        "summary" -> Just Summary
+        _ -> Nothing
+
+instance ToText CcOffersListProjection where
+    toText = \case
+        Full -> "full"
+        Summary -> "summary"
+
+instance FromJSON CcOffersListProjection where
+    parseJSON = parseJSONText "CcOffersListProjection"
+
+instance ToJSON CcOffersListProjection where
+    toJSON = toJSONText
+
+-- | The role of the requester. Valid values: \'advertisers\' or
+-- \'publishers\'.
+data AdvertisersGetRole
+    = AGRAdvertisers
+      -- ^ @advertisers@
+      -- The requester is requesting as an advertiser.
+    | AGRPublishers
+      -- ^ @publishers@
+      -- The requester is requesting as a publisher.
+      deriving (Eq,Ord,Enum,Read,Show,Data,Typeable,Generic)
+
+instance Hashable AdvertisersGetRole
+
+instance FromText AdvertisersGetRole where
+    fromText = \case
+        "advertisers" -> Just AGRAdvertisers
+        "publishers" -> Just AGRPublishers
+        _ -> Nothing
+
+instance ToText AdvertisersGetRole where
+    toText = \case
+        AGRAdvertisers -> "advertisers"
+        AGRPublishers -> "publishers"
+
+instance FromJSON AdvertisersGetRole where
+    parseJSON = parseJSONText "AdvertisersGetRole"
+
+instance ToJSON AdvertisersGetRole where
+    toJSON = toJSONText
+
+-- | Filters out all charge events that are not of the given charge type.
+-- Valid values: \'other\', \'slotting_fee\', \'monthly_minimum\',
+-- \'tier_bonus\', \'credit\', \'debit\'. Optional.
+data EventsListChargeType
+    = Credit
+      -- ^ @credit@
+      -- A credit increases the publisher\'s payout amount and decreases the
+      -- advertiser\'s invoice amount.
+    | Debit
+      -- ^ @debit@
+      -- A debit reduces the publisher\'s payout and increases the advertiser\'s
+      -- invoice amount.
+    | MonthlyMinimum
+      -- ^ @monthly_minimum@
+      -- A payment made to Google by an advertiser as a minimum monthly network
+      -- fee.
+    | Other
+      -- ^ @other@
+      -- Catch all. Default if unset
+    | SlottingFee
+      -- ^ @slotting_fee@
+      -- A one time payment made from an advertiser to a publisher.
+    | TierBonus
+      -- ^ @tier_bonus@
+      -- A payment from an advertiser to a publisher for the publisher
+      -- maintaining a high tier level
+      deriving (Eq,Ord,Enum,Read,Show,Data,Typeable,Generic)
+
+instance Hashable EventsListChargeType
+
+instance FromText EventsListChargeType where
+    fromText = \case
+        "credit" -> Just Credit
+        "debit" -> Just Debit
+        "monthly_minimum" -> Just MonthlyMinimum
+        "other" -> Just Other
+        "slotting_fee" -> Just SlottingFee
+        "tier_bonus" -> Just TierBonus
+        _ -> Nothing
+
+instance ToText EventsListChargeType where
+    toText = \case
+        Credit -> "credit"
+        Debit -> "debit"
+        MonthlyMinimum -> "monthly_minimum"
+        Other -> "other"
+        SlottingFee -> "slotting_fee"
+        TierBonus -> "tier_bonus"
+
+instance FromJSON EventsListChargeType where
+    parseJSON = parseJSONText "EventsListChargeType"
+
+instance ToJSON EventsListChargeType where
+    toJSON = toJSONText
+
+-- | Filters out all publishers for which do not have the given relationship
+-- status with the requesting publisher.
+data PublishersListRelationshipStatus
+    = PLRSApproved
+      -- ^ @approved@
+      -- Publishers you\'ve approved to your program.
+    | PLRSAvailable
+      -- ^ @available@
+      -- Publishers available for you to recruit.
+    | PLRSDeactivated
+      -- ^ @deactivated@
+      -- A publisher that you terminated from your program. Publishers also have
+      -- the ability to remove themselves from your program.
+    | PLRSDeclined
+      -- ^ @declined@
+      -- A publisher that you did not approve to your program.
+    | PLRSPending
+      -- ^ @pending@
+      -- Publishers that have applied to your program. We recommend reviewing and
+      -- deciding on pending publishers on a weekly basis.
+      deriving (Eq,Ord,Enum,Read,Show,Data,Typeable,Generic)
+
+instance Hashable PublishersListRelationshipStatus
+
+instance FromText PublishersListRelationshipStatus where
+    fromText = \case
+        "approved" -> Just PLRSApproved
+        "available" -> Just PLRSAvailable
+        "deactivated" -> Just PLRSDeactivated
+        "declined" -> Just PLRSDeclined
+        "pending" -> Just PLRSPending
+        _ -> Nothing
+
+instance ToText PublishersListRelationshipStatus where
+    toText = \case
+        PLRSApproved -> "approved"
+        PLRSAvailable -> "available"
+        PLRSDeactivated -> "deactivated"
+        PLRSDeclined -> "declined"
+        PLRSPending -> "pending"
+
+instance FromJSON PublishersListRelationshipStatus where
+    parseJSON = parseJSONText "PublishersListRelationshipStatus"
+
+instance ToJSON PublishersListRelationshipStatus where
+    toJSON = toJSONText
+
+-- | The role of the requester. Valid values: \'advertisers\' or
+-- \'publishers\'.
+data ReportsGetRole
+    = RGRAdvertisers
+      -- ^ @advertisers@
+      -- The requester is requesting as an advertiser.
+    | RGRPublishers
+      -- ^ @publishers@
+      -- The requester is requesting as a publisher.
+      deriving (Eq,Ord,Enum,Read,Show,Data,Typeable,Generic)
+
+instance Hashable ReportsGetRole
+
+instance FromText ReportsGetRole where
+    fromText = \case
+        "advertisers" -> Just RGRAdvertisers
+        "publishers" -> Just RGRPublishers
+        _ -> Nothing
+
+instance ToText ReportsGetRole where
+    toText = \case
+        RGRAdvertisers -> "advertisers"
+        RGRPublishers -> "publishers"
+
+instance FromJSON ReportsGetRole where
+    parseJSON = parseJSONText "ReportsGetRole"
+
+instance ToJSON ReportsGetRole where
+    toJSON = toJSONText
+
+-- | The status of the relationship.
+data LinksListRelationshipStatus
+    = LLRSApproved
+      -- ^ @approved@
+    | LLRSAvailable
+      -- ^ @available@
+      deriving (Eq,Ord,Enum,Read,Show,Data,Typeable,Generic)
+
+instance Hashable LinksListRelationshipStatus
+
+instance FromText LinksListRelationshipStatus where
+    fromText = \case
+        "approved" -> Just LLRSApproved
+        "available" -> Just LLRSAvailable
+        _ -> Nothing
+
+instance ToText LinksListRelationshipStatus where
+    toText = \case
+        LLRSApproved -> "approved"
+        LLRSAvailable -> "available"
+
+instance FromJSON LinksListRelationshipStatus where
+    parseJSON = parseJSONText "LinksListRelationshipStatus"
+
+instance ToJSON LinksListRelationshipStatus where
+    toJSON = toJSONText
+
+-- | Filters out all events that do not have the given status. Valid values:
+-- \'active\', \'canceled\'. Optional.
+data EventsListStatus
+    = ELSActive
+      -- ^ @active@
+      -- Event is currently active.
+    | ELSCanceled
+      -- ^ @canceled@
+      -- Event is currently canceled.
+      deriving (Eq,Ord,Enum,Read,Show,Data,Typeable,Generic)
+
+instance Hashable EventsListStatus
+
+instance FromText EventsListStatus where
+    fromText = \case
+        "active" -> Just ELSActive
+        "canceled" -> Just ELSCanceled
+        _ -> Nothing
+
+instance ToText EventsListStatus where
+    toText = \case
+        ELSActive -> "active"
+        ELSCanceled -> "canceled"
+
+instance FromJSON EventsListStatus where
+    parseJSON = parseJSONText "EventsListStatus"
+
+instance ToJSON EventsListStatus where
+    toJSON = toJSONText
diff --git a/gen/Network/Google/Resource/GAN/Advertisers/Get.hs b/gen/Network/Google/Resource/GAN/Advertisers/Get.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/GAN/Advertisers/Get.hs
@@ -0,0 +1,112 @@
+{-# 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.GAN.Advertisers.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)
+--
+-- Retrieves data about a single advertiser if that the requesting
+-- advertiser\/publisher has access to it. Only publishers can lookup
+-- advertisers. Advertisers can request information about themselves by
+-- omitting the advertiserId query parameter.
+--
+-- /See:/ <https://developers.google.com/affiliate-network/ Google Affiliate Network API Reference> for @gan.advertisers.get@.
+module Network.Google.Resource.GAN.Advertisers.Get
+    (
+    -- * REST Resource
+      AdvertisersGetResource
+
+    -- * Creating a Request
+    , advertisersGet
+    , AdvertisersGet
+
+    -- * Request Lenses
+    , agAdvertiserId
+    , agRoleId
+    , agRole
+    ) where
+
+import           Network.Google.Affiliates.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @gan.advertisers.get@ method which the
+-- 'AdvertisersGet' request conforms to.
+type AdvertisersGetResource =
+     "gan" :>
+       "v1beta1" :>
+         Capture "role" AdvertisersGetRole :>
+           Capture "roleId" Text :>
+             "advertiser" :>
+               QueryParam "advertiserId" Text :>
+                 QueryParam "alt" AltJSON :> Get '[JSON] Advertiser
+
+-- | Retrieves data about a single advertiser if that the requesting
+-- advertiser\/publisher has access to it. Only publishers can lookup
+-- advertisers. Advertisers can request information about themselves by
+-- omitting the advertiserId query parameter.
+--
+-- /See:/ 'advertisersGet' smart constructor.
+data AdvertisersGet = AdvertisersGet
+    { _agAdvertiserId :: !(Maybe Text)
+    , _agRoleId       :: !Text
+    , _agRole         :: !AdvertisersGetRole
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'AdvertisersGet' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'agAdvertiserId'
+--
+-- * 'agRoleId'
+--
+-- * 'agRole'
+advertisersGet
+    :: Text -- ^ 'agRoleId'
+    -> AdvertisersGetRole -- ^ 'agRole'
+    -> AdvertisersGet
+advertisersGet pAgRoleId_ pAgRole_ =
+    AdvertisersGet
+    { _agAdvertiserId = Nothing
+    , _agRoleId = pAgRoleId_
+    , _agRole = pAgRole_
+    }
+
+-- | The ID of the advertiser to look up. Optional.
+agAdvertiserId :: Lens' AdvertisersGet (Maybe Text)
+agAdvertiserId
+  = lens _agAdvertiserId
+      (\ s a -> s{_agAdvertiserId = a})
+
+-- | The ID of the requesting advertiser or publisher.
+agRoleId :: Lens' AdvertisersGet Text
+agRoleId = lens _agRoleId (\ s a -> s{_agRoleId = a})
+
+-- | The role of the requester. Valid values: \'advertisers\' or
+-- \'publishers\'.
+agRole :: Lens' AdvertisersGet AdvertisersGetRole
+agRole = lens _agRole (\ s a -> s{_agRole = a})
+
+instance GoogleRequest AdvertisersGet where
+        type Rs AdvertisersGet = Advertiser
+        requestClient AdvertisersGet{..}
+          = go _agRole _agRoleId _agAdvertiserId (Just AltJSON)
+              affiliatesService
+          where go
+                  = buildClient (Proxy :: Proxy AdvertisersGetResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/GAN/Advertisers/List.hs b/gen/Network/Google/Resource/GAN/Advertisers/List.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/GAN/Advertisers/List.hs
@@ -0,0 +1,203 @@
+{-# 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.GAN.Advertisers.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)
+--
+-- Retrieves data about all advertisers that the requesting
+-- advertiser\/publisher has access to.
+--
+-- /See:/ <https://developers.google.com/affiliate-network/ Google Affiliate Network API Reference> for @gan.advertisers.list@.
+module Network.Google.Resource.GAN.Advertisers.List
+    (
+    -- * REST Resource
+      AdvertisersListResource
+
+    -- * Creating a Request
+    , advertisersList
+    , AdvertisersList
+
+    -- * Request Lenses
+    , alRelationshipStatus
+    , alMinSevenDayEpc
+    , alRoleId
+    , alMinNinetyDayEpc
+    , alRole
+    , alMinPayoutRank
+    , alAdvertiserCategory
+    , alPageToken
+    , alMaxResults
+    ) where
+
+import           Network.Google.Affiliates.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @gan.advertisers.list@ method which the
+-- 'AdvertisersList' request conforms to.
+type AdvertisersListResource =
+     "gan" :>
+       "v1beta1" :>
+         Capture "role" AdvertisersListRole :>
+           Capture "roleId" Text :>
+             "advertisers" :>
+               QueryParam "relationshipStatus"
+                 AdvertisersListRelationshipStatus
+                 :>
+                 QueryParam "minSevenDayEpc" (Textual Double) :>
+                   QueryParam "minNinetyDayEpc" (Textual Double) :>
+                     QueryParam "minPayoutRank" (Textual Int32) :>
+                       QueryParam "advertiserCategory" Text :>
+                         QueryParam "pageToken" Text :>
+                           QueryParam "maxResults" (Textual Word32) :>
+                             QueryParam "alt" AltJSON :> Get '[JSON] Advertisers
+
+-- | Retrieves data about all advertisers that the requesting
+-- advertiser\/publisher has access to.
+--
+-- /See:/ 'advertisersList' smart constructor.
+data AdvertisersList = AdvertisersList
+    { _alRelationshipStatus :: !(Maybe AdvertisersListRelationshipStatus)
+    , _alMinSevenDayEpc     :: !(Maybe (Textual Double))
+    , _alRoleId             :: !Text
+    , _alMinNinetyDayEpc    :: !(Maybe (Textual Double))
+    , _alRole               :: !AdvertisersListRole
+    , _alMinPayoutRank      :: !(Maybe (Textual Int32))
+    , _alAdvertiserCategory :: !(Maybe Text)
+    , _alPageToken          :: !(Maybe Text)
+    , _alMaxResults         :: !(Maybe (Textual Word32))
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'AdvertisersList' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'alRelationshipStatus'
+--
+-- * 'alMinSevenDayEpc'
+--
+-- * 'alRoleId'
+--
+-- * 'alMinNinetyDayEpc'
+--
+-- * 'alRole'
+--
+-- * 'alMinPayoutRank'
+--
+-- * 'alAdvertiserCategory'
+--
+-- * 'alPageToken'
+--
+-- * 'alMaxResults'
+advertisersList
+    :: Text -- ^ 'alRoleId'
+    -> AdvertisersListRole -- ^ 'alRole'
+    -> AdvertisersList
+advertisersList pAlRoleId_ pAlRole_ =
+    AdvertisersList
+    { _alRelationshipStatus = Nothing
+    , _alMinSevenDayEpc = Nothing
+    , _alRoleId = pAlRoleId_
+    , _alMinNinetyDayEpc = Nothing
+    , _alRole = pAlRole_
+    , _alMinPayoutRank = Nothing
+    , _alAdvertiserCategory = Nothing
+    , _alPageToken = Nothing
+    , _alMaxResults = Nothing
+    }
+
+-- | Filters out all advertisers for which do not have the given relationship
+-- status with the requesting publisher.
+alRelationshipStatus :: Lens' AdvertisersList (Maybe AdvertisersListRelationshipStatus)
+alRelationshipStatus
+  = lens _alRelationshipStatus
+      (\ s a -> s{_alRelationshipStatus = a})
+
+-- | Filters out all advertisers that have a seven day EPC average lower than
+-- the given value (inclusive). Min value: 0.0. Optional.
+alMinSevenDayEpc :: Lens' AdvertisersList (Maybe Double)
+alMinSevenDayEpc
+  = lens _alMinSevenDayEpc
+      (\ s a -> s{_alMinSevenDayEpc = a})
+      . mapping _Coerce
+
+-- | The ID of the requesting advertiser or publisher.
+alRoleId :: Lens' AdvertisersList Text
+alRoleId = lens _alRoleId (\ s a -> s{_alRoleId = a})
+
+-- | Filters out all advertisers that have a ninety day EPC average lower
+-- than the given value (inclusive). Min value: 0.0. Optional.
+alMinNinetyDayEpc :: Lens' AdvertisersList (Maybe Double)
+alMinNinetyDayEpc
+  = lens _alMinNinetyDayEpc
+      (\ s a -> s{_alMinNinetyDayEpc = a})
+      . mapping _Coerce
+
+-- | The role of the requester. Valid values: \'advertisers\' or
+-- \'publishers\'.
+alRole :: Lens' AdvertisersList AdvertisersListRole
+alRole = lens _alRole (\ s a -> s{_alRole = a})
+
+-- | A value between 1 and 4, where 1 represents the quartile of advertisers
+-- with the lowest ranks and 4 represents the quartile of advertisers with
+-- the highest ranks. Filters out all advertisers with a lower rank than
+-- the given quartile. For example if a 2 was given only advertisers with a
+-- payout rank of 25 or higher would be included. Optional.
+alMinPayoutRank :: Lens' AdvertisersList (Maybe Int32)
+alMinPayoutRank
+  = lens _alMinPayoutRank
+      (\ s a -> s{_alMinPayoutRank = a})
+      . mapping _Coerce
+
+-- | Caret(^) delimted list of advertiser categories. Valid categories are
+-- defined here:
+-- http:\/\/www.google.com\/support\/affiliatenetwork\/advertiser\/bin\/answer.py?hl=en&answer=107581.
+-- Filters out all advertisers not in one of the given advertiser
+-- categories. Optional.
+alAdvertiserCategory :: Lens' AdvertisersList (Maybe Text)
+alAdvertiserCategory
+  = lens _alAdvertiserCategory
+      (\ s a -> s{_alAdvertiserCategory = a})
+
+-- | The value of \'nextPageToken\' from the previous page. Optional.
+alPageToken :: Lens' AdvertisersList (Maybe Text)
+alPageToken
+  = lens _alPageToken (\ s a -> s{_alPageToken = a})
+
+-- | Max number of items to return in this page. Optional. Defaults to 20.
+alMaxResults :: Lens' AdvertisersList (Maybe Word32)
+alMaxResults
+  = lens _alMaxResults (\ s a -> s{_alMaxResults = a})
+      . mapping _Coerce
+
+instance GoogleRequest AdvertisersList where
+        type Rs AdvertisersList = Advertisers
+        requestClient AdvertisersList{..}
+          = go _alRole _alRoleId _alRelationshipStatus
+              _alMinSevenDayEpc
+              _alMinNinetyDayEpc
+              _alMinPayoutRank
+              _alAdvertiserCategory
+              _alPageToken
+              _alMaxResults
+              (Just AltJSON)
+              affiliatesService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy AdvertisersListResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/GAN/CcOffers/List.hs b/gen/Network/Google/Resource/GAN/CcOffers/List.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/GAN/CcOffers/List.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.GAN.CcOffers.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)
+--
+-- Retrieves credit card offers for the given publisher.
+--
+-- /See:/ <https://developers.google.com/affiliate-network/ Google Affiliate Network API Reference> for @gan.ccOffers.list@.
+module Network.Google.Resource.GAN.CcOffers.List
+    (
+    -- * REST Resource
+      CcOffersListResource
+
+    -- * Creating a Request
+    , ccOffersList
+    , CcOffersList
+
+    -- * Request Lenses
+    , colAdvertiser
+    , colProjection
+    , colPublisher
+    ) where
+
+import           Network.Google.Affiliates.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @gan.ccOffers.list@ method which the
+-- 'CcOffersList' request conforms to.
+type CcOffersListResource =
+     "gan" :>
+       "v1beta1" :>
+         "publishers" :>
+           Capture "publisher" Text :>
+             "ccOffers" :>
+               QueryParams "advertiser" Text :>
+                 QueryParam "projection" CcOffersListProjection :>
+                   QueryParam "alt" AltJSON :> Get '[JSON] CcOffers
+
+-- | Retrieves credit card offers for the given publisher.
+--
+-- /See:/ 'ccOffersList' smart constructor.
+data CcOffersList = CcOffersList
+    { _colAdvertiser :: !(Maybe [Text])
+    , _colProjection :: !(Maybe CcOffersListProjection)
+    , _colPublisher  :: !Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'CcOffersList' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'colAdvertiser'
+--
+-- * 'colProjection'
+--
+-- * 'colPublisher'
+ccOffersList
+    :: Text -- ^ 'colPublisher'
+    -> CcOffersList
+ccOffersList pColPublisher_ =
+    CcOffersList
+    { _colAdvertiser = Nothing
+    , _colProjection = Nothing
+    , _colPublisher = pColPublisher_
+    }
+
+-- | The advertiser ID of a card issuer whose offers to include. Optional,
+-- may be repeated.
+colAdvertiser :: Lens' CcOffersList [Text]
+colAdvertiser
+  = lens _colAdvertiser
+      (\ s a -> s{_colAdvertiser = a})
+      . _Default
+      . _Coerce
+
+-- | The set of fields to return.
+colProjection :: Lens' CcOffersList (Maybe CcOffersListProjection)
+colProjection
+  = lens _colProjection
+      (\ s a -> s{_colProjection = a})
+
+-- | The ID of the publisher in question.
+colPublisher :: Lens' CcOffersList Text
+colPublisher
+  = lens _colPublisher (\ s a -> s{_colPublisher = a})
+
+instance GoogleRequest CcOffersList where
+        type Rs CcOffersList = CcOffers
+        requestClient CcOffersList{..}
+          = go _colPublisher (_colAdvertiser ^. _Default)
+              _colProjection
+              (Just AltJSON)
+              affiliatesService
+          where go
+                  = buildClient (Proxy :: Proxy CcOffersListResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/GAN/Events/List.hs b/gen/Network/Google/Resource/GAN/Events/List.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/GAN/Events/List.hs
@@ -0,0 +1,312 @@
+{-# 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.GAN.Events.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)
+--
+-- Retrieves event data for a given advertiser\/publisher.
+--
+-- /See:/ <https://developers.google.com/affiliate-network/ Google Affiliate Network API Reference> for @gan.events.list@.
+module Network.Google.Resource.GAN.Events.List
+    (
+    -- * REST Resource
+      EventsListResource
+
+    -- * Creating a Request
+    , eventsList
+    , EventsList
+
+    -- * Request Lenses
+    , elStatus
+    , elEventDateMin
+    , elChargeType
+    , elMemberId
+    , elModifyDateMax
+    , elAdvertiserId
+    , elModifyDateMin
+    , elRoleId
+    , elRole
+    , elEventDateMax
+    , elSKU
+    , elLinkId
+    , elPageToken
+    , elType
+    , elOrderId
+    , elPublisherId
+    , elProductCategory
+    , elMaxResults
+    ) where
+
+import           Network.Google.Affiliates.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @gan.events.list@ method which the
+-- 'EventsList' request conforms to.
+type EventsListResource =
+     "gan" :>
+       "v1beta1" :>
+         Capture "role" EventsListRole :>
+           Capture "roleId" Text :>
+             "events" :>
+               QueryParam "status" EventsListStatus :>
+                 QueryParam "eventDateMin" Text :>
+                   QueryParam "chargeType" EventsListChargeType :>
+                     QueryParam "memberId" Text :>
+                       QueryParam "modifyDateMax" Text :>
+                         QueryParam "advertiserId" Text :>
+                           QueryParam "modifyDateMin" Text :>
+                             QueryParam "eventDateMax" Text :>
+                               QueryParam "sku" Text :>
+                                 QueryParam "linkId" Text :>
+                                   QueryParam "pageToken" Text :>
+                                     QueryParam "type" EventsListType :>
+                                       QueryParam "orderId" Text :>
+                                         QueryParam "publisherId" Text :>
+                                           QueryParam "productCategory" Text :>
+                                             QueryParam "maxResults"
+                                               (Textual Word32)
+                                               :>
+                                               QueryParam "alt" AltJSON :>
+                                                 Get '[JSON] Events
+
+-- | Retrieves event data for a given advertiser\/publisher.
+--
+-- /See:/ 'eventsList' smart constructor.
+data EventsList = EventsList
+    { _elStatus          :: !(Maybe EventsListStatus)
+    , _elEventDateMin    :: !(Maybe Text)
+    , _elChargeType      :: !(Maybe EventsListChargeType)
+    , _elMemberId        :: !(Maybe Text)
+    , _elModifyDateMax   :: !(Maybe Text)
+    , _elAdvertiserId    :: !(Maybe Text)
+    , _elModifyDateMin   :: !(Maybe Text)
+    , _elRoleId          :: !Text
+    , _elRole            :: !EventsListRole
+    , _elEventDateMax    :: !(Maybe Text)
+    , _elSKU             :: !(Maybe Text)
+    , _elLinkId          :: !(Maybe Text)
+    , _elPageToken       :: !(Maybe Text)
+    , _elType            :: !(Maybe EventsListType)
+    , _elOrderId         :: !(Maybe Text)
+    , _elPublisherId     :: !(Maybe Text)
+    , _elProductCategory :: !(Maybe Text)
+    , _elMaxResults      :: !(Maybe (Textual Word32))
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'EventsList' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'elStatus'
+--
+-- * 'elEventDateMin'
+--
+-- * 'elChargeType'
+--
+-- * 'elMemberId'
+--
+-- * 'elModifyDateMax'
+--
+-- * 'elAdvertiserId'
+--
+-- * 'elModifyDateMin'
+--
+-- * 'elRoleId'
+--
+-- * 'elRole'
+--
+-- * 'elEventDateMax'
+--
+-- * 'elSKU'
+--
+-- * 'elLinkId'
+--
+-- * 'elPageToken'
+--
+-- * 'elType'
+--
+-- * 'elOrderId'
+--
+-- * 'elPublisherId'
+--
+-- * 'elProductCategory'
+--
+-- * 'elMaxResults'
+eventsList
+    :: Text -- ^ 'elRoleId'
+    -> EventsListRole -- ^ 'elRole'
+    -> EventsList
+eventsList pElRoleId_ pElRole_ =
+    EventsList
+    { _elStatus = Nothing
+    , _elEventDateMin = Nothing
+    , _elChargeType = Nothing
+    , _elMemberId = Nothing
+    , _elModifyDateMax = Nothing
+    , _elAdvertiserId = Nothing
+    , _elModifyDateMin = Nothing
+    , _elRoleId = pElRoleId_
+    , _elRole = pElRole_
+    , _elEventDateMax = Nothing
+    , _elSKU = Nothing
+    , _elLinkId = Nothing
+    , _elPageToken = Nothing
+    , _elType = Nothing
+    , _elOrderId = Nothing
+    , _elPublisherId = Nothing
+    , _elProductCategory = Nothing
+    , _elMaxResults = Nothing
+    }
+
+-- | Filters out all events that do not have the given status. Valid values:
+-- \'active\', \'canceled\'. Optional.
+elStatus :: Lens' EventsList (Maybe EventsListStatus)
+elStatus = lens _elStatus (\ s a -> s{_elStatus = a})
+
+-- | Filters out all events earlier than given date. Optional. Defaults to 24
+-- hours from current date\/time.
+elEventDateMin :: Lens' EventsList (Maybe Text)
+elEventDateMin
+  = lens _elEventDateMin
+      (\ s a -> s{_elEventDateMin = a})
+
+-- | Filters out all charge events that are not of the given charge type.
+-- Valid values: \'other\', \'slotting_fee\', \'monthly_minimum\',
+-- \'tier_bonus\', \'credit\', \'debit\'. Optional.
+elChargeType :: Lens' EventsList (Maybe EventsListChargeType)
+elChargeType
+  = lens _elChargeType (\ s a -> s{_elChargeType = a})
+
+-- | Caret(^) delimited list of member IDs. Filters out all events that do
+-- not reference one of the given member IDs. Optional.
+elMemberId :: Lens' EventsList (Maybe Text)
+elMemberId
+  = lens _elMemberId (\ s a -> s{_elMemberId = a})
+
+-- | Filters out all events modified later than given date. Optional.
+-- Defaults to 24 hours after modifyDateMin, if modifyDateMin is explicitly
+-- set.
+elModifyDateMax :: Lens' EventsList (Maybe Text)
+elModifyDateMax
+  = lens _elModifyDateMax
+      (\ s a -> s{_elModifyDateMax = a})
+
+-- | Caret(^) delimited list of advertiser IDs. Filters out all events that
+-- do not reference one of the given advertiser IDs. Only used when under
+-- publishers role. Optional.
+elAdvertiserId :: Lens' EventsList (Maybe Text)
+elAdvertiserId
+  = lens _elAdvertiserId
+      (\ s a -> s{_elAdvertiserId = a})
+
+-- | Filters out all events modified earlier than given date. Optional.
+-- Defaults to 24 hours before the current modifyDateMax, if modifyDateMax
+-- is explicitly set.
+elModifyDateMin :: Lens' EventsList (Maybe Text)
+elModifyDateMin
+  = lens _elModifyDateMin
+      (\ s a -> s{_elModifyDateMin = a})
+
+-- | The ID of the requesting advertiser or publisher.
+elRoleId :: Lens' EventsList Text
+elRoleId = lens _elRoleId (\ s a -> s{_elRoleId = a})
+
+-- | The role of the requester. Valid values: \'advertisers\' or
+-- \'publishers\'.
+elRole :: Lens' EventsList EventsListRole
+elRole = lens _elRole (\ s a -> s{_elRole = a})
+
+-- | Filters out all events later than given date. Optional. Defaults to 24
+-- hours after eventMin.
+elEventDateMax :: Lens' EventsList (Maybe Text)
+elEventDateMax
+  = lens _elEventDateMax
+      (\ s a -> s{_elEventDateMax = a})
+
+-- | Caret(^) delimited list of SKUs. Filters out all events that do not
+-- reference one of the given SKU. Optional.
+elSKU :: Lens' EventsList (Maybe Text)
+elSKU = lens _elSKU (\ s a -> s{_elSKU = a})
+
+-- | Caret(^) delimited list of link IDs. Filters out all events that do not
+-- reference one of the given link IDs. Optional.
+elLinkId :: Lens' EventsList (Maybe Text)
+elLinkId = lens _elLinkId (\ s a -> s{_elLinkId = a})
+
+-- | The value of \'nextPageToken\' from the previous page. Optional.
+elPageToken :: Lens' EventsList (Maybe Text)
+elPageToken
+  = lens _elPageToken (\ s a -> s{_elPageToken = a})
+
+-- | Filters out all events that are not of the given type. Valid values:
+-- \'action\', \'transaction\', \'charge\'. Optional.
+elType :: Lens' EventsList (Maybe EventsListType)
+elType = lens _elType (\ s a -> s{_elType = a})
+
+-- | Caret(^) delimited list of order IDs. Filters out all events that do not
+-- reference one of the given order IDs. Optional.
+elOrderId :: Lens' EventsList (Maybe Text)
+elOrderId
+  = lens _elOrderId (\ s a -> s{_elOrderId = a})
+
+-- | Caret(^) delimited list of publisher IDs. Filters out all events that do
+-- not reference one of the given publishers IDs. Only used when under
+-- advertiser role. Optional.
+elPublisherId :: Lens' EventsList (Maybe Text)
+elPublisherId
+  = lens _elPublisherId
+      (\ s a -> s{_elPublisherId = a})
+
+-- | Caret(^) delimited list of product categories. Filters out all events
+-- that do not reference a product in one of the given product categories.
+-- Optional.
+elProductCategory :: Lens' EventsList (Maybe Text)
+elProductCategory
+  = lens _elProductCategory
+      (\ s a -> s{_elProductCategory = a})
+
+-- | Max number of offers to return in this page. Optional. Defaults to 20.
+elMaxResults :: Lens' EventsList (Maybe Word32)
+elMaxResults
+  = lens _elMaxResults (\ s a -> s{_elMaxResults = a})
+      . mapping _Coerce
+
+instance GoogleRequest EventsList where
+        type Rs EventsList = Events
+        requestClient EventsList{..}
+          = go _elRole _elRoleId _elStatus _elEventDateMin
+              _elChargeType
+              _elMemberId
+              _elModifyDateMax
+              _elAdvertiserId
+              _elModifyDateMin
+              _elEventDateMax
+              _elSKU
+              _elLinkId
+              _elPageToken
+              _elType
+              _elOrderId
+              _elPublisherId
+              _elProductCategory
+              _elMaxResults
+              (Just AltJSON)
+              affiliatesService
+          where go
+                  = buildClient (Proxy :: Proxy EventsListResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/GAN/Links/Get.hs b/gen/Network/Google/Resource/GAN/Links/Get.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/GAN/Links/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.GAN.Links.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)
+--
+-- Retrieves data about a single link if the requesting
+-- advertiser\/publisher has access to it. Advertisers can look up their
+-- own links. Publishers can look up visible links or links belonging to
+-- advertisers they are in a relationship with.
+--
+-- /See:/ <https://developers.google.com/affiliate-network/ Google Affiliate Network API Reference> for @gan.links.get@.
+module Network.Google.Resource.GAN.Links.Get
+    (
+    -- * REST Resource
+      LinksGetResource
+
+    -- * Creating a Request
+    , linksGet
+    , LinksGet
+
+    -- * Request Lenses
+    , lgRoleId
+    , lgRole
+    , lgLinkId
+    ) where
+
+import           Network.Google.Affiliates.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @gan.links.get@ method which the
+-- 'LinksGet' request conforms to.
+type LinksGetResource =
+     "gan" :>
+       "v1beta1" :>
+         Capture "role" LinksGetRole :>
+           Capture "roleId" Text :>
+             "link" :>
+               Capture "linkId" (Textual Int64) :>
+                 QueryParam "alt" AltJSON :> Get '[JSON] Link
+
+-- | Retrieves data about a single link if the requesting
+-- advertiser\/publisher has access to it. Advertisers can look up their
+-- own links. Publishers can look up visible links or links belonging to
+-- advertisers they are in a relationship with.
+--
+-- /See:/ 'linksGet' smart constructor.
+data LinksGet = LinksGet
+    { _lgRoleId :: !Text
+    , _lgRole   :: !LinksGetRole
+    , _lgLinkId :: !(Textual Int64)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'LinksGet' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'lgRoleId'
+--
+-- * 'lgRole'
+--
+-- * 'lgLinkId'
+linksGet
+    :: Text -- ^ 'lgRoleId'
+    -> LinksGetRole -- ^ 'lgRole'
+    -> Int64 -- ^ 'lgLinkId'
+    -> LinksGet
+linksGet pLgRoleId_ pLgRole_ pLgLinkId_ =
+    LinksGet
+    { _lgRoleId = pLgRoleId_
+    , _lgRole = pLgRole_
+    , _lgLinkId = _Coerce # pLgLinkId_
+    }
+
+-- | The ID of the requesting advertiser or publisher.
+lgRoleId :: Lens' LinksGet Text
+lgRoleId = lens _lgRoleId (\ s a -> s{_lgRoleId = a})
+
+-- | The role of the requester. Valid values: \'advertisers\' or
+-- \'publishers\'.
+lgRole :: Lens' LinksGet LinksGetRole
+lgRole = lens _lgRole (\ s a -> s{_lgRole = a})
+
+-- | The ID of the link to look up.
+lgLinkId :: Lens' LinksGet Int64
+lgLinkId
+  = lens _lgLinkId (\ s a -> s{_lgLinkId = a}) .
+      _Coerce
+
+instance GoogleRequest LinksGet where
+        type Rs LinksGet = Link
+        requestClient LinksGet{..}
+          = go _lgRole _lgRoleId _lgLinkId (Just AltJSON)
+              affiliatesService
+          where go
+                  = buildClient (Proxy :: Proxy LinksGetResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/GAN/Links/Insert.hs b/gen/Network/Google/Resource/GAN/Links/Insert.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/GAN/Links/Insert.hs
@@ -0,0 +1,106 @@
+{-# 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.GAN.Links.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)
+--
+-- Inserts a new link.
+--
+-- /See:/ <https://developers.google.com/affiliate-network/ Google Affiliate Network API Reference> for @gan.links.insert@.
+module Network.Google.Resource.GAN.Links.Insert
+    (
+    -- * REST Resource
+      LinksInsertResource
+
+    -- * Creating a Request
+    , linksInsert
+    , LinksInsert
+
+    -- * Request Lenses
+    , liPayload
+    , liRoleId
+    , liRole
+    ) where
+
+import           Network.Google.Affiliates.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @gan.links.insert@ method which the
+-- 'LinksInsert' request conforms to.
+type LinksInsertResource =
+     "gan" :>
+       "v1beta1" :>
+         Capture "role" LinksInsertRole :>
+           Capture "roleId" Text :>
+             "link" :>
+               QueryParam "alt" AltJSON :>
+                 ReqBody '[JSON] Link :> Post '[JSON] Link
+
+-- | Inserts a new link.
+--
+-- /See:/ 'linksInsert' smart constructor.
+data LinksInsert = LinksInsert
+    { _liPayload :: !Link
+    , _liRoleId  :: !Text
+    , _liRole    :: !LinksInsertRole
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'LinksInsert' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'liPayload'
+--
+-- * 'liRoleId'
+--
+-- * 'liRole'
+linksInsert
+    :: Link -- ^ 'liPayload'
+    -> Text -- ^ 'liRoleId'
+    -> LinksInsertRole -- ^ 'liRole'
+    -> LinksInsert
+linksInsert pLiPayload_ pLiRoleId_ pLiRole_ =
+    LinksInsert
+    { _liPayload = pLiPayload_
+    , _liRoleId = pLiRoleId_
+    , _liRole = pLiRole_
+    }
+
+-- | Multipart request metadata.
+liPayload :: Lens' LinksInsert Link
+liPayload
+  = lens _liPayload (\ s a -> s{_liPayload = a})
+
+-- | The ID of the requesting advertiser or publisher.
+liRoleId :: Lens' LinksInsert Text
+liRoleId = lens _liRoleId (\ s a -> s{_liRoleId = a})
+
+-- | The role of the requester. Valid values: \'advertisers\' or
+-- \'publishers\'.
+liRole :: Lens' LinksInsert LinksInsertRole
+liRole = lens _liRole (\ s a -> s{_liRole = a})
+
+instance GoogleRequest LinksInsert where
+        type Rs LinksInsert = Link
+        requestClient LinksInsert{..}
+          = go _liRole _liRoleId (Just AltJSON) _liPayload
+              affiliatesService
+          where go
+                  = buildClient (Proxy :: Proxy LinksInsertResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/GAN/Links/List.hs b/gen/Network/Google/Resource/GAN/Links/List.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/GAN/Links/List.hs
@@ -0,0 +1,269 @@
+{-# 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.GAN.Links.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)
+--
+-- Retrieves all links that match the query parameters.
+--
+-- /See:/ <https://developers.google.com/affiliate-network/ Google Affiliate Network API Reference> for @gan.links.list@.
+module Network.Google.Resource.GAN.Links.List
+    (
+    -- * REST Resource
+      LinksListResource
+
+    -- * Creating a Request
+    , linksList
+    , LinksList
+
+    -- * Request Lenses
+    , llCreateDateMax
+    , llAuthorship
+    , llAssetSize
+    , llRelationshipStatus
+    , llAdvertiserId
+    , llSearchText
+    , llPromotionType
+    , llRoleId
+    , llRole
+    , llCreateDateMin
+    , llLinkType
+    , llPageToken
+    , llStartDateMax
+    , llStartDateMin
+    , llMaxResults
+    ) where
+
+import           Network.Google.Affiliates.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @gan.links.list@ method which the
+-- 'LinksList' request conforms to.
+type LinksListResource =
+     "gan" :>
+       "v1beta1" :>
+         Capture "role" LinksListRole :>
+           Capture "roleId" Text :>
+             "links" :>
+               QueryParam "createDateMax" Text :>
+                 QueryParam "authorship" LinksListAuthorship :>
+                   QueryParams "assetSize" Text :>
+                     QueryParam "relationshipStatus"
+                       LinksListRelationshipStatus
+                       :>
+                       QueryParams "advertiserId" (Textual Int64) :>
+                         QueryParam "searchText" Text :>
+                           QueryParams "promotionType" LinksListPromotionType :>
+                             QueryParam "createDateMin" Text :>
+                               QueryParam "linkType" LinksListLinkType :>
+                                 QueryParam "pageToken" Text :>
+                                   QueryParam "startDateMax" Text :>
+                                     QueryParam "startDateMin" Text :>
+                                       QueryParam "maxResults" (Textual Word32)
+                                         :>
+                                         QueryParam "alt" AltJSON :>
+                                           Get '[JSON] Links
+
+-- | Retrieves all links that match the query parameters.
+--
+-- /See:/ 'linksList' smart constructor.
+data LinksList = LinksList
+    { _llCreateDateMax      :: !(Maybe Text)
+    , _llAuthorship         :: !(Maybe LinksListAuthorship)
+    , _llAssetSize          :: !(Maybe [Text])
+    , _llRelationshipStatus :: !(Maybe LinksListRelationshipStatus)
+    , _llAdvertiserId       :: !(Maybe [Textual Int64])
+    , _llSearchText         :: !(Maybe Text)
+    , _llPromotionType      :: !(Maybe [LinksListPromotionType])
+    , _llRoleId             :: !Text
+    , _llRole               :: !LinksListRole
+    , _llCreateDateMin      :: !(Maybe Text)
+    , _llLinkType           :: !(Maybe LinksListLinkType)
+    , _llPageToken          :: !(Maybe Text)
+    , _llStartDateMax       :: !(Maybe Text)
+    , _llStartDateMin       :: !(Maybe Text)
+    , _llMaxResults         :: !(Maybe (Textual Word32))
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'LinksList' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'llCreateDateMax'
+--
+-- * 'llAuthorship'
+--
+-- * 'llAssetSize'
+--
+-- * 'llRelationshipStatus'
+--
+-- * 'llAdvertiserId'
+--
+-- * 'llSearchText'
+--
+-- * 'llPromotionType'
+--
+-- * 'llRoleId'
+--
+-- * 'llRole'
+--
+-- * 'llCreateDateMin'
+--
+-- * 'llLinkType'
+--
+-- * 'llPageToken'
+--
+-- * 'llStartDateMax'
+--
+-- * 'llStartDateMin'
+--
+-- * 'llMaxResults'
+linksList
+    :: Text -- ^ 'llRoleId'
+    -> LinksListRole -- ^ 'llRole'
+    -> LinksList
+linksList pLlRoleId_ pLlRole_ =
+    LinksList
+    { _llCreateDateMax = Nothing
+    , _llAuthorship = Nothing
+    , _llAssetSize = Nothing
+    , _llRelationshipStatus = Nothing
+    , _llAdvertiserId = Nothing
+    , _llSearchText = Nothing
+    , _llPromotionType = Nothing
+    , _llRoleId = pLlRoleId_
+    , _llRole = pLlRole_
+    , _llCreateDateMin = Nothing
+    , _llLinkType = Nothing
+    , _llPageToken = Nothing
+    , _llStartDateMax = Nothing
+    , _llStartDateMin = Nothing
+    , _llMaxResults = Nothing
+    }
+
+-- | The end of the create date range.
+llCreateDateMax :: Lens' LinksList (Maybe Text)
+llCreateDateMax
+  = lens _llCreateDateMax
+      (\ s a -> s{_llCreateDateMax = a})
+
+-- | The role of the author of the link.
+llAuthorship :: Lens' LinksList (Maybe LinksListAuthorship)
+llAuthorship
+  = lens _llAuthorship (\ s a -> s{_llAuthorship = a})
+
+-- | The size of the given asset.
+llAssetSize :: Lens' LinksList [Text]
+llAssetSize
+  = lens _llAssetSize (\ s a -> s{_llAssetSize = a}) .
+      _Default
+      . _Coerce
+
+-- | The status of the relationship.
+llRelationshipStatus :: Lens' LinksList (Maybe LinksListRelationshipStatus)
+llRelationshipStatus
+  = lens _llRelationshipStatus
+      (\ s a -> s{_llRelationshipStatus = a})
+
+-- | Limits the resulting links to the ones belonging to the listed
+-- advertisers.
+llAdvertiserId :: Lens' LinksList [Int64]
+llAdvertiserId
+  = lens _llAdvertiserId
+      (\ s a -> s{_llAdvertiserId = a})
+      . _Default
+      . _Coerce
+
+-- | Field for full text search across title and merchandising text, supports
+-- link id search.
+llSearchText :: Lens' LinksList (Maybe Text)
+llSearchText
+  = lens _llSearchText (\ s a -> s{_llSearchText = a})
+
+-- | The promotion type.
+llPromotionType :: Lens' LinksList [LinksListPromotionType]
+llPromotionType
+  = lens _llPromotionType
+      (\ s a -> s{_llPromotionType = a})
+      . _Default
+      . _Coerce
+
+-- | The ID of the requesting advertiser or publisher.
+llRoleId :: Lens' LinksList Text
+llRoleId = lens _llRoleId (\ s a -> s{_llRoleId = a})
+
+-- | The role of the requester. Valid values: \'advertisers\' or
+-- \'publishers\'.
+llRole :: Lens' LinksList LinksListRole
+llRole = lens _llRole (\ s a -> s{_llRole = a})
+
+-- | The beginning of the create date range.
+llCreateDateMin :: Lens' LinksList (Maybe Text)
+llCreateDateMin
+  = lens _llCreateDateMin
+      (\ s a -> s{_llCreateDateMin = a})
+
+-- | The type of the link.
+llLinkType :: Lens' LinksList (Maybe LinksListLinkType)
+llLinkType
+  = lens _llLinkType (\ s a -> s{_llLinkType = a})
+
+-- | The value of \'nextPageToken\' from the previous page. Optional.
+llPageToken :: Lens' LinksList (Maybe Text)
+llPageToken
+  = lens _llPageToken (\ s a -> s{_llPageToken = a})
+
+-- | The end of the start date range.
+llStartDateMax :: Lens' LinksList (Maybe Text)
+llStartDateMax
+  = lens _llStartDateMax
+      (\ s a -> s{_llStartDateMax = a})
+
+-- | The beginning of the start date range.
+llStartDateMin :: Lens' LinksList (Maybe Text)
+llStartDateMin
+  = lens _llStartDateMin
+      (\ s a -> s{_llStartDateMin = a})
+
+-- | Max number of items to return in this page. Optional. Defaults to 20.
+llMaxResults :: Lens' LinksList (Maybe Word32)
+llMaxResults
+  = lens _llMaxResults (\ s a -> s{_llMaxResults = a})
+      . mapping _Coerce
+
+instance GoogleRequest LinksList where
+        type Rs LinksList = Links
+        requestClient LinksList{..}
+          = go _llRole _llRoleId _llCreateDateMax _llAuthorship
+              (_llAssetSize ^. _Default)
+              _llRelationshipStatus
+              (_llAdvertiserId ^. _Default)
+              _llSearchText
+              (_llPromotionType ^. _Default)
+              _llCreateDateMin
+              _llLinkType
+              _llPageToken
+              _llStartDateMax
+              _llStartDateMin
+              _llMaxResults
+              (Just AltJSON)
+              affiliatesService
+          where go
+                  = buildClient (Proxy :: Proxy LinksListResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/GAN/Publishers/Get.hs b/gen/Network/Google/Resource/GAN/Publishers/Get.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/GAN/Publishers/Get.hs
@@ -0,0 +1,112 @@
+{-# 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.GAN.Publishers.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)
+--
+-- Retrieves data about a single advertiser if that the requesting
+-- advertiser\/publisher has access to it. Only advertisers can look up
+-- publishers. Publishers can request information about themselves by
+-- omitting the publisherId query parameter.
+--
+-- /See:/ <https://developers.google.com/affiliate-network/ Google Affiliate Network API Reference> for @gan.publishers.get@.
+module Network.Google.Resource.GAN.Publishers.Get
+    (
+    -- * REST Resource
+      PublishersGetResource
+
+    -- * Creating a Request
+    , publishersGet
+    , PublishersGet
+
+    -- * Request Lenses
+    , pgRoleId
+    , pgRole
+    , pgPublisherId
+    ) where
+
+import           Network.Google.Affiliates.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @gan.publishers.get@ method which the
+-- 'PublishersGet' request conforms to.
+type PublishersGetResource =
+     "gan" :>
+       "v1beta1" :>
+         Capture "role" PublishersGetRole :>
+           Capture "roleId" Text :>
+             "publisher" :>
+               QueryParam "publisherId" Text :>
+                 QueryParam "alt" AltJSON :> Get '[JSON] Publisher
+
+-- | Retrieves data about a single advertiser if that the requesting
+-- advertiser\/publisher has access to it. Only advertisers can look up
+-- publishers. Publishers can request information about themselves by
+-- omitting the publisherId query parameter.
+--
+-- /See:/ 'publishersGet' smart constructor.
+data PublishersGet = PublishersGet
+    { _pgRoleId      :: !Text
+    , _pgRole        :: !PublishersGetRole
+    , _pgPublisherId :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'PublishersGet' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'pgRoleId'
+--
+-- * 'pgRole'
+--
+-- * 'pgPublisherId'
+publishersGet
+    :: Text -- ^ 'pgRoleId'
+    -> PublishersGetRole -- ^ 'pgRole'
+    -> PublishersGet
+publishersGet pPgRoleId_ pPgRole_ =
+    PublishersGet
+    { _pgRoleId = pPgRoleId_
+    , _pgRole = pPgRole_
+    , _pgPublisherId = Nothing
+    }
+
+-- | The ID of the requesting advertiser or publisher.
+pgRoleId :: Lens' PublishersGet Text
+pgRoleId = lens _pgRoleId (\ s a -> s{_pgRoleId = a})
+
+-- | The role of the requester. Valid values: \'advertisers\' or
+-- \'publishers\'.
+pgRole :: Lens' PublishersGet PublishersGetRole
+pgRole = lens _pgRole (\ s a -> s{_pgRole = a})
+
+-- | The ID of the publisher to look up. Optional.
+pgPublisherId :: Lens' PublishersGet (Maybe Text)
+pgPublisherId
+  = lens _pgPublisherId
+      (\ s a -> s{_pgPublisherId = a})
+
+instance GoogleRequest PublishersGet where
+        type Rs PublishersGet = Publisher
+        requestClient PublishersGet{..}
+          = go _pgRole _pgRoleId _pgPublisherId (Just AltJSON)
+              affiliatesService
+          where go
+                  = buildClient (Proxy :: Proxy PublishersGetResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/GAN/Publishers/List.hs b/gen/Network/Google/Resource/GAN/Publishers/List.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/GAN/Publishers/List.hs
@@ -0,0 +1,201 @@
+{-# 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.GAN.Publishers.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)
+--
+-- Retrieves data about all publishers that the requesting
+-- advertiser\/publisher has access to.
+--
+-- /See:/ <https://developers.google.com/affiliate-network/ Google Affiliate Network API Reference> for @gan.publishers.list@.
+module Network.Google.Resource.GAN.Publishers.List
+    (
+    -- * REST Resource
+      PublishersListResource
+
+    -- * Creating a Request
+    , publishersList
+    , PublishersList
+
+    -- * Request Lenses
+    , plRelationshipStatus
+    , plMinSevenDayEpc
+    , plRoleId
+    , plMinNinetyDayEpc
+    , plRole
+    , plMinPayoutRank
+    , plPageToken
+    , plPublisherCategory
+    , plMaxResults
+    ) where
+
+import           Network.Google.Affiliates.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @gan.publishers.list@ method which the
+-- 'PublishersList' request conforms to.
+type PublishersListResource =
+     "gan" :>
+       "v1beta1" :>
+         Capture "role" PublishersListRole :>
+           Capture "roleId" Text :>
+             "publishers" :>
+               QueryParam "relationshipStatus"
+                 PublishersListRelationshipStatus
+                 :>
+                 QueryParam "minSevenDayEpc" (Textual Double) :>
+                   QueryParam "minNinetyDayEpc" (Textual Double) :>
+                     QueryParam "minPayoutRank" (Textual Int32) :>
+                       QueryParam "pageToken" Text :>
+                         QueryParam "publisherCategory" Text :>
+                           QueryParam "maxResults" (Textual Word32) :>
+                             QueryParam "alt" AltJSON :> Get '[JSON] Publishers
+
+-- | Retrieves data about all publishers that the requesting
+-- advertiser\/publisher has access to.
+--
+-- /See:/ 'publishersList' smart constructor.
+data PublishersList = PublishersList
+    { _plRelationshipStatus :: !(Maybe PublishersListRelationshipStatus)
+    , _plMinSevenDayEpc     :: !(Maybe (Textual Double))
+    , _plRoleId             :: !Text
+    , _plMinNinetyDayEpc    :: !(Maybe (Textual Double))
+    , _plRole               :: !PublishersListRole
+    , _plMinPayoutRank      :: !(Maybe (Textual Int32))
+    , _plPageToken          :: !(Maybe Text)
+    , _plPublisherCategory  :: !(Maybe Text)
+    , _plMaxResults         :: !(Maybe (Textual Word32))
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'PublishersList' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'plRelationshipStatus'
+--
+-- * 'plMinSevenDayEpc'
+--
+-- * 'plRoleId'
+--
+-- * 'plMinNinetyDayEpc'
+--
+-- * 'plRole'
+--
+-- * 'plMinPayoutRank'
+--
+-- * 'plPageToken'
+--
+-- * 'plPublisherCategory'
+--
+-- * 'plMaxResults'
+publishersList
+    :: Text -- ^ 'plRoleId'
+    -> PublishersListRole -- ^ 'plRole'
+    -> PublishersList
+publishersList pPlRoleId_ pPlRole_ =
+    PublishersList
+    { _plRelationshipStatus = Nothing
+    , _plMinSevenDayEpc = Nothing
+    , _plRoleId = pPlRoleId_
+    , _plMinNinetyDayEpc = Nothing
+    , _plRole = pPlRole_
+    , _plMinPayoutRank = Nothing
+    , _plPageToken = Nothing
+    , _plPublisherCategory = Nothing
+    , _plMaxResults = Nothing
+    }
+
+-- | Filters out all publishers for which do not have the given relationship
+-- status with the requesting publisher.
+plRelationshipStatus :: Lens' PublishersList (Maybe PublishersListRelationshipStatus)
+plRelationshipStatus
+  = lens _plRelationshipStatus
+      (\ s a -> s{_plRelationshipStatus = a})
+
+-- | Filters out all publishers that have a seven day EPC average lower than
+-- the given value (inclusive). Min value 0.0. Optional.
+plMinSevenDayEpc :: Lens' PublishersList (Maybe Double)
+plMinSevenDayEpc
+  = lens _plMinSevenDayEpc
+      (\ s a -> s{_plMinSevenDayEpc = a})
+      . mapping _Coerce
+
+-- | The ID of the requesting advertiser or publisher.
+plRoleId :: Lens' PublishersList Text
+plRoleId = lens _plRoleId (\ s a -> s{_plRoleId = a})
+
+-- | Filters out all publishers that have a ninety day EPC average lower than
+-- the given value (inclusive). Min value: 0.0. Optional.
+plMinNinetyDayEpc :: Lens' PublishersList (Maybe Double)
+plMinNinetyDayEpc
+  = lens _plMinNinetyDayEpc
+      (\ s a -> s{_plMinNinetyDayEpc = a})
+      . mapping _Coerce
+
+-- | The role of the requester. Valid values: \'advertisers\' or
+-- \'publishers\'.
+plRole :: Lens' PublishersList PublishersListRole
+plRole = lens _plRole (\ s a -> s{_plRole = a})
+
+-- | A value between 1 and 4, where 1 represents the quartile of publishers
+-- with the lowest ranks and 4 represents the quartile of publishers with
+-- the highest ranks. Filters out all publishers with a lower rank than the
+-- given quartile. For example if a 2 was given only publishers with a
+-- payout rank of 25 or higher would be included. Optional.
+plMinPayoutRank :: Lens' PublishersList (Maybe Int32)
+plMinPayoutRank
+  = lens _plMinPayoutRank
+      (\ s a -> s{_plMinPayoutRank = a})
+      . mapping _Coerce
+
+-- | The value of \'nextPageToken\' from the previous page. Optional.
+plPageToken :: Lens' PublishersList (Maybe Text)
+plPageToken
+  = lens _plPageToken (\ s a -> s{_plPageToken = a})
+
+-- | Caret(^) delimted list of publisher categories. Valid categories:
+-- (unclassified|community_and_content|shopping_and_promotion|loyalty_and_rewards|network|search_specialist|comparison_shopping|email).
+-- Filters out all publishers not in one of the given advertiser
+-- categories. Optional.
+plPublisherCategory :: Lens' PublishersList (Maybe Text)
+plPublisherCategory
+  = lens _plPublisherCategory
+      (\ s a -> s{_plPublisherCategory = a})
+
+-- | Max number of items to return in this page. Optional. Defaults to 20.
+plMaxResults :: Lens' PublishersList (Maybe Word32)
+plMaxResults
+  = lens _plMaxResults (\ s a -> s{_plMaxResults = a})
+      . mapping _Coerce
+
+instance GoogleRequest PublishersList where
+        type Rs PublishersList = Publishers
+        requestClient PublishersList{..}
+          = go _plRole _plRoleId _plRelationshipStatus
+              _plMinSevenDayEpc
+              _plMinNinetyDayEpc
+              _plMinPayoutRank
+              _plPageToken
+              _plPublisherCategory
+              _plMaxResults
+              (Just AltJSON)
+              affiliatesService
+          where go
+                  = buildClient (Proxy :: Proxy PublishersListResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/GAN/Reports/Get.hs b/gen/Network/Google/Resource/GAN/Reports/Get.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/GAN/Reports/Get.hs
@@ -0,0 +1,259 @@
+{-# 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.GAN.Reports.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)
+--
+-- Retrieves a report of the specified type.
+--
+-- /See:/ <https://developers.google.com/affiliate-network/ Google Affiliate Network API Reference> for @gan.reports.get@.
+module Network.Google.Resource.GAN.Reports.Get
+    (
+    -- * REST Resource
+      ReportsGetResource
+
+    -- * Creating a Request
+    , reportsGet
+    , ReportsGet
+
+    -- * Request Lenses
+    , rgStatus
+    , rgAdvertiserId
+    , rgEndDate
+    , rgRoleId
+    , rgRole
+    , rgEventType
+    , rgStartDate
+    , rgCalculateTotals
+    , rgLinkId
+    , rgOrderId
+    , rgPublisherId
+    , rgReportType
+    , rgStartIndex
+    , rgMaxResults
+    ) where
+
+import           Network.Google.Affiliates.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @gan.reports.get@ method which the
+-- 'ReportsGet' request conforms to.
+type ReportsGetResource =
+     "gan" :>
+       "v1beta1" :>
+         Capture "role" ReportsGetRole :>
+           Capture "roleId" Text :>
+             "report" :>
+               Capture "reportType" ReportsGetReportType :>
+                 QueryParam "status" ReportsGetStatus :>
+                   QueryParams "advertiserId" Text :>
+                     QueryParam "endDate" Text :>
+                       QueryParam "eventType" ReportsGetEventType :>
+                         QueryParam "startDate" Text :>
+                           QueryParam "calculateTotals" Bool :>
+                             QueryParams "linkId" Text :>
+                               QueryParams "orderId" Text :>
+                                 QueryParams "publisherId" Text :>
+                                   QueryParam "startIndex" (Textual Word32) :>
+                                     QueryParam "maxResults" (Textual Word32) :>
+                                       QueryParam "alt" AltJSON :>
+                                         Get '[JSON] Report
+
+-- | Retrieves a report of the specified type.
+--
+-- /See:/ 'reportsGet' smart constructor.
+data ReportsGet = ReportsGet
+    { _rgStatus          :: !(Maybe ReportsGetStatus)
+    , _rgAdvertiserId    :: !(Maybe [Text])
+    , _rgEndDate         :: !(Maybe Text)
+    , _rgRoleId          :: !Text
+    , _rgRole            :: !ReportsGetRole
+    , _rgEventType       :: !(Maybe ReportsGetEventType)
+    , _rgStartDate       :: !(Maybe Text)
+    , _rgCalculateTotals :: !(Maybe Bool)
+    , _rgLinkId          :: !(Maybe [Text])
+    , _rgOrderId         :: !(Maybe [Text])
+    , _rgPublisherId     :: !(Maybe [Text])
+    , _rgReportType      :: !ReportsGetReportType
+    , _rgStartIndex      :: !(Maybe (Textual Word32))
+    , _rgMaxResults      :: !(Maybe (Textual Word32))
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ReportsGet' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'rgStatus'
+--
+-- * 'rgAdvertiserId'
+--
+-- * 'rgEndDate'
+--
+-- * 'rgRoleId'
+--
+-- * 'rgRole'
+--
+-- * 'rgEventType'
+--
+-- * 'rgStartDate'
+--
+-- * 'rgCalculateTotals'
+--
+-- * 'rgLinkId'
+--
+-- * 'rgOrderId'
+--
+-- * 'rgPublisherId'
+--
+-- * 'rgReportType'
+--
+-- * 'rgStartIndex'
+--
+-- * 'rgMaxResults'
+reportsGet
+    :: Text -- ^ 'rgRoleId'
+    -> ReportsGetRole -- ^ 'rgRole'
+    -> ReportsGetReportType -- ^ 'rgReportType'
+    -> ReportsGet
+reportsGet pRgRoleId_ pRgRole_ pRgReportType_ =
+    ReportsGet
+    { _rgStatus = Nothing
+    , _rgAdvertiserId = Nothing
+    , _rgEndDate = Nothing
+    , _rgRoleId = pRgRoleId_
+    , _rgRole = pRgRole_
+    , _rgEventType = Nothing
+    , _rgStartDate = Nothing
+    , _rgCalculateTotals = Nothing
+    , _rgLinkId = Nothing
+    , _rgOrderId = Nothing
+    , _rgPublisherId = Nothing
+    , _rgReportType = pRgReportType_
+    , _rgStartIndex = Nothing
+    , _rgMaxResults = Nothing
+    }
+
+-- | Filters out all events that do not have the given status. Valid values:
+-- \'active\', \'canceled\', or \'invalid\'. Optional.
+rgStatus :: Lens' ReportsGet (Maybe ReportsGetStatus)
+rgStatus = lens _rgStatus (\ s a -> s{_rgStatus = a})
+
+-- | The IDs of the advertisers to look up, if applicable.
+rgAdvertiserId :: Lens' ReportsGet [Text]
+rgAdvertiserId
+  = lens _rgAdvertiserId
+      (\ s a -> s{_rgAdvertiserId = a})
+      . _Default
+      . _Coerce
+
+-- | The end date (exclusive), in RFC 3339 format, for the report data to be
+-- returned. Defaults to one day after startDate, if that is given, or
+-- today. Optional.
+rgEndDate :: Lens' ReportsGet (Maybe Text)
+rgEndDate
+  = lens _rgEndDate (\ s a -> s{_rgEndDate = a})
+
+-- | The ID of the requesting advertiser or publisher.
+rgRoleId :: Lens' ReportsGet Text
+rgRoleId = lens _rgRoleId (\ s a -> s{_rgRoleId = a})
+
+-- | The role of the requester. Valid values: \'advertisers\' or
+-- \'publishers\'.
+rgRole :: Lens' ReportsGet ReportsGetRole
+rgRole = lens _rgRole (\ s a -> s{_rgRole = a})
+
+-- | Filters out all events that are not of the given type. Valid values:
+-- \'action\', \'transaction\', or \'charge\'. Optional.
+rgEventType :: Lens' ReportsGet (Maybe ReportsGetEventType)
+rgEventType
+  = lens _rgEventType (\ s a -> s{_rgEventType = a})
+
+-- | The start date (inclusive), in RFC 3339 format, for the report data to
+-- be returned. Defaults to one day before endDate, if that is given, or
+-- yesterday. Optional.
+rgStartDate :: Lens' ReportsGet (Maybe Text)
+rgStartDate
+  = lens _rgStartDate (\ s a -> s{_rgStartDate = a})
+
+-- | Whether or not to calculate totals rows. Optional.
+rgCalculateTotals :: Lens' ReportsGet (Maybe Bool)
+rgCalculateTotals
+  = lens _rgCalculateTotals
+      (\ s a -> s{_rgCalculateTotals = a})
+
+-- | Filters to capture one of given link IDs. Optional.
+rgLinkId :: Lens' ReportsGet [Text]
+rgLinkId
+  = lens _rgLinkId (\ s a -> s{_rgLinkId = a}) .
+      _Default
+      . _Coerce
+
+-- | Filters to capture one of the given order IDs. Optional.
+rgOrderId :: Lens' ReportsGet [Text]
+rgOrderId
+  = lens _rgOrderId (\ s a -> s{_rgOrderId = a}) .
+      _Default
+      . _Coerce
+
+-- | The IDs of the publishers to look up, if applicable.
+rgPublisherId :: Lens' ReportsGet [Text]
+rgPublisherId
+  = lens _rgPublisherId
+      (\ s a -> s{_rgPublisherId = a})
+      . _Default
+      . _Coerce
+
+-- | The type of report being requested. Valid values: \'order_delta\'.
+-- Required.
+rgReportType :: Lens' ReportsGet ReportsGetReportType
+rgReportType
+  = lens _rgReportType (\ s a -> s{_rgReportType = a})
+
+-- | Offset on which to return results when paging. Optional.
+rgStartIndex :: Lens' ReportsGet (Maybe Word32)
+rgStartIndex
+  = lens _rgStartIndex (\ s a -> s{_rgStartIndex = a})
+      . mapping _Coerce
+
+-- | Max number of items to return in this page. Optional. Defaults to return
+-- all results.
+rgMaxResults :: Lens' ReportsGet (Maybe Word32)
+rgMaxResults
+  = lens _rgMaxResults (\ s a -> s{_rgMaxResults = a})
+      . mapping _Coerce
+
+instance GoogleRequest ReportsGet where
+        type Rs ReportsGet = Report
+        requestClient ReportsGet{..}
+          = go _rgRole _rgRoleId _rgReportType _rgStatus
+              (_rgAdvertiserId ^. _Default)
+              _rgEndDate
+              _rgEventType
+              _rgStartDate
+              _rgCalculateTotals
+              (_rgLinkId ^. _Default)
+              (_rgOrderId ^. _Default)
+              (_rgPublisherId ^. _Default)
+              _rgStartIndex
+              _rgMaxResults
+              (Just AltJSON)
+              affiliatesService
+          where go
+                  = buildClient (Proxy :: Proxy ReportsGetResource)
+                      mempty
diff --git a/gogol-affiliates.cabal b/gogol-affiliates.cabal
new file mode 100644
--- /dev/null
+++ b/gogol-affiliates.cabal
@@ -0,0 +1,55 @@
+name:                  gogol-affiliates
+version:               0.0.1
+synopsis:              Google Affiliate Network SDK.
+homepage:              https://github.com/brendanhay/gogol
+bug-reports:           https://github.com/brendanhay/gogol/issues
+license:               OtherLicense
+license-file:          LICENSE
+author:                Brendan Hay
+maintainer:            Brendan Hay <brendan.g.hay@gmail.com>
+copyright:             Copyright (c) 2015 Brendan Hay
+category:              Network, Google, Cloud
+build-type:            Simple
+cabal-version:         >= 1.10
+extra-source-files:    README.md
+
+description:
+    Lets you have programmatic access to your Google Affiliate Network data.
+    .
+    /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 @v1beta1@
+    of the API.
+
+source-repository head
+    type:     git
+    location: git://github.com/brendanhay/gogol.git
+
+library
+    default-language:  Haskell2010
+    hs-source-dirs:    src gen
+
+    ghc-options:       -Wall
+
+    exposed-modules:
+          Network.Google.Affiliates
+        , Network.Google.Affiliates.Types
+        , Network.Google.Resource.GAN.Advertisers.Get
+        , Network.Google.Resource.GAN.Advertisers.List
+        , Network.Google.Resource.GAN.CcOffers.List
+        , Network.Google.Resource.GAN.Events.List
+        , Network.Google.Resource.GAN.Links.Get
+        , Network.Google.Resource.GAN.Links.Insert
+        , Network.Google.Resource.GAN.Links.List
+        , Network.Google.Resource.GAN.Publishers.Get
+        , Network.Google.Resource.GAN.Publishers.List
+        , Network.Google.Resource.GAN.Reports.Get
+
+    other-modules:
+          Network.Google.Affiliates.Types.Product
+        , Network.Google.Affiliates.Types.Sum
+
+    build-depends:
+          gogol-core == 0.0.1.*
+        , base       >= 4.7 && < 5
