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-doubleclick-search
+
+* [Version](#version)
+* [Description](#description)
+* [Contribute](#contribute)
+* [Licence](#licence)
+
+
+## Version
+
+`0.0.1`
+
+
+## Description
+
+A client library for the Google DoubleClick Search.
+
+
+## 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-doubleclick-search` 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/DoubleClickSearch.hs b/gen/Network/Google/DoubleClickSearch.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/DoubleClickSearch.hs
@@ -0,0 +1,266 @@
+{-# LANGUAGE DataKinds         #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# LANGUAGE TypeOperators     #-}
+
+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+
+-- |
+-- Module      : Network.Google.DoubleClickSearch
+-- 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)
+--
+-- Report and modify your advertising data in DoubleClick Search (for
+-- example, campaigns, ad groups, keywords, and conversions).
+--
+-- /See:/ <https://developers.google.com/doubleclick-search/ DoubleClick Search API Reference>
+module Network.Google.DoubleClickSearch
+    (
+    -- * Service Configuration
+      doubleClickSearchService
+
+    -- * API Declaration
+    , DoubleClickSearchAPI
+
+    -- * Resources
+
+    -- ** doubleclicksearch.conversion.get
+    , module Network.Google.Resource.DoubleClickSearch.Conversion.Get
+
+    -- ** doubleclicksearch.conversion.insert
+    , module Network.Google.Resource.DoubleClickSearch.Conversion.Insert
+
+    -- ** doubleclicksearch.conversion.patch
+    , module Network.Google.Resource.DoubleClickSearch.Conversion.Patch
+
+    -- ** doubleclicksearch.conversion.update
+    , module Network.Google.Resource.DoubleClickSearch.Conversion.Update
+
+    -- ** doubleclicksearch.conversion.updateAvailability
+    , module Network.Google.Resource.DoubleClickSearch.Conversion.UpdateAvailability
+
+    -- ** doubleclicksearch.reports.generate
+    , module Network.Google.Resource.DoubleClickSearch.Reports.Generate
+
+    -- ** doubleclicksearch.reports.get
+    , module Network.Google.Resource.DoubleClickSearch.Reports.Get
+
+    -- ** doubleclicksearch.reports.getFile
+    , module Network.Google.Resource.DoubleClickSearch.Reports.GetFile
+
+    -- ** doubleclicksearch.reports.request
+    , module Network.Google.Resource.DoubleClickSearch.Reports.Request
+
+    -- ** doubleclicksearch.savedColumns.list
+    , module Network.Google.Resource.DoubleClickSearch.SavedColumns.List
+
+    -- * Types
+
+    -- ** ReportRow
+    , ReportRow
+    , reportRow
+    , rrAddtional
+
+    -- ** ReportRequest
+    , ReportRequest
+    , reportRequest
+    , rrMaxRowsPerFile
+    , rrReportScope
+    , rrStatisticsCurrency
+    , rrTimeRange
+    , rrOrderBy
+    , rrFilters
+    , rrIncludeRemovedEntities
+    , rrIncludeDeletedEntities
+    , rrDownloadFormat
+    , rrStartRow
+    , rrColumns
+    , rrReportType
+    , rrVerifySingleTimeZone
+    , rrRowCount
+
+    -- ** ReportRequestOrderByItem
+    , ReportRequestOrderByItem
+    , reportRequestOrderByItem
+    , rrobiSortOrder
+    , rrobiColumn
+
+    -- ** Report
+    , Report
+    , report
+    , rKind
+    , rRows
+    , rStatisticsCurrencyCode
+    , rIsReportReady
+    , rFiles
+    , rId
+    , rStatisticsTimeZone
+    , rRowCount
+    , rRequest
+
+    -- ** ReportFilesItem
+    , ReportFilesItem
+    , reportFilesItem
+    , rfiURL
+    , rfiByteCount
+
+    -- ** ReportRequestFiltersItem
+    , ReportRequestFiltersItem
+    , reportRequestFiltersItem
+    , rrfiOperator
+    , rrfiValues
+    , rrfiColumn
+
+    -- ** Availability
+    , Availability
+    , availability
+    , aAgencyId
+    , aAdvertiserId
+    , aSegmentationId
+    , aSegmentationName
+    , aAvailabilityTimestamp
+    , aSegmentationType
+
+    -- ** UpdateAvailabilityRequest
+    , UpdateAvailabilityRequest
+    , updateAvailabilityRequest
+    , uarAvailabilities
+
+    -- ** CustomMetric
+    , CustomMetric
+    , customMetric
+    , cmValue
+    , cmName
+
+    -- ** ConversionList
+    , ConversionList
+    , conversionList
+    , clKind
+    , clConversion
+
+    -- ** ReportAPIColumnSpec
+    , ReportAPIColumnSpec
+    , reportAPIColumnSpec
+    , racsCustomDimensionName
+    , racsSavedColumnName
+    , racsGroupByColumn
+    , racsCustomMetricName
+    , racsEndDate
+    , racsProductReportPerspective
+    , racsStartDate
+    , racsHeaderText
+    , racsPlatformSource
+    , racsColumnName
+
+    -- ** ReportRequestTimeRange
+    , ReportRequestTimeRange
+    , reportRequestTimeRange
+    , rrtrEndDate
+    , rrtrChangedAttributesSinceTimestamp
+    , rrtrStartDate
+    , rrtrChangedMetricsSinceTimestamp
+
+    -- ** Conversion
+    , Conversion
+    , conversion
+    , cAdGroupId
+    , cConversionModifiedTimestamp
+    , cState
+    , cEngineAccountId
+    , cAgencyId
+    , cCurrencyCode
+    , cStoreId
+    , cDsConversionId
+    , cConversionId
+    , cAdvertiserId
+    , cSegmentationId
+    , cChannel
+    , cProductCountry
+    , cCampaignId
+    , cCriterionId
+    , cConversionTimestamp
+    , cAttributionModel
+    , cSegmentationName
+    , cProductLanguage
+    , cCustomMetric
+    , cCountMillis
+    , cQuantityMillis
+    , cAdId
+    , cDeviceType
+    , cType
+    , cCustomDimension
+    , cFloodlightOrderId
+    , cRevenueMicros
+    , cClickId
+    , cInventoryAccountId
+    , cSegmentationType
+    , cProductId
+    , cProductGroupId
+
+    -- ** SavedColumn
+    , SavedColumn
+    , savedColumn
+    , scSavedColumnName
+    , scKind
+    , scType
+
+    -- ** CustomDimension
+    , CustomDimension
+    , customDimension
+    , cdValue
+    , cdName
+
+    -- ** UpdateAvailabilityResponse
+    , UpdateAvailabilityResponse
+    , updateAvailabilityResponse
+    , uAvailabilities
+
+    -- ** ReportRequestReportScope
+    , ReportRequestReportScope
+    , reportRequestReportScope
+    , rrrsKeywordId
+    , rrrsAdGroupId
+    , rrrsEngineAccountId
+    , rrrsAgencyId
+    , rrrsAdvertiserId
+    , rrrsCampaignId
+    , rrrsAdId
+
+    -- ** SavedColumnList
+    , SavedColumnList
+    , savedColumnList
+    , sclKind
+    , sclItems
+    ) where
+
+import           Network.Google.DoubleClickSearch.Types
+import           Network.Google.Prelude
+import           Network.Google.Resource.DoubleClickSearch.Conversion.Get
+import           Network.Google.Resource.DoubleClickSearch.Conversion.Insert
+import           Network.Google.Resource.DoubleClickSearch.Conversion.Patch
+import           Network.Google.Resource.DoubleClickSearch.Conversion.Update
+import           Network.Google.Resource.DoubleClickSearch.Conversion.UpdateAvailability
+import           Network.Google.Resource.DoubleClickSearch.Reports.Generate
+import           Network.Google.Resource.DoubleClickSearch.Reports.Get
+import           Network.Google.Resource.DoubleClickSearch.Reports.GetFile
+import           Network.Google.Resource.DoubleClickSearch.Reports.Request
+import           Network.Google.Resource.DoubleClickSearch.SavedColumns.List
+
+{- $resources
+TODO
+-}
+
+-- | Represents the entirety of the methods and resources available for the DoubleClick Search API service.
+type DoubleClickSearchAPI =
+     ReportsGetResource :<|> ReportsGetFileResource :<|>
+       ReportsGenerateResource
+       :<|> ReportsRequestResource
+       :<|> SavedColumnsListResource
+       :<|> ConversionInsertResource
+       :<|> ConversionPatchResource
+       :<|> ConversionGetResource
+       :<|> ConversionUpdateAvailabilityResource
+       :<|> ConversionUpdateResource
diff --git a/gen/Network/Google/DoubleClickSearch/Types.hs b/gen/Network/Google/DoubleClickSearch/Types.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/DoubleClickSearch/Types.hs
@@ -0,0 +1,213 @@
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- |
+-- Module      : Network.Google.DoubleClickSearch.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.DoubleClickSearch.Types
+    (
+    -- * Service Configuration
+      doubleClickSearchService
+
+    -- * OAuth Scopes
+    , doubleclicksearchScope
+
+    -- * ReportRow
+    , ReportRow
+    , reportRow
+    , rrAddtional
+
+    -- * ReportRequest
+    , ReportRequest
+    , reportRequest
+    , rrMaxRowsPerFile
+    , rrReportScope
+    , rrStatisticsCurrency
+    , rrTimeRange
+    , rrOrderBy
+    , rrFilters
+    , rrIncludeRemovedEntities
+    , rrIncludeDeletedEntities
+    , rrDownloadFormat
+    , rrStartRow
+    , rrColumns
+    , rrReportType
+    , rrVerifySingleTimeZone
+    , rrRowCount
+
+    -- * ReportRequestOrderByItem
+    , ReportRequestOrderByItem
+    , reportRequestOrderByItem
+    , rrobiSortOrder
+    , rrobiColumn
+
+    -- * Report
+    , Report
+    , report
+    , rKind
+    , rRows
+    , rStatisticsCurrencyCode
+    , rIsReportReady
+    , rFiles
+    , rId
+    , rStatisticsTimeZone
+    , rRowCount
+    , rRequest
+
+    -- * ReportFilesItem
+    , ReportFilesItem
+    , reportFilesItem
+    , rfiURL
+    , rfiByteCount
+
+    -- * ReportRequestFiltersItem
+    , ReportRequestFiltersItem
+    , reportRequestFiltersItem
+    , rrfiOperator
+    , rrfiValues
+    , rrfiColumn
+
+    -- * Availability
+    , Availability
+    , availability
+    , aAgencyId
+    , aAdvertiserId
+    , aSegmentationId
+    , aSegmentationName
+    , aAvailabilityTimestamp
+    , aSegmentationType
+
+    -- * UpdateAvailabilityRequest
+    , UpdateAvailabilityRequest
+    , updateAvailabilityRequest
+    , uarAvailabilities
+
+    -- * CustomMetric
+    , CustomMetric
+    , customMetric
+    , cmValue
+    , cmName
+
+    -- * ConversionList
+    , ConversionList
+    , conversionList
+    , clKind
+    , clConversion
+
+    -- * ReportAPIColumnSpec
+    , ReportAPIColumnSpec
+    , reportAPIColumnSpec
+    , racsCustomDimensionName
+    , racsSavedColumnName
+    , racsGroupByColumn
+    , racsCustomMetricName
+    , racsEndDate
+    , racsProductReportPerspective
+    , racsStartDate
+    , racsHeaderText
+    , racsPlatformSource
+    , racsColumnName
+
+    -- * ReportRequestTimeRange
+    , ReportRequestTimeRange
+    , reportRequestTimeRange
+    , rrtrEndDate
+    , rrtrChangedAttributesSinceTimestamp
+    , rrtrStartDate
+    , rrtrChangedMetricsSinceTimestamp
+
+    -- * Conversion
+    , Conversion
+    , conversion
+    , cAdGroupId
+    , cConversionModifiedTimestamp
+    , cState
+    , cEngineAccountId
+    , cAgencyId
+    , cCurrencyCode
+    , cStoreId
+    , cDsConversionId
+    , cConversionId
+    , cAdvertiserId
+    , cSegmentationId
+    , cChannel
+    , cProductCountry
+    , cCampaignId
+    , cCriterionId
+    , cConversionTimestamp
+    , cAttributionModel
+    , cSegmentationName
+    , cProductLanguage
+    , cCustomMetric
+    , cCountMillis
+    , cQuantityMillis
+    , cAdId
+    , cDeviceType
+    , cType
+    , cCustomDimension
+    , cFloodlightOrderId
+    , cRevenueMicros
+    , cClickId
+    , cInventoryAccountId
+    , cSegmentationType
+    , cProductId
+    , cProductGroupId
+
+    -- * SavedColumn
+    , SavedColumn
+    , savedColumn
+    , scSavedColumnName
+    , scKind
+    , scType
+
+    -- * CustomDimension
+    , CustomDimension
+    , customDimension
+    , cdValue
+    , cdName
+
+    -- * UpdateAvailabilityResponse
+    , UpdateAvailabilityResponse
+    , updateAvailabilityResponse
+    , uAvailabilities
+
+    -- * ReportRequestReportScope
+    , ReportRequestReportScope
+    , reportRequestReportScope
+    , rrrsKeywordId
+    , rrrsAdGroupId
+    , rrrsEngineAccountId
+    , rrrsAgencyId
+    , rrrsAdvertiserId
+    , rrrsCampaignId
+    , rrrsAdId
+
+    -- * SavedColumnList
+    , SavedColumnList
+    , savedColumnList
+    , sclKind
+    , sclItems
+    ) where
+
+import           Network.Google.DoubleClickSearch.Types.Product
+import           Network.Google.DoubleClickSearch.Types.Sum
+import           Network.Google.Prelude
+
+-- | Default request referring to version 'v2' of the DoubleClick Search API. This contains the host and root path used as a starting point for constructing service requests.
+doubleClickSearchService :: Service
+doubleClickSearchService
+  = defaultService (ServiceId "doubleclicksearch:v2")
+      "www.googleapis.com"
+
+-- | View and manage your advertising data in DoubleClick Search
+doubleclicksearchScope :: OAuthScope
+doubleclicksearchScope = "https://www.googleapis.com/auth/doubleclicksearch";
diff --git a/gen/Network/Google/DoubleClickSearch/Types/Product.hs b/gen/Network/Google/DoubleClickSearch/Types/Product.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/DoubleClickSearch/Types/Product.hs
@@ -0,0 +1,1818 @@
+{-# 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.DoubleClickSearch.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.DoubleClickSearch.Types.Product where
+
+import           Network.Google.DoubleClickSearch.Types.Sum
+import           Network.Google.Prelude
+
+-- | A row in a DoubleClick Search report.
+--
+-- /See:/ 'reportRow' smart constructor.
+newtype ReportRow = ReportRow
+    { _rrAddtional :: HashMap Text JSONValue
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ReportRow' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'rrAddtional'
+reportRow
+    :: HashMap Text JSONValue -- ^ 'rrAddtional'
+    -> ReportRow
+reportRow pRrAddtional_ =
+    ReportRow
+    { _rrAddtional = _Coerce # pRrAddtional_
+    }
+
+-- | Indicates the columns that are represented in this row. That is, each
+-- key corresponds to a column with a non-empty cell in this row.
+rrAddtional :: Lens' ReportRow (HashMap Text JSONValue)
+rrAddtional
+  = lens _rrAddtional (\ s a -> s{_rrAddtional = a}) .
+      _Coerce
+
+instance FromJSON ReportRow where
+        parseJSON
+          = withObject "ReportRow"
+              (\ o -> ReportRow <$> (parseJSONObject o))
+
+instance ToJSON ReportRow where
+        toJSON = toJSON . _rrAddtional
+
+-- | A request object used to create a DoubleClick Search report.
+--
+-- /See:/ 'reportRequest' smart constructor.
+data ReportRequest = ReportRequest
+    { _rrMaxRowsPerFile         :: !(Maybe (Textual Int32))
+    , _rrReportScope            :: !(Maybe ReportRequestReportScope)
+    , _rrStatisticsCurrency     :: !(Maybe Text)
+    , _rrTimeRange              :: !(Maybe ReportRequestTimeRange)
+    , _rrOrderBy                :: !(Maybe [ReportRequestOrderByItem])
+    , _rrFilters                :: !(Maybe [ReportRequestFiltersItem])
+    , _rrIncludeRemovedEntities :: !Bool
+    , _rrIncludeDeletedEntities :: !Bool
+    , _rrDownloadFormat         :: !(Maybe Text)
+    , _rrStartRow               :: !(Textual Int32)
+    , _rrColumns                :: !(Maybe [ReportAPIColumnSpec])
+    , _rrReportType             :: !(Maybe Text)
+    , _rrVerifySingleTimeZone   :: !Bool
+    , _rrRowCount               :: !(Textual Int32)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ReportRequest' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'rrMaxRowsPerFile'
+--
+-- * 'rrReportScope'
+--
+-- * 'rrStatisticsCurrency'
+--
+-- * 'rrTimeRange'
+--
+-- * 'rrOrderBy'
+--
+-- * 'rrFilters'
+--
+-- * 'rrIncludeRemovedEntities'
+--
+-- * 'rrIncludeDeletedEntities'
+--
+-- * 'rrDownloadFormat'
+--
+-- * 'rrStartRow'
+--
+-- * 'rrColumns'
+--
+-- * 'rrReportType'
+--
+-- * 'rrVerifySingleTimeZone'
+--
+-- * 'rrRowCount'
+reportRequest
+    :: ReportRequest
+reportRequest =
+    ReportRequest
+    { _rrMaxRowsPerFile = Nothing
+    , _rrReportScope = Nothing
+    , _rrStatisticsCurrency = Nothing
+    , _rrTimeRange = Nothing
+    , _rrOrderBy = Nothing
+    , _rrFilters = Nothing
+    , _rrIncludeRemovedEntities = False
+    , _rrIncludeDeletedEntities = False
+    , _rrDownloadFormat = Nothing
+    , _rrStartRow = 0
+    , _rrColumns = Nothing
+    , _rrReportType = Nothing
+    , _rrVerifySingleTimeZone = False
+    , _rrRowCount = 10000
+    }
+
+-- | Asynchronous report only. The maximum number of rows per report file. A
+-- large report is split into many files based on this field. Acceptable
+-- values are 1000000 to 100000000, inclusive.
+rrMaxRowsPerFile :: Lens' ReportRequest (Maybe Int32)
+rrMaxRowsPerFile
+  = lens _rrMaxRowsPerFile
+      (\ s a -> s{_rrMaxRowsPerFile = a})
+      . mapping _Coerce
+
+-- | The reportScope is a set of IDs that are used to determine which subset
+-- of entities will be returned in the report. The full lineage of IDs from
+-- the lowest scoped level desired up through agency is required.
+rrReportScope :: Lens' ReportRequest (Maybe ReportRequestReportScope)
+rrReportScope
+  = lens _rrReportScope
+      (\ s a -> s{_rrReportScope = a})
+
+-- | Specifies the currency in which monetary will be returned. Possible
+-- values are: usd, agency (valid if the report is scoped to agency or
+-- lower), advertiser (valid if the report is scoped to * advertiser or
+-- lower), or account (valid if the report is scoped to engine account or
+-- lower).
+rrStatisticsCurrency :: Lens' ReportRequest (Maybe Text)
+rrStatisticsCurrency
+  = lens _rrStatisticsCurrency
+      (\ s a -> s{_rrStatisticsCurrency = a})
+
+-- | If metrics are requested in a report, this argument will be used to
+-- restrict the metrics to a specific time range.
+rrTimeRange :: Lens' ReportRequest (Maybe ReportRequestTimeRange)
+rrTimeRange
+  = lens _rrTimeRange (\ s a -> s{_rrTimeRange = a})
+
+-- | Synchronous report only. A list of columns and directions defining
+-- sorting to be performed on the report rows.
+rrOrderBy :: Lens' ReportRequest [ReportRequestOrderByItem]
+rrOrderBy
+  = lens _rrOrderBy (\ s a -> s{_rrOrderBy = a}) .
+      _Default
+      . _Coerce
+
+-- | A list of filters to be applied to the report.
+rrFilters :: Lens' ReportRequest [ReportRequestFiltersItem]
+rrFilters
+  = lens _rrFilters (\ s a -> s{_rrFilters = a}) .
+      _Default
+      . _Coerce
+
+-- | Determines if removed entities should be included in the report.
+-- Defaults to false.
+rrIncludeRemovedEntities :: Lens' ReportRequest Bool
+rrIncludeRemovedEntities
+  = lens _rrIncludeRemovedEntities
+      (\ s a -> s{_rrIncludeRemovedEntities = a})
+
+-- | Determines if removed entities should be included in the report.
+-- Defaults to false. Deprecated, please use includeRemovedEntities
+-- instead.
+rrIncludeDeletedEntities :: Lens' ReportRequest Bool
+rrIncludeDeletedEntities
+  = lens _rrIncludeDeletedEntities
+      (\ s a -> s{_rrIncludeDeletedEntities = a})
+
+-- | Format that the report should be returned in. Currently csv or tsv is
+-- supported.
+rrDownloadFormat :: Lens' ReportRequest (Maybe Text)
+rrDownloadFormat
+  = lens _rrDownloadFormat
+      (\ s a -> s{_rrDownloadFormat = a})
+
+-- | Synchronous report only. Zero-based index of the first row to return.
+-- Acceptable values are 0 to 50000, inclusive. Defaults to 0.
+rrStartRow :: Lens' ReportRequest Int32
+rrStartRow
+  = lens _rrStartRow (\ s a -> s{_rrStartRow = a}) .
+      _Coerce
+
+-- | The columns to include in the report. This includes both DoubleClick
+-- Search columns and saved columns. For DoubleClick Search columns, only
+-- the columnName parameter is required. For saved columns only the
+-- savedColumnName parameter is required. Both columnName and
+-- savedColumnName cannot be set in the same stanza.
+rrColumns :: Lens' ReportRequest [ReportAPIColumnSpec]
+rrColumns
+  = lens _rrColumns (\ s a -> s{_rrColumns = a}) .
+      _Default
+      . _Coerce
+
+-- | Determines the type of rows that are returned in the report. For
+-- example, if you specify reportType: keyword, each row in the report will
+-- contain data about a keyword. See the Types of Reports reference for the
+-- columns that are available for each type.
+rrReportType :: Lens' ReportRequest (Maybe Text)
+rrReportType
+  = lens _rrReportType (\ s a -> s{_rrReportType = a})
+
+-- | If true, the report would only be created if all the requested stat data
+-- are sourced from a single timezone. Defaults to false.
+rrVerifySingleTimeZone :: Lens' ReportRequest Bool
+rrVerifySingleTimeZone
+  = lens _rrVerifySingleTimeZone
+      (\ s a -> s{_rrVerifySingleTimeZone = a})
+
+-- | Synchronous report only. The maxinum number of rows to return;
+-- additional rows are dropped. Acceptable values are 0 to 10000,
+-- inclusive. Defaults to 10000.
+rrRowCount :: Lens' ReportRequest Int32
+rrRowCount
+  = lens _rrRowCount (\ s a -> s{_rrRowCount = a}) .
+      _Coerce
+
+instance FromJSON ReportRequest where
+        parseJSON
+          = withObject "ReportRequest"
+              (\ o ->
+                 ReportRequest <$>
+                   (o .:? "maxRowsPerFile") <*> (o .:? "reportScope")
+                     <*> (o .:? "statisticsCurrency")
+                     <*> (o .:? "timeRange")
+                     <*> (o .:? "orderBy" .!= mempty)
+                     <*> (o .:? "filters" .!= mempty)
+                     <*> (o .:? "includeRemovedEntities" .!= False)
+                     <*> (o .:? "includeDeletedEntities" .!= False)
+                     <*> (o .:? "downloadFormat")
+                     <*> (o .:? "startRow" .!= 0)
+                     <*> (o .:? "columns" .!= mempty)
+                     <*> (o .:? "reportType")
+                     <*> (o .:? "verifySingleTimeZone" .!= False)
+                     <*> (o .:? "rowCount" .!= 10000))
+
+instance ToJSON ReportRequest where
+        toJSON ReportRequest{..}
+          = object
+              (catMaybes
+                 [("maxRowsPerFile" .=) <$> _rrMaxRowsPerFile,
+                  ("reportScope" .=) <$> _rrReportScope,
+                  ("statisticsCurrency" .=) <$> _rrStatisticsCurrency,
+                  ("timeRange" .=) <$> _rrTimeRange,
+                  ("orderBy" .=) <$> _rrOrderBy,
+                  ("filters" .=) <$> _rrFilters,
+                  Just
+                    ("includeRemovedEntities" .=
+                       _rrIncludeRemovedEntities),
+                  Just
+                    ("includeDeletedEntities" .=
+                       _rrIncludeDeletedEntities),
+                  ("downloadFormat" .=) <$> _rrDownloadFormat,
+                  Just ("startRow" .= _rrStartRow),
+                  ("columns" .=) <$> _rrColumns,
+                  ("reportType" .=) <$> _rrReportType,
+                  Just
+                    ("verifySingleTimeZone" .= _rrVerifySingleTimeZone),
+                  Just ("rowCount" .= _rrRowCount)])
+
+--
+-- /See:/ 'reportRequestOrderByItem' smart constructor.
+data ReportRequestOrderByItem = ReportRequestOrderByItem
+    { _rrobiSortOrder :: !(Maybe Text)
+    , _rrobiColumn    :: !(Maybe ReportAPIColumnSpec)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ReportRequestOrderByItem' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'rrobiSortOrder'
+--
+-- * 'rrobiColumn'
+reportRequestOrderByItem
+    :: ReportRequestOrderByItem
+reportRequestOrderByItem =
+    ReportRequestOrderByItem
+    { _rrobiSortOrder = Nothing
+    , _rrobiColumn = Nothing
+    }
+
+-- | The sort direction, which is either ascending or descending.
+rrobiSortOrder :: Lens' ReportRequestOrderByItem (Maybe Text)
+rrobiSortOrder
+  = lens _rrobiSortOrder
+      (\ s a -> s{_rrobiSortOrder = a})
+
+-- | Column to perform the sort on. This can be a DoubleClick Search-defined
+-- column or a saved column.
+rrobiColumn :: Lens' ReportRequestOrderByItem (Maybe ReportAPIColumnSpec)
+rrobiColumn
+  = lens _rrobiColumn (\ s a -> s{_rrobiColumn = a})
+
+instance FromJSON ReportRequestOrderByItem where
+        parseJSON
+          = withObject "ReportRequestOrderByItem"
+              (\ o ->
+                 ReportRequestOrderByItem <$>
+                   (o .:? "sortOrder") <*> (o .:? "column"))
+
+instance ToJSON ReportRequestOrderByItem where
+        toJSON ReportRequestOrderByItem{..}
+          = object
+              (catMaybes
+                 [("sortOrder" .=) <$> _rrobiSortOrder,
+                  ("column" .=) <$> _rrobiColumn])
+
+-- | A DoubleClick Search report. This object contains the report request,
+-- some report metadata such as currency code, and the generated report
+-- rows or report files.
+--
+-- /See:/ 'report' smart constructor.
+data Report = Report
+    { _rKind                   :: !Text
+    , _rRows                   :: !(Maybe [ReportRow])
+    , _rStatisticsCurrencyCode :: !(Maybe Text)
+    , _rIsReportReady          :: !(Maybe Bool)
+    , _rFiles                  :: !(Maybe [ReportFilesItem])
+    , _rId                     :: !(Maybe Text)
+    , _rStatisticsTimeZone     :: !(Maybe Text)
+    , _rRowCount               :: !(Maybe (Textual Int32))
+    , _rRequest                :: !(Maybe ReportRequest)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'Report' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'rKind'
+--
+-- * 'rRows'
+--
+-- * 'rStatisticsCurrencyCode'
+--
+-- * 'rIsReportReady'
+--
+-- * 'rFiles'
+--
+-- * 'rId'
+--
+-- * 'rStatisticsTimeZone'
+--
+-- * 'rRowCount'
+--
+-- * 'rRequest'
+report
+    :: Report
+report =
+    Report
+    { _rKind = "doubleclicksearch#report"
+    , _rRows = Nothing
+    , _rStatisticsCurrencyCode = Nothing
+    , _rIsReportReady = Nothing
+    , _rFiles = Nothing
+    , _rId = Nothing
+    , _rStatisticsTimeZone = Nothing
+    , _rRowCount = Nothing
+    , _rRequest = Nothing
+    }
+
+-- | Identifies this as a Report resource. Value: the fixed string
+-- doubleclicksearch#report.
+rKind :: Lens' Report Text
+rKind = lens _rKind (\ s a -> s{_rKind = a})
+
+-- | Synchronous report only. Generated report rows.
+rRows :: Lens' Report [ReportRow]
+rRows
+  = lens _rRows (\ s a -> s{_rRows = a}) . _Default .
+      _Coerce
+
+-- | The currency code of all monetary values produced in the report,
+-- including values that are set by users (e.g., keyword bid settings) and
+-- metrics (e.g., cost and revenue). The currency code of a report is
+-- determined by the statisticsCurrency field of the report request.
+rStatisticsCurrencyCode :: Lens' Report (Maybe Text)
+rStatisticsCurrencyCode
+  = lens _rStatisticsCurrencyCode
+      (\ s a -> s{_rStatisticsCurrencyCode = a})
+
+-- | Asynchronous report only. True if and only if the report has completed
+-- successfully and the report files are ready to be downloaded.
+rIsReportReady :: Lens' Report (Maybe Bool)
+rIsReportReady
+  = lens _rIsReportReady
+      (\ s a -> s{_rIsReportReady = a})
+
+-- | Asynchronous report only. Contains a list of generated report files once
+-- the report has succesfully completed.
+rFiles :: Lens' Report [ReportFilesItem]
+rFiles
+  = lens _rFiles (\ s a -> s{_rFiles = a}) . _Default .
+      _Coerce
+
+-- | Asynchronous report only. Id of the report.
+rId :: Lens' Report (Maybe Text)
+rId = lens _rId (\ s a -> s{_rId = a})
+
+-- | If all statistics of the report are sourced from the same time zone,
+-- this would be it. Otherwise the field is unset.
+rStatisticsTimeZone :: Lens' Report (Maybe Text)
+rStatisticsTimeZone
+  = lens _rStatisticsTimeZone
+      (\ s a -> s{_rStatisticsTimeZone = a})
+
+-- | The number of report rows generated by the report, not including
+-- headers.
+rRowCount :: Lens' Report (Maybe Int32)
+rRowCount
+  = lens _rRowCount (\ s a -> s{_rRowCount = a}) .
+      mapping _Coerce
+
+-- | The request that created the report. Optional fields not specified in
+-- the original request are filled with default values.
+rRequest :: Lens' Report (Maybe ReportRequest)
+rRequest = lens _rRequest (\ s a -> s{_rRequest = a})
+
+instance FromJSON Report where
+        parseJSON
+          = withObject "Report"
+              (\ o ->
+                 Report <$>
+                   (o .:? "kind" .!= "doubleclicksearch#report") <*>
+                     (o .:? "rows" .!= mempty)
+                     <*> (o .:? "statisticsCurrencyCode")
+                     <*> (o .:? "isReportReady")
+                     <*> (o .:? "files" .!= mempty)
+                     <*> (o .:? "id")
+                     <*> (o .:? "statisticsTimeZone")
+                     <*> (o .:? "rowCount")
+                     <*> (o .:? "request"))
+
+instance ToJSON Report where
+        toJSON Report{..}
+          = object
+              (catMaybes
+                 [Just ("kind" .= _rKind), ("rows" .=) <$> _rRows,
+                  ("statisticsCurrencyCode" .=) <$>
+                    _rStatisticsCurrencyCode,
+                  ("isReportReady" .=) <$> _rIsReportReady,
+                  ("files" .=) <$> _rFiles, ("id" .=) <$> _rId,
+                  ("statisticsTimeZone" .=) <$> _rStatisticsTimeZone,
+                  ("rowCount" .=) <$> _rRowCount,
+                  ("request" .=) <$> _rRequest])
+
+--
+-- /See:/ 'reportFilesItem' smart constructor.
+data ReportFilesItem = ReportFilesItem
+    { _rfiURL       :: !(Maybe Text)
+    , _rfiByteCount :: !(Maybe (Textual Int64))
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ReportFilesItem' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'rfiURL'
+--
+-- * 'rfiByteCount'
+reportFilesItem
+    :: ReportFilesItem
+reportFilesItem =
+    ReportFilesItem
+    { _rfiURL = Nothing
+    , _rfiByteCount = Nothing
+    }
+
+-- | Use this url to download the report file.
+rfiURL :: Lens' ReportFilesItem (Maybe Text)
+rfiURL = lens _rfiURL (\ s a -> s{_rfiURL = a})
+
+-- | The size of this report file in bytes.
+rfiByteCount :: Lens' ReportFilesItem (Maybe Int64)
+rfiByteCount
+  = lens _rfiByteCount (\ s a -> s{_rfiByteCount = a})
+      . mapping _Coerce
+
+instance FromJSON ReportFilesItem where
+        parseJSON
+          = withObject "ReportFilesItem"
+              (\ o ->
+                 ReportFilesItem <$>
+                   (o .:? "url") <*> (o .:? "byteCount"))
+
+instance ToJSON ReportFilesItem where
+        toJSON ReportFilesItem{..}
+          = object
+              (catMaybes
+                 [("url" .=) <$> _rfiURL,
+                  ("byteCount" .=) <$> _rfiByteCount])
+
+--
+-- /See:/ 'reportRequestFiltersItem' smart constructor.
+data ReportRequestFiltersItem = ReportRequestFiltersItem
+    { _rrfiOperator :: !(Maybe Text)
+    , _rrfiValues   :: !(Maybe [JSONValue])
+    , _rrfiColumn   :: !(Maybe ReportAPIColumnSpec)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ReportRequestFiltersItem' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'rrfiOperator'
+--
+-- * 'rrfiValues'
+--
+-- * 'rrfiColumn'
+reportRequestFiltersItem
+    :: ReportRequestFiltersItem
+reportRequestFiltersItem =
+    ReportRequestFiltersItem
+    { _rrfiOperator = Nothing
+    , _rrfiValues = Nothing
+    , _rrfiColumn = Nothing
+    }
+
+-- | Operator to use in the filter. See the filter reference for a list of
+-- available operators.
+rrfiOperator :: Lens' ReportRequestFiltersItem (Maybe Text)
+rrfiOperator
+  = lens _rrfiOperator (\ s a -> s{_rrfiOperator = a})
+
+-- | A list of values to filter the column value against.
+rrfiValues :: Lens' ReportRequestFiltersItem [JSONValue]
+rrfiValues
+  = lens _rrfiValues (\ s a -> s{_rrfiValues = a}) .
+      _Default
+      . _Coerce
+
+-- | Column to perform the filter on. This can be a DoubleClick Search column
+-- or a saved column.
+rrfiColumn :: Lens' ReportRequestFiltersItem (Maybe ReportAPIColumnSpec)
+rrfiColumn
+  = lens _rrfiColumn (\ s a -> s{_rrfiColumn = a})
+
+instance FromJSON ReportRequestFiltersItem where
+        parseJSON
+          = withObject "ReportRequestFiltersItem"
+              (\ o ->
+                 ReportRequestFiltersItem <$>
+                   (o .:? "operator") <*> (o .:? "values" .!= mempty)
+                     <*> (o .:? "column"))
+
+instance ToJSON ReportRequestFiltersItem where
+        toJSON ReportRequestFiltersItem{..}
+          = object
+              (catMaybes
+                 [("operator" .=) <$> _rrfiOperator,
+                  ("values" .=) <$> _rrfiValues,
+                  ("column" .=) <$> _rrfiColumn])
+
+-- | A message containing availability data relevant to DoubleClick Search.
+--
+-- /See:/ 'availability' smart constructor.
+data Availability = Availability
+    { _aAgencyId              :: !(Maybe (Textual Int64))
+    , _aAdvertiserId          :: !(Maybe (Textual Int64))
+    , _aSegmentationId        :: !(Maybe (Textual Int64))
+    , _aSegmentationName      :: !(Maybe Text)
+    , _aAvailabilityTimestamp :: !(Maybe (Textual Word64))
+    , _aSegmentationType      :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'Availability' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'aAgencyId'
+--
+-- * 'aAdvertiserId'
+--
+-- * 'aSegmentationId'
+--
+-- * 'aSegmentationName'
+--
+-- * 'aAvailabilityTimestamp'
+--
+-- * 'aSegmentationType'
+availability
+    :: Availability
+availability =
+    Availability
+    { _aAgencyId = Nothing
+    , _aAdvertiserId = Nothing
+    , _aSegmentationId = Nothing
+    , _aSegmentationName = Nothing
+    , _aAvailabilityTimestamp = Nothing
+    , _aSegmentationType = Nothing
+    }
+
+-- | DS agency ID.
+aAgencyId :: Lens' Availability (Maybe Int64)
+aAgencyId
+  = lens _aAgencyId (\ s a -> s{_aAgencyId = a}) .
+      mapping _Coerce
+
+-- | DS advertiser ID.
+aAdvertiserId :: Lens' Availability (Maybe Int64)
+aAdvertiserId
+  = lens _aAdvertiserId
+      (\ s a -> s{_aAdvertiserId = a})
+      . mapping _Coerce
+
+-- | The numeric segmentation identifier (for example, DoubleClick Search
+-- Floodlight activity ID).
+aSegmentationId :: Lens' Availability (Maybe Int64)
+aSegmentationId
+  = lens _aSegmentationId
+      (\ s a -> s{_aSegmentationId = a})
+      . mapping _Coerce
+
+-- | The friendly segmentation identifier (for example, DoubleClick Search
+-- Floodlight activity name).
+aSegmentationName :: Lens' Availability (Maybe Text)
+aSegmentationName
+  = lens _aSegmentationName
+      (\ s a -> s{_aSegmentationName = a})
+
+-- | The time by which all conversions have been uploaded, in epoch millis
+-- UTC.
+aAvailabilityTimestamp :: Lens' Availability (Maybe Word64)
+aAvailabilityTimestamp
+  = lens _aAvailabilityTimestamp
+      (\ s a -> s{_aAvailabilityTimestamp = a})
+      . mapping _Coerce
+
+-- | The segmentation type that this availability is for (its default value
+-- is FLOODLIGHT).
+aSegmentationType :: Lens' Availability (Maybe Text)
+aSegmentationType
+  = lens _aSegmentationType
+      (\ s a -> s{_aSegmentationType = a})
+
+instance FromJSON Availability where
+        parseJSON
+          = withObject "Availability"
+              (\ o ->
+                 Availability <$>
+                   (o .:? "agencyId") <*> (o .:? "advertiserId") <*>
+                     (o .:? "segmentationId")
+                     <*> (o .:? "segmentationName")
+                     <*> (o .:? "availabilityTimestamp")
+                     <*> (o .:? "segmentationType"))
+
+instance ToJSON Availability where
+        toJSON Availability{..}
+          = object
+              (catMaybes
+                 [("agencyId" .=) <$> _aAgencyId,
+                  ("advertiserId" .=) <$> _aAdvertiserId,
+                  ("segmentationId" .=) <$> _aSegmentationId,
+                  ("segmentationName" .=) <$> _aSegmentationName,
+                  ("availabilityTimestamp" .=) <$>
+                    _aAvailabilityTimestamp,
+                  ("segmentationType" .=) <$> _aSegmentationType])
+
+-- | The request to update availability.
+--
+-- /See:/ 'updateAvailabilityRequest' smart constructor.
+newtype UpdateAvailabilityRequest = UpdateAvailabilityRequest
+    { _uarAvailabilities :: Maybe [Availability]
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'UpdateAvailabilityRequest' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'uarAvailabilities'
+updateAvailabilityRequest
+    :: UpdateAvailabilityRequest
+updateAvailabilityRequest =
+    UpdateAvailabilityRequest
+    { _uarAvailabilities = Nothing
+    }
+
+-- | The availabilities being requested.
+uarAvailabilities :: Lens' UpdateAvailabilityRequest [Availability]
+uarAvailabilities
+  = lens _uarAvailabilities
+      (\ s a -> s{_uarAvailabilities = a})
+      . _Default
+      . _Coerce
+
+instance FromJSON UpdateAvailabilityRequest where
+        parseJSON
+          = withObject "UpdateAvailabilityRequest"
+              (\ o ->
+                 UpdateAvailabilityRequest <$>
+                   (o .:? "availabilities" .!= mempty))
+
+instance ToJSON UpdateAvailabilityRequest where
+        toJSON UpdateAvailabilityRequest{..}
+          = object
+              (catMaybes
+                 [("availabilities" .=) <$> _uarAvailabilities])
+
+-- | A message containing the custome metric.
+--
+-- /See:/ 'customMetric' smart constructor.
+data CustomMetric = CustomMetric
+    { _cmValue :: !(Maybe (Textual Double))
+    , _cmName  :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'CustomMetric' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'cmValue'
+--
+-- * 'cmName'
+customMetric
+    :: CustomMetric
+customMetric =
+    CustomMetric
+    { _cmValue = Nothing
+    , _cmName = Nothing
+    }
+
+-- | Custom metric numeric value.
+cmValue :: Lens' CustomMetric (Maybe Double)
+cmValue
+  = lens _cmValue (\ s a -> s{_cmValue = a}) .
+      mapping _Coerce
+
+-- | Custom metric name.
+cmName :: Lens' CustomMetric (Maybe Text)
+cmName = lens _cmName (\ s a -> s{_cmName = a})
+
+instance FromJSON CustomMetric where
+        parseJSON
+          = withObject "CustomMetric"
+              (\ o ->
+                 CustomMetric <$> (o .:? "value") <*> (o .:? "name"))
+
+instance ToJSON CustomMetric where
+        toJSON CustomMetric{..}
+          = object
+              (catMaybes
+                 [("value" .=) <$> _cmValue, ("name" .=) <$> _cmName])
+
+-- | A list of conversions.
+--
+-- /See:/ 'conversionList' smart constructor.
+data ConversionList = ConversionList
+    { _clKind       :: !Text
+    , _clConversion :: !(Maybe [Conversion])
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ConversionList' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'clKind'
+--
+-- * 'clConversion'
+conversionList
+    :: ConversionList
+conversionList =
+    ConversionList
+    { _clKind = "doubleclicksearch#conversionList"
+    , _clConversion = Nothing
+    }
+
+-- | Identifies this as a ConversionList resource. Value: the fixed string
+-- doubleclicksearch#conversionList.
+clKind :: Lens' ConversionList Text
+clKind = lens _clKind (\ s a -> s{_clKind = a})
+
+-- | The conversions being requested.
+clConversion :: Lens' ConversionList [Conversion]
+clConversion
+  = lens _clConversion (\ s a -> s{_clConversion = a})
+      . _Default
+      . _Coerce
+
+instance FromJSON ConversionList where
+        parseJSON
+          = withObject "ConversionList"
+              (\ o ->
+                 ConversionList <$>
+                   (o .:? "kind" .!= "doubleclicksearch#conversionList")
+                     <*> (o .:? "conversion" .!= mempty))
+
+instance ToJSON ConversionList where
+        toJSON ConversionList{..}
+          = object
+              (catMaybes
+                 [Just ("kind" .= _clKind),
+                  ("conversion" .=) <$> _clConversion])
+
+-- | A request object used to create a DoubleClick Search report.
+--
+-- /See:/ 'reportAPIColumnSpec' smart constructor.
+data ReportAPIColumnSpec = ReportAPIColumnSpec
+    { _racsCustomDimensionName      :: !(Maybe Text)
+    , _racsSavedColumnName          :: !(Maybe Text)
+    , _racsGroupByColumn            :: !Bool
+    , _racsCustomMetricName         :: !(Maybe Text)
+    , _racsEndDate                  :: !(Maybe Text)
+    , _racsProductReportPerspective :: !(Maybe Text)
+    , _racsStartDate                :: !(Maybe Text)
+    , _racsHeaderText               :: !(Maybe Text)
+    , _racsPlatformSource           :: !(Maybe Text)
+    , _racsColumnName               :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ReportAPIColumnSpec' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'racsCustomDimensionName'
+--
+-- * 'racsSavedColumnName'
+--
+-- * 'racsGroupByColumn'
+--
+-- * 'racsCustomMetricName'
+--
+-- * 'racsEndDate'
+--
+-- * 'racsProductReportPerspective'
+--
+-- * 'racsStartDate'
+--
+-- * 'racsHeaderText'
+--
+-- * 'racsPlatformSource'
+--
+-- * 'racsColumnName'
+reportAPIColumnSpec
+    :: ReportAPIColumnSpec
+reportAPIColumnSpec =
+    ReportAPIColumnSpec
+    { _racsCustomDimensionName = Nothing
+    , _racsSavedColumnName = Nothing
+    , _racsGroupByColumn = False
+    , _racsCustomMetricName = Nothing
+    , _racsEndDate = Nothing
+    , _racsProductReportPerspective = Nothing
+    , _racsStartDate = Nothing
+    , _racsHeaderText = Nothing
+    , _racsPlatformSource = Nothing
+    , _racsColumnName = Nothing
+    }
+
+-- | Segments a report by a custom dimension. The report must be scoped to an
+-- advertiser or lower, and the custom dimension must already be set up in
+-- DoubleClick Search. The custom dimension name, which appears in
+-- DoubleClick Search, is case sensitive. If used in a conversion report,
+-- returns the value of the specified custom dimension for the given
+-- conversion, if set. This column does not segment the conversion report.
+racsCustomDimensionName :: Lens' ReportAPIColumnSpec (Maybe Text)
+racsCustomDimensionName
+  = lens _racsCustomDimensionName
+      (\ s a -> s{_racsCustomDimensionName = a})
+
+-- | Name of a saved column to include in the report. The report must be
+-- scoped at advertiser or lower, and this saved column must already be
+-- created in the DoubleClick Search UI.
+racsSavedColumnName :: Lens' ReportAPIColumnSpec (Maybe Text)
+racsSavedColumnName
+  = lens _racsSavedColumnName
+      (\ s a -> s{_racsSavedColumnName = a})
+
+-- | Synchronous report only. Set to true to group by this column. Defaults
+-- to false.
+racsGroupByColumn :: Lens' ReportAPIColumnSpec Bool
+racsGroupByColumn
+  = lens _racsGroupByColumn
+      (\ s a -> s{_racsGroupByColumn = a})
+
+-- | Name of a custom metric to include in the report. The report must be
+-- scoped to an advertiser or lower, and the custom metric must already be
+-- set up in DoubleClick Search. The custom metric name, which appears in
+-- DoubleClick Search, is case sensitive.
+racsCustomMetricName :: Lens' ReportAPIColumnSpec (Maybe Text)
+racsCustomMetricName
+  = lens _racsCustomMetricName
+      (\ s a -> s{_racsCustomMetricName = a})
+
+-- | Inclusive day in YYYY-MM-DD format. When provided, this overrides the
+-- overall time range of the report for this column only. Must be provided
+-- together with startDate.
+racsEndDate :: Lens' ReportAPIColumnSpec (Maybe Text)
+racsEndDate
+  = lens _racsEndDate (\ s a -> s{_racsEndDate = a})
+
+-- | Provide different source for product items. Acceptable values are
+-- \"advertised\" and \"sold\".
+racsProductReportPerspective :: Lens' ReportAPIColumnSpec (Maybe Text)
+racsProductReportPerspective
+  = lens _racsProductReportPerspective
+      (\ s a -> s{_racsProductReportPerspective = a})
+
+-- | Inclusive date in YYYY-MM-DD format. When provided, this overrides the
+-- overall time range of the report for this column only. Must be provided
+-- together with endDate.
+racsStartDate :: Lens' ReportAPIColumnSpec (Maybe Text)
+racsStartDate
+  = lens _racsStartDate
+      (\ s a -> s{_racsStartDate = a})
+
+-- | Text used to identify this column in the report output; defaults to
+-- columnName or savedColumnName when not specified. This can be used to
+-- prevent collisions between DoubleClick Search columns and saved columns
+-- with the same name.
+racsHeaderText :: Lens' ReportAPIColumnSpec (Maybe Text)
+racsHeaderText
+  = lens _racsHeaderText
+      (\ s a -> s{_racsHeaderText = a})
+
+-- | The platform that is used to provide data for the custom dimension.
+-- Acceptable values are \"floodlight\".
+racsPlatformSource :: Lens' ReportAPIColumnSpec (Maybe Text)
+racsPlatformSource
+  = lens _racsPlatformSource
+      (\ s a -> s{_racsPlatformSource = a})
+
+-- | Name of a DoubleClick Search column to include in the report.
+racsColumnName :: Lens' ReportAPIColumnSpec (Maybe Text)
+racsColumnName
+  = lens _racsColumnName
+      (\ s a -> s{_racsColumnName = a})
+
+instance FromJSON ReportAPIColumnSpec where
+        parseJSON
+          = withObject "ReportAPIColumnSpec"
+              (\ o ->
+                 ReportAPIColumnSpec <$>
+                   (o .:? "customDimensionName") <*>
+                     (o .:? "savedColumnName")
+                     <*> (o .:? "groupByColumn" .!= False)
+                     <*> (o .:? "customMetricName")
+                     <*> (o .:? "endDate")
+                     <*> (o .:? "productReportPerspective")
+                     <*> (o .:? "startDate")
+                     <*> (o .:? "headerText")
+                     <*> (o .:? "platformSource")
+                     <*> (o .:? "columnName"))
+
+instance ToJSON ReportAPIColumnSpec where
+        toJSON ReportAPIColumnSpec{..}
+          = object
+              (catMaybes
+                 [("customDimensionName" .=) <$>
+                    _racsCustomDimensionName,
+                  ("savedColumnName" .=) <$> _racsSavedColumnName,
+                  Just ("groupByColumn" .= _racsGroupByColumn),
+                  ("customMetricName" .=) <$> _racsCustomMetricName,
+                  ("endDate" .=) <$> _racsEndDate,
+                  ("productReportPerspective" .=) <$>
+                    _racsProductReportPerspective,
+                  ("startDate" .=) <$> _racsStartDate,
+                  ("headerText" .=) <$> _racsHeaderText,
+                  ("platformSource" .=) <$> _racsPlatformSource,
+                  ("columnName" .=) <$> _racsColumnName])
+
+-- | If metrics are requested in a report, this argument will be used to
+-- restrict the metrics to a specific time range.
+--
+-- /See:/ 'reportRequestTimeRange' smart constructor.
+data ReportRequestTimeRange = ReportRequestTimeRange
+    { _rrtrEndDate                         :: !(Maybe Text)
+    , _rrtrChangedAttributesSinceTimestamp :: !(Maybe DateTime')
+    , _rrtrStartDate                       :: !(Maybe Text)
+    , _rrtrChangedMetricsSinceTimestamp    :: !(Maybe DateTime')
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ReportRequestTimeRange' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'rrtrEndDate'
+--
+-- * 'rrtrChangedAttributesSinceTimestamp'
+--
+-- * 'rrtrStartDate'
+--
+-- * 'rrtrChangedMetricsSinceTimestamp'
+reportRequestTimeRange
+    :: ReportRequestTimeRange
+reportRequestTimeRange =
+    ReportRequestTimeRange
+    { _rrtrEndDate = Nothing
+    , _rrtrChangedAttributesSinceTimestamp = Nothing
+    , _rrtrStartDate = Nothing
+    , _rrtrChangedMetricsSinceTimestamp = Nothing
+    }
+
+-- | Inclusive date in YYYY-MM-DD format.
+rrtrEndDate :: Lens' ReportRequestTimeRange (Maybe Text)
+rrtrEndDate
+  = lens _rrtrEndDate (\ s a -> s{_rrtrEndDate = a})
+
+-- | Inclusive UTC timestamp in RFC format, e.g., 2013-07-16T10:16:23.555Z.
+-- See additional references on how changed attribute reports work.
+rrtrChangedAttributesSinceTimestamp :: Lens' ReportRequestTimeRange (Maybe UTCTime)
+rrtrChangedAttributesSinceTimestamp
+  = lens _rrtrChangedAttributesSinceTimestamp
+      (\ s a ->
+         s{_rrtrChangedAttributesSinceTimestamp = a})
+      . mapping _DateTime
+
+-- | Inclusive date in YYYY-MM-DD format.
+rrtrStartDate :: Lens' ReportRequestTimeRange (Maybe Text)
+rrtrStartDate
+  = lens _rrtrStartDate
+      (\ s a -> s{_rrtrStartDate = a})
+
+-- | Inclusive UTC timestamp in RFC format, e.g., 2013-07-16T10:16:23.555Z.
+-- See additional references on how changed metrics reports work.
+rrtrChangedMetricsSinceTimestamp :: Lens' ReportRequestTimeRange (Maybe UTCTime)
+rrtrChangedMetricsSinceTimestamp
+  = lens _rrtrChangedMetricsSinceTimestamp
+      (\ s a -> s{_rrtrChangedMetricsSinceTimestamp = a})
+      . mapping _DateTime
+
+instance FromJSON ReportRequestTimeRange where
+        parseJSON
+          = withObject "ReportRequestTimeRange"
+              (\ o ->
+                 ReportRequestTimeRange <$>
+                   (o .:? "endDate") <*>
+                     (o .:? "changedAttributesSinceTimestamp")
+                     <*> (o .:? "startDate")
+                     <*> (o .:? "changedMetricsSinceTimestamp"))
+
+instance ToJSON ReportRequestTimeRange where
+        toJSON ReportRequestTimeRange{..}
+          = object
+              (catMaybes
+                 [("endDate" .=) <$> _rrtrEndDate,
+                  ("changedAttributesSinceTimestamp" .=) <$>
+                    _rrtrChangedAttributesSinceTimestamp,
+                  ("startDate" .=) <$> _rrtrStartDate,
+                  ("changedMetricsSinceTimestamp" .=) <$>
+                    _rrtrChangedMetricsSinceTimestamp])
+
+-- | A conversion containing data relevant to DoubleClick Search.
+--
+-- /See:/ 'conversion' smart constructor.
+data Conversion = Conversion
+    { _cAdGroupId                   :: !(Maybe (Textual Int64))
+    , _cConversionModifiedTimestamp :: !(Maybe (Textual Word64))
+    , _cState                       :: !(Maybe Text)
+    , _cEngineAccountId             :: !(Maybe (Textual Int64))
+    , _cAgencyId                    :: !(Maybe (Textual Int64))
+    , _cCurrencyCode                :: !(Maybe Text)
+    , _cStoreId                     :: !(Maybe Text)
+    , _cDsConversionId              :: !(Maybe (Textual Int64))
+    , _cConversionId                :: !(Maybe Text)
+    , _cAdvertiserId                :: !(Maybe (Textual Int64))
+    , _cSegmentationId              :: !(Maybe (Textual Int64))
+    , _cChannel                     :: !(Maybe Text)
+    , _cProductCountry              :: !(Maybe Text)
+    , _cCampaignId                  :: !(Maybe (Textual Int64))
+    , _cCriterionId                 :: !(Maybe (Textual Int64))
+    , _cConversionTimestamp         :: !(Maybe (Textual Word64))
+    , _cAttributionModel            :: !(Maybe Text)
+    , _cSegmentationName            :: !(Maybe Text)
+    , _cProductLanguage             :: !(Maybe Text)
+    , _cCustomMetric                :: !(Maybe [CustomMetric])
+    , _cCountMillis                 :: !(Maybe (Textual Int64))
+    , _cQuantityMillis              :: !(Maybe (Textual Int64))
+    , _cAdId                        :: !(Maybe (Textual Int64))
+    , _cDeviceType                  :: !(Maybe Text)
+    , _cType                        :: !(Maybe Text)
+    , _cCustomDimension             :: !(Maybe [CustomDimension])
+    , _cFloodlightOrderId           :: !(Maybe Text)
+    , _cRevenueMicros               :: !(Maybe (Textual Int64))
+    , _cClickId                     :: !(Maybe Text)
+    , _cInventoryAccountId          :: !(Maybe (Textual Int64))
+    , _cSegmentationType            :: !(Maybe Text)
+    , _cProductId                   :: !(Maybe Text)
+    , _cProductGroupId              :: !(Maybe (Textual Int64))
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'Conversion' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'cAdGroupId'
+--
+-- * 'cConversionModifiedTimestamp'
+--
+-- * 'cState'
+--
+-- * 'cEngineAccountId'
+--
+-- * 'cAgencyId'
+--
+-- * 'cCurrencyCode'
+--
+-- * 'cStoreId'
+--
+-- * 'cDsConversionId'
+--
+-- * 'cConversionId'
+--
+-- * 'cAdvertiserId'
+--
+-- * 'cSegmentationId'
+--
+-- * 'cChannel'
+--
+-- * 'cProductCountry'
+--
+-- * 'cCampaignId'
+--
+-- * 'cCriterionId'
+--
+-- * 'cConversionTimestamp'
+--
+-- * 'cAttributionModel'
+--
+-- * 'cSegmentationName'
+--
+-- * 'cProductLanguage'
+--
+-- * 'cCustomMetric'
+--
+-- * 'cCountMillis'
+--
+-- * 'cQuantityMillis'
+--
+-- * 'cAdId'
+--
+-- * 'cDeviceType'
+--
+-- * 'cType'
+--
+-- * 'cCustomDimension'
+--
+-- * 'cFloodlightOrderId'
+--
+-- * 'cRevenueMicros'
+--
+-- * 'cClickId'
+--
+-- * 'cInventoryAccountId'
+--
+-- * 'cSegmentationType'
+--
+-- * 'cProductId'
+--
+-- * 'cProductGroupId'
+conversion
+    :: Conversion
+conversion =
+    Conversion
+    { _cAdGroupId = Nothing
+    , _cConversionModifiedTimestamp = Nothing
+    , _cState = Nothing
+    , _cEngineAccountId = Nothing
+    , _cAgencyId = Nothing
+    , _cCurrencyCode = Nothing
+    , _cStoreId = Nothing
+    , _cDsConversionId = Nothing
+    , _cConversionId = Nothing
+    , _cAdvertiserId = Nothing
+    , _cSegmentationId = Nothing
+    , _cChannel = Nothing
+    , _cProductCountry = Nothing
+    , _cCampaignId = Nothing
+    , _cCriterionId = Nothing
+    , _cConversionTimestamp = Nothing
+    , _cAttributionModel = Nothing
+    , _cSegmentationName = Nothing
+    , _cProductLanguage = Nothing
+    , _cCustomMetric = Nothing
+    , _cCountMillis = Nothing
+    , _cQuantityMillis = Nothing
+    , _cAdId = Nothing
+    , _cDeviceType = Nothing
+    , _cType = Nothing
+    , _cCustomDimension = Nothing
+    , _cFloodlightOrderId = Nothing
+    , _cRevenueMicros = Nothing
+    , _cClickId = Nothing
+    , _cInventoryAccountId = Nothing
+    , _cSegmentationType = Nothing
+    , _cProductId = Nothing
+    , _cProductGroupId = Nothing
+    }
+
+-- | DS ad group ID.
+cAdGroupId :: Lens' Conversion (Maybe Int64)
+cAdGroupId
+  = lens _cAdGroupId (\ s a -> s{_cAdGroupId = a}) .
+      mapping _Coerce
+
+-- | The time at which the conversion was last modified, in epoch millis UTC.
+cConversionModifiedTimestamp :: Lens' Conversion (Maybe Word64)
+cConversionModifiedTimestamp
+  = lens _cConversionModifiedTimestamp
+      (\ s a -> s{_cConversionModifiedTimestamp = a})
+      . mapping _Coerce
+
+-- | The state of the conversion, that is, either ACTIVE or REMOVED. Note:
+-- state DELETED is deprecated.
+cState :: Lens' Conversion (Maybe Text)
+cState = lens _cState (\ s a -> s{_cState = a})
+
+-- | DS engine account ID.
+cEngineAccountId :: Lens' Conversion (Maybe Int64)
+cEngineAccountId
+  = lens _cEngineAccountId
+      (\ s a -> s{_cEngineAccountId = a})
+      . mapping _Coerce
+
+-- | DS agency ID.
+cAgencyId :: Lens' Conversion (Maybe Int64)
+cAgencyId
+  = lens _cAgencyId (\ s a -> s{_cAgencyId = a}) .
+      mapping _Coerce
+
+-- | The currency code for the conversion\'s revenue. Should be in ISO 4217
+-- alphabetic (3-char) format.
+cCurrencyCode :: Lens' Conversion (Maybe Text)
+cCurrencyCode
+  = lens _cCurrencyCode
+      (\ s a -> s{_cCurrencyCode = a})
+
+-- | The ID of the local store for which the product was advertised.
+-- Applicable only when the channel is \"local\".
+cStoreId :: Lens' Conversion (Maybe Text)
+cStoreId = lens _cStoreId (\ s a -> s{_cStoreId = a})
+
+-- | ID that DoubleClick Search generates for each conversion.
+cDsConversionId :: Lens' Conversion (Maybe Int64)
+cDsConversionId
+  = lens _cDsConversionId
+      (\ s a -> s{_cDsConversionId = a})
+      . mapping _Coerce
+
+-- | For offline conversions, this is an ID provided by advertisers.
+-- Advertisers can use this property to specify an ID that is meaningful to
+-- them. If an advertiser doesn\'t specify a conversionId, DoubleClick
+-- Search generates one. For online conversions, DS copies the
+-- dsConversionId or floodlightOrderId into this property depending on the
+-- advertiser\'s Floodlight instructions.
+cConversionId :: Lens' Conversion (Maybe Text)
+cConversionId
+  = lens _cConversionId
+      (\ s a -> s{_cConversionId = a})
+
+-- | DS advertiser ID.
+cAdvertiserId :: Lens' Conversion (Maybe Int64)
+cAdvertiserId
+  = lens _cAdvertiserId
+      (\ s a -> s{_cAdvertiserId = a})
+      . mapping _Coerce
+
+-- | The numeric segmentation identifier (for example, DoubleClick Search
+-- Floodlight activity ID).
+cSegmentationId :: Lens' Conversion (Maybe Int64)
+cSegmentationId
+  = lens _cSegmentationId
+      (\ s a -> s{_cSegmentationId = a})
+      . mapping _Coerce
+
+-- | Sales channel for the product. Acceptable values are: - \"local\": a
+-- physical store - \"online\": an online store
+cChannel :: Lens' Conversion (Maybe Text)
+cChannel = lens _cChannel (\ s a -> s{_cChannel = a})
+
+-- | The country registered for the Merchant Center feed that contains the
+-- product. Use an ISO 3166 code to specify a country.
+cProductCountry :: Lens' Conversion (Maybe Text)
+cProductCountry
+  = lens _cProductCountry
+      (\ s a -> s{_cProductCountry = a})
+
+-- | DS campaign ID.
+cCampaignId :: Lens' Conversion (Maybe Int64)
+cCampaignId
+  = lens _cCampaignId (\ s a -> s{_cCampaignId = a}) .
+      mapping _Coerce
+
+-- | DS criterion (keyword) ID.
+cCriterionId :: Lens' Conversion (Maybe Int64)
+cCriterionId
+  = lens _cCriterionId (\ s a -> s{_cCriterionId = a})
+      . mapping _Coerce
+
+-- | The time at which the conversion took place, in epoch millis UTC.
+cConversionTimestamp :: Lens' Conversion (Maybe Word64)
+cConversionTimestamp
+  = lens _cConversionTimestamp
+      (\ s a -> s{_cConversionTimestamp = a})
+      . mapping _Coerce
+
+-- | This field is ignored.
+cAttributionModel :: Lens' Conversion (Maybe Text)
+cAttributionModel
+  = lens _cAttributionModel
+      (\ s a -> s{_cAttributionModel = a})
+
+-- | The friendly segmentation identifier (for example, DoubleClick Search
+-- Floodlight activity name).
+cSegmentationName :: Lens' Conversion (Maybe Text)
+cSegmentationName
+  = lens _cSegmentationName
+      (\ s a -> s{_cSegmentationName = a})
+
+-- | The language registered for the Merchant Center feed that contains the
+-- product. Use an ISO 639 code to specify a language.
+cProductLanguage :: Lens' Conversion (Maybe Text)
+cProductLanguage
+  = lens _cProductLanguage
+      (\ s a -> s{_cProductLanguage = a})
+
+-- | Custom metrics for the conversion.
+cCustomMetric :: Lens' Conversion [CustomMetric]
+cCustomMetric
+  = lens _cCustomMetric
+      (\ s a -> s{_cCustomMetric = a})
+      . _Default
+      . _Coerce
+
+-- | This field is ignored.
+cCountMillis :: Lens' Conversion (Maybe Int64)
+cCountMillis
+  = lens _cCountMillis (\ s a -> s{_cCountMillis = a})
+      . mapping _Coerce
+
+-- | The quantity of this conversion, in millis.
+cQuantityMillis :: Lens' Conversion (Maybe Int64)
+cQuantityMillis
+  = lens _cQuantityMillis
+      (\ s a -> s{_cQuantityMillis = a})
+      . mapping _Coerce
+
+-- | DS ad ID.
+cAdId :: Lens' Conversion (Maybe Int64)
+cAdId
+  = lens _cAdId (\ s a -> s{_cAdId = a}) .
+      mapping _Coerce
+
+-- | The type of device on which the conversion occurred.
+cDeviceType :: Lens' Conversion (Maybe Text)
+cDeviceType
+  = lens _cDeviceType (\ s a -> s{_cDeviceType = a})
+
+-- | The type of the conversion, that is, either ACTION or TRANSACTION. An
+-- ACTION conversion is an action by the user that has no monetarily
+-- quantifiable value, while a TRANSACTION conversion is an action that
+-- does have a monetarily quantifiable value. Examples are email list
+-- signups (ACTION) versus ecommerce purchases (TRANSACTION).
+cType :: Lens' Conversion (Maybe Text)
+cType = lens _cType (\ s a -> s{_cType = a})
+
+-- | Custom dimensions for the conversion, which can be used to filter data
+-- in a report.
+cCustomDimension :: Lens' Conversion [CustomDimension]
+cCustomDimension
+  = lens _cCustomDimension
+      (\ s a -> s{_cCustomDimension = a})
+      . _Default
+      . _Coerce
+
+-- | The Floodlight order ID provided by the advertiser for the conversion.
+cFloodlightOrderId :: Lens' Conversion (Maybe Text)
+cFloodlightOrderId
+  = lens _cFloodlightOrderId
+      (\ s a -> s{_cFloodlightOrderId = a})
+
+-- | The revenue amount of this TRANSACTION conversion, in micros.
+cRevenueMicros :: Lens' Conversion (Maybe Int64)
+cRevenueMicros
+  = lens _cRevenueMicros
+      (\ s a -> s{_cRevenueMicros = a})
+      . mapping _Coerce
+
+-- | DS click ID for the conversion.
+cClickId :: Lens' Conversion (Maybe Text)
+cClickId = lens _cClickId (\ s a -> s{_cClickId = a})
+
+-- | ID that DS generates and uses to uniquely identify the inventory account
+-- that contains the product.
+cInventoryAccountId :: Lens' Conversion (Maybe Int64)
+cInventoryAccountId
+  = lens _cInventoryAccountId
+      (\ s a -> s{_cInventoryAccountId = a})
+      . mapping _Coerce
+
+-- | The segmentation type of this conversion (for example, FLOODLIGHT).
+cSegmentationType :: Lens' Conversion (Maybe Text)
+cSegmentationType
+  = lens _cSegmentationType
+      (\ s a -> s{_cSegmentationType = a})
+
+-- | The product ID (SKU).
+cProductId :: Lens' Conversion (Maybe Text)
+cProductId
+  = lens _cProductId (\ s a -> s{_cProductId = a})
+
+-- | DS product group ID.
+cProductGroupId :: Lens' Conversion (Maybe Int64)
+cProductGroupId
+  = lens _cProductGroupId
+      (\ s a -> s{_cProductGroupId = a})
+      . mapping _Coerce
+
+instance FromJSON Conversion where
+        parseJSON
+          = withObject "Conversion"
+              (\ o ->
+                 Conversion <$>
+                   (o .:? "adGroupId") <*>
+                     (o .:? "conversionModifiedTimestamp")
+                     <*> (o .:? "state")
+                     <*> (o .:? "engineAccountId")
+                     <*> (o .:? "agencyId")
+                     <*> (o .:? "currencyCode")
+                     <*> (o .:? "storeId")
+                     <*> (o .:? "dsConversionId")
+                     <*> (o .:? "conversionId")
+                     <*> (o .:? "advertiserId")
+                     <*> (o .:? "segmentationId")
+                     <*> (o .:? "channel")
+                     <*> (o .:? "productCountry")
+                     <*> (o .:? "campaignId")
+                     <*> (o .:? "criterionId")
+                     <*> (o .:? "conversionTimestamp")
+                     <*> (o .:? "attributionModel")
+                     <*> (o .:? "segmentationName")
+                     <*> (o .:? "productLanguage")
+                     <*> (o .:? "customMetric" .!= mempty)
+                     <*> (o .:? "countMillis")
+                     <*> (o .:? "quantityMillis")
+                     <*> (o .:? "adId")
+                     <*> (o .:? "deviceType")
+                     <*> (o .:? "type")
+                     <*> (o .:? "customDimension" .!= mempty)
+                     <*> (o .:? "floodlightOrderId")
+                     <*> (o .:? "revenueMicros")
+                     <*> (o .:? "clickId")
+                     <*> (o .:? "inventoryAccountId")
+                     <*> (o .:? "segmentationType")
+                     <*> (o .:? "productId")
+                     <*> (o .:? "productGroupId"))
+
+instance ToJSON Conversion where
+        toJSON Conversion{..}
+          = object
+              (catMaybes
+                 [("adGroupId" .=) <$> _cAdGroupId,
+                  ("conversionModifiedTimestamp" .=) <$>
+                    _cConversionModifiedTimestamp,
+                  ("state" .=) <$> _cState,
+                  ("engineAccountId" .=) <$> _cEngineAccountId,
+                  ("agencyId" .=) <$> _cAgencyId,
+                  ("currencyCode" .=) <$> _cCurrencyCode,
+                  ("storeId" .=) <$> _cStoreId,
+                  ("dsConversionId" .=) <$> _cDsConversionId,
+                  ("conversionId" .=) <$> _cConversionId,
+                  ("advertiserId" .=) <$> _cAdvertiserId,
+                  ("segmentationId" .=) <$> _cSegmentationId,
+                  ("channel" .=) <$> _cChannel,
+                  ("productCountry" .=) <$> _cProductCountry,
+                  ("campaignId" .=) <$> _cCampaignId,
+                  ("criterionId" .=) <$> _cCriterionId,
+                  ("conversionTimestamp" .=) <$> _cConversionTimestamp,
+                  ("attributionModel" .=) <$> _cAttributionModel,
+                  ("segmentationName" .=) <$> _cSegmentationName,
+                  ("productLanguage" .=) <$> _cProductLanguage,
+                  ("customMetric" .=) <$> _cCustomMetric,
+                  ("countMillis" .=) <$> _cCountMillis,
+                  ("quantityMillis" .=) <$> _cQuantityMillis,
+                  ("adId" .=) <$> _cAdId,
+                  ("deviceType" .=) <$> _cDeviceType,
+                  ("type" .=) <$> _cType,
+                  ("customDimension" .=) <$> _cCustomDimension,
+                  ("floodlightOrderId" .=) <$> _cFloodlightOrderId,
+                  ("revenueMicros" .=) <$> _cRevenueMicros,
+                  ("clickId" .=) <$> _cClickId,
+                  ("inventoryAccountId" .=) <$> _cInventoryAccountId,
+                  ("segmentationType" .=) <$> _cSegmentationType,
+                  ("productId" .=) <$> _cProductId,
+                  ("productGroupId" .=) <$> _cProductGroupId])
+
+-- | A saved column
+--
+-- /See:/ 'savedColumn' smart constructor.
+data SavedColumn = SavedColumn
+    { _scSavedColumnName :: !(Maybe Text)
+    , _scKind            :: !Text
+    , _scType            :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'SavedColumn' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'scSavedColumnName'
+--
+-- * 'scKind'
+--
+-- * 'scType'
+savedColumn
+    :: SavedColumn
+savedColumn =
+    SavedColumn
+    { _scSavedColumnName = Nothing
+    , _scKind = "doubleclicksearch#savedColumn"
+    , _scType = Nothing
+    }
+
+-- | The name of the saved column.
+scSavedColumnName :: Lens' SavedColumn (Maybe Text)
+scSavedColumnName
+  = lens _scSavedColumnName
+      (\ s a -> s{_scSavedColumnName = a})
+
+-- | Identifies this as a SavedColumn resource. Value: the fixed string
+-- doubleclicksearch#savedColumn.
+scKind :: Lens' SavedColumn Text
+scKind = lens _scKind (\ s a -> s{_scKind = a})
+
+-- | The type of data this saved column will produce.
+scType :: Lens' SavedColumn (Maybe Text)
+scType = lens _scType (\ s a -> s{_scType = a})
+
+instance FromJSON SavedColumn where
+        parseJSON
+          = withObject "SavedColumn"
+              (\ o ->
+                 SavedColumn <$>
+                   (o .:? "savedColumnName") <*>
+                     (o .:? "kind" .!= "doubleclicksearch#savedColumn")
+                     <*> (o .:? "type"))
+
+instance ToJSON SavedColumn where
+        toJSON SavedColumn{..}
+          = object
+              (catMaybes
+                 [("savedColumnName" .=) <$> _scSavedColumnName,
+                  Just ("kind" .= _scKind), ("type" .=) <$> _scType])
+
+-- | A message containing the custome dimension.
+--
+-- /See:/ 'customDimension' smart constructor.
+data CustomDimension = CustomDimension
+    { _cdValue :: !(Maybe Text)
+    , _cdName  :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'CustomDimension' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'cdValue'
+--
+-- * 'cdName'
+customDimension
+    :: CustomDimension
+customDimension =
+    CustomDimension
+    { _cdValue = Nothing
+    , _cdName = Nothing
+    }
+
+-- | Custom dimension value.
+cdValue :: Lens' CustomDimension (Maybe Text)
+cdValue = lens _cdValue (\ s a -> s{_cdValue = a})
+
+-- | Custom dimension name.
+cdName :: Lens' CustomDimension (Maybe Text)
+cdName = lens _cdName (\ s a -> s{_cdName = a})
+
+instance FromJSON CustomDimension where
+        parseJSON
+          = withObject "CustomDimension"
+              (\ o ->
+                 CustomDimension <$>
+                   (o .:? "value") <*> (o .:? "name"))
+
+instance ToJSON CustomDimension where
+        toJSON CustomDimension{..}
+          = object
+              (catMaybes
+                 [("value" .=) <$> _cdValue, ("name" .=) <$> _cdName])
+
+-- | The response to a update availability request.
+--
+-- /See:/ 'updateAvailabilityResponse' smart constructor.
+newtype UpdateAvailabilityResponse = UpdateAvailabilityResponse
+    { _uAvailabilities :: Maybe [Availability]
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'UpdateAvailabilityResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'uAvailabilities'
+updateAvailabilityResponse
+    :: UpdateAvailabilityResponse
+updateAvailabilityResponse =
+    UpdateAvailabilityResponse
+    { _uAvailabilities = Nothing
+    }
+
+-- | The availabilities being returned.
+uAvailabilities :: Lens' UpdateAvailabilityResponse [Availability]
+uAvailabilities
+  = lens _uAvailabilities
+      (\ s a -> s{_uAvailabilities = a})
+      . _Default
+      . _Coerce
+
+instance FromJSON UpdateAvailabilityResponse where
+        parseJSON
+          = withObject "UpdateAvailabilityResponse"
+              (\ o ->
+                 UpdateAvailabilityResponse <$>
+                   (o .:? "availabilities" .!= mempty))
+
+instance ToJSON UpdateAvailabilityResponse where
+        toJSON UpdateAvailabilityResponse{..}
+          = object
+              (catMaybes
+                 [("availabilities" .=) <$> _uAvailabilities])
+
+-- | The reportScope is a set of IDs that are used to determine which subset
+-- of entities will be returned in the report. The full lineage of IDs from
+-- the lowest scoped level desired up through agency is required.
+--
+-- /See:/ 'reportRequestReportScope' smart constructor.
+data ReportRequestReportScope = ReportRequestReportScope
+    { _rrrsKeywordId       :: !(Maybe (Textual Int64))
+    , _rrrsAdGroupId       :: !(Maybe (Textual Int64))
+    , _rrrsEngineAccountId :: !(Maybe (Textual Int64))
+    , _rrrsAgencyId        :: !(Maybe (Textual Int64))
+    , _rrrsAdvertiserId    :: !(Maybe (Textual Int64))
+    , _rrrsCampaignId      :: !(Maybe (Textual Int64))
+    , _rrrsAdId            :: !(Maybe (Textual Int64))
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ReportRequestReportScope' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'rrrsKeywordId'
+--
+-- * 'rrrsAdGroupId'
+--
+-- * 'rrrsEngineAccountId'
+--
+-- * 'rrrsAgencyId'
+--
+-- * 'rrrsAdvertiserId'
+--
+-- * 'rrrsCampaignId'
+--
+-- * 'rrrsAdId'
+reportRequestReportScope
+    :: ReportRequestReportScope
+reportRequestReportScope =
+    ReportRequestReportScope
+    { _rrrsKeywordId = Nothing
+    , _rrrsAdGroupId = Nothing
+    , _rrrsEngineAccountId = Nothing
+    , _rrrsAgencyId = Nothing
+    , _rrrsAdvertiserId = Nothing
+    , _rrrsCampaignId = Nothing
+    , _rrrsAdId = Nothing
+    }
+
+-- | DS keyword ID.
+rrrsKeywordId :: Lens' ReportRequestReportScope (Maybe Int64)
+rrrsKeywordId
+  = lens _rrrsKeywordId
+      (\ s a -> s{_rrrsKeywordId = a})
+      . mapping _Coerce
+
+-- | DS ad group ID.
+rrrsAdGroupId :: Lens' ReportRequestReportScope (Maybe Int64)
+rrrsAdGroupId
+  = lens _rrrsAdGroupId
+      (\ s a -> s{_rrrsAdGroupId = a})
+      . mapping _Coerce
+
+-- | DS engine account ID.
+rrrsEngineAccountId :: Lens' ReportRequestReportScope (Maybe Int64)
+rrrsEngineAccountId
+  = lens _rrrsEngineAccountId
+      (\ s a -> s{_rrrsEngineAccountId = a})
+      . mapping _Coerce
+
+-- | DS agency ID.
+rrrsAgencyId :: Lens' ReportRequestReportScope (Maybe Int64)
+rrrsAgencyId
+  = lens _rrrsAgencyId (\ s a -> s{_rrrsAgencyId = a})
+      . mapping _Coerce
+
+-- | DS advertiser ID.
+rrrsAdvertiserId :: Lens' ReportRequestReportScope (Maybe Int64)
+rrrsAdvertiserId
+  = lens _rrrsAdvertiserId
+      (\ s a -> s{_rrrsAdvertiserId = a})
+      . mapping _Coerce
+
+-- | DS campaign ID.
+rrrsCampaignId :: Lens' ReportRequestReportScope (Maybe Int64)
+rrrsCampaignId
+  = lens _rrrsCampaignId
+      (\ s a -> s{_rrrsCampaignId = a})
+      . mapping _Coerce
+
+-- | DS ad ID.
+rrrsAdId :: Lens' ReportRequestReportScope (Maybe Int64)
+rrrsAdId
+  = lens _rrrsAdId (\ s a -> s{_rrrsAdId = a}) .
+      mapping _Coerce
+
+instance FromJSON ReportRequestReportScope where
+        parseJSON
+          = withObject "ReportRequestReportScope"
+              (\ o ->
+                 ReportRequestReportScope <$>
+                   (o .:? "keywordId") <*> (o .:? "adGroupId") <*>
+                     (o .:? "engineAccountId")
+                     <*> (o .:? "agencyId")
+                     <*> (o .:? "advertiserId")
+                     <*> (o .:? "campaignId")
+                     <*> (o .:? "adId"))
+
+instance ToJSON ReportRequestReportScope where
+        toJSON ReportRequestReportScope{..}
+          = object
+              (catMaybes
+                 [("keywordId" .=) <$> _rrrsKeywordId,
+                  ("adGroupId" .=) <$> _rrrsAdGroupId,
+                  ("engineAccountId" .=) <$> _rrrsEngineAccountId,
+                  ("agencyId" .=) <$> _rrrsAgencyId,
+                  ("advertiserId" .=) <$> _rrrsAdvertiserId,
+                  ("campaignId" .=) <$> _rrrsCampaignId,
+                  ("adId" .=) <$> _rrrsAdId])
+
+-- | A list of saved columns. Advertisers create saved columns to report on
+-- Floodlight activities, Google Analytics goals, or custom KPIs. To
+-- request reports with saved columns, you\'ll need the saved column names
+-- that are available from this list.
+--
+-- /See:/ 'savedColumnList' smart constructor.
+data SavedColumnList = SavedColumnList
+    { _sclKind  :: !Text
+    , _sclItems :: !(Maybe [SavedColumn])
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'SavedColumnList' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'sclKind'
+--
+-- * 'sclItems'
+savedColumnList
+    :: SavedColumnList
+savedColumnList =
+    SavedColumnList
+    { _sclKind = "doubleclicksearch#savedColumnList"
+    , _sclItems = Nothing
+    }
+
+-- | Identifies this as a SavedColumnList resource. Value: the fixed string
+-- doubleclicksearch#savedColumnList.
+sclKind :: Lens' SavedColumnList Text
+sclKind = lens _sclKind (\ s a -> s{_sclKind = a})
+
+-- | The saved columns being requested.
+sclItems :: Lens' SavedColumnList [SavedColumn]
+sclItems
+  = lens _sclItems (\ s a -> s{_sclItems = a}) .
+      _Default
+      . _Coerce
+
+instance FromJSON SavedColumnList where
+        parseJSON
+          = withObject "SavedColumnList"
+              (\ o ->
+                 SavedColumnList <$>
+                   (o .:? "kind" .!=
+                      "doubleclicksearch#savedColumnList")
+                     <*> (o .:? "items" .!= mempty))
+
+instance ToJSON SavedColumnList where
+        toJSON SavedColumnList{..}
+          = object
+              (catMaybes
+                 [Just ("kind" .= _sclKind),
+                  ("items" .=) <$> _sclItems])
diff --git a/gen/Network/Google/DoubleClickSearch/Types/Sum.hs b/gen/Network/Google/DoubleClickSearch/Types/Sum.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/DoubleClickSearch/Types/Sum.hs
@@ -0,0 +1,19 @@
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE LambdaCase         #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- |
+-- Module      : Network.Google.DoubleClickSearch.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.DoubleClickSearch.Types.Sum where
+
+import           Network.Google.Prelude
diff --git a/gen/Network/Google/Resource/DoubleClickSearch/Conversion/Get.hs b/gen/Network/Google/Resource/DoubleClickSearch/Conversion/Get.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/DoubleClickSearch/Conversion/Get.hs
@@ -0,0 +1,230 @@
+{-# 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.DoubleClickSearch.Conversion.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 list of conversions from a DoubleClick Search engine
+-- account.
+--
+-- /See:/ <https://developers.google.com/doubleclick-search/ DoubleClick Search API Reference> for @doubleclicksearch.conversion.get@.
+module Network.Google.Resource.DoubleClickSearch.Conversion.Get
+    (
+    -- * REST Resource
+      ConversionGetResource
+
+    -- * Creating a Request
+    , conversionGet
+    , ConversionGet
+
+    -- * Request Lenses
+    , cgAdGroupId
+    , cgEngineAccountId
+    , cgAgencyId
+    , cgAdvertiserId
+    , cgEndDate
+    , cgCampaignId
+    , cgCriterionId
+    , cgStartDate
+    , cgStartRow
+    , cgAdId
+    , cgRowCount
+    ) where
+
+import           Network.Google.DoubleClickSearch.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @doubleclicksearch.conversion.get@ method which the
+-- 'ConversionGet' request conforms to.
+type ConversionGetResource =
+     "doubleclicksearch" :>
+       "v2" :>
+         "agency" :>
+           Capture "agencyId" (Textual Int64) :>
+             "advertiser" :>
+               Capture "advertiserId" (Textual Int64) :>
+                 "engine" :>
+                   Capture "engineAccountId" (Textual Int64) :>
+                     "conversion" :>
+                       QueryParam "endDate" (Textual Int32) :>
+                         QueryParam "rowCount" (Textual Int32) :>
+                           QueryParam "startDate" (Textual Int32) :>
+                             QueryParam "startRow" (Textual Word32) :>
+                               QueryParam "adGroupId" (Textual Int64) :>
+                                 QueryParam "campaignId" (Textual Int64) :>
+                                   QueryParam "criterionId" (Textual Int64) :>
+                                     QueryParam "adId" (Textual Int64) :>
+                                       QueryParam "alt" AltJSON :>
+                                         Get '[JSON] ConversionList
+
+-- | Retrieves a list of conversions from a DoubleClick Search engine
+-- account.
+--
+-- /See:/ 'conversionGet' smart constructor.
+data ConversionGet = ConversionGet
+    { _cgAdGroupId       :: !(Maybe (Textual Int64))
+    , _cgEngineAccountId :: !(Textual Int64)
+    , _cgAgencyId        :: !(Textual Int64)
+    , _cgAdvertiserId    :: !(Textual Int64)
+    , _cgEndDate         :: !(Textual Int32)
+    , _cgCampaignId      :: !(Maybe (Textual Int64))
+    , _cgCriterionId     :: !(Maybe (Textual Int64))
+    , _cgStartDate       :: !(Textual Int32)
+    , _cgStartRow        :: !(Textual Word32)
+    , _cgAdId            :: !(Maybe (Textual Int64))
+    , _cgRowCount        :: !(Textual Int32)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ConversionGet' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'cgAdGroupId'
+--
+-- * 'cgEngineAccountId'
+--
+-- * 'cgAgencyId'
+--
+-- * 'cgAdvertiserId'
+--
+-- * 'cgEndDate'
+--
+-- * 'cgCampaignId'
+--
+-- * 'cgCriterionId'
+--
+-- * 'cgStartDate'
+--
+-- * 'cgStartRow'
+--
+-- * 'cgAdId'
+--
+-- * 'cgRowCount'
+conversionGet
+    :: Int64 -- ^ 'cgEngineAccountId'
+    -> Int64 -- ^ 'cgAgencyId'
+    -> Int64 -- ^ 'cgAdvertiserId'
+    -> Int32 -- ^ 'cgEndDate'
+    -> Int32 -- ^ 'cgStartDate'
+    -> Word32 -- ^ 'cgStartRow'
+    -> Int32 -- ^ 'cgRowCount'
+    -> ConversionGet
+conversionGet pCgEngineAccountId_ pCgAgencyId_ pCgAdvertiserId_ pCgEndDate_ pCgStartDate_ pCgStartRow_ pCgRowCount_ =
+    ConversionGet
+    { _cgAdGroupId = Nothing
+    , _cgEngineAccountId = _Coerce # pCgEngineAccountId_
+    , _cgAgencyId = _Coerce # pCgAgencyId_
+    , _cgAdvertiserId = _Coerce # pCgAdvertiserId_
+    , _cgEndDate = _Coerce # pCgEndDate_
+    , _cgCampaignId = Nothing
+    , _cgCriterionId = Nothing
+    , _cgStartDate = _Coerce # pCgStartDate_
+    , _cgStartRow = _Coerce # pCgStartRow_
+    , _cgAdId = Nothing
+    , _cgRowCount = _Coerce # pCgRowCount_
+    }
+
+-- | Numeric ID of the ad group.
+cgAdGroupId :: Lens' ConversionGet (Maybe Int64)
+cgAdGroupId
+  = lens _cgAdGroupId (\ s a -> s{_cgAdGroupId = a}) .
+      mapping _Coerce
+
+-- | Numeric ID of the engine account.
+cgEngineAccountId :: Lens' ConversionGet Int64
+cgEngineAccountId
+  = lens _cgEngineAccountId
+      (\ s a -> s{_cgEngineAccountId = a})
+      . _Coerce
+
+-- | Numeric ID of the agency.
+cgAgencyId :: Lens' ConversionGet Int64
+cgAgencyId
+  = lens _cgAgencyId (\ s a -> s{_cgAgencyId = a}) .
+      _Coerce
+
+-- | Numeric ID of the advertiser.
+cgAdvertiserId :: Lens' ConversionGet Int64
+cgAdvertiserId
+  = lens _cgAdvertiserId
+      (\ s a -> s{_cgAdvertiserId = a})
+      . _Coerce
+
+-- | Last date (inclusive) on which to retrieve conversions. Format is
+-- yyyymmdd.
+cgEndDate :: Lens' ConversionGet Int32
+cgEndDate
+  = lens _cgEndDate (\ s a -> s{_cgEndDate = a}) .
+      _Coerce
+
+-- | Numeric ID of the campaign.
+cgCampaignId :: Lens' ConversionGet (Maybe Int64)
+cgCampaignId
+  = lens _cgCampaignId (\ s a -> s{_cgCampaignId = a})
+      . mapping _Coerce
+
+-- | Numeric ID of the criterion.
+cgCriterionId :: Lens' ConversionGet (Maybe Int64)
+cgCriterionId
+  = lens _cgCriterionId
+      (\ s a -> s{_cgCriterionId = a})
+      . mapping _Coerce
+
+-- | First date (inclusive) on which to retrieve conversions. Format is
+-- yyyymmdd.
+cgStartDate :: Lens' ConversionGet Int32
+cgStartDate
+  = lens _cgStartDate (\ s a -> s{_cgStartDate = a}) .
+      _Coerce
+
+-- | The 0-based starting index for retrieving conversions results.
+cgStartRow :: Lens' ConversionGet Word32
+cgStartRow
+  = lens _cgStartRow (\ s a -> s{_cgStartRow = a}) .
+      _Coerce
+
+-- | Numeric ID of the ad.
+cgAdId :: Lens' ConversionGet (Maybe Int64)
+cgAdId
+  = lens _cgAdId (\ s a -> s{_cgAdId = a}) .
+      mapping _Coerce
+
+-- | The number of conversions to return per call.
+cgRowCount :: Lens' ConversionGet Int32
+cgRowCount
+  = lens _cgRowCount (\ s a -> s{_cgRowCount = a}) .
+      _Coerce
+
+instance GoogleRequest ConversionGet where
+        type Rs ConversionGet = ConversionList
+        requestClient ConversionGet{..}
+          = go _cgAgencyId _cgAdvertiserId _cgEngineAccountId
+              (Just _cgEndDate)
+              (Just _cgRowCount)
+              (Just _cgStartDate)
+              (Just _cgStartRow)
+              _cgAdGroupId
+              _cgCampaignId
+              _cgCriterionId
+              _cgAdId
+              (Just AltJSON)
+              doubleClickSearchService
+          where go
+                  = buildClient (Proxy :: Proxy ConversionGetResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/DoubleClickSearch/Conversion/Insert.hs b/gen/Network/Google/Resource/DoubleClickSearch/Conversion/Insert.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/DoubleClickSearch/Conversion/Insert.hs
@@ -0,0 +1,85 @@
+{-# LANGUAGE DataKinds          #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE FlexibleInstances  #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+{-# LANGUAGE TypeOperators      #-}
+
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
+
+-- |
+-- Module      : Network.Google.Resource.DoubleClickSearch.Conversion.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 batch of new conversions into DoubleClick Search.
+--
+-- /See:/ <https://developers.google.com/doubleclick-search/ DoubleClick Search API Reference> for @doubleclicksearch.conversion.insert@.
+module Network.Google.Resource.DoubleClickSearch.Conversion.Insert
+    (
+    -- * REST Resource
+      ConversionInsertResource
+
+    -- * Creating a Request
+    , conversionInsert
+    , ConversionInsert
+
+    -- * Request Lenses
+    , ciPayload
+    ) where
+
+import           Network.Google.DoubleClickSearch.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @doubleclicksearch.conversion.insert@ method which the
+-- 'ConversionInsert' request conforms to.
+type ConversionInsertResource =
+     "doubleclicksearch" :>
+       "v2" :>
+         "conversion" :>
+           QueryParam "alt" AltJSON :>
+             ReqBody '[JSON] ConversionList :>
+               Post '[JSON] ConversionList
+
+-- | Inserts a batch of new conversions into DoubleClick Search.
+--
+-- /See:/ 'conversionInsert' smart constructor.
+newtype ConversionInsert = ConversionInsert
+    { _ciPayload :: ConversionList
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ConversionInsert' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'ciPayload'
+conversionInsert
+    :: ConversionList -- ^ 'ciPayload'
+    -> ConversionInsert
+conversionInsert pCiPayload_ =
+    ConversionInsert
+    { _ciPayload = pCiPayload_
+    }
+
+-- | Multipart request metadata.
+ciPayload :: Lens' ConversionInsert ConversionList
+ciPayload
+  = lens _ciPayload (\ s a -> s{_ciPayload = a})
+
+instance GoogleRequest ConversionInsert where
+        type Rs ConversionInsert = ConversionList
+        requestClient ConversionInsert{..}
+          = go (Just AltJSON) _ciPayload
+              doubleClickSearchService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy ConversionInsertResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/DoubleClickSearch/Conversion/Patch.hs b/gen/Network/Google/Resource/DoubleClickSearch/Conversion/Patch.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/DoubleClickSearch/Conversion/Patch.hs
@@ -0,0 +1,189 @@
+{-# 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.DoubleClickSearch.Conversion.Patch
+-- Copyright   : (c) 2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Updates a batch of conversions in DoubleClick Search. This method
+-- supports patch semantics.
+--
+-- /See:/ <https://developers.google.com/doubleclick-search/ DoubleClick Search API Reference> for @doubleclicksearch.conversion.patch@.
+module Network.Google.Resource.DoubleClickSearch.Conversion.Patch
+    (
+    -- * REST Resource
+      ConversionPatchResource
+
+    -- * Creating a Request
+    , conversionPatch
+    , ConversionPatch
+
+    -- * Request Lenses
+    , cpEngineAccountId
+    , cpAgencyId
+    , cpAdvertiserId
+    , cpEndDate
+    , cpPayload
+    , cpStartDate
+    , cpStartRow
+    , cpRowCount
+    ) where
+
+import           Network.Google.DoubleClickSearch.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @doubleclicksearch.conversion.patch@ method which the
+-- 'ConversionPatch' request conforms to.
+type ConversionPatchResource =
+     "doubleclicksearch" :>
+       "v2" :>
+         "conversion" :>
+           QueryParam "advertiserId" (Textual Int64) :>
+             QueryParam "agencyId" (Textual Int64) :>
+               QueryParam "endDate" (Textual Int32) :>
+                 QueryParam "engineAccountId" (Textual Int64) :>
+                   QueryParam "rowCount" (Textual Int32) :>
+                     QueryParam "startDate" (Textual Int32) :>
+                       QueryParam "startRow" (Textual Word32) :>
+                         QueryParam "alt" AltJSON :>
+                           ReqBody '[JSON] ConversionList :>
+                             Patch '[JSON] ConversionList
+
+-- | Updates a batch of conversions in DoubleClick Search. This method
+-- supports patch semantics.
+--
+-- /See:/ 'conversionPatch' smart constructor.
+data ConversionPatch = ConversionPatch
+    { _cpEngineAccountId :: !(Textual Int64)
+    , _cpAgencyId        :: !(Textual Int64)
+    , _cpAdvertiserId    :: !(Textual Int64)
+    , _cpEndDate         :: !(Textual Int32)
+    , _cpPayload         :: !ConversionList
+    , _cpStartDate       :: !(Textual Int32)
+    , _cpStartRow        :: !(Textual Word32)
+    , _cpRowCount        :: !(Textual Int32)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ConversionPatch' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'cpEngineAccountId'
+--
+-- * 'cpAgencyId'
+--
+-- * 'cpAdvertiserId'
+--
+-- * 'cpEndDate'
+--
+-- * 'cpPayload'
+--
+-- * 'cpStartDate'
+--
+-- * 'cpStartRow'
+--
+-- * 'cpRowCount'
+conversionPatch
+    :: Int64 -- ^ 'cpEngineAccountId'
+    -> Int64 -- ^ 'cpAgencyId'
+    -> Int64 -- ^ 'cpAdvertiserId'
+    -> Int32 -- ^ 'cpEndDate'
+    -> ConversionList -- ^ 'cpPayload'
+    -> Int32 -- ^ 'cpStartDate'
+    -> Word32 -- ^ 'cpStartRow'
+    -> Int32 -- ^ 'cpRowCount'
+    -> ConversionPatch
+conversionPatch pCpEngineAccountId_ pCpAgencyId_ pCpAdvertiserId_ pCpEndDate_ pCpPayload_ pCpStartDate_ pCpStartRow_ pCpRowCount_ =
+    ConversionPatch
+    { _cpEngineAccountId = _Coerce # pCpEngineAccountId_
+    , _cpAgencyId = _Coerce # pCpAgencyId_
+    , _cpAdvertiserId = _Coerce # pCpAdvertiserId_
+    , _cpEndDate = _Coerce # pCpEndDate_
+    , _cpPayload = pCpPayload_
+    , _cpStartDate = _Coerce # pCpStartDate_
+    , _cpStartRow = _Coerce # pCpStartRow_
+    , _cpRowCount = _Coerce # pCpRowCount_
+    }
+
+-- | Numeric ID of the engine account.
+cpEngineAccountId :: Lens' ConversionPatch Int64
+cpEngineAccountId
+  = lens _cpEngineAccountId
+      (\ s a -> s{_cpEngineAccountId = a})
+      . _Coerce
+
+-- | Numeric ID of the agency.
+cpAgencyId :: Lens' ConversionPatch Int64
+cpAgencyId
+  = lens _cpAgencyId (\ s a -> s{_cpAgencyId = a}) .
+      _Coerce
+
+-- | Numeric ID of the advertiser.
+cpAdvertiserId :: Lens' ConversionPatch Int64
+cpAdvertiserId
+  = lens _cpAdvertiserId
+      (\ s a -> s{_cpAdvertiserId = a})
+      . _Coerce
+
+-- | Last date (inclusive) on which to retrieve conversions. Format is
+-- yyyymmdd.
+cpEndDate :: Lens' ConversionPatch Int32
+cpEndDate
+  = lens _cpEndDate (\ s a -> s{_cpEndDate = a}) .
+      _Coerce
+
+-- | Multipart request metadata.
+cpPayload :: Lens' ConversionPatch ConversionList
+cpPayload
+  = lens _cpPayload (\ s a -> s{_cpPayload = a})
+
+-- | First date (inclusive) on which to retrieve conversions. Format is
+-- yyyymmdd.
+cpStartDate :: Lens' ConversionPatch Int32
+cpStartDate
+  = lens _cpStartDate (\ s a -> s{_cpStartDate = a}) .
+      _Coerce
+
+-- | The 0-based starting index for retrieving conversions results.
+cpStartRow :: Lens' ConversionPatch Word32
+cpStartRow
+  = lens _cpStartRow (\ s a -> s{_cpStartRow = a}) .
+      _Coerce
+
+-- | The number of conversions to return per call.
+cpRowCount :: Lens' ConversionPatch Int32
+cpRowCount
+  = lens _cpRowCount (\ s a -> s{_cpRowCount = a}) .
+      _Coerce
+
+instance GoogleRequest ConversionPatch where
+        type Rs ConversionPatch = ConversionList
+        requestClient ConversionPatch{..}
+          = go (Just _cpAdvertiserId) (Just _cpAgencyId)
+              (Just _cpEndDate)
+              (Just _cpEngineAccountId)
+              (Just _cpRowCount)
+              (Just _cpStartDate)
+              (Just _cpStartRow)
+              (Just AltJSON)
+              _cpPayload
+              doubleClickSearchService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy ConversionPatchResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/DoubleClickSearch/Conversion/Update.hs b/gen/Network/Google/Resource/DoubleClickSearch/Conversion/Update.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/DoubleClickSearch/Conversion/Update.hs
@@ -0,0 +1,85 @@
+{-# LANGUAGE DataKinds          #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE FlexibleInstances  #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+{-# LANGUAGE TypeOperators      #-}
+
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
+
+-- |
+-- Module      : Network.Google.Resource.DoubleClickSearch.Conversion.Update
+-- Copyright   : (c) 2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Updates a batch of conversions in DoubleClick Search.
+--
+-- /See:/ <https://developers.google.com/doubleclick-search/ DoubleClick Search API Reference> for @doubleclicksearch.conversion.update@.
+module Network.Google.Resource.DoubleClickSearch.Conversion.Update
+    (
+    -- * REST Resource
+      ConversionUpdateResource
+
+    -- * Creating a Request
+    , conversionUpdate
+    , ConversionUpdate
+
+    -- * Request Lenses
+    , cuPayload
+    ) where
+
+import           Network.Google.DoubleClickSearch.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @doubleclicksearch.conversion.update@ method which the
+-- 'ConversionUpdate' request conforms to.
+type ConversionUpdateResource =
+     "doubleclicksearch" :>
+       "v2" :>
+         "conversion" :>
+           QueryParam "alt" AltJSON :>
+             ReqBody '[JSON] ConversionList :>
+               Put '[JSON] ConversionList
+
+-- | Updates a batch of conversions in DoubleClick Search.
+--
+-- /See:/ 'conversionUpdate' smart constructor.
+newtype ConversionUpdate = ConversionUpdate
+    { _cuPayload :: ConversionList
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ConversionUpdate' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'cuPayload'
+conversionUpdate
+    :: ConversionList -- ^ 'cuPayload'
+    -> ConversionUpdate
+conversionUpdate pCuPayload_ =
+    ConversionUpdate
+    { _cuPayload = pCuPayload_
+    }
+
+-- | Multipart request metadata.
+cuPayload :: Lens' ConversionUpdate ConversionList
+cuPayload
+  = lens _cuPayload (\ s a -> s{_cuPayload = a})
+
+instance GoogleRequest ConversionUpdate where
+        type Rs ConversionUpdate = ConversionList
+        requestClient ConversionUpdate{..}
+          = go (Just AltJSON) _cuPayload
+              doubleClickSearchService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy ConversionUpdateResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/DoubleClickSearch/Conversion/UpdateAvailability.hs b/gen/Network/Google/Resource/DoubleClickSearch/Conversion/UpdateAvailability.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/DoubleClickSearch/Conversion/UpdateAvailability.hs
@@ -0,0 +1,90 @@
+{-# 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.DoubleClickSearch.Conversion.UpdateAvailability
+-- Copyright   : (c) 2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Updates the availabilities of a batch of floodlight activities in
+-- DoubleClick Search.
+--
+-- /See:/ <https://developers.google.com/doubleclick-search/ DoubleClick Search API Reference> for @doubleclicksearch.conversion.updateAvailability@.
+module Network.Google.Resource.DoubleClickSearch.Conversion.UpdateAvailability
+    (
+    -- * REST Resource
+      ConversionUpdateAvailabilityResource
+
+    -- * Creating a Request
+    , conversionUpdateAvailability
+    , ConversionUpdateAvailability
+
+    -- * Request Lenses
+    , cuaPayload
+    ) where
+
+import           Network.Google.DoubleClickSearch.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @doubleclicksearch.conversion.updateAvailability@ method which the
+-- 'ConversionUpdateAvailability' request conforms to.
+type ConversionUpdateAvailabilityResource =
+     "doubleclicksearch" :>
+       "v2" :>
+         "conversion" :>
+           "updateAvailability" :>
+             QueryParam "alt" AltJSON :>
+               ReqBody '[JSON] UpdateAvailabilityRequest :>
+                 Post '[JSON] UpdateAvailabilityResponse
+
+-- | Updates the availabilities of a batch of floodlight activities in
+-- DoubleClick Search.
+--
+-- /See:/ 'conversionUpdateAvailability' smart constructor.
+newtype ConversionUpdateAvailability = ConversionUpdateAvailability
+    { _cuaPayload :: UpdateAvailabilityRequest
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ConversionUpdateAvailability' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'cuaPayload'
+conversionUpdateAvailability
+    :: UpdateAvailabilityRequest -- ^ 'cuaPayload'
+    -> ConversionUpdateAvailability
+conversionUpdateAvailability pCuaPayload_ =
+    ConversionUpdateAvailability
+    { _cuaPayload = pCuaPayload_
+    }
+
+-- | Multipart request metadata.
+cuaPayload :: Lens' ConversionUpdateAvailability UpdateAvailabilityRequest
+cuaPayload
+  = lens _cuaPayload (\ s a -> s{_cuaPayload = a})
+
+instance GoogleRequest ConversionUpdateAvailability
+         where
+        type Rs ConversionUpdateAvailability =
+             UpdateAvailabilityResponse
+        requestClient ConversionUpdateAvailability{..}
+          = go (Just AltJSON) _cuaPayload
+              doubleClickSearchService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy ConversionUpdateAvailabilityResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/DoubleClickSearch/Reports/Generate.hs b/gen/Network/Google/Resource/DoubleClickSearch/Reports/Generate.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/DoubleClickSearch/Reports/Generate.hs
@@ -0,0 +1,85 @@
+{-# LANGUAGE DataKinds          #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE FlexibleInstances  #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+{-# LANGUAGE TypeOperators      #-}
+
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
+
+-- |
+-- Module      : Network.Google.Resource.DoubleClickSearch.Reports.Generate
+-- Copyright   : (c) 2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Generates and returns a report immediately.
+--
+-- /See:/ <https://developers.google.com/doubleclick-search/ DoubleClick Search API Reference> for @doubleclicksearch.reports.generate@.
+module Network.Google.Resource.DoubleClickSearch.Reports.Generate
+    (
+    -- * REST Resource
+      ReportsGenerateResource
+
+    -- * Creating a Request
+    , reportsGenerate
+    , ReportsGenerate
+
+    -- * Request Lenses
+    , rgPayload
+    ) where
+
+import           Network.Google.DoubleClickSearch.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @doubleclicksearch.reports.generate@ method which the
+-- 'ReportsGenerate' request conforms to.
+type ReportsGenerateResource =
+     "doubleclicksearch" :>
+       "v2" :>
+         "reports" :>
+           "generate" :>
+             QueryParam "alt" AltJSON :>
+               ReqBody '[JSON] ReportRequest :> Post '[JSON] Report
+
+-- | Generates and returns a report immediately.
+--
+-- /See:/ 'reportsGenerate' smart constructor.
+newtype ReportsGenerate = ReportsGenerate
+    { _rgPayload :: ReportRequest
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ReportsGenerate' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'rgPayload'
+reportsGenerate
+    :: ReportRequest -- ^ 'rgPayload'
+    -> ReportsGenerate
+reportsGenerate pRgPayload_ =
+    ReportsGenerate
+    { _rgPayload = pRgPayload_
+    }
+
+-- | Multipart request metadata.
+rgPayload :: Lens' ReportsGenerate ReportRequest
+rgPayload
+  = lens _rgPayload (\ s a -> s{_rgPayload = a})
+
+instance GoogleRequest ReportsGenerate where
+        type Rs ReportsGenerate = Report
+        requestClient ReportsGenerate{..}
+          = go (Just AltJSON) _rgPayload
+              doubleClickSearchService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy ReportsGenerateResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/DoubleClickSearch/Reports/Get.hs b/gen/Network/Google/Resource/DoubleClickSearch/Reports/Get.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/DoubleClickSearch/Reports/Get.hs
@@ -0,0 +1,83 @@
+{-# LANGUAGE DataKinds          #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE FlexibleInstances  #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+{-# LANGUAGE TypeOperators      #-}
+
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
+
+-- |
+-- Module      : Network.Google.Resource.DoubleClickSearch.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)
+--
+-- Polls for the status of a report request.
+--
+-- /See:/ <https://developers.google.com/doubleclick-search/ DoubleClick Search API Reference> for @doubleclicksearch.reports.get@.
+module Network.Google.Resource.DoubleClickSearch.Reports.Get
+    (
+    -- * REST Resource
+      ReportsGetResource
+
+    -- * Creating a Request
+    , reportsGet
+    , ReportsGet
+
+    -- * Request Lenses
+    , rgReportId
+    ) where
+
+import           Network.Google.DoubleClickSearch.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @doubleclicksearch.reports.get@ method which the
+-- 'ReportsGet' request conforms to.
+type ReportsGetResource =
+     "doubleclicksearch" :>
+       "v2" :>
+         "reports" :>
+           Capture "reportId" Text :>
+             QueryParam "alt" AltJSON :> Get '[JSON] Report
+
+-- | Polls for the status of a report request.
+--
+-- /See:/ 'reportsGet' smart constructor.
+newtype ReportsGet = ReportsGet
+    { _rgReportId :: Text
+    } 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:
+--
+-- * 'rgReportId'
+reportsGet
+    :: Text -- ^ 'rgReportId'
+    -> ReportsGet
+reportsGet pRgReportId_ =
+    ReportsGet
+    { _rgReportId = pRgReportId_
+    }
+
+-- | ID of the report request being polled.
+rgReportId :: Lens' ReportsGet Text
+rgReportId
+  = lens _rgReportId (\ s a -> s{_rgReportId = a})
+
+instance GoogleRequest ReportsGet where
+        type Rs ReportsGet = Report
+        requestClient ReportsGet{..}
+          = go _rgReportId (Just AltJSON)
+              doubleClickSearchService
+          where go
+                  = buildClient (Proxy :: Proxy ReportsGetResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/DoubleClickSearch/Reports/GetFile.hs b/gen/Network/Google/Resource/DoubleClickSearch/Reports/GetFile.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/DoubleClickSearch/Reports/GetFile.hs
@@ -0,0 +1,117 @@
+{-# LANGUAGE DataKinds          #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE FlexibleInstances  #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+{-# LANGUAGE TypeOperators      #-}
+
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
+
+-- |
+-- Module      : Network.Google.Resource.DoubleClickSearch.Reports.GetFile
+-- 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)
+--
+-- Downloads a report file encoded in UTF-8.
+--
+-- /See:/ <https://developers.google.com/doubleclick-search/ DoubleClick Search API Reference> for @doubleclicksearch.reports.getFile@.
+module Network.Google.Resource.DoubleClickSearch.Reports.GetFile
+    (
+    -- * REST Resource
+      ReportsGetFileResource
+
+    -- * Creating a Request
+    , reportsGetFile
+    , ReportsGetFile
+
+    -- * Request Lenses
+    , rgfReportId
+    , rgfReportFragment
+    ) where
+
+import           Network.Google.DoubleClickSearch.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @doubleclicksearch.reports.getFile@ method which the
+-- 'ReportsGetFile' request conforms to.
+type ReportsGetFileResource =
+     "doubleclicksearch" :>
+       "v2" :>
+         "reports" :>
+           Capture "reportId" Text :>
+             "files" :>
+               Capture "reportFragment" (Textual Int32) :>
+                 QueryParam "alt" AltJSON :> Get '[JSON] ()
+       :<|>
+       "doubleclicksearch" :>
+         "v2" :>
+           "reports" :>
+             Capture "reportId" Text :>
+               "files" :>
+                 Capture "reportFragment" (Textual Int32) :>
+                   QueryParam "alt" AltMedia :>
+                     Get '[OctetStream] Stream
+
+-- | Downloads a report file encoded in UTF-8.
+--
+-- /See:/ 'reportsGetFile' smart constructor.
+data ReportsGetFile = ReportsGetFile
+    { _rgfReportId       :: !Text
+    , _rgfReportFragment :: !(Textual Int32)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ReportsGetFile' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'rgfReportId'
+--
+-- * 'rgfReportFragment'
+reportsGetFile
+    :: Text -- ^ 'rgfReportId'
+    -> Int32 -- ^ 'rgfReportFragment'
+    -> ReportsGetFile
+reportsGetFile pRgfReportId_ pRgfReportFragment_ =
+    ReportsGetFile
+    { _rgfReportId = pRgfReportId_
+    , _rgfReportFragment = _Coerce # pRgfReportFragment_
+    }
+
+-- | ID of the report.
+rgfReportId :: Lens' ReportsGetFile Text
+rgfReportId
+  = lens _rgfReportId (\ s a -> s{_rgfReportId = a})
+
+-- | The index of the report fragment to download.
+rgfReportFragment :: Lens' ReportsGetFile Int32
+rgfReportFragment
+  = lens _rgfReportFragment
+      (\ s a -> s{_rgfReportFragment = a})
+      . _Coerce
+
+instance GoogleRequest ReportsGetFile where
+        type Rs ReportsGetFile = ()
+        requestClient ReportsGetFile{..}
+          = go _rgfReportId _rgfReportFragment (Just AltJSON)
+              doubleClickSearchService
+          where go :<|> _
+                  = buildClient (Proxy :: Proxy ReportsGetFileResource)
+                      mempty
+
+instance GoogleRequest (MediaDownload ReportsGetFile)
+         where
+        type Rs (MediaDownload ReportsGetFile) = Stream
+        requestClient (MediaDownload ReportsGetFile{..})
+          = go _rgfReportId _rgfReportFragment (Just AltMedia)
+              doubleClickSearchService
+          where _ :<|> go
+                  = buildClient (Proxy :: Proxy ReportsGetFileResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/DoubleClickSearch/Reports/Request.hs b/gen/Network/Google/Resource/DoubleClickSearch/Reports/Request.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/DoubleClickSearch/Reports/Request.hs
@@ -0,0 +1,83 @@
+{-# LANGUAGE DataKinds          #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE FlexibleInstances  #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+{-# LANGUAGE TypeOperators      #-}
+
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
+
+-- |
+-- Module      : Network.Google.Resource.DoubleClickSearch.Reports.Request
+-- 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 report request into the reporting system.
+--
+-- /See:/ <https://developers.google.com/doubleclick-search/ DoubleClick Search API Reference> for @doubleclicksearch.reports.request@.
+module Network.Google.Resource.DoubleClickSearch.Reports.Request
+    (
+    -- * REST Resource
+      ReportsRequestResource
+
+    -- * Creating a Request
+    , reportsRequest
+    , ReportsRequest
+
+    -- * Request Lenses
+    , rrPayload
+    ) where
+
+import           Network.Google.DoubleClickSearch.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @doubleclicksearch.reports.request@ method which the
+-- 'ReportsRequest' request conforms to.
+type ReportsRequestResource =
+     "doubleclicksearch" :>
+       "v2" :>
+         "reports" :>
+           QueryParam "alt" AltJSON :>
+             ReqBody '[JSON] ReportRequest :> Post '[JSON] Report
+
+-- | Inserts a report request into the reporting system.
+--
+-- /See:/ 'reportsRequest' smart constructor.
+newtype ReportsRequest = ReportsRequest
+    { _rrPayload :: ReportRequest
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ReportsRequest' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'rrPayload'
+reportsRequest
+    :: ReportRequest -- ^ 'rrPayload'
+    -> ReportsRequest
+reportsRequest pRrPayload_ =
+    ReportsRequest
+    { _rrPayload = pRrPayload_
+    }
+
+-- | Multipart request metadata.
+rrPayload :: Lens' ReportsRequest ReportRequest
+rrPayload
+  = lens _rrPayload (\ s a -> s{_rrPayload = a})
+
+instance GoogleRequest ReportsRequest where
+        type Rs ReportsRequest = Report
+        requestClient ReportsRequest{..}
+          = go (Just AltJSON) _rrPayload
+              doubleClickSearchService
+          where go
+                  = buildClient (Proxy :: Proxy ReportsRequestResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/DoubleClickSearch/SavedColumns/List.hs b/gen/Network/Google/Resource/DoubleClickSearch/SavedColumns/List.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/DoubleClickSearch/SavedColumns/List.hs
@@ -0,0 +1,102 @@
+{-# LANGUAGE DataKinds          #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE FlexibleInstances  #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+{-# LANGUAGE TypeOperators      #-}
+
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
+
+-- |
+-- Module      : Network.Google.Resource.DoubleClickSearch.SavedColumns.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)
+--
+-- Retrieve the list of saved columns for a specified advertiser.
+--
+-- /See:/ <https://developers.google.com/doubleclick-search/ DoubleClick Search API Reference> for @doubleclicksearch.savedColumns.list@.
+module Network.Google.Resource.DoubleClickSearch.SavedColumns.List
+    (
+    -- * REST Resource
+      SavedColumnsListResource
+
+    -- * Creating a Request
+    , savedColumnsList
+    , SavedColumnsList
+
+    -- * Request Lenses
+    , sclAgencyId
+    , sclAdvertiserId
+    ) where
+
+import           Network.Google.DoubleClickSearch.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @doubleclicksearch.savedColumns.list@ method which the
+-- 'SavedColumnsList' request conforms to.
+type SavedColumnsListResource =
+     "doubleclicksearch" :>
+       "v2" :>
+         "agency" :>
+           Capture "agencyId" (Textual Int64) :>
+             "advertiser" :>
+               Capture "advertiserId" (Textual Int64) :>
+                 "savedcolumns" :>
+                   QueryParam "alt" AltJSON :>
+                     Get '[JSON] SavedColumnList
+
+-- | Retrieve the list of saved columns for a specified advertiser.
+--
+-- /See:/ 'savedColumnsList' smart constructor.
+data SavedColumnsList = SavedColumnsList
+    { _sclAgencyId     :: !(Textual Int64)
+    , _sclAdvertiserId :: !(Textual Int64)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'SavedColumnsList' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'sclAgencyId'
+--
+-- * 'sclAdvertiserId'
+savedColumnsList
+    :: Int64 -- ^ 'sclAgencyId'
+    -> Int64 -- ^ 'sclAdvertiserId'
+    -> SavedColumnsList
+savedColumnsList pSclAgencyId_ pSclAdvertiserId_ =
+    SavedColumnsList
+    { _sclAgencyId = _Coerce # pSclAgencyId_
+    , _sclAdvertiserId = _Coerce # pSclAdvertiserId_
+    }
+
+-- | DS ID of the agency.
+sclAgencyId :: Lens' SavedColumnsList Int64
+sclAgencyId
+  = lens _sclAgencyId (\ s a -> s{_sclAgencyId = a}) .
+      _Coerce
+
+-- | DS ID of the advertiser.
+sclAdvertiserId :: Lens' SavedColumnsList Int64
+sclAdvertiserId
+  = lens _sclAdvertiserId
+      (\ s a -> s{_sclAdvertiserId = a})
+      . _Coerce
+
+instance GoogleRequest SavedColumnsList where
+        type Rs SavedColumnsList = SavedColumnList
+        requestClient SavedColumnsList{..}
+          = go _sclAgencyId _sclAdvertiserId (Just AltJSON)
+              doubleClickSearchService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy SavedColumnsListResource)
+                      mempty
diff --git a/gogol-doubleclick-search.cabal b/gogol-doubleclick-search.cabal
new file mode 100644
--- /dev/null
+++ b/gogol-doubleclick-search.cabal
@@ -0,0 +1,56 @@
+name:                  gogol-doubleclick-search
+version:               0.0.1
+synopsis:              Google DoubleClick Search 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:
+    Report and modify your advertising data in DoubleClick Search (for
+    example, campaigns, ad groups, keywords, and conversions).
+    .
+    /Warning:/ This is an experimental prototype/preview release which is still
+    under exploratory development and not intended for public use, caveat emptor!
+    .
+    This library is compatible with version @v2@
+    of the API.
+
+source-repository head
+    type:     git
+    location: git://github.com/brendanhay/gogol.git
+
+library
+    default-language:  Haskell2010
+    hs-source-dirs:    src gen
+
+    ghc-options:       -Wall
+
+    exposed-modules:
+          Network.Google.DoubleClickSearch
+        , Network.Google.DoubleClickSearch.Types
+        , Network.Google.Resource.DoubleClickSearch.Conversion.Get
+        , Network.Google.Resource.DoubleClickSearch.Conversion.Insert
+        , Network.Google.Resource.DoubleClickSearch.Conversion.Patch
+        , Network.Google.Resource.DoubleClickSearch.Conversion.Update
+        , Network.Google.Resource.DoubleClickSearch.Conversion.UpdateAvailability
+        , Network.Google.Resource.DoubleClickSearch.Reports.Generate
+        , Network.Google.Resource.DoubleClickSearch.Reports.Get
+        , Network.Google.Resource.DoubleClickSearch.Reports.GetFile
+        , Network.Google.Resource.DoubleClickSearch.Reports.Request
+        , Network.Google.Resource.DoubleClickSearch.SavedColumns.List
+
+    other-modules:
+          Network.Google.DoubleClickSearch.Types.Product
+        , Network.Google.DoubleClickSearch.Types.Sum
+
+    build-depends:
+          gogol-core == 0.0.1.*
+        , base       >= 4.7 && < 5
