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-fusiontables
+
+* [Version](#version)
+* [Description](#description)
+* [Contribute](#contribute)
+* [Licence](#licence)
+
+
+## Version
+
+`0.0.1`
+
+
+## Description
+
+A client library for the Google Fusion Tables.
+
+
+## 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-fusiontables` 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/FusionTables.hs b/gen/Network/Google/FusionTables.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/FusionTables.hs
@@ -0,0 +1,408 @@
+{-# LANGUAGE DataKinds         #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# LANGUAGE TypeOperators     #-}
+
+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+
+-- |
+-- Module      : Network.Google.FusionTables
+-- 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)
+--
+-- API for working with Fusion Tables data.
+--
+-- /See:/ <https://developers.google.com/fusiontables Fusion Tables API Reference>
+module Network.Google.FusionTables
+    (
+    -- * Service Configuration
+      fusionTablesService
+
+    -- * API Declaration
+    , FusionTablesAPI
+
+    -- * Resources
+
+    -- ** fusiontables.column.delete
+    , module Network.Google.Resource.FusionTables.Column.Delete
+
+    -- ** fusiontables.column.get
+    , module Network.Google.Resource.FusionTables.Column.Get
+
+    -- ** fusiontables.column.insert
+    , module Network.Google.Resource.FusionTables.Column.Insert
+
+    -- ** fusiontables.column.list
+    , module Network.Google.Resource.FusionTables.Column.List
+
+    -- ** fusiontables.column.patch
+    , module Network.Google.Resource.FusionTables.Column.Patch
+
+    -- ** fusiontables.column.update
+    , module Network.Google.Resource.FusionTables.Column.Update
+
+    -- ** fusiontables.query.sql
+    , module Network.Google.Resource.FusionTables.Query.SQL
+
+    -- ** fusiontables.query.sqlGet
+    , module Network.Google.Resource.FusionTables.Query.SQLGet
+
+    -- ** fusiontables.style.delete
+    , module Network.Google.Resource.FusionTables.Style.Delete
+
+    -- ** fusiontables.style.get
+    , module Network.Google.Resource.FusionTables.Style.Get
+
+    -- ** fusiontables.style.insert
+    , module Network.Google.Resource.FusionTables.Style.Insert
+
+    -- ** fusiontables.style.list
+    , module Network.Google.Resource.FusionTables.Style.List
+
+    -- ** fusiontables.style.patch
+    , module Network.Google.Resource.FusionTables.Style.Patch
+
+    -- ** fusiontables.style.update
+    , module Network.Google.Resource.FusionTables.Style.Update
+
+    -- ** fusiontables.table.copy
+    , module Network.Google.Resource.FusionTables.Table.Copy
+
+    -- ** fusiontables.table.delete
+    , module Network.Google.Resource.FusionTables.Table.Delete
+
+    -- ** fusiontables.table.get
+    , module Network.Google.Resource.FusionTables.Table.Get
+
+    -- ** fusiontables.table.importRows
+    , module Network.Google.Resource.FusionTables.Table.ImportRows
+
+    -- ** fusiontables.table.importTable
+    , module Network.Google.Resource.FusionTables.Table.ImportTable
+
+    -- ** fusiontables.table.insert
+    , module Network.Google.Resource.FusionTables.Table.Insert
+
+    -- ** fusiontables.table.list
+    , module Network.Google.Resource.FusionTables.Table.List
+
+    -- ** fusiontables.table.patch
+    , module Network.Google.Resource.FusionTables.Table.Patch
+
+    -- ** fusiontables.table.replaceRows
+    , module Network.Google.Resource.FusionTables.Table.ReplaceRows
+
+    -- ** fusiontables.table.update
+    , module Network.Google.Resource.FusionTables.Table.Update
+
+    -- ** fusiontables.task.delete
+    , module Network.Google.Resource.FusionTables.Task.Delete
+
+    -- ** fusiontables.task.get
+    , module Network.Google.Resource.FusionTables.Task.Get
+
+    -- ** fusiontables.task.list
+    , module Network.Google.Resource.FusionTables.Task.List
+
+    -- ** fusiontables.template.delete
+    , module Network.Google.Resource.FusionTables.Template.Delete
+
+    -- ** fusiontables.template.get
+    , module Network.Google.Resource.FusionTables.Template.Get
+
+    -- ** fusiontables.template.insert
+    , module Network.Google.Resource.FusionTables.Template.Insert
+
+    -- ** fusiontables.template.list
+    , module Network.Google.Resource.FusionTables.Template.List
+
+    -- ** fusiontables.template.patch
+    , module Network.Google.Resource.FusionTables.Template.Patch
+
+    -- ** fusiontables.template.update
+    , module Network.Google.Resource.FusionTables.Template.Update
+
+    -- * Types
+
+    -- ** ColumnList
+    , ColumnList
+    , columnList
+    , clTotalItems
+    , clNextPageToken
+    , clKind
+    , clItems
+
+    -- ** TableList
+    , TableList
+    , tableList
+    , tlNextPageToken
+    , tlKind
+    , tlItems
+
+    -- ** StyleFunction
+    , StyleFunction
+    , styleFunction
+    , sfBuckets
+    , sfKind
+    , sfGradient
+    , sfColumnName
+
+    -- ** ColumnBaseColumn
+    , ColumnBaseColumn
+    , columnBaseColumn
+    , cbcTableIndex
+    , cbcColumnId
+
+    -- ** SQLresponse
+    , SQLresponse
+    , sQLresponse
+    , sqlKind
+    , sqlRows
+    , sqlColumns
+
+    -- ** StyleFunctionGradientColorsItem
+    , StyleFunctionGradientColorsItem
+    , styleFunctionGradientColorsItem
+    , sfgciColor
+    , sfgciOpacity
+
+    -- ** StyleSettingList
+    , StyleSettingList
+    , styleSettingList
+    , sslTotalItems
+    , sslNextPageToken
+    , sslKind
+    , sslItems
+
+    -- ** Bucket
+    , Bucket
+    , bucket
+    , bMax
+    , bColor
+    , bWeight
+    , bIcon
+    , bOpacity
+    , bMin
+
+    -- ** Line
+    , Line
+    , line
+    , lCoordinates
+    , lType
+
+    -- ** StyleSetting
+    , StyleSetting
+    , styleSetting
+    , ssPolylineOptions
+    , ssPolygonOptions
+    , ssMarkerOptions
+    , ssKind
+    , ssName
+    , ssStyleId
+    , ssTableId
+
+    -- ** Point
+    , Point
+    , point
+    , pCoordinates
+    , pType
+
+    -- ** Polygon
+    , Polygon
+    , polygon
+    , polCoordinates
+    , polType
+
+    -- ** TaskList
+    , TaskList
+    , taskList
+    , tTotalItems
+    , tNextPageToken
+    , tKind
+    , tItems
+
+    -- ** Geometry
+    , Geometry
+    , geometry
+    , gGeometries
+    , gGeometry
+    , gType
+
+    -- ** TemplateList
+    , TemplateList
+    , templateList
+    , temTotalItems
+    , temNextPageToken
+    , temKind
+    , temItems
+
+    -- ** Import
+    , Import
+    , import'
+    , iKind
+    , iNumRowsReceived
+
+    -- ** Task
+    , Task
+    , task
+    , tasProgress
+    , tasTaskId
+    , tasKind
+    , tasType
+    , tasStarted
+
+    -- ** Template
+    , Template
+    , template
+    , ttAutomaticColumnNames
+    , ttTemplateId
+    , ttKind
+    , ttBody
+    , ttName
+    , ttTableId
+
+    -- ** PointStyle
+    , PointStyle
+    , pointStyle
+    , psIconName
+    , psIconStyler
+
+    -- ** PolygonStyle
+    , PolygonStyle
+    , polygonStyle
+    , psFillColorStyler
+    , psFillColor
+    , psStrokeColorStyler
+    , psStrokeWeight
+    , psStrokeOpacity
+    , psFillOpacity
+    , psStrokeWeightStyler
+    , psStrokeColor
+
+    -- ** StyleFunctionGradient
+    , StyleFunctionGradient
+    , styleFunctionGradient
+    , sfgMax
+    , sfgMin
+    , sfgColors
+
+    -- ** Column
+    , Column
+    , column
+    , cColumnJSONSchema
+    , cGraphPredicate
+    , cKind
+    , cBaseColumn
+    , cColumnPropertiesJSON
+    , cName
+    , cType
+    , cFormatPattern
+    , cColumnId
+    , cValidValues
+    , cValidateData
+    , cDescription
+
+    -- ** Table
+    , Table
+    , table
+    , tabaIsExportable
+    , tabaKind
+    , tabaColumnPropertiesJSONSchema
+    , tabaTablePropertiesJSONSchema
+    , tabaName
+    , tabaTablePropertiesJSON
+    , tabaColumns
+    , tabaBaseTableIds
+    , tabaTableId
+    , tabaSQL
+    , tabaDescription
+    , tabaAttribution
+    , tabaAttributionLink
+
+    -- ** LineStyle
+    , LineStyle
+    , lineStyle
+    , lsStrokeColorStyler
+    , lsStrokeWeight
+    , lsStrokeOpacity
+    , lsStrokeWeightStyler
+    , lsStrokeColor
+    ) where
+
+import           Network.Google.FusionTables.Types
+import           Network.Google.Prelude
+import           Network.Google.Resource.FusionTables.Column.Delete
+import           Network.Google.Resource.FusionTables.Column.Get
+import           Network.Google.Resource.FusionTables.Column.Insert
+import           Network.Google.Resource.FusionTables.Column.List
+import           Network.Google.Resource.FusionTables.Column.Patch
+import           Network.Google.Resource.FusionTables.Column.Update
+import           Network.Google.Resource.FusionTables.Query.SQL
+import           Network.Google.Resource.FusionTables.Query.SQLGet
+import           Network.Google.Resource.FusionTables.Style.Delete
+import           Network.Google.Resource.FusionTables.Style.Get
+import           Network.Google.Resource.FusionTables.Style.Insert
+import           Network.Google.Resource.FusionTables.Style.List
+import           Network.Google.Resource.FusionTables.Style.Patch
+import           Network.Google.Resource.FusionTables.Style.Update
+import           Network.Google.Resource.FusionTables.Table.Copy
+import           Network.Google.Resource.FusionTables.Table.Delete
+import           Network.Google.Resource.FusionTables.Table.Get
+import           Network.Google.Resource.FusionTables.Table.ImportRows
+import           Network.Google.Resource.FusionTables.Table.ImportTable
+import           Network.Google.Resource.FusionTables.Table.Insert
+import           Network.Google.Resource.FusionTables.Table.List
+import           Network.Google.Resource.FusionTables.Table.Patch
+import           Network.Google.Resource.FusionTables.Table.ReplaceRows
+import           Network.Google.Resource.FusionTables.Table.Update
+import           Network.Google.Resource.FusionTables.Task.Delete
+import           Network.Google.Resource.FusionTables.Task.Get
+import           Network.Google.Resource.FusionTables.Task.List
+import           Network.Google.Resource.FusionTables.Template.Delete
+import           Network.Google.Resource.FusionTables.Template.Get
+import           Network.Google.Resource.FusionTables.Template.Insert
+import           Network.Google.Resource.FusionTables.Template.List
+import           Network.Google.Resource.FusionTables.Template.Patch
+import           Network.Google.Resource.FusionTables.Template.Update
+
+{- $resources
+TODO
+-}
+
+-- | Represents the entirety of the methods and resources available for the Fusion Tables API service.
+type FusionTablesAPI =
+     StyleInsertResource :<|> StyleListResource :<|>
+       StylePatchResource
+       :<|> StyleGetResource
+       :<|> StyleDeleteResource
+       :<|> StyleUpdateResource
+       :<|> QuerySQLGetResource
+       :<|> QuerySQLResource
+       :<|> TaskListResource
+       :<|> TaskGetResource
+       :<|> TaskDeleteResource
+       :<|> TemplateInsertResource
+       :<|> TemplateListResource
+       :<|> TemplatePatchResource
+       :<|> TemplateGetResource
+       :<|> TemplateDeleteResource
+       :<|> TemplateUpdateResource
+       :<|> ColumnInsertResource
+       :<|> ColumnListResource
+       :<|> ColumnPatchResource
+       :<|> ColumnGetResource
+       :<|> ColumnDeleteResource
+       :<|> ColumnUpdateResource
+       :<|> TableInsertResource
+       :<|> TableListResource
+       :<|> TableCopyResource
+       :<|> TableReplaceRowsResource
+       :<|> TableImportTableResource
+       :<|> TablePatchResource
+       :<|> TableGetResource
+       :<|> TableImportRowsResource
+       :<|> TableDeleteResource
+       :<|> TableUpdateResource
diff --git a/gen/Network/Google/FusionTables/Types.hs b/gen/Network/Google/FusionTables/Types.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/FusionTables/Types.hs
@@ -0,0 +1,246 @@
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- |
+-- Module      : Network.Google.FusionTables.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.FusionTables.Types
+    (
+    -- * Service Configuration
+      fusionTablesService
+
+    -- * OAuth Scopes
+    , fusiontablesReadonlyScope
+    , fusiontablesScope
+
+    -- * ColumnList
+    , ColumnList
+    , columnList
+    , clTotalItems
+    , clNextPageToken
+    , clKind
+    , clItems
+
+    -- * TableList
+    , TableList
+    , tableList
+    , tlNextPageToken
+    , tlKind
+    , tlItems
+
+    -- * StyleFunction
+    , StyleFunction
+    , styleFunction
+    , sfBuckets
+    , sfKind
+    , sfGradient
+    , sfColumnName
+
+    -- * ColumnBaseColumn
+    , ColumnBaseColumn
+    , columnBaseColumn
+    , cbcTableIndex
+    , cbcColumnId
+
+    -- * SQLresponse
+    , SQLresponse
+    , sQLresponse
+    , sqlKind
+    , sqlRows
+    , sqlColumns
+
+    -- * StyleFunctionGradientColorsItem
+    , StyleFunctionGradientColorsItem
+    , styleFunctionGradientColorsItem
+    , sfgciColor
+    , sfgciOpacity
+
+    -- * StyleSettingList
+    , StyleSettingList
+    , styleSettingList
+    , sslTotalItems
+    , sslNextPageToken
+    , sslKind
+    , sslItems
+
+    -- * Bucket
+    , Bucket
+    , bucket
+    , bMax
+    , bColor
+    , bWeight
+    , bIcon
+    , bOpacity
+    , bMin
+
+    -- * Line
+    , Line
+    , line
+    , lCoordinates
+    , lType
+
+    -- * StyleSetting
+    , StyleSetting
+    , styleSetting
+    , ssPolylineOptions
+    , ssPolygonOptions
+    , ssMarkerOptions
+    , ssKind
+    , ssName
+    , ssStyleId
+    , ssTableId
+
+    -- * Point
+    , Point
+    , point
+    , pCoordinates
+    , pType
+
+    -- * Polygon
+    , Polygon
+    , polygon
+    , polCoordinates
+    , polType
+
+    -- * TaskList
+    , TaskList
+    , taskList
+    , tTotalItems
+    , tNextPageToken
+    , tKind
+    , tItems
+
+    -- * Geometry
+    , Geometry
+    , geometry
+    , gGeometries
+    , gGeometry
+    , gType
+
+    -- * TemplateList
+    , TemplateList
+    , templateList
+    , temTotalItems
+    , temNextPageToken
+    , temKind
+    , temItems
+
+    -- * Import
+    , Import
+    , import'
+    , iKind
+    , iNumRowsReceived
+
+    -- * Task
+    , Task
+    , task
+    , tasProgress
+    , tasTaskId
+    , tasKind
+    , tasType
+    , tasStarted
+
+    -- * Template
+    , Template
+    , template
+    , ttAutomaticColumnNames
+    , ttTemplateId
+    , ttKind
+    , ttBody
+    , ttName
+    , ttTableId
+
+    -- * PointStyle
+    , PointStyle
+    , pointStyle
+    , psIconName
+    , psIconStyler
+
+    -- * PolygonStyle
+    , PolygonStyle
+    , polygonStyle
+    , psFillColorStyler
+    , psFillColor
+    , psStrokeColorStyler
+    , psStrokeWeight
+    , psStrokeOpacity
+    , psFillOpacity
+    , psStrokeWeightStyler
+    , psStrokeColor
+
+    -- * StyleFunctionGradient
+    , StyleFunctionGradient
+    , styleFunctionGradient
+    , sfgMax
+    , sfgMin
+    , sfgColors
+
+    -- * Column
+    , Column
+    , column
+    , cColumnJSONSchema
+    , cGraphPredicate
+    , cKind
+    , cBaseColumn
+    , cColumnPropertiesJSON
+    , cName
+    , cType
+    , cFormatPattern
+    , cColumnId
+    , cValidValues
+    , cValidateData
+    , cDescription
+
+    -- * Table
+    , Table
+    , table
+    , tabaIsExportable
+    , tabaKind
+    , tabaColumnPropertiesJSONSchema
+    , tabaTablePropertiesJSONSchema
+    , tabaName
+    , tabaTablePropertiesJSON
+    , tabaColumns
+    , tabaBaseTableIds
+    , tabaTableId
+    , tabaSQL
+    , tabaDescription
+    , tabaAttribution
+    , tabaAttributionLink
+
+    -- * LineStyle
+    , LineStyle
+    , lineStyle
+    , lsStrokeColorStyler
+    , lsStrokeWeight
+    , lsStrokeOpacity
+    , lsStrokeWeightStyler
+    , lsStrokeColor
+    ) where
+
+import           Network.Google.FusionTables.Types.Product
+import           Network.Google.FusionTables.Types.Sum
+import           Network.Google.Prelude
+
+-- | Default request referring to version 'v2' of the Fusion Tables API. This contains the host and root path used as a starting point for constructing service requests.
+fusionTablesService :: Service
+fusionTablesService
+  = defaultService (ServiceId "fusiontables:v2")
+      "www.googleapis.com"
+
+-- | View your Fusion Tables
+fusiontablesReadonlyScope :: OAuthScope
+fusiontablesReadonlyScope = "https://www.googleapis.com/auth/fusiontables.readonly";
+
+-- | Manage your Fusion Tables
+fusiontablesScope :: OAuthScope
+fusiontablesScope = "https://www.googleapis.com/auth/fusiontables";
diff --git a/gen/Network/Google/FusionTables/Types/Product.hs b/gen/Network/Google/FusionTables/Types/Product.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/FusionTables/Types/Product.hs
@@ -0,0 +1,1955 @@
+{-# 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.FusionTables.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.FusionTables.Types.Product where
+
+import           Network.Google.FusionTables.Types.Sum
+import           Network.Google.Prelude
+
+-- | Represents a list of columns in a table.
+--
+-- /See:/ 'columnList' smart constructor.
+data ColumnList = ColumnList
+    { _clTotalItems    :: !(Maybe (Textual Int32))
+    , _clNextPageToken :: !(Maybe Text)
+    , _clKind          :: !Text
+    , _clItems         :: !(Maybe [Column])
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ColumnList' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'clTotalItems'
+--
+-- * 'clNextPageToken'
+--
+-- * 'clKind'
+--
+-- * 'clItems'
+columnList
+    :: ColumnList
+columnList =
+    ColumnList
+    { _clTotalItems = Nothing
+    , _clNextPageToken = Nothing
+    , _clKind = "fusiontables#columnList"
+    , _clItems = Nothing
+    }
+
+-- | Total number of columns for the table.
+clTotalItems :: Lens' ColumnList (Maybe Int32)
+clTotalItems
+  = lens _clTotalItems (\ s a -> s{_clTotalItems = a})
+      . mapping _Coerce
+
+-- | Token used to access the next page of this result. No token is displayed
+-- if there are no more pages left.
+clNextPageToken :: Lens' ColumnList (Maybe Text)
+clNextPageToken
+  = lens _clNextPageToken
+      (\ s a -> s{_clNextPageToken = a})
+
+-- | The kind of item this is. For a column list, this is always
+-- fusiontables#columnList.
+clKind :: Lens' ColumnList Text
+clKind = lens _clKind (\ s a -> s{_clKind = a})
+
+-- | List of all requested columns.
+clItems :: Lens' ColumnList [Column]
+clItems
+  = lens _clItems (\ s a -> s{_clItems = a}) . _Default
+      . _Coerce
+
+instance FromJSON ColumnList where
+        parseJSON
+          = withObject "ColumnList"
+              (\ o ->
+                 ColumnList <$>
+                   (o .:? "totalItems") <*> (o .:? "nextPageToken") <*>
+                     (o .:? "kind" .!= "fusiontables#columnList")
+                     <*> (o .:? "items" .!= mempty))
+
+instance ToJSON ColumnList where
+        toJSON ColumnList{..}
+          = object
+              (catMaybes
+                 [("totalItems" .=) <$> _clTotalItems,
+                  ("nextPageToken" .=) <$> _clNextPageToken,
+                  Just ("kind" .= _clKind), ("items" .=) <$> _clItems])
+
+-- | Represents a list of tables.
+--
+-- /See:/ 'tableList' smart constructor.
+data TableList = TableList
+    { _tlNextPageToken :: !(Maybe Text)
+    , _tlKind          :: !Text
+    , _tlItems         :: !(Maybe [Table])
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'TableList' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'tlNextPageToken'
+--
+-- * 'tlKind'
+--
+-- * 'tlItems'
+tableList
+    :: TableList
+tableList =
+    TableList
+    { _tlNextPageToken = Nothing
+    , _tlKind = "fusiontables#tableList"
+    , _tlItems = Nothing
+    }
+
+-- | Token used to access the next page of this result. No token is displayed
+-- if there are no more pages left.
+tlNextPageToken :: Lens' TableList (Maybe Text)
+tlNextPageToken
+  = lens _tlNextPageToken
+      (\ s a -> s{_tlNextPageToken = a})
+
+-- | The kind of item this is. For table list, this is always
+-- fusiontables#tableList.
+tlKind :: Lens' TableList Text
+tlKind = lens _tlKind (\ s a -> s{_tlKind = a})
+
+-- | List of all requested tables.
+tlItems :: Lens' TableList [Table]
+tlItems
+  = lens _tlItems (\ s a -> s{_tlItems = a}) . _Default
+      . _Coerce
+
+instance FromJSON TableList where
+        parseJSON
+          = withObject "TableList"
+              (\ o ->
+                 TableList <$>
+                   (o .:? "nextPageToken") <*>
+                     (o .:? "kind" .!= "fusiontables#tableList")
+                     <*> (o .:? "items" .!= mempty))
+
+instance ToJSON TableList where
+        toJSON TableList{..}
+          = object
+              (catMaybes
+                 [("nextPageToken" .=) <$> _tlNextPageToken,
+                  Just ("kind" .= _tlKind), ("items" .=) <$> _tlItems])
+
+-- | Represents a StyleFunction within a StyleSetting
+--
+-- /See:/ 'styleFunction' smart constructor.
+data StyleFunction = StyleFunction
+    { _sfBuckets    :: !(Maybe [Bucket])
+    , _sfKind       :: !(Maybe Text)
+    , _sfGradient   :: !(Maybe StyleFunctionGradient)
+    , _sfColumnName :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'StyleFunction' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'sfBuckets'
+--
+-- * 'sfKind'
+--
+-- * 'sfGradient'
+--
+-- * 'sfColumnName'
+styleFunction
+    :: StyleFunction
+styleFunction =
+    StyleFunction
+    { _sfBuckets = Nothing
+    , _sfKind = Nothing
+    , _sfGradient = Nothing
+    , _sfColumnName = Nothing
+    }
+
+-- | Bucket function that assigns a style based on the range a column value
+-- falls into.
+sfBuckets :: Lens' StyleFunction [Bucket]
+sfBuckets
+  = lens _sfBuckets (\ s a -> s{_sfBuckets = a}) .
+      _Default
+      . _Coerce
+
+-- | Stylers can be one of three kinds: \"fusiontables#fromColumn if the
+-- column value is to be used as is, i.e., the column values can have
+-- colors in #RRGGBBAA format or integer line widths or icon names;
+-- fusiontables#gradient if the styling of the row is to be based on
+-- applying the gradient function on the column value; or
+-- fusiontables#buckets if the styling is to based on the bucket into which
+-- the the column value falls.
+sfKind :: Lens' StyleFunction (Maybe Text)
+sfKind = lens _sfKind (\ s a -> s{_sfKind = a})
+
+-- | Gradient function that interpolates a range of colors based on column
+-- value.
+sfGradient :: Lens' StyleFunction (Maybe StyleFunctionGradient)
+sfGradient
+  = lens _sfGradient (\ s a -> s{_sfGradient = a})
+
+-- | Name of the column whose value is used in the style.
+sfColumnName :: Lens' StyleFunction (Maybe Text)
+sfColumnName
+  = lens _sfColumnName (\ s a -> s{_sfColumnName = a})
+
+instance FromJSON StyleFunction where
+        parseJSON
+          = withObject "StyleFunction"
+              (\ o ->
+                 StyleFunction <$>
+                   (o .:? "buckets" .!= mempty) <*> (o .:? "kind") <*>
+                     (o .:? "gradient")
+                     <*> (o .:? "columnName"))
+
+instance ToJSON StyleFunction where
+        toJSON StyleFunction{..}
+          = object
+              (catMaybes
+                 [("buckets" .=) <$> _sfBuckets,
+                  ("kind" .=) <$> _sfKind,
+                  ("gradient" .=) <$> _sfGradient,
+                  ("columnName" .=) <$> _sfColumnName])
+
+-- | Identifier of the base column. If present, this column is derived from
+-- the specified base column.
+--
+-- /See:/ 'columnBaseColumn' smart constructor.
+data ColumnBaseColumn = ColumnBaseColumn
+    { _cbcTableIndex :: !(Maybe (Textual Int32))
+    , _cbcColumnId   :: !(Maybe (Textual Int32))
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ColumnBaseColumn' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'cbcTableIndex'
+--
+-- * 'cbcColumnId'
+columnBaseColumn
+    :: ColumnBaseColumn
+columnBaseColumn =
+    ColumnBaseColumn
+    { _cbcTableIndex = Nothing
+    , _cbcColumnId = Nothing
+    }
+
+-- | Offset to the entry in the list of base tables in the table definition.
+cbcTableIndex :: Lens' ColumnBaseColumn (Maybe Int32)
+cbcTableIndex
+  = lens _cbcTableIndex
+      (\ s a -> s{_cbcTableIndex = a})
+      . mapping _Coerce
+
+-- | The id of the column in the base table from which this column is
+-- derived.
+cbcColumnId :: Lens' ColumnBaseColumn (Maybe Int32)
+cbcColumnId
+  = lens _cbcColumnId (\ s a -> s{_cbcColumnId = a}) .
+      mapping _Coerce
+
+instance FromJSON ColumnBaseColumn where
+        parseJSON
+          = withObject "ColumnBaseColumn"
+              (\ o ->
+                 ColumnBaseColumn <$>
+                   (o .:? "tableIndex") <*> (o .:? "columnId"))
+
+instance ToJSON ColumnBaseColumn where
+        toJSON ColumnBaseColumn{..}
+          = object
+              (catMaybes
+                 [("tableIndex" .=) <$> _cbcTableIndex,
+                  ("columnId" .=) <$> _cbcColumnId])
+
+-- | Represents a response to a SQL statement.
+--
+-- /See:/ 'sQLresponse' smart constructor.
+data SQLresponse = SQLresponse
+    { _sqlKind    :: !Text
+    , _sqlRows    :: !(Maybe [[JSONValue]])
+    , _sqlColumns :: !(Maybe [Text])
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'SQLresponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'sqlKind'
+--
+-- * 'sqlRows'
+--
+-- * 'sqlColumns'
+sQLresponse
+    :: SQLresponse
+sQLresponse =
+    SQLresponse
+    { _sqlKind = "fusiontables#sqlresponse"
+    , _sqlRows = Nothing
+    , _sqlColumns = Nothing
+    }
+
+-- | The kind of item this is. For responses to SQL queries, this is always
+-- fusiontables#sqlresponse.
+sqlKind :: Lens' SQLresponse Text
+sqlKind = lens _sqlKind (\ s a -> s{_sqlKind = a})
+
+-- | The rows in the table. For each cell we print out whatever cell value
+-- (e.g., numeric, string) exists. Thus it is important that each cell
+-- contains only one value.
+sqlRows :: Lens' SQLresponse [[JSONValue]]
+sqlRows
+  = lens _sqlRows (\ s a -> s{_sqlRows = a}) . _Default
+      . _Coerce
+
+-- | Columns in the table.
+sqlColumns :: Lens' SQLresponse [Text]
+sqlColumns
+  = lens _sqlColumns (\ s a -> s{_sqlColumns = a}) .
+      _Default
+      . _Coerce
+
+instance FromJSON SQLresponse where
+        parseJSON
+          = withObject "SQLresponse"
+              (\ o ->
+                 SQLresponse <$>
+                   (o .:? "kind" .!= "fusiontables#sqlresponse") <*>
+                     (o .:? "rows" .!= mempty)
+                     <*> (o .:? "columns" .!= mempty))
+
+instance ToJSON SQLresponse where
+        toJSON SQLresponse{..}
+          = object
+              (catMaybes
+                 [Just ("kind" .= _sqlKind), ("rows" .=) <$> _sqlRows,
+                  ("columns" .=) <$> _sqlColumns])
+
+--
+-- /See:/ 'styleFunctionGradientColorsItem' smart constructor.
+data StyleFunctionGradientColorsItem = StyleFunctionGradientColorsItem
+    { _sfgciColor   :: !(Maybe Text)
+    , _sfgciOpacity :: !(Maybe (Textual Double))
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'StyleFunctionGradientColorsItem' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'sfgciColor'
+--
+-- * 'sfgciOpacity'
+styleFunctionGradientColorsItem
+    :: StyleFunctionGradientColorsItem
+styleFunctionGradientColorsItem =
+    StyleFunctionGradientColorsItem
+    { _sfgciColor = Nothing
+    , _sfgciOpacity = Nothing
+    }
+
+-- | Color in #RRGGBB format.
+sfgciColor :: Lens' StyleFunctionGradientColorsItem (Maybe Text)
+sfgciColor
+  = lens _sfgciColor (\ s a -> s{_sfgciColor = a})
+
+-- | Opacity of the color: 0.0 (transparent) to 1.0 (opaque).
+sfgciOpacity :: Lens' StyleFunctionGradientColorsItem (Maybe Double)
+sfgciOpacity
+  = lens _sfgciOpacity (\ s a -> s{_sfgciOpacity = a})
+      . mapping _Coerce
+
+instance FromJSON StyleFunctionGradientColorsItem
+         where
+        parseJSON
+          = withObject "StyleFunctionGradientColorsItem"
+              (\ o ->
+                 StyleFunctionGradientColorsItem <$>
+                   (o .:? "color") <*> (o .:? "opacity"))
+
+instance ToJSON StyleFunctionGradientColorsItem where
+        toJSON StyleFunctionGradientColorsItem{..}
+          = object
+              (catMaybes
+                 [("color" .=) <$> _sfgciColor,
+                  ("opacity" .=) <$> _sfgciOpacity])
+
+-- | Represents a list of styles for a given table.
+--
+-- /See:/ 'styleSettingList' smart constructor.
+data StyleSettingList = StyleSettingList
+    { _sslTotalItems    :: !(Maybe (Textual Int32))
+    , _sslNextPageToken :: !(Maybe Text)
+    , _sslKind          :: !Text
+    , _sslItems         :: !(Maybe [StyleSetting])
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'StyleSettingList' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'sslTotalItems'
+--
+-- * 'sslNextPageToken'
+--
+-- * 'sslKind'
+--
+-- * 'sslItems'
+styleSettingList
+    :: StyleSettingList
+styleSettingList =
+    StyleSettingList
+    { _sslTotalItems = Nothing
+    , _sslNextPageToken = Nothing
+    , _sslKind = "fusiontables#styleSettingList"
+    , _sslItems = Nothing
+    }
+
+-- | Total number of styles for the table.
+sslTotalItems :: Lens' StyleSettingList (Maybe Int32)
+sslTotalItems
+  = lens _sslTotalItems
+      (\ s a -> s{_sslTotalItems = a})
+      . mapping _Coerce
+
+-- | Token used to access the next page of this result. No token is displayed
+-- if there are no more styles left.
+sslNextPageToken :: Lens' StyleSettingList (Maybe Text)
+sslNextPageToken
+  = lens _sslNextPageToken
+      (\ s a -> s{_sslNextPageToken = a})
+
+-- | The kind of item this is. For a style list, this is always
+-- fusiontables#styleSettingList .
+sslKind :: Lens' StyleSettingList Text
+sslKind = lens _sslKind (\ s a -> s{_sslKind = a})
+
+-- | All requested style settings.
+sslItems :: Lens' StyleSettingList [StyleSetting]
+sslItems
+  = lens _sslItems (\ s a -> s{_sslItems = a}) .
+      _Default
+      . _Coerce
+
+instance FromJSON StyleSettingList where
+        parseJSON
+          = withObject "StyleSettingList"
+              (\ o ->
+                 StyleSettingList <$>
+                   (o .:? "totalItems") <*> (o .:? "nextPageToken") <*>
+                     (o .:? "kind" .!= "fusiontables#styleSettingList")
+                     <*> (o .:? "items" .!= mempty))
+
+instance ToJSON StyleSettingList where
+        toJSON StyleSettingList{..}
+          = object
+              (catMaybes
+                 [("totalItems" .=) <$> _sslTotalItems,
+                  ("nextPageToken" .=) <$> _sslNextPageToken,
+                  Just ("kind" .= _sslKind),
+                  ("items" .=) <$> _sslItems])
+
+-- | Specifies the minimum and maximum values, the color, opacity, icon and
+-- weight of a bucket within a StyleSetting.
+--
+-- /See:/ 'bucket' smart constructor.
+data Bucket = Bucket
+    { _bMax     :: !(Maybe (Textual Double))
+    , _bColor   :: !(Maybe Text)
+    , _bWeight  :: !(Maybe (Textual Int32))
+    , _bIcon    :: !(Maybe Text)
+    , _bOpacity :: !(Maybe (Textual Double))
+    , _bMin     :: !(Maybe (Textual Double))
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'Bucket' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'bMax'
+--
+-- * 'bColor'
+--
+-- * 'bWeight'
+--
+-- * 'bIcon'
+--
+-- * 'bOpacity'
+--
+-- * 'bMin'
+bucket
+    :: Bucket
+bucket =
+    Bucket
+    { _bMax = Nothing
+    , _bColor = Nothing
+    , _bWeight = Nothing
+    , _bIcon = Nothing
+    , _bOpacity = Nothing
+    , _bMin = Nothing
+    }
+
+-- | Maximum value in the selected column for a row to be styled according to
+-- the bucket color, opacity, icon, or weight.
+bMax :: Lens' Bucket (Maybe Double)
+bMax
+  = lens _bMax (\ s a -> s{_bMax = a}) .
+      mapping _Coerce
+
+-- | Color of line or the interior of a polygon in #RRGGBB format.
+bColor :: Lens' Bucket (Maybe Text)
+bColor = lens _bColor (\ s a -> s{_bColor = a})
+
+-- | Width of a line (in pixels).
+bWeight :: Lens' Bucket (Maybe Int32)
+bWeight
+  = lens _bWeight (\ s a -> s{_bWeight = a}) .
+      mapping _Coerce
+
+-- | Icon name used for a point.
+bIcon :: Lens' Bucket (Maybe Text)
+bIcon = lens _bIcon (\ s a -> s{_bIcon = a})
+
+-- | Opacity of the color: 0.0 (transparent) to 1.0 (opaque).
+bOpacity :: Lens' Bucket (Maybe Double)
+bOpacity
+  = lens _bOpacity (\ s a -> s{_bOpacity = a}) .
+      mapping _Coerce
+
+-- | Minimum value in the selected column for a row to be styled according to
+-- the bucket color, opacity, icon, or weight.
+bMin :: Lens' Bucket (Maybe Double)
+bMin
+  = lens _bMin (\ s a -> s{_bMin = a}) .
+      mapping _Coerce
+
+instance FromJSON Bucket where
+        parseJSON
+          = withObject "Bucket"
+              (\ o ->
+                 Bucket <$>
+                   (o .:? "max") <*> (o .:? "color") <*>
+                     (o .:? "weight")
+                     <*> (o .:? "icon")
+                     <*> (o .:? "opacity")
+                     <*> (o .:? "min"))
+
+instance ToJSON Bucket where
+        toJSON Bucket{..}
+          = object
+              (catMaybes
+                 [("max" .=) <$> _bMax, ("color" .=) <$> _bColor,
+                  ("weight" .=) <$> _bWeight, ("icon" .=) <$> _bIcon,
+                  ("opacity" .=) <$> _bOpacity, ("min" .=) <$> _bMin])
+
+-- | Represents a line geometry.
+--
+-- /See:/ 'line' smart constructor.
+data Line = Line
+    { _lCoordinates :: !(Maybe [[Textual Double]])
+    , _lType        :: !Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'Line' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'lCoordinates'
+--
+-- * 'lType'
+line
+    :: Line
+line =
+    Line
+    { _lCoordinates = Nothing
+    , _lType = "LineString"
+    }
+
+-- | The coordinates that define the line.
+lCoordinates :: Lens' Line [[Double]]
+lCoordinates
+  = lens _lCoordinates (\ s a -> s{_lCoordinates = a})
+      . _Default
+      . _Coerce
+
+-- | Type: A line geometry.
+lType :: Lens' Line Text
+lType = lens _lType (\ s a -> s{_lType = a})
+
+instance FromJSON Line where
+        parseJSON
+          = withObject "Line"
+              (\ o ->
+                 Line <$>
+                   (o .:? "coordinates" .!= mempty) <*>
+                     (o .:? "type" .!= "LineString"))
+
+instance ToJSON Line where
+        toJSON Line{..}
+          = object
+              (catMaybes
+                 [("coordinates" .=) <$> _lCoordinates,
+                  Just ("type" .= _lType)])
+
+-- | Represents a complete StyleSettings object. The primary key is a
+-- combination of the tableId and a styleId.
+--
+-- /See:/ 'styleSetting' smart constructor.
+data StyleSetting = StyleSetting
+    { _ssPolylineOptions :: !(Maybe LineStyle)
+    , _ssPolygonOptions  :: !(Maybe PolygonStyle)
+    , _ssMarkerOptions   :: !(Maybe PointStyle)
+    , _ssKind            :: !Text
+    , _ssName            :: !(Maybe Text)
+    , _ssStyleId         :: !(Maybe (Textual Int32))
+    , _ssTableId         :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'StyleSetting' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'ssPolylineOptions'
+--
+-- * 'ssPolygonOptions'
+--
+-- * 'ssMarkerOptions'
+--
+-- * 'ssKind'
+--
+-- * 'ssName'
+--
+-- * 'ssStyleId'
+--
+-- * 'ssTableId'
+styleSetting
+    :: StyleSetting
+styleSetting =
+    StyleSetting
+    { _ssPolylineOptions = Nothing
+    , _ssPolygonOptions = Nothing
+    , _ssMarkerOptions = Nothing
+    , _ssKind = "fusiontables#styleSetting"
+    , _ssName = Nothing
+    , _ssStyleId = Nothing
+    , _ssTableId = Nothing
+    }
+
+-- | Style definition for lines in the table.
+ssPolylineOptions :: Lens' StyleSetting (Maybe LineStyle)
+ssPolylineOptions
+  = lens _ssPolylineOptions
+      (\ s a -> s{_ssPolylineOptions = a})
+
+-- | Style definition for polygons in the table.
+ssPolygonOptions :: Lens' StyleSetting (Maybe PolygonStyle)
+ssPolygonOptions
+  = lens _ssPolygonOptions
+      (\ s a -> s{_ssPolygonOptions = a})
+
+-- | Style definition for points in the table.
+ssMarkerOptions :: Lens' StyleSetting (Maybe PointStyle)
+ssMarkerOptions
+  = lens _ssMarkerOptions
+      (\ s a -> s{_ssMarkerOptions = a})
+
+-- | The kind of item this is. A StyleSetting contains the style definitions
+-- for points, lines, and polygons in a table. Since a table can have any
+-- one or all of them, a style definition can have point, line and polygon
+-- style definitions.
+ssKind :: Lens' StyleSetting Text
+ssKind = lens _ssKind (\ s a -> s{_ssKind = a})
+
+-- | Optional name for the style setting.
+ssName :: Lens' StyleSetting (Maybe Text)
+ssName = lens _ssName (\ s a -> s{_ssName = a})
+
+-- | Identifier for the style setting (unique only within tables).
+ssStyleId :: Lens' StyleSetting (Maybe Int32)
+ssStyleId
+  = lens _ssStyleId (\ s a -> s{_ssStyleId = a}) .
+      mapping _Coerce
+
+-- | Identifier for the table.
+ssTableId :: Lens' StyleSetting (Maybe Text)
+ssTableId
+  = lens _ssTableId (\ s a -> s{_ssTableId = a})
+
+instance FromJSON StyleSetting where
+        parseJSON
+          = withObject "StyleSetting"
+              (\ o ->
+                 StyleSetting <$>
+                   (o .:? "polylineOptions") <*>
+                     (o .:? "polygonOptions")
+                     <*> (o .:? "markerOptions")
+                     <*> (o .:? "kind" .!= "fusiontables#styleSetting")
+                     <*> (o .:? "name")
+                     <*> (o .:? "styleId")
+                     <*> (o .:? "tableId"))
+
+instance ToJSON StyleSetting where
+        toJSON StyleSetting{..}
+          = object
+              (catMaybes
+                 [("polylineOptions" .=) <$> _ssPolylineOptions,
+                  ("polygonOptions" .=) <$> _ssPolygonOptions,
+                  ("markerOptions" .=) <$> _ssMarkerOptions,
+                  Just ("kind" .= _ssKind), ("name" .=) <$> _ssName,
+                  ("styleId" .=) <$> _ssStyleId,
+                  ("tableId" .=) <$> _ssTableId])
+
+-- | Represents a point object.
+--
+-- /See:/ 'point' smart constructor.
+data Point = Point
+    { _pCoordinates :: !(Maybe [Textual Double])
+    , _pType        :: !Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'Point' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'pCoordinates'
+--
+-- * 'pType'
+point
+    :: Point
+point =
+    Point
+    { _pCoordinates = Nothing
+    , _pType = "Point"
+    }
+
+-- | The coordinates that define the point.
+pCoordinates :: Lens' Point [Double]
+pCoordinates
+  = lens _pCoordinates (\ s a -> s{_pCoordinates = a})
+      . _Default
+      . _Coerce
+
+-- | Point: A point geometry.
+pType :: Lens' Point Text
+pType = lens _pType (\ s a -> s{_pType = a})
+
+instance FromJSON Point where
+        parseJSON
+          = withObject "Point"
+              (\ o ->
+                 Point <$>
+                   (o .:? "coordinates" .!= mempty) <*>
+                     (o .:? "type" .!= "Point"))
+
+instance ToJSON Point where
+        toJSON Point{..}
+          = object
+              (catMaybes
+                 [("coordinates" .=) <$> _pCoordinates,
+                  Just ("type" .= _pType)])
+
+-- | Represents a polygon object.
+--
+-- /See:/ 'polygon' smart constructor.
+data Polygon = Polygon
+    { _polCoordinates :: !(Maybe [[[Textual Double]]])
+    , _polType        :: !Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'Polygon' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'polCoordinates'
+--
+-- * 'polType'
+polygon
+    :: Polygon
+polygon =
+    Polygon
+    { _polCoordinates = Nothing
+    , _polType = "Polygon"
+    }
+
+-- | The coordinates that define the polygon.
+polCoordinates :: Lens' Polygon [[[Double]]]
+polCoordinates
+  = lens _polCoordinates
+      (\ s a -> s{_polCoordinates = a})
+      . _Default
+      . _Coerce
+
+-- | Type: A polygon geometry.
+polType :: Lens' Polygon Text
+polType = lens _polType (\ s a -> s{_polType = a})
+
+instance FromJSON Polygon where
+        parseJSON
+          = withObject "Polygon"
+              (\ o ->
+                 Polygon <$>
+                   (o .:? "coordinates" .!= mempty) <*>
+                     (o .:? "type" .!= "Polygon"))
+
+instance ToJSON Polygon where
+        toJSON Polygon{..}
+          = object
+              (catMaybes
+                 [("coordinates" .=) <$> _polCoordinates,
+                  Just ("type" .= _polType)])
+
+-- | Represents a list of tasks for a table.
+--
+-- /See:/ 'taskList' smart constructor.
+data TaskList = TaskList
+    { _tTotalItems    :: !(Maybe (Textual Int32))
+    , _tNextPageToken :: !(Maybe Text)
+    , _tKind          :: !Text
+    , _tItems         :: !(Maybe [Task])
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'TaskList' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'tTotalItems'
+--
+-- * 'tNextPageToken'
+--
+-- * 'tKind'
+--
+-- * 'tItems'
+taskList
+    :: TaskList
+taskList =
+    TaskList
+    { _tTotalItems = Nothing
+    , _tNextPageToken = Nothing
+    , _tKind = "fusiontables#taskList"
+    , _tItems = Nothing
+    }
+
+-- | Total number of tasks for the table.
+tTotalItems :: Lens' TaskList (Maybe Int32)
+tTotalItems
+  = lens _tTotalItems (\ s a -> s{_tTotalItems = a}) .
+      mapping _Coerce
+
+-- | Token used to access the next page of this result. No token is displayed
+-- if there are no more pages left.
+tNextPageToken :: Lens' TaskList (Maybe Text)
+tNextPageToken
+  = lens _tNextPageToken
+      (\ s a -> s{_tNextPageToken = a})
+
+-- | Type of the resource. This is always \"fusiontables#taskList\".
+tKind :: Lens' TaskList Text
+tKind = lens _tKind (\ s a -> s{_tKind = a})
+
+-- | List of all requested tasks.
+tItems :: Lens' TaskList [Task]
+tItems
+  = lens _tItems (\ s a -> s{_tItems = a}) . _Default .
+      _Coerce
+
+instance FromJSON TaskList where
+        parseJSON
+          = withObject "TaskList"
+              (\ o ->
+                 TaskList <$>
+                   (o .:? "totalItems") <*> (o .:? "nextPageToken") <*>
+                     (o .:? "kind" .!= "fusiontables#taskList")
+                     <*> (o .:? "items" .!= mempty))
+
+instance ToJSON TaskList where
+        toJSON TaskList{..}
+          = object
+              (catMaybes
+                 [("totalItems" .=) <$> _tTotalItems,
+                  ("nextPageToken" .=) <$> _tNextPageToken,
+                  Just ("kind" .= _tKind), ("items" .=) <$> _tItems])
+
+-- | Represents a Geometry object.
+--
+-- /See:/ 'geometry' smart constructor.
+data Geometry = Geometry
+    { _gGeometries :: !(Maybe [JSONValue])
+    , _gGeometry   :: !(Maybe JSONValue)
+    , _gType       :: !Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'Geometry' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'gGeometries'
+--
+-- * 'gGeometry'
+--
+-- * 'gType'
+geometry
+    :: Geometry
+geometry =
+    Geometry
+    { _gGeometries = Nothing
+    , _gGeometry = Nothing
+    , _gType = "GeometryCollection"
+    }
+
+-- | The list of geometries in this geometry collection.
+gGeometries :: Lens' Geometry [JSONValue]
+gGeometries
+  = lens _gGeometries (\ s a -> s{_gGeometries = a}) .
+      _Default
+      . _Coerce
+
+gGeometry :: Lens' Geometry (Maybe JSONValue)
+gGeometry
+  = lens _gGeometry (\ s a -> s{_gGeometry = a})
+
+-- | Type: A collection of geometries.
+gType :: Lens' Geometry Text
+gType = lens _gType (\ s a -> s{_gType = a})
+
+instance FromJSON Geometry where
+        parseJSON
+          = withObject "Geometry"
+              (\ o ->
+                 Geometry <$>
+                   (o .:? "geometries" .!= mempty) <*>
+                     (o .:? "geometry")
+                     <*> (o .:? "type" .!= "GeometryCollection"))
+
+instance ToJSON Geometry where
+        toJSON Geometry{..}
+          = object
+              (catMaybes
+                 [("geometries" .=) <$> _gGeometries,
+                  ("geometry" .=) <$> _gGeometry,
+                  Just ("type" .= _gType)])
+
+-- | Represents a list of templates for a given table.
+--
+-- /See:/ 'templateList' smart constructor.
+data TemplateList = TemplateList
+    { _temTotalItems    :: !(Maybe (Textual Int32))
+    , _temNextPageToken :: !(Maybe Text)
+    , _temKind          :: !Text
+    , _temItems         :: !(Maybe [Template])
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'TemplateList' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'temTotalItems'
+--
+-- * 'temNextPageToken'
+--
+-- * 'temKind'
+--
+-- * 'temItems'
+templateList
+    :: TemplateList
+templateList =
+    TemplateList
+    { _temTotalItems = Nothing
+    , _temNextPageToken = Nothing
+    , _temKind = "fusiontables#templateList"
+    , _temItems = Nothing
+    }
+
+-- | Total number of templates for the table.
+temTotalItems :: Lens' TemplateList (Maybe Int32)
+temTotalItems
+  = lens _temTotalItems
+      (\ s a -> s{_temTotalItems = a})
+      . mapping _Coerce
+
+-- | Token used to access the next page of this result. No token is displayed
+-- if there are no more pages left.
+temNextPageToken :: Lens' TemplateList (Maybe Text)
+temNextPageToken
+  = lens _temNextPageToken
+      (\ s a -> s{_temNextPageToken = a})
+
+-- | The kind of item this is. For a template list, this is always
+-- fusiontables#templateList .
+temKind :: Lens' TemplateList Text
+temKind = lens _temKind (\ s a -> s{_temKind = a})
+
+-- | List of all requested templates.
+temItems :: Lens' TemplateList [Template]
+temItems
+  = lens _temItems (\ s a -> s{_temItems = a}) .
+      _Default
+      . _Coerce
+
+instance FromJSON TemplateList where
+        parseJSON
+          = withObject "TemplateList"
+              (\ o ->
+                 TemplateList <$>
+                   (o .:? "totalItems") <*> (o .:? "nextPageToken") <*>
+                     (o .:? "kind" .!= "fusiontables#templateList")
+                     <*> (o .:? "items" .!= mempty))
+
+instance ToJSON TemplateList where
+        toJSON TemplateList{..}
+          = object
+              (catMaybes
+                 [("totalItems" .=) <$> _temTotalItems,
+                  ("nextPageToken" .=) <$> _temNextPageToken,
+                  Just ("kind" .= _temKind),
+                  ("items" .=) <$> _temItems])
+
+-- | Represents an import request.
+--
+-- /See:/ 'import'' smart constructor.
+data Import = Import
+    { _iKind            :: !Text
+    , _iNumRowsReceived :: !(Maybe (Textual Int64))
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'Import' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'iKind'
+--
+-- * 'iNumRowsReceived'
+import'
+    :: Import
+import' =
+    Import
+    { _iKind = "fusiontables#import"
+    , _iNumRowsReceived = Nothing
+    }
+
+-- | The kind of item this is. For an import, this is always
+-- fusiontables#import.
+iKind :: Lens' Import Text
+iKind = lens _iKind (\ s a -> s{_iKind = a})
+
+-- | The number of rows received from the import request.
+iNumRowsReceived :: Lens' Import (Maybe Int64)
+iNumRowsReceived
+  = lens _iNumRowsReceived
+      (\ s a -> s{_iNumRowsReceived = a})
+      . mapping _Coerce
+
+instance FromJSON Import where
+        parseJSON
+          = withObject "Import"
+              (\ o ->
+                 Import <$>
+                   (o .:? "kind" .!= "fusiontables#import") <*>
+                     (o .:? "numRowsReceived"))
+
+instance ToJSON Import where
+        toJSON Import{..}
+          = object
+              (catMaybes
+                 [Just ("kind" .= _iKind),
+                  ("numRowsReceived" .=) <$> _iNumRowsReceived])
+
+-- | A background task on a table, initiated for time- or resource-consuming
+-- operations such as changing column types or deleting all rows.
+--
+-- /See:/ 'task' smart constructor.
+data Task = Task
+    { _tasProgress :: !(Maybe Text)
+    , _tasTaskId   :: !(Maybe (Textual Int64))
+    , _tasKind     :: !Text
+    , _tasType     :: !(Maybe Text)
+    , _tasStarted  :: !(Maybe Bool)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'Task' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'tasProgress'
+--
+-- * 'tasTaskId'
+--
+-- * 'tasKind'
+--
+-- * 'tasType'
+--
+-- * 'tasStarted'
+task
+    :: Task
+task =
+    Task
+    { _tasProgress = Nothing
+    , _tasTaskId = Nothing
+    , _tasKind = "fusiontables#task"
+    , _tasType = Nothing
+    , _tasStarted = Nothing
+    }
+
+-- | Task percentage completion.
+tasProgress :: Lens' Task (Maybe Text)
+tasProgress
+  = lens _tasProgress (\ s a -> s{_tasProgress = a})
+
+-- | Identifier for the task.
+tasTaskId :: Lens' Task (Maybe Int64)
+tasTaskId
+  = lens _tasTaskId (\ s a -> s{_tasTaskId = a}) .
+      mapping _Coerce
+
+-- | Type of the resource. This is always \"fusiontables#task\".
+tasKind :: Lens' Task Text
+tasKind = lens _tasKind (\ s a -> s{_tasKind = a})
+
+-- | Type of background task.
+tasType :: Lens' Task (Maybe Text)
+tasType = lens _tasType (\ s a -> s{_tasType = a})
+
+-- | false while the table is busy with some other task. true if this
+-- background task is currently running.
+tasStarted :: Lens' Task (Maybe Bool)
+tasStarted
+  = lens _tasStarted (\ s a -> s{_tasStarted = a})
+
+instance FromJSON Task where
+        parseJSON
+          = withObject "Task"
+              (\ o ->
+                 Task <$>
+                   (o .:? "progress") <*> (o .:? "taskId") <*>
+                     (o .:? "kind" .!= "fusiontables#task")
+                     <*> (o .:? "type")
+                     <*> (o .:? "started"))
+
+instance ToJSON Task where
+        toJSON Task{..}
+          = object
+              (catMaybes
+                 [("progress" .=) <$> _tasProgress,
+                  ("taskId" .=) <$> _tasTaskId,
+                  Just ("kind" .= _tasKind), ("type" .=) <$> _tasType,
+                  ("started" .=) <$> _tasStarted])
+
+-- | Represents the contents of InfoWindow templates.
+--
+-- /See:/ 'template' smart constructor.
+data Template = Template
+    { _ttAutomaticColumnNames :: !(Maybe [Text])
+    , _ttTemplateId           :: !(Maybe (Textual Int32))
+    , _ttKind                 :: !Text
+    , _ttBody                 :: !(Maybe Text)
+    , _ttName                 :: !(Maybe Text)
+    , _ttTableId              :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'Template' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'ttAutomaticColumnNames'
+--
+-- * 'ttTemplateId'
+--
+-- * 'ttKind'
+--
+-- * 'ttBody'
+--
+-- * 'ttName'
+--
+-- * 'ttTableId'
+template
+    :: Template
+template =
+    Template
+    { _ttAutomaticColumnNames = Nothing
+    , _ttTemplateId = Nothing
+    , _ttKind = "fusiontables#template"
+    , _ttBody = Nothing
+    , _ttName = Nothing
+    , _ttTableId = Nothing
+    }
+
+-- | List of columns from which the template is to be automatically
+-- constructed. Only one of body or automaticColumns can be specified.
+ttAutomaticColumnNames :: Lens' Template [Text]
+ttAutomaticColumnNames
+  = lens _ttAutomaticColumnNames
+      (\ s a -> s{_ttAutomaticColumnNames = a})
+      . _Default
+      . _Coerce
+
+-- | Identifier for the template, unique within the context of a particular
+-- table.
+ttTemplateId :: Lens' Template (Maybe Int32)
+ttTemplateId
+  = lens _ttTemplateId (\ s a -> s{_ttTemplateId = a})
+      . mapping _Coerce
+
+-- | The kind of item this is. For a template, this is always
+-- fusiontables#template.
+ttKind :: Lens' Template Text
+ttKind = lens _ttKind (\ s a -> s{_ttKind = a})
+
+-- | Body of the template. It contains HTML with {column_name} to insert
+-- values from a particular column. The body is sanitized to remove certain
+-- tags, e.g., script. Only one of body or automaticColumns can be
+-- specified.
+ttBody :: Lens' Template (Maybe Text)
+ttBody = lens _ttBody (\ s a -> s{_ttBody = a})
+
+-- | Optional name assigned to a template.
+ttName :: Lens' Template (Maybe Text)
+ttName = lens _ttName (\ s a -> s{_ttName = a})
+
+-- | Identifier for the table for which the template is defined.
+ttTableId :: Lens' Template (Maybe Text)
+ttTableId
+  = lens _ttTableId (\ s a -> s{_ttTableId = a})
+
+instance FromJSON Template where
+        parseJSON
+          = withObject "Template"
+              (\ o ->
+                 Template <$>
+                   (o .:? "automaticColumnNames" .!= mempty) <*>
+                     (o .:? "templateId")
+                     <*> (o .:? "kind" .!= "fusiontables#template")
+                     <*> (o .:? "body")
+                     <*> (o .:? "name")
+                     <*> (o .:? "tableId"))
+
+instance ToJSON Template where
+        toJSON Template{..}
+          = object
+              (catMaybes
+                 [("automaticColumnNames" .=) <$>
+                    _ttAutomaticColumnNames,
+                  ("templateId" .=) <$> _ttTemplateId,
+                  Just ("kind" .= _ttKind), ("body" .=) <$> _ttBody,
+                  ("name" .=) <$> _ttName,
+                  ("tableId" .=) <$> _ttTableId])
+
+-- | Represents a PointStyle within a StyleSetting
+--
+-- /See:/ 'pointStyle' smart constructor.
+data PointStyle = PointStyle
+    { _psIconName   :: !(Maybe Text)
+    , _psIconStyler :: !(Maybe StyleFunction)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'PointStyle' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'psIconName'
+--
+-- * 'psIconStyler'
+pointStyle
+    :: PointStyle
+pointStyle =
+    PointStyle
+    { _psIconName = Nothing
+    , _psIconStyler = Nothing
+    }
+
+-- | Name of the icon. Use values defined in
+-- http:\/\/www.google.com\/fusiontables\/DataSource?dsrcid=308519
+psIconName :: Lens' PointStyle (Maybe Text)
+psIconName
+  = lens _psIconName (\ s a -> s{_psIconName = a})
+
+-- | Column or a bucket value from which the icon name is to be determined.
+psIconStyler :: Lens' PointStyle (Maybe StyleFunction)
+psIconStyler
+  = lens _psIconStyler (\ s a -> s{_psIconStyler = a})
+
+instance FromJSON PointStyle where
+        parseJSON
+          = withObject "PointStyle"
+              (\ o ->
+                 PointStyle <$>
+                   (o .:? "iconName") <*> (o .:? "iconStyler"))
+
+instance ToJSON PointStyle where
+        toJSON PointStyle{..}
+          = object
+              (catMaybes
+                 [("iconName" .=) <$> _psIconName,
+                  ("iconStyler" .=) <$> _psIconStyler])
+
+-- | Represents a PolygonStyle within a StyleSetting
+--
+-- /See:/ 'polygonStyle' smart constructor.
+data PolygonStyle = PolygonStyle
+    { _psFillColorStyler    :: !(Maybe StyleFunction)
+    , _psFillColor          :: !(Maybe Text)
+    , _psStrokeColorStyler  :: !(Maybe StyleFunction)
+    , _psStrokeWeight       :: !(Maybe (Textual Int32))
+    , _psStrokeOpacity      :: !(Maybe (Textual Double))
+    , _psFillOpacity        :: !(Maybe (Textual Double))
+    , _psStrokeWeightStyler :: !(Maybe StyleFunction)
+    , _psStrokeColor        :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'PolygonStyle' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'psFillColorStyler'
+--
+-- * 'psFillColor'
+--
+-- * 'psStrokeColorStyler'
+--
+-- * 'psStrokeWeight'
+--
+-- * 'psStrokeOpacity'
+--
+-- * 'psFillOpacity'
+--
+-- * 'psStrokeWeightStyler'
+--
+-- * 'psStrokeColor'
+polygonStyle
+    :: PolygonStyle
+polygonStyle =
+    PolygonStyle
+    { _psFillColorStyler = Nothing
+    , _psFillColor = Nothing
+    , _psStrokeColorStyler = Nothing
+    , _psStrokeWeight = Nothing
+    , _psStrokeOpacity = Nothing
+    , _psFillOpacity = Nothing
+    , _psStrokeWeightStyler = Nothing
+    , _psStrokeColor = Nothing
+    }
+
+-- | Column-value, gradient, or bucket styler that is used to determine the
+-- interior color and opacity of the polygon.
+psFillColorStyler :: Lens' PolygonStyle (Maybe StyleFunction)
+psFillColorStyler
+  = lens _psFillColorStyler
+      (\ s a -> s{_psFillColorStyler = a})
+
+-- | Color of the interior of the polygon in #RRGGBB format.
+psFillColor :: Lens' PolygonStyle (Maybe Text)
+psFillColor
+  = lens _psFillColor (\ s a -> s{_psFillColor = a})
+
+-- | Column-value, gradient or buckets styler that is used to determine the
+-- border color and opacity.
+psStrokeColorStyler :: Lens' PolygonStyle (Maybe StyleFunction)
+psStrokeColorStyler
+  = lens _psStrokeColorStyler
+      (\ s a -> s{_psStrokeColorStyler = a})
+
+-- | Width of the polyon border in pixels.
+psStrokeWeight :: Lens' PolygonStyle (Maybe Int32)
+psStrokeWeight
+  = lens _psStrokeWeight
+      (\ s a -> s{_psStrokeWeight = a})
+      . mapping _Coerce
+
+-- | Opacity of the polygon border: 0.0 (transparent) to 1.0 (opaque).
+psStrokeOpacity :: Lens' PolygonStyle (Maybe Double)
+psStrokeOpacity
+  = lens _psStrokeOpacity
+      (\ s a -> s{_psStrokeOpacity = a})
+      . mapping _Coerce
+
+-- | Opacity of the interior of the polygon: 0.0 (transparent) to 1.0
+-- (opaque).
+psFillOpacity :: Lens' PolygonStyle (Maybe Double)
+psFillOpacity
+  = lens _psFillOpacity
+      (\ s a -> s{_psFillOpacity = a})
+      . mapping _Coerce
+
+-- | Column-value or bucket styler that is used to determine the width of the
+-- polygon border.
+psStrokeWeightStyler :: Lens' PolygonStyle (Maybe StyleFunction)
+psStrokeWeightStyler
+  = lens _psStrokeWeightStyler
+      (\ s a -> s{_psStrokeWeightStyler = a})
+
+-- | Color of the polygon border in #RRGGBB format.
+psStrokeColor :: Lens' PolygonStyle (Maybe Text)
+psStrokeColor
+  = lens _psStrokeColor
+      (\ s a -> s{_psStrokeColor = a})
+
+instance FromJSON PolygonStyle where
+        parseJSON
+          = withObject "PolygonStyle"
+              (\ o ->
+                 PolygonStyle <$>
+                   (o .:? "fillColorStyler") <*> (o .:? "fillColor") <*>
+                     (o .:? "strokeColorStyler")
+                     <*> (o .:? "strokeWeight")
+                     <*> (o .:? "strokeOpacity")
+                     <*> (o .:? "fillOpacity")
+                     <*> (o .:? "strokeWeightStyler")
+                     <*> (o .:? "strokeColor"))
+
+instance ToJSON PolygonStyle where
+        toJSON PolygonStyle{..}
+          = object
+              (catMaybes
+                 [("fillColorStyler" .=) <$> _psFillColorStyler,
+                  ("fillColor" .=) <$> _psFillColor,
+                  ("strokeColorStyler" .=) <$> _psStrokeColorStyler,
+                  ("strokeWeight" .=) <$> _psStrokeWeight,
+                  ("strokeOpacity" .=) <$> _psStrokeOpacity,
+                  ("fillOpacity" .=) <$> _psFillOpacity,
+                  ("strokeWeightStyler" .=) <$> _psStrokeWeightStyler,
+                  ("strokeColor" .=) <$> _psStrokeColor])
+
+-- | Gradient function that interpolates a range of colors based on column
+-- value.
+--
+-- /See:/ 'styleFunctionGradient' smart constructor.
+data StyleFunctionGradient = StyleFunctionGradient
+    { _sfgMax    :: !(Maybe (Textual Double))
+    , _sfgMin    :: !(Maybe (Textual Double))
+    , _sfgColors :: !(Maybe [StyleFunctionGradientColorsItem])
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'StyleFunctionGradient' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'sfgMax'
+--
+-- * 'sfgMin'
+--
+-- * 'sfgColors'
+styleFunctionGradient
+    :: StyleFunctionGradient
+styleFunctionGradient =
+    StyleFunctionGradient
+    { _sfgMax = Nothing
+    , _sfgMin = Nothing
+    , _sfgColors = Nothing
+    }
+
+-- | Higher-end of the interpolation range: rows with this value will be
+-- assigned to colors[n-1].
+sfgMax :: Lens' StyleFunctionGradient (Maybe Double)
+sfgMax
+  = lens _sfgMax (\ s a -> s{_sfgMax = a}) .
+      mapping _Coerce
+
+-- | Lower-end of the interpolation range: rows with this value will be
+-- assigned to colors[0].
+sfgMin :: Lens' StyleFunctionGradient (Maybe Double)
+sfgMin
+  = lens _sfgMin (\ s a -> s{_sfgMin = a}) .
+      mapping _Coerce
+
+-- | Array with two or more colors.
+sfgColors :: Lens' StyleFunctionGradient [StyleFunctionGradientColorsItem]
+sfgColors
+  = lens _sfgColors (\ s a -> s{_sfgColors = a}) .
+      _Default
+      . _Coerce
+
+instance FromJSON StyleFunctionGradient where
+        parseJSON
+          = withObject "StyleFunctionGradient"
+              (\ o ->
+                 StyleFunctionGradient <$>
+                   (o .:? "max") <*> (o .:? "min") <*>
+                     (o .:? "colors" .!= mempty))
+
+instance ToJSON StyleFunctionGradient where
+        toJSON StyleFunctionGradient{..}
+          = object
+              (catMaybes
+                 [("max" .=) <$> _sfgMax, ("min" .=) <$> _sfgMin,
+                  ("colors" .=) <$> _sfgColors])
+
+-- | Specifies the details of a column in a table.
+--
+-- /See:/ 'column' smart constructor.
+data Column = Column
+    { _cColumnJSONSchema     :: !(Maybe Text)
+    , _cGraphPredicate       :: !(Maybe Text)
+    , _cKind                 :: !Text
+    , _cBaseColumn           :: !(Maybe ColumnBaseColumn)
+    , _cColumnPropertiesJSON :: !(Maybe Text)
+    , _cName                 :: !(Maybe Text)
+    , _cType                 :: !(Maybe Text)
+    , _cFormatPattern        :: !(Maybe Text)
+    , _cColumnId             :: !(Maybe (Textual Int32))
+    , _cValidValues          :: !(Maybe [Text])
+    , _cValidateData         :: !(Maybe Bool)
+    , _cDescription          :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'Column' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'cColumnJSONSchema'
+--
+-- * 'cGraphPredicate'
+--
+-- * 'cKind'
+--
+-- * 'cBaseColumn'
+--
+-- * 'cColumnPropertiesJSON'
+--
+-- * 'cName'
+--
+-- * 'cType'
+--
+-- * 'cFormatPattern'
+--
+-- * 'cColumnId'
+--
+-- * 'cValidValues'
+--
+-- * 'cValidateData'
+--
+-- * 'cDescription'
+column
+    :: Column
+column =
+    Column
+    { _cColumnJSONSchema = Nothing
+    , _cGraphPredicate = Nothing
+    , _cKind = "fusiontables#column"
+    , _cBaseColumn = Nothing
+    , _cColumnPropertiesJSON = Nothing
+    , _cName = Nothing
+    , _cType = Nothing
+    , _cFormatPattern = Nothing
+    , _cColumnId = Nothing
+    , _cValidValues = Nothing
+    , _cValidateData = Nothing
+    , _cDescription = Nothing
+    }
+
+-- | JSON schema for interpreting JSON in this column.
+cColumnJSONSchema :: Lens' Column (Maybe Text)
+cColumnJSONSchema
+  = lens _cColumnJSONSchema
+      (\ s a -> s{_cColumnJSONSchema = a})
+
+-- | Column graph predicate. Used to map table to graph data model
+-- (subject,predicate,object) See W3C Graph-based Data Model.
+cGraphPredicate :: Lens' Column (Maybe Text)
+cGraphPredicate
+  = lens _cGraphPredicate
+      (\ s a -> s{_cGraphPredicate = a})
+
+-- | The kind of item this is. For a column, this is always
+-- fusiontables#column.
+cKind :: Lens' Column Text
+cKind = lens _cKind (\ s a -> s{_cKind = a})
+
+-- | Identifier of the base column. If present, this column is derived from
+-- the specified base column.
+cBaseColumn :: Lens' Column (Maybe ColumnBaseColumn)
+cBaseColumn
+  = lens _cBaseColumn (\ s a -> s{_cBaseColumn = a})
+
+-- | JSON object containing custom column properties.
+cColumnPropertiesJSON :: Lens' Column (Maybe Text)
+cColumnPropertiesJSON
+  = lens _cColumnPropertiesJSON
+      (\ s a -> s{_cColumnPropertiesJSON = a})
+
+-- | Name of the column.
+cName :: Lens' Column (Maybe Text)
+cName = lens _cName (\ s a -> s{_cName = a})
+
+-- | Type of the column.
+cType :: Lens' Column (Maybe Text)
+cType = lens _cType (\ s a -> s{_cType = a})
+
+-- | Format pattern. Acceptable values are DT_DATE_MEDIUMe.g Dec 24, 2008
+-- DT_DATE_SHORTfor example 12\/24\/08 DT_DATE_TIME_MEDIUMfor example Dec
+-- 24, 2008 8:30:45 PM DT_DATE_TIME_SHORTfor example 12\/24\/08 8:30 PM
+-- DT_DAY_MONTH_2_DIGIT_YEARfor example 24\/12\/08
+-- DT_DAY_MONTH_2_DIGIT_YEAR_TIMEfor example 24\/12\/08 20:30
+-- DT_DAY_MONTH_2_DIGIT_YEAR_TIME_MERIDIANfor example 24\/12\/08 8:30 PM
+-- DT_DAY_MONTH_4_DIGIT_YEARfor example 24\/12\/2008
+-- DT_DAY_MONTH_4_DIGIT_YEAR_TIMEfor example 24\/12\/2008 20:30
+-- DT_DAY_MONTH_4_DIGIT_YEAR_TIME_MERIDIANfor example 24\/12\/2008 8:30 PM
+-- DT_ISO_YEAR_MONTH_DAYfor example 2008-12-24
+-- DT_ISO_YEAR_MONTH_DAY_TIMEfor example 2008-12-24 20:30:45
+-- DT_MONTH_DAY_4_DIGIT_YEARfor example 12\/24\/2008 DT_TIME_LONGfor
+-- example 8:30:45 PM UTC-6 DT_TIME_MEDIUMfor example 8:30:45 PM
+-- DT_TIME_SHORTfor example 8:30 PM DT_YEAR_ONLYfor example 2008
+-- HIGHLIGHT_UNTYPED_CELLSHighlight cell data that does not match the data
+-- type NONENo formatting (default) NUMBER_CURRENCYfor example $1234.56
+-- NUMBER_DEFAULTfor example 1,234.56 NUMBER_INTEGERfor example 1235
+-- NUMBER_NO_SEPARATORfor example 1234.56 NUMBER_PERCENTfor example
+-- 123,456% NUMBER_SCIENTIFICfor example 1E3
+-- STRING_EIGHT_LINE_IMAGEDisplays thumbnail images as tall as eight lines
+-- of text STRING_FOUR_LINE_IMAGEDisplays thumbnail images as tall as four
+-- lines of text STRING_JSON_TEXTAllows JSON editing of text in UI
+-- STRING_LINKTreats cell as a link (must start with http:\/\/ or
+-- https:\/\/) STRING_ONE_LINE_IMAGEDisplays thumbnail images as tall as
+-- one line of text STRING_VIDEO_OR_MAPDisplay a video or map thumbnail
+cFormatPattern :: Lens' Column (Maybe Text)
+cFormatPattern
+  = lens _cFormatPattern
+      (\ s a -> s{_cFormatPattern = a})
+
+-- | Identifier for the column.
+cColumnId :: Lens' Column (Maybe Int32)
+cColumnId
+  = lens _cColumnId (\ s a -> s{_cColumnId = a}) .
+      mapping _Coerce
+
+-- | List of valid values used to validate data and supply a drop-down list
+-- of values in the web application.
+cValidValues :: Lens' Column [Text]
+cValidValues
+  = lens _cValidValues (\ s a -> s{_cValidValues = a})
+      . _Default
+      . _Coerce
+
+-- | If true, data entered via the web application is validated.
+cValidateData :: Lens' Column (Maybe Bool)
+cValidateData
+  = lens _cValidateData
+      (\ s a -> s{_cValidateData = a})
+
+-- | Column description.
+cDescription :: Lens' Column (Maybe Text)
+cDescription
+  = lens _cDescription (\ s a -> s{_cDescription = a})
+
+instance FromJSON Column where
+        parseJSON
+          = withObject "Column"
+              (\ o ->
+                 Column <$>
+                   (o .:? "columnJsonSchema") <*>
+                     (o .:? "graphPredicate")
+                     <*> (o .:? "kind" .!= "fusiontables#column")
+                     <*> (o .:? "baseColumn")
+                     <*> (o .:? "columnPropertiesJson")
+                     <*> (o .:? "name")
+                     <*> (o .:? "type")
+                     <*> (o .:? "formatPattern")
+                     <*> (o .:? "columnId")
+                     <*> (o .:? "validValues" .!= mempty)
+                     <*> (o .:? "validateData")
+                     <*> (o .:? "description"))
+
+instance ToJSON Column where
+        toJSON Column{..}
+          = object
+              (catMaybes
+                 [("columnJsonSchema" .=) <$> _cColumnJSONSchema,
+                  ("graphPredicate" .=) <$> _cGraphPredicate,
+                  Just ("kind" .= _cKind),
+                  ("baseColumn" .=) <$> _cBaseColumn,
+                  ("columnPropertiesJson" .=) <$>
+                    _cColumnPropertiesJSON,
+                  ("name" .=) <$> _cName, ("type" .=) <$> _cType,
+                  ("formatPattern" .=) <$> _cFormatPattern,
+                  ("columnId" .=) <$> _cColumnId,
+                  ("validValues" .=) <$> _cValidValues,
+                  ("validateData" .=) <$> _cValidateData,
+                  ("description" .=) <$> _cDescription])
+
+-- | Represents a table.
+--
+-- /See:/ 'table' smart constructor.
+data Table = Table
+    { _tabaIsExportable               :: !(Maybe Bool)
+    , _tabaKind                       :: !Text
+    , _tabaColumnPropertiesJSONSchema :: !(Maybe Text)
+    , _tabaTablePropertiesJSONSchema  :: !(Maybe Text)
+    , _tabaName                       :: !(Maybe Text)
+    , _tabaTablePropertiesJSON        :: !(Maybe Text)
+    , _tabaColumns                    :: !(Maybe [Column])
+    , _tabaBaseTableIds               :: !(Maybe [Text])
+    , _tabaTableId                    :: !(Maybe Text)
+    , _tabaSQL                        :: !(Maybe Text)
+    , _tabaDescription                :: !(Maybe Text)
+    , _tabaAttribution                :: !(Maybe Text)
+    , _tabaAttributionLink            :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'Table' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'tabaIsExportable'
+--
+-- * 'tabaKind'
+--
+-- * 'tabaColumnPropertiesJSONSchema'
+--
+-- * 'tabaTablePropertiesJSONSchema'
+--
+-- * 'tabaName'
+--
+-- * 'tabaTablePropertiesJSON'
+--
+-- * 'tabaColumns'
+--
+-- * 'tabaBaseTableIds'
+--
+-- * 'tabaTableId'
+--
+-- * 'tabaSQL'
+--
+-- * 'tabaDescription'
+--
+-- * 'tabaAttribution'
+--
+-- * 'tabaAttributionLink'
+table
+    :: Table
+table =
+    Table
+    { _tabaIsExportable = Nothing
+    , _tabaKind = "fusiontables#table"
+    , _tabaColumnPropertiesJSONSchema = Nothing
+    , _tabaTablePropertiesJSONSchema = Nothing
+    , _tabaName = Nothing
+    , _tabaTablePropertiesJSON = Nothing
+    , _tabaColumns = Nothing
+    , _tabaBaseTableIds = Nothing
+    , _tabaTableId = Nothing
+    , _tabaSQL = Nothing
+    , _tabaDescription = Nothing
+    , _tabaAttribution = Nothing
+    , _tabaAttributionLink = Nothing
+    }
+
+-- | Variable for whether table is exportable.
+tabaIsExportable :: Lens' Table (Maybe Bool)
+tabaIsExportable
+  = lens _tabaIsExportable
+      (\ s a -> s{_tabaIsExportable = a})
+
+-- | The kind of item this is. For a table, this is always
+-- fusiontables#table.
+tabaKind :: Lens' Table Text
+tabaKind = lens _tabaKind (\ s a -> s{_tabaKind = a})
+
+-- | Default JSON schema for validating all JSON column properties.
+tabaColumnPropertiesJSONSchema :: Lens' Table (Maybe Text)
+tabaColumnPropertiesJSONSchema
+  = lens _tabaColumnPropertiesJSONSchema
+      (\ s a -> s{_tabaColumnPropertiesJSONSchema = a})
+
+-- | JSON schema for validating the JSON table properties.
+tabaTablePropertiesJSONSchema :: Lens' Table (Maybe Text)
+tabaTablePropertiesJSONSchema
+  = lens _tabaTablePropertiesJSONSchema
+      (\ s a -> s{_tabaTablePropertiesJSONSchema = a})
+
+-- | Name assigned to a table.
+tabaName :: Lens' Table (Maybe Text)
+tabaName = lens _tabaName (\ s a -> s{_tabaName = a})
+
+-- | JSON object containing custom table properties.
+tabaTablePropertiesJSON :: Lens' Table (Maybe Text)
+tabaTablePropertiesJSON
+  = lens _tabaTablePropertiesJSON
+      (\ s a -> s{_tabaTablePropertiesJSON = a})
+
+-- | Columns in the table.
+tabaColumns :: Lens' Table [Column]
+tabaColumns
+  = lens _tabaColumns (\ s a -> s{_tabaColumns = a}) .
+      _Default
+      . _Coerce
+
+-- | Base table identifier if this table is a view or merged table.
+tabaBaseTableIds :: Lens' Table [Text]
+tabaBaseTableIds
+  = lens _tabaBaseTableIds
+      (\ s a -> s{_tabaBaseTableIds = a})
+      . _Default
+      . _Coerce
+
+-- | Encrypted unique alphanumeric identifier for the table.
+tabaTableId :: Lens' Table (Maybe Text)
+tabaTableId
+  = lens _tabaTableId (\ s a -> s{_tabaTableId = a})
+
+-- | SQL that encodes the table definition for derived tables.
+tabaSQL :: Lens' Table (Maybe Text)
+tabaSQL = lens _tabaSQL (\ s a -> s{_tabaSQL = a})
+
+-- | Description assigned to the table.
+tabaDescription :: Lens' Table (Maybe Text)
+tabaDescription
+  = lens _tabaDescription
+      (\ s a -> s{_tabaDescription = a})
+
+-- | Attribution assigned to the table.
+tabaAttribution :: Lens' Table (Maybe Text)
+tabaAttribution
+  = lens _tabaAttribution
+      (\ s a -> s{_tabaAttribution = a})
+
+-- | Optional link for attribution.
+tabaAttributionLink :: Lens' Table (Maybe Text)
+tabaAttributionLink
+  = lens _tabaAttributionLink
+      (\ s a -> s{_tabaAttributionLink = a})
+
+instance FromJSON Table where
+        parseJSON
+          = withObject "Table"
+              (\ o ->
+                 Table <$>
+                   (o .:? "isExportable") <*>
+                     (o .:? "kind" .!= "fusiontables#table")
+                     <*> (o .:? "columnPropertiesJsonSchema")
+                     <*> (o .:? "tablePropertiesJsonSchema")
+                     <*> (o .:? "name")
+                     <*> (o .:? "tablePropertiesJson")
+                     <*> (o .:? "columns" .!= mempty)
+                     <*> (o .:? "baseTableIds" .!= mempty)
+                     <*> (o .:? "tableId")
+                     <*> (o .:? "sql")
+                     <*> (o .:? "description")
+                     <*> (o .:? "attribution")
+                     <*> (o .:? "attributionLink"))
+
+instance ToJSON Table where
+        toJSON Table{..}
+          = object
+              (catMaybes
+                 [("isExportable" .=) <$> _tabaIsExportable,
+                  Just ("kind" .= _tabaKind),
+                  ("columnPropertiesJsonSchema" .=) <$>
+                    _tabaColumnPropertiesJSONSchema,
+                  ("tablePropertiesJsonSchema" .=) <$>
+                    _tabaTablePropertiesJSONSchema,
+                  ("name" .=) <$> _tabaName,
+                  ("tablePropertiesJson" .=) <$>
+                    _tabaTablePropertiesJSON,
+                  ("columns" .=) <$> _tabaColumns,
+                  ("baseTableIds" .=) <$> _tabaBaseTableIds,
+                  ("tableId" .=) <$> _tabaTableId,
+                  ("sql" .=) <$> _tabaSQL,
+                  ("description" .=) <$> _tabaDescription,
+                  ("attribution" .=) <$> _tabaAttribution,
+                  ("attributionLink" .=) <$> _tabaAttributionLink])
+
+-- | Represents a LineStyle within a StyleSetting
+--
+-- /See:/ 'lineStyle' smart constructor.
+data LineStyle = LineStyle
+    { _lsStrokeColorStyler  :: !(Maybe StyleFunction)
+    , _lsStrokeWeight       :: !(Maybe (Textual Int32))
+    , _lsStrokeOpacity      :: !(Maybe (Textual Double))
+    , _lsStrokeWeightStyler :: !(Maybe StyleFunction)
+    , _lsStrokeColor        :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'LineStyle' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'lsStrokeColorStyler'
+--
+-- * 'lsStrokeWeight'
+--
+-- * 'lsStrokeOpacity'
+--
+-- * 'lsStrokeWeightStyler'
+--
+-- * 'lsStrokeColor'
+lineStyle
+    :: LineStyle
+lineStyle =
+    LineStyle
+    { _lsStrokeColorStyler = Nothing
+    , _lsStrokeWeight = Nothing
+    , _lsStrokeOpacity = Nothing
+    , _lsStrokeWeightStyler = Nothing
+    , _lsStrokeColor = Nothing
+    }
+
+-- | Column-value, gradient or buckets styler that is used to determine the
+-- line color and opacity.
+lsStrokeColorStyler :: Lens' LineStyle (Maybe StyleFunction)
+lsStrokeColorStyler
+  = lens _lsStrokeColorStyler
+      (\ s a -> s{_lsStrokeColorStyler = a})
+
+-- | Width of the line in pixels.
+lsStrokeWeight :: Lens' LineStyle (Maybe Int32)
+lsStrokeWeight
+  = lens _lsStrokeWeight
+      (\ s a -> s{_lsStrokeWeight = a})
+      . mapping _Coerce
+
+-- | Opacity of the line : 0.0 (transparent) to 1.0 (opaque).
+lsStrokeOpacity :: Lens' LineStyle (Maybe Double)
+lsStrokeOpacity
+  = lens _lsStrokeOpacity
+      (\ s a -> s{_lsStrokeOpacity = a})
+      . mapping _Coerce
+
+-- | Column-value or bucket styler that is used to determine the width of the
+-- line.
+lsStrokeWeightStyler :: Lens' LineStyle (Maybe StyleFunction)
+lsStrokeWeightStyler
+  = lens _lsStrokeWeightStyler
+      (\ s a -> s{_lsStrokeWeightStyler = a})
+
+-- | Color of the line in #RRGGBB format.
+lsStrokeColor :: Lens' LineStyle (Maybe Text)
+lsStrokeColor
+  = lens _lsStrokeColor
+      (\ s a -> s{_lsStrokeColor = a})
+
+instance FromJSON LineStyle where
+        parseJSON
+          = withObject "LineStyle"
+              (\ o ->
+                 LineStyle <$>
+                   (o .:? "strokeColorStyler") <*>
+                     (o .:? "strokeWeight")
+                     <*> (o .:? "strokeOpacity")
+                     <*> (o .:? "strokeWeightStyler")
+                     <*> (o .:? "strokeColor"))
+
+instance ToJSON LineStyle where
+        toJSON LineStyle{..}
+          = object
+              (catMaybes
+                 [("strokeColorStyler" .=) <$> _lsStrokeColorStyler,
+                  ("strokeWeight" .=) <$> _lsStrokeWeight,
+                  ("strokeOpacity" .=) <$> _lsStrokeOpacity,
+                  ("strokeWeightStyler" .=) <$> _lsStrokeWeightStyler,
+                  ("strokeColor" .=) <$> _lsStrokeColor])
diff --git a/gen/Network/Google/FusionTables/Types/Sum.hs b/gen/Network/Google/FusionTables/Types/Sum.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/FusionTables/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.FusionTables.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.FusionTables.Types.Sum where
+
+import           Network.Google.Prelude
diff --git a/gen/Network/Google/Resource/FusionTables/Column/Delete.hs b/gen/Network/Google/Resource/FusionTables/Column/Delete.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/FusionTables/Column/Delete.hs
@@ -0,0 +1,96 @@
+{-# LANGUAGE DataKinds          #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE FlexibleInstances  #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+{-# LANGUAGE TypeOperators      #-}
+
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
+
+-- |
+-- Module      : Network.Google.Resource.FusionTables.Column.Delete
+-- Copyright   : (c) 2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Deletes the specified column.
+--
+-- /See:/ <https://developers.google.com/fusiontables Fusion Tables API Reference> for @fusiontables.column.delete@.
+module Network.Google.Resource.FusionTables.Column.Delete
+    (
+    -- * REST Resource
+      ColumnDeleteResource
+
+    -- * Creating a Request
+    , columnDelete
+    , ColumnDelete
+
+    -- * Request Lenses
+    , cdTableId
+    , cdColumnId
+    ) where
+
+import           Network.Google.FusionTables.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @fusiontables.column.delete@ method which the
+-- 'ColumnDelete' request conforms to.
+type ColumnDeleteResource =
+     "fusiontables" :>
+       "v2" :>
+         "tables" :>
+           Capture "tableId" Text :>
+             "columns" :>
+               Capture "columnId" Text :>
+                 QueryParam "alt" AltJSON :> Delete '[JSON] ()
+
+-- | Deletes the specified column.
+--
+-- /See:/ 'columnDelete' smart constructor.
+data ColumnDelete = ColumnDelete
+    { _cdTableId  :: !Text
+    , _cdColumnId :: !Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ColumnDelete' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'cdTableId'
+--
+-- * 'cdColumnId'
+columnDelete
+    :: Text -- ^ 'cdTableId'
+    -> Text -- ^ 'cdColumnId'
+    -> ColumnDelete
+columnDelete pCdTableId_ pCdColumnId_ =
+    ColumnDelete
+    { _cdTableId = pCdTableId_
+    , _cdColumnId = pCdColumnId_
+    }
+
+-- | Table from which the column is being deleted.
+cdTableId :: Lens' ColumnDelete Text
+cdTableId
+  = lens _cdTableId (\ s a -> s{_cdTableId = a})
+
+-- | Name or identifier for the column being deleted.
+cdColumnId :: Lens' ColumnDelete Text
+cdColumnId
+  = lens _cdColumnId (\ s a -> s{_cdColumnId = a})
+
+instance GoogleRequest ColumnDelete where
+        type Rs ColumnDelete = ()
+        requestClient ColumnDelete{..}
+          = go _cdTableId _cdColumnId (Just AltJSON)
+              fusionTablesService
+          where go
+                  = buildClient (Proxy :: Proxy ColumnDeleteResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/FusionTables/Column/Get.hs b/gen/Network/Google/Resource/FusionTables/Column/Get.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/FusionTables/Column/Get.hs
@@ -0,0 +1,96 @@
+{-# LANGUAGE DataKinds          #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE FlexibleInstances  #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+{-# LANGUAGE TypeOperators      #-}
+
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
+
+-- |
+-- Module      : Network.Google.Resource.FusionTables.Column.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 specific column by its ID.
+--
+-- /See:/ <https://developers.google.com/fusiontables Fusion Tables API Reference> for @fusiontables.column.get@.
+module Network.Google.Resource.FusionTables.Column.Get
+    (
+    -- * REST Resource
+      ColumnGetResource
+
+    -- * Creating a Request
+    , columnGet
+    , ColumnGet
+
+    -- * Request Lenses
+    , cgTableId
+    , cgColumnId
+    ) where
+
+import           Network.Google.FusionTables.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @fusiontables.column.get@ method which the
+-- 'ColumnGet' request conforms to.
+type ColumnGetResource =
+     "fusiontables" :>
+       "v2" :>
+         "tables" :>
+           Capture "tableId" Text :>
+             "columns" :>
+               Capture "columnId" Text :>
+                 QueryParam "alt" AltJSON :> Get '[JSON] Column
+
+-- | Retrieves a specific column by its ID.
+--
+-- /See:/ 'columnGet' smart constructor.
+data ColumnGet = ColumnGet
+    { _cgTableId  :: !Text
+    , _cgColumnId :: !Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ColumnGet' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'cgTableId'
+--
+-- * 'cgColumnId'
+columnGet
+    :: Text -- ^ 'cgTableId'
+    -> Text -- ^ 'cgColumnId'
+    -> ColumnGet
+columnGet pCgTableId_ pCgColumnId_ =
+    ColumnGet
+    { _cgTableId = pCgTableId_
+    , _cgColumnId = pCgColumnId_
+    }
+
+-- | Table to which the column belongs.
+cgTableId :: Lens' ColumnGet Text
+cgTableId
+  = lens _cgTableId (\ s a -> s{_cgTableId = a})
+
+-- | Name or identifier for the column that is being requested.
+cgColumnId :: Lens' ColumnGet Text
+cgColumnId
+  = lens _cgColumnId (\ s a -> s{_cgColumnId = a})
+
+instance GoogleRequest ColumnGet where
+        type Rs ColumnGet = Column
+        requestClient ColumnGet{..}
+          = go _cgTableId _cgColumnId (Just AltJSON)
+              fusionTablesService
+          where go
+                  = buildClient (Proxy :: Proxy ColumnGetResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/FusionTables/Column/Insert.hs b/gen/Network/Google/Resource/FusionTables/Column/Insert.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/FusionTables/Column/Insert.hs
@@ -0,0 +1,96 @@
+{-# LANGUAGE DataKinds          #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE FlexibleInstances  #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+{-# LANGUAGE TypeOperators      #-}
+
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
+
+-- |
+-- Module      : Network.Google.Resource.FusionTables.Column.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)
+--
+-- Adds a new column to the table.
+--
+-- /See:/ <https://developers.google.com/fusiontables Fusion Tables API Reference> for @fusiontables.column.insert@.
+module Network.Google.Resource.FusionTables.Column.Insert
+    (
+    -- * REST Resource
+      ColumnInsertResource
+
+    -- * Creating a Request
+    , columnInsert
+    , ColumnInsert
+
+    -- * Request Lenses
+    , ciPayload
+    , ciTableId
+    ) where
+
+import           Network.Google.FusionTables.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @fusiontables.column.insert@ method which the
+-- 'ColumnInsert' request conforms to.
+type ColumnInsertResource =
+     "fusiontables" :>
+       "v2" :>
+         "tables" :>
+           Capture "tableId" Text :>
+             "columns" :>
+               QueryParam "alt" AltJSON :>
+                 ReqBody '[JSON] Column :> Post '[JSON] Column
+
+-- | Adds a new column to the table.
+--
+-- /See:/ 'columnInsert' smart constructor.
+data ColumnInsert = ColumnInsert
+    { _ciPayload :: !Column
+    , _ciTableId :: !Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ColumnInsert' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'ciPayload'
+--
+-- * 'ciTableId'
+columnInsert
+    :: Column -- ^ 'ciPayload'
+    -> Text -- ^ 'ciTableId'
+    -> ColumnInsert
+columnInsert pCiPayload_ pCiTableId_ =
+    ColumnInsert
+    { _ciPayload = pCiPayload_
+    , _ciTableId = pCiTableId_
+    }
+
+-- | Multipart request metadata.
+ciPayload :: Lens' ColumnInsert Column
+ciPayload
+  = lens _ciPayload (\ s a -> s{_ciPayload = a})
+
+-- | Table for which a new column is being added.
+ciTableId :: Lens' ColumnInsert Text
+ciTableId
+  = lens _ciTableId (\ s a -> s{_ciTableId = a})
+
+instance GoogleRequest ColumnInsert where
+        type Rs ColumnInsert = Column
+        requestClient ColumnInsert{..}
+          = go _ciTableId (Just AltJSON) _ciPayload
+              fusionTablesService
+          where go
+                  = buildClient (Proxy :: Proxy ColumnInsertResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/FusionTables/Column/List.hs b/gen/Network/Google/Resource/FusionTables/Column/List.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/FusionTables/Column/List.hs
@@ -0,0 +1,108 @@
+{-# LANGUAGE DataKinds          #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE FlexibleInstances  #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+{-# LANGUAGE TypeOperators      #-}
+
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
+
+-- |
+-- Module      : Network.Google.Resource.FusionTables.Column.List
+-- Copyright   : (c) 2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Retrieves a list of columns.
+--
+-- /See:/ <https://developers.google.com/fusiontables Fusion Tables API Reference> for @fusiontables.column.list@.
+module Network.Google.Resource.FusionTables.Column.List
+    (
+    -- * REST Resource
+      ColumnListResource
+
+    -- * Creating a Request
+    , columnList'
+    , ColumnList'
+
+    -- * Request Lenses
+    , clPageToken
+    , clTableId
+    , clMaxResults
+    ) where
+
+import           Network.Google.FusionTables.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @fusiontables.column.list@ method which the
+-- 'ColumnList'' request conforms to.
+type ColumnListResource =
+     "fusiontables" :>
+       "v2" :>
+         "tables" :>
+           Capture "tableId" Text :>
+             "columns" :>
+               QueryParam "pageToken" Text :>
+                 QueryParam "maxResults" (Textual Word32) :>
+                   QueryParam "alt" AltJSON :> Get '[JSON] ColumnList
+
+-- | Retrieves a list of columns.
+--
+-- /See:/ 'columnList'' smart constructor.
+data ColumnList' = ColumnList'
+    { _clPageToken  :: !(Maybe Text)
+    , _clTableId    :: !Text
+    , _clMaxResults :: !(Maybe (Textual Word32))
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ColumnList'' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'clPageToken'
+--
+-- * 'clTableId'
+--
+-- * 'clMaxResults'
+columnList'
+    :: Text -- ^ 'clTableId'
+    -> ColumnList'
+columnList' pClTableId_ =
+    ColumnList'
+    { _clPageToken = Nothing
+    , _clTableId = pClTableId_
+    , _clMaxResults = Nothing
+    }
+
+-- | Continuation token specifying which result page to return.
+clPageToken :: Lens' ColumnList' (Maybe Text)
+clPageToken
+  = lens _clPageToken (\ s a -> s{_clPageToken = a})
+
+-- | Table whose columns are being listed.
+clTableId :: Lens' ColumnList' Text
+clTableId
+  = lens _clTableId (\ s a -> s{_clTableId = a})
+
+-- | Maximum number of columns to return. Default is 5.
+clMaxResults :: Lens' ColumnList' (Maybe Word32)
+clMaxResults
+  = lens _clMaxResults (\ s a -> s{_clMaxResults = a})
+      . mapping _Coerce
+
+instance GoogleRequest ColumnList' where
+        type Rs ColumnList' = ColumnList
+        requestClient ColumnList'{..}
+          = go _clTableId _clPageToken _clMaxResults
+              (Just AltJSON)
+              fusionTablesService
+          where go
+                  = buildClient (Proxy :: Proxy ColumnListResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/FusionTables/Column/Patch.hs b/gen/Network/Google/Resource/FusionTables/Column/Patch.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/FusionTables/Column/Patch.hs
@@ -0,0 +1,110 @@
+{-# 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.FusionTables.Column.Patch
+-- Copyright   : (c) 2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Updates the name or type of an existing column. This method supports
+-- patch semantics.
+--
+-- /See:/ <https://developers.google.com/fusiontables Fusion Tables API Reference> for @fusiontables.column.patch@.
+module Network.Google.Resource.FusionTables.Column.Patch
+    (
+    -- * REST Resource
+      ColumnPatchResource
+
+    -- * Creating a Request
+    , columnPatch
+    , ColumnPatch
+
+    -- * Request Lenses
+    , cpPayload
+    , cpTableId
+    , cpColumnId
+    ) where
+
+import           Network.Google.FusionTables.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @fusiontables.column.patch@ method which the
+-- 'ColumnPatch' request conforms to.
+type ColumnPatchResource =
+     "fusiontables" :>
+       "v2" :>
+         "tables" :>
+           Capture "tableId" Text :>
+             "columns" :>
+               Capture "columnId" Text :>
+                 QueryParam "alt" AltJSON :>
+                   ReqBody '[JSON] Column :> Patch '[JSON] Column
+
+-- | Updates the name or type of an existing column. This method supports
+-- patch semantics.
+--
+-- /See:/ 'columnPatch' smart constructor.
+data ColumnPatch = ColumnPatch
+    { _cpPayload  :: !Column
+    , _cpTableId  :: !Text
+    , _cpColumnId :: !Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ColumnPatch' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'cpPayload'
+--
+-- * 'cpTableId'
+--
+-- * 'cpColumnId'
+columnPatch
+    :: Column -- ^ 'cpPayload'
+    -> Text -- ^ 'cpTableId'
+    -> Text -- ^ 'cpColumnId'
+    -> ColumnPatch
+columnPatch pCpPayload_ pCpTableId_ pCpColumnId_ =
+    ColumnPatch
+    { _cpPayload = pCpPayload_
+    , _cpTableId = pCpTableId_
+    , _cpColumnId = pCpColumnId_
+    }
+
+-- | Multipart request metadata.
+cpPayload :: Lens' ColumnPatch Column
+cpPayload
+  = lens _cpPayload (\ s a -> s{_cpPayload = a})
+
+-- | Table for which the column is being updated.
+cpTableId :: Lens' ColumnPatch Text
+cpTableId
+  = lens _cpTableId (\ s a -> s{_cpTableId = a})
+
+-- | Name or identifier for the column that is being updated.
+cpColumnId :: Lens' ColumnPatch Text
+cpColumnId
+  = lens _cpColumnId (\ s a -> s{_cpColumnId = a})
+
+instance GoogleRequest ColumnPatch where
+        type Rs ColumnPatch = Column
+        requestClient ColumnPatch{..}
+          = go _cpTableId _cpColumnId (Just AltJSON) _cpPayload
+              fusionTablesService
+          where go
+                  = buildClient (Proxy :: Proxy ColumnPatchResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/FusionTables/Column/Update.hs b/gen/Network/Google/Resource/FusionTables/Column/Update.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/FusionTables/Column/Update.hs
@@ -0,0 +1,108 @@
+{-# LANGUAGE DataKinds          #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE FlexibleInstances  #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+{-# LANGUAGE TypeOperators      #-}
+
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
+
+-- |
+-- Module      : Network.Google.Resource.FusionTables.Column.Update
+-- Copyright   : (c) 2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Updates the name or type of an existing column.
+--
+-- /See:/ <https://developers.google.com/fusiontables Fusion Tables API Reference> for @fusiontables.column.update@.
+module Network.Google.Resource.FusionTables.Column.Update
+    (
+    -- * REST Resource
+      ColumnUpdateResource
+
+    -- * Creating a Request
+    , columnUpdate
+    , ColumnUpdate
+
+    -- * Request Lenses
+    , cuPayload
+    , cuTableId
+    , cuColumnId
+    ) where
+
+import           Network.Google.FusionTables.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @fusiontables.column.update@ method which the
+-- 'ColumnUpdate' request conforms to.
+type ColumnUpdateResource =
+     "fusiontables" :>
+       "v2" :>
+         "tables" :>
+           Capture "tableId" Text :>
+             "columns" :>
+               Capture "columnId" Text :>
+                 QueryParam "alt" AltJSON :>
+                   ReqBody '[JSON] Column :> Put '[JSON] Column
+
+-- | Updates the name or type of an existing column.
+--
+-- /See:/ 'columnUpdate' smart constructor.
+data ColumnUpdate = ColumnUpdate
+    { _cuPayload  :: !Column
+    , _cuTableId  :: !Text
+    , _cuColumnId :: !Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ColumnUpdate' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'cuPayload'
+--
+-- * 'cuTableId'
+--
+-- * 'cuColumnId'
+columnUpdate
+    :: Column -- ^ 'cuPayload'
+    -> Text -- ^ 'cuTableId'
+    -> Text -- ^ 'cuColumnId'
+    -> ColumnUpdate
+columnUpdate pCuPayload_ pCuTableId_ pCuColumnId_ =
+    ColumnUpdate
+    { _cuPayload = pCuPayload_
+    , _cuTableId = pCuTableId_
+    , _cuColumnId = pCuColumnId_
+    }
+
+-- | Multipart request metadata.
+cuPayload :: Lens' ColumnUpdate Column
+cuPayload
+  = lens _cuPayload (\ s a -> s{_cuPayload = a})
+
+-- | Table for which the column is being updated.
+cuTableId :: Lens' ColumnUpdate Text
+cuTableId
+  = lens _cuTableId (\ s a -> s{_cuTableId = a})
+
+-- | Name or identifier for the column that is being updated.
+cuColumnId :: Lens' ColumnUpdate Text
+cuColumnId
+  = lens _cuColumnId (\ s a -> s{_cuColumnId = a})
+
+instance GoogleRequest ColumnUpdate where
+        type Rs ColumnUpdate = Column
+        requestClient ColumnUpdate{..}
+          = go _cuTableId _cuColumnId (Just AltJSON) _cuPayload
+              fusionTablesService
+          where go
+                  = buildClient (Proxy :: Proxy ColumnUpdateResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/FusionTables/Query/SQL.hs b/gen/Network/Google/Resource/FusionTables/Query/SQL.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/FusionTables/Query/SQL.hs
@@ -0,0 +1,127 @@
+{-# LANGUAGE DataKinds          #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE FlexibleInstances  #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+{-# LANGUAGE TypeOperators      #-}
+
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
+
+-- |
+-- Module      : Network.Google.Resource.FusionTables.Query.SQL
+-- 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)
+--
+-- Executes a Fusion Tables SQL statement, which can be any of - SELECT -
+-- INSERT - UPDATE - DELETE - SHOW - DESCRIBE - CREATE statement.
+--
+-- /See:/ <https://developers.google.com/fusiontables Fusion Tables API Reference> for @fusiontables.query.sql@.
+module Network.Google.Resource.FusionTables.Query.SQL
+    (
+    -- * REST Resource
+      QuerySQLResource
+
+    -- * Creating a Request
+    , querySQL
+    , QuerySQL
+
+    -- * Request Lenses
+    , qsqlTyped
+    , qsqlHdrs
+    , qsqlSQL
+    ) where
+
+import           Network.Google.FusionTables.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @fusiontables.query.sql@ method which the
+-- 'QuerySQL' request conforms to.
+type QuerySQLResource =
+     "fusiontables" :>
+       "v2" :>
+         "query" :>
+           QueryParam "sql" Text :>
+             QueryParam "typed" Bool :>
+               QueryParam "hdrs" Bool :>
+                 QueryParam "alt" AltJSON :> Post '[JSON] SQLresponse
+       :<|>
+       "fusiontables" :>
+         "v2" :>
+           "query" :>
+             QueryParam "sql" Text :>
+               QueryParam "typed" Bool :>
+                 QueryParam "hdrs" Bool :>
+                   QueryParam "alt" AltMedia :>
+                     Post '[OctetStream] Stream
+
+-- | Executes a Fusion Tables SQL statement, which can be any of - SELECT -
+-- INSERT - UPDATE - DELETE - SHOW - DESCRIBE - CREATE statement.
+--
+-- /See:/ 'querySQL' smart constructor.
+data QuerySQL = QuerySQL
+    { _qsqlTyped :: !(Maybe Bool)
+    , _qsqlHdrs  :: !(Maybe Bool)
+    , _qsqlSQL   :: !Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'QuerySQL' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'qsqlTyped'
+--
+-- * 'qsqlHdrs'
+--
+-- * 'qsqlSQL'
+querySQL
+    :: Text -- ^ 'qsqlSQL'
+    -> QuerySQL
+querySQL pQsqlSQL_ =
+    QuerySQL
+    { _qsqlTyped = Nothing
+    , _qsqlHdrs = Nothing
+    , _qsqlSQL = pQsqlSQL_
+    }
+
+-- | Whether typed values are returned in the (JSON) response: numbers for
+-- numeric values and parsed geometries for KML values. Default is true.
+qsqlTyped :: Lens' QuerySQL (Maybe Bool)
+qsqlTyped
+  = lens _qsqlTyped (\ s a -> s{_qsqlTyped = a})
+
+-- | Whether column names are included in the first row. Default is true.
+qsqlHdrs :: Lens' QuerySQL (Maybe Bool)
+qsqlHdrs = lens _qsqlHdrs (\ s a -> s{_qsqlHdrs = a})
+
+-- | A Fusion Tables SQL statement, which can be any of - SELECT - INSERT -
+-- UPDATE - DELETE - SHOW - DESCRIBE - CREATE
+qsqlSQL :: Lens' QuerySQL Text
+qsqlSQL = lens _qsqlSQL (\ s a -> s{_qsqlSQL = a})
+
+instance GoogleRequest QuerySQL where
+        type Rs QuerySQL = SQLresponse
+        requestClient QuerySQL{..}
+          = go (Just _qsqlSQL) _qsqlTyped _qsqlHdrs
+              (Just AltJSON)
+              fusionTablesService
+          where go :<|> _
+                  = buildClient (Proxy :: Proxy QuerySQLResource)
+                      mempty
+
+instance GoogleRequest (MediaDownload QuerySQL) where
+        type Rs (MediaDownload QuerySQL) = Stream
+        requestClient (MediaDownload QuerySQL{..})
+          = go (Just _qsqlSQL) _qsqlTyped _qsqlHdrs
+              (Just AltMedia)
+              fusionTablesService
+          where _ :<|> go
+                  = buildClient (Proxy :: Proxy QuerySQLResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/FusionTables/Query/SQLGet.hs b/gen/Network/Google/Resource/FusionTables/Query/SQLGet.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/FusionTables/Query/SQLGet.hs
@@ -0,0 +1,126 @@
+{-# LANGUAGE DataKinds          #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE FlexibleInstances  #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+{-# LANGUAGE TypeOperators      #-}
+
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
+
+-- |
+-- Module      : Network.Google.Resource.FusionTables.Query.SQLGet
+-- 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)
+--
+-- Executes a SQL statement which can be any of - SELECT - SHOW - DESCRIBE
+--
+-- /See:/ <https://developers.google.com/fusiontables Fusion Tables API Reference> for @fusiontables.query.sqlGet@.
+module Network.Google.Resource.FusionTables.Query.SQLGet
+    (
+    -- * REST Resource
+      QuerySQLGetResource
+
+    -- * Creating a Request
+    , querySQLGet
+    , QuerySQLGet
+
+    -- * Request Lenses
+    , qsqlgTyped
+    , qsqlgHdrs
+    , qsqlgSQL
+    ) where
+
+import           Network.Google.FusionTables.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @fusiontables.query.sqlGet@ method which the
+-- 'QuerySQLGet' request conforms to.
+type QuerySQLGetResource =
+     "fusiontables" :>
+       "v2" :>
+         "query" :>
+           QueryParam "sql" Text :>
+             QueryParam "typed" Bool :>
+               QueryParam "hdrs" Bool :>
+                 QueryParam "alt" AltJSON :> Get '[JSON] SQLresponse
+       :<|>
+       "fusiontables" :>
+         "v2" :>
+           "query" :>
+             QueryParam "sql" Text :>
+               QueryParam "typed" Bool :>
+                 QueryParam "hdrs" Bool :>
+                   QueryParam "alt" AltMedia :>
+                     Get '[OctetStream] Stream
+
+-- | Executes a SQL statement which can be any of - SELECT - SHOW - DESCRIBE
+--
+-- /See:/ 'querySQLGet' smart constructor.
+data QuerySQLGet = QuerySQLGet
+    { _qsqlgTyped :: !(Maybe Bool)
+    , _qsqlgHdrs  :: !(Maybe Bool)
+    , _qsqlgSQL   :: !Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'QuerySQLGet' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'qsqlgTyped'
+--
+-- * 'qsqlgHdrs'
+--
+-- * 'qsqlgSQL'
+querySQLGet
+    :: Text -- ^ 'qsqlgSQL'
+    -> QuerySQLGet
+querySQLGet pQsqlgSQL_ =
+    QuerySQLGet
+    { _qsqlgTyped = Nothing
+    , _qsqlgHdrs = Nothing
+    , _qsqlgSQL = pQsqlgSQL_
+    }
+
+-- | Whether typed values are returned in the (JSON) response: numbers for
+-- numeric values and parsed geometries for KML values. Default is true.
+qsqlgTyped :: Lens' QuerySQLGet (Maybe Bool)
+qsqlgTyped
+  = lens _qsqlgTyped (\ s a -> s{_qsqlgTyped = a})
+
+-- | Whether column names are included (in the first row). Default is true.
+qsqlgHdrs :: Lens' QuerySQLGet (Maybe Bool)
+qsqlgHdrs
+  = lens _qsqlgHdrs (\ s a -> s{_qsqlgHdrs = a})
+
+-- | A SQL statement which can be any of - SELECT - SHOW - DESCRIBE
+qsqlgSQL :: Lens' QuerySQLGet Text
+qsqlgSQL = lens _qsqlgSQL (\ s a -> s{_qsqlgSQL = a})
+
+instance GoogleRequest QuerySQLGet where
+        type Rs QuerySQLGet = SQLresponse
+        requestClient QuerySQLGet{..}
+          = go (Just _qsqlgSQL) _qsqlgTyped _qsqlgHdrs
+              (Just AltJSON)
+              fusionTablesService
+          where go :<|> _
+                  = buildClient (Proxy :: Proxy QuerySQLGetResource)
+                      mempty
+
+instance GoogleRequest (MediaDownload QuerySQLGet)
+         where
+        type Rs (MediaDownload QuerySQLGet) = Stream
+        requestClient (MediaDownload QuerySQLGet{..})
+          = go (Just _qsqlgSQL) _qsqlgTyped _qsqlgHdrs
+              (Just AltMedia)
+              fusionTablesService
+          where _ :<|> go
+                  = buildClient (Proxy :: Proxy QuerySQLGetResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/FusionTables/Style/Delete.hs b/gen/Network/Google/Resource/FusionTables/Style/Delete.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/FusionTables/Style/Delete.hs
@@ -0,0 +1,97 @@
+{-# LANGUAGE DataKinds          #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE FlexibleInstances  #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+{-# LANGUAGE TypeOperators      #-}
+
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
+
+-- |
+-- Module      : Network.Google.Resource.FusionTables.Style.Delete
+-- Copyright   : (c) 2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Deletes a style.
+--
+-- /See:/ <https://developers.google.com/fusiontables Fusion Tables API Reference> for @fusiontables.style.delete@.
+module Network.Google.Resource.FusionTables.Style.Delete
+    (
+    -- * REST Resource
+      StyleDeleteResource
+
+    -- * Creating a Request
+    , styleDelete
+    , StyleDelete
+
+    -- * Request Lenses
+    , sdStyleId
+    , sdTableId
+    ) where
+
+import           Network.Google.FusionTables.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @fusiontables.style.delete@ method which the
+-- 'StyleDelete' request conforms to.
+type StyleDeleteResource =
+     "fusiontables" :>
+       "v2" :>
+         "tables" :>
+           Capture "tableId" Text :>
+             "styles" :>
+               Capture "styleId" (Textual Int32) :>
+                 QueryParam "alt" AltJSON :> Delete '[JSON] ()
+
+-- | Deletes a style.
+--
+-- /See:/ 'styleDelete' smart constructor.
+data StyleDelete = StyleDelete
+    { _sdStyleId :: !(Textual Int32)
+    , _sdTableId :: !Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'StyleDelete' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'sdStyleId'
+--
+-- * 'sdTableId'
+styleDelete
+    :: Int32 -- ^ 'sdStyleId'
+    -> Text -- ^ 'sdTableId'
+    -> StyleDelete
+styleDelete pSdStyleId_ pSdTableId_ =
+    StyleDelete
+    { _sdStyleId = _Coerce # pSdStyleId_
+    , _sdTableId = pSdTableId_
+    }
+
+-- | Identifier (within a table) for the style being deleted
+sdStyleId :: Lens' StyleDelete Int32
+sdStyleId
+  = lens _sdStyleId (\ s a -> s{_sdStyleId = a}) .
+      _Coerce
+
+-- | Table from which the style is being deleted
+sdTableId :: Lens' StyleDelete Text
+sdTableId
+  = lens _sdTableId (\ s a -> s{_sdTableId = a})
+
+instance GoogleRequest StyleDelete where
+        type Rs StyleDelete = ()
+        requestClient StyleDelete{..}
+          = go _sdTableId _sdStyleId (Just AltJSON)
+              fusionTablesService
+          where go
+                  = buildClient (Proxy :: Proxy StyleDeleteResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/FusionTables/Style/Get.hs b/gen/Network/Google/Resource/FusionTables/Style/Get.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/FusionTables/Style/Get.hs
@@ -0,0 +1,97 @@
+{-# LANGUAGE DataKinds          #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE FlexibleInstances  #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+{-# LANGUAGE TypeOperators      #-}
+
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
+
+-- |
+-- Module      : Network.Google.Resource.FusionTables.Style.Get
+-- Copyright   : (c) 2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Gets a specific style.
+--
+-- /See:/ <https://developers.google.com/fusiontables Fusion Tables API Reference> for @fusiontables.style.get@.
+module Network.Google.Resource.FusionTables.Style.Get
+    (
+    -- * REST Resource
+      StyleGetResource
+
+    -- * Creating a Request
+    , styleGet
+    , StyleGet
+
+    -- * Request Lenses
+    , sgStyleId
+    , sgTableId
+    ) where
+
+import           Network.Google.FusionTables.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @fusiontables.style.get@ method which the
+-- 'StyleGet' request conforms to.
+type StyleGetResource =
+     "fusiontables" :>
+       "v2" :>
+         "tables" :>
+           Capture "tableId" Text :>
+             "styles" :>
+               Capture "styleId" (Textual Int32) :>
+                 QueryParam "alt" AltJSON :> Get '[JSON] StyleSetting
+
+-- | Gets a specific style.
+--
+-- /See:/ 'styleGet' smart constructor.
+data StyleGet = StyleGet
+    { _sgStyleId :: !(Textual Int32)
+    , _sgTableId :: !Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'StyleGet' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'sgStyleId'
+--
+-- * 'sgTableId'
+styleGet
+    :: Int32 -- ^ 'sgStyleId'
+    -> Text -- ^ 'sgTableId'
+    -> StyleGet
+styleGet pSgStyleId_ pSgTableId_ =
+    StyleGet
+    { _sgStyleId = _Coerce # pSgStyleId_
+    , _sgTableId = pSgTableId_
+    }
+
+-- | Identifier (integer) for a specific style in a table
+sgStyleId :: Lens' StyleGet Int32
+sgStyleId
+  = lens _sgStyleId (\ s a -> s{_sgStyleId = a}) .
+      _Coerce
+
+-- | Table to which the requested style belongs
+sgTableId :: Lens' StyleGet Text
+sgTableId
+  = lens _sgTableId (\ s a -> s{_sgTableId = a})
+
+instance GoogleRequest StyleGet where
+        type Rs StyleGet = StyleSetting
+        requestClient StyleGet{..}
+          = go _sgTableId _sgStyleId (Just AltJSON)
+              fusionTablesService
+          where go
+                  = buildClient (Proxy :: Proxy StyleGetResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/FusionTables/Style/Insert.hs b/gen/Network/Google/Resource/FusionTables/Style/Insert.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/FusionTables/Style/Insert.hs
@@ -0,0 +1,97 @@
+{-# LANGUAGE DataKinds          #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE FlexibleInstances  #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+{-# LANGUAGE TypeOperators      #-}
+
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
+
+-- |
+-- Module      : Network.Google.Resource.FusionTables.Style.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)
+--
+-- Adds a new style for the table.
+--
+-- /See:/ <https://developers.google.com/fusiontables Fusion Tables API Reference> for @fusiontables.style.insert@.
+module Network.Google.Resource.FusionTables.Style.Insert
+    (
+    -- * REST Resource
+      StyleInsertResource
+
+    -- * Creating a Request
+    , styleInsert
+    , StyleInsert
+
+    -- * Request Lenses
+    , siPayload
+    , siTableId
+    ) where
+
+import           Network.Google.FusionTables.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @fusiontables.style.insert@ method which the
+-- 'StyleInsert' request conforms to.
+type StyleInsertResource =
+     "fusiontables" :>
+       "v2" :>
+         "tables" :>
+           Capture "tableId" Text :>
+             "styles" :>
+               QueryParam "alt" AltJSON :>
+                 ReqBody '[JSON] StyleSetting :>
+                   Post '[JSON] StyleSetting
+
+-- | Adds a new style for the table.
+--
+-- /See:/ 'styleInsert' smart constructor.
+data StyleInsert = StyleInsert
+    { _siPayload :: !StyleSetting
+    , _siTableId :: !Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'StyleInsert' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'siPayload'
+--
+-- * 'siTableId'
+styleInsert
+    :: StyleSetting -- ^ 'siPayload'
+    -> Text -- ^ 'siTableId'
+    -> StyleInsert
+styleInsert pSiPayload_ pSiTableId_ =
+    StyleInsert
+    { _siPayload = pSiPayload_
+    , _siTableId = pSiTableId_
+    }
+
+-- | Multipart request metadata.
+siPayload :: Lens' StyleInsert StyleSetting
+siPayload
+  = lens _siPayload (\ s a -> s{_siPayload = a})
+
+-- | Table for which a new style is being added
+siTableId :: Lens' StyleInsert Text
+siTableId
+  = lens _siTableId (\ s a -> s{_siTableId = a})
+
+instance GoogleRequest StyleInsert where
+        type Rs StyleInsert = StyleSetting
+        requestClient StyleInsert{..}
+          = go _siTableId (Just AltJSON) _siPayload
+              fusionTablesService
+          where go
+                  = buildClient (Proxy :: Proxy StyleInsertResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/FusionTables/Style/List.hs b/gen/Network/Google/Resource/FusionTables/Style/List.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/FusionTables/Style/List.hs
@@ -0,0 +1,109 @@
+{-# 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.FusionTables.Style.List
+-- Copyright   : (c) 2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Retrieves a list of styles.
+--
+-- /See:/ <https://developers.google.com/fusiontables Fusion Tables API Reference> for @fusiontables.style.list@.
+module Network.Google.Resource.FusionTables.Style.List
+    (
+    -- * REST Resource
+      StyleListResource
+
+    -- * Creating a Request
+    , styleList
+    , StyleList
+
+    -- * Request Lenses
+    , slPageToken
+    , slTableId
+    , slMaxResults
+    ) where
+
+import           Network.Google.FusionTables.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @fusiontables.style.list@ method which the
+-- 'StyleList' request conforms to.
+type StyleListResource =
+     "fusiontables" :>
+       "v2" :>
+         "tables" :>
+           Capture "tableId" Text :>
+             "styles" :>
+               QueryParam "pageToken" Text :>
+                 QueryParam "maxResults" (Textual Word32) :>
+                   QueryParam "alt" AltJSON :>
+                     Get '[JSON] StyleSettingList
+
+-- | Retrieves a list of styles.
+--
+-- /See:/ 'styleList' smart constructor.
+data StyleList = StyleList
+    { _slPageToken  :: !(Maybe Text)
+    , _slTableId    :: !Text
+    , _slMaxResults :: !(Maybe (Textual Word32))
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'StyleList' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'slPageToken'
+--
+-- * 'slTableId'
+--
+-- * 'slMaxResults'
+styleList
+    :: Text -- ^ 'slTableId'
+    -> StyleList
+styleList pSlTableId_ =
+    StyleList
+    { _slPageToken = Nothing
+    , _slTableId = pSlTableId_
+    , _slMaxResults = Nothing
+    }
+
+-- | Continuation token specifying which result page to return. Optional.
+slPageToken :: Lens' StyleList (Maybe Text)
+slPageToken
+  = lens _slPageToken (\ s a -> s{_slPageToken = a})
+
+-- | Table whose styles are being listed
+slTableId :: Lens' StyleList Text
+slTableId
+  = lens _slTableId (\ s a -> s{_slTableId = a})
+
+-- | Maximum number of styles to return. Optional. Default is 5.
+slMaxResults :: Lens' StyleList (Maybe Word32)
+slMaxResults
+  = lens _slMaxResults (\ s a -> s{_slMaxResults = a})
+      . mapping _Coerce
+
+instance GoogleRequest StyleList where
+        type Rs StyleList = StyleSettingList
+        requestClient StyleList{..}
+          = go _slTableId _slPageToken _slMaxResults
+              (Just AltJSON)
+              fusionTablesService
+          where go
+                  = buildClient (Proxy :: Proxy StyleListResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/FusionTables/Style/Patch.hs b/gen/Network/Google/Resource/FusionTables/Style/Patch.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/FusionTables/Style/Patch.hs
@@ -0,0 +1,110 @@
+{-# 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.FusionTables.Style.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 an existing style. This method supports patch semantics.
+--
+-- /See:/ <https://developers.google.com/fusiontables Fusion Tables API Reference> for @fusiontables.style.patch@.
+module Network.Google.Resource.FusionTables.Style.Patch
+    (
+    -- * REST Resource
+      StylePatchResource
+
+    -- * Creating a Request
+    , stylePatch
+    , StylePatch
+
+    -- * Request Lenses
+    , spPayload
+    , spStyleId
+    , spTableId
+    ) where
+
+import           Network.Google.FusionTables.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @fusiontables.style.patch@ method which the
+-- 'StylePatch' request conforms to.
+type StylePatchResource =
+     "fusiontables" :>
+       "v2" :>
+         "tables" :>
+           Capture "tableId" Text :>
+             "styles" :>
+               Capture "styleId" (Textual Int32) :>
+                 QueryParam "alt" AltJSON :>
+                   ReqBody '[JSON] StyleSetting :>
+                     Patch '[JSON] StyleSetting
+
+-- | Updates an existing style. This method supports patch semantics.
+--
+-- /See:/ 'stylePatch' smart constructor.
+data StylePatch = StylePatch
+    { _spPayload :: !StyleSetting
+    , _spStyleId :: !(Textual Int32)
+    , _spTableId :: !Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'StylePatch' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'spPayload'
+--
+-- * 'spStyleId'
+--
+-- * 'spTableId'
+stylePatch
+    :: StyleSetting -- ^ 'spPayload'
+    -> Int32 -- ^ 'spStyleId'
+    -> Text -- ^ 'spTableId'
+    -> StylePatch
+stylePatch pSpPayload_ pSpStyleId_ pSpTableId_ =
+    StylePatch
+    { _spPayload = pSpPayload_
+    , _spStyleId = _Coerce # pSpStyleId_
+    , _spTableId = pSpTableId_
+    }
+
+-- | Multipart request metadata.
+spPayload :: Lens' StylePatch StyleSetting
+spPayload
+  = lens _spPayload (\ s a -> s{_spPayload = a})
+
+-- | Identifier (within a table) for the style being updated.
+spStyleId :: Lens' StylePatch Int32
+spStyleId
+  = lens _spStyleId (\ s a -> s{_spStyleId = a}) .
+      _Coerce
+
+-- | Table whose style is being updated.
+spTableId :: Lens' StylePatch Text
+spTableId
+  = lens _spTableId (\ s a -> s{_spTableId = a})
+
+instance GoogleRequest StylePatch where
+        type Rs StylePatch = StyleSetting
+        requestClient StylePatch{..}
+          = go _spTableId _spStyleId (Just AltJSON) _spPayload
+              fusionTablesService
+          where go
+                  = buildClient (Proxy :: Proxy StylePatchResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/FusionTables/Style/Update.hs b/gen/Network/Google/Resource/FusionTables/Style/Update.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/FusionTables/Style/Update.hs
@@ -0,0 +1,110 @@
+{-# 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.FusionTables.Style.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 an existing style.
+--
+-- /See:/ <https://developers.google.com/fusiontables Fusion Tables API Reference> for @fusiontables.style.update@.
+module Network.Google.Resource.FusionTables.Style.Update
+    (
+    -- * REST Resource
+      StyleUpdateResource
+
+    -- * Creating a Request
+    , styleUpdate
+    , StyleUpdate
+
+    -- * Request Lenses
+    , suPayload
+    , suStyleId
+    , suTableId
+    ) where
+
+import           Network.Google.FusionTables.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @fusiontables.style.update@ method which the
+-- 'StyleUpdate' request conforms to.
+type StyleUpdateResource =
+     "fusiontables" :>
+       "v2" :>
+         "tables" :>
+           Capture "tableId" Text :>
+             "styles" :>
+               Capture "styleId" (Textual Int32) :>
+                 QueryParam "alt" AltJSON :>
+                   ReqBody '[JSON] StyleSetting :>
+                     Put '[JSON] StyleSetting
+
+-- | Updates an existing style.
+--
+-- /See:/ 'styleUpdate' smart constructor.
+data StyleUpdate = StyleUpdate
+    { _suPayload :: !StyleSetting
+    , _suStyleId :: !(Textual Int32)
+    , _suTableId :: !Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'StyleUpdate' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'suPayload'
+--
+-- * 'suStyleId'
+--
+-- * 'suTableId'
+styleUpdate
+    :: StyleSetting -- ^ 'suPayload'
+    -> Int32 -- ^ 'suStyleId'
+    -> Text -- ^ 'suTableId'
+    -> StyleUpdate
+styleUpdate pSuPayload_ pSuStyleId_ pSuTableId_ =
+    StyleUpdate
+    { _suPayload = pSuPayload_
+    , _suStyleId = _Coerce # pSuStyleId_
+    , _suTableId = pSuTableId_
+    }
+
+-- | Multipart request metadata.
+suPayload :: Lens' StyleUpdate StyleSetting
+suPayload
+  = lens _suPayload (\ s a -> s{_suPayload = a})
+
+-- | Identifier (within a table) for the style being updated.
+suStyleId :: Lens' StyleUpdate Int32
+suStyleId
+  = lens _suStyleId (\ s a -> s{_suStyleId = a}) .
+      _Coerce
+
+-- | Table whose style is being updated.
+suTableId :: Lens' StyleUpdate Text
+suTableId
+  = lens _suTableId (\ s a -> s{_suTableId = a})
+
+instance GoogleRequest StyleUpdate where
+        type Rs StyleUpdate = StyleSetting
+        requestClient StyleUpdate{..}
+          = go _suTableId _suStyleId (Just AltJSON) _suPayload
+              fusionTablesService
+          where go
+                  = buildClient (Proxy :: Proxy StyleUpdateResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/FusionTables/Table/Copy.hs b/gen/Network/Google/Resource/FusionTables/Table/Copy.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/FusionTables/Table/Copy.hs
@@ -0,0 +1,96 @@
+{-# LANGUAGE DataKinds          #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE FlexibleInstances  #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+{-# LANGUAGE TypeOperators      #-}
+
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
+
+-- |
+-- Module      : Network.Google.Resource.FusionTables.Table.Copy
+-- 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)
+--
+-- Copies a table.
+--
+-- /See:/ <https://developers.google.com/fusiontables Fusion Tables API Reference> for @fusiontables.table.copy@.
+module Network.Google.Resource.FusionTables.Table.Copy
+    (
+    -- * REST Resource
+      TableCopyResource
+
+    -- * Creating a Request
+    , tableCopy
+    , TableCopy
+
+    -- * Request Lenses
+    , tcTableId
+    , tcCopyPresentation
+    ) where
+
+import           Network.Google.FusionTables.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @fusiontables.table.copy@ method which the
+-- 'TableCopy' request conforms to.
+type TableCopyResource =
+     "fusiontables" :>
+       "v2" :>
+         "tables" :>
+           Capture "tableId" Text :>
+             "copy" :>
+               QueryParam "copyPresentation" Bool :>
+                 QueryParam "alt" AltJSON :> Post '[JSON] Table
+
+-- | Copies a table.
+--
+-- /See:/ 'tableCopy' smart constructor.
+data TableCopy = TableCopy
+    { _tcTableId          :: !Text
+    , _tcCopyPresentation :: !(Maybe Bool)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'TableCopy' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'tcTableId'
+--
+-- * 'tcCopyPresentation'
+tableCopy
+    :: Text -- ^ 'tcTableId'
+    -> TableCopy
+tableCopy pTcTableId_ =
+    TableCopy
+    { _tcTableId = pTcTableId_
+    , _tcCopyPresentation = Nothing
+    }
+
+-- | ID of the table that is being copied.
+tcTableId :: Lens' TableCopy Text
+tcTableId
+  = lens _tcTableId (\ s a -> s{_tcTableId = a})
+
+-- | Whether to also copy tabs, styles, and templates. Default is false.
+tcCopyPresentation :: Lens' TableCopy (Maybe Bool)
+tcCopyPresentation
+  = lens _tcCopyPresentation
+      (\ s a -> s{_tcCopyPresentation = a})
+
+instance GoogleRequest TableCopy where
+        type Rs TableCopy = Table
+        requestClient TableCopy{..}
+          = go _tcTableId _tcCopyPresentation (Just AltJSON)
+              fusionTablesService
+          where go
+                  = buildClient (Proxy :: Proxy TableCopyResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/FusionTables/Table/Delete.hs b/gen/Network/Google/Resource/FusionTables/Table/Delete.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/FusionTables/Table/Delete.hs
@@ -0,0 +1,82 @@
+{-# LANGUAGE DataKinds          #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE FlexibleInstances  #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+{-# LANGUAGE TypeOperators      #-}
+
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
+
+-- |
+-- Module      : Network.Google.Resource.FusionTables.Table.Delete
+-- Copyright   : (c) 2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Deletes a table.
+--
+-- /See:/ <https://developers.google.com/fusiontables Fusion Tables API Reference> for @fusiontables.table.delete@.
+module Network.Google.Resource.FusionTables.Table.Delete
+    (
+    -- * REST Resource
+      TableDeleteResource
+
+    -- * Creating a Request
+    , tableDelete
+    , TableDelete
+
+    -- * Request Lenses
+    , tddTableId
+    ) where
+
+import           Network.Google.FusionTables.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @fusiontables.table.delete@ method which the
+-- 'TableDelete' request conforms to.
+type TableDeleteResource =
+     "fusiontables" :>
+       "v2" :>
+         "tables" :>
+           Capture "tableId" Text :>
+             QueryParam "alt" AltJSON :> Delete '[JSON] ()
+
+-- | Deletes a table.
+--
+-- /See:/ 'tableDelete' smart constructor.
+newtype TableDelete = TableDelete
+    { _tddTableId :: Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'TableDelete' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'tddTableId'
+tableDelete
+    :: Text -- ^ 'tddTableId'
+    -> TableDelete
+tableDelete pTddTableId_ =
+    TableDelete
+    { _tddTableId = pTddTableId_
+    }
+
+-- | ID of the table to be deleted.
+tddTableId :: Lens' TableDelete Text
+tddTableId
+  = lens _tddTableId (\ s a -> s{_tddTableId = a})
+
+instance GoogleRequest TableDelete where
+        type Rs TableDelete = ()
+        requestClient TableDelete{..}
+          = go _tddTableId (Just AltJSON) fusionTablesService
+          where go
+                  = buildClient (Proxy :: Proxy TableDeleteResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/FusionTables/Table/Get.hs b/gen/Network/Google/Resource/FusionTables/Table/Get.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/FusionTables/Table/Get.hs
@@ -0,0 +1,82 @@
+{-# LANGUAGE DataKinds          #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE FlexibleInstances  #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+{-# LANGUAGE TypeOperators      #-}
+
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
+
+-- |
+-- Module      : Network.Google.Resource.FusionTables.Table.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 specific table by its ID.
+--
+-- /See:/ <https://developers.google.com/fusiontables Fusion Tables API Reference> for @fusiontables.table.get@.
+module Network.Google.Resource.FusionTables.Table.Get
+    (
+    -- * REST Resource
+      TableGetResource
+
+    -- * Creating a Request
+    , tableGet
+    , TableGet
+
+    -- * Request Lenses
+    , tgTableId
+    ) where
+
+import           Network.Google.FusionTables.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @fusiontables.table.get@ method which the
+-- 'TableGet' request conforms to.
+type TableGetResource =
+     "fusiontables" :>
+       "v2" :>
+         "tables" :>
+           Capture "tableId" Text :>
+             QueryParam "alt" AltJSON :> Get '[JSON] Table
+
+-- | Retrieves a specific table by its ID.
+--
+-- /See:/ 'tableGet' smart constructor.
+newtype TableGet = TableGet
+    { _tgTableId :: Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'TableGet' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'tgTableId'
+tableGet
+    :: Text -- ^ 'tgTableId'
+    -> TableGet
+tableGet pTgTableId_ =
+    TableGet
+    { _tgTableId = pTgTableId_
+    }
+
+-- | Identifier for the table being requested.
+tgTableId :: Lens' TableGet Text
+tgTableId
+  = lens _tgTableId (\ s a -> s{_tgTableId = a})
+
+instance GoogleRequest TableGet where
+        type Rs TableGet = Table
+        requestClient TableGet{..}
+          = go _tgTableId (Just AltJSON) fusionTablesService
+          where go
+                  = buildClient (Proxy :: Proxy TableGetResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/FusionTables/Table/ImportRows.hs b/gen/Network/Google/Resource/FusionTables/Table/ImportRows.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/FusionTables/Table/ImportRows.hs
@@ -0,0 +1,187 @@
+{-# 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.FusionTables.Table.ImportRows
+-- 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)
+--
+-- Imports more rows into a table.
+--
+-- /See:/ <https://developers.google.com/fusiontables Fusion Tables API Reference> for @fusiontables.table.importRows@.
+module Network.Google.Resource.FusionTables.Table.ImportRows
+    (
+    -- * REST Resource
+      TableImportRowsResource
+
+    -- * Creating a Request
+    , tableImportRows
+    , TableImportRows
+
+    -- * Request Lenses
+    , tirStartLine
+    , tirEndLine
+    , tirTableId
+    , tirDelimiter
+    , tirEncoding
+    , tirIsStrict
+    ) where
+
+import           Network.Google.FusionTables.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @fusiontables.table.importRows@ method which the
+-- 'TableImportRows' request conforms to.
+type TableImportRowsResource =
+     "fusiontables" :>
+       "v2" :>
+         "tables" :>
+           Capture "tableId" Text :>
+             "import" :>
+               QueryParam "startLine" (Textual Int32) :>
+                 QueryParam "endLine" (Textual Int32) :>
+                   QueryParam "delimiter" Text :>
+                     QueryParam "encoding" Text :>
+                       QueryParam "isStrict" Bool :>
+                         QueryParam "alt" AltJSON :> Post '[JSON] Import
+       :<|>
+       "upload" :>
+         "fusiontables" :>
+           "v2" :>
+             "tables" :>
+               Capture "tableId" Text :>
+                 "import" :>
+                   QueryParam "startLine" (Textual Int32) :>
+                     QueryParam "endLine" (Textual Int32) :>
+                       QueryParam "delimiter" Text :>
+                         QueryParam "encoding" Text :>
+                           QueryParam "isStrict" Bool :>
+                             QueryParam "alt" AltJSON :>
+                               QueryParam "uploadType" AltMedia :>
+                                 ReqBody '[OctetStream] RequestBody :>
+                                   Post '[JSON] Import
+
+-- | Imports more rows into a table.
+--
+-- /See:/ 'tableImportRows' smart constructor.
+data TableImportRows = TableImportRows
+    { _tirStartLine :: !(Maybe (Textual Int32))
+    , _tirEndLine   :: !(Maybe (Textual Int32))
+    , _tirTableId   :: !Text
+    , _tirDelimiter :: !(Maybe Text)
+    , _tirEncoding  :: !(Maybe Text)
+    , _tirIsStrict  :: !(Maybe Bool)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'TableImportRows' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'tirStartLine'
+--
+-- * 'tirEndLine'
+--
+-- * 'tirTableId'
+--
+-- * 'tirDelimiter'
+--
+-- * 'tirEncoding'
+--
+-- * 'tirIsStrict'
+tableImportRows
+    :: Text -- ^ 'tirTableId'
+    -> TableImportRows
+tableImportRows pTirTableId_ =
+    TableImportRows
+    { _tirStartLine = Nothing
+    , _tirEndLine = Nothing
+    , _tirTableId = pTirTableId_
+    , _tirDelimiter = Nothing
+    , _tirEncoding = Nothing
+    , _tirIsStrict = Nothing
+    }
+
+-- | The index of the first line from which to start importing, inclusive.
+-- Default is 0.
+tirStartLine :: Lens' TableImportRows (Maybe Int32)
+tirStartLine
+  = lens _tirStartLine (\ s a -> s{_tirStartLine = a})
+      . mapping _Coerce
+
+-- | The index of the line up to which data will be imported. Default is to
+-- import the entire file. If endLine is negative, it is an offset from the
+-- end of the file; the imported content will exclude the last endLine
+-- lines.
+tirEndLine :: Lens' TableImportRows (Maybe Int32)
+tirEndLine
+  = lens _tirEndLine (\ s a -> s{_tirEndLine = a}) .
+      mapping _Coerce
+
+-- | The table into which new rows are being imported.
+tirTableId :: Lens' TableImportRows Text
+tirTableId
+  = lens _tirTableId (\ s a -> s{_tirTableId = a})
+
+-- | The delimiter used to separate cell values. This can only consist of a
+-- single character. Default is ,.
+tirDelimiter :: Lens' TableImportRows (Maybe Text)
+tirDelimiter
+  = lens _tirDelimiter (\ s a -> s{_tirDelimiter = a})
+
+-- | The encoding of the content. Default is UTF-8. Use auto-detect if you
+-- are unsure of the encoding.
+tirEncoding :: Lens' TableImportRows (Maybe Text)
+tirEncoding
+  = lens _tirEncoding (\ s a -> s{_tirEncoding = a})
+
+-- | Whether the imported CSV must have the same number of values for each
+-- row. If false, rows with fewer values will be padded with empty values.
+-- Default is true.
+tirIsStrict :: Lens' TableImportRows (Maybe Bool)
+tirIsStrict
+  = lens _tirIsStrict (\ s a -> s{_tirIsStrict = a})
+
+instance GoogleRequest TableImportRows where
+        type Rs TableImportRows = Import
+        requestClient TableImportRows{..}
+          = go _tirTableId _tirStartLine _tirEndLine
+              _tirDelimiter
+              _tirEncoding
+              _tirIsStrict
+              (Just AltJSON)
+              fusionTablesService
+          where go :<|> _
+                  = buildClient
+                      (Proxy :: Proxy TableImportRowsResource)
+                      mempty
+
+instance GoogleRequest (MediaUpload TableImportRows)
+         where
+        type Rs (MediaUpload TableImportRows) = Import
+        requestClient (MediaUpload TableImportRows{..} body)
+          = go _tirTableId _tirStartLine _tirEndLine
+              _tirDelimiter
+              _tirEncoding
+              _tirIsStrict
+              (Just AltJSON)
+              (Just AltMedia)
+              body
+              fusionTablesService
+          where _ :<|> go
+                  = buildClient
+                      (Proxy :: Proxy TableImportRowsResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/FusionTables/Table/ImportTable.hs b/gen/Network/Google/Resource/FusionTables/Table/ImportTable.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/FusionTables/Table/ImportTable.hs
@@ -0,0 +1,136 @@
+{-# LANGUAGE DataKinds          #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE FlexibleInstances  #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+{-# LANGUAGE TypeOperators      #-}
+
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
+
+-- |
+-- Module      : Network.Google.Resource.FusionTables.Table.ImportTable
+-- 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)
+--
+-- Imports a new table.
+--
+-- /See:/ <https://developers.google.com/fusiontables Fusion Tables API Reference> for @fusiontables.table.importTable@.
+module Network.Google.Resource.FusionTables.Table.ImportTable
+    (
+    -- * REST Resource
+      TableImportTableResource
+
+    -- * Creating a Request
+    , tableImportTable
+    , TableImportTable
+
+    -- * Request Lenses
+    , titName
+    , titDelimiter
+    , titEncoding
+    ) where
+
+import           Network.Google.FusionTables.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @fusiontables.table.importTable@ method which the
+-- 'TableImportTable' request conforms to.
+type TableImportTableResource =
+     "fusiontables" :>
+       "v2" :>
+         "tables" :>
+           "import" :>
+             QueryParam "name" Text :>
+               QueryParam "delimiter" Text :>
+                 QueryParam "encoding" Text :>
+                   QueryParam "alt" AltJSON :> Post '[JSON] Table
+       :<|>
+       "upload" :>
+         "fusiontables" :>
+           "v2" :>
+             "tables" :>
+               "import" :>
+                 QueryParam "name" Text :>
+                   QueryParam "delimiter" Text :>
+                     QueryParam "encoding" Text :>
+                       QueryParam "alt" AltJSON :>
+                         QueryParam "uploadType" AltMedia :>
+                           ReqBody '[OctetStream] RequestBody :>
+                             Post '[JSON] Table
+
+-- | Imports a new table.
+--
+-- /See:/ 'tableImportTable' smart constructor.
+data TableImportTable = TableImportTable
+    { _titName      :: !Text
+    , _titDelimiter :: !(Maybe Text)
+    , _titEncoding  :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'TableImportTable' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'titName'
+--
+-- * 'titDelimiter'
+--
+-- * 'titEncoding'
+tableImportTable
+    :: Text -- ^ 'titName'
+    -> TableImportTable
+tableImportTable pTitName_ =
+    TableImportTable
+    { _titName = pTitName_
+    , _titDelimiter = Nothing
+    , _titEncoding = Nothing
+    }
+
+-- | The name to be assigned to the new table.
+titName :: Lens' TableImportTable Text
+titName = lens _titName (\ s a -> s{_titName = a})
+
+-- | The delimiter used to separate cell values. This can only consist of a
+-- single character. Default is ,.
+titDelimiter :: Lens' TableImportTable (Maybe Text)
+titDelimiter
+  = lens _titDelimiter (\ s a -> s{_titDelimiter = a})
+
+-- | The encoding of the content. Default is UTF-8. Use auto-detect if you
+-- are unsure of the encoding.
+titEncoding :: Lens' TableImportTable (Maybe Text)
+titEncoding
+  = lens _titEncoding (\ s a -> s{_titEncoding = a})
+
+instance GoogleRequest TableImportTable where
+        type Rs TableImportTable = Table
+        requestClient TableImportTable{..}
+          = go (Just _titName) _titDelimiter _titEncoding
+              (Just AltJSON)
+              fusionTablesService
+          where go :<|> _
+                  = buildClient
+                      (Proxy :: Proxy TableImportTableResource)
+                      mempty
+
+instance GoogleRequest (MediaUpload TableImportTable)
+         where
+        type Rs (MediaUpload TableImportTable) = Table
+        requestClient (MediaUpload TableImportTable{..} body)
+          = go (Just _titName) _titDelimiter _titEncoding
+              (Just AltJSON)
+              (Just AltMedia)
+              body
+              fusionTablesService
+          where _ :<|> go
+                  = buildClient
+                      (Proxy :: Proxy TableImportTableResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/FusionTables/Table/Insert.hs b/gen/Network/Google/Resource/FusionTables/Table/Insert.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/FusionTables/Table/Insert.hs
@@ -0,0 +1,82 @@
+{-# LANGUAGE DataKinds          #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE FlexibleInstances  #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+{-# LANGUAGE TypeOperators      #-}
+
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
+
+-- |
+-- Module      : Network.Google.Resource.FusionTables.Table.Insert
+-- Copyright   : (c) 2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Creates a new table.
+--
+-- /See:/ <https://developers.google.com/fusiontables Fusion Tables API Reference> for @fusiontables.table.insert@.
+module Network.Google.Resource.FusionTables.Table.Insert
+    (
+    -- * REST Resource
+      TableInsertResource
+
+    -- * Creating a Request
+    , tableInsert
+    , TableInsert
+
+    -- * Request Lenses
+    , tiPayload
+    ) where
+
+import           Network.Google.FusionTables.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @fusiontables.table.insert@ method which the
+-- 'TableInsert' request conforms to.
+type TableInsertResource =
+     "fusiontables" :>
+       "v2" :>
+         "tables" :>
+           QueryParam "alt" AltJSON :>
+             ReqBody '[JSON] Table :> Post '[JSON] Table
+
+-- | Creates a new table.
+--
+-- /See:/ 'tableInsert' smart constructor.
+newtype TableInsert = TableInsert
+    { _tiPayload :: Table
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'TableInsert' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'tiPayload'
+tableInsert
+    :: Table -- ^ 'tiPayload'
+    -> TableInsert
+tableInsert pTiPayload_ =
+    TableInsert
+    { _tiPayload = pTiPayload_
+    }
+
+-- | Multipart request metadata.
+tiPayload :: Lens' TableInsert Table
+tiPayload
+  = lens _tiPayload (\ s a -> s{_tiPayload = a})
+
+instance GoogleRequest TableInsert where
+        type Rs TableInsert = Table
+        requestClient TableInsert{..}
+          = go (Just AltJSON) _tiPayload fusionTablesService
+          where go
+                  = buildClient (Proxy :: Proxy TableInsertResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/FusionTables/Table/List.hs b/gen/Network/Google/Resource/FusionTables/Table/List.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/FusionTables/Table/List.hs
@@ -0,0 +1,94 @@
+{-# 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.FusionTables.Table.List
+-- Copyright   : (c) 2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Retrieves a list of tables a user owns.
+--
+-- /See:/ <https://developers.google.com/fusiontables Fusion Tables API Reference> for @fusiontables.table.list@.
+module Network.Google.Resource.FusionTables.Table.List
+    (
+    -- * REST Resource
+      TableListResource
+
+    -- * Creating a Request
+    , tableList'
+    , TableList'
+
+    -- * Request Lenses
+    , tPageToken
+    , tMaxResults
+    ) where
+
+import           Network.Google.FusionTables.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @fusiontables.table.list@ method which the
+-- 'TableList'' request conforms to.
+type TableListResource =
+     "fusiontables" :>
+       "v2" :>
+         "tables" :>
+           QueryParam "pageToken" Text :>
+             QueryParam "maxResults" (Textual Word32) :>
+               QueryParam "alt" AltJSON :> Get '[JSON] TableList
+
+-- | Retrieves a list of tables a user owns.
+--
+-- /See:/ 'tableList'' smart constructor.
+data TableList' = TableList'
+    { _tPageToken  :: !(Maybe Text)
+    , _tMaxResults :: !(Maybe (Textual Word32))
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'TableList'' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'tPageToken'
+--
+-- * 'tMaxResults'
+tableList'
+    :: TableList'
+tableList' =
+    TableList'
+    { _tPageToken = Nothing
+    , _tMaxResults = Nothing
+    }
+
+-- | Continuation token specifying which result page to return.
+tPageToken :: Lens' TableList' (Maybe Text)
+tPageToken
+  = lens _tPageToken (\ s a -> s{_tPageToken = a})
+
+-- | Maximum number of tables to return. Default is 5.
+tMaxResults :: Lens' TableList' (Maybe Word32)
+tMaxResults
+  = lens _tMaxResults (\ s a -> s{_tMaxResults = a}) .
+      mapping _Coerce
+
+instance GoogleRequest TableList' where
+        type Rs TableList' = TableList
+        requestClient TableList'{..}
+          = go _tPageToken _tMaxResults (Just AltJSON)
+              fusionTablesService
+          where go
+                  = buildClient (Proxy :: Proxy TableListResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/FusionTables/Table/Patch.hs b/gen/Network/Google/Resource/FusionTables/Table/Patch.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/FusionTables/Table/Patch.hs
@@ -0,0 +1,115 @@
+{-# LANGUAGE DataKinds          #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE FlexibleInstances  #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+{-# LANGUAGE TypeOperators      #-}
+
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
+
+-- |
+-- Module      : Network.Google.Resource.FusionTables.Table.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 an existing table. Unless explicitly requested, only the name,
+-- description, and attribution will be updated. This method supports patch
+-- semantics.
+--
+-- /See:/ <https://developers.google.com/fusiontables Fusion Tables API Reference> for @fusiontables.table.patch@.
+module Network.Google.Resource.FusionTables.Table.Patch
+    (
+    -- * REST Resource
+      TablePatchResource
+
+    -- * Creating a Request
+    , tablePatch
+    , TablePatch
+
+    -- * Request Lenses
+    , tpPayload
+    , tpReplaceViewDefinition
+    , tpTableId
+    ) where
+
+import           Network.Google.FusionTables.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @fusiontables.table.patch@ method which the
+-- 'TablePatch' request conforms to.
+type TablePatchResource =
+     "fusiontables" :>
+       "v2" :>
+         "tables" :>
+           Capture "tableId" Text :>
+             QueryParam "replaceViewDefinition" Bool :>
+               QueryParam "alt" AltJSON :>
+                 ReqBody '[JSON] Table :> Patch '[JSON] Table
+
+-- | Updates an existing table. Unless explicitly requested, only the name,
+-- description, and attribution will be updated. This method supports patch
+-- semantics.
+--
+-- /See:/ 'tablePatch' smart constructor.
+data TablePatch = TablePatch
+    { _tpPayload               :: !Table
+    , _tpReplaceViewDefinition :: !(Maybe Bool)
+    , _tpTableId               :: !Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'TablePatch' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'tpPayload'
+--
+-- * 'tpReplaceViewDefinition'
+--
+-- * 'tpTableId'
+tablePatch
+    :: Table -- ^ 'tpPayload'
+    -> Text -- ^ 'tpTableId'
+    -> TablePatch
+tablePatch pTpPayload_ pTpTableId_ =
+    TablePatch
+    { _tpPayload = pTpPayload_
+    , _tpReplaceViewDefinition = Nothing
+    , _tpTableId = pTpTableId_
+    }
+
+-- | Multipart request metadata.
+tpPayload :: Lens' TablePatch Table
+tpPayload
+  = lens _tpPayload (\ s a -> s{_tpPayload = a})
+
+-- | Whether the view definition is also updated. The specified view
+-- definition replaces the existing one. Only a view can be updated with a
+-- new definition.
+tpReplaceViewDefinition :: Lens' TablePatch (Maybe Bool)
+tpReplaceViewDefinition
+  = lens _tpReplaceViewDefinition
+      (\ s a -> s{_tpReplaceViewDefinition = a})
+
+-- | ID of the table that is being updated.
+tpTableId :: Lens' TablePatch Text
+tpTableId
+  = lens _tpTableId (\ s a -> s{_tpTableId = a})
+
+instance GoogleRequest TablePatch where
+        type Rs TablePatch = Table
+        requestClient TablePatch{..}
+          = go _tpTableId _tpReplaceViewDefinition
+              (Just AltJSON)
+              _tpPayload
+              fusionTablesService
+          where go
+                  = buildClient (Proxy :: Proxy TablePatchResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/FusionTables/Table/ReplaceRows.hs b/gen/Network/Google/Resource/FusionTables/Table/ReplaceRows.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/FusionTables/Table/ReplaceRows.hs
@@ -0,0 +1,190 @@
+{-# 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.FusionTables.Table.ReplaceRows
+-- 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)
+--
+-- Replaces rows of an existing table. Current rows remain visible until
+-- all replacement rows are ready.
+--
+-- /See:/ <https://developers.google.com/fusiontables Fusion Tables API Reference> for @fusiontables.table.replaceRows@.
+module Network.Google.Resource.FusionTables.Table.ReplaceRows
+    (
+    -- * REST Resource
+      TableReplaceRowsResource
+
+    -- * Creating a Request
+    , tableReplaceRows
+    , TableReplaceRows
+
+    -- * Request Lenses
+    , trrStartLine
+    , trrEndLine
+    , trrTableId
+    , trrDelimiter
+    , trrEncoding
+    , trrIsStrict
+    ) where
+
+import           Network.Google.FusionTables.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @fusiontables.table.replaceRows@ method which the
+-- 'TableReplaceRows' request conforms to.
+type TableReplaceRowsResource =
+     "fusiontables" :>
+       "v2" :>
+         "tables" :>
+           Capture "tableId" Text :>
+             "replace" :>
+               QueryParam "startLine" (Textual Int32) :>
+                 QueryParam "endLine" (Textual Int32) :>
+                   QueryParam "delimiter" Text :>
+                     QueryParam "encoding" Text :>
+                       QueryParam "isStrict" Bool :>
+                         QueryParam "alt" AltJSON :> Post '[JSON] Task
+       :<|>
+       "upload" :>
+         "fusiontables" :>
+           "v2" :>
+             "tables" :>
+               Capture "tableId" Text :>
+                 "replace" :>
+                   QueryParam "startLine" (Textual Int32) :>
+                     QueryParam "endLine" (Textual Int32) :>
+                       QueryParam "delimiter" Text :>
+                         QueryParam "encoding" Text :>
+                           QueryParam "isStrict" Bool :>
+                             QueryParam "alt" AltJSON :>
+                               QueryParam "uploadType" AltMedia :>
+                                 ReqBody '[OctetStream] RequestBody :>
+                                   Post '[JSON] Task
+
+-- | Replaces rows of an existing table. Current rows remain visible until
+-- all replacement rows are ready.
+--
+-- /See:/ 'tableReplaceRows' smart constructor.
+data TableReplaceRows = TableReplaceRows
+    { _trrStartLine :: !(Maybe (Textual Int32))
+    , _trrEndLine   :: !(Maybe (Textual Int32))
+    , _trrTableId   :: !Text
+    , _trrDelimiter :: !(Maybe Text)
+    , _trrEncoding  :: !(Maybe Text)
+    , _trrIsStrict  :: !(Maybe Bool)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'TableReplaceRows' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'trrStartLine'
+--
+-- * 'trrEndLine'
+--
+-- * 'trrTableId'
+--
+-- * 'trrDelimiter'
+--
+-- * 'trrEncoding'
+--
+-- * 'trrIsStrict'
+tableReplaceRows
+    :: Text -- ^ 'trrTableId'
+    -> TableReplaceRows
+tableReplaceRows pTrrTableId_ =
+    TableReplaceRows
+    { _trrStartLine = Nothing
+    , _trrEndLine = Nothing
+    , _trrTableId = pTrrTableId_
+    , _trrDelimiter = Nothing
+    , _trrEncoding = Nothing
+    , _trrIsStrict = Nothing
+    }
+
+-- | The index of the first line from which to start importing, inclusive.
+-- Default is 0.
+trrStartLine :: Lens' TableReplaceRows (Maybe Int32)
+trrStartLine
+  = lens _trrStartLine (\ s a -> s{_trrStartLine = a})
+      . mapping _Coerce
+
+-- | The index of the line up to which data will be imported. Default is to
+-- import the entire file. If endLine is negative, it is an offset from the
+-- end of the file; the imported content will exclude the last endLine
+-- lines.
+trrEndLine :: Lens' TableReplaceRows (Maybe Int32)
+trrEndLine
+  = lens _trrEndLine (\ s a -> s{_trrEndLine = a}) .
+      mapping _Coerce
+
+-- | Table whose rows will be replaced.
+trrTableId :: Lens' TableReplaceRows Text
+trrTableId
+  = lens _trrTableId (\ s a -> s{_trrTableId = a})
+
+-- | The delimiter used to separate cell values. This can only consist of a
+-- single character. Default is ,.
+trrDelimiter :: Lens' TableReplaceRows (Maybe Text)
+trrDelimiter
+  = lens _trrDelimiter (\ s a -> s{_trrDelimiter = a})
+
+-- | The encoding of the content. Default is UTF-8. Use \'auto-detect\' if
+-- you are unsure of the encoding.
+trrEncoding :: Lens' TableReplaceRows (Maybe Text)
+trrEncoding
+  = lens _trrEncoding (\ s a -> s{_trrEncoding = a})
+
+-- | Whether the imported CSV must have the same number of column values for
+-- each row. If true, throws an exception if the CSV does not have the same
+-- number of columns. If false, rows with fewer column values will be
+-- padded with empty values. Default is true.
+trrIsStrict :: Lens' TableReplaceRows (Maybe Bool)
+trrIsStrict
+  = lens _trrIsStrict (\ s a -> s{_trrIsStrict = a})
+
+instance GoogleRequest TableReplaceRows where
+        type Rs TableReplaceRows = Task
+        requestClient TableReplaceRows{..}
+          = go _trrTableId _trrStartLine _trrEndLine
+              _trrDelimiter
+              _trrEncoding
+              _trrIsStrict
+              (Just AltJSON)
+              fusionTablesService
+          where go :<|> _
+                  = buildClient
+                      (Proxy :: Proxy TableReplaceRowsResource)
+                      mempty
+
+instance GoogleRequest (MediaUpload TableReplaceRows)
+         where
+        type Rs (MediaUpload TableReplaceRows) = Task
+        requestClient (MediaUpload TableReplaceRows{..} body)
+          = go _trrTableId _trrStartLine _trrEndLine
+              _trrDelimiter
+              _trrEncoding
+              _trrIsStrict
+              (Just AltJSON)
+              (Just AltMedia)
+              body
+              fusionTablesService
+          where _ :<|> go
+                  = buildClient
+                      (Proxy :: Proxy TableReplaceRowsResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/FusionTables/Table/Update.hs b/gen/Network/Google/Resource/FusionTables/Table/Update.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/FusionTables/Table/Update.hs
@@ -0,0 +1,113 @@
+{-# LANGUAGE DataKinds          #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE FlexibleInstances  #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+{-# LANGUAGE TypeOperators      #-}
+
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
+
+-- |
+-- Module      : Network.Google.Resource.FusionTables.Table.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 an existing table. Unless explicitly requested, only the name,
+-- description, and attribution will be updated.
+--
+-- /See:/ <https://developers.google.com/fusiontables Fusion Tables API Reference> for @fusiontables.table.update@.
+module Network.Google.Resource.FusionTables.Table.Update
+    (
+    -- * REST Resource
+      TableUpdateResource
+
+    -- * Creating a Request
+    , tableUpdate
+    , TableUpdate
+
+    -- * Request Lenses
+    , tabPayload
+    , tabReplaceViewDefinition
+    , tabTableId
+    ) where
+
+import           Network.Google.FusionTables.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @fusiontables.table.update@ method which the
+-- 'TableUpdate' request conforms to.
+type TableUpdateResource =
+     "fusiontables" :>
+       "v2" :>
+         "tables" :>
+           Capture "tableId" Text :>
+             QueryParam "replaceViewDefinition" Bool :>
+               QueryParam "alt" AltJSON :>
+                 ReqBody '[JSON] Table :> Put '[JSON] Table
+
+-- | Updates an existing table. Unless explicitly requested, only the name,
+-- description, and attribution will be updated.
+--
+-- /See:/ 'tableUpdate' smart constructor.
+data TableUpdate = TableUpdate
+    { _tabPayload               :: !Table
+    , _tabReplaceViewDefinition :: !(Maybe Bool)
+    , _tabTableId               :: !Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'TableUpdate' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'tabPayload'
+--
+-- * 'tabReplaceViewDefinition'
+--
+-- * 'tabTableId'
+tableUpdate
+    :: Table -- ^ 'tabPayload'
+    -> Text -- ^ 'tabTableId'
+    -> TableUpdate
+tableUpdate pTabPayload_ pTabTableId_ =
+    TableUpdate
+    { _tabPayload = pTabPayload_
+    , _tabReplaceViewDefinition = Nothing
+    , _tabTableId = pTabTableId_
+    }
+
+-- | Multipart request metadata.
+tabPayload :: Lens' TableUpdate Table
+tabPayload
+  = lens _tabPayload (\ s a -> s{_tabPayload = a})
+
+-- | Whether the view definition is also updated. The specified view
+-- definition replaces the existing one. Only a view can be updated with a
+-- new definition.
+tabReplaceViewDefinition :: Lens' TableUpdate (Maybe Bool)
+tabReplaceViewDefinition
+  = lens _tabReplaceViewDefinition
+      (\ s a -> s{_tabReplaceViewDefinition = a})
+
+-- | ID of the table that is being updated.
+tabTableId :: Lens' TableUpdate Text
+tabTableId
+  = lens _tabTableId (\ s a -> s{_tabTableId = a})
+
+instance GoogleRequest TableUpdate where
+        type Rs TableUpdate = Table
+        requestClient TableUpdate{..}
+          = go _tabTableId _tabReplaceViewDefinition
+              (Just AltJSON)
+              _tabPayload
+              fusionTablesService
+          where go
+                  = buildClient (Proxy :: Proxy TableUpdateResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/FusionTables/Task/Delete.hs b/gen/Network/Google/Resource/FusionTables/Task/Delete.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/FusionTables/Task/Delete.hs
@@ -0,0 +1,97 @@
+{-# LANGUAGE DataKinds          #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE FlexibleInstances  #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+{-# LANGUAGE TypeOperators      #-}
+
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
+
+-- |
+-- Module      : Network.Google.Resource.FusionTables.Task.Delete
+-- Copyright   : (c) 2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Deletes a specific task by its ID, unless that task has already started
+-- running.
+--
+-- /See:/ <https://developers.google.com/fusiontables Fusion Tables API Reference> for @fusiontables.task.delete@.
+module Network.Google.Resource.FusionTables.Task.Delete
+    (
+    -- * REST Resource
+      TaskDeleteResource
+
+    -- * Creating a Request
+    , taskDelete
+    , TaskDelete
+
+    -- * Request Lenses
+    , tdTaskId
+    , tdTableId
+    ) where
+
+import           Network.Google.FusionTables.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @fusiontables.task.delete@ method which the
+-- 'TaskDelete' request conforms to.
+type TaskDeleteResource =
+     "fusiontables" :>
+       "v2" :>
+         "tables" :>
+           Capture "tableId" Text :>
+             "tasks" :>
+               Capture "taskId" Text :>
+                 QueryParam "alt" AltJSON :> Delete '[JSON] ()
+
+-- | Deletes a specific task by its ID, unless that task has already started
+-- running.
+--
+-- /See:/ 'taskDelete' smart constructor.
+data TaskDelete = TaskDelete
+    { _tdTaskId  :: !Text
+    , _tdTableId :: !Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'TaskDelete' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'tdTaskId'
+--
+-- * 'tdTableId'
+taskDelete
+    :: Text -- ^ 'tdTaskId'
+    -> Text -- ^ 'tdTableId'
+    -> TaskDelete
+taskDelete pTdTaskId_ pTdTableId_ =
+    TaskDelete
+    { _tdTaskId = pTdTaskId_
+    , _tdTableId = pTdTableId_
+    }
+
+-- | The identifier of the task to delete.
+tdTaskId :: Lens' TaskDelete Text
+tdTaskId = lens _tdTaskId (\ s a -> s{_tdTaskId = a})
+
+-- | Table from which the task is being deleted.
+tdTableId :: Lens' TaskDelete Text
+tdTableId
+  = lens _tdTableId (\ s a -> s{_tdTableId = a})
+
+instance GoogleRequest TaskDelete where
+        type Rs TaskDelete = ()
+        requestClient TaskDelete{..}
+          = go _tdTableId _tdTaskId (Just AltJSON)
+              fusionTablesService
+          where go
+                  = buildClient (Proxy :: Proxy TaskDeleteResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/FusionTables/Task/Get.hs b/gen/Network/Google/Resource/FusionTables/Task/Get.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/FusionTables/Task/Get.hs
@@ -0,0 +1,95 @@
+{-# 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.FusionTables.Task.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 specific task by its ID.
+--
+-- /See:/ <https://developers.google.com/fusiontables Fusion Tables API Reference> for @fusiontables.task.get@.
+module Network.Google.Resource.FusionTables.Task.Get
+    (
+    -- * REST Resource
+      TaskGetResource
+
+    -- * Creating a Request
+    , taskGet
+    , TaskGet
+
+    -- * Request Lenses
+    , tggTaskId
+    , tggTableId
+    ) where
+
+import           Network.Google.FusionTables.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @fusiontables.task.get@ method which the
+-- 'TaskGet' request conforms to.
+type TaskGetResource =
+     "fusiontables" :>
+       "v2" :>
+         "tables" :>
+           Capture "tableId" Text :>
+             "tasks" :>
+               Capture "taskId" Text :>
+                 QueryParam "alt" AltJSON :> Get '[JSON] Task
+
+-- | Retrieves a specific task by its ID.
+--
+-- /See:/ 'taskGet' smart constructor.
+data TaskGet = TaskGet
+    { _tggTaskId  :: !Text
+    , _tggTableId :: !Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'TaskGet' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'tggTaskId'
+--
+-- * 'tggTableId'
+taskGet
+    :: Text -- ^ 'tggTaskId'
+    -> Text -- ^ 'tggTableId'
+    -> TaskGet
+taskGet pTggTaskId_ pTggTableId_ =
+    TaskGet
+    { _tggTaskId = pTggTaskId_
+    , _tggTableId = pTggTableId_
+    }
+
+-- | The identifier of the task to get.
+tggTaskId :: Lens' TaskGet Text
+tggTaskId
+  = lens _tggTaskId (\ s a -> s{_tggTaskId = a})
+
+-- | Table to which the task belongs.
+tggTableId :: Lens' TaskGet Text
+tggTableId
+  = lens _tggTableId (\ s a -> s{_tggTableId = a})
+
+instance GoogleRequest TaskGet where
+        type Rs TaskGet = Task
+        requestClient TaskGet{..}
+          = go _tggTableId _tggTaskId (Just AltJSON)
+              fusionTablesService
+          where go
+                  = buildClient (Proxy :: Proxy TaskGetResource) mempty
diff --git a/gen/Network/Google/Resource/FusionTables/Task/List.hs b/gen/Network/Google/Resource/FusionTables/Task/List.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/FusionTables/Task/List.hs
@@ -0,0 +1,121 @@
+{-# LANGUAGE DataKinds          #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE FlexibleInstances  #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+{-# LANGUAGE TypeOperators      #-}
+
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
+
+-- |
+-- Module      : Network.Google.Resource.FusionTables.Task.List
+-- Copyright   : (c) 2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Retrieves a list of tasks.
+--
+-- /See:/ <https://developers.google.com/fusiontables Fusion Tables API Reference> for @fusiontables.task.list@.
+module Network.Google.Resource.FusionTables.Task.List
+    (
+    -- * REST Resource
+      TaskListResource
+
+    -- * Creating a Request
+    , taskList'
+    , TaskList'
+
+    -- * Request Lenses
+    , tlPageToken
+    , tlTableId
+    , tlStartIndex
+    , tlMaxResults
+    ) where
+
+import           Network.Google.FusionTables.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @fusiontables.task.list@ method which the
+-- 'TaskList'' request conforms to.
+type TaskListResource =
+     "fusiontables" :>
+       "v2" :>
+         "tables" :>
+           Capture "tableId" Text :>
+             "tasks" :>
+               QueryParam "pageToken" Text :>
+                 QueryParam "startIndex" (Textual Word32) :>
+                   QueryParam "maxResults" (Textual Word32) :>
+                     QueryParam "alt" AltJSON :> Get '[JSON] TaskList
+
+-- | Retrieves a list of tasks.
+--
+-- /See:/ 'taskList'' smart constructor.
+data TaskList' = TaskList'
+    { _tlPageToken  :: !(Maybe Text)
+    , _tlTableId    :: !Text
+    , _tlStartIndex :: !(Maybe (Textual Word32))
+    , _tlMaxResults :: !(Maybe (Textual Word32))
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'TaskList'' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'tlPageToken'
+--
+-- * 'tlTableId'
+--
+-- * 'tlStartIndex'
+--
+-- * 'tlMaxResults'
+taskList'
+    :: Text -- ^ 'tlTableId'
+    -> TaskList'
+taskList' pTlTableId_ =
+    TaskList'
+    { _tlPageToken = Nothing
+    , _tlTableId = pTlTableId_
+    , _tlStartIndex = Nothing
+    , _tlMaxResults = Nothing
+    }
+
+-- | Continuation token specifying which result page to return.
+tlPageToken :: Lens' TaskList' (Maybe Text)
+tlPageToken
+  = lens _tlPageToken (\ s a -> s{_tlPageToken = a})
+
+-- | Table whose tasks are being listed.
+tlTableId :: Lens' TaskList' Text
+tlTableId
+  = lens _tlTableId (\ s a -> s{_tlTableId = a})
+
+-- | Index of the first result returned in the current page.
+tlStartIndex :: Lens' TaskList' (Maybe Word32)
+tlStartIndex
+  = lens _tlStartIndex (\ s a -> s{_tlStartIndex = a})
+      . mapping _Coerce
+
+-- | Maximum number of tasks to return. Default is 5.
+tlMaxResults :: Lens' TaskList' (Maybe Word32)
+tlMaxResults
+  = lens _tlMaxResults (\ s a -> s{_tlMaxResults = a})
+      . mapping _Coerce
+
+instance GoogleRequest TaskList' where
+        type Rs TaskList' = TaskList
+        requestClient TaskList'{..}
+          = go _tlTableId _tlPageToken _tlStartIndex
+              _tlMaxResults
+              (Just AltJSON)
+              fusionTablesService
+          where go
+                  = buildClient (Proxy :: Proxy TaskListResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/FusionTables/Template/Delete.hs b/gen/Network/Google/Resource/FusionTables/Template/Delete.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/FusionTables/Template/Delete.hs
@@ -0,0 +1,96 @@
+{-# LANGUAGE DataKinds          #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE FlexibleInstances  #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+{-# LANGUAGE TypeOperators      #-}
+
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
+
+-- |
+-- Module      : Network.Google.Resource.FusionTables.Template.Delete
+-- Copyright   : (c) 2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Deletes a template
+--
+-- /See:/ <https://developers.google.com/fusiontables Fusion Tables API Reference> for @fusiontables.template.delete@.
+module Network.Google.Resource.FusionTables.Template.Delete
+    (
+    -- * REST Resource
+      TemplateDeleteResource
+
+    -- * Creating a Request
+    , templateDelete
+    , TemplateDelete
+
+    -- * Request Lenses
+    , tTemplateId
+    , tTableId
+    ) where
+
+import           Network.Google.FusionTables.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @fusiontables.template.delete@ method which the
+-- 'TemplateDelete' request conforms to.
+type TemplateDeleteResource =
+     "fusiontables" :>
+       "v2" :>
+         "tables" :>
+           Capture "tableId" Text :>
+             "templates" :>
+               Capture "templateId" (Textual Int32) :>
+                 QueryParam "alt" AltJSON :> Delete '[JSON] ()
+
+-- | Deletes a template
+--
+-- /See:/ 'templateDelete' smart constructor.
+data TemplateDelete = TemplateDelete
+    { _tTemplateId :: !(Textual Int32)
+    , _tTableId    :: !Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'TemplateDelete' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'tTemplateId'
+--
+-- * 'tTableId'
+templateDelete
+    :: Int32 -- ^ 'tTemplateId'
+    -> Text -- ^ 'tTableId'
+    -> TemplateDelete
+templateDelete pTTemplateId_ pTTableId_ =
+    TemplateDelete
+    { _tTemplateId = _Coerce # pTTemplateId_
+    , _tTableId = pTTableId_
+    }
+
+-- | Identifier for the template which is being deleted
+tTemplateId :: Lens' TemplateDelete Int32
+tTemplateId
+  = lens _tTemplateId (\ s a -> s{_tTemplateId = a}) .
+      _Coerce
+
+-- | Table from which the template is being deleted
+tTableId :: Lens' TemplateDelete Text
+tTableId = lens _tTableId (\ s a -> s{_tTableId = a})
+
+instance GoogleRequest TemplateDelete where
+        type Rs TemplateDelete = ()
+        requestClient TemplateDelete{..}
+          = go _tTableId _tTemplateId (Just AltJSON)
+              fusionTablesService
+          where go
+                  = buildClient (Proxy :: Proxy TemplateDeleteResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/FusionTables/Template/Get.hs b/gen/Network/Google/Resource/FusionTables/Template/Get.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/FusionTables/Template/Get.hs
@@ -0,0 +1,98 @@
+{-# LANGUAGE DataKinds          #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE FlexibleInstances  #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+{-# LANGUAGE TypeOperators      #-}
+
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
+
+-- |
+-- Module      : Network.Google.Resource.FusionTables.Template.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 specific template by its id
+--
+-- /See:/ <https://developers.google.com/fusiontables Fusion Tables API Reference> for @fusiontables.template.get@.
+module Network.Google.Resource.FusionTables.Template.Get
+    (
+    -- * REST Resource
+      TemplateGetResource
+
+    -- * Creating a Request
+    , templateGet
+    , TemplateGet
+
+    -- * Request Lenses
+    , temeTemplateId
+    , temeTableId
+    ) where
+
+import           Network.Google.FusionTables.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @fusiontables.template.get@ method which the
+-- 'TemplateGet' request conforms to.
+type TemplateGetResource =
+     "fusiontables" :>
+       "v2" :>
+         "tables" :>
+           Capture "tableId" Text :>
+             "templates" :>
+               Capture "templateId" (Textual Int32) :>
+                 QueryParam "alt" AltJSON :> Get '[JSON] Template
+
+-- | Retrieves a specific template by its id
+--
+-- /See:/ 'templateGet' smart constructor.
+data TemplateGet = TemplateGet
+    { _temeTemplateId :: !(Textual Int32)
+    , _temeTableId    :: !Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'TemplateGet' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'temeTemplateId'
+--
+-- * 'temeTableId'
+templateGet
+    :: Int32 -- ^ 'temeTemplateId'
+    -> Text -- ^ 'temeTableId'
+    -> TemplateGet
+templateGet pTemeTemplateId_ pTemeTableId_ =
+    TemplateGet
+    { _temeTemplateId = _Coerce # pTemeTemplateId_
+    , _temeTableId = pTemeTableId_
+    }
+
+-- | Identifier for the template that is being requested
+temeTemplateId :: Lens' TemplateGet Int32
+temeTemplateId
+  = lens _temeTemplateId
+      (\ s a -> s{_temeTemplateId = a})
+      . _Coerce
+
+-- | Table to which the template belongs
+temeTableId :: Lens' TemplateGet Text
+temeTableId
+  = lens _temeTableId (\ s a -> s{_temeTableId = a})
+
+instance GoogleRequest TemplateGet where
+        type Rs TemplateGet = Template
+        requestClient TemplateGet{..}
+          = go _temeTableId _temeTemplateId (Just AltJSON)
+              fusionTablesService
+          where go
+                  = buildClient (Proxy :: Proxy TemplateGetResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/FusionTables/Template/Insert.hs b/gen/Network/Google/Resource/FusionTables/Template/Insert.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/FusionTables/Template/Insert.hs
@@ -0,0 +1,96 @@
+{-# LANGUAGE DataKinds          #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE FlexibleInstances  #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+{-# LANGUAGE TypeOperators      #-}
+
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
+
+-- |
+-- Module      : Network.Google.Resource.FusionTables.Template.Insert
+-- Copyright   : (c) 2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Creates a new template for the table.
+--
+-- /See:/ <https://developers.google.com/fusiontables Fusion Tables API Reference> for @fusiontables.template.insert@.
+module Network.Google.Resource.FusionTables.Template.Insert
+    (
+    -- * REST Resource
+      TemplateInsertResource
+
+    -- * Creating a Request
+    , templateInsert
+    , TemplateInsert
+
+    -- * Request Lenses
+    , temPayload
+    , temTableId
+    ) where
+
+import           Network.Google.FusionTables.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @fusiontables.template.insert@ method which the
+-- 'TemplateInsert' request conforms to.
+type TemplateInsertResource =
+     "fusiontables" :>
+       "v2" :>
+         "tables" :>
+           Capture "tableId" Text :>
+             "templates" :>
+               QueryParam "alt" AltJSON :>
+                 ReqBody '[JSON] Template :> Post '[JSON] Template
+
+-- | Creates a new template for the table.
+--
+-- /See:/ 'templateInsert' smart constructor.
+data TemplateInsert = TemplateInsert
+    { _temPayload :: !Template
+    , _temTableId :: !Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'TemplateInsert' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'temPayload'
+--
+-- * 'temTableId'
+templateInsert
+    :: Template -- ^ 'temPayload'
+    -> Text -- ^ 'temTableId'
+    -> TemplateInsert
+templateInsert pTemPayload_ pTemTableId_ =
+    TemplateInsert
+    { _temPayload = pTemPayload_
+    , _temTableId = pTemTableId_
+    }
+
+-- | Multipart request metadata.
+temPayload :: Lens' TemplateInsert Template
+temPayload
+  = lens _temPayload (\ s a -> s{_temPayload = a})
+
+-- | Table for which a new template is being created
+temTableId :: Lens' TemplateInsert Text
+temTableId
+  = lens _temTableId (\ s a -> s{_temTableId = a})
+
+instance GoogleRequest TemplateInsert where
+        type Rs TemplateInsert = Template
+        requestClient TemplateInsert{..}
+          = go _temTableId (Just AltJSON) _temPayload
+              fusionTablesService
+          where go
+                  = buildClient (Proxy :: Proxy TemplateInsertResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/FusionTables/Template/List.hs b/gen/Network/Google/Resource/FusionTables/Template/List.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/FusionTables/Template/List.hs
@@ -0,0 +1,109 @@
+{-# 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.FusionTables.Template.List
+-- Copyright   : (c) 2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Retrieves a list of templates.
+--
+-- /See:/ <https://developers.google.com/fusiontables Fusion Tables API Reference> for @fusiontables.template.list@.
+module Network.Google.Resource.FusionTables.Template.List
+    (
+    -- * REST Resource
+      TemplateListResource
+
+    -- * Creating a Request
+    , templateList'
+    , TemplateList'
+
+    -- * Request Lenses
+    , tllPageToken
+    , tllTableId
+    , tllMaxResults
+    ) where
+
+import           Network.Google.FusionTables.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @fusiontables.template.list@ method which the
+-- 'TemplateList'' request conforms to.
+type TemplateListResource =
+     "fusiontables" :>
+       "v2" :>
+         "tables" :>
+           Capture "tableId" Text :>
+             "templates" :>
+               QueryParam "pageToken" Text :>
+                 QueryParam "maxResults" (Textual Word32) :>
+                   QueryParam "alt" AltJSON :> Get '[JSON] TemplateList
+
+-- | Retrieves a list of templates.
+--
+-- /See:/ 'templateList'' smart constructor.
+data TemplateList' = TemplateList'
+    { _tllPageToken  :: !(Maybe Text)
+    , _tllTableId    :: !Text
+    , _tllMaxResults :: !(Maybe (Textual Word32))
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'TemplateList'' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'tllPageToken'
+--
+-- * 'tllTableId'
+--
+-- * 'tllMaxResults'
+templateList'
+    :: Text -- ^ 'tllTableId'
+    -> TemplateList'
+templateList' pTllTableId_ =
+    TemplateList'
+    { _tllPageToken = Nothing
+    , _tllTableId = pTllTableId_
+    , _tllMaxResults = Nothing
+    }
+
+-- | Continuation token specifying which results page to return. Optional.
+tllPageToken :: Lens' TemplateList' (Maybe Text)
+tllPageToken
+  = lens _tllPageToken (\ s a -> s{_tllPageToken = a})
+
+-- | Identifier for the table whose templates are being requested
+tllTableId :: Lens' TemplateList' Text
+tllTableId
+  = lens _tllTableId (\ s a -> s{_tllTableId = a})
+
+-- | Maximum number of templates to return. Optional. Default is 5.
+tllMaxResults :: Lens' TemplateList' (Maybe Word32)
+tllMaxResults
+  = lens _tllMaxResults
+      (\ s a -> s{_tllMaxResults = a})
+      . mapping _Coerce
+
+instance GoogleRequest TemplateList' where
+        type Rs TemplateList' = TemplateList
+        requestClient TemplateList'{..}
+          = go _tllTableId _tllPageToken _tllMaxResults
+              (Just AltJSON)
+              fusionTablesService
+          where go
+                  = buildClient (Proxy :: Proxy TemplateListResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/FusionTables/Template/Patch.hs b/gen/Network/Google/Resource/FusionTables/Template/Patch.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/FusionTables/Template/Patch.hs
@@ -0,0 +1,111 @@
+{-# 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.FusionTables.Template.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 an existing template. This method supports patch semantics.
+--
+-- /See:/ <https://developers.google.com/fusiontables Fusion Tables API Reference> for @fusiontables.template.patch@.
+module Network.Google.Resource.FusionTables.Template.Patch
+    (
+    -- * REST Resource
+      TemplatePatchResource
+
+    -- * Creating a Request
+    , templatePatch
+    , TemplatePatch
+
+    -- * Request Lenses
+    , tppTemplateId
+    , tppPayload
+    , tppTableId
+    ) where
+
+import           Network.Google.FusionTables.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @fusiontables.template.patch@ method which the
+-- 'TemplatePatch' request conforms to.
+type TemplatePatchResource =
+     "fusiontables" :>
+       "v2" :>
+         "tables" :>
+           Capture "tableId" Text :>
+             "templates" :>
+               Capture "templateId" (Textual Int32) :>
+                 QueryParam "alt" AltJSON :>
+                   ReqBody '[JSON] Template :> Patch '[JSON] Template
+
+-- | Updates an existing template. This method supports patch semantics.
+--
+-- /See:/ 'templatePatch' smart constructor.
+data TemplatePatch = TemplatePatch
+    { _tppTemplateId :: !(Textual Int32)
+    , _tppPayload    :: !Template
+    , _tppTableId    :: !Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'TemplatePatch' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'tppTemplateId'
+--
+-- * 'tppPayload'
+--
+-- * 'tppTableId'
+templatePatch
+    :: Int32 -- ^ 'tppTemplateId'
+    -> Template -- ^ 'tppPayload'
+    -> Text -- ^ 'tppTableId'
+    -> TemplatePatch
+templatePatch pTppTemplateId_ pTppPayload_ pTppTableId_ =
+    TemplatePatch
+    { _tppTemplateId = _Coerce # pTppTemplateId_
+    , _tppPayload = pTppPayload_
+    , _tppTableId = pTppTableId_
+    }
+
+-- | Identifier for the template that is being updated
+tppTemplateId :: Lens' TemplatePatch Int32
+tppTemplateId
+  = lens _tppTemplateId
+      (\ s a -> s{_tppTemplateId = a})
+      . _Coerce
+
+-- | Multipart request metadata.
+tppPayload :: Lens' TemplatePatch Template
+tppPayload
+  = lens _tppPayload (\ s a -> s{_tppPayload = a})
+
+-- | Table to which the updated template belongs
+tppTableId :: Lens' TemplatePatch Text
+tppTableId
+  = lens _tppTableId (\ s a -> s{_tppTableId = a})
+
+instance GoogleRequest TemplatePatch where
+        type Rs TemplatePatch = Template
+        requestClient TemplatePatch{..}
+          = go _tppTableId _tppTemplateId (Just AltJSON)
+              _tppPayload
+              fusionTablesService
+          where go
+                  = buildClient (Proxy :: Proxy TemplatePatchResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/FusionTables/Template/Update.hs b/gen/Network/Google/Resource/FusionTables/Template/Update.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/FusionTables/Template/Update.hs
@@ -0,0 +1,110 @@
+{-# 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.FusionTables.Template.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 an existing template
+--
+-- /See:/ <https://developers.google.com/fusiontables Fusion Tables API Reference> for @fusiontables.template.update@.
+module Network.Google.Resource.FusionTables.Template.Update
+    (
+    -- * REST Resource
+      TemplateUpdateResource
+
+    -- * Creating a Request
+    , templateUpdate
+    , TemplateUpdate
+
+    -- * Request Lenses
+    , tuTemplateId
+    , tuPayload
+    , tuTableId
+    ) where
+
+import           Network.Google.FusionTables.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @fusiontables.template.update@ method which the
+-- 'TemplateUpdate' request conforms to.
+type TemplateUpdateResource =
+     "fusiontables" :>
+       "v2" :>
+         "tables" :>
+           Capture "tableId" Text :>
+             "templates" :>
+               Capture "templateId" (Textual Int32) :>
+                 QueryParam "alt" AltJSON :>
+                   ReqBody '[JSON] Template :> Put '[JSON] Template
+
+-- | Updates an existing template
+--
+-- /See:/ 'templateUpdate' smart constructor.
+data TemplateUpdate = TemplateUpdate
+    { _tuTemplateId :: !(Textual Int32)
+    , _tuPayload    :: !Template
+    , _tuTableId    :: !Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'TemplateUpdate' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'tuTemplateId'
+--
+-- * 'tuPayload'
+--
+-- * 'tuTableId'
+templateUpdate
+    :: Int32 -- ^ 'tuTemplateId'
+    -> Template -- ^ 'tuPayload'
+    -> Text -- ^ 'tuTableId'
+    -> TemplateUpdate
+templateUpdate pTuTemplateId_ pTuPayload_ pTuTableId_ =
+    TemplateUpdate
+    { _tuTemplateId = _Coerce # pTuTemplateId_
+    , _tuPayload = pTuPayload_
+    , _tuTableId = pTuTableId_
+    }
+
+-- | Identifier for the template that is being updated
+tuTemplateId :: Lens' TemplateUpdate Int32
+tuTemplateId
+  = lens _tuTemplateId (\ s a -> s{_tuTemplateId = a})
+      . _Coerce
+
+-- | Multipart request metadata.
+tuPayload :: Lens' TemplateUpdate Template
+tuPayload
+  = lens _tuPayload (\ s a -> s{_tuPayload = a})
+
+-- | Table to which the updated template belongs
+tuTableId :: Lens' TemplateUpdate Text
+tuTableId
+  = lens _tuTableId (\ s a -> s{_tuTableId = a})
+
+instance GoogleRequest TemplateUpdate where
+        type Rs TemplateUpdate = Template
+        requestClient TemplateUpdate{..}
+          = go _tuTableId _tuTemplateId (Just AltJSON)
+              _tuPayload
+              fusionTablesService
+          where go
+                  = buildClient (Proxy :: Proxy TemplateUpdateResource)
+                      mempty
diff --git a/gogol-fusiontables.cabal b/gogol-fusiontables.cabal
new file mode 100644
--- /dev/null
+++ b/gogol-fusiontables.cabal
@@ -0,0 +1,78 @@
+name:                  gogol-fusiontables
+version:               0.0.1
+synopsis:              Google Fusion Tables 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:
+    API for working with Fusion Tables data.
+    .
+    /Warning:/ This is an experimental prototype/preview release which is still
+    under exploratory development and not intended for public use, caveat emptor!
+    .
+    This library is compatible with version @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.FusionTables
+        , Network.Google.FusionTables.Types
+        , Network.Google.Resource.FusionTables.Column.Delete
+        , Network.Google.Resource.FusionTables.Column.Get
+        , Network.Google.Resource.FusionTables.Column.Insert
+        , Network.Google.Resource.FusionTables.Column.List
+        , Network.Google.Resource.FusionTables.Column.Patch
+        , Network.Google.Resource.FusionTables.Column.Update
+        , Network.Google.Resource.FusionTables.Query.SQL
+        , Network.Google.Resource.FusionTables.Query.SQLGet
+        , Network.Google.Resource.FusionTables.Style.Delete
+        , Network.Google.Resource.FusionTables.Style.Get
+        , Network.Google.Resource.FusionTables.Style.Insert
+        , Network.Google.Resource.FusionTables.Style.List
+        , Network.Google.Resource.FusionTables.Style.Patch
+        , Network.Google.Resource.FusionTables.Style.Update
+        , Network.Google.Resource.FusionTables.Table.Copy
+        , Network.Google.Resource.FusionTables.Table.Delete
+        , Network.Google.Resource.FusionTables.Table.Get
+        , Network.Google.Resource.FusionTables.Table.ImportRows
+        , Network.Google.Resource.FusionTables.Table.ImportTable
+        , Network.Google.Resource.FusionTables.Table.Insert
+        , Network.Google.Resource.FusionTables.Table.List
+        , Network.Google.Resource.FusionTables.Table.Patch
+        , Network.Google.Resource.FusionTables.Table.ReplaceRows
+        , Network.Google.Resource.FusionTables.Table.Update
+        , Network.Google.Resource.FusionTables.Task.Delete
+        , Network.Google.Resource.FusionTables.Task.Get
+        , Network.Google.Resource.FusionTables.Task.List
+        , Network.Google.Resource.FusionTables.Template.Delete
+        , Network.Google.Resource.FusionTables.Template.Get
+        , Network.Google.Resource.FusionTables.Template.Insert
+        , Network.Google.Resource.FusionTables.Template.List
+        , Network.Google.Resource.FusionTables.Template.Patch
+        , Network.Google.Resource.FusionTables.Template.Update
+
+    other-modules:
+          Network.Google.FusionTables.Types.Product
+        , Network.Google.FusionTables.Types.Sum
+
+    build-depends:
+          gogol-core == 0.0.1.*
+        , base       >= 4.7 && < 5
