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-maps-engine
+
+* [Version](#version)
+* [Description](#description)
+* [Contribute](#contribute)
+* [Licence](#licence)
+
+
+## Version
+
+`0.0.1`
+
+
+## Description
+
+A client library for the Google Maps Engine.
+
+
+## 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-maps-engine` 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/MapsEngine.hs b/gen/Network/Google/MapsEngine.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/MapsEngine.hs
@@ -0,0 +1,1161 @@
+{-# LANGUAGE DataKinds         #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# LANGUAGE TypeOperators     #-}
+
+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+
+-- |
+-- Module      : Network.Google.MapsEngine
+-- 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)
+--
+-- The Google Maps Engine API allows developers to store and query
+-- geospatial vector and raster data.
+--
+-- /See:/ <https://developers.google.com/maps-engine/ Google Maps Engine API Reference>
+module Network.Google.MapsEngine
+    (
+    -- * Service Configuration
+      mapsEngineService
+
+    -- * API Declaration
+    , MapsEngineAPI
+
+    -- * Resources
+
+    -- ** mapsengine.assets.get
+    , module Network.Google.Resource.MapsEngine.Assets.Get
+
+    -- ** mapsengine.assets.list
+    , module Network.Google.Resource.MapsEngine.Assets.List
+
+    -- ** mapsengine.assets.parents.list
+    , module Network.Google.Resource.MapsEngine.Assets.Parents.List
+
+    -- ** mapsengine.assets.permissions.list
+    , module Network.Google.Resource.MapsEngine.Assets.Permissions.List
+
+    -- ** mapsengine.layers.cancelProcessing
+    , module Network.Google.Resource.MapsEngine.Layers.CancelProcessing
+
+    -- ** mapsengine.layers.create
+    , module Network.Google.Resource.MapsEngine.Layers.Create
+
+    -- ** mapsengine.layers.delete
+    , module Network.Google.Resource.MapsEngine.Layers.Delete
+
+    -- ** mapsengine.layers.get
+    , module Network.Google.Resource.MapsEngine.Layers.Get
+
+    -- ** mapsengine.layers.getPublished
+    , module Network.Google.Resource.MapsEngine.Layers.GetPublished
+
+    -- ** mapsengine.layers.list
+    , module Network.Google.Resource.MapsEngine.Layers.List
+
+    -- ** mapsengine.layers.listPublished
+    , module Network.Google.Resource.MapsEngine.Layers.ListPublished
+
+    -- ** mapsengine.layers.parents.list
+    , module Network.Google.Resource.MapsEngine.Layers.Parents.List
+
+    -- ** mapsengine.layers.patch
+    , module Network.Google.Resource.MapsEngine.Layers.Patch
+
+    -- ** mapsengine.layers.permissions.batchDelete
+    , module Network.Google.Resource.MapsEngine.Layers.Permissions.BatchDelete
+
+    -- ** mapsengine.layers.permissions.batchUpdate
+    , module Network.Google.Resource.MapsEngine.Layers.Permissions.BatchUpdate
+
+    -- ** mapsengine.layers.permissions.list
+    , module Network.Google.Resource.MapsEngine.Layers.Permissions.List
+
+    -- ** mapsengine.layers.process
+    , module Network.Google.Resource.MapsEngine.Layers.Process
+
+    -- ** mapsengine.layers.publish
+    , module Network.Google.Resource.MapsEngine.Layers.Publish
+
+    -- ** mapsengine.layers.unpublish
+    , module Network.Google.Resource.MapsEngine.Layers.UnPublish
+
+    -- ** mapsengine.maps.create
+    , module Network.Google.Resource.MapsEngine.Maps.Create
+
+    -- ** mapsengine.maps.delete
+    , module Network.Google.Resource.MapsEngine.Maps.Delete
+
+    -- ** mapsengine.maps.get
+    , module Network.Google.Resource.MapsEngine.Maps.Get
+
+    -- ** mapsengine.maps.getPublished
+    , module Network.Google.Resource.MapsEngine.Maps.GetPublished
+
+    -- ** mapsengine.maps.list
+    , module Network.Google.Resource.MapsEngine.Maps.List
+
+    -- ** mapsengine.maps.listPublished
+    , module Network.Google.Resource.MapsEngine.Maps.ListPublished
+
+    -- ** mapsengine.maps.patch
+    , module Network.Google.Resource.MapsEngine.Maps.Patch
+
+    -- ** mapsengine.maps.permissions.batchDelete
+    , module Network.Google.Resource.MapsEngine.Maps.Permissions.BatchDelete
+
+    -- ** mapsengine.maps.permissions.batchUpdate
+    , module Network.Google.Resource.MapsEngine.Maps.Permissions.BatchUpdate
+
+    -- ** mapsengine.maps.permissions.list
+    , module Network.Google.Resource.MapsEngine.Maps.Permissions.List
+
+    -- ** mapsengine.maps.publish
+    , module Network.Google.Resource.MapsEngine.Maps.Publish
+
+    -- ** mapsengine.maps.unpublish
+    , module Network.Google.Resource.MapsEngine.Maps.UnPublish
+
+    -- ** mapsengine.projects.icons.create
+    , module Network.Google.Resource.MapsEngine.Projects.Icons.Create
+
+    -- ** mapsengine.projects.icons.get
+    , module Network.Google.Resource.MapsEngine.Projects.Icons.Get
+
+    -- ** mapsengine.projects.icons.list
+    , module Network.Google.Resource.MapsEngine.Projects.Icons.List
+
+    -- ** mapsengine.projects.list
+    , module Network.Google.Resource.MapsEngine.Projects.List
+
+    -- ** mapsengine.rasterCollections.cancelProcessing
+    , module Network.Google.Resource.MapsEngine.RasterCollections.CancelProcessing
+
+    -- ** mapsengine.rasterCollections.create
+    , module Network.Google.Resource.MapsEngine.RasterCollections.Create
+
+    -- ** mapsengine.rasterCollections.delete
+    , module Network.Google.Resource.MapsEngine.RasterCollections.Delete
+
+    -- ** mapsengine.rasterCollections.get
+    , module Network.Google.Resource.MapsEngine.RasterCollections.Get
+
+    -- ** mapsengine.rasterCollections.list
+    , module Network.Google.Resource.MapsEngine.RasterCollections.List
+
+    -- ** mapsengine.rasterCollections.parents.list
+    , module Network.Google.Resource.MapsEngine.RasterCollections.Parents.List
+
+    -- ** mapsengine.rasterCollections.patch
+    , module Network.Google.Resource.MapsEngine.RasterCollections.Patch
+
+    -- ** mapsengine.rasterCollections.permissions.batchDelete
+    , module Network.Google.Resource.MapsEngine.RasterCollections.Permissions.BatchDelete
+
+    -- ** mapsengine.rasterCollections.permissions.batchUpdate
+    , module Network.Google.Resource.MapsEngine.RasterCollections.Permissions.BatchUpdate
+
+    -- ** mapsengine.rasterCollections.permissions.list
+    , module Network.Google.Resource.MapsEngine.RasterCollections.Permissions.List
+
+    -- ** mapsengine.rasterCollections.process
+    , module Network.Google.Resource.MapsEngine.RasterCollections.Process
+
+    -- ** mapsengine.rasterCollections.rasters.batchDelete
+    , module Network.Google.Resource.MapsEngine.RasterCollections.Rasters.BatchDelete
+
+    -- ** mapsengine.rasterCollections.rasters.batchInsert
+    , module Network.Google.Resource.MapsEngine.RasterCollections.Rasters.BatchInsert
+
+    -- ** mapsengine.rasterCollections.rasters.list
+    , module Network.Google.Resource.MapsEngine.RasterCollections.Rasters.List
+
+    -- ** mapsengine.rasters.delete
+    , module Network.Google.Resource.MapsEngine.Rasters.Delete
+
+    -- ** mapsengine.rasters.files.insert
+    , module Network.Google.Resource.MapsEngine.Rasters.Files.Insert
+
+    -- ** mapsengine.rasters.get
+    , module Network.Google.Resource.MapsEngine.Rasters.Get
+
+    -- ** mapsengine.rasters.list
+    , module Network.Google.Resource.MapsEngine.Rasters.List
+
+    -- ** mapsengine.rasters.parents.list
+    , module Network.Google.Resource.MapsEngine.Rasters.Parents.List
+
+    -- ** mapsengine.rasters.patch
+    , module Network.Google.Resource.MapsEngine.Rasters.Patch
+
+    -- ** mapsengine.rasters.permissions.batchDelete
+    , module Network.Google.Resource.MapsEngine.Rasters.Permissions.BatchDelete
+
+    -- ** mapsengine.rasters.permissions.batchUpdate
+    , module Network.Google.Resource.MapsEngine.Rasters.Permissions.BatchUpdate
+
+    -- ** mapsengine.rasters.permissions.list
+    , module Network.Google.Resource.MapsEngine.Rasters.Permissions.List
+
+    -- ** mapsengine.rasters.process
+    , module Network.Google.Resource.MapsEngine.Rasters.Process
+
+    -- ** mapsengine.rasters.upload
+    , module Network.Google.Resource.MapsEngine.Rasters.Upload
+
+    -- ** mapsengine.tables.create
+    , module Network.Google.Resource.MapsEngine.Tables.Create
+
+    -- ** mapsengine.tables.delete
+    , module Network.Google.Resource.MapsEngine.Tables.Delete
+
+    -- ** mapsengine.tables.features.batchDelete
+    , module Network.Google.Resource.MapsEngine.Tables.Features.BatchDelete
+
+    -- ** mapsengine.tables.features.batchInsert
+    , module Network.Google.Resource.MapsEngine.Tables.Features.BatchInsert
+
+    -- ** mapsengine.tables.features.batchPatch
+    , module Network.Google.Resource.MapsEngine.Tables.Features.BatchPatch
+
+    -- ** mapsengine.tables.features.get
+    , module Network.Google.Resource.MapsEngine.Tables.Features.Get
+
+    -- ** mapsengine.tables.features.list
+    , module Network.Google.Resource.MapsEngine.Tables.Features.List
+
+    -- ** mapsengine.tables.files.insert
+    , module Network.Google.Resource.MapsEngine.Tables.Files.Insert
+
+    -- ** mapsengine.tables.get
+    , module Network.Google.Resource.MapsEngine.Tables.Get
+
+    -- ** mapsengine.tables.list
+    , module Network.Google.Resource.MapsEngine.Tables.List
+
+    -- ** mapsengine.tables.parents.list
+    , module Network.Google.Resource.MapsEngine.Tables.Parents.List
+
+    -- ** mapsengine.tables.patch
+    , module Network.Google.Resource.MapsEngine.Tables.Patch
+
+    -- ** mapsengine.tables.permissions.batchDelete
+    , module Network.Google.Resource.MapsEngine.Tables.Permissions.BatchDelete
+
+    -- ** mapsengine.tables.permissions.batchUpdate
+    , module Network.Google.Resource.MapsEngine.Tables.Permissions.BatchUpdate
+
+    -- ** mapsengine.tables.permissions.list
+    , module Network.Google.Resource.MapsEngine.Tables.Permissions.List
+
+    -- ** mapsengine.tables.process
+    , module Network.Google.Resource.MapsEngine.Tables.Process
+
+    -- ** mapsengine.tables.upload
+    , module Network.Google.Resource.MapsEngine.Tables.Upload
+
+    -- * Types
+
+    -- ** ValueRange
+    , ValueRange
+    , valueRange
+    , vrMax
+    , vrMin
+
+    -- ** GeoJSONProperties
+    , GeoJSONProperties
+    , geoJSONProperties
+    , gjpAddtional
+
+    -- ** Feature
+    , Feature
+    , feature
+    , fGeometry
+    , fType
+    , fProperties
+
+    -- ** Parent
+    , Parent
+    , parent
+    , pId
+
+    -- ** FeaturesBatchPatchRequest
+    , FeaturesBatchPatchRequest
+    , featuresBatchPatchRequest
+    , fbprFeatures
+    , fbprNormalizeGeometries
+
+    -- ** PermissionsBatchUpdateRequest
+    , PermissionsBatchUpdateRequest
+    , permissionsBatchUpdateRequest
+    , pburPermissions
+
+    -- ** RasterProcessingStatus
+    , RasterProcessingStatus (..)
+
+    -- ** LayerProcessingStatus
+    , LayerProcessingStatus (..)
+
+    -- ** ScaledShapeShape
+    , ScaledShapeShape (..)
+
+    -- ** PermissionsBatchDeleteRequest
+    , PermissionsBatchDeleteRequest
+    , permissionsBatchDeleteRequest
+    , pbdrIds
+
+    -- ** RasterCollectionsListResponse
+    , RasterCollectionsListResponse
+    , rasterCollectionsListResponse
+    , rclrNextPageToken
+    , rclrRasterCollections
+
+    -- ** GeoJSONMultiLineStringType
+    , GeoJSONMultiLineStringType (..)
+
+    -- ** PermissionRole
+    , PermissionRole (..)
+
+    -- ** ProjectsListResponse
+    , ProjectsListResponse
+    , projectsListResponse
+    , plrProjects
+
+    -- ** GeoJSONGeometry
+    , GeoJSONGeometry
+    , geoJSONGeometry
+
+    -- ** MapLayer
+    , MapLayer
+    , mapLayer
+    , mlDefaultViewport
+    , mlVisibility
+    , mlKey
+    , mlName
+    , mlId
+    , mlType
+
+    -- ** ZoomLevels
+    , ZoomLevels
+    , zoomLevels
+    , zlMax
+    , zlMin
+
+    -- ** FeatureInfo
+    , FeatureInfo
+    , featureInfo
+    , fiContent
+
+    -- ** AcquisitionTimePrecision
+    , AcquisitionTimePrecision (..)
+
+    -- ** SizeRange
+    , SizeRange
+    , sizeRange
+    , srMax
+    , srMin
+
+    -- ** ScalingFunctionScalingType
+    , ScalingFunctionScalingType (..)
+
+    -- ** MapFolder
+    , MapFolder
+    , mapFolder
+    , mfExpandable
+    , mfDefaultViewport
+    , mfContents
+    , mfVisibility
+    , mfKey
+    , mfName
+    , mfType
+
+    -- ** AssetsListRole
+    , AssetsListRole (..)
+
+    -- ** RastersListProcessingStatus
+    , RastersListProcessingStatus (..)
+
+    -- ** Project
+    , Project
+    , project
+    , proName
+    , proId
+
+    -- ** Color
+    , Color
+    , color
+    , cColor
+    , cOpacity
+
+    -- ** LayersListProcessingStatus
+    , LayersListProcessingStatus (..)
+
+    -- ** RasterCollection
+    , RasterCollection
+    , rasterCollection
+    , rcCreationTime
+    , rcWritersCanEditPermissions
+    , rcEtag
+    , rcCreatorEmail
+    , rcRasterType
+    , rcLastModifiedTime
+    , rcLastModifierEmail
+    , rcName
+    , rcBbox
+    , rcProcessingStatus
+    , rcMosaic
+    , rcId
+    , rcProjectId
+    , rcDraftAccessList
+    , rcDescription
+    , rcAttribution
+    , rcTags
+
+    -- ** LineStyleStroke
+    , LineStyleStroke
+    , lineStyleStroke
+    , lssColor
+    , lssWidth
+    , lssOpacity
+
+    -- ** RasterCollectionsRastersListRole
+    , RasterCollectionsRastersListRole (..)
+
+    -- ** GeoJSONMultiPolygonType
+    , GeoJSONMultiPolygonType (..)
+
+    -- ** GeoJSONMultiPointType
+    , GeoJSONMultiPointType (..)
+
+    -- ** RasterCollectionsRastersBatchDeleteResponse
+    , RasterCollectionsRastersBatchDeleteResponse
+    , rasterCollectionsRastersBatchDeleteResponse
+
+    -- ** ProcessResponse
+    , ProcessResponse
+    , processResponse
+
+    -- ** TableColumn
+    , TableColumn
+    , tableColumn
+    , tcName
+    , tcType
+
+    -- ** PublishedLayerLayerType
+    , PublishedLayerLayerType (..)
+
+    -- ** TablesListProcessingStatus
+    , TablesListProcessingStatus (..)
+
+    -- ** Asset
+    , Asset
+    , asset
+    , aCreationTime
+    , aWritersCanEditPermissions
+    , aEtag
+    , aCreatorEmail
+    , aLastModifiedTime
+    , aLastModifierEmail
+    , aName
+    , aBbox
+    , aResource
+    , aId
+    , aProjectId
+    , aType
+    , aDescription
+    , aTags
+
+    -- ** LayerLayerType
+    , LayerLayerType (..)
+
+    -- ** ScaledShape
+    , ScaledShape
+    , scaledShape
+    , ssBOrder
+    , ssFill
+    , ssShape
+
+    -- ** PermissionType
+    , PermissionType (..)
+
+    -- ** MapProcessingStatus
+    , MapProcessingStatus (..)
+
+    -- ** FeaturesBatchDeleteRequest
+    , FeaturesBatchDeleteRequest
+    , featuresBatchDeleteRequest
+    , fbdrPrimaryKeys
+    , fbdrGxIds
+
+    -- ** MapsGetVersion
+    , MapsGetVersion (..)
+
+    -- ** TablesListRole
+    , TablesListRole (..)
+
+    -- ** Icon
+    , Icon
+    , icon
+    , iName
+    , iId
+    , iDescription
+
+    -- ** VectorStyleType
+    , VectorStyleType (..)
+
+    -- ** GeoJSONLineStringType
+    , GeoJSONLineStringType (..)
+
+    -- ** ParentsListResponse
+    , ParentsListResponse
+    , parentsListResponse
+    , plrNextPageToken
+    , plrParents
+
+    -- ** FeaturesListResponse
+    , FeaturesListResponse
+    , featuresListResponse
+    , flrNextPageToken
+    , flrAllowedQueriesPerSecond
+    , flrSchema
+    , flrFeatures
+    , flrType
+
+    -- ** RasterCollectionsRastersBatchInsertResponse
+    , RasterCollectionsRastersBatchInsertResponse
+    , rasterCollectionsRastersBatchInsertResponse
+
+    -- ** LayerPublishingStatus
+    , LayerPublishingStatus (..)
+
+    -- ** MapKmlLinkType
+    , MapKmlLinkType (..)
+
+    -- ** LayerDatasourceType
+    , LayerDatasourceType (..)
+
+    -- ** GeoJSONGeometryCollectionType
+    , GeoJSONGeometryCollectionType (..)
+
+    -- ** IconsListResponse
+    , IconsListResponse
+    , iconsListResponse
+    , ilrNextPageToken
+    , ilrIcons
+
+    -- ** LabelStyle
+    , LabelStyle
+    , labelStyle
+    , lsFontStyle
+    , lsColor
+    , lsSize
+    , lsOpacity
+    , lsOutline
+    , lsFontWeight
+    , lsColumn
+
+    -- ** RasterCollectionsRasterBatchDeleteRequest
+    , RasterCollectionsRasterBatchDeleteRequest
+    , rasterCollectionsRasterBatchDeleteRequest
+    , rcrbdrIds
+
+    -- ** Schema
+    , Schema
+    , schema
+    , sPrimaryKey
+    , sColumns
+    , sPrimaryGeometry
+
+    -- ** MapItem
+    , MapItem
+    , mapItem
+
+    -- ** GeoJSONPointType
+    , GeoJSONPointType (..)
+
+    -- ** GeoJSONPolygonType
+    , GeoJSONPolygonType (..)
+
+    -- ** RasterCollectionsRastersBatchInsertRequest
+    , RasterCollectionsRastersBatchInsertRequest
+    , rasterCollectionsRastersBatchInsertRequest
+    , rcrbirIds
+
+    -- ** PublishedMap
+    , PublishedMap
+    , publishedMap
+    , pmDefaultViewport
+    , pmContents
+    , pmName
+    , pmId
+    , pmProjectId
+    , pmDescription
+
+    -- ** AcquisitionTime
+    , AcquisitionTime
+    , acquisitionTime
+    , atStart
+    , atPrecision
+    , atEnd
+
+    -- ** LayersGetVersion
+    , LayersGetVersion (..)
+
+    -- ** TablesListResponse
+    , TablesListResponse
+    , tablesListResponse
+    , tlrNextPageToken
+    , tlrTables
+
+    -- ** IconStyle
+    , IconStyle
+    , iconStyle
+    , isScaledShape
+    , isScalingFunction
+    , isName
+    , isId
+
+    -- ** DisplayRule
+    , DisplayRule
+    , displayRule
+    , drPointOptions
+    , drPolygonOptions
+    , drZoomLevels
+    , drFilters
+    , drName
+    , drLineOptions
+
+    -- ** BOrder
+    , BOrder
+    , bOrder
+    , boColor
+    , boWidth
+    , boOpacity
+
+    -- ** Map
+    , Map
+    , map'
+    , mCreationTime
+    , mWritersCanEditPermissions
+    , mEtag
+    , mDefaultViewport
+    , mContents
+    , mPublishingStatus
+    , mCreatorEmail
+    , mLastModifiedTime
+    , mLastModifierEmail
+    , mVersions
+    , mName
+    , mBbox
+    , mProcessingStatus
+    , mId
+    , mProjectId
+    , mDraftAccessList
+    , mPublishedAccessList
+    , mDescription
+    , mTags
+
+    -- ** MapLayerType
+    , MapLayerType (..)
+
+    -- ** RasterCollectionsRastersListResponse
+    , RasterCollectionsRastersListResponse
+    , rasterCollectionsRastersListResponse
+    , rcrlrNextPageToken
+    , rcrlrRasters
+
+    -- ** GeoJSONMultiLineString
+    , GeoJSONMultiLineString
+    , geoJSONMultiLineString
+    , gjmlsCoordinates
+    , gjmlsType
+
+    -- ** ScalingFunction
+    , ScalingFunction
+    , scalingFunction
+    , sfValueRange
+    , sfSizeRange
+    , sfScalingType
+    , sfColumn
+
+    -- ** LabelStyleFontWeight
+    , LabelStyleFontWeight (..)
+
+    -- ** MapFolderType
+    , MapFolderType (..)
+
+    -- ** RasterCollectionProcessingStatus
+    , RasterCollectionProcessingStatus (..)
+
+    -- ** TablesFeaturesListVersion
+    , TablesFeaturesListVersion (..)
+
+    -- ** MapsListProcessingStatus
+    , MapsListProcessingStatus (..)
+
+    -- ** AssetsListResponse
+    , AssetsListResponse
+    , assetsListResponse
+    , alrNextPageToken
+    , alrAssets
+
+    -- ** PublishResponse
+    , PublishResponse
+    , publishResponse
+
+    -- ** FeaturesBatchInsertRequest
+    , FeaturesBatchInsertRequest
+    , featuresBatchInsertRequest
+    , fbirFeatures
+    , fbirNormalizeGeometries
+
+    -- ** Datasource
+    , Datasource
+    , datasource
+    , dId
+
+    -- ** LabelStyleFontStyle
+    , LabelStyleFontStyle (..)
+
+    -- ** RasterCollectionsRaster
+    , RasterCollectionsRaster
+    , rasterCollectionsRaster
+    , rcrCreationTime
+    , rcrRasterType
+    , rcrLastModifiedTime
+    , rcrName
+    , rcrBbox
+    , rcrId
+    , rcrProjectId
+    , rcrDescription
+    , rcrTags
+
+    -- ** Filter
+    , Filter
+    , filter'
+    , fOperator
+    , fValue
+    , fColumn
+
+    -- ** GeoJSONMultiPoint
+    , GeoJSONMultiPoint
+    , geoJSONMultiPoint
+    , gjmpCoordinates
+    , gjmpType
+
+    -- ** AssetType
+    , AssetType (..)
+
+    -- ** RasterRasterType
+    , RasterRasterType (..)
+
+    -- ** RasterCollectionsListRole
+    , RasterCollectionsListRole (..)
+
+    -- ** FilterOperator
+    , FilterOperator (..)
+
+    -- ** TableColumnType
+    , TableColumnType (..)
+
+    -- ** GeoJSONMultiPolygon
+    , GeoJSONMultiPolygon
+    , geoJSONMultiPolygon
+    , gjsonmpCoordinates
+    , gjsonmpType
+
+    -- ** Layer
+    , Layer
+    , layer
+    , layCreationTime
+    , layWritersCanEditPermissions
+    , layStyle
+    , layEtag
+    , layDatasourceType
+    , layPublishingStatus
+    , layCreatorEmail
+    , layLayerType
+    , layLastModifiedTime
+    , layDatasources
+    , layLastModifierEmail
+    , layName
+    , layBbox
+    , layProcessingStatus
+    , layId
+    , layProjectId
+    , layDraftAccessList
+    , layPublishedAccessList
+    , layDescription
+    , layTags
+
+    -- ** PointStyle
+    , PointStyle
+    , pointStyle
+    , psIcon
+    , psLabel
+
+    -- ** RasterCollectionsListProcessingStatus
+    , RasterCollectionsListProcessingStatus (..)
+
+    -- ** Raster
+    , Raster
+    , raster
+    , rrCreationTime
+    , rrWritersCanEditPermissions
+    , rrMaskType
+    , rrEtag
+    , rrCreatorEmail
+    , rrRasterType
+    , rrLastModifiedTime
+    , rrLastModifierEmail
+    , rrAcquisitionTime
+    , rrName
+    , rrBbox
+    , rrProcessingStatus
+    , rrFiles
+    , rrId
+    , rrProjectId
+    , rrDraftAccessList
+    , rrDescription
+    , rrAttribution
+    , rrTags
+
+    -- ** PolygonStyle
+    , PolygonStyle
+    , polygonStyle
+    , pStroke
+    , pFill
+    , pLabel
+
+    -- ** Permission
+    , Permission
+    , permission
+    , perRole
+    , perId
+    , perType
+    , perDiscoverable
+
+    -- ** PublishedLayer
+    , PublishedLayer
+    , publishedLayer
+    , plLayerType
+    , plName
+    , plId
+    , plProjectId
+    , plDescription
+
+    -- ** LayersListRole
+    , LayersListRole (..)
+
+    -- ** Table
+    , Table
+    , table
+    , tabCreationTime
+    , tabWritersCanEditPermissions
+    , tabEtag
+    , tabCreatorEmail
+    , tabLastModifiedTime
+    , tabSchema
+    , tabLastModifierEmail
+    , tabName
+    , tabBbox
+    , tabProcessingStatus
+    , tabFiles
+    , tabId
+    , tabProjectId
+    , tabDraftAccessList
+    , tabPublishedAccessList
+    , tabSourceEncoding
+    , tabDescription
+    , tabTags
+
+    -- ** File
+    , File
+    , file
+    , fSize
+    , fUploadStatus
+    , fFilename
+
+    -- ** VectorStyle
+    , VectorStyle
+    , vectorStyle
+    , vsDisplayRules
+    , vsFeatureInfo
+    , vsType
+
+    -- ** PermissionsBatchDeleteResponse
+    , PermissionsBatchDeleteResponse
+    , permissionsBatchDeleteResponse
+
+    -- ** TablesFeaturesGetVersion
+    , TablesFeaturesGetVersion (..)
+
+    -- ** MapKmlLink
+    , MapKmlLink
+    , mapKmlLink
+    , mklDefaultViewport
+    , mklVisibility
+    , mklName
+    , mklType
+    , mklKmlURL
+
+    -- ** RasterCollectionRasterType
+    , RasterCollectionRasterType (..)
+
+    -- ** RastersListRole
+    , RastersListRole (..)
+
+    -- ** PermissionsBatchUpdateResponse
+    , PermissionsBatchUpdateResponse
+    , permissionsBatchUpdateResponse
+
+    -- ** GeoJSONLineString
+    , GeoJSONLineString
+    , geoJSONLineString
+    , gjlsCoordinates
+    , gjlsType
+
+    -- ** PublishedMapsListResponse
+    , PublishedMapsListResponse
+    , publishedMapsListResponse
+    , pmlrMaps
+    , pmlrNextPageToken
+
+    -- ** MapsListResponse
+    , MapsListResponse
+    , mapsListResponse
+    , mlrMaps
+    , mlrNextPageToken
+
+    -- ** MapPublishingStatus
+    , MapPublishingStatus (..)
+
+    -- ** GeoJSONGeometryCollection
+    , GeoJSONGeometryCollection
+    , geoJSONGeometryCollection
+    , gjgcGeometries
+    , gjgcType
+
+    -- ** GeoJSONPolygon
+    , GeoJSONPolygon
+    , geoJSONPolygon
+    , gjpCoordinates
+    , gjpType
+
+    -- ** GeoJSONPoint
+    , GeoJSONPoint
+    , geoJSONPoint
+    , gjsonpCoordinates
+    , gjsonpType
+
+    -- ** LayersListResponse
+    , LayersListResponse
+    , layersListResponse
+    , llrNextPageToken
+    , llrLayers
+
+    -- ** RastersListResponse
+    , RastersListResponse
+    , rastersListResponse
+    , rlrNextPageToken
+    , rlrRasters
+
+    -- ** FileUploadStatus
+    , FileUploadStatus (..)
+
+    -- ** MapsListRole
+    , MapsListRole (..)
+
+    -- ** TablesGetVersion
+    , TablesGetVersion (..)
+
+    -- ** PermissionsListResponse
+    , PermissionsListResponse
+    , permissionsListResponse
+    , plrPermissions
+
+    -- ** TableProcessingStatus
+    , TableProcessingStatus (..)
+
+    -- ** LineStyle
+    , LineStyle
+    , lineStyle
+    , lsStroke
+    , lsBOrder
+    , lsDash
+    , lsLabel
+
+    -- ** PublishedLayersListResponse
+    , PublishedLayersListResponse
+    , publishedLayersListResponse
+    , pllrNextPageToken
+    , pllrLayers
+    ) where
+
+import           Network.Google.MapsEngine.Types
+import           Network.Google.Prelude
+import           Network.Google.Resource.MapsEngine.Assets.Get
+import           Network.Google.Resource.MapsEngine.Assets.List
+import           Network.Google.Resource.MapsEngine.Assets.Parents.List
+import           Network.Google.Resource.MapsEngine.Assets.Permissions.List
+import           Network.Google.Resource.MapsEngine.Layers.CancelProcessing
+import           Network.Google.Resource.MapsEngine.Layers.Create
+import           Network.Google.Resource.MapsEngine.Layers.Delete
+import           Network.Google.Resource.MapsEngine.Layers.Get
+import           Network.Google.Resource.MapsEngine.Layers.GetPublished
+import           Network.Google.Resource.MapsEngine.Layers.List
+import           Network.Google.Resource.MapsEngine.Layers.ListPublished
+import           Network.Google.Resource.MapsEngine.Layers.Parents.List
+import           Network.Google.Resource.MapsEngine.Layers.Patch
+import           Network.Google.Resource.MapsEngine.Layers.Permissions.BatchDelete
+import           Network.Google.Resource.MapsEngine.Layers.Permissions.BatchUpdate
+import           Network.Google.Resource.MapsEngine.Layers.Permissions.List
+import           Network.Google.Resource.MapsEngine.Layers.Process
+import           Network.Google.Resource.MapsEngine.Layers.Publish
+import           Network.Google.Resource.MapsEngine.Layers.UnPublish
+import           Network.Google.Resource.MapsEngine.Maps.Create
+import           Network.Google.Resource.MapsEngine.Maps.Delete
+import           Network.Google.Resource.MapsEngine.Maps.Get
+import           Network.Google.Resource.MapsEngine.Maps.GetPublished
+import           Network.Google.Resource.MapsEngine.Maps.List
+import           Network.Google.Resource.MapsEngine.Maps.ListPublished
+import           Network.Google.Resource.MapsEngine.Maps.Patch
+import           Network.Google.Resource.MapsEngine.Maps.Permissions.BatchDelete
+import           Network.Google.Resource.MapsEngine.Maps.Permissions.BatchUpdate
+import           Network.Google.Resource.MapsEngine.Maps.Permissions.List
+import           Network.Google.Resource.MapsEngine.Maps.Publish
+import           Network.Google.Resource.MapsEngine.Maps.UnPublish
+import           Network.Google.Resource.MapsEngine.Projects.Icons.Create
+import           Network.Google.Resource.MapsEngine.Projects.Icons.Get
+import           Network.Google.Resource.MapsEngine.Projects.Icons.List
+import           Network.Google.Resource.MapsEngine.Projects.List
+import           Network.Google.Resource.MapsEngine.RasterCollections.CancelProcessing
+import           Network.Google.Resource.MapsEngine.RasterCollections.Create
+import           Network.Google.Resource.MapsEngine.RasterCollections.Delete
+import           Network.Google.Resource.MapsEngine.RasterCollections.Get
+import           Network.Google.Resource.MapsEngine.RasterCollections.List
+import           Network.Google.Resource.MapsEngine.RasterCollections.Parents.List
+import           Network.Google.Resource.MapsEngine.RasterCollections.Patch
+import           Network.Google.Resource.MapsEngine.RasterCollections.Permissions.BatchDelete
+import           Network.Google.Resource.MapsEngine.RasterCollections.Permissions.BatchUpdate
+import           Network.Google.Resource.MapsEngine.RasterCollections.Permissions.List
+import           Network.Google.Resource.MapsEngine.RasterCollections.Process
+import           Network.Google.Resource.MapsEngine.RasterCollections.Rasters.BatchDelete
+import           Network.Google.Resource.MapsEngine.RasterCollections.Rasters.BatchInsert
+import           Network.Google.Resource.MapsEngine.RasterCollections.Rasters.List
+import           Network.Google.Resource.MapsEngine.Rasters.Delete
+import           Network.Google.Resource.MapsEngine.Rasters.Files.Insert
+import           Network.Google.Resource.MapsEngine.Rasters.Get
+import           Network.Google.Resource.MapsEngine.Rasters.List
+import           Network.Google.Resource.MapsEngine.Rasters.Parents.List
+import           Network.Google.Resource.MapsEngine.Rasters.Patch
+import           Network.Google.Resource.MapsEngine.Rasters.Permissions.BatchDelete
+import           Network.Google.Resource.MapsEngine.Rasters.Permissions.BatchUpdate
+import           Network.Google.Resource.MapsEngine.Rasters.Permissions.List
+import           Network.Google.Resource.MapsEngine.Rasters.Process
+import           Network.Google.Resource.MapsEngine.Rasters.Upload
+import           Network.Google.Resource.MapsEngine.Tables.Create
+import           Network.Google.Resource.MapsEngine.Tables.Delete
+import           Network.Google.Resource.MapsEngine.Tables.Features.BatchDelete
+import           Network.Google.Resource.MapsEngine.Tables.Features.BatchInsert
+import           Network.Google.Resource.MapsEngine.Tables.Features.BatchPatch
+import           Network.Google.Resource.MapsEngine.Tables.Features.Get
+import           Network.Google.Resource.MapsEngine.Tables.Features.List
+import           Network.Google.Resource.MapsEngine.Tables.Files.Insert
+import           Network.Google.Resource.MapsEngine.Tables.Get
+import           Network.Google.Resource.MapsEngine.Tables.List
+import           Network.Google.Resource.MapsEngine.Tables.Parents.List
+import           Network.Google.Resource.MapsEngine.Tables.Patch
+import           Network.Google.Resource.MapsEngine.Tables.Permissions.BatchDelete
+import           Network.Google.Resource.MapsEngine.Tables.Permissions.BatchUpdate
+import           Network.Google.Resource.MapsEngine.Tables.Permissions.List
+import           Network.Google.Resource.MapsEngine.Tables.Process
+import           Network.Google.Resource.MapsEngine.Tables.Upload
+
+{- $resources
+TODO
+-}
+
+-- | Represents the entirety of the methods and resources available for the Google Maps Engine API service.
+type MapsEngineAPI =
+     MapsPermissionsListResource :<|>
+       MapsPermissionsBatchUpdateResource
+       :<|> MapsPermissionsBatchDeleteResource
+       :<|> MapsListResource
+       :<|> MapsListPublishedResource
+       :<|> MapsPatchResource
+       :<|> MapsGetResource
+       :<|> MapsGetPublishedResource
+       :<|> MapsCreateResource
+       :<|> MapsUnPublishResource
+       :<|> MapsDeleteResource
+       :<|> MapsPublishResource
+       :<|> TablesParentsListResource
+       :<|> TablesFeaturesListResource
+       :<|> TablesFeaturesBatchInsertResource
+       :<|> TablesFeaturesGetResource
+       :<|> TablesFeaturesBatchPatchResource
+       :<|> TablesFeaturesBatchDeleteResource
+       :<|> TablesFilesInsertResource
+       :<|> TablesPermissionsListResource
+       :<|> TablesPermissionsBatchUpdateResource
+       :<|> TablesPermissionsBatchDeleteResource
+       :<|> TablesListResource
+       :<|> TablesProcessResource
+       :<|> TablesPatchResource
+       :<|> TablesGetResource
+       :<|> TablesCreateResource
+       :<|> TablesUploadResource
+       :<|> TablesDeleteResource
+       :<|> LayersParentsListResource
+       :<|> LayersPermissionsListResource
+       :<|> LayersPermissionsBatchUpdateResource
+       :<|> LayersPermissionsBatchDeleteResource
+       :<|> LayersListResource
+       :<|> LayersListPublishedResource
+       :<|> LayersProcessResource
+       :<|> LayersPatchResource
+       :<|> LayersGetResource
+       :<|> LayersGetPublishedResource
+       :<|> LayersCreateResource
+       :<|> LayersUnPublishResource
+       :<|> LayersCancelProcessingResource
+       :<|> LayersDeleteResource
+       :<|> LayersPublishResource
+       :<|> RastersParentsListResource
+       :<|> RastersFilesInsertResource
+       :<|> RastersPermissionsListResource
+       :<|> RastersPermissionsBatchUpdateResource
+       :<|> RastersPermissionsBatchDeleteResource
+       :<|> RastersListResource
+       :<|> RastersProcessResource
+       :<|> RastersPatchResource
+       :<|> RastersGetResource
+       :<|> RastersUploadResource
+       :<|> RastersDeleteResource
+       :<|> AssetsParentsListResource
+       :<|> AssetsPermissionsListResource
+       :<|> AssetsListResource
+       :<|> AssetsGetResource
+       :<|> RasterCollectionsParentsListResource
+       :<|> RasterCollectionsPermissionsListResource
+       :<|> RasterCollectionsPermissionsBatchUpdateResource
+       :<|> RasterCollectionsPermissionsBatchDeleteResource
+       :<|> RasterCollectionsRastersListResource
+       :<|> RasterCollectionsRastersBatchInsertResource
+       :<|> RasterCollectionsRastersBatchDeleteResource
+       :<|> RasterCollectionsListResource
+       :<|> RasterCollectionsProcessResource
+       :<|> RasterCollectionsPatchResource
+       :<|> RasterCollectionsGetResource
+       :<|> RasterCollectionsCreateResource
+       :<|> RasterCollectionsCancelProcessingResource
+       :<|> RasterCollectionsDeleteResource
+       :<|> ProjectsIconsListResource
+       :<|> ProjectsIconsGetResource
+       :<|> ProjectsIconsCreateResource
+       :<|> ProjectsListResource
diff --git a/gen/Network/Google/MapsEngine/Types.hs b/gen/Network/Google/MapsEngine/Types.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/MapsEngine/Types.hs
@@ -0,0 +1,777 @@
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- |
+-- Module      : Network.Google.MapsEngine.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.MapsEngine.Types
+    (
+    -- * Service Configuration
+      mapsEngineService
+
+    -- * OAuth Scopes
+    , mapsengineScope
+    , mapsengineReadonlyScope
+
+    -- * ValueRange
+    , ValueRange
+    , valueRange
+    , vrMax
+    , vrMin
+
+    -- * GeoJSONProperties
+    , GeoJSONProperties
+    , geoJSONProperties
+    , gjpAddtional
+
+    -- * Feature
+    , Feature
+    , feature
+    , fGeometry
+    , fType
+    , fProperties
+
+    -- * Parent
+    , Parent
+    , parent
+    , pId
+
+    -- * FeaturesBatchPatchRequest
+    , FeaturesBatchPatchRequest
+    , featuresBatchPatchRequest
+    , fbprFeatures
+    , fbprNormalizeGeometries
+
+    -- * PermissionsBatchUpdateRequest
+    , PermissionsBatchUpdateRequest
+    , permissionsBatchUpdateRequest
+    , pburPermissions
+
+    -- * RasterProcessingStatus
+    , RasterProcessingStatus (..)
+
+    -- * LayerProcessingStatus
+    , LayerProcessingStatus (..)
+
+    -- * ScaledShapeShape
+    , ScaledShapeShape (..)
+
+    -- * PermissionsBatchDeleteRequest
+    , PermissionsBatchDeleteRequest
+    , permissionsBatchDeleteRequest
+    , pbdrIds
+
+    -- * RasterCollectionsListResponse
+    , RasterCollectionsListResponse
+    , rasterCollectionsListResponse
+    , rclrNextPageToken
+    , rclrRasterCollections
+
+    -- * GeoJSONMultiLineStringType
+    , GeoJSONMultiLineStringType (..)
+
+    -- * PermissionRole
+    , PermissionRole (..)
+
+    -- * ProjectsListResponse
+    , ProjectsListResponse
+    , projectsListResponse
+    , plrProjects
+
+    -- * GeoJSONGeometry
+    , GeoJSONGeometry
+    , geoJSONGeometry
+
+    -- * MapLayer
+    , MapLayer
+    , mapLayer
+    , mlDefaultViewport
+    , mlVisibility
+    , mlKey
+    , mlName
+    , mlId
+    , mlType
+
+    -- * ZoomLevels
+    , ZoomLevels
+    , zoomLevels
+    , zlMax
+    , zlMin
+
+    -- * FeatureInfo
+    , FeatureInfo
+    , featureInfo
+    , fiContent
+
+    -- * AcquisitionTimePrecision
+    , AcquisitionTimePrecision (..)
+
+    -- * SizeRange
+    , SizeRange
+    , sizeRange
+    , srMax
+    , srMin
+
+    -- * ScalingFunctionScalingType
+    , ScalingFunctionScalingType (..)
+
+    -- * MapFolder
+    , MapFolder
+    , mapFolder
+    , mfExpandable
+    , mfDefaultViewport
+    , mfContents
+    , mfVisibility
+    , mfKey
+    , mfName
+    , mfType
+
+    -- * AssetsListRole
+    , AssetsListRole (..)
+
+    -- * RastersListProcessingStatus
+    , RastersListProcessingStatus (..)
+
+    -- * Project
+    , Project
+    , project
+    , proName
+    , proId
+
+    -- * Color
+    , Color
+    , color
+    , cColor
+    , cOpacity
+
+    -- * LayersListProcessingStatus
+    , LayersListProcessingStatus (..)
+
+    -- * RasterCollection
+    , RasterCollection
+    , rasterCollection
+    , rcCreationTime
+    , rcWritersCanEditPermissions
+    , rcEtag
+    , rcCreatorEmail
+    , rcRasterType
+    , rcLastModifiedTime
+    , rcLastModifierEmail
+    , rcName
+    , rcBbox
+    , rcProcessingStatus
+    , rcMosaic
+    , rcId
+    , rcProjectId
+    , rcDraftAccessList
+    , rcDescription
+    , rcAttribution
+    , rcTags
+
+    -- * LineStyleStroke
+    , LineStyleStroke
+    , lineStyleStroke
+    , lssColor
+    , lssWidth
+    , lssOpacity
+
+    -- * RasterCollectionsRastersListRole
+    , RasterCollectionsRastersListRole (..)
+
+    -- * GeoJSONMultiPolygonType
+    , GeoJSONMultiPolygonType (..)
+
+    -- * GeoJSONMultiPointType
+    , GeoJSONMultiPointType (..)
+
+    -- * RasterCollectionsRastersBatchDeleteResponse
+    , RasterCollectionsRastersBatchDeleteResponse
+    , rasterCollectionsRastersBatchDeleteResponse
+
+    -- * ProcessResponse
+    , ProcessResponse
+    , processResponse
+
+    -- * TableColumn
+    , TableColumn
+    , tableColumn
+    , tcName
+    , tcType
+
+    -- * PublishedLayerLayerType
+    , PublishedLayerLayerType (..)
+
+    -- * TablesListProcessingStatus
+    , TablesListProcessingStatus (..)
+
+    -- * Asset
+    , Asset
+    , asset
+    , aCreationTime
+    , aWritersCanEditPermissions
+    , aEtag
+    , aCreatorEmail
+    , aLastModifiedTime
+    , aLastModifierEmail
+    , aName
+    , aBbox
+    , aResource
+    , aId
+    , aProjectId
+    , aType
+    , aDescription
+    , aTags
+
+    -- * LayerLayerType
+    , LayerLayerType (..)
+
+    -- * ScaledShape
+    , ScaledShape
+    , scaledShape
+    , ssBOrder
+    , ssFill
+    , ssShape
+
+    -- * PermissionType
+    , PermissionType (..)
+
+    -- * MapProcessingStatus
+    , MapProcessingStatus (..)
+
+    -- * FeaturesBatchDeleteRequest
+    , FeaturesBatchDeleteRequest
+    , featuresBatchDeleteRequest
+    , fbdrPrimaryKeys
+    , fbdrGxIds
+
+    -- * MapsGetVersion
+    , MapsGetVersion (..)
+
+    -- * TablesListRole
+    , TablesListRole (..)
+
+    -- * Icon
+    , Icon
+    , icon
+    , iName
+    , iId
+    , iDescription
+
+    -- * VectorStyleType
+    , VectorStyleType (..)
+
+    -- * GeoJSONLineStringType
+    , GeoJSONLineStringType (..)
+
+    -- * ParentsListResponse
+    , ParentsListResponse
+    , parentsListResponse
+    , plrNextPageToken
+    , plrParents
+
+    -- * FeaturesListResponse
+    , FeaturesListResponse
+    , featuresListResponse
+    , flrNextPageToken
+    , flrAllowedQueriesPerSecond
+    , flrSchema
+    , flrFeatures
+    , flrType
+
+    -- * RasterCollectionsRastersBatchInsertResponse
+    , RasterCollectionsRastersBatchInsertResponse
+    , rasterCollectionsRastersBatchInsertResponse
+
+    -- * LayerPublishingStatus
+    , LayerPublishingStatus (..)
+
+    -- * MapKmlLinkType
+    , MapKmlLinkType (..)
+
+    -- * LayerDatasourceType
+    , LayerDatasourceType (..)
+
+    -- * GeoJSONGeometryCollectionType
+    , GeoJSONGeometryCollectionType (..)
+
+    -- * IconsListResponse
+    , IconsListResponse
+    , iconsListResponse
+    , ilrNextPageToken
+    , ilrIcons
+
+    -- * LabelStyle
+    , LabelStyle
+    , labelStyle
+    , lsFontStyle
+    , lsColor
+    , lsSize
+    , lsOpacity
+    , lsOutline
+    , lsFontWeight
+    , lsColumn
+
+    -- * RasterCollectionsRasterBatchDeleteRequest
+    , RasterCollectionsRasterBatchDeleteRequest
+    , rasterCollectionsRasterBatchDeleteRequest
+    , rcrbdrIds
+
+    -- * Schema
+    , Schema
+    , schema
+    , sPrimaryKey
+    , sColumns
+    , sPrimaryGeometry
+
+    -- * MapItem
+    , MapItem
+    , mapItem
+
+    -- * GeoJSONPointType
+    , GeoJSONPointType (..)
+
+    -- * GeoJSONPolygonType
+    , GeoJSONPolygonType (..)
+
+    -- * RasterCollectionsRastersBatchInsertRequest
+    , RasterCollectionsRastersBatchInsertRequest
+    , rasterCollectionsRastersBatchInsertRequest
+    , rcrbirIds
+
+    -- * PublishedMap
+    , PublishedMap
+    , publishedMap
+    , pmDefaultViewport
+    , pmContents
+    , pmName
+    , pmId
+    , pmProjectId
+    , pmDescription
+
+    -- * AcquisitionTime
+    , AcquisitionTime
+    , acquisitionTime
+    , atStart
+    , atPrecision
+    , atEnd
+
+    -- * LayersGetVersion
+    , LayersGetVersion (..)
+
+    -- * TablesListResponse
+    , TablesListResponse
+    , tablesListResponse
+    , tlrNextPageToken
+    , tlrTables
+
+    -- * IconStyle
+    , IconStyle
+    , iconStyle
+    , isScaledShape
+    , isScalingFunction
+    , isName
+    , isId
+
+    -- * DisplayRule
+    , DisplayRule
+    , displayRule
+    , drPointOptions
+    , drPolygonOptions
+    , drZoomLevels
+    , drFilters
+    , drName
+    , drLineOptions
+
+    -- * BOrder
+    , BOrder
+    , bOrder
+    , boColor
+    , boWidth
+    , boOpacity
+
+    -- * Map
+    , Map
+    , map'
+    , mCreationTime
+    , mWritersCanEditPermissions
+    , mEtag
+    , mDefaultViewport
+    , mContents
+    , mPublishingStatus
+    , mCreatorEmail
+    , mLastModifiedTime
+    , mLastModifierEmail
+    , mVersions
+    , mName
+    , mBbox
+    , mProcessingStatus
+    , mId
+    , mProjectId
+    , mDraftAccessList
+    , mPublishedAccessList
+    , mDescription
+    , mTags
+
+    -- * MapLayerType
+    , MapLayerType (..)
+
+    -- * RasterCollectionsRastersListResponse
+    , RasterCollectionsRastersListResponse
+    , rasterCollectionsRastersListResponse
+    , rcrlrNextPageToken
+    , rcrlrRasters
+
+    -- * GeoJSONMultiLineString
+    , GeoJSONMultiLineString
+    , geoJSONMultiLineString
+    , gjmlsCoordinates
+    , gjmlsType
+
+    -- * ScalingFunction
+    , ScalingFunction
+    , scalingFunction
+    , sfValueRange
+    , sfSizeRange
+    , sfScalingType
+    , sfColumn
+
+    -- * LabelStyleFontWeight
+    , LabelStyleFontWeight (..)
+
+    -- * MapFolderType
+    , MapFolderType (..)
+
+    -- * RasterCollectionProcessingStatus
+    , RasterCollectionProcessingStatus (..)
+
+    -- * TablesFeaturesListVersion
+    , TablesFeaturesListVersion (..)
+
+    -- * MapsListProcessingStatus
+    , MapsListProcessingStatus (..)
+
+    -- * AssetsListResponse
+    , AssetsListResponse
+    , assetsListResponse
+    , alrNextPageToken
+    , alrAssets
+
+    -- * PublishResponse
+    , PublishResponse
+    , publishResponse
+
+    -- * FeaturesBatchInsertRequest
+    , FeaturesBatchInsertRequest
+    , featuresBatchInsertRequest
+    , fbirFeatures
+    , fbirNormalizeGeometries
+
+    -- * Datasource
+    , Datasource
+    , datasource
+    , dId
+
+    -- * LabelStyleFontStyle
+    , LabelStyleFontStyle (..)
+
+    -- * RasterCollectionsRaster
+    , RasterCollectionsRaster
+    , rasterCollectionsRaster
+    , rcrCreationTime
+    , rcrRasterType
+    , rcrLastModifiedTime
+    , rcrName
+    , rcrBbox
+    , rcrId
+    , rcrProjectId
+    , rcrDescription
+    , rcrTags
+
+    -- * Filter
+    , Filter
+    , filter'
+    , fOperator
+    , fValue
+    , fColumn
+
+    -- * GeoJSONMultiPoint
+    , GeoJSONMultiPoint
+    , geoJSONMultiPoint
+    , gjmpCoordinates
+    , gjmpType
+
+    -- * AssetType
+    , AssetType (..)
+
+    -- * RasterRasterType
+    , RasterRasterType (..)
+
+    -- * RasterCollectionsListRole
+    , RasterCollectionsListRole (..)
+
+    -- * FilterOperator
+    , FilterOperator (..)
+
+    -- * TableColumnType
+    , TableColumnType (..)
+
+    -- * GeoJSONMultiPolygon
+    , GeoJSONMultiPolygon
+    , geoJSONMultiPolygon
+    , gjsonmpCoordinates
+    , gjsonmpType
+
+    -- * Layer
+    , Layer
+    , layer
+    , layCreationTime
+    , layWritersCanEditPermissions
+    , layStyle
+    , layEtag
+    , layDatasourceType
+    , layPublishingStatus
+    , layCreatorEmail
+    , layLayerType
+    , layLastModifiedTime
+    , layDatasources
+    , layLastModifierEmail
+    , layName
+    , layBbox
+    , layProcessingStatus
+    , layId
+    , layProjectId
+    , layDraftAccessList
+    , layPublishedAccessList
+    , layDescription
+    , layTags
+
+    -- * PointStyle
+    , PointStyle
+    , pointStyle
+    , psIcon
+    , psLabel
+
+    -- * RasterCollectionsListProcessingStatus
+    , RasterCollectionsListProcessingStatus (..)
+
+    -- * Raster
+    , Raster
+    , raster
+    , rrCreationTime
+    , rrWritersCanEditPermissions
+    , rrMaskType
+    , rrEtag
+    , rrCreatorEmail
+    , rrRasterType
+    , rrLastModifiedTime
+    , rrLastModifierEmail
+    , rrAcquisitionTime
+    , rrName
+    , rrBbox
+    , rrProcessingStatus
+    , rrFiles
+    , rrId
+    , rrProjectId
+    , rrDraftAccessList
+    , rrDescription
+    , rrAttribution
+    , rrTags
+
+    -- * PolygonStyle
+    , PolygonStyle
+    , polygonStyle
+    , pStroke
+    , pFill
+    , pLabel
+
+    -- * Permission
+    , Permission
+    , permission
+    , perRole
+    , perId
+    , perType
+    , perDiscoverable
+
+    -- * PublishedLayer
+    , PublishedLayer
+    , publishedLayer
+    , plLayerType
+    , plName
+    , plId
+    , plProjectId
+    , plDescription
+
+    -- * LayersListRole
+    , LayersListRole (..)
+
+    -- * Table
+    , Table
+    , table
+    , tabCreationTime
+    , tabWritersCanEditPermissions
+    , tabEtag
+    , tabCreatorEmail
+    , tabLastModifiedTime
+    , tabSchema
+    , tabLastModifierEmail
+    , tabName
+    , tabBbox
+    , tabProcessingStatus
+    , tabFiles
+    , tabId
+    , tabProjectId
+    , tabDraftAccessList
+    , tabPublishedAccessList
+    , tabSourceEncoding
+    , tabDescription
+    , tabTags
+
+    -- * File
+    , File
+    , file
+    , fSize
+    , fUploadStatus
+    , fFilename
+
+    -- * VectorStyle
+    , VectorStyle
+    , vectorStyle
+    , vsDisplayRules
+    , vsFeatureInfo
+    , vsType
+
+    -- * PermissionsBatchDeleteResponse
+    , PermissionsBatchDeleteResponse
+    , permissionsBatchDeleteResponse
+
+    -- * TablesFeaturesGetVersion
+    , TablesFeaturesGetVersion (..)
+
+    -- * MapKmlLink
+    , MapKmlLink
+    , mapKmlLink
+    , mklDefaultViewport
+    , mklVisibility
+    , mklName
+    , mklType
+    , mklKmlURL
+
+    -- * RasterCollectionRasterType
+    , RasterCollectionRasterType (..)
+
+    -- * RastersListRole
+    , RastersListRole (..)
+
+    -- * PermissionsBatchUpdateResponse
+    , PermissionsBatchUpdateResponse
+    , permissionsBatchUpdateResponse
+
+    -- * GeoJSONLineString
+    , GeoJSONLineString
+    , geoJSONLineString
+    , gjlsCoordinates
+    , gjlsType
+
+    -- * PublishedMapsListResponse
+    , PublishedMapsListResponse
+    , publishedMapsListResponse
+    , pmlrMaps
+    , pmlrNextPageToken
+
+    -- * MapsListResponse
+    , MapsListResponse
+    , mapsListResponse
+    , mlrMaps
+    , mlrNextPageToken
+
+    -- * MapPublishingStatus
+    , MapPublishingStatus (..)
+
+    -- * GeoJSONGeometryCollection
+    , GeoJSONGeometryCollection
+    , geoJSONGeometryCollection
+    , gjgcGeometries
+    , gjgcType
+
+    -- * GeoJSONPolygon
+    , GeoJSONPolygon
+    , geoJSONPolygon
+    , gjpCoordinates
+    , gjpType
+
+    -- * GeoJSONPoint
+    , GeoJSONPoint
+    , geoJSONPoint
+    , gjsonpCoordinates
+    , gjsonpType
+
+    -- * LayersListResponse
+    , LayersListResponse
+    , layersListResponse
+    , llrNextPageToken
+    , llrLayers
+
+    -- * RastersListResponse
+    , RastersListResponse
+    , rastersListResponse
+    , rlrNextPageToken
+    , rlrRasters
+
+    -- * FileUploadStatus
+    , FileUploadStatus (..)
+
+    -- * MapsListRole
+    , MapsListRole (..)
+
+    -- * TablesGetVersion
+    , TablesGetVersion (..)
+
+    -- * PermissionsListResponse
+    , PermissionsListResponse
+    , permissionsListResponse
+    , plrPermissions
+
+    -- * TableProcessingStatus
+    , TableProcessingStatus (..)
+
+    -- * LineStyle
+    , LineStyle
+    , lineStyle
+    , lsStroke
+    , lsBOrder
+    , lsDash
+    , lsLabel
+
+    -- * PublishedLayersListResponse
+    , PublishedLayersListResponse
+    , publishedLayersListResponse
+    , pllrNextPageToken
+    , pllrLayers
+    ) where
+
+import           Network.Google.MapsEngine.Types.Product
+import           Network.Google.MapsEngine.Types.Sum
+import           Network.Google.Prelude
+
+-- | Default request referring to version 'v1' of the Google Maps Engine API. This contains the host and root path used as a starting point for constructing service requests.
+mapsEngineService :: Service
+mapsEngineService
+  = defaultService (ServiceId "mapsengine:v1")
+      "www.googleapis.com"
+
+-- | View and manage your Google My Maps data
+mapsengineScope :: OAuthScope
+mapsengineScope = "https://www.googleapis.com/auth/mapsengine";
+
+-- | View your Google My Maps data
+mapsengineReadonlyScope :: OAuthScope
+mapsengineReadonlyScope = "https://www.googleapis.com/auth/mapsengine.readonly";
diff --git a/gen/Network/Google/MapsEngine/Types/Product.hs b/gen/Network/Google/MapsEngine/Types/Product.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/MapsEngine/Types/Product.hs
@@ -0,0 +1,5320 @@
+{-# 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.MapsEngine.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.MapsEngine.Types.Product where
+
+import           Network.Google.MapsEngine.Types.Sum
+import           Network.Google.Prelude
+
+-- | Range of values used for scaling shapes. The min\/max values will be
+-- drawn as shapes with the min\/max size.
+--
+-- /See:/ 'valueRange' smart constructor.
+data ValueRange = ValueRange
+    { _vrMax :: !(Maybe (Textual Double))
+    , _vrMin :: !(Maybe (Textual Double))
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ValueRange' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'vrMax'
+--
+-- * 'vrMin'
+valueRange
+    :: ValueRange
+valueRange =
+    ValueRange
+    { _vrMax = Nothing
+    , _vrMin = Nothing
+    }
+
+-- | Maximum value.
+vrMax :: Lens' ValueRange (Maybe Double)
+vrMax
+  = lens _vrMax (\ s a -> s{_vrMax = a}) .
+      mapping _Coerce
+
+-- | Minimum value.
+vrMin :: Lens' ValueRange (Maybe Double)
+vrMin
+  = lens _vrMin (\ s a -> s{_vrMin = a}) .
+      mapping _Coerce
+
+instance FromJSON ValueRange where
+        parseJSON
+          = withObject "ValueRange"
+              (\ o ->
+                 ValueRange <$> (o .:? "max") <*> (o .:? "min"))
+
+instance ToJSON ValueRange where
+        toJSON ValueRange{..}
+          = object
+              (catMaybes
+                 [("max" .=) <$> _vrMax, ("min" .=) <$> _vrMin])
+
+-- | The properties associated with a feature.
+--
+-- /See:/ 'geoJSONProperties' smart constructor.
+newtype GeoJSONProperties = GeoJSONProperties
+    { _gjpAddtional :: HashMap Text JSONValue
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'GeoJSONProperties' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'gjpAddtional'
+geoJSONProperties
+    :: HashMap Text JSONValue -- ^ 'gjpAddtional'
+    -> GeoJSONProperties
+geoJSONProperties pGjpAddtional_ =
+    GeoJSONProperties
+    { _gjpAddtional = _Coerce # pGjpAddtional_
+    }
+
+-- | An arbitrary key-value pair. The key must be the name of a column in the
+-- table\'s schema, and the type of the value must correspond to the type
+-- specified in the schema.
+gjpAddtional :: Lens' GeoJSONProperties (HashMap Text JSONValue)
+gjpAddtional
+  = lens _gjpAddtional (\ s a -> s{_gjpAddtional = a})
+      . _Coerce
+
+instance FromJSON GeoJSONProperties where
+        parseJSON
+          = withObject "GeoJSONProperties"
+              (\ o -> GeoJSONProperties <$> (parseJSONObject o))
+
+instance ToJSON GeoJSONProperties where
+        toJSON = toJSON . _gjpAddtional
+
+-- | A feature within a table.
+--
+-- /See:/ 'feature' smart constructor.
+data Feature = Feature
+    { _fGeometry   :: !(Maybe GeoJSONGeometry)
+    , _fType       :: !Text
+    , _fProperties :: !(Maybe GeoJSONProperties)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'Feature' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'fGeometry'
+--
+-- * 'fType'
+--
+-- * 'fProperties'
+feature
+    :: Feature
+feature =
+    Feature
+    { _fGeometry = Nothing
+    , _fType = "Feature"
+    , _fProperties = Nothing
+    }
+
+-- | The geometry member of this Feature.
+fGeometry :: Lens' Feature (Maybe GeoJSONGeometry)
+fGeometry
+  = lens _fGeometry (\ s a -> s{_fGeometry = a})
+
+-- | Identifies this object as a feature.
+fType :: Lens' Feature Text
+fType = lens _fType (\ s a -> s{_fType = a})
+
+-- | Key\/value pairs of this Feature.
+fProperties :: Lens' Feature (Maybe GeoJSONProperties)
+fProperties
+  = lens _fProperties (\ s a -> s{_fProperties = a})
+
+instance FromJSON Feature where
+        parseJSON
+          = withObject "Feature"
+              (\ o ->
+                 Feature <$>
+                   (o .:? "geometry") <*> (o .:? "type" .!= "Feature")
+                     <*> (o .:? "properties"))
+
+instance ToJSON Feature where
+        toJSON Feature{..}
+          = object
+              (catMaybes
+                 [("geometry" .=) <$> _fGeometry,
+                  Just ("type" .= _fType),
+                  ("properties" .=) <$> _fProperties])
+
+-- | A list of the parents of an asset.
+--
+-- /See:/ 'parent' smart constructor.
+newtype Parent = Parent
+    { _pId :: Maybe Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'Parent' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'pId'
+parent
+    :: Parent
+parent =
+    Parent
+    { _pId = Nothing
+    }
+
+-- | The ID of this parent.
+pId :: Lens' Parent (Maybe Text)
+pId = lens _pId (\ s a -> s{_pId = a})
+
+instance FromJSON Parent where
+        parseJSON
+          = withObject "Parent"
+              (\ o -> Parent <$> (o .:? "id"))
+
+instance ToJSON Parent where
+        toJSON Parent{..}
+          = object (catMaybes [("id" .=) <$> _pId])
+
+-- | The request sent to features.BatchPatch.
+--
+-- /See:/ 'featuresBatchPatchRequest' smart constructor.
+data FeaturesBatchPatchRequest = FeaturesBatchPatchRequest
+    { _fbprFeatures            :: !(Maybe [Feature])
+    , _fbprNormalizeGeometries :: !Bool
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'FeaturesBatchPatchRequest' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'fbprFeatures'
+--
+-- * 'fbprNormalizeGeometries'
+featuresBatchPatchRequest
+    :: FeaturesBatchPatchRequest
+featuresBatchPatchRequest =
+    FeaturesBatchPatchRequest
+    { _fbprFeatures = Nothing
+    , _fbprNormalizeGeometries = True
+    }
+
+fbprFeatures :: Lens' FeaturesBatchPatchRequest [Feature]
+fbprFeatures
+  = lens _fbprFeatures (\ s a -> s{_fbprFeatures = a})
+      . _Default
+      . _Coerce
+
+-- | If true, the server will normalize feature geometries. It is assumed
+-- that the South Pole is exterior to any polygons given. See here for a
+-- list of normalizations. If false, all feature geometries must be given
+-- already normalized. The points in all LinearRings must be listed in
+-- counter-clockwise order, and LinearRings may not intersect.
+fbprNormalizeGeometries :: Lens' FeaturesBatchPatchRequest Bool
+fbprNormalizeGeometries
+  = lens _fbprNormalizeGeometries
+      (\ s a -> s{_fbprNormalizeGeometries = a})
+
+instance FromJSON FeaturesBatchPatchRequest where
+        parseJSON
+          = withObject "FeaturesBatchPatchRequest"
+              (\ o ->
+                 FeaturesBatchPatchRequest <$>
+                   (o .:? "features" .!= mempty) <*>
+                     (o .:? "normalizeGeometries" .!= True))
+
+instance ToJSON FeaturesBatchPatchRequest where
+        toJSON FeaturesBatchPatchRequest{..}
+          = object
+              (catMaybes
+                 [("features" .=) <$> _fbprFeatures,
+                  Just
+                    ("normalizeGeometries" .= _fbprNormalizeGeometries)])
+
+-- | The request sent to mapsengine.permissions.batchUpdate.
+--
+-- /See:/ 'permissionsBatchUpdateRequest' smart constructor.
+newtype PermissionsBatchUpdateRequest = PermissionsBatchUpdateRequest
+    { _pburPermissions :: Maybe [Permission]
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'PermissionsBatchUpdateRequest' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'pburPermissions'
+permissionsBatchUpdateRequest
+    :: PermissionsBatchUpdateRequest
+permissionsBatchUpdateRequest =
+    PermissionsBatchUpdateRequest
+    { _pburPermissions = Nothing
+    }
+
+-- | The permissions to be inserted or updated.
+pburPermissions :: Lens' PermissionsBatchUpdateRequest [Permission]
+pburPermissions
+  = lens _pburPermissions
+      (\ s a -> s{_pburPermissions = a})
+      . _Default
+      . _Coerce
+
+instance FromJSON PermissionsBatchUpdateRequest where
+        parseJSON
+          = withObject "PermissionsBatchUpdateRequest"
+              (\ o ->
+                 PermissionsBatchUpdateRequest <$>
+                   (o .:? "permissions" .!= mempty))
+
+instance ToJSON PermissionsBatchUpdateRequest where
+        toJSON PermissionsBatchUpdateRequest{..}
+          = object
+              (catMaybes [("permissions" .=) <$> _pburPermissions])
+
+-- | The request sent to mapsengine.permissions.batchDelete.
+--
+-- /See:/ 'permissionsBatchDeleteRequest' smart constructor.
+newtype PermissionsBatchDeleteRequest = PermissionsBatchDeleteRequest
+    { _pbdrIds :: Maybe [Text]
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'PermissionsBatchDeleteRequest' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'pbdrIds'
+permissionsBatchDeleteRequest
+    :: PermissionsBatchDeleteRequest
+permissionsBatchDeleteRequest =
+    PermissionsBatchDeleteRequest
+    { _pbdrIds = Nothing
+    }
+
+-- | An array of permission ids to be removed. This could be the email
+-- address of the user or group this permission refers to, or the string
+-- \"anyone\" for public permissions.
+pbdrIds :: Lens' PermissionsBatchDeleteRequest [Text]
+pbdrIds
+  = lens _pbdrIds (\ s a -> s{_pbdrIds = a}) . _Default
+      . _Coerce
+
+instance FromJSON PermissionsBatchDeleteRequest where
+        parseJSON
+          = withObject "PermissionsBatchDeleteRequest"
+              (\ o ->
+                 PermissionsBatchDeleteRequest <$>
+                   (o .:? "ids" .!= mempty))
+
+instance ToJSON PermissionsBatchDeleteRequest where
+        toJSON PermissionsBatchDeleteRequest{..}
+          = object (catMaybes [("ids" .=) <$> _pbdrIds])
+
+-- | The response returned by a call to raster_collections.List. Note: The
+-- list response does not include all the fields available in a raster
+-- collection. Refer to the RasterCollection resource description for
+-- details of the fields that are not included. You\'ll need to send a get
+-- request to retrieve the additional fields for each raster collection.
+--
+-- /See:/ 'rasterCollectionsListResponse' smart constructor.
+data RasterCollectionsListResponse = RasterCollectionsListResponse
+    { _rclrNextPageToken     :: !(Maybe (Textual Word8))
+    , _rclrRasterCollections :: !(Maybe [RasterCollection])
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'RasterCollectionsListResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'rclrNextPageToken'
+--
+-- * 'rclrRasterCollections'
+rasterCollectionsListResponse
+    :: RasterCollectionsListResponse
+rasterCollectionsListResponse =
+    RasterCollectionsListResponse
+    { _rclrNextPageToken = Nothing
+    , _rclrRasterCollections = Nothing
+    }
+
+-- | Next page token.
+rclrNextPageToken :: Lens' RasterCollectionsListResponse (Maybe Word8)
+rclrNextPageToken
+  = lens _rclrNextPageToken
+      (\ s a -> s{_rclrNextPageToken = a})
+      . mapping _Coerce
+
+-- | Resources returned.
+rclrRasterCollections :: Lens' RasterCollectionsListResponse [RasterCollection]
+rclrRasterCollections
+  = lens _rclrRasterCollections
+      (\ s a -> s{_rclrRasterCollections = a})
+      . _Default
+      . _Coerce
+
+instance FromJSON RasterCollectionsListResponse where
+        parseJSON
+          = withObject "RasterCollectionsListResponse"
+              (\ o ->
+                 RasterCollectionsListResponse <$>
+                   (o .:? "nextPageToken") <*>
+                     (o .:? "rasterCollections" .!= mempty))
+
+instance ToJSON RasterCollectionsListResponse where
+        toJSON RasterCollectionsListResponse{..}
+          = object
+              (catMaybes
+                 [("nextPageToken" .=) <$> _rclrNextPageToken,
+                  ("rasterCollections" .=) <$> _rclrRasterCollections])
+
+-- | The response returned by a call to projects.List.
+--
+-- /See:/ 'projectsListResponse' smart constructor.
+newtype ProjectsListResponse = ProjectsListResponse
+    { _plrProjects :: Maybe [Project]
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ProjectsListResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'plrProjects'
+projectsListResponse
+    :: ProjectsListResponse
+projectsListResponse =
+    ProjectsListResponse
+    { _plrProjects = Nothing
+    }
+
+-- | Projects returned.
+plrProjects :: Lens' ProjectsListResponse [Project]
+plrProjects
+  = lens _plrProjects (\ s a -> s{_plrProjects = a}) .
+      _Default
+      . _Coerce
+
+instance FromJSON ProjectsListResponse where
+        parseJSON
+          = withObject "ProjectsListResponse"
+              (\ o ->
+                 ProjectsListResponse <$>
+                   (o .:? "projects" .!= mempty))
+
+instance ToJSON ProjectsListResponse where
+        toJSON ProjectsListResponse{..}
+          = object
+              (catMaybes [("projects" .=) <$> _plrProjects])
+
+--
+-- /See:/ 'geoJSONGeometry' smart constructor.
+data GeoJSONGeometry =
+    GeoJSONGeometry
+    deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'GeoJSONGeometry' with the minimum fields required to make a request.
+--
+geoJSONGeometry
+    :: GeoJSONGeometry
+geoJSONGeometry = GeoJSONGeometry
+
+instance FromJSON GeoJSONGeometry where
+        parseJSON
+          = withObject "GeoJSONGeometry"
+              (\ o -> pure GeoJSONGeometry)
+
+instance ToJSON GeoJSONGeometry where
+        toJSON = const emptyObject
+
+--
+-- /See:/ 'mapLayer' smart constructor.
+data MapLayer = MapLayer
+    { _mlDefaultViewport :: !(Maybe [Textual Double])
+    , _mlVisibility      :: !(Maybe Text)
+    , _mlKey             :: !(Maybe Text)
+    , _mlName            :: !(Maybe Text)
+    , _mlId              :: !(Maybe Text)
+    , _mlType            :: !(Maybe MapLayerType)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'MapLayer' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'mlDefaultViewport'
+--
+-- * 'mlVisibility'
+--
+-- * 'mlKey'
+--
+-- * 'mlName'
+--
+-- * 'mlId'
+--
+-- * 'mlType'
+mapLayer
+    :: MapLayer
+mapLayer =
+    MapLayer
+    { _mlDefaultViewport = Nothing
+    , _mlVisibility = Nothing
+    , _mlKey = Nothing
+    , _mlName = Nothing
+    , _mlId = Nothing
+    , _mlType = Nothing
+    }
+
+-- | An array of four numbers (west, south, east, north) which defines the
+-- rectangular bounding box of the default viewport. The numbers represent
+-- latitude and longitude in decimal degrees.
+mlDefaultViewport :: Lens' MapLayer [Double]
+mlDefaultViewport
+  = lens _mlDefaultViewport
+      (\ s a -> s{_mlDefaultViewport = a})
+      . _Default
+      . _Coerce
+
+-- | The visibility setting of this MapLayer. One of \"defaultOn\" or
+-- \"defaultOff\".
+mlVisibility :: Lens' MapLayer (Maybe Text)
+mlVisibility
+  = lens _mlVisibility (\ s a -> s{_mlVisibility = a})
+
+-- | A user defined alias for this MapLayer, specific to this Map.
+mlKey :: Lens' MapLayer (Maybe Text)
+mlKey = lens _mlKey (\ s a -> s{_mlKey = a})
+
+-- | The name of this MapLayer.
+mlName :: Lens' MapLayer (Maybe Text)
+mlName = lens _mlName (\ s a -> s{_mlName = a})
+
+-- | The ID of this MapLayer. This ID can be used to request more details
+-- about the layer.
+mlId :: Lens' MapLayer (Maybe Text)
+mlId = lens _mlId (\ s a -> s{_mlId = a})
+
+-- | Identifies this object as a MapLayer.
+mlType :: Lens' MapLayer (Maybe MapLayerType)
+mlType = lens _mlType (\ s a -> s{_mlType = a})
+
+instance FromJSON MapLayer where
+        parseJSON
+          = withObject "MapLayer"
+              (\ o ->
+                 MapLayer <$>
+                   (o .:? "defaultViewport" .!= mempty) <*>
+                     (o .:? "visibility")
+                     <*> (o .:? "key")
+                     <*> (o .:? "name")
+                     <*> (o .:? "id")
+                     <*> (o .:? "type"))
+
+instance ToJSON MapLayer where
+        toJSON MapLayer{..}
+          = object
+              (catMaybes
+                 [("defaultViewport" .=) <$> _mlDefaultViewport,
+                  ("visibility" .=) <$> _mlVisibility,
+                  ("key" .=) <$> _mlKey, ("name" .=) <$> _mlName,
+                  ("id" .=) <$> _mlId, ("type" .=) <$> _mlType])
+
+-- | Zoom level range. Zoom levels are restricted between 0 and 24,
+-- inclusive.
+--
+-- /See:/ 'zoomLevels' smart constructor.
+data ZoomLevels = ZoomLevels
+    { _zlMax :: !(Maybe (Textual Int32))
+    , _zlMin :: !(Maybe (Textual Int32))
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ZoomLevels' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'zlMax'
+--
+-- * 'zlMin'
+zoomLevels
+    :: ZoomLevels
+zoomLevels =
+    ZoomLevels
+    { _zlMax = Nothing
+    , _zlMin = Nothing
+    }
+
+-- | Maximum zoom level.
+zlMax :: Lens' ZoomLevels (Maybe Int32)
+zlMax
+  = lens _zlMax (\ s a -> s{_zlMax = a}) .
+      mapping _Coerce
+
+-- | Minimum zoom level.
+zlMin :: Lens' ZoomLevels (Maybe Int32)
+zlMin
+  = lens _zlMin (\ s a -> s{_zlMin = a}) .
+      mapping _Coerce
+
+instance FromJSON ZoomLevels where
+        parseJSON
+          = withObject "ZoomLevels"
+              (\ o ->
+                 ZoomLevels <$> (o .:? "max") <*> (o .:? "min"))
+
+instance ToJSON ZoomLevels where
+        toJSON ZoomLevels{..}
+          = object
+              (catMaybes
+                 [("max" .=) <$> _zlMax, ("min" .=) <$> _zlMin])
+
+-- | A feature info contains information about individual feature.
+--
+-- /See:/ 'featureInfo' smart constructor.
+newtype FeatureInfo = FeatureInfo
+    { _fiContent :: Maybe Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'FeatureInfo' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'fiContent'
+featureInfo
+    :: FeatureInfo
+featureInfo =
+    FeatureInfo
+    { _fiContent = Nothing
+    }
+
+-- | HTML template of the info window. If not provided, a default template
+-- with all attributes will be generated.
+fiContent :: Lens' FeatureInfo (Maybe Text)
+fiContent
+  = lens _fiContent (\ s a -> s{_fiContent = a})
+
+instance FromJSON FeatureInfo where
+        parseJSON
+          = withObject "FeatureInfo"
+              (\ o -> FeatureInfo <$> (o .:? "content"))
+
+instance ToJSON FeatureInfo where
+        toJSON FeatureInfo{..}
+          = object (catMaybes [("content" .=) <$> _fiContent])
+
+-- | Scaled shape size range in pixels. For circles, size corresponds to
+-- diameter.
+--
+-- /See:/ 'sizeRange' smart constructor.
+data SizeRange = SizeRange
+    { _srMax :: !(Maybe (Textual Double))
+    , _srMin :: !(Maybe (Textual Double))
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'SizeRange' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'srMax'
+--
+-- * 'srMin'
+sizeRange
+    :: SizeRange
+sizeRange =
+    SizeRange
+    { _srMax = Nothing
+    , _srMin = Nothing
+    }
+
+-- | Maximum size, in pixels.
+srMax :: Lens' SizeRange (Maybe Double)
+srMax
+  = lens _srMax (\ s a -> s{_srMax = a}) .
+      mapping _Coerce
+
+-- | Minimum size, in pixels.
+srMin :: Lens' SizeRange (Maybe Double)
+srMin
+  = lens _srMin (\ s a -> s{_srMin = a}) .
+      mapping _Coerce
+
+instance FromJSON SizeRange where
+        parseJSON
+          = withObject "SizeRange"
+              (\ o ->
+                 SizeRange <$> (o .:? "max") <*> (o .:? "min"))
+
+instance ToJSON SizeRange where
+        toJSON SizeRange{..}
+          = object
+              (catMaybes
+                 [("max" .=) <$> _srMax, ("min" .=) <$> _srMin])
+
+--
+-- /See:/ 'mapFolder' smart constructor.
+data MapFolder = MapFolder
+    { _mfExpandable      :: !(Maybe Bool)
+    , _mfDefaultViewport :: !(Maybe [Textual Double])
+    , _mfContents        :: !(Maybe [MapItem])
+    , _mfVisibility      :: !(Maybe Text)
+    , _mfKey             :: !(Maybe Text)
+    , _mfName            :: !(Maybe Text)
+    , _mfType            :: !(Maybe MapFolderType)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'MapFolder' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'mfExpandable'
+--
+-- * 'mfDefaultViewport'
+--
+-- * 'mfContents'
+--
+-- * 'mfVisibility'
+--
+-- * 'mfKey'
+--
+-- * 'mfName'
+--
+-- * 'mfType'
+mapFolder
+    :: MapFolder
+mapFolder =
+    MapFolder
+    { _mfExpandable = Nothing
+    , _mfDefaultViewport = Nothing
+    , _mfContents = Nothing
+    , _mfVisibility = Nothing
+    , _mfKey = Nothing
+    , _mfName = Nothing
+    , _mfType = Nothing
+    }
+
+-- | The expandability setting of this MapFolder. If true, the folder can be
+-- expanded.
+mfExpandable :: Lens' MapFolder (Maybe Bool)
+mfExpandable
+  = lens _mfExpandable (\ s a -> s{_mfExpandable = a})
+
+-- | An array of four numbers (west, south, east, north) which defines the
+-- rectangular bounding box of the default viewport. The numbers represent
+-- latitude and longitude in decimal degrees.
+mfDefaultViewport :: Lens' MapFolder [Double]
+mfDefaultViewport
+  = lens _mfDefaultViewport
+      (\ s a -> s{_mfDefaultViewport = a})
+      . _Default
+      . _Coerce
+
+mfContents :: Lens' MapFolder [MapItem]
+mfContents
+  = lens _mfContents (\ s a -> s{_mfContents = a}) .
+      _Default
+      . _Coerce
+
+-- | The visibility setting of this MapFolder. One of \"defaultOn\" or
+-- \"defaultOff\".
+mfVisibility :: Lens' MapFolder (Maybe Text)
+mfVisibility
+  = lens _mfVisibility (\ s a -> s{_mfVisibility = a})
+
+-- | A user defined alias for this MapFolder, specific to this Map.
+mfKey :: Lens' MapFolder (Maybe Text)
+mfKey = lens _mfKey (\ s a -> s{_mfKey = a})
+
+-- | The name of this MapFolder.
+mfName :: Lens' MapFolder (Maybe Text)
+mfName = lens _mfName (\ s a -> s{_mfName = a})
+
+-- | Identifies this object as a MapFolder.
+mfType :: Lens' MapFolder (Maybe MapFolderType)
+mfType = lens _mfType (\ s a -> s{_mfType = a})
+
+instance FromJSON MapFolder where
+        parseJSON
+          = withObject "MapFolder"
+              (\ o ->
+                 MapFolder <$>
+                   (o .:? "expandable") <*>
+                     (o .:? "defaultViewport" .!= mempty)
+                     <*> (o .:? "contents" .!= mempty)
+                     <*> (o .:? "visibility")
+                     <*> (o .:? "key")
+                     <*> (o .:? "name")
+                     <*> (o .:? "type"))
+
+instance ToJSON MapFolder where
+        toJSON MapFolder{..}
+          = object
+              (catMaybes
+                 [("expandable" .=) <$> _mfExpandable,
+                  ("defaultViewport" .=) <$> _mfDefaultViewport,
+                  ("contents" .=) <$> _mfContents,
+                  ("visibility" .=) <$> _mfVisibility,
+                  ("key" .=) <$> _mfKey, ("name" .=) <$> _mfName,
+                  ("type" .=) <$> _mfType])
+
+-- | A Maps Engine project groups a collection of resources.
+--
+-- /See:/ 'project' smart constructor.
+data Project = Project
+    { _proName :: !(Maybe Text)
+    , _proId   :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'Project' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'proName'
+--
+-- * 'proId'
+project
+    :: Project
+project =
+    Project
+    { _proName = Nothing
+    , _proId = Nothing
+    }
+
+-- | A user provided name for this Maps Engine project.
+proName :: Lens' Project (Maybe Text)
+proName = lens _proName (\ s a -> s{_proName = a})
+
+-- | An ID used to refer to this Maps Engine project.
+proId :: Lens' Project (Maybe Text)
+proId = lens _proId (\ s a -> s{_proId = a})
+
+instance FromJSON Project where
+        parseJSON
+          = withObject "Project"
+              (\ o -> Project <$> (o .:? "name") <*> (o .:? "id"))
+
+instance ToJSON Project where
+        toJSON Project{..}
+          = object
+              (catMaybes
+                 [("name" .=) <$> _proName, ("id" .=) <$> _proId])
+
+-- | Basic color used in styling.
+--
+-- /See:/ 'color' smart constructor.
+data Color = Color
+    { _cColor   :: !(Maybe Text)
+    , _cOpacity :: !(Maybe (Textual Double))
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'Color' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'cColor'
+--
+-- * 'cOpacity'
+color
+    :: Color
+color =
+    Color
+    { _cColor = Nothing
+    , _cOpacity = Nothing
+    }
+
+-- | The CSS style color, can be in format of \"red\" or \"#7733EE\".
+cColor :: Lens' Color (Maybe Text)
+cColor = lens _cColor (\ s a -> s{_cColor = a})
+
+-- | Opacity ranges from 0 to 1, inclusive. If not provided, default to 1.
+cOpacity :: Lens' Color (Maybe Double)
+cOpacity
+  = lens _cOpacity (\ s a -> s{_cOpacity = a}) .
+      mapping _Coerce
+
+instance FromJSON Color where
+        parseJSON
+          = withObject "Color"
+              (\ o ->
+                 Color <$> (o .:? "color") <*> (o .:? "opacity"))
+
+instance ToJSON Color where
+        toJSON Color{..}
+          = object
+              (catMaybes
+                 [("color" .=) <$> _cColor,
+                  ("opacity" .=) <$> _cOpacity])
+
+-- | A raster collection groups multiple Raster resources for inclusion in a
+-- Layer.
+--
+-- /See:/ 'rasterCollection' smart constructor.
+data RasterCollection = RasterCollection
+    { _rcCreationTime              :: !(Maybe DateTime')
+    , _rcWritersCanEditPermissions :: !(Maybe Bool)
+    , _rcEtag                      :: !(Maybe Text)
+    , _rcCreatorEmail              :: !(Maybe Text)
+    , _rcRasterType                :: !(Maybe RasterCollectionRasterType)
+    , _rcLastModifiedTime          :: !(Maybe DateTime')
+    , _rcLastModifierEmail         :: !(Maybe Text)
+    , _rcName                      :: !(Maybe Text)
+    , _rcBbox                      :: !(Maybe [Textual Double])
+    , _rcProcessingStatus          :: !(Maybe RasterCollectionProcessingStatus)
+    , _rcMosaic                    :: !(Maybe Bool)
+    , _rcId                        :: !(Maybe Text)
+    , _rcProjectId                 :: !(Maybe Text)
+    , _rcDraftAccessList           :: !(Maybe Text)
+    , _rcDescription               :: !(Maybe Text)
+    , _rcAttribution               :: !(Maybe Text)
+    , _rcTags                      :: !(Maybe [Text])
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'RasterCollection' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'rcCreationTime'
+--
+-- * 'rcWritersCanEditPermissions'
+--
+-- * 'rcEtag'
+--
+-- * 'rcCreatorEmail'
+--
+-- * 'rcRasterType'
+--
+-- * 'rcLastModifiedTime'
+--
+-- * 'rcLastModifierEmail'
+--
+-- * 'rcName'
+--
+-- * 'rcBbox'
+--
+-- * 'rcProcessingStatus'
+--
+-- * 'rcMosaic'
+--
+-- * 'rcId'
+--
+-- * 'rcProjectId'
+--
+-- * 'rcDraftAccessList'
+--
+-- * 'rcDescription'
+--
+-- * 'rcAttribution'
+--
+-- * 'rcTags'
+rasterCollection
+    :: RasterCollection
+rasterCollection =
+    RasterCollection
+    { _rcCreationTime = Nothing
+    , _rcWritersCanEditPermissions = Nothing
+    , _rcEtag = Nothing
+    , _rcCreatorEmail = Nothing
+    , _rcRasterType = Nothing
+    , _rcLastModifiedTime = Nothing
+    , _rcLastModifierEmail = Nothing
+    , _rcName = Nothing
+    , _rcBbox = Nothing
+    , _rcProcessingStatus = Nothing
+    , _rcMosaic = Nothing
+    , _rcId = Nothing
+    , _rcProjectId = Nothing
+    , _rcDraftAccessList = Nothing
+    , _rcDescription = Nothing
+    , _rcAttribution = Nothing
+    , _rcTags = Nothing
+    }
+
+-- | The creation time of this RasterCollection. The value is an RFC 3339
+-- formatted date-time value (e.g. 1970-01-01T00:00:00Z).
+rcCreationTime :: Lens' RasterCollection (Maybe UTCTime)
+rcCreationTime
+  = lens _rcCreationTime
+      (\ s a -> s{_rcCreationTime = a})
+      . mapping _DateTime
+
+-- | If true, WRITERs of the asset are able to edit the asset permissions.
+rcWritersCanEditPermissions :: Lens' RasterCollection (Maybe Bool)
+rcWritersCanEditPermissions
+  = lens _rcWritersCanEditPermissions
+      (\ s a -> s{_rcWritersCanEditPermissions = a})
+
+-- | The ETag, used to refer to the current version of the asset.
+rcEtag :: Lens' RasterCollection (Maybe Text)
+rcEtag = lens _rcEtag (\ s a -> s{_rcEtag = a})
+
+-- | The email address of the creator of this raster collection. This is only
+-- returned on GET requests and not LIST requests.
+rcCreatorEmail :: Lens' RasterCollection (Maybe Text)
+rcCreatorEmail
+  = lens _rcCreatorEmail
+      (\ s a -> s{_rcCreatorEmail = a})
+
+-- | The type of rasters contained within this RasterCollection.
+rcRasterType :: Lens' RasterCollection (Maybe RasterCollectionRasterType)
+rcRasterType
+  = lens _rcRasterType (\ s a -> s{_rcRasterType = a})
+
+-- | The last modified time of this RasterCollection. The value is an RFC
+-- 3339 formatted date-time value (e.g. 1970-01-01T00:00:00Z).
+rcLastModifiedTime :: Lens' RasterCollection (Maybe UTCTime)
+rcLastModifiedTime
+  = lens _rcLastModifiedTime
+      (\ s a -> s{_rcLastModifiedTime = a})
+      . mapping _DateTime
+
+-- | The email address of the last modifier of this raster collection. This
+-- is only returned on GET requests and not LIST requests.
+rcLastModifierEmail :: Lens' RasterCollection (Maybe Text)
+rcLastModifierEmail
+  = lens _rcLastModifierEmail
+      (\ s a -> s{_rcLastModifierEmail = a})
+
+-- | The name of this RasterCollection, supplied by the author.
+rcName :: Lens' RasterCollection (Maybe Text)
+rcName = lens _rcName (\ s a -> s{_rcName = a})
+
+-- | A rectangular bounding box which contains all of the data in this
+-- RasterCollection. The box is expressed as \\\"west, south, east,
+-- north\\\". The numbers represent latitude and longitude in decimal
+-- degrees.
+rcBbox :: Lens' RasterCollection [Double]
+rcBbox
+  = lens _rcBbox (\ s a -> s{_rcBbox = a}) . _Default .
+      _Coerce
+
+-- | The processing status of this RasterCollection.
+rcProcessingStatus :: Lens' RasterCollection (Maybe RasterCollectionProcessingStatus)
+rcProcessingStatus
+  = lens _rcProcessingStatus
+      (\ s a -> s{_rcProcessingStatus = a})
+
+-- | True if this RasterCollection is a mosaic.
+rcMosaic :: Lens' RasterCollection (Maybe Bool)
+rcMosaic = lens _rcMosaic (\ s a -> s{_rcMosaic = a})
+
+-- | A globally unique ID, used to refer to this RasterCollection.
+rcId :: Lens' RasterCollection (Maybe Text)
+rcId = lens _rcId (\ s a -> s{_rcId = a})
+
+-- | The ID of the project that this RasterCollection is in.
+rcProjectId :: Lens' RasterCollection (Maybe Text)
+rcProjectId
+  = lens _rcProjectId (\ s a -> s{_rcProjectId = a})
+
+-- | Deprecated: The name of an access list of the Map Editor type. The user
+-- on whose behalf the request is being sent must be an editor on that
+-- access list. Note: Google Maps Engine no longer uses access lists.
+-- Instead, each asset has its own list of permissions. For backward
+-- compatibility, the API still accepts access lists for projects that are
+-- already using access lists. If you created a GME account\/project after
+-- July 14th, 2014, you will not be able to send API requests that include
+-- access lists. Note: This is an input field only. It is not returned in
+-- response to a list or get request.
+rcDraftAccessList :: Lens' RasterCollection (Maybe Text)
+rcDraftAccessList
+  = lens _rcDraftAccessList
+      (\ s a -> s{_rcDraftAccessList = a})
+
+-- | The description of this RasterCollection, supplied by the author.
+rcDescription :: Lens' RasterCollection (Maybe Text)
+rcDescription
+  = lens _rcDescription
+      (\ s a -> s{_rcDescription = a})
+
+-- | The name of the attribution to be used for this RasterCollection. Note:
+-- Attribution is returned in response to a get request but not a list
+-- request. After requesting a list of raster collections, you\'ll need to
+-- send a get request to retrieve the attribution for each raster
+-- collection.
+rcAttribution :: Lens' RasterCollection (Maybe Text)
+rcAttribution
+  = lens _rcAttribution
+      (\ s a -> s{_rcAttribution = a})
+
+-- | Tags of this RasterCollection.
+rcTags :: Lens' RasterCollection [Text]
+rcTags
+  = lens _rcTags (\ s a -> s{_rcTags = a}) . _Default .
+      _Coerce
+
+instance FromJSON RasterCollection where
+        parseJSON
+          = withObject "RasterCollection"
+              (\ o ->
+                 RasterCollection <$>
+                   (o .:? "creationTime") <*>
+                     (o .:? "writersCanEditPermissions")
+                     <*> (o .:? "etag")
+                     <*> (o .:? "creatorEmail")
+                     <*> (o .:? "rasterType")
+                     <*> (o .:? "lastModifiedTime")
+                     <*> (o .:? "lastModifierEmail")
+                     <*> (o .:? "name")
+                     <*> (o .:? "bbox" .!= mempty)
+                     <*> (o .:? "processingStatus")
+                     <*> (o .:? "mosaic")
+                     <*> (o .:? "id")
+                     <*> (o .:? "projectId")
+                     <*> (o .:? "draftAccessList")
+                     <*> (o .:? "description")
+                     <*> (o .:? "attribution")
+                     <*> (o .:? "tags"))
+
+instance ToJSON RasterCollection where
+        toJSON RasterCollection{..}
+          = object
+              (catMaybes
+                 [("creationTime" .=) <$> _rcCreationTime,
+                  ("writersCanEditPermissions" .=) <$>
+                    _rcWritersCanEditPermissions,
+                  ("etag" .=) <$> _rcEtag,
+                  ("creatorEmail" .=) <$> _rcCreatorEmail,
+                  ("rasterType" .=) <$> _rcRasterType,
+                  ("lastModifiedTime" .=) <$> _rcLastModifiedTime,
+                  ("lastModifierEmail" .=) <$> _rcLastModifierEmail,
+                  ("name" .=) <$> _rcName, ("bbox" .=) <$> _rcBbox,
+                  ("processingStatus" .=) <$> _rcProcessingStatus,
+                  ("mosaic" .=) <$> _rcMosaic, ("id" .=) <$> _rcId,
+                  ("projectId" .=) <$> _rcProjectId,
+                  ("draftAccessList" .=) <$> _rcDraftAccessList,
+                  ("description" .=) <$> _rcDescription,
+                  ("attribution" .=) <$> _rcAttribution,
+                  ("tags" .=) <$> _rcTags])
+
+-- | Stroke of the line.
+--
+-- /See:/ 'lineStyleStroke' smart constructor.
+data LineStyleStroke = LineStyleStroke
+    { _lssColor   :: !(Maybe Text)
+    , _lssWidth   :: !(Maybe (Textual Double))
+    , _lssOpacity :: !(Maybe (Textual Double))
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'LineStyleStroke' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'lssColor'
+--
+-- * 'lssWidth'
+--
+-- * 'lssOpacity'
+lineStyleStroke
+    :: LineStyleStroke
+lineStyleStroke =
+    LineStyleStroke
+    { _lssColor = Nothing
+    , _lssWidth = Nothing
+    , _lssOpacity = Nothing
+    }
+
+-- | Color of the line.
+lssColor :: Lens' LineStyleStroke (Maybe Text)
+lssColor = lens _lssColor (\ s a -> s{_lssColor = a})
+
+-- | Width of the line, in pixels. 0 \<= width \<= 10. If width is set to 0,
+-- the line will be invisible.
+lssWidth :: Lens' LineStyleStroke (Maybe Double)
+lssWidth
+  = lens _lssWidth (\ s a -> s{_lssWidth = a}) .
+      mapping _Coerce
+
+-- | Opacity of the line.
+lssOpacity :: Lens' LineStyleStroke (Maybe Double)
+lssOpacity
+  = lens _lssOpacity (\ s a -> s{_lssOpacity = a}) .
+      mapping _Coerce
+
+instance FromJSON LineStyleStroke where
+        parseJSON
+          = withObject "LineStyleStroke"
+              (\ o ->
+                 LineStyleStroke <$>
+                   (o .:? "color") <*> (o .:? "width") <*>
+                     (o .:? "opacity"))
+
+instance ToJSON LineStyleStroke where
+        toJSON LineStyleStroke{..}
+          = object
+              (catMaybes
+                 [("color" .=) <$> _lssColor,
+                  ("width" .=) <$> _lssWidth,
+                  ("opacity" .=) <$> _lssOpacity])
+
+-- | The response returned by a call to
+-- rasterCollections.rasters.batchDelete.
+--
+-- /See:/ 'rasterCollectionsRastersBatchDeleteResponse' smart constructor.
+data RasterCollectionsRastersBatchDeleteResponse =
+    RasterCollectionsRastersBatchDeleteResponse
+    deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'RasterCollectionsRastersBatchDeleteResponse' with the minimum fields required to make a request.
+--
+rasterCollectionsRastersBatchDeleteResponse
+    :: RasterCollectionsRastersBatchDeleteResponse
+rasterCollectionsRastersBatchDeleteResponse =
+    RasterCollectionsRastersBatchDeleteResponse
+
+instance FromJSON
+         RasterCollectionsRastersBatchDeleteResponse where
+        parseJSON
+          = withObject
+              "RasterCollectionsRastersBatchDeleteResponse"
+              (\ o ->
+                 pure RasterCollectionsRastersBatchDeleteResponse)
+
+instance ToJSON
+         RasterCollectionsRastersBatchDeleteResponse where
+        toJSON = const emptyObject
+
+-- | The response returned by a call to any asset\'s Process method.
+--
+-- /See:/ 'processResponse' smart constructor.
+data ProcessResponse =
+    ProcessResponse
+    deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ProcessResponse' with the minimum fields required to make a request.
+--
+processResponse
+    :: ProcessResponse
+processResponse = ProcessResponse
+
+instance FromJSON ProcessResponse where
+        parseJSON
+          = withObject "ProcessResponse"
+              (\ o -> pure ProcessResponse)
+
+instance ToJSON ProcessResponse where
+        toJSON = const emptyObject
+
+--
+-- /See:/ 'tableColumn' smart constructor.
+data TableColumn = TableColumn
+    { _tcName :: !(Maybe Text)
+    , _tcType :: !(Maybe TableColumnType)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'TableColumn' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'tcName'
+--
+-- * 'tcType'
+tableColumn
+    :: TableColumn
+tableColumn =
+    TableColumn
+    { _tcName = Nothing
+    , _tcType = Nothing
+    }
+
+-- | The column name.
+tcName :: Lens' TableColumn (Maybe Text)
+tcName = lens _tcName (\ s a -> s{_tcName = a})
+
+-- | The type of data stored in this column.
+tcType :: Lens' TableColumn (Maybe TableColumnType)
+tcType = lens _tcType (\ s a -> s{_tcType = a})
+
+instance FromJSON TableColumn where
+        parseJSON
+          = withObject "TableColumn"
+              (\ o ->
+                 TableColumn <$> (o .:? "name") <*> (o .:? "type"))
+
+instance ToJSON TableColumn where
+        toJSON TableColumn{..}
+          = object
+              (catMaybes
+                 [("name" .=) <$> _tcName, ("type" .=) <$> _tcType])
+
+-- | An asset is any Google Maps Engine resource that has a globally unique
+-- ID. Assets include maps, layers, vector tables, raster collections, and
+-- rasters. Projects and features are not considered assets. More detailed
+-- information about an asset can be obtained by querying the asset\'s
+-- particular endpoint.
+--
+-- /See:/ 'asset' smart constructor.
+data Asset = Asset
+    { _aCreationTime              :: !(Maybe DateTime')
+    , _aWritersCanEditPermissions :: !(Maybe Bool)
+    , _aEtag                      :: !(Maybe Text)
+    , _aCreatorEmail              :: !(Maybe Text)
+    , _aLastModifiedTime          :: !(Maybe DateTime')
+    , _aLastModifierEmail         :: !(Maybe Text)
+    , _aName                      :: !(Maybe Text)
+    , _aBbox                      :: !(Maybe [Textual Double])
+    , _aResource                  :: !(Maybe Text)
+    , _aId                        :: !(Maybe Text)
+    , _aProjectId                 :: !(Maybe Text)
+    , _aType                      :: !(Maybe AssetType)
+    , _aDescription               :: !(Maybe Text)
+    , _aTags                      :: !(Maybe [Text])
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'Asset' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'aCreationTime'
+--
+-- * 'aWritersCanEditPermissions'
+--
+-- * 'aEtag'
+--
+-- * 'aCreatorEmail'
+--
+-- * 'aLastModifiedTime'
+--
+-- * 'aLastModifierEmail'
+--
+-- * 'aName'
+--
+-- * 'aBbox'
+--
+-- * 'aResource'
+--
+-- * 'aId'
+--
+-- * 'aProjectId'
+--
+-- * 'aType'
+--
+-- * 'aDescription'
+--
+-- * 'aTags'
+asset
+    :: Asset
+asset =
+    Asset
+    { _aCreationTime = Nothing
+    , _aWritersCanEditPermissions = Nothing
+    , _aEtag = Nothing
+    , _aCreatorEmail = Nothing
+    , _aLastModifiedTime = Nothing
+    , _aLastModifierEmail = Nothing
+    , _aName = Nothing
+    , _aBbox = Nothing
+    , _aResource = Nothing
+    , _aId = Nothing
+    , _aProjectId = Nothing
+    , _aType = Nothing
+    , _aDescription = Nothing
+    , _aTags = Nothing
+    }
+
+-- | The creation time of this asset. The value is an RFC 3339-formatted
+-- date-time value (for example, 1970-01-01T00:00:00Z).
+aCreationTime :: Lens' Asset (Maybe UTCTime)
+aCreationTime
+  = lens _aCreationTime
+      (\ s a -> s{_aCreationTime = a})
+      . mapping _DateTime
+
+-- | If true, WRITERs of the asset are able to edit the asset permissions.
+aWritersCanEditPermissions :: Lens' Asset (Maybe Bool)
+aWritersCanEditPermissions
+  = lens _aWritersCanEditPermissions
+      (\ s a -> s{_aWritersCanEditPermissions = a})
+
+-- | The ETag, used to refer to the current version of the asset.
+aEtag :: Lens' Asset (Maybe Text)
+aEtag = lens _aEtag (\ s a -> s{_aEtag = a})
+
+-- | The email address of the creator of this asset. This is only returned on
+-- GET requests and not LIST requests.
+aCreatorEmail :: Lens' Asset (Maybe Text)
+aCreatorEmail
+  = lens _aCreatorEmail
+      (\ s a -> s{_aCreatorEmail = a})
+
+-- | The last modified time of this asset. The value is an RFC 3339-formatted
+-- date-time value (for example, 1970-01-01T00:00:00Z).
+aLastModifiedTime :: Lens' Asset (Maybe UTCTime)
+aLastModifiedTime
+  = lens _aLastModifiedTime
+      (\ s a -> s{_aLastModifiedTime = a})
+      . mapping _DateTime
+
+-- | The email address of the last modifier of this asset. This is only
+-- returned on GET requests and not LIST requests.
+aLastModifierEmail :: Lens' Asset (Maybe Text)
+aLastModifierEmail
+  = lens _aLastModifierEmail
+      (\ s a -> s{_aLastModifierEmail = a})
+
+-- | The asset\'s name.
+aName :: Lens' Asset (Maybe Text)
+aName = lens _aName (\ s a -> s{_aName = a})
+
+-- | A rectangular bounding box which contains all of the data in this asset.
+-- The box is expressed as \\\"west, south, east, north\\\". The numbers
+-- represent latitude and longitude in decimal degrees.
+aBbox :: Lens' Asset [Double]
+aBbox
+  = lens _aBbox (\ s a -> s{_aBbox = a}) . _Default .
+      _Coerce
+
+-- | The URL to query to retrieve the asset\'s complete object. The assets
+-- endpoint only returns high-level information about a resource.
+aResource :: Lens' Asset (Maybe Text)
+aResource
+  = lens _aResource (\ s a -> s{_aResource = a})
+
+-- | The asset\'s globally unique ID.
+aId :: Lens' Asset (Maybe Text)
+aId = lens _aId (\ s a -> s{_aId = a})
+
+-- | The ID of the project to which the asset belongs.
+aProjectId :: Lens' Asset (Maybe Text)
+aProjectId
+  = lens _aProjectId (\ s a -> s{_aProjectId = a})
+
+-- | The type of asset. One of raster, rasterCollection, table, map, or
+-- layer.
+aType :: Lens' Asset (Maybe AssetType)
+aType = lens _aType (\ s a -> s{_aType = a})
+
+-- | The asset\'s description.
+aDescription :: Lens' Asset (Maybe Text)
+aDescription
+  = lens _aDescription (\ s a -> s{_aDescription = a})
+
+-- | An array of text strings, with each string representing a tag. More
+-- information about tags can be found in the Tagging data article of the
+-- Maps Engine help center.
+aTags :: Lens' Asset [Text]
+aTags
+  = lens _aTags (\ s a -> s{_aTags = a}) . _Default .
+      _Coerce
+
+instance FromJSON Asset where
+        parseJSON
+          = withObject "Asset"
+              (\ o ->
+                 Asset <$>
+                   (o .:? "creationTime") <*>
+                     (o .:? "writersCanEditPermissions")
+                     <*> (o .:? "etag")
+                     <*> (o .:? "creatorEmail")
+                     <*> (o .:? "lastModifiedTime")
+                     <*> (o .:? "lastModifierEmail")
+                     <*> (o .:? "name")
+                     <*> (o .:? "bbox" .!= mempty)
+                     <*> (o .:? "resource")
+                     <*> (o .:? "id")
+                     <*> (o .:? "projectId")
+                     <*> (o .:? "type")
+                     <*> (o .:? "description")
+                     <*> (o .:? "tags" .!= mempty))
+
+instance ToJSON Asset where
+        toJSON Asset{..}
+          = object
+              (catMaybes
+                 [("creationTime" .=) <$> _aCreationTime,
+                  ("writersCanEditPermissions" .=) <$>
+                    _aWritersCanEditPermissions,
+                  ("etag" .=) <$> _aEtag,
+                  ("creatorEmail" .=) <$> _aCreatorEmail,
+                  ("lastModifiedTime" .=) <$> _aLastModifiedTime,
+                  ("lastModifierEmail" .=) <$> _aLastModifierEmail,
+                  ("name" .=) <$> _aName, ("bbox" .=) <$> _aBbox,
+                  ("resource" .=) <$> _aResource, ("id" .=) <$> _aId,
+                  ("projectId" .=) <$> _aProjectId,
+                  ("type" .=) <$> _aType,
+                  ("description" .=) <$> _aDescription,
+                  ("tags" .=) <$> _aTags])
+
+-- | Parameters for styling points as scaled shapes.
+--
+-- /See:/ 'scaledShape' smart constructor.
+data ScaledShape = ScaledShape
+    { _ssBOrder :: !(Maybe BOrder)
+    , _ssFill   :: !(Maybe Color)
+    , _ssShape  :: !(Maybe ScaledShapeShape)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ScaledShape' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'ssBOrder'
+--
+-- * 'ssFill'
+--
+-- * 'ssShape'
+scaledShape
+    :: ScaledShape
+scaledShape =
+    ScaledShape
+    { _ssBOrder = Nothing
+    , _ssFill = Nothing
+    , _ssShape = Nothing
+    }
+
+-- | Border color\/width of the shape. If not specified the shape won\'t have
+-- a border.
+ssBOrder :: Lens' ScaledShape (Maybe BOrder)
+ssBOrder = lens _ssBOrder (\ s a -> s{_ssBOrder = a})
+
+-- | The fill color of the shape. If not specified the shape will be
+-- transparent (although the borders may not be).
+ssFill :: Lens' ScaledShape (Maybe Color)
+ssFill = lens _ssFill (\ s a -> s{_ssFill = a})
+
+-- | Name of the shape.
+ssShape :: Lens' ScaledShape (Maybe ScaledShapeShape)
+ssShape = lens _ssShape (\ s a -> s{_ssShape = a})
+
+instance FromJSON ScaledShape where
+        parseJSON
+          = withObject "ScaledShape"
+              (\ o ->
+                 ScaledShape <$>
+                   (o .:? "border") <*> (o .:? "fill") <*>
+                     (o .:? "shape"))
+
+instance ToJSON ScaledShape where
+        toJSON ScaledShape{..}
+          = object
+              (catMaybes
+                 [("border" .=) <$> _ssBOrder,
+                  ("fill" .=) <$> _ssFill, ("shape" .=) <$> _ssShape])
+
+-- | The request sent to features.BatchDelete.
+--
+-- /See:/ 'featuresBatchDeleteRequest' smart constructor.
+data FeaturesBatchDeleteRequest = FeaturesBatchDeleteRequest
+    { _fbdrPrimaryKeys :: !(Maybe [Text])
+    , _fbdrGxIds       :: !(Maybe [Text])
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'FeaturesBatchDeleteRequest' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'fbdrPrimaryKeys'
+--
+-- * 'fbdrGxIds'
+featuresBatchDeleteRequest
+    :: FeaturesBatchDeleteRequest
+featuresBatchDeleteRequest =
+    FeaturesBatchDeleteRequest
+    { _fbdrPrimaryKeys = Nothing
+    , _fbdrGxIds = Nothing
+    }
+
+fbdrPrimaryKeys :: Lens' FeaturesBatchDeleteRequest [Text]
+fbdrPrimaryKeys
+  = lens _fbdrPrimaryKeys
+      (\ s a -> s{_fbdrPrimaryKeys = a})
+      . _Default
+      . _Coerce
+
+fbdrGxIds :: Lens' FeaturesBatchDeleteRequest [Text]
+fbdrGxIds
+  = lens _fbdrGxIds (\ s a -> s{_fbdrGxIds = a}) .
+      _Default
+      . _Coerce
+
+instance FromJSON FeaturesBatchDeleteRequest where
+        parseJSON
+          = withObject "FeaturesBatchDeleteRequest"
+              (\ o ->
+                 FeaturesBatchDeleteRequest <$>
+                   (o .:? "primaryKeys" .!= mempty) <*>
+                     (o .:? "gx_ids" .!= mempty))
+
+instance ToJSON FeaturesBatchDeleteRequest where
+        toJSON FeaturesBatchDeleteRequest{..}
+          = object
+              (catMaybes
+                 [("primaryKeys" .=) <$> _fbdrPrimaryKeys,
+                  ("gx_ids" .=) <$> _fbdrGxIds])
+
+-- | An icon is a user-uploaded image that can be used to style point
+-- geometries.
+--
+-- /See:/ 'icon' smart constructor.
+data Icon = Icon
+    { _iName        :: !(Maybe Text)
+    , _iId          :: !(Maybe Text)
+    , _iDescription :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'Icon' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'iName'
+--
+-- * 'iId'
+--
+-- * 'iDescription'
+icon
+    :: Icon
+icon =
+    Icon
+    { _iName = Nothing
+    , _iId = Nothing
+    , _iDescription = Nothing
+    }
+
+-- | The name of this Icon, supplied by the author.
+iName :: Lens' Icon (Maybe Text)
+iName = lens _iName (\ s a -> s{_iName = a})
+
+-- | An ID used to refer to this Icon.
+iId :: Lens' Icon (Maybe Text)
+iId = lens _iId (\ s a -> s{_iId = a})
+
+-- | The description of this Icon, supplied by the author.
+iDescription :: Lens' Icon (Maybe Text)
+iDescription
+  = lens _iDescription (\ s a -> s{_iDescription = a})
+
+instance FromJSON Icon where
+        parseJSON
+          = withObject "Icon"
+              (\ o ->
+                 Icon <$>
+                   (o .:? "name") <*> (o .:? "id") <*>
+                     (o .:? "description"))
+
+instance ToJSON Icon where
+        toJSON Icon{..}
+          = object
+              (catMaybes
+                 [("name" .=) <$> _iName, ("id" .=) <$> _iId,
+                  ("description" .=) <$> _iDescription])
+
+-- | The response returned by a call to parents.List.
+--
+-- /See:/ 'parentsListResponse' smart constructor.
+data ParentsListResponse = ParentsListResponse
+    { _plrNextPageToken :: !(Maybe Text)
+    , _plrParents       :: !(Maybe [Parent])
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ParentsListResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'plrNextPageToken'
+--
+-- * 'plrParents'
+parentsListResponse
+    :: ParentsListResponse
+parentsListResponse =
+    ParentsListResponse
+    { _plrNextPageToken = Nothing
+    , _plrParents = Nothing
+    }
+
+-- | Next page token.
+plrNextPageToken :: Lens' ParentsListResponse (Maybe Text)
+plrNextPageToken
+  = lens _plrNextPageToken
+      (\ s a -> s{_plrNextPageToken = a})
+
+-- | The parent assets.
+plrParents :: Lens' ParentsListResponse [Parent]
+plrParents
+  = lens _plrParents (\ s a -> s{_plrParents = a}) .
+      _Default
+      . _Coerce
+
+instance FromJSON ParentsListResponse where
+        parseJSON
+          = withObject "ParentsListResponse"
+              (\ o ->
+                 ParentsListResponse <$>
+                   (o .:? "nextPageToken") <*>
+                     (o .:? "parents" .!= mempty))
+
+instance ToJSON ParentsListResponse where
+        toJSON ParentsListResponse{..}
+          = object
+              (catMaybes
+                 [("nextPageToken" .=) <$> _plrNextPageToken,
+                  ("parents" .=) <$> _plrParents])
+
+-- | The response returned by a call to features.List.
+--
+-- /See:/ 'featuresListResponse' smart constructor.
+data FeaturesListResponse = FeaturesListResponse
+    { _flrNextPageToken           :: !(Maybe Text)
+    , _flrAllowedQueriesPerSecond :: !(Maybe (Textual Double))
+    , _flrSchema                  :: !(Maybe Schema)
+    , _flrFeatures                :: !(Maybe [Feature])
+    , _flrType                    :: !Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'FeaturesListResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'flrNextPageToken'
+--
+-- * 'flrAllowedQueriesPerSecond'
+--
+-- * 'flrSchema'
+--
+-- * 'flrFeatures'
+--
+-- * 'flrType'
+featuresListResponse
+    :: FeaturesListResponse
+featuresListResponse =
+    FeaturesListResponse
+    { _flrNextPageToken = Nothing
+    , _flrAllowedQueriesPerSecond = Nothing
+    , _flrSchema = Nothing
+    , _flrFeatures = Nothing
+    , _flrType = "FeatureCollection"
+    }
+
+-- | Next page token.
+flrNextPageToken :: Lens' FeaturesListResponse (Maybe Text)
+flrNextPageToken
+  = lens _flrNextPageToken
+      (\ s a -> s{_flrNextPageToken = a})
+
+-- | An indicator of the maximum rate at which queries may be made, if all
+-- queries were as expensive as this query.
+flrAllowedQueriesPerSecond :: Lens' FeaturesListResponse (Maybe Double)
+flrAllowedQueriesPerSecond
+  = lens _flrAllowedQueriesPerSecond
+      (\ s a -> s{_flrAllowedQueriesPerSecond = a})
+      . mapping _Coerce
+
+-- | The feature schema.
+flrSchema :: Lens' FeaturesListResponse (Maybe Schema)
+flrSchema
+  = lens _flrSchema (\ s a -> s{_flrSchema = a})
+
+-- | Resources returned.
+flrFeatures :: Lens' FeaturesListResponse [Feature]
+flrFeatures
+  = lens _flrFeatures (\ s a -> s{_flrFeatures = a}) .
+      _Default
+      . _Coerce
+
+flrType :: Lens' FeaturesListResponse Text
+flrType = lens _flrType (\ s a -> s{_flrType = a})
+
+instance FromJSON FeaturesListResponse where
+        parseJSON
+          = withObject "FeaturesListResponse"
+              (\ o ->
+                 FeaturesListResponse <$>
+                   (o .:? "nextPageToken") <*>
+                     (o .:? "allowedQueriesPerSecond")
+                     <*> (o .:? "schema")
+                     <*> (o .:? "features" .!= mempty)
+                     <*> (o .:? "type" .!= "FeatureCollection"))
+
+instance ToJSON FeaturesListResponse where
+        toJSON FeaturesListResponse{..}
+          = object
+              (catMaybes
+                 [("nextPageToken" .=) <$> _flrNextPageToken,
+                  ("allowedQueriesPerSecond" .=) <$>
+                    _flrAllowedQueriesPerSecond,
+                  ("schema" .=) <$> _flrSchema,
+                  ("features" .=) <$> _flrFeatures,
+                  Just ("type" .= _flrType)])
+
+-- | The response returned by a call to
+-- rasterCollections.rasters.batchInsert.
+--
+-- /See:/ 'rasterCollectionsRastersBatchInsertResponse' smart constructor.
+data RasterCollectionsRastersBatchInsertResponse =
+    RasterCollectionsRastersBatchInsertResponse
+    deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'RasterCollectionsRastersBatchInsertResponse' with the minimum fields required to make a request.
+--
+rasterCollectionsRastersBatchInsertResponse
+    :: RasterCollectionsRastersBatchInsertResponse
+rasterCollectionsRastersBatchInsertResponse =
+    RasterCollectionsRastersBatchInsertResponse
+
+instance FromJSON
+         RasterCollectionsRastersBatchInsertResponse where
+        parseJSON
+          = withObject
+              "RasterCollectionsRastersBatchInsertResponse"
+              (\ o ->
+                 pure RasterCollectionsRastersBatchInsertResponse)
+
+instance ToJSON
+         RasterCollectionsRastersBatchInsertResponse where
+        toJSON = const emptyObject
+
+-- | The response returned by a call to icons.List.
+--
+-- /See:/ 'iconsListResponse' smart constructor.
+data IconsListResponse = IconsListResponse
+    { _ilrNextPageToken :: !(Maybe Text)
+    , _ilrIcons         :: !(Maybe [Icon])
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'IconsListResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'ilrNextPageToken'
+--
+-- * 'ilrIcons'
+iconsListResponse
+    :: IconsListResponse
+iconsListResponse =
+    IconsListResponse
+    { _ilrNextPageToken = Nothing
+    , _ilrIcons = Nothing
+    }
+
+-- | Next page token.
+ilrNextPageToken :: Lens' IconsListResponse (Maybe Text)
+ilrNextPageToken
+  = lens _ilrNextPageToken
+      (\ s a -> s{_ilrNextPageToken = a})
+
+-- | Resources returned.
+ilrIcons :: Lens' IconsListResponse [Icon]
+ilrIcons
+  = lens _ilrIcons (\ s a -> s{_ilrIcons = a}) .
+      _Default
+      . _Coerce
+
+instance FromJSON IconsListResponse where
+        parseJSON
+          = withObject "IconsListResponse"
+              (\ o ->
+                 IconsListResponse <$>
+                   (o .:? "nextPageToken") <*>
+                     (o .:? "icons" .!= mempty))
+
+instance ToJSON IconsListResponse where
+        toJSON IconsListResponse{..}
+          = object
+              (catMaybes
+                 [("nextPageToken" .=) <$> _ilrNextPageToken,
+                  ("icons" .=) <$> _ilrIcons])
+
+-- | Text label style.
+--
+-- /See:/ 'labelStyle' smart constructor.
+data LabelStyle = LabelStyle
+    { _lsFontStyle  :: !(Maybe LabelStyleFontStyle)
+    , _lsColor      :: !(Maybe Text)
+    , _lsSize       :: !(Maybe (Textual Double))
+    , _lsOpacity    :: !(Maybe (Textual Double))
+    , _lsOutline    :: !(Maybe Color)
+    , _lsFontWeight :: !(Maybe LabelStyleFontWeight)
+    , _lsColumn     :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'LabelStyle' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'lsFontStyle'
+--
+-- * 'lsColor'
+--
+-- * 'lsSize'
+--
+-- * 'lsOpacity'
+--
+-- * 'lsOutline'
+--
+-- * 'lsFontWeight'
+--
+-- * 'lsColumn'
+labelStyle
+    :: LabelStyle
+labelStyle =
+    LabelStyle
+    { _lsFontStyle = Nothing
+    , _lsColor = Nothing
+    , _lsSize = Nothing
+    , _lsOpacity = Nothing
+    , _lsOutline = Nothing
+    , _lsFontWeight = Nothing
+    , _lsColumn = Nothing
+    }
+
+-- | Font style of the label, defaults to \'normal\'.
+lsFontStyle :: Lens' LabelStyle (Maybe LabelStyleFontStyle)
+lsFontStyle
+  = lens _lsFontStyle (\ s a -> s{_lsFontStyle = a})
+
+-- | Color of the text. If not provided, default to black.
+lsColor :: Lens' LabelStyle (Maybe Text)
+lsColor = lens _lsColor (\ s a -> s{_lsColor = a})
+
+-- | Font size of the label, in pixels. 8 \<= size \<= 15. If not provided, a
+-- default size will be provided.
+lsSize :: Lens' LabelStyle (Maybe Double)
+lsSize
+  = lens _lsSize (\ s a -> s{_lsSize = a}) .
+      mapping _Coerce
+
+-- | Opacity of the text.
+lsOpacity :: Lens' LabelStyle (Maybe Double)
+lsOpacity
+  = lens _lsOpacity (\ s a -> s{_lsOpacity = a}) .
+      mapping _Coerce
+
+-- | Outline color of the text.
+lsOutline :: Lens' LabelStyle (Maybe Color)
+lsOutline
+  = lens _lsOutline (\ s a -> s{_lsOutline = a})
+
+-- | Font weight of the label, defaults to \'normal\'.
+lsFontWeight :: Lens' LabelStyle (Maybe LabelStyleFontWeight)
+lsFontWeight
+  = lens _lsFontWeight (\ s a -> s{_lsFontWeight = a})
+
+-- | The column value of the feature to be displayed.
+lsColumn :: Lens' LabelStyle (Maybe Text)
+lsColumn = lens _lsColumn (\ s a -> s{_lsColumn = a})
+
+instance FromJSON LabelStyle where
+        parseJSON
+          = withObject "LabelStyle"
+              (\ o ->
+                 LabelStyle <$>
+                   (o .:? "fontStyle") <*> (o .:? "color") <*>
+                     (o .:? "size")
+                     <*> (o .:? "opacity")
+                     <*> (o .:? "outline")
+                     <*> (o .:? "fontWeight")
+                     <*> (o .:? "column"))
+
+instance ToJSON LabelStyle where
+        toJSON LabelStyle{..}
+          = object
+              (catMaybes
+                 [("fontStyle" .=) <$> _lsFontStyle,
+                  ("color" .=) <$> _lsColor, ("size" .=) <$> _lsSize,
+                  ("opacity" .=) <$> _lsOpacity,
+                  ("outline" .=) <$> _lsOutline,
+                  ("fontWeight" .=) <$> _lsFontWeight,
+                  ("column" .=) <$> _lsColumn])
+
+-- | The request sent to rasterCollections.Rasters.BatchDelete.
+--
+-- /See:/ 'rasterCollectionsRasterBatchDeleteRequest' smart constructor.
+newtype RasterCollectionsRasterBatchDeleteRequest = RasterCollectionsRasterBatchDeleteRequest
+    { _rcrbdrIds :: Maybe [Text]
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'RasterCollectionsRasterBatchDeleteRequest' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'rcrbdrIds'
+rasterCollectionsRasterBatchDeleteRequest
+    :: RasterCollectionsRasterBatchDeleteRequest
+rasterCollectionsRasterBatchDeleteRequest =
+    RasterCollectionsRasterBatchDeleteRequest
+    { _rcrbdrIds = Nothing
+    }
+
+-- | An array of Raster asset IDs to be removed from this RasterCollection.
+rcrbdrIds :: Lens' RasterCollectionsRasterBatchDeleteRequest [Text]
+rcrbdrIds
+  = lens _rcrbdrIds (\ s a -> s{_rcrbdrIds = a}) .
+      _Default
+      . _Coerce
+
+instance FromJSON
+         RasterCollectionsRasterBatchDeleteRequest where
+        parseJSON
+          = withObject
+              "RasterCollectionsRasterBatchDeleteRequest"
+              (\ o ->
+                 RasterCollectionsRasterBatchDeleteRequest <$>
+                   (o .:? "ids" .!= mempty))
+
+instance ToJSON
+         RasterCollectionsRasterBatchDeleteRequest where
+        toJSON RasterCollectionsRasterBatchDeleteRequest{..}
+          = object (catMaybes [("ids" .=) <$> _rcrbdrIds])
+
+-- | A schema indicating the properties which may be associated with features
+-- within a Table, and the types of those properties.
+--
+-- /See:/ 'schema' smart constructor.
+data Schema = Schema
+    { _sPrimaryKey      :: !(Maybe Text)
+    , _sColumns         :: !(Maybe [TableColumn])
+    , _sPrimaryGeometry :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'Schema' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'sPrimaryKey'
+--
+-- * 'sColumns'
+--
+-- * 'sPrimaryGeometry'
+schema
+    :: Schema
+schema =
+    Schema
+    { _sPrimaryKey = Nothing
+    , _sColumns = Nothing
+    , _sPrimaryGeometry = Nothing
+    }
+
+-- | The name of the column that contains the unique identifier of a Feature.
+sPrimaryKey :: Lens' Schema (Maybe Text)
+sPrimaryKey
+  = lens _sPrimaryKey (\ s a -> s{_sPrimaryKey = a})
+
+-- | An array of TableColumn objects. The first object in the array must be
+-- named geometry and be of type points, lineStrings, polygons, or
+-- mixedGeometry.
+sColumns :: Lens' Schema [TableColumn]
+sColumns
+  = lens _sColumns (\ s a -> s{_sColumns = a}) .
+      _Default
+      . _Coerce
+
+-- | The name of the column that contains a feature\'s geometry. This field
+-- can be omitted during table create; Google Maps Engine supports only a
+-- single geometry column, which must be named geometry and be the first
+-- object in the columns array.
+sPrimaryGeometry :: Lens' Schema (Maybe Text)
+sPrimaryGeometry
+  = lens _sPrimaryGeometry
+      (\ s a -> s{_sPrimaryGeometry = a})
+
+instance FromJSON Schema where
+        parseJSON
+          = withObject "Schema"
+              (\ o ->
+                 Schema <$>
+                   (o .:? "primaryKey") <*> (o .:? "columns" .!= mempty)
+                     <*> (o .:? "primaryGeometry"))
+
+instance ToJSON Schema where
+        toJSON Schema{..}
+          = object
+              (catMaybes
+                 [("primaryKey" .=) <$> _sPrimaryKey,
+                  ("columns" .=) <$> _sColumns,
+                  ("primaryGeometry" .=) <$> _sPrimaryGeometry])
+
+--
+-- /See:/ 'mapItem' smart constructor.
+data MapItem =
+    MapItem
+    deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'MapItem' with the minimum fields required to make a request.
+--
+mapItem
+    :: MapItem
+mapItem = MapItem
+
+instance FromJSON MapItem where
+        parseJSON
+          = withObject "MapItem" (\ o -> pure MapItem)
+
+instance ToJSON MapItem where
+        toJSON = const emptyObject
+
+-- | The request sent to rasterCollections.Rasters.BatchInsert.
+--
+-- /See:/ 'rasterCollectionsRastersBatchInsertRequest' smart constructor.
+newtype RasterCollectionsRastersBatchInsertRequest = RasterCollectionsRastersBatchInsertRequest
+    { _rcrbirIds :: Maybe [Text]
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'RasterCollectionsRastersBatchInsertRequest' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'rcrbirIds'
+rasterCollectionsRastersBatchInsertRequest
+    :: RasterCollectionsRastersBatchInsertRequest
+rasterCollectionsRastersBatchInsertRequest =
+    RasterCollectionsRastersBatchInsertRequest
+    { _rcrbirIds = Nothing
+    }
+
+-- | An array of Raster asset IDs to be added to this RasterCollection.
+rcrbirIds :: Lens' RasterCollectionsRastersBatchInsertRequest [Text]
+rcrbirIds
+  = lens _rcrbirIds (\ s a -> s{_rcrbirIds = a}) .
+      _Default
+      . _Coerce
+
+instance FromJSON
+         RasterCollectionsRastersBatchInsertRequest where
+        parseJSON
+          = withObject
+              "RasterCollectionsRastersBatchInsertRequest"
+              (\ o ->
+                 RasterCollectionsRastersBatchInsertRequest <$>
+                   (o .:? "ids" .!= mempty))
+
+instance ToJSON
+         RasterCollectionsRastersBatchInsertRequest where
+        toJSON RasterCollectionsRastersBatchInsertRequest{..}
+          = object (catMaybes [("ids" .=) <$> _rcrbirIds])
+
+-- | The published version of a map asset.
+--
+-- /See:/ 'publishedMap' smart constructor.
+data PublishedMap = PublishedMap
+    { _pmDefaultViewport :: !(Maybe [Textual Double])
+    , _pmContents        :: !(Maybe [MapItem])
+    , _pmName            :: !(Maybe Text)
+    , _pmId              :: !(Maybe Text)
+    , _pmProjectId       :: !(Maybe Text)
+    , _pmDescription     :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'PublishedMap' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'pmDefaultViewport'
+--
+-- * 'pmContents'
+--
+-- * 'pmName'
+--
+-- * 'pmId'
+--
+-- * 'pmProjectId'
+--
+-- * 'pmDescription'
+publishedMap
+    :: PublishedMap
+publishedMap =
+    PublishedMap
+    { _pmDefaultViewport = Nothing
+    , _pmContents = Nothing
+    , _pmName = Nothing
+    , _pmId = Nothing
+    , _pmProjectId = Nothing
+    , _pmDescription = Nothing
+    }
+
+-- | An array of four numbers (west, south, east, north) which defines the
+-- rectangular bounding box of the default viewport. The numbers represent
+-- latitude and longitude in decimal degrees.
+pmDefaultViewport :: Lens' PublishedMap [Double]
+pmDefaultViewport
+  = lens _pmDefaultViewport
+      (\ s a -> s{_pmDefaultViewport = a})
+      . _Default
+      . _Coerce
+
+-- | The contents of this Map.
+pmContents :: Lens' PublishedMap [MapItem]
+pmContents
+  = lens _pmContents (\ s a -> s{_pmContents = a}) .
+      _Default
+      . _Coerce
+
+-- | The name of this Map, supplied by the author.
+pmName :: Lens' PublishedMap (Maybe Text)
+pmName = lens _pmName (\ s a -> s{_pmName = a})
+
+-- | A globally unique ID, used to refer to this Map.
+pmId :: Lens' PublishedMap (Maybe Text)
+pmId = lens _pmId (\ s a -> s{_pmId = a})
+
+-- | The ID of the project that this Map is in.
+pmProjectId :: Lens' PublishedMap (Maybe Text)
+pmProjectId
+  = lens _pmProjectId (\ s a -> s{_pmProjectId = a})
+
+-- | The description of this Map, supplied by the author.
+pmDescription :: Lens' PublishedMap (Maybe Text)
+pmDescription
+  = lens _pmDescription
+      (\ s a -> s{_pmDescription = a})
+
+instance FromJSON PublishedMap where
+        parseJSON
+          = withObject "PublishedMap"
+              (\ o ->
+                 PublishedMap <$>
+                   (o .:? "defaultViewport") <*> (o .:? "contents") <*>
+                     (o .:? "name")
+                     <*> (o .:? "id")
+                     <*> (o .:? "projectId")
+                     <*> (o .:? "description"))
+
+instance ToJSON PublishedMap where
+        toJSON PublishedMap{..}
+          = object
+              (catMaybes
+                 [("defaultViewport" .=) <$> _pmDefaultViewport,
+                  ("contents" .=) <$> _pmContents,
+                  ("name" .=) <$> _pmName, ("id" .=) <$> _pmId,
+                  ("projectId" .=) <$> _pmProjectId,
+                  ("description" .=) <$> _pmDescription])
+
+-- | Acquisition time represents acquired time of a raster.
+--
+-- /See:/ 'acquisitionTime' smart constructor.
+data AcquisitionTime = AcquisitionTime
+    { _atStart     :: !(Maybe DateTime')
+    , _atPrecision :: !(Maybe AcquisitionTimePrecision)
+    , _atEnd       :: !(Maybe DateTime')
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'AcquisitionTime' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'atStart'
+--
+-- * 'atPrecision'
+--
+-- * 'atEnd'
+acquisitionTime
+    :: AcquisitionTime
+acquisitionTime =
+    AcquisitionTime
+    { _atStart = Nothing
+    , _atPrecision = Nothing
+    , _atEnd = Nothing
+    }
+
+-- | The acquisition time, or start time if acquisition time is a range. The
+-- value is an RFC 3339 formatted date-time value (1970-01-01T00:00:00Z).
+atStart :: Lens' AcquisitionTime (Maybe UTCTime)
+atStart
+  = lens _atStart (\ s a -> s{_atStart = a}) .
+      mapping _DateTime
+
+-- | The precision of acquisition time.
+atPrecision :: Lens' AcquisitionTime (Maybe AcquisitionTimePrecision)
+atPrecision
+  = lens _atPrecision (\ s a -> s{_atPrecision = a})
+
+-- | The end time if acquisition time is a range. The value is an RFC 3339
+-- formatted date-time value (1970-01-01T00:00:00Z).
+atEnd :: Lens' AcquisitionTime (Maybe UTCTime)
+atEnd
+  = lens _atEnd (\ s a -> s{_atEnd = a}) .
+      mapping _DateTime
+
+instance FromJSON AcquisitionTime where
+        parseJSON
+          = withObject "AcquisitionTime"
+              (\ o ->
+                 AcquisitionTime <$>
+                   (o .:? "start") <*> (o .:? "precision") <*>
+                     (o .:? "end"))
+
+instance ToJSON AcquisitionTime where
+        toJSON AcquisitionTime{..}
+          = object
+              (catMaybes
+                 [("start" .=) <$> _atStart,
+                  ("precision" .=) <$> _atPrecision,
+                  ("end" .=) <$> _atEnd])
+
+-- | The response returned by a call to tables.List. Note: The list response
+-- does not include all the fields available in a table. Refer to the table
+-- resource description for details of the fields that are not included.
+-- You\'ll need to send a get request to retrieve the additional fields for
+-- each table.
+--
+-- /See:/ 'tablesListResponse' smart constructor.
+data TablesListResponse = TablesListResponse
+    { _tlrNextPageToken :: !(Maybe (Textual Word8))
+    , _tlrTables        :: !(Maybe [Table])
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'TablesListResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'tlrNextPageToken'
+--
+-- * 'tlrTables'
+tablesListResponse
+    :: TablesListResponse
+tablesListResponse =
+    TablesListResponse
+    { _tlrNextPageToken = Nothing
+    , _tlrTables = Nothing
+    }
+
+-- | Next page token.
+tlrNextPageToken :: Lens' TablesListResponse (Maybe Word8)
+tlrNextPageToken
+  = lens _tlrNextPageToken
+      (\ s a -> s{_tlrNextPageToken = a})
+      . mapping _Coerce
+
+-- | Resources returned.
+tlrTables :: Lens' TablesListResponse [Table]
+tlrTables
+  = lens _tlrTables (\ s a -> s{_tlrTables = a}) .
+      _Default
+      . _Coerce
+
+instance FromJSON TablesListResponse where
+        parseJSON
+          = withObject "TablesListResponse"
+              (\ o ->
+                 TablesListResponse <$>
+                   (o .:? "nextPageToken") <*>
+                     (o .:? "tables" .!= mempty))
+
+instance ToJSON TablesListResponse where
+        toJSON TablesListResponse{..}
+          = object
+              (catMaybes
+                 [("nextPageToken" .=) <$> _tlrNextPageToken,
+                  ("tables" .=) <$> _tlrTables])
+
+-- | Style for icon, this is part of point style.
+--
+-- /See:/ 'iconStyle' smart constructor.
+data IconStyle = IconStyle
+    { _isScaledShape     :: !(Maybe ScaledShape)
+    , _isScalingFunction :: !(Maybe ScalingFunction)
+    , _isName            :: !(Maybe Text)
+    , _isId              :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'IconStyle' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'isScaledShape'
+--
+-- * 'isScalingFunction'
+--
+-- * 'isName'
+--
+-- * 'isId'
+iconStyle
+    :: IconStyle
+iconStyle =
+    IconStyle
+    { _isScaledShape = Nothing
+    , _isScalingFunction = Nothing
+    , _isName = Nothing
+    , _isId = Nothing
+    }
+
+-- | A scalable shape.
+isScaledShape :: Lens' IconStyle (Maybe ScaledShape)
+isScaledShape
+  = lens _isScaledShape
+      (\ s a -> s{_isScaledShape = a})
+
+-- | The function used to scale shapes. Required when a scaledShape is
+-- specified.
+isScalingFunction :: Lens' IconStyle (Maybe ScalingFunction)
+isScalingFunction
+  = lens _isScalingFunction
+      (\ s a -> s{_isScalingFunction = a})
+
+-- | Stock icon name. To use a stock icon, prefix it with \'gx_\'. See Stock
+-- icon names for valid icon names. For example, to specify small_red, set
+-- name to \'gx_small_red\'.
+isName :: Lens' IconStyle (Maybe Text)
+isName = lens _isName (\ s a -> s{_isName = a})
+
+-- | Custom icon id.
+isId :: Lens' IconStyle (Maybe Text)
+isId = lens _isId (\ s a -> s{_isId = a})
+
+instance FromJSON IconStyle where
+        parseJSON
+          = withObject "IconStyle"
+              (\ o ->
+                 IconStyle <$>
+                   (o .:? "scaledShape") <*> (o .:? "scalingFunction")
+                     <*> (o .:? "name")
+                     <*> (o .:? "id"))
+
+instance ToJSON IconStyle where
+        toJSON IconStyle{..}
+          = object
+              (catMaybes
+                 [("scaledShape" .=) <$> _isScaledShape,
+                  ("scalingFunction" .=) <$> _isScalingFunction,
+                  ("name" .=) <$> _isName, ("id" .=) <$> _isId])
+
+-- | A display rule of the vector style.
+--
+-- /See:/ 'displayRule' smart constructor.
+data DisplayRule = DisplayRule
+    { _drPointOptions   :: !(Maybe PointStyle)
+    , _drPolygonOptions :: !(Maybe PolygonStyle)
+    , _drZoomLevels     :: !(Maybe ZoomLevels)
+    , _drFilters        :: !(Maybe [Filter])
+    , _drName           :: !(Maybe Text)
+    , _drLineOptions    :: !(Maybe LineStyle)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'DisplayRule' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'drPointOptions'
+--
+-- * 'drPolygonOptions'
+--
+-- * 'drZoomLevels'
+--
+-- * 'drFilters'
+--
+-- * 'drName'
+--
+-- * 'drLineOptions'
+displayRule
+    :: DisplayRule
+displayRule =
+    DisplayRule
+    { _drPointOptions = Nothing
+    , _drPolygonOptions = Nothing
+    , _drZoomLevels = Nothing
+    , _drFilters = Nothing
+    , _drName = Nothing
+    , _drLineOptions = Nothing
+    }
+
+-- | Style applied to points. Required for Point Geometry.
+drPointOptions :: Lens' DisplayRule (Maybe PointStyle)
+drPointOptions
+  = lens _drPointOptions
+      (\ s a -> s{_drPointOptions = a})
+
+-- | Style applied to polygons. Required for Polygon Geometry.
+drPolygonOptions :: Lens' DisplayRule (Maybe PolygonStyle)
+drPolygonOptions
+  = lens _drPolygonOptions
+      (\ s a -> s{_drPolygonOptions = a})
+
+-- | The zoom levels that this display rule apply.
+drZoomLevels :: Lens' DisplayRule (Maybe ZoomLevels)
+drZoomLevels
+  = lens _drZoomLevels (\ s a -> s{_drZoomLevels = a})
+
+-- | This display rule will only be applied to features that match all of the
+-- filters here. If filters is empty, then the rule applies to all
+-- features.
+drFilters :: Lens' DisplayRule [Filter]
+drFilters
+  = lens _drFilters (\ s a -> s{_drFilters = a}) .
+      _Default
+      . _Coerce
+
+-- | Display rule name. Name is not unique and cannot be used for
+-- identification purpose.
+drName :: Lens' DisplayRule (Maybe Text)
+drName = lens _drName (\ s a -> s{_drName = a})
+
+-- | Style applied to lines. Required for LineString Geometry.
+drLineOptions :: Lens' DisplayRule (Maybe LineStyle)
+drLineOptions
+  = lens _drLineOptions
+      (\ s a -> s{_drLineOptions = a})
+
+instance FromJSON DisplayRule where
+        parseJSON
+          = withObject "DisplayRule"
+              (\ o ->
+                 DisplayRule <$>
+                   (o .:? "pointOptions") <*> (o .:? "polygonOptions")
+                     <*> (o .:? "zoomLevels")
+                     <*> (o .:? "filters" .!= mempty)
+                     <*> (o .:? "name")
+                     <*> (o .:? "lineOptions"))
+
+instance ToJSON DisplayRule where
+        toJSON DisplayRule{..}
+          = object
+              (catMaybes
+                 [("pointOptions" .=) <$> _drPointOptions,
+                  ("polygonOptions" .=) <$> _drPolygonOptions,
+                  ("zoomLevels" .=) <$> _drZoomLevels,
+                  ("filters" .=) <$> _drFilters,
+                  ("name" .=) <$> _drName,
+                  ("lineOptions" .=) <$> _drLineOptions])
+
+-- | Border in line style. Both color and width are required.
+--
+-- /See:/ 'bOrder' smart constructor.
+data BOrder = BOrder
+    { _boColor   :: !(Maybe Text)
+    , _boWidth   :: !(Maybe (Textual Double))
+    , _boOpacity :: !(Maybe (Textual Double))
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'BOrder' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'boColor'
+--
+-- * 'boWidth'
+--
+-- * 'boOpacity'
+bOrder
+    :: BOrder
+bOrder =
+    BOrder
+    { _boColor = Nothing
+    , _boWidth = Nothing
+    , _boOpacity = Nothing
+    }
+
+-- | Color of the border.
+boColor :: Lens' BOrder (Maybe Text)
+boColor = lens _boColor (\ s a -> s{_boColor = a})
+
+-- | Width of the border, in pixels.
+boWidth :: Lens' BOrder (Maybe Double)
+boWidth
+  = lens _boWidth (\ s a -> s{_boWidth = a}) .
+      mapping _Coerce
+
+-- | Opacity of the border.
+boOpacity :: Lens' BOrder (Maybe Double)
+boOpacity
+  = lens _boOpacity (\ s a -> s{_boOpacity = a}) .
+      mapping _Coerce
+
+instance FromJSON BOrder where
+        parseJSON
+          = withObject "BOrder"
+              (\ o ->
+                 BOrder <$>
+                   (o .:? "color") <*> (o .:? "width") <*>
+                     (o .:? "opacity"))
+
+instance ToJSON BOrder where
+        toJSON BOrder{..}
+          = object
+              (catMaybes
+                 [("color" .=) <$> _boColor,
+                  ("width" .=) <$> _boWidth,
+                  ("opacity" .=) <$> _boOpacity])
+
+-- | A Map is a collection of Layers, optionally contained within folders.
+--
+-- /See:/ 'map'' smart constructor.
+data Map = Map
+    { _mCreationTime              :: !(Maybe DateTime')
+    , _mWritersCanEditPermissions :: !(Maybe Bool)
+    , _mEtag                      :: !(Maybe Text)
+    , _mDefaultViewport           :: !(Maybe [Textual Double])
+    , _mContents                  :: !(Maybe [MapItem])
+    , _mPublishingStatus          :: !(Maybe MapPublishingStatus)
+    , _mCreatorEmail              :: !(Maybe Text)
+    , _mLastModifiedTime          :: !(Maybe DateTime')
+    , _mLastModifierEmail         :: !(Maybe Text)
+    , _mVersions                  :: !(Maybe [Text])
+    , _mName                      :: !(Maybe Text)
+    , _mBbox                      :: !(Maybe [Textual Double])
+    , _mProcessingStatus          :: !(Maybe MapProcessingStatus)
+    , _mId                        :: !(Maybe Text)
+    , _mProjectId                 :: !(Maybe Text)
+    , _mDraftAccessList           :: !(Maybe Text)
+    , _mPublishedAccessList       :: !(Maybe Text)
+    , _mDescription               :: !(Maybe Text)
+    , _mTags                      :: !(Maybe [Text])
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'Map' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'mCreationTime'
+--
+-- * 'mWritersCanEditPermissions'
+--
+-- * 'mEtag'
+--
+-- * 'mDefaultViewport'
+--
+-- * 'mContents'
+--
+-- * 'mPublishingStatus'
+--
+-- * 'mCreatorEmail'
+--
+-- * 'mLastModifiedTime'
+--
+-- * 'mLastModifierEmail'
+--
+-- * 'mVersions'
+--
+-- * 'mName'
+--
+-- * 'mBbox'
+--
+-- * 'mProcessingStatus'
+--
+-- * 'mId'
+--
+-- * 'mProjectId'
+--
+-- * 'mDraftAccessList'
+--
+-- * 'mPublishedAccessList'
+--
+-- * 'mDescription'
+--
+-- * 'mTags'
+map'
+    :: Map
+map' =
+    Map
+    { _mCreationTime = Nothing
+    , _mWritersCanEditPermissions = Nothing
+    , _mEtag = Nothing
+    , _mDefaultViewport = Nothing
+    , _mContents = Nothing
+    , _mPublishingStatus = Nothing
+    , _mCreatorEmail = Nothing
+    , _mLastModifiedTime = Nothing
+    , _mLastModifierEmail = Nothing
+    , _mVersions = Nothing
+    , _mName = Nothing
+    , _mBbox = Nothing
+    , _mProcessingStatus = Nothing
+    , _mId = Nothing
+    , _mProjectId = Nothing
+    , _mDraftAccessList = Nothing
+    , _mPublishedAccessList = Nothing
+    , _mDescription = Nothing
+    , _mTags = Nothing
+    }
+
+-- | The creation time of this map. The value is an RFC 3339 formatted
+-- date-time value (e.g. 1970-01-01T00:00:00Z).
+mCreationTime :: Lens' Map (Maybe UTCTime)
+mCreationTime
+  = lens _mCreationTime
+      (\ s a -> s{_mCreationTime = a})
+      . mapping _DateTime
+
+-- | If true, WRITERs of the asset are able to edit the asset permissions.
+mWritersCanEditPermissions :: Lens' Map (Maybe Bool)
+mWritersCanEditPermissions
+  = lens _mWritersCanEditPermissions
+      (\ s a -> s{_mWritersCanEditPermissions = a})
+
+-- | The ETag, used to refer to the current version of the asset.
+mEtag :: Lens' Map (Maybe Text)
+mEtag = lens _mEtag (\ s a -> s{_mEtag = a})
+
+-- | An array of four numbers (west, south, east, north) which defines the
+-- rectangular bounding box of the default viewport. The numbers represent
+-- latitude and longitude in decimal degrees.
+mDefaultViewport :: Lens' Map [Double]
+mDefaultViewport
+  = lens _mDefaultViewport
+      (\ s a -> s{_mDefaultViewport = a})
+      . _Default
+      . _Coerce
+
+-- | The contents of this Map.
+mContents :: Lens' Map [MapItem]
+mContents
+  = lens _mContents (\ s a -> s{_mContents = a}) .
+      _Default
+      . _Coerce
+
+-- | The publishing status of this map.
+mPublishingStatus :: Lens' Map (Maybe MapPublishingStatus)
+mPublishingStatus
+  = lens _mPublishingStatus
+      (\ s a -> s{_mPublishingStatus = a})
+
+-- | The email address of the creator of this map. This is only returned on
+-- GET requests and not LIST requests.
+mCreatorEmail :: Lens' Map (Maybe Text)
+mCreatorEmail
+  = lens _mCreatorEmail
+      (\ s a -> s{_mCreatorEmail = a})
+
+-- | The last modified time of this map. The value is an RFC 3339 formatted
+-- date-time value (e.g. 1970-01-01T00:00:00Z).
+mLastModifiedTime :: Lens' Map (Maybe UTCTime)
+mLastModifiedTime
+  = lens _mLastModifiedTime
+      (\ s a -> s{_mLastModifiedTime = a})
+      . mapping _DateTime
+
+-- | The email address of the last modifier of this map. This is only
+-- returned on GET requests and not LIST requests.
+mLastModifierEmail :: Lens' Map (Maybe Text)
+mLastModifierEmail
+  = lens _mLastModifierEmail
+      (\ s a -> s{_mLastModifierEmail = a})
+
+-- | Deprecated: An array containing the available versions of this Map.
+-- Currently may only contain \"published\". The publishingStatus field
+-- should be used instead.
+mVersions :: Lens' Map [Text]
+mVersions
+  = lens _mVersions (\ s a -> s{_mVersions = a}) .
+      _Default
+      . _Coerce
+
+-- | The name of this Map, supplied by the author.
+mName :: Lens' Map (Maybe Text)
+mName = lens _mName (\ s a -> s{_mName = a})
+
+-- | A rectangular bounding box which contains all of the data in this Map.
+-- The box is expressed as \\\"west, south, east, north\\\". The numbers
+-- represent latitude and longitude in decimal degrees.
+mBbox :: Lens' Map [Double]
+mBbox
+  = lens _mBbox (\ s a -> s{_mBbox = a}) . _Default .
+      _Coerce
+
+-- | The processing status of this map. Map processing is automatically
+-- started once a map becomes ready for processing.
+mProcessingStatus :: Lens' Map (Maybe MapProcessingStatus)
+mProcessingStatus
+  = lens _mProcessingStatus
+      (\ s a -> s{_mProcessingStatus = a})
+
+-- | A globally unique ID, used to refer to this Map.
+mId :: Lens' Map (Maybe Text)
+mId = lens _mId (\ s a -> s{_mId = a})
+
+-- | The ID of the project that this Map is in.
+mProjectId :: Lens' Map (Maybe Text)
+mProjectId
+  = lens _mProjectId (\ s a -> s{_mProjectId = a})
+
+-- | Deprecated: The name of an access list of the Map Editor type. The user
+-- on whose behalf the request is being sent must be an editor on that
+-- access list. Note: Google Maps Engine no longer uses access lists.
+-- Instead, each asset has its own list of permissions. For backward
+-- compatibility, the API still accepts access lists for projects that are
+-- already using access lists. If you created a GME account\/project after
+-- July 14th, 2014, you will not be able to send API requests that include
+-- access lists. Note: This is an input field only. It is not returned in
+-- response to a list or get request.
+mDraftAccessList :: Lens' Map (Maybe Text)
+mDraftAccessList
+  = lens _mDraftAccessList
+      (\ s a -> s{_mDraftAccessList = a})
+
+-- | Deprecated: The access list to whom view permissions are granted. The
+-- value must be the name of a Maps Engine access list of the Map Viewer
+-- type, and the user must be a viewer on that list. Note: Google Maps
+-- Engine no longer uses access lists. Instead, each asset has its own list
+-- of permissions. For backward compatibility, the API still accepts access
+-- lists for projects that are already using access lists. If you created a
+-- GME account\/project after July 14th, 2014, you will not be able to send
+-- API requests that include access lists. This is an input field only. It
+-- is not returned in response to a list or get request.
+mPublishedAccessList :: Lens' Map (Maybe Text)
+mPublishedAccessList
+  = lens _mPublishedAccessList
+      (\ s a -> s{_mPublishedAccessList = a})
+
+-- | The description of this Map, supplied by the author.
+mDescription :: Lens' Map (Maybe Text)
+mDescription
+  = lens _mDescription (\ s a -> s{_mDescription = a})
+
+-- | Tags of this Map.
+mTags :: Lens' Map [Text]
+mTags
+  = lens _mTags (\ s a -> s{_mTags = a}) . _Default .
+      _Coerce
+
+instance FromJSON Map where
+        parseJSON
+          = withObject "Map"
+              (\ o ->
+                 Map <$>
+                   (o .:? "creationTime") <*>
+                     (o .:? "writersCanEditPermissions")
+                     <*> (o .:? "etag")
+                     <*> (o .:? "defaultViewport")
+                     <*> (o .:? "contents")
+                     <*> (o .:? "publishingStatus")
+                     <*> (o .:? "creatorEmail")
+                     <*> (o .:? "lastModifiedTime")
+                     <*> (o .:? "lastModifierEmail")
+                     <*> (o .:? "versions" .!= mempty)
+                     <*> (o .:? "name")
+                     <*> (o .:? "bbox" .!= mempty)
+                     <*> (o .:? "processingStatus")
+                     <*> (o .:? "id")
+                     <*> (o .:? "projectId")
+                     <*> (o .:? "draftAccessList")
+                     <*> (o .:? "publishedAccessList")
+                     <*> (o .:? "description")
+                     <*> (o .:? "tags"))
+
+instance ToJSON Map where
+        toJSON Map{..}
+          = object
+              (catMaybes
+                 [("creationTime" .=) <$> _mCreationTime,
+                  ("writersCanEditPermissions" .=) <$>
+                    _mWritersCanEditPermissions,
+                  ("etag" .=) <$> _mEtag,
+                  ("defaultViewport" .=) <$> _mDefaultViewport,
+                  ("contents" .=) <$> _mContents,
+                  ("publishingStatus" .=) <$> _mPublishingStatus,
+                  ("creatorEmail" .=) <$> _mCreatorEmail,
+                  ("lastModifiedTime" .=) <$> _mLastModifiedTime,
+                  ("lastModifierEmail" .=) <$> _mLastModifierEmail,
+                  ("versions" .=) <$> _mVersions,
+                  ("name" .=) <$> _mName, ("bbox" .=) <$> _mBbox,
+                  ("processingStatus" .=) <$> _mProcessingStatus,
+                  ("id" .=) <$> _mId, ("projectId" .=) <$> _mProjectId,
+                  ("draftAccessList" .=) <$> _mDraftAccessList,
+                  ("publishedAccessList" .=) <$> _mPublishedAccessList,
+                  ("description" .=) <$> _mDescription,
+                  ("tags" .=) <$> _mTags])
+
+-- | The response returned by a call to rasterCollections.rasters.List.
+--
+-- /See:/ 'rasterCollectionsRastersListResponse' smart constructor.
+data RasterCollectionsRastersListResponse = RasterCollectionsRastersListResponse
+    { _rcrlrNextPageToken :: !(Maybe Text)
+    , _rcrlrRasters       :: !(Maybe [RasterCollectionsRaster])
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'RasterCollectionsRastersListResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'rcrlrNextPageToken'
+--
+-- * 'rcrlrRasters'
+rasterCollectionsRastersListResponse
+    :: RasterCollectionsRastersListResponse
+rasterCollectionsRastersListResponse =
+    RasterCollectionsRastersListResponse
+    { _rcrlrNextPageToken = Nothing
+    , _rcrlrRasters = Nothing
+    }
+
+-- | Next page token.
+rcrlrNextPageToken :: Lens' RasterCollectionsRastersListResponse (Maybe Text)
+rcrlrNextPageToken
+  = lens _rcrlrNextPageToken
+      (\ s a -> s{_rcrlrNextPageToken = a})
+
+-- | Resources returned.
+rcrlrRasters :: Lens' RasterCollectionsRastersListResponse [RasterCollectionsRaster]
+rcrlrRasters
+  = lens _rcrlrRasters (\ s a -> s{_rcrlrRasters = a})
+      . _Default
+      . _Coerce
+
+instance FromJSON
+         RasterCollectionsRastersListResponse where
+        parseJSON
+          = withObject "RasterCollectionsRastersListResponse"
+              (\ o ->
+                 RasterCollectionsRastersListResponse <$>
+                   (o .:? "nextPageToken") <*>
+                     (o .:? "rasters" .!= mempty))
+
+instance ToJSON RasterCollectionsRastersListResponse
+         where
+        toJSON RasterCollectionsRastersListResponse{..}
+          = object
+              (catMaybes
+                 [("nextPageToken" .=) <$> _rcrlrNextPageToken,
+                  ("rasters" .=) <$> _rcrlrRasters])
+
+-- | Multi Line String
+--
+-- /See:/ 'geoJSONMultiLineString' smart constructor.
+data GeoJSONMultiLineString = GeoJSONMultiLineString
+    { _gjmlsCoordinates :: !(Maybe [[[Textual Double]]])
+    , _gjmlsType        :: !(Maybe GeoJSONMultiLineStringType)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'GeoJSONMultiLineString' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'gjmlsCoordinates'
+--
+-- * 'gjmlsType'
+geoJSONMultiLineString
+    :: GeoJSONMultiLineString
+geoJSONMultiLineString =
+    GeoJSONMultiLineString
+    { _gjmlsCoordinates = Nothing
+    , _gjmlsType = Nothing
+    }
+
+-- | An array of at least two GeoJsonLineString coordinate arrays.
+gjmlsCoordinates :: Lens' GeoJSONMultiLineString [[[Double]]]
+gjmlsCoordinates
+  = lens _gjmlsCoordinates
+      (\ s a -> s{_gjmlsCoordinates = a})
+      . _Default
+      . _Coerce
+
+-- | Identifies this object as a GeoJsonMultiLineString.
+gjmlsType :: Lens' GeoJSONMultiLineString (Maybe GeoJSONMultiLineStringType)
+gjmlsType
+  = lens _gjmlsType (\ s a -> s{_gjmlsType = a})
+
+instance FromJSON GeoJSONMultiLineString where
+        parseJSON
+          = withObject "GeoJSONMultiLineString"
+              (\ o ->
+                 GeoJSONMultiLineString <$>
+                   (o .:? "coordinates" .!= mempty) <*> (o .:? "type"))
+
+instance ToJSON GeoJSONMultiLineString where
+        toJSON GeoJSONMultiLineString{..}
+          = object
+              (catMaybes
+                 [("coordinates" .=) <$> _gjmlsCoordinates,
+                  ("type" .=) <$> _gjmlsType])
+
+-- | Parameters for scaling scaled shapes.
+--
+-- /See:/ 'scalingFunction' smart constructor.
+data ScalingFunction = ScalingFunction
+    { _sfValueRange  :: !(Maybe ValueRange)
+    , _sfSizeRange   :: !(Maybe SizeRange)
+    , _sfScalingType :: !(Maybe ScalingFunctionScalingType)
+    , _sfColumn      :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ScalingFunction' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'sfValueRange'
+--
+-- * 'sfSizeRange'
+--
+-- * 'sfScalingType'
+--
+-- * 'sfColumn'
+scalingFunction
+    :: ScalingFunction
+scalingFunction =
+    ScalingFunction
+    { _sfValueRange = Nothing
+    , _sfSizeRange = Nothing
+    , _sfScalingType = Nothing
+    , _sfColumn = Nothing
+    }
+
+-- | The range of values to display across the size range.
+sfValueRange :: Lens' ScalingFunction (Maybe ValueRange)
+sfValueRange
+  = lens _sfValueRange (\ s a -> s{_sfValueRange = a})
+
+-- | The range of shape sizes, in pixels. For circles, the size corresponds
+-- to the diameter.
+sfSizeRange :: Lens' ScalingFunction (Maybe SizeRange)
+sfSizeRange
+  = lens _sfSizeRange (\ s a -> s{_sfSizeRange = a})
+
+-- | The type of scaling function to use. Defaults to SQRT. Currently only
+-- linear and square root scaling are supported.
+sfScalingType :: Lens' ScalingFunction (Maybe ScalingFunctionScalingType)
+sfScalingType
+  = lens _sfScalingType
+      (\ s a -> s{_sfScalingType = a})
+
+-- | Name of the numeric column used to scale a shape.
+sfColumn :: Lens' ScalingFunction (Maybe Text)
+sfColumn = lens _sfColumn (\ s a -> s{_sfColumn = a})
+
+instance FromJSON ScalingFunction where
+        parseJSON
+          = withObject "ScalingFunction"
+              (\ o ->
+                 ScalingFunction <$>
+                   (o .:? "valueRange") <*> (o .:? "sizeRange") <*>
+                     (o .:? "scalingType")
+                     <*> (o .:? "column"))
+
+instance ToJSON ScalingFunction where
+        toJSON ScalingFunction{..}
+          = object
+              (catMaybes
+                 [("valueRange" .=) <$> _sfValueRange,
+                  ("sizeRange" .=) <$> _sfSizeRange,
+                  ("scalingType" .=) <$> _sfScalingType,
+                  ("column" .=) <$> _sfColumn])
+
+-- | The response returned by a call to resources.List.
+--
+-- /See:/ 'assetsListResponse' smart constructor.
+data AssetsListResponse = AssetsListResponse
+    { _alrNextPageToken :: !(Maybe (Textual Word8))
+    , _alrAssets        :: !(Maybe [Asset])
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'AssetsListResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'alrNextPageToken'
+--
+-- * 'alrAssets'
+assetsListResponse
+    :: AssetsListResponse
+assetsListResponse =
+    AssetsListResponse
+    { _alrNextPageToken = Nothing
+    , _alrAssets = Nothing
+    }
+
+-- | Next page token.
+alrNextPageToken :: Lens' AssetsListResponse (Maybe Word8)
+alrNextPageToken
+  = lens _alrNextPageToken
+      (\ s a -> s{_alrNextPageToken = a})
+      . mapping _Coerce
+
+-- | Assets returned.
+alrAssets :: Lens' AssetsListResponse [Asset]
+alrAssets
+  = lens _alrAssets (\ s a -> s{_alrAssets = a}) .
+      _Default
+      . _Coerce
+
+instance FromJSON AssetsListResponse where
+        parseJSON
+          = withObject "AssetsListResponse"
+              (\ o ->
+                 AssetsListResponse <$>
+                   (o .:? "nextPageToken") <*>
+                     (o .:? "assets" .!= mempty))
+
+instance ToJSON AssetsListResponse where
+        toJSON AssetsListResponse{..}
+          = object
+              (catMaybes
+                 [("nextPageToken" .=) <$> _alrNextPageToken,
+                  ("assets" .=) <$> _alrAssets])
+
+-- | The response returned by a call to any asset\'s Publish method.
+--
+-- /See:/ 'publishResponse' smart constructor.
+data PublishResponse =
+    PublishResponse
+    deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'PublishResponse' with the minimum fields required to make a request.
+--
+publishResponse
+    :: PublishResponse
+publishResponse = PublishResponse
+
+instance FromJSON PublishResponse where
+        parseJSON
+          = withObject "PublishResponse"
+              (\ o -> pure PublishResponse)
+
+instance ToJSON PublishResponse where
+        toJSON = const emptyObject
+
+-- | The request sent to features.Insert.
+--
+-- /See:/ 'featuresBatchInsertRequest' smart constructor.
+data FeaturesBatchInsertRequest = FeaturesBatchInsertRequest
+    { _fbirFeatures            :: !(Maybe [Feature])
+    , _fbirNormalizeGeometries :: !Bool
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'FeaturesBatchInsertRequest' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'fbirFeatures'
+--
+-- * 'fbirNormalizeGeometries'
+featuresBatchInsertRequest
+    :: FeaturesBatchInsertRequest
+featuresBatchInsertRequest =
+    FeaturesBatchInsertRequest
+    { _fbirFeatures = Nothing
+    , _fbirNormalizeGeometries = True
+    }
+
+fbirFeatures :: Lens' FeaturesBatchInsertRequest [Feature]
+fbirFeatures
+  = lens _fbirFeatures (\ s a -> s{_fbirFeatures = a})
+      . _Default
+      . _Coerce
+
+-- | If true, the server will normalize feature geometries. It is assumed
+-- that the South Pole is exterior to any polygons given. See here for a
+-- list of normalizations. If false, all feature geometries must be given
+-- already normalized. The points in all LinearRings must be listed in
+-- counter-clockwise order, and LinearRings may not intersect.
+fbirNormalizeGeometries :: Lens' FeaturesBatchInsertRequest Bool
+fbirNormalizeGeometries
+  = lens _fbirNormalizeGeometries
+      (\ s a -> s{_fbirNormalizeGeometries = a})
+
+instance FromJSON FeaturesBatchInsertRequest where
+        parseJSON
+          = withObject "FeaturesBatchInsertRequest"
+              (\ o ->
+                 FeaturesBatchInsertRequest <$>
+                   (o .:? "features" .!= mempty) <*>
+                     (o .:? "normalizeGeometries" .!= True))
+
+instance ToJSON FeaturesBatchInsertRequest where
+        toJSON FeaturesBatchInsertRequest{..}
+          = object
+              (catMaybes
+                 [("features" .=) <$> _fbirFeatures,
+                  Just
+                    ("normalizeGeometries" .= _fbirNormalizeGeometries)])
+
+--
+-- /See:/ 'datasource' smart constructor.
+newtype Datasource = Datasource
+    { _dId :: Maybe Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'Datasource' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'dId'
+datasource
+    :: Datasource
+datasource =
+    Datasource
+    { _dId = Nothing
+    }
+
+-- | The ID of a datasource.
+dId :: Lens' Datasource (Maybe Text)
+dId = lens _dId (\ s a -> s{_dId = a})
+
+instance FromJSON Datasource where
+        parseJSON
+          = withObject "Datasource"
+              (\ o -> Datasource <$> (o .:? "id"))
+
+instance ToJSON Datasource where
+        toJSON Datasource{..}
+          = object (catMaybes [("id" .=) <$> _dId])
+
+-- | A raster resource.
+--
+-- /See:/ 'rasterCollectionsRaster' smart constructor.
+data RasterCollectionsRaster = RasterCollectionsRaster
+    { _rcrCreationTime     :: !(Maybe DateTime')
+    , _rcrRasterType       :: !Text
+    , _rcrLastModifiedTime :: !(Maybe DateTime')
+    , _rcrName             :: !(Maybe Text)
+    , _rcrBbox             :: !(Maybe [Textual Double])
+    , _rcrId               :: !(Maybe Text)
+    , _rcrProjectId        :: !(Maybe Text)
+    , _rcrDescription      :: !(Maybe Text)
+    , _rcrTags             :: !(Maybe [Text])
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'RasterCollectionsRaster' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'rcrCreationTime'
+--
+-- * 'rcrRasterType'
+--
+-- * 'rcrLastModifiedTime'
+--
+-- * 'rcrName'
+--
+-- * 'rcrBbox'
+--
+-- * 'rcrId'
+--
+-- * 'rcrProjectId'
+--
+-- * 'rcrDescription'
+--
+-- * 'rcrTags'
+rasterCollectionsRaster
+    :: RasterCollectionsRaster
+rasterCollectionsRaster =
+    RasterCollectionsRaster
+    { _rcrCreationTime = Nothing
+    , _rcrRasterType = "image"
+    , _rcrLastModifiedTime = Nothing
+    , _rcrName = Nothing
+    , _rcrBbox = Nothing
+    , _rcrId = Nothing
+    , _rcrProjectId = Nothing
+    , _rcrDescription = Nothing
+    , _rcrTags = Nothing
+    }
+
+-- | The creation time of this raster. The value is an RFC 3339 formatted
+-- date-time value (e.g. 1970-01-01T00:00:00Z).
+rcrCreationTime :: Lens' RasterCollectionsRaster (Maybe UTCTime)
+rcrCreationTime
+  = lens _rcrCreationTime
+      (\ s a -> s{_rcrCreationTime = a})
+      . mapping _DateTime
+
+-- | The type of this Raster. Always \"image\" today.
+rcrRasterType :: Lens' RasterCollectionsRaster Text
+rcrRasterType
+  = lens _rcrRasterType
+      (\ s a -> s{_rcrRasterType = a})
+
+-- | The last modified time of this raster. The value is an RFC 3339
+-- formatted date-time value (e.g. 1970-01-01T00:00:00Z).
+rcrLastModifiedTime :: Lens' RasterCollectionsRaster (Maybe UTCTime)
+rcrLastModifiedTime
+  = lens _rcrLastModifiedTime
+      (\ s a -> s{_rcrLastModifiedTime = a})
+      . mapping _DateTime
+
+-- | The name of this Raster, supplied by the author.
+rcrName :: Lens' RasterCollectionsRaster (Maybe Text)
+rcrName = lens _rcrName (\ s a -> s{_rcrName = a})
+
+-- | A rectangular bounding box which contains all of the data in this
+-- Raster. The box is expressed as \\\"west, south, east, north\\\". The
+-- numbers represent latitudes and longitudes in decimal degrees.
+rcrBbox :: Lens' RasterCollectionsRaster [Double]
+rcrBbox
+  = lens _rcrBbox (\ s a -> s{_rcrBbox = a}) . _Default
+      . _Coerce
+
+-- | A globally unique ID, used to refer to this Raster.
+rcrId :: Lens' RasterCollectionsRaster (Maybe Text)
+rcrId = lens _rcrId (\ s a -> s{_rcrId = a})
+
+-- | The ID of the project that this Raster is in.
+rcrProjectId :: Lens' RasterCollectionsRaster (Maybe Text)
+rcrProjectId
+  = lens _rcrProjectId (\ s a -> s{_rcrProjectId = a})
+
+-- | The description of this Raster, supplied by the author.
+rcrDescription :: Lens' RasterCollectionsRaster (Maybe Text)
+rcrDescription
+  = lens _rcrDescription
+      (\ s a -> s{_rcrDescription = a})
+
+-- | Tags of this Raster.
+rcrTags :: Lens' RasterCollectionsRaster [Text]
+rcrTags
+  = lens _rcrTags (\ s a -> s{_rcrTags = a}) . _Default
+      . _Coerce
+
+instance FromJSON RasterCollectionsRaster where
+        parseJSON
+          = withObject "RasterCollectionsRaster"
+              (\ o ->
+                 RasterCollectionsRaster <$>
+                   (o .:? "creationTime") <*>
+                     (o .:? "rasterType" .!= "image")
+                     <*> (o .:? "lastModifiedTime")
+                     <*> (o .:? "name")
+                     <*> (o .:? "bbox" .!= mempty)
+                     <*> (o .:? "id")
+                     <*> (o .:? "projectId")
+                     <*> (o .:? "description")
+                     <*> (o .:? "tags" .!= mempty))
+
+instance ToJSON RasterCollectionsRaster where
+        toJSON RasterCollectionsRaster{..}
+          = object
+              (catMaybes
+                 [("creationTime" .=) <$> _rcrCreationTime,
+                  Just ("rasterType" .= _rcrRasterType),
+                  ("lastModifiedTime" .=) <$> _rcrLastModifiedTime,
+                  ("name" .=) <$> _rcrName, ("bbox" .=) <$> _rcrBbox,
+                  ("id" .=) <$> _rcrId,
+                  ("projectId" .=) <$> _rcrProjectId,
+                  ("description" .=) <$> _rcrDescription,
+                  ("tags" .=) <$> _rcrTags])
+
+-- | Conditions for filtering features.
+--
+-- /See:/ 'filter'' smart constructor.
+data Filter = Filter
+    { _fOperator :: !(Maybe FilterOperator)
+    , _fValue    :: !(Maybe JSONValue)
+    , _fColumn   :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'Filter' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'fOperator'
+--
+-- * 'fValue'
+--
+-- * 'fColumn'
+filter'
+    :: Filter
+filter' =
+    Filter
+    { _fOperator = Nothing
+    , _fValue = Nothing
+    , _fColumn = Nothing
+    }
+
+-- | Operation used to evaluate the filter.
+fOperator :: Lens' Filter (Maybe FilterOperator)
+fOperator
+  = lens _fOperator (\ s a -> s{_fOperator = a})
+
+-- | Value to be evaluated against attribute.
+fValue :: Lens' Filter (Maybe JSONValue)
+fValue = lens _fValue (\ s a -> s{_fValue = a})
+
+-- | The column name to filter on.
+fColumn :: Lens' Filter (Maybe Text)
+fColumn = lens _fColumn (\ s a -> s{_fColumn = a})
+
+instance FromJSON Filter where
+        parseJSON
+          = withObject "Filter"
+              (\ o ->
+                 Filter <$>
+                   (o .:? "operator") <*> (o .:? "value") <*>
+                     (o .:? "column"))
+
+instance ToJSON Filter where
+        toJSON Filter{..}
+          = object
+              (catMaybes
+                 [("operator" .=) <$> _fOperator,
+                  ("value" .=) <$> _fValue,
+                  ("column" .=) <$> _fColumn])
+
+--
+-- /See:/ 'geoJSONMultiPoint' smart constructor.
+data GeoJSONMultiPoint = GeoJSONMultiPoint
+    { _gjmpCoordinates :: !(Maybe [[Textual Double]])
+    , _gjmpType        :: !(Maybe GeoJSONMultiPointType)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'GeoJSONMultiPoint' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'gjmpCoordinates'
+--
+-- * 'gjmpType'
+geoJSONMultiPoint
+    :: GeoJSONMultiPoint
+geoJSONMultiPoint =
+    GeoJSONMultiPoint
+    { _gjmpCoordinates = Nothing
+    , _gjmpType = Nothing
+    }
+
+-- | An array of at least two GeoJsonPoint coordinate arrays.
+gjmpCoordinates :: Lens' GeoJSONMultiPoint [[Double]]
+gjmpCoordinates
+  = lens _gjmpCoordinates
+      (\ s a -> s{_gjmpCoordinates = a})
+      . _Default
+      . _Coerce
+
+-- | Identifies this object as a GeoJsonMultiPoint.
+gjmpType :: Lens' GeoJSONMultiPoint (Maybe GeoJSONMultiPointType)
+gjmpType = lens _gjmpType (\ s a -> s{_gjmpType = a})
+
+instance FromJSON GeoJSONMultiPoint where
+        parseJSON
+          = withObject "GeoJSONMultiPoint"
+              (\ o ->
+                 GeoJSONMultiPoint <$>
+                   (o .:? "coordinates" .!= mempty) <*> (o .:? "type"))
+
+instance ToJSON GeoJSONMultiPoint where
+        toJSON GeoJSONMultiPoint{..}
+          = object
+              (catMaybes
+                 [("coordinates" .=) <$> _gjmpCoordinates,
+                  ("type" .=) <$> _gjmpType])
+
+--
+-- /See:/ 'geoJSONMultiPolygon' smart constructor.
+data GeoJSONMultiPolygon = GeoJSONMultiPolygon
+    { _gjsonmpCoordinates :: !(Maybe [[[[Textual Double]]]])
+    , _gjsonmpType        :: !(Maybe GeoJSONMultiPolygonType)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'GeoJSONMultiPolygon' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'gjsonmpCoordinates'
+--
+-- * 'gjsonmpType'
+geoJSONMultiPolygon
+    :: GeoJSONMultiPolygon
+geoJSONMultiPolygon =
+    GeoJSONMultiPolygon
+    { _gjsonmpCoordinates = Nothing
+    , _gjsonmpType = Nothing
+    }
+
+-- | An array of at least two GeoJsonPolygon coordinate arrays.
+gjsonmpCoordinates :: Lens' GeoJSONMultiPolygon [[[[Double]]]]
+gjsonmpCoordinates
+  = lens _gjsonmpCoordinates
+      (\ s a -> s{_gjsonmpCoordinates = a})
+      . _Default
+      . _Coerce
+
+-- | Identifies this object as a GeoJsonMultiPolygon.
+gjsonmpType :: Lens' GeoJSONMultiPolygon (Maybe GeoJSONMultiPolygonType)
+gjsonmpType
+  = lens _gjsonmpType (\ s a -> s{_gjsonmpType = a})
+
+instance FromJSON GeoJSONMultiPolygon where
+        parseJSON
+          = withObject "GeoJSONMultiPolygon"
+              (\ o ->
+                 GeoJSONMultiPolygon <$>
+                   (o .:? "coordinates" .!= mempty) <*> (o .:? "type"))
+
+instance ToJSON GeoJSONMultiPolygon where
+        toJSON GeoJSONMultiPolygon{..}
+          = object
+              (catMaybes
+                 [("coordinates" .=) <$> _gjsonmpCoordinates,
+                  ("type" .=) <$> _gjsonmpType])
+
+-- | A Layer combines multiple datasources, with styling information, for
+-- presentation on a map.
+--
+-- /See:/ 'layer' smart constructor.
+data Layer = Layer
+    { _layCreationTime              :: !(Maybe DateTime')
+    , _layWritersCanEditPermissions :: !(Maybe Bool)
+    , _layStyle                     :: !(Maybe VectorStyle)
+    , _layEtag                      :: !(Maybe Text)
+    , _layDatasourceType            :: !(Maybe LayerDatasourceType)
+    , _layPublishingStatus          :: !(Maybe LayerPublishingStatus)
+    , _layCreatorEmail              :: !(Maybe Text)
+    , _layLayerType                 :: !(Maybe LayerLayerType)
+    , _layLastModifiedTime          :: !(Maybe DateTime')
+    , _layDatasources               :: !(Maybe [Datasource])
+    , _layLastModifierEmail         :: !(Maybe Text)
+    , _layName                      :: !(Maybe Text)
+    , _layBbox                      :: !(Maybe [Textual Double])
+    , _layProcessingStatus          :: !(Maybe LayerProcessingStatus)
+    , _layId                        :: !(Maybe Text)
+    , _layProjectId                 :: !(Maybe Text)
+    , _layDraftAccessList           :: !(Maybe Text)
+    , _layPublishedAccessList       :: !(Maybe Text)
+    , _layDescription               :: !(Maybe Text)
+    , _layTags                      :: !(Maybe [Text])
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'Layer' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'layCreationTime'
+--
+-- * 'layWritersCanEditPermissions'
+--
+-- * 'layStyle'
+--
+-- * 'layEtag'
+--
+-- * 'layDatasourceType'
+--
+-- * 'layPublishingStatus'
+--
+-- * 'layCreatorEmail'
+--
+-- * 'layLayerType'
+--
+-- * 'layLastModifiedTime'
+--
+-- * 'layDatasources'
+--
+-- * 'layLastModifierEmail'
+--
+-- * 'layName'
+--
+-- * 'layBbox'
+--
+-- * 'layProcessingStatus'
+--
+-- * 'layId'
+--
+-- * 'layProjectId'
+--
+-- * 'layDraftAccessList'
+--
+-- * 'layPublishedAccessList'
+--
+-- * 'layDescription'
+--
+-- * 'layTags'
+layer
+    :: Layer
+layer =
+    Layer
+    { _layCreationTime = Nothing
+    , _layWritersCanEditPermissions = Nothing
+    , _layStyle = Nothing
+    , _layEtag = Nothing
+    , _layDatasourceType = Nothing
+    , _layPublishingStatus = Nothing
+    , _layCreatorEmail = Nothing
+    , _layLayerType = Nothing
+    , _layLastModifiedTime = Nothing
+    , _layDatasources = Nothing
+    , _layLastModifierEmail = Nothing
+    , _layName = Nothing
+    , _layBbox = Nothing
+    , _layProcessingStatus = Nothing
+    , _layId = Nothing
+    , _layProjectId = Nothing
+    , _layDraftAccessList = Nothing
+    , _layPublishedAccessList = Nothing
+    , _layDescription = Nothing
+    , _layTags = Nothing
+    }
+
+-- | The creation time of this layer. The value is an RFC 3339 formatted
+-- date-time value (e.g. 1970-01-01T00:00:00Z).
+layCreationTime :: Lens' Layer (Maybe UTCTime)
+layCreationTime
+  = lens _layCreationTime
+      (\ s a -> s{_layCreationTime = a})
+      . mapping _DateTime
+
+-- | If true, WRITERs of the asset are able to edit the asset permissions.
+layWritersCanEditPermissions :: Lens' Layer (Maybe Bool)
+layWritersCanEditPermissions
+  = lens _layWritersCanEditPermissions
+      (\ s a -> s{_layWritersCanEditPermissions = a})
+
+-- | The styling information for a vector layer. Note: Style information is
+-- returned in response to a get request but not a list request. After
+-- requesting a list of layers, you\'ll need to send a get request to
+-- retrieve the VectorStyles for each layer.
+layStyle :: Lens' Layer (Maybe VectorStyle)
+layStyle = lens _layStyle (\ s a -> s{_layStyle = a})
+
+-- | The ETag, used to refer to the current version of the asset.
+layEtag :: Lens' Layer (Maybe Text)
+layEtag = lens _layEtag (\ s a -> s{_layEtag = a})
+
+-- | Deprecated: The type of the datasources used to build this Layer. Note:
+-- This has been replaced by layerType, but is still available for now to
+-- maintain backward compatibility.
+layDatasourceType :: Lens' Layer (Maybe LayerDatasourceType)
+layDatasourceType
+  = lens _layDatasourceType
+      (\ s a -> s{_layDatasourceType = a})
+
+-- | The publishing status of this layer.
+layPublishingStatus :: Lens' Layer (Maybe LayerPublishingStatus)
+layPublishingStatus
+  = lens _layPublishingStatus
+      (\ s a -> s{_layPublishingStatus = a})
+
+-- | The email address of the creator of this layer. This is only returned on
+-- GET requests and not LIST requests.
+layCreatorEmail :: Lens' Layer (Maybe Text)
+layCreatorEmail
+  = lens _layCreatorEmail
+      (\ s a -> s{_layCreatorEmail = a})
+
+-- | The type of the datasources used to build this Layer. This should be
+-- used instead of datasourceType. At least one of layerType and
+-- datasourceType and must be specified, but layerType takes precedence.
+layLayerType :: Lens' Layer (Maybe LayerLayerType)
+layLayerType
+  = lens _layLayerType (\ s a -> s{_layLayerType = a})
+
+-- | The last modified time of this layer. The value is an RFC 3339 formatted
+-- date-time value (e.g. 1970-01-01T00:00:00Z).
+layLastModifiedTime :: Lens' Layer (Maybe UTCTime)
+layLastModifiedTime
+  = lens _layLastModifiedTime
+      (\ s a -> s{_layLastModifiedTime = a})
+      . mapping _DateTime
+
+-- | An array of datasources used to build this layer. If layerType is
+-- \"image\", or layerType is not specified and datasourceType is
+-- \"image\", then each element in this array is a reference to an Image or
+-- RasterCollection. If layerType is \"vector\", or layerType is not
+-- specified and datasourceType is \"table\" then each element in this
+-- array is a reference to a Vector Table.
+layDatasources :: Lens' Layer [Datasource]
+layDatasources
+  = lens _layDatasources
+      (\ s a -> s{_layDatasources = a})
+      . _Default
+      . _Coerce
+
+-- | The email address of the last modifier of this layer. This is only
+-- returned on GET requests and not LIST requests.
+layLastModifierEmail :: Lens' Layer (Maybe Text)
+layLastModifierEmail
+  = lens _layLastModifierEmail
+      (\ s a -> s{_layLastModifierEmail = a})
+
+-- | The name of this Layer, supplied by the author.
+layName :: Lens' Layer (Maybe Text)
+layName = lens _layName (\ s a -> s{_layName = a})
+
+-- | A rectangular bounding box which contains all of the data in this Layer.
+-- The box is expressed as \\\"west, south, east, north\\\". The numbers
+-- represent latitude and longitude in decimal degrees.
+layBbox :: Lens' Layer [Double]
+layBbox
+  = lens _layBbox (\ s a -> s{_layBbox = a}) . _Default
+      . _Coerce
+
+-- | The processing status of this layer.
+layProcessingStatus :: Lens' Layer (Maybe LayerProcessingStatus)
+layProcessingStatus
+  = lens _layProcessingStatus
+      (\ s a -> s{_layProcessingStatus = a})
+
+-- | A globally unique ID, used to refer to this Layer.
+layId :: Lens' Layer (Maybe Text)
+layId = lens _layId (\ s a -> s{_layId = a})
+
+-- | The ID of the project that this Layer is in.
+layProjectId :: Lens' Layer (Maybe Text)
+layProjectId
+  = lens _layProjectId (\ s a -> s{_layProjectId = a})
+
+-- | Deprecated: The name of an access list of the Map Editor type. The user
+-- on whose behalf the request is being sent must be an editor on that
+-- access list. Note: Google Maps Engine no longer uses access lists.
+-- Instead, each asset has its own list of permissions. For backward
+-- compatibility, the API still accepts access lists for projects that are
+-- already using access lists. If you created a GME account\/project after
+-- July 14th, 2014, you will not be able to send API requests that include
+-- access lists. Note: This is an input field only. It is not returned in
+-- response to a list or get request.
+layDraftAccessList :: Lens' Layer (Maybe Text)
+layDraftAccessList
+  = lens _layDraftAccessList
+      (\ s a -> s{_layDraftAccessList = a})
+
+-- | Deprecated: The access list to whom view permissions are granted. The
+-- value must be the name of a Maps Engine access list of the Map Viewer
+-- type, and the user must be a viewer on that list. Note: Google Maps
+-- Engine no longer uses access lists. Instead, each asset has its own list
+-- of permissions. For backward compatibility, the API still accepts access
+-- lists for projects that are already using access lists. If you created a
+-- GME account\/project after July 14th, 2014, you will not be able to send
+-- API requests that include access lists. Note: This is an input field
+-- only. It is not returned in response to a list or get request.
+layPublishedAccessList :: Lens' Layer (Maybe Text)
+layPublishedAccessList
+  = lens _layPublishedAccessList
+      (\ s a -> s{_layPublishedAccessList = a})
+
+-- | The description of this Layer, supplied by the author.
+layDescription :: Lens' Layer (Maybe Text)
+layDescription
+  = lens _layDescription
+      (\ s a -> s{_layDescription = a})
+
+-- | Tags of this Layer.
+layTags :: Lens' Layer [Text]
+layTags
+  = lens _layTags (\ s a -> s{_layTags = a}) . _Default
+      . _Coerce
+
+instance FromJSON Layer where
+        parseJSON
+          = withObject "Layer"
+              (\ o ->
+                 Layer <$>
+                   (o .:? "creationTime") <*>
+                     (o .:? "writersCanEditPermissions")
+                     <*> (o .:? "style")
+                     <*> (o .:? "etag")
+                     <*> (o .:? "datasourceType")
+                     <*> (o .:? "publishingStatus")
+                     <*> (o .:? "creatorEmail")
+                     <*> (o .:? "layerType")
+                     <*> (o .:? "lastModifiedTime")
+                     <*> (o .:? "datasources")
+                     <*> (o .:? "lastModifierEmail")
+                     <*> (o .:? "name")
+                     <*> (o .:? "bbox" .!= mempty)
+                     <*> (o .:? "processingStatus")
+                     <*> (o .:? "id")
+                     <*> (o .:? "projectId")
+                     <*> (o .:? "draftAccessList")
+                     <*> (o .:? "publishedAccessList")
+                     <*> (o .:? "description")
+                     <*> (o .:? "tags"))
+
+instance ToJSON Layer where
+        toJSON Layer{..}
+          = object
+              (catMaybes
+                 [("creationTime" .=) <$> _layCreationTime,
+                  ("writersCanEditPermissions" .=) <$>
+                    _layWritersCanEditPermissions,
+                  ("style" .=) <$> _layStyle, ("etag" .=) <$> _layEtag,
+                  ("datasourceType" .=) <$> _layDatasourceType,
+                  ("publishingStatus" .=) <$> _layPublishingStatus,
+                  ("creatorEmail" .=) <$> _layCreatorEmail,
+                  ("layerType" .=) <$> _layLayerType,
+                  ("lastModifiedTime" .=) <$> _layLastModifiedTime,
+                  ("datasources" .=) <$> _layDatasources,
+                  ("lastModifierEmail" .=) <$> _layLastModifierEmail,
+                  ("name" .=) <$> _layName, ("bbox" .=) <$> _layBbox,
+                  ("processingStatus" .=) <$> _layProcessingStatus,
+                  ("id" .=) <$> _layId,
+                  ("projectId" .=) <$> _layProjectId,
+                  ("draftAccessList" .=) <$> _layDraftAccessList,
+                  ("publishedAccessList" .=) <$>
+                    _layPublishedAccessList,
+                  ("description" .=) <$> _layDescription,
+                  ("tags" .=) <$> _layTags])
+
+-- | Style for points.
+--
+-- /See:/ 'pointStyle' smart constructor.
+data PointStyle = PointStyle
+    { _psIcon  :: !(Maybe IconStyle)
+    , _psLabel :: !(Maybe LabelStyle)
+    } 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:
+--
+-- * 'psIcon'
+--
+-- * 'psLabel'
+pointStyle
+    :: PointStyle
+pointStyle =
+    PointStyle
+    { _psIcon = Nothing
+    , _psLabel = Nothing
+    }
+
+-- | Icon for the point; if it isn\'t null, exactly one of \'name\', \'id\'
+-- or \'scaledShape\' must be set.
+psIcon :: Lens' PointStyle (Maybe IconStyle)
+psIcon = lens _psIcon (\ s a -> s{_psIcon = a})
+
+-- | Label style for the point.
+psLabel :: Lens' PointStyle (Maybe LabelStyle)
+psLabel = lens _psLabel (\ s a -> s{_psLabel = a})
+
+instance FromJSON PointStyle where
+        parseJSON
+          = withObject "PointStyle"
+              (\ o ->
+                 PointStyle <$> (o .:? "icon") <*> (o .:? "label"))
+
+instance ToJSON PointStyle where
+        toJSON PointStyle{..}
+          = object
+              (catMaybes
+                 [("icon" .=) <$> _psIcon, ("label" .=) <$> _psLabel])
+
+-- | A geo-referenced raster.
+--
+-- /See:/ 'raster' smart constructor.
+data Raster = Raster
+    { _rrCreationTime              :: !(Maybe DateTime')
+    , _rrWritersCanEditPermissions :: !(Maybe Bool)
+    , _rrMaskType                  :: !Text
+    , _rrEtag                      :: !(Maybe Text)
+    , _rrCreatorEmail              :: !(Maybe Text)
+    , _rrRasterType                :: !(Maybe RasterRasterType)
+    , _rrLastModifiedTime          :: !(Maybe DateTime')
+    , _rrLastModifierEmail         :: !(Maybe Text)
+    , _rrAcquisitionTime           :: !(Maybe AcquisitionTime)
+    , _rrName                      :: !(Maybe Text)
+    , _rrBbox                      :: !(Maybe [Textual Double])
+    , _rrProcessingStatus          :: !(Maybe RasterProcessingStatus)
+    , _rrFiles                     :: !(Maybe [File])
+    , _rrId                        :: !(Maybe Text)
+    , _rrProjectId                 :: !(Maybe Text)
+    , _rrDraftAccessList           :: !(Maybe Text)
+    , _rrDescription               :: !(Maybe Text)
+    , _rrAttribution               :: !(Maybe Text)
+    , _rrTags                      :: !(Maybe [Text])
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'Raster' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'rrCreationTime'
+--
+-- * 'rrWritersCanEditPermissions'
+--
+-- * 'rrMaskType'
+--
+-- * 'rrEtag'
+--
+-- * 'rrCreatorEmail'
+--
+-- * 'rrRasterType'
+--
+-- * 'rrLastModifiedTime'
+--
+-- * 'rrLastModifierEmail'
+--
+-- * 'rrAcquisitionTime'
+--
+-- * 'rrName'
+--
+-- * 'rrBbox'
+--
+-- * 'rrProcessingStatus'
+--
+-- * 'rrFiles'
+--
+-- * 'rrId'
+--
+-- * 'rrProjectId'
+--
+-- * 'rrDraftAccessList'
+--
+-- * 'rrDescription'
+--
+-- * 'rrAttribution'
+--
+-- * 'rrTags'
+raster
+    :: Raster
+raster =
+    Raster
+    { _rrCreationTime = Nothing
+    , _rrWritersCanEditPermissions = Nothing
+    , _rrMaskType = "autoMask"
+    , _rrEtag = Nothing
+    , _rrCreatorEmail = Nothing
+    , _rrRasterType = Nothing
+    , _rrLastModifiedTime = Nothing
+    , _rrLastModifierEmail = Nothing
+    , _rrAcquisitionTime = Nothing
+    , _rrName = Nothing
+    , _rrBbox = Nothing
+    , _rrProcessingStatus = Nothing
+    , _rrFiles = Nothing
+    , _rrId = Nothing
+    , _rrProjectId = Nothing
+    , _rrDraftAccessList = Nothing
+    , _rrDescription = Nothing
+    , _rrAttribution = Nothing
+    , _rrTags = Nothing
+    }
+
+-- | The creation time of this raster. The value is an RFC 3339 formatted
+-- date-time value (e.g. 1970-01-01T00:00:00Z).
+rrCreationTime :: Lens' Raster (Maybe UTCTime)
+rrCreationTime
+  = lens _rrCreationTime
+      (\ s a -> s{_rrCreationTime = a})
+      . mapping _DateTime
+
+-- | If true, WRITERs of the asset are able to edit the asset permissions.
+rrWritersCanEditPermissions :: Lens' Raster (Maybe Bool)
+rrWritersCanEditPermissions
+  = lens _rrWritersCanEditPermissions
+      (\ s a -> s{_rrWritersCanEditPermissions = a})
+
+-- | The mask processing type of this Raster.
+rrMaskType :: Lens' Raster Text
+rrMaskType
+  = lens _rrMaskType (\ s a -> s{_rrMaskType = a})
+
+-- | The ETag, used to refer to the current version of the asset.
+rrEtag :: Lens' Raster (Maybe Text)
+rrEtag = lens _rrEtag (\ s a -> s{_rrEtag = a})
+
+-- | The email address of the creator of this raster. This is only returned
+-- on GET requests and not LIST requests.
+rrCreatorEmail :: Lens' Raster (Maybe Text)
+rrCreatorEmail
+  = lens _rrCreatorEmail
+      (\ s a -> s{_rrCreatorEmail = a})
+
+-- | The type of this Raster. Always \"image\" today.
+rrRasterType :: Lens' Raster (Maybe RasterRasterType)
+rrRasterType
+  = lens _rrRasterType (\ s a -> s{_rrRasterType = a})
+
+-- | The last modified time of this raster. The value is an RFC 3339
+-- formatted date-time value (e.g. 1970-01-01T00:00:00Z).
+rrLastModifiedTime :: Lens' Raster (Maybe UTCTime)
+rrLastModifiedTime
+  = lens _rrLastModifiedTime
+      (\ s a -> s{_rrLastModifiedTime = a})
+      . mapping _DateTime
+
+-- | The email address of the last modifier of this raster. This is only
+-- returned on GET requests and not LIST requests.
+rrLastModifierEmail :: Lens' Raster (Maybe Text)
+rrLastModifierEmail
+  = lens _rrLastModifierEmail
+      (\ s a -> s{_rrLastModifierEmail = a})
+
+-- | The acquisition time of this Raster.
+rrAcquisitionTime :: Lens' Raster (Maybe AcquisitionTime)
+rrAcquisitionTime
+  = lens _rrAcquisitionTime
+      (\ s a -> s{_rrAcquisitionTime = a})
+
+-- | The name of this Raster, supplied by the author.
+rrName :: Lens' Raster (Maybe Text)
+rrName = lens _rrName (\ s a -> s{_rrName = a})
+
+-- | A rectangular bounding box which contains all of the data in this
+-- Raster. The box is expressed as \\\"west, south, east, north\\\". The
+-- numbers represent latitudes and longitudes in decimal degrees.
+rrBbox :: Lens' Raster [Double]
+rrBbox
+  = lens _rrBbox (\ s a -> s{_rrBbox = a}) . _Default .
+      _Coerce
+
+-- | The processing status of this Raster.
+rrProcessingStatus :: Lens' Raster (Maybe RasterProcessingStatus)
+rrProcessingStatus
+  = lens _rrProcessingStatus
+      (\ s a -> s{_rrProcessingStatus = a})
+
+-- | The files associated with this Raster.
+rrFiles :: Lens' Raster [File]
+rrFiles
+  = lens _rrFiles (\ s a -> s{_rrFiles = a}) . _Default
+      . _Coerce
+
+-- | A globally unique ID, used to refer to this Raster.
+rrId :: Lens' Raster (Maybe Text)
+rrId = lens _rrId (\ s a -> s{_rrId = a})
+
+-- | The ID of the project that this Raster is in.
+rrProjectId :: Lens' Raster (Maybe Text)
+rrProjectId
+  = lens _rrProjectId (\ s a -> s{_rrProjectId = a})
+
+-- | Deprecated: The name of an access list of the Map Editor type. The user
+-- on whose behalf the request is being sent must be an editor on that
+-- access list. Note: Google Maps Engine no longer uses access lists.
+-- Instead, each asset has its own list of permissions. For backward
+-- compatibility, the API still accepts access lists for projects that are
+-- already using access lists. If you created a GME account\/project after
+-- July 14th, 2014, you will not be able to send API requests that include
+-- access lists. Note: This is an input field only. It is not returned in
+-- response to a list or get request.
+rrDraftAccessList :: Lens' Raster (Maybe Text)
+rrDraftAccessList
+  = lens _rrDraftAccessList
+      (\ s a -> s{_rrDraftAccessList = a})
+
+-- | The description of this Raster, supplied by the author.
+rrDescription :: Lens' Raster (Maybe Text)
+rrDescription
+  = lens _rrDescription
+      (\ s a -> s{_rrDescription = a})
+
+-- | The name of the attribution to be used for this Raster.
+rrAttribution :: Lens' Raster (Maybe Text)
+rrAttribution
+  = lens _rrAttribution
+      (\ s a -> s{_rrAttribution = a})
+
+-- | Tags of this Raster.
+rrTags :: Lens' Raster [Text]
+rrTags
+  = lens _rrTags (\ s a -> s{_rrTags = a}) . _Default .
+      _Coerce
+
+instance FromJSON Raster where
+        parseJSON
+          = withObject "Raster"
+              (\ o ->
+                 Raster <$>
+                   (o .:? "creationTime") <*>
+                     (o .:? "writersCanEditPermissions")
+                     <*> (o .:? "maskType" .!= "autoMask")
+                     <*> (o .:? "etag")
+                     <*> (o .:? "creatorEmail")
+                     <*> (o .:? "rasterType")
+                     <*> (o .:? "lastModifiedTime")
+                     <*> (o .:? "lastModifierEmail")
+                     <*> (o .:? "acquisitionTime")
+                     <*> (o .:? "name")
+                     <*> (o .:? "bbox" .!= mempty)
+                     <*> (o .:? "processingStatus")
+                     <*> (o .:? "files" .!= mempty)
+                     <*> (o .:? "id")
+                     <*> (o .:? "projectId")
+                     <*> (o .:? "draftAccessList")
+                     <*> (o .:? "description")
+                     <*> (o .:? "attribution")
+                     <*> (o .:? "tags"))
+
+instance ToJSON Raster where
+        toJSON Raster{..}
+          = object
+              (catMaybes
+                 [("creationTime" .=) <$> _rrCreationTime,
+                  ("writersCanEditPermissions" .=) <$>
+                    _rrWritersCanEditPermissions,
+                  Just ("maskType" .= _rrMaskType),
+                  ("etag" .=) <$> _rrEtag,
+                  ("creatorEmail" .=) <$> _rrCreatorEmail,
+                  ("rasterType" .=) <$> _rrRasterType,
+                  ("lastModifiedTime" .=) <$> _rrLastModifiedTime,
+                  ("lastModifierEmail" .=) <$> _rrLastModifierEmail,
+                  ("acquisitionTime" .=) <$> _rrAcquisitionTime,
+                  ("name" .=) <$> _rrName, ("bbox" .=) <$> _rrBbox,
+                  ("processingStatus" .=) <$> _rrProcessingStatus,
+                  ("files" .=) <$> _rrFiles, ("id" .=) <$> _rrId,
+                  ("projectId" .=) <$> _rrProjectId,
+                  ("draftAccessList" .=) <$> _rrDraftAccessList,
+                  ("description" .=) <$> _rrDescription,
+                  ("attribution" .=) <$> _rrAttribution,
+                  ("tags" .=) <$> _rrTags])
+
+-- | Style for polygons.
+--
+-- /See:/ 'polygonStyle' smart constructor.
+data PolygonStyle = PolygonStyle
+    { _pStroke :: !(Maybe BOrder)
+    , _pFill   :: !(Maybe Color)
+    , _pLabel  :: !(Maybe LabelStyle)
+    } 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:
+--
+-- * 'pStroke'
+--
+-- * 'pFill'
+--
+-- * 'pLabel'
+polygonStyle
+    :: PolygonStyle
+polygonStyle =
+    PolygonStyle
+    { _pStroke = Nothing
+    , _pFill = Nothing
+    , _pLabel = Nothing
+    }
+
+-- | Border of the polygon. 0 \< border.width \<= 10.
+pStroke :: Lens' PolygonStyle (Maybe BOrder)
+pStroke = lens _pStroke (\ s a -> s{_pStroke = a})
+
+-- | Fill color of the polygon. If not provided, the polygon will be
+-- transparent and not visible if there is no border.
+pFill :: Lens' PolygonStyle (Maybe Color)
+pFill = lens _pFill (\ s a -> s{_pFill = a})
+
+-- | Label style for the polygon.
+pLabel :: Lens' PolygonStyle (Maybe LabelStyle)
+pLabel = lens _pLabel (\ s a -> s{_pLabel = a})
+
+instance FromJSON PolygonStyle where
+        parseJSON
+          = withObject "PolygonStyle"
+              (\ o ->
+                 PolygonStyle <$>
+                   (o .:? "stroke") <*> (o .:? "fill") <*>
+                     (o .:? "label"))
+
+instance ToJSON PolygonStyle where
+        toJSON PolygonStyle{..}
+          = object
+              (catMaybes
+                 [("stroke" .=) <$> _pStroke, ("fill" .=) <$> _pFill,
+                  ("label" .=) <$> _pLabel])
+
+-- | A permission defines the user or group that has access to an asset, and
+-- the type of access they have.
+--
+-- /See:/ 'permission' smart constructor.
+data Permission = Permission
+    { _perRole         :: !(Maybe PermissionRole)
+    , _perId           :: !(Maybe Text)
+    , _perType         :: !(Maybe PermissionType)
+    , _perDiscoverable :: !(Maybe Bool)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'Permission' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'perRole'
+--
+-- * 'perId'
+--
+-- * 'perType'
+--
+-- * 'perDiscoverable'
+permission
+    :: Permission
+permission =
+    Permission
+    { _perRole = Nothing
+    , _perId = Nothing
+    , _perType = Nothing
+    , _perDiscoverable = Nothing
+    }
+
+-- | The type of access granted to this user or group.
+perRole :: Lens' Permission (Maybe PermissionRole)
+perRole = lens _perRole (\ s a -> s{_perRole = a})
+
+-- | The unique identifier of the permission. This could be the email address
+-- of the user or group this permission refers to, or the string \"anyone\"
+-- for public permissions.
+perId :: Lens' Permission (Maybe Text)
+perId = lens _perId (\ s a -> s{_perId = a})
+
+-- | The account type.
+perType :: Lens' Permission (Maybe PermissionType)
+perType = lens _perType (\ s a -> s{_perType = a})
+
+-- | Indicates whether a public asset is listed and can be found via a web
+-- search (value true), or is visible only to people who have a link to the
+-- asset (value false).
+perDiscoverable :: Lens' Permission (Maybe Bool)
+perDiscoverable
+  = lens _perDiscoverable
+      (\ s a -> s{_perDiscoverable = a})
+
+instance FromJSON Permission where
+        parseJSON
+          = withObject "Permission"
+              (\ o ->
+                 Permission <$>
+                   (o .:? "role") <*> (o .:? "id") <*> (o .:? "type")
+                     <*> (o .:? "discoverable"))
+
+instance ToJSON Permission where
+        toJSON Permission{..}
+          = object
+              (catMaybes
+                 [("role" .=) <$> _perRole, ("id" .=) <$> _perId,
+                  ("type" .=) <$> _perType,
+                  ("discoverable" .=) <$> _perDiscoverable])
+
+-- | The published version of a layer.
+--
+-- /See:/ 'publishedLayer' smart constructor.
+data PublishedLayer = PublishedLayer
+    { _plLayerType   :: !(Maybe PublishedLayerLayerType)
+    , _plName        :: !(Maybe Text)
+    , _plId          :: !(Maybe Text)
+    , _plProjectId   :: !(Maybe Text)
+    , _plDescription :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'PublishedLayer' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'plLayerType'
+--
+-- * 'plName'
+--
+-- * 'plId'
+--
+-- * 'plProjectId'
+--
+-- * 'plDescription'
+publishedLayer
+    :: PublishedLayer
+publishedLayer =
+    PublishedLayer
+    { _plLayerType = Nothing
+    , _plName = Nothing
+    , _plId = Nothing
+    , _plProjectId = Nothing
+    , _plDescription = Nothing
+    }
+
+-- | The type of the datasources used to build this Layer. This should be
+-- used instead of datasourceType. At least one of layerType and
+-- datasourceType and must be specified, but layerType takes precedence.
+plLayerType :: Lens' PublishedLayer (Maybe PublishedLayerLayerType)
+plLayerType
+  = lens _plLayerType (\ s a -> s{_plLayerType = a})
+
+-- | The name of this Layer, supplied by the author.
+plName :: Lens' PublishedLayer (Maybe Text)
+plName = lens _plName (\ s a -> s{_plName = a})
+
+-- | A globally unique ID, used to refer to this Layer.
+plId :: Lens' PublishedLayer (Maybe Text)
+plId = lens _plId (\ s a -> s{_plId = a})
+
+-- | The ID of the project that this Layer is in.
+plProjectId :: Lens' PublishedLayer (Maybe Text)
+plProjectId
+  = lens _plProjectId (\ s a -> s{_plProjectId = a})
+
+-- | The description of this Layer, supplied by the author.
+plDescription :: Lens' PublishedLayer (Maybe Text)
+plDescription
+  = lens _plDescription
+      (\ s a -> s{_plDescription = a})
+
+instance FromJSON PublishedLayer where
+        parseJSON
+          = withObject "PublishedLayer"
+              (\ o ->
+                 PublishedLayer <$>
+                   (o .:? "layerType") <*> (o .:? "name") <*>
+                     (o .:? "id")
+                     <*> (o .:? "projectId")
+                     <*> (o .:? "description"))
+
+instance ToJSON PublishedLayer where
+        toJSON PublishedLayer{..}
+          = object
+              (catMaybes
+                 [("layerType" .=) <$> _plLayerType,
+                  ("name" .=) <$> _plName, ("id" .=) <$> _plId,
+                  ("projectId" .=) <$> _plProjectId,
+                  ("description" .=) <$> _plDescription])
+
+-- | A collection of geographic features, and associated metadata.
+--
+-- /See:/ 'table' smart constructor.
+data Table = Table
+    { _tabCreationTime              :: !(Maybe DateTime')
+    , _tabWritersCanEditPermissions :: !(Maybe Bool)
+    , _tabEtag                      :: !(Maybe Text)
+    , _tabCreatorEmail              :: !(Maybe Text)
+    , _tabLastModifiedTime          :: !(Maybe DateTime')
+    , _tabSchema                    :: !(Maybe Schema)
+    , _tabLastModifierEmail         :: !(Maybe Text)
+    , _tabName                      :: !(Maybe Text)
+    , _tabBbox                      :: !(Maybe [Textual Double])
+    , _tabProcessingStatus          :: !(Maybe TableProcessingStatus)
+    , _tabFiles                     :: !(Maybe [File])
+    , _tabId                        :: !(Maybe Text)
+    , _tabProjectId                 :: !(Maybe Text)
+    , _tabDraftAccessList           :: !(Maybe Text)
+    , _tabPublishedAccessList       :: !(Maybe Text)
+    , _tabSourceEncoding            :: !Text
+    , _tabDescription               :: !(Maybe Text)
+    , _tabTags                      :: !(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:
+--
+-- * 'tabCreationTime'
+--
+-- * 'tabWritersCanEditPermissions'
+--
+-- * 'tabEtag'
+--
+-- * 'tabCreatorEmail'
+--
+-- * 'tabLastModifiedTime'
+--
+-- * 'tabSchema'
+--
+-- * 'tabLastModifierEmail'
+--
+-- * 'tabName'
+--
+-- * 'tabBbox'
+--
+-- * 'tabProcessingStatus'
+--
+-- * 'tabFiles'
+--
+-- * 'tabId'
+--
+-- * 'tabProjectId'
+--
+-- * 'tabDraftAccessList'
+--
+-- * 'tabPublishedAccessList'
+--
+-- * 'tabSourceEncoding'
+--
+-- * 'tabDescription'
+--
+-- * 'tabTags'
+table
+    :: Table
+table =
+    Table
+    { _tabCreationTime = Nothing
+    , _tabWritersCanEditPermissions = Nothing
+    , _tabEtag = Nothing
+    , _tabCreatorEmail = Nothing
+    , _tabLastModifiedTime = Nothing
+    , _tabSchema = Nothing
+    , _tabLastModifierEmail = Nothing
+    , _tabName = Nothing
+    , _tabBbox = Nothing
+    , _tabProcessingStatus = Nothing
+    , _tabFiles = Nothing
+    , _tabId = Nothing
+    , _tabProjectId = Nothing
+    , _tabDraftAccessList = Nothing
+    , _tabPublishedAccessList = Nothing
+    , _tabSourceEncoding = "UTF-8"
+    , _tabDescription = Nothing
+    , _tabTags = Nothing
+    }
+
+-- | The creation time of this table. The value is an RFC 3339 formatted
+-- date-time value (e.g. 1970-01-01T00:00:00Z).
+tabCreationTime :: Lens' Table (Maybe UTCTime)
+tabCreationTime
+  = lens _tabCreationTime
+      (\ s a -> s{_tabCreationTime = a})
+      . mapping _DateTime
+
+-- | If true, WRITERs of the asset are able to edit the asset permissions.
+tabWritersCanEditPermissions :: Lens' Table (Maybe Bool)
+tabWritersCanEditPermissions
+  = lens _tabWritersCanEditPermissions
+      (\ s a -> s{_tabWritersCanEditPermissions = a})
+
+-- | The ETag, used to refer to the current version of the asset.
+tabEtag :: Lens' Table (Maybe Text)
+tabEtag = lens _tabEtag (\ s a -> s{_tabEtag = a})
+
+-- | The email address of the creator of this table. This is only returned on
+-- GET requests and not LIST requests.
+tabCreatorEmail :: Lens' Table (Maybe Text)
+tabCreatorEmail
+  = lens _tabCreatorEmail
+      (\ s a -> s{_tabCreatorEmail = a})
+
+-- | The last modified time of this table. The value is an RFC 3339 formatted
+-- date-time value (e.g. 1970-01-01T00:00:00Z).
+tabLastModifiedTime :: Lens' Table (Maybe UTCTime)
+tabLastModifiedTime
+  = lens _tabLastModifiedTime
+      (\ s a -> s{_tabLastModifiedTime = a})
+      . mapping _DateTime
+
+-- | The schema for this table. Note: The schema is returned in response to a
+-- get request but not a list request. After requesting a list of tables,
+-- you\'ll need to send a get request to retrieve the schema for each
+-- table.
+tabSchema :: Lens' Table (Maybe Schema)
+tabSchema
+  = lens _tabSchema (\ s a -> s{_tabSchema = a})
+
+-- | The email address of the last modifier of this table. This is only
+-- returned on GET requests and not LIST requests.
+tabLastModifierEmail :: Lens' Table (Maybe Text)
+tabLastModifierEmail
+  = lens _tabLastModifierEmail
+      (\ s a -> s{_tabLastModifierEmail = a})
+
+-- | The name of this table, supplied by the author.
+tabName :: Lens' Table (Maybe Text)
+tabName = lens _tabName (\ s a -> s{_tabName = a})
+
+-- | A rectangular bounding box which contains all of the data in this Table.
+-- The box is expressed as \\\"west, south, east, north\\\". The numbers
+-- represent latitude and longitude in decimal degrees.
+tabBbox :: Lens' Table [Double]
+tabBbox
+  = lens _tabBbox (\ s a -> s{_tabBbox = a}) . _Default
+      . _Coerce
+
+-- | The processing status of this table.
+tabProcessingStatus :: Lens' Table (Maybe TableProcessingStatus)
+tabProcessingStatus
+  = lens _tabProcessingStatus
+      (\ s a -> s{_tabProcessingStatus = a})
+
+-- | The files associated with this table.
+tabFiles :: Lens' Table [File]
+tabFiles
+  = lens _tabFiles (\ s a -> s{_tabFiles = a}) .
+      _Default
+      . _Coerce
+
+-- | A globally unique ID, used to refer to this table.
+tabId :: Lens' Table (Maybe Text)
+tabId = lens _tabId (\ s a -> s{_tabId = a})
+
+-- | The ID of the project to which the table belongs.
+tabProjectId :: Lens' Table (Maybe Text)
+tabProjectId
+  = lens _tabProjectId (\ s a -> s{_tabProjectId = a})
+
+-- | Deprecated: The name of an access list of the Map Editor type. The user
+-- on whose behalf the request is being sent must be an editor on that
+-- access list. Note: Google Maps Engine no longer uses access lists.
+-- Instead, each asset has its own list of permissions. For backward
+-- compatibility, the API still accepts access lists for projects that are
+-- already using access lists. If you created a GME account\/project after
+-- July 14th, 2014, you will not be able to send API requests that include
+-- access lists. Note: This is an input field only. It is not returned in
+-- response to a list or get request.
+tabDraftAccessList :: Lens' Table (Maybe Text)
+tabDraftAccessList
+  = lens _tabDraftAccessList
+      (\ s a -> s{_tabDraftAccessList = a})
+
+-- | Deprecated: The access list to whom view permissions are granted. The
+-- value must be the name of a Maps Engine access list of the Map Viewer
+-- type, and the user must be a viewer on that list. Note: Google Maps
+-- Engine no longer uses access lists. Instead, each asset has its own list
+-- of permissions. For backward compatibility, the API still accepts access
+-- lists for projects that are already using access lists. If you created a
+-- GME account\/project after July 14th, 2014, you will not be able to send
+-- API requests that include access lists. Note: This is an input field
+-- only. It is not returned in response to a list or get request.
+tabPublishedAccessList :: Lens' Table (Maybe Text)
+tabPublishedAccessList
+  = lens _tabPublishedAccessList
+      (\ s a -> s{_tabPublishedAccessList = a})
+
+-- | Encoding of the uploaded files. Valid values include UTF-8, CP1251, ISO
+-- 8859-1, and Shift_JIS.
+tabSourceEncoding :: Lens' Table Text
+tabSourceEncoding
+  = lens _tabSourceEncoding
+      (\ s a -> s{_tabSourceEncoding = a})
+
+-- | The description of this table, supplied by the author.
+tabDescription :: Lens' Table (Maybe Text)
+tabDescription
+  = lens _tabDescription
+      (\ s a -> s{_tabDescription = a})
+
+-- | An array of text strings, with each string representing a tag. More
+-- information about tags can be found in the Tagging data article of the
+-- Maps Engine help center.
+tabTags :: Lens' Table [Text]
+tabTags
+  = lens _tabTags (\ s a -> s{_tabTags = a}) . _Default
+      . _Coerce
+
+instance FromJSON Table where
+        parseJSON
+          = withObject "Table"
+              (\ o ->
+                 Table <$>
+                   (o .:? "creationTime") <*>
+                     (o .:? "writersCanEditPermissions")
+                     <*> (o .:? "etag")
+                     <*> (o .:? "creatorEmail")
+                     <*> (o .:? "lastModifiedTime")
+                     <*> (o .:? "schema")
+                     <*> (o .:? "lastModifierEmail")
+                     <*> (o .:? "name")
+                     <*> (o .:? "bbox" .!= mempty)
+                     <*> (o .:? "processingStatus")
+                     <*> (o .:? "files" .!= mempty)
+                     <*> (o .:? "id")
+                     <*> (o .:? "projectId")
+                     <*> (o .:? "draftAccessList")
+                     <*> (o .:? "publishedAccessList")
+                     <*> (o .:? "sourceEncoding" .!= "UTF-8")
+                     <*> (o .:? "description")
+                     <*> (o .:? "tags"))
+
+instance ToJSON Table where
+        toJSON Table{..}
+          = object
+              (catMaybes
+                 [("creationTime" .=) <$> _tabCreationTime,
+                  ("writersCanEditPermissions" .=) <$>
+                    _tabWritersCanEditPermissions,
+                  ("etag" .=) <$> _tabEtag,
+                  ("creatorEmail" .=) <$> _tabCreatorEmail,
+                  ("lastModifiedTime" .=) <$> _tabLastModifiedTime,
+                  ("schema" .=) <$> _tabSchema,
+                  ("lastModifierEmail" .=) <$> _tabLastModifierEmail,
+                  ("name" .=) <$> _tabName, ("bbox" .=) <$> _tabBbox,
+                  ("processingStatus" .=) <$> _tabProcessingStatus,
+                  ("files" .=) <$> _tabFiles, ("id" .=) <$> _tabId,
+                  ("projectId" .=) <$> _tabProjectId,
+                  ("draftAccessList" .=) <$> _tabDraftAccessList,
+                  ("publishedAccessList" .=) <$>
+                    _tabPublishedAccessList,
+                  Just ("sourceEncoding" .= _tabSourceEncoding),
+                  ("description" .=) <$> _tabDescription,
+                  ("tags" .=) <$> _tabTags])
+
+-- | A single File, which is a component of an Asset.
+--
+-- /See:/ 'file' smart constructor.
+data File = File
+    { _fSize         :: !(Maybe (Textual Int64))
+    , _fUploadStatus :: !(Maybe FileUploadStatus)
+    , _fFilename     :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'File' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'fSize'
+--
+-- * 'fUploadStatus'
+--
+-- * 'fFilename'
+file
+    :: File
+file =
+    File
+    { _fSize = Nothing
+    , _fUploadStatus = Nothing
+    , _fFilename = Nothing
+    }
+
+-- | The size of the file in bytes.
+fSize :: Lens' File (Maybe Int64)
+fSize
+  = lens _fSize (\ s a -> s{_fSize = a}) .
+      mapping _Coerce
+
+-- | The upload status of the file.
+fUploadStatus :: Lens' File (Maybe FileUploadStatus)
+fUploadStatus
+  = lens _fUploadStatus
+      (\ s a -> s{_fUploadStatus = a})
+
+-- | The name of the file.
+fFilename :: Lens' File (Maybe Text)
+fFilename
+  = lens _fFilename (\ s a -> s{_fFilename = a})
+
+instance FromJSON File where
+        parseJSON
+          = withObject "File"
+              (\ o ->
+                 File <$>
+                   (o .:? "size") <*> (o .:? "uploadStatus") <*>
+                     (o .:? "filename"))
+
+instance ToJSON File where
+        toJSON File{..}
+          = object
+              (catMaybes
+                 [("size" .=) <$> _fSize,
+                  ("uploadStatus" .=) <$> _fUploadStatus,
+                  ("filename" .=) <$> _fFilename])
+
+-- | A vector style contains styling information for vector layer.
+--
+-- /See:/ 'vectorStyle' smart constructor.
+data VectorStyle = VectorStyle
+    { _vsDisplayRules :: !(Maybe [DisplayRule])
+    , _vsFeatureInfo  :: !(Maybe FeatureInfo)
+    , _vsType         :: !(Maybe VectorStyleType)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'VectorStyle' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'vsDisplayRules'
+--
+-- * 'vsFeatureInfo'
+--
+-- * 'vsType'
+vectorStyle
+    :: VectorStyle
+vectorStyle =
+    VectorStyle
+    { _vsDisplayRules = Nothing
+    , _vsFeatureInfo = Nothing
+    , _vsType = Nothing
+    }
+
+vsDisplayRules :: Lens' VectorStyle [DisplayRule]
+vsDisplayRules
+  = lens _vsDisplayRules
+      (\ s a -> s{_vsDisplayRules = a})
+      . _Default
+      . _Coerce
+
+-- | Individual feature info, this is called Info Window in Maps Engine UI.
+-- If not provided, a default template with all attributes will be
+-- generated.
+vsFeatureInfo :: Lens' VectorStyle (Maybe FeatureInfo)
+vsFeatureInfo
+  = lens _vsFeatureInfo
+      (\ s a -> s{_vsFeatureInfo = a})
+
+-- | The type of the vector style. Currently, only displayRule is supported.
+vsType :: Lens' VectorStyle (Maybe VectorStyleType)
+vsType = lens _vsType (\ s a -> s{_vsType = a})
+
+instance FromJSON VectorStyle where
+        parseJSON
+          = withObject "VectorStyle"
+              (\ o ->
+                 VectorStyle <$>
+                   (o .:? "displayRules" .!= mempty) <*>
+                     (o .:? "featureInfo")
+                     <*> (o .:? "type"))
+
+instance ToJSON VectorStyle where
+        toJSON VectorStyle{..}
+          = object
+              (catMaybes
+                 [("displayRules" .=) <$> _vsDisplayRules,
+                  ("featureInfo" .=) <$> _vsFeatureInfo,
+                  ("type" .=) <$> _vsType])
+
+-- | The response returned by a call to mapsengine.permissions.batchDelete.
+--
+-- /See:/ 'permissionsBatchDeleteResponse' smart constructor.
+data PermissionsBatchDeleteResponse =
+    PermissionsBatchDeleteResponse
+    deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'PermissionsBatchDeleteResponse' with the minimum fields required to make a request.
+--
+permissionsBatchDeleteResponse
+    :: PermissionsBatchDeleteResponse
+permissionsBatchDeleteResponse = PermissionsBatchDeleteResponse
+
+instance FromJSON PermissionsBatchDeleteResponse
+         where
+        parseJSON
+          = withObject "PermissionsBatchDeleteResponse"
+              (\ o -> pure PermissionsBatchDeleteResponse)
+
+instance ToJSON PermissionsBatchDeleteResponse where
+        toJSON = const emptyObject
+
+--
+-- /See:/ 'mapKmlLink' smart constructor.
+data MapKmlLink = MapKmlLink
+    { _mklDefaultViewport :: !(Maybe [Textual Double])
+    , _mklVisibility      :: !(Maybe Text)
+    , _mklName            :: !(Maybe Text)
+    , _mklType            :: !(Maybe MapKmlLinkType)
+    , _mklKmlURL          :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'MapKmlLink' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'mklDefaultViewport'
+--
+-- * 'mklVisibility'
+--
+-- * 'mklName'
+--
+-- * 'mklType'
+--
+-- * 'mklKmlURL'
+mapKmlLink
+    :: MapKmlLink
+mapKmlLink =
+    MapKmlLink
+    { _mklDefaultViewport = Nothing
+    , _mklVisibility = Nothing
+    , _mklName = Nothing
+    , _mklType = Nothing
+    , _mklKmlURL = Nothing
+    }
+
+-- | An array of four numbers (west, south, east, north) which defines the
+-- rectangular bounding box of the default viewport. The numbers represent
+-- latitude and longitude in decimal degrees.
+mklDefaultViewport :: Lens' MapKmlLink [Double]
+mklDefaultViewport
+  = lens _mklDefaultViewport
+      (\ s a -> s{_mklDefaultViewport = a})
+      . _Default
+      . _Coerce
+
+-- | The visibility setting of this MapKmlLink. One of \"defaultOn\" or
+-- \"defaultOff\".
+mklVisibility :: Lens' MapKmlLink (Maybe Text)
+mklVisibility
+  = lens _mklVisibility
+      (\ s a -> s{_mklVisibility = a})
+
+-- | The name of this MapKmlLink.
+mklName :: Lens' MapKmlLink (Maybe Text)
+mklName = lens _mklName (\ s a -> s{_mklName = a})
+
+-- | Identifies this object as a MapKmlLink.
+mklType :: Lens' MapKmlLink (Maybe MapKmlLinkType)
+mklType = lens _mklType (\ s a -> s{_mklType = a})
+
+-- | The URL to the KML file represented by this MapKmlLink.
+mklKmlURL :: Lens' MapKmlLink (Maybe Text)
+mklKmlURL
+  = lens _mklKmlURL (\ s a -> s{_mklKmlURL = a})
+
+instance FromJSON MapKmlLink where
+        parseJSON
+          = withObject "MapKmlLink"
+              (\ o ->
+                 MapKmlLink <$>
+                   (o .:? "defaultViewport" .!= mempty) <*>
+                     (o .:? "visibility")
+                     <*> (o .:? "name")
+                     <*> (o .:? "type")
+                     <*> (o .:? "kmlUrl"))
+
+instance ToJSON MapKmlLink where
+        toJSON MapKmlLink{..}
+          = object
+              (catMaybes
+                 [("defaultViewport" .=) <$> _mklDefaultViewport,
+                  ("visibility" .=) <$> _mklVisibility,
+                  ("name" .=) <$> _mklName, ("type" .=) <$> _mklType,
+                  ("kmlUrl" .=) <$> _mklKmlURL])
+
+-- | The response returned by a call to mapsengine.permissions.batchUpdate.
+--
+-- /See:/ 'permissionsBatchUpdateResponse' smart constructor.
+data PermissionsBatchUpdateResponse =
+    PermissionsBatchUpdateResponse
+    deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'PermissionsBatchUpdateResponse' with the minimum fields required to make a request.
+--
+permissionsBatchUpdateResponse
+    :: PermissionsBatchUpdateResponse
+permissionsBatchUpdateResponse = PermissionsBatchUpdateResponse
+
+instance FromJSON PermissionsBatchUpdateResponse
+         where
+        parseJSON
+          = withObject "PermissionsBatchUpdateResponse"
+              (\ o -> pure PermissionsBatchUpdateResponse)
+
+instance ToJSON PermissionsBatchUpdateResponse where
+        toJSON = const emptyObject
+
+--
+-- /See:/ 'geoJSONLineString' smart constructor.
+data GeoJSONLineString = GeoJSONLineString
+    { _gjlsCoordinates :: !(Maybe [[Textual Double]])
+    , _gjlsType        :: !(Maybe GeoJSONLineStringType)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'GeoJSONLineString' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'gjlsCoordinates'
+--
+-- * 'gjlsType'
+geoJSONLineString
+    :: GeoJSONLineString
+geoJSONLineString =
+    GeoJSONLineString
+    { _gjlsCoordinates = Nothing
+    , _gjlsType = Nothing
+    }
+
+-- | An array of two or more positions, representing a line.
+gjlsCoordinates :: Lens' GeoJSONLineString [[Double]]
+gjlsCoordinates
+  = lens _gjlsCoordinates
+      (\ s a -> s{_gjlsCoordinates = a})
+      . _Default
+      . _Coerce
+
+-- | Identifies this object as a GeoJsonLineString.
+gjlsType :: Lens' GeoJSONLineString (Maybe GeoJSONLineStringType)
+gjlsType = lens _gjlsType (\ s a -> s{_gjlsType = a})
+
+instance FromJSON GeoJSONLineString where
+        parseJSON
+          = withObject "GeoJSONLineString"
+              (\ o ->
+                 GeoJSONLineString <$>
+                   (o .:? "coordinates" .!= mempty) <*> (o .:? "type"))
+
+instance ToJSON GeoJSONLineString where
+        toJSON GeoJSONLineString{..}
+          = object
+              (catMaybes
+                 [("coordinates" .=) <$> _gjlsCoordinates,
+                  ("type" .=) <$> _gjlsType])
+
+-- | The response returned by a call to maps.List.published.
+--
+-- /See:/ 'publishedMapsListResponse' smart constructor.
+data PublishedMapsListResponse = PublishedMapsListResponse
+    { _pmlrMaps          :: !(Maybe [PublishedMap])
+    , _pmlrNextPageToken :: !(Maybe (Textual Word8))
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'PublishedMapsListResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'pmlrMaps'
+--
+-- * 'pmlrNextPageToken'
+publishedMapsListResponse
+    :: PublishedMapsListResponse
+publishedMapsListResponse =
+    PublishedMapsListResponse
+    { _pmlrMaps = Nothing
+    , _pmlrNextPageToken = Nothing
+    }
+
+-- | Resources returned.
+pmlrMaps :: Lens' PublishedMapsListResponse [PublishedMap]
+pmlrMaps
+  = lens _pmlrMaps (\ s a -> s{_pmlrMaps = a}) .
+      _Default
+      . _Coerce
+
+-- | Next page token.
+pmlrNextPageToken :: Lens' PublishedMapsListResponse (Maybe Word8)
+pmlrNextPageToken
+  = lens _pmlrNextPageToken
+      (\ s a -> s{_pmlrNextPageToken = a})
+      . mapping _Coerce
+
+instance FromJSON PublishedMapsListResponse where
+        parseJSON
+          = withObject "PublishedMapsListResponse"
+              (\ o ->
+                 PublishedMapsListResponse <$>
+                   (o .:? "maps" .!= mempty) <*>
+                     (o .:? "nextPageToken"))
+
+instance ToJSON PublishedMapsListResponse where
+        toJSON PublishedMapsListResponse{..}
+          = object
+              (catMaybes
+                 [("maps" .=) <$> _pmlrMaps,
+                  ("nextPageToken" .=) <$> _pmlrNextPageToken])
+
+-- | The response returned by a call to maps.List.
+--
+-- /See:/ 'mapsListResponse' smart constructor.
+data MapsListResponse = MapsListResponse
+    { _mlrMaps          :: !(Maybe [Map])
+    , _mlrNextPageToken :: !(Maybe (Textual Word8))
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'MapsListResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'mlrMaps'
+--
+-- * 'mlrNextPageToken'
+mapsListResponse
+    :: MapsListResponse
+mapsListResponse =
+    MapsListResponse
+    { _mlrMaps = Nothing
+    , _mlrNextPageToken = Nothing
+    }
+
+-- | Resources returned.
+mlrMaps :: Lens' MapsListResponse [Map]
+mlrMaps
+  = lens _mlrMaps (\ s a -> s{_mlrMaps = a}) . _Default
+      . _Coerce
+
+-- | Next page token.
+mlrNextPageToken :: Lens' MapsListResponse (Maybe Word8)
+mlrNextPageToken
+  = lens _mlrNextPageToken
+      (\ s a -> s{_mlrNextPageToken = a})
+      . mapping _Coerce
+
+instance FromJSON MapsListResponse where
+        parseJSON
+          = withObject "MapsListResponse"
+              (\ o ->
+                 MapsListResponse <$>
+                   (o .:? "maps" .!= mempty) <*>
+                     (o .:? "nextPageToken"))
+
+instance ToJSON MapsListResponse where
+        toJSON MapsListResponse{..}
+          = object
+              (catMaybes
+                 [("maps" .=) <$> _mlrMaps,
+                  ("nextPageToken" .=) <$> _mlrNextPageToken])
+
+-- | A heterogenous collection of GeoJsonGeometry objects.
+--
+-- /See:/ 'geoJSONGeometryCollection' smart constructor.
+data GeoJSONGeometryCollection = GeoJSONGeometryCollection
+    { _gjgcGeometries :: !(Maybe [GeoJSONGeometry])
+    , _gjgcType       :: !(Maybe GeoJSONGeometryCollectionType)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'GeoJSONGeometryCollection' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'gjgcGeometries'
+--
+-- * 'gjgcType'
+geoJSONGeometryCollection
+    :: GeoJSONGeometryCollection
+geoJSONGeometryCollection =
+    GeoJSONGeometryCollection
+    { _gjgcGeometries = Nothing
+    , _gjgcType = Nothing
+    }
+
+-- | An array of geometry objects. There must be at least 2 different types
+-- of geometries in the array.
+gjgcGeometries :: Lens' GeoJSONGeometryCollection [GeoJSONGeometry]
+gjgcGeometries
+  = lens _gjgcGeometries
+      (\ s a -> s{_gjgcGeometries = a})
+      . _Default
+      . _Coerce
+
+-- | Identifies this object as a GeoJsonGeometryCollection.
+gjgcType :: Lens' GeoJSONGeometryCollection (Maybe GeoJSONGeometryCollectionType)
+gjgcType = lens _gjgcType (\ s a -> s{_gjgcType = a})
+
+instance FromJSON GeoJSONGeometryCollection where
+        parseJSON
+          = withObject "GeoJSONGeometryCollection"
+              (\ o ->
+                 GeoJSONGeometryCollection <$>
+                   (o .:? "geometries" .!= mempty) <*> (o .:? "type"))
+
+instance ToJSON GeoJSONGeometryCollection where
+        toJSON GeoJSONGeometryCollection{..}
+          = object
+              (catMaybes
+                 [("geometries" .=) <$> _gjgcGeometries,
+                  ("type" .=) <$> _gjgcType])
+
+--
+-- /See:/ 'geoJSONPolygon' smart constructor.
+data GeoJSONPolygon = GeoJSONPolygon
+    { _gjpCoordinates :: !(Maybe [[[Textual Double]]])
+    , _gjpType        :: !(Maybe GeoJSONPolygonType)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'GeoJSONPolygon' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'gjpCoordinates'
+--
+-- * 'gjpType'
+geoJSONPolygon
+    :: GeoJSONPolygon
+geoJSONPolygon =
+    GeoJSONPolygon
+    { _gjpCoordinates = Nothing
+    , _gjpType = Nothing
+    }
+
+-- | An array of LinearRings. A LinearRing is a GeoJsonLineString which is
+-- closed (that is, the first and last GeoJsonPositions are equal), and
+-- which contains at least four GeoJsonPositions. For polygons with
+-- multiple rings, the first LinearRing is the exterior ring, and any
+-- subsequent rings are interior rings (that is, holes).
+gjpCoordinates :: Lens' GeoJSONPolygon [[[Double]]]
+gjpCoordinates
+  = lens _gjpCoordinates
+      (\ s a -> s{_gjpCoordinates = a})
+      . _Default
+      . _Coerce
+
+-- | Identifies this object as a GeoJsonPolygon.
+gjpType :: Lens' GeoJSONPolygon (Maybe GeoJSONPolygonType)
+gjpType = lens _gjpType (\ s a -> s{_gjpType = a})
+
+instance FromJSON GeoJSONPolygon where
+        parseJSON
+          = withObject "GeoJSONPolygon"
+              (\ o ->
+                 GeoJSONPolygon <$>
+                   (o .:? "coordinates" .!= mempty) <*> (o .:? "type"))
+
+instance ToJSON GeoJSONPolygon where
+        toJSON GeoJSONPolygon{..}
+          = object
+              (catMaybes
+                 [("coordinates" .=) <$> _gjpCoordinates,
+                  ("type" .=) <$> _gjpType])
+
+--
+-- /See:/ 'geoJSONPoint' smart constructor.
+data GeoJSONPoint = GeoJSONPoint
+    { _gjsonpCoordinates :: !(Maybe [Textual Double])
+    , _gjsonpType        :: !(Maybe GeoJSONPointType)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'GeoJSONPoint' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'gjsonpCoordinates'
+--
+-- * 'gjsonpType'
+geoJSONPoint
+    :: GeoJSONPoint
+geoJSONPoint =
+    GeoJSONPoint
+    { _gjsonpCoordinates = Nothing
+    , _gjsonpType = Nothing
+    }
+
+-- | A single GeoJsonPosition, specifying the location of the point.
+gjsonpCoordinates :: Lens' GeoJSONPoint [Double]
+gjsonpCoordinates
+  = lens _gjsonpCoordinates
+      (\ s a -> s{_gjsonpCoordinates = a})
+      . _Default
+      . _Coerce
+
+-- | Identifies this object as a GeoJsonPoint.
+gjsonpType :: Lens' GeoJSONPoint (Maybe GeoJSONPointType)
+gjsonpType
+  = lens _gjsonpType (\ s a -> s{_gjsonpType = a})
+
+instance FromJSON GeoJSONPoint where
+        parseJSON
+          = withObject "GeoJSONPoint"
+              (\ o ->
+                 GeoJSONPoint <$>
+                   (o .:? "coordinates") <*> (o .:? "type"))
+
+instance ToJSON GeoJSONPoint where
+        toJSON GeoJSONPoint{..}
+          = object
+              (catMaybes
+                 [("coordinates" .=) <$> _gjsonpCoordinates,
+                  ("type" .=) <$> _gjsonpType])
+
+-- | The response returned by a call to layers.List. Note: The list response
+-- does not include all the fields available in a layer. Refer to the layer
+-- resource description for details of the fields that are not included.
+-- You\'ll need to send a get request to retrieve the additional fields for
+-- each layer.
+--
+-- /See:/ 'layersListResponse' smart constructor.
+data LayersListResponse = LayersListResponse
+    { _llrNextPageToken :: !(Maybe (Textual Word8))
+    , _llrLayers        :: !(Maybe [Layer])
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'LayersListResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'llrNextPageToken'
+--
+-- * 'llrLayers'
+layersListResponse
+    :: LayersListResponse
+layersListResponse =
+    LayersListResponse
+    { _llrNextPageToken = Nothing
+    , _llrLayers = Nothing
+    }
+
+-- | Next page token.
+llrNextPageToken :: Lens' LayersListResponse (Maybe Word8)
+llrNextPageToken
+  = lens _llrNextPageToken
+      (\ s a -> s{_llrNextPageToken = a})
+      . mapping _Coerce
+
+-- | Resources returned.
+llrLayers :: Lens' LayersListResponse [Layer]
+llrLayers
+  = lens _llrLayers (\ s a -> s{_llrLayers = a}) .
+      _Default
+      . _Coerce
+
+instance FromJSON LayersListResponse where
+        parseJSON
+          = withObject "LayersListResponse"
+              (\ o ->
+                 LayersListResponse <$>
+                   (o .:? "nextPageToken") <*>
+                     (o .:? "layers" .!= mempty))
+
+instance ToJSON LayersListResponse where
+        toJSON LayersListResponse{..}
+          = object
+              (catMaybes
+                 [("nextPageToken" .=) <$> _llrNextPageToken,
+                  ("layers" .=) <$> _llrLayers])
+
+-- | The response returned by a call to rasters.List.
+--
+-- /See:/ 'rastersListResponse' smart constructor.
+data RastersListResponse = RastersListResponse
+    { _rlrNextPageToken :: !(Maybe Text)
+    , _rlrRasters       :: !(Maybe [Raster])
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'RastersListResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'rlrNextPageToken'
+--
+-- * 'rlrRasters'
+rastersListResponse
+    :: RastersListResponse
+rastersListResponse =
+    RastersListResponse
+    { _rlrNextPageToken = Nothing
+    , _rlrRasters = Nothing
+    }
+
+-- | Next page token.
+rlrNextPageToken :: Lens' RastersListResponse (Maybe Text)
+rlrNextPageToken
+  = lens _rlrNextPageToken
+      (\ s a -> s{_rlrNextPageToken = a})
+
+-- | Resources returned.
+rlrRasters :: Lens' RastersListResponse [Raster]
+rlrRasters
+  = lens _rlrRasters (\ s a -> s{_rlrRasters = a}) .
+      _Default
+      . _Coerce
+
+instance FromJSON RastersListResponse where
+        parseJSON
+          = withObject "RastersListResponse"
+              (\ o ->
+                 RastersListResponse <$>
+                   (o .:? "nextPageToken") <*>
+                     (o .:? "rasters" .!= mempty))
+
+instance ToJSON RastersListResponse where
+        toJSON RastersListResponse{..}
+          = object
+              (catMaybes
+                 [("nextPageToken" .=) <$> _rlrNextPageToken,
+                  ("rasters" .=) <$> _rlrRasters])
+
+--
+-- /See:/ 'permissionsListResponse' smart constructor.
+newtype PermissionsListResponse = PermissionsListResponse
+    { _plrPermissions :: Maybe [Permission]
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'PermissionsListResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'plrPermissions'
+permissionsListResponse
+    :: PermissionsListResponse
+permissionsListResponse =
+    PermissionsListResponse
+    { _plrPermissions = Nothing
+    }
+
+-- | The set of permissions associated with this asset.
+plrPermissions :: Lens' PermissionsListResponse [Permission]
+plrPermissions
+  = lens _plrPermissions
+      (\ s a -> s{_plrPermissions = a})
+      . _Default
+      . _Coerce
+
+instance FromJSON PermissionsListResponse where
+        parseJSON
+          = withObject "PermissionsListResponse"
+              (\ o ->
+                 PermissionsListResponse <$>
+                   (o .:? "permissions" .!= mempty))
+
+instance ToJSON PermissionsListResponse where
+        toJSON PermissionsListResponse{..}
+          = object
+              (catMaybes [("permissions" .=) <$> _plrPermissions])
+
+-- | Style for lines.
+--
+-- /See:/ 'lineStyle' smart constructor.
+data LineStyle = LineStyle
+    { _lsStroke :: !(Maybe LineStyleStroke)
+    , _lsBOrder :: !(Maybe BOrder)
+    , _lsDash   :: !(Maybe [Textual Double])
+    , _lsLabel  :: !(Maybe LabelStyle)
+    } 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:
+--
+-- * 'lsStroke'
+--
+-- * 'lsBOrder'
+--
+-- * 'lsDash'
+--
+-- * 'lsLabel'
+lineStyle
+    :: LineStyle
+lineStyle =
+    LineStyle
+    { _lsStroke = Nothing
+    , _lsBOrder = Nothing
+    , _lsDash = Nothing
+    , _lsLabel = Nothing
+    }
+
+-- | Stroke of the line.
+lsStroke :: Lens' LineStyle (Maybe LineStyleStroke)
+lsStroke = lens _lsStroke (\ s a -> s{_lsStroke = a})
+
+-- | Border of the line. 0 \< border.width \<= 5.
+lsBOrder :: Lens' LineStyle (Maybe BOrder)
+lsBOrder = lens _lsBOrder (\ s a -> s{_lsBOrder = a})
+
+-- | Dash defines the pattern of the line, the values are pixel lengths of
+-- alternating dash and gap. If dash is not provided, then it means a solid
+-- line. Dash can contain up to 10 values and must contain even number of
+-- values.
+lsDash :: Lens' LineStyle [Double]
+lsDash
+  = lens _lsDash (\ s a -> s{_lsDash = a}) . _Default .
+      _Coerce
+
+-- | Label style for the line.
+lsLabel :: Lens' LineStyle (Maybe LabelStyle)
+lsLabel = lens _lsLabel (\ s a -> s{_lsLabel = a})
+
+instance FromJSON LineStyle where
+        parseJSON
+          = withObject "LineStyle"
+              (\ o ->
+                 LineStyle <$>
+                   (o .:? "stroke") <*> (o .:? "border") <*>
+                     (o .:? "dash" .!= mempty)
+                     <*> (o .:? "label"))
+
+instance ToJSON LineStyle where
+        toJSON LineStyle{..}
+          = object
+              (catMaybes
+                 [("stroke" .=) <$> _lsStroke,
+                  ("border" .=) <$> _lsBOrder, ("dash" .=) <$> _lsDash,
+                  ("label" .=) <$> _lsLabel])
+
+-- | The response returned by a call to layers.List.published.
+--
+-- /See:/ 'publishedLayersListResponse' smart constructor.
+data PublishedLayersListResponse = PublishedLayersListResponse
+    { _pllrNextPageToken :: !(Maybe (Textual Word8))
+    , _pllrLayers        :: !(Maybe [PublishedLayer])
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'PublishedLayersListResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'pllrNextPageToken'
+--
+-- * 'pllrLayers'
+publishedLayersListResponse
+    :: PublishedLayersListResponse
+publishedLayersListResponse =
+    PublishedLayersListResponse
+    { _pllrNextPageToken = Nothing
+    , _pllrLayers = Nothing
+    }
+
+-- | Next page token.
+pllrNextPageToken :: Lens' PublishedLayersListResponse (Maybe Word8)
+pllrNextPageToken
+  = lens _pllrNextPageToken
+      (\ s a -> s{_pllrNextPageToken = a})
+      . mapping _Coerce
+
+-- | Resources returned.
+pllrLayers :: Lens' PublishedLayersListResponse [PublishedLayer]
+pllrLayers
+  = lens _pllrLayers (\ s a -> s{_pllrLayers = a}) .
+      _Default
+      . _Coerce
+
+instance FromJSON PublishedLayersListResponse where
+        parseJSON
+          = withObject "PublishedLayersListResponse"
+              (\ o ->
+                 PublishedLayersListResponse <$>
+                   (o .:? "nextPageToken") <*>
+                     (o .:? "layers" .!= mempty))
+
+instance ToJSON PublishedLayersListResponse where
+        toJSON PublishedLayersListResponse{..}
+          = object
+              (catMaybes
+                 [("nextPageToken" .=) <$> _pllrNextPageToken,
+                  ("layers" .=) <$> _pllrLayers])
diff --git a/gen/Network/Google/MapsEngine/Types/Sum.hs b/gen/Network/Google/MapsEngine/Types/Sum.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/MapsEngine/Types/Sum.hs
@@ -0,0 +1,1655 @@
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE LambdaCase         #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- |
+-- Module      : Network.Google.MapsEngine.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.MapsEngine.Types.Sum where
+
+import           Network.Google.Prelude
+
+-- | The processing status of this Raster.
+data RasterProcessingStatus
+    = Complete
+      -- ^ @complete@
+    | Failed
+      -- ^ @failed@
+    | NotReady
+      -- ^ @notReady@
+    | Processing
+      -- ^ @processing@
+    | Ready
+      -- ^ @ready@
+      deriving (Eq,Ord,Enum,Read,Show,Data,Typeable,Generic)
+
+instance Hashable RasterProcessingStatus
+
+instance FromText RasterProcessingStatus where
+    fromText = \case
+        "complete" -> Just Complete
+        "failed" -> Just Failed
+        "notReady" -> Just NotReady
+        "processing" -> Just Processing
+        "ready" -> Just Ready
+        _ -> Nothing
+
+instance ToText RasterProcessingStatus where
+    toText = \case
+        Complete -> "complete"
+        Failed -> "failed"
+        NotReady -> "notReady"
+        Processing -> "processing"
+        Ready -> "ready"
+
+instance FromJSON RasterProcessingStatus where
+    parseJSON = parseJSONText "RasterProcessingStatus"
+
+instance ToJSON RasterProcessingStatus where
+    toJSON = toJSONText
+
+-- | The processing status of this layer.
+data LayerProcessingStatus
+    = LPSComplete
+      -- ^ @complete@
+    | LPSFailed
+      -- ^ @failed@
+    | LPSNotReady
+      -- ^ @notReady@
+    | LPSProcessing
+      -- ^ @processing@
+    | LPSReady
+      -- ^ @ready@
+      deriving (Eq,Ord,Enum,Read,Show,Data,Typeable,Generic)
+
+instance Hashable LayerProcessingStatus
+
+instance FromText LayerProcessingStatus where
+    fromText = \case
+        "complete" -> Just LPSComplete
+        "failed" -> Just LPSFailed
+        "notReady" -> Just LPSNotReady
+        "processing" -> Just LPSProcessing
+        "ready" -> Just LPSReady
+        _ -> Nothing
+
+instance ToText LayerProcessingStatus where
+    toText = \case
+        LPSComplete -> "complete"
+        LPSFailed -> "failed"
+        LPSNotReady -> "notReady"
+        LPSProcessing -> "processing"
+        LPSReady -> "ready"
+
+instance FromJSON LayerProcessingStatus where
+    parseJSON = parseJSONText "LayerProcessingStatus"
+
+instance ToJSON LayerProcessingStatus where
+    toJSON = toJSONText
+
+-- | Name of the shape.
+data ScaledShapeShape
+    = Circle
+      -- ^ @circle@
+      deriving (Eq,Ord,Enum,Read,Show,Data,Typeable,Generic)
+
+instance Hashable ScaledShapeShape
+
+instance FromText ScaledShapeShape where
+    fromText = \case
+        "circle" -> Just Circle
+        _ -> Nothing
+
+instance ToText ScaledShapeShape where
+    toText = \case
+        Circle -> "circle"
+
+instance FromJSON ScaledShapeShape where
+    parseJSON = parseJSONText "ScaledShapeShape"
+
+instance ToJSON ScaledShapeShape where
+    toJSON = toJSONText
+
+-- | Identifies this object as a GeoJsonMultiLineString.
+data GeoJSONMultiLineStringType
+    = MultiLineString
+      -- ^ @MultiLineString@
+      deriving (Eq,Ord,Enum,Read,Show,Data,Typeable,Generic)
+
+instance Hashable GeoJSONMultiLineStringType
+
+instance FromText GeoJSONMultiLineStringType where
+    fromText = \case
+        "MultiLineString" -> Just MultiLineString
+        _ -> Nothing
+
+instance ToText GeoJSONMultiLineStringType where
+    toText = \case
+        MultiLineString -> "MultiLineString"
+
+instance FromJSON GeoJSONMultiLineStringType where
+    parseJSON = parseJSONText "GeoJSONMultiLineStringType"
+
+instance ToJSON GeoJSONMultiLineStringType where
+    toJSON = toJSONText
+
+-- | The type of access granted to this user or group.
+data PermissionRole
+    = Owner
+      -- ^ @owner@
+    | Reader
+      -- ^ @reader@
+    | Viewer
+      -- ^ @viewer@
+    | Writer
+      -- ^ @writer@
+      deriving (Eq,Ord,Enum,Read,Show,Data,Typeable,Generic)
+
+instance Hashable PermissionRole
+
+instance FromText PermissionRole where
+    fromText = \case
+        "owner" -> Just Owner
+        "reader" -> Just Reader
+        "viewer" -> Just Viewer
+        "writer" -> Just Writer
+        _ -> Nothing
+
+instance ToText PermissionRole where
+    toText = \case
+        Owner -> "owner"
+        Reader -> "reader"
+        Viewer -> "viewer"
+        Writer -> "writer"
+
+instance FromJSON PermissionRole where
+    parseJSON = parseJSONText "PermissionRole"
+
+instance ToJSON PermissionRole where
+    toJSON = toJSONText
+
+-- | The precision of acquisition time.
+data AcquisitionTimePrecision
+    = Day
+      -- ^ @day@
+    | Hour
+      -- ^ @hour@
+    | Minute
+      -- ^ @minute@
+    | Month
+      -- ^ @month@
+    | Second
+      -- ^ @second@
+    | Year
+      -- ^ @year@
+      deriving (Eq,Ord,Enum,Read,Show,Data,Typeable,Generic)
+
+instance Hashable AcquisitionTimePrecision
+
+instance FromText AcquisitionTimePrecision where
+    fromText = \case
+        "day" -> Just Day
+        "hour" -> Just Hour
+        "minute" -> Just Minute
+        "month" -> Just Month
+        "second" -> Just Second
+        "year" -> Just Year
+        _ -> Nothing
+
+instance ToText AcquisitionTimePrecision where
+    toText = \case
+        Day -> "day"
+        Hour -> "hour"
+        Minute -> "minute"
+        Month -> "month"
+        Second -> "second"
+        Year -> "year"
+
+instance FromJSON AcquisitionTimePrecision where
+    parseJSON = parseJSONText "AcquisitionTimePrecision"
+
+instance ToJSON AcquisitionTimePrecision where
+    toJSON = toJSONText
+
+-- | The type of scaling function to use. Defaults to SQRT. Currently only
+-- linear and square root scaling are supported.
+data ScalingFunctionScalingType
+    = Linear
+      -- ^ @linear@
+    | Sqrt
+      -- ^ @sqrt@
+      deriving (Eq,Ord,Enum,Read,Show,Data,Typeable,Generic)
+
+instance Hashable ScalingFunctionScalingType
+
+instance FromText ScalingFunctionScalingType where
+    fromText = \case
+        "linear" -> Just Linear
+        "sqrt" -> Just Sqrt
+        _ -> Nothing
+
+instance ToText ScalingFunctionScalingType where
+    toText = \case
+        Linear -> "linear"
+        Sqrt -> "sqrt"
+
+instance FromJSON ScalingFunctionScalingType where
+    parseJSON = parseJSONText "ScalingFunctionScalingType"
+
+instance ToJSON ScalingFunctionScalingType where
+    toJSON = toJSONText
+
+-- | The role parameter indicates that the response should only contain
+-- assets where the current user has the specified level of access.
+data AssetsListRole
+    = ALROwner
+      -- ^ @owner@
+      -- The user can read, write and administer the asset.
+    | ALRReader
+      -- ^ @reader@
+      -- The user can read the asset.
+    | ALRWriter
+      -- ^ @writer@
+      -- The user can read and write the asset.
+      deriving (Eq,Ord,Enum,Read,Show,Data,Typeable,Generic)
+
+instance Hashable AssetsListRole
+
+instance FromText AssetsListRole where
+    fromText = \case
+        "owner" -> Just ALROwner
+        "reader" -> Just ALRReader
+        "writer" -> Just ALRWriter
+        _ -> Nothing
+
+instance ToText AssetsListRole where
+    toText = \case
+        ALROwner -> "owner"
+        ALRReader -> "reader"
+        ALRWriter -> "writer"
+
+instance FromJSON AssetsListRole where
+    parseJSON = parseJSONText "AssetsListRole"
+
+instance ToJSON AssetsListRole where
+    toJSON = toJSONText
+
+data RastersListProcessingStatus
+    = RLPSComplete
+      -- ^ @complete@
+      -- The raster has completed processing.
+    | RLPSFailed
+      -- ^ @failed@
+      -- The raster has failed processing.
+    | RLPSNotReady
+      -- ^ @notReady@
+      -- The raster is not ready for processing.
+    | RLPSProcessing
+      -- ^ @processing@
+      -- The raster is processing.
+    | RLPSReady
+      -- ^ @ready@
+      -- The raster is ready for processing.
+      deriving (Eq,Ord,Enum,Read,Show,Data,Typeable,Generic)
+
+instance Hashable RastersListProcessingStatus
+
+instance FromText RastersListProcessingStatus where
+    fromText = \case
+        "complete" -> Just RLPSComplete
+        "failed" -> Just RLPSFailed
+        "notReady" -> Just RLPSNotReady
+        "processing" -> Just RLPSProcessing
+        "ready" -> Just RLPSReady
+        _ -> Nothing
+
+instance ToText RastersListProcessingStatus where
+    toText = \case
+        RLPSComplete -> "complete"
+        RLPSFailed -> "failed"
+        RLPSNotReady -> "notReady"
+        RLPSProcessing -> "processing"
+        RLPSReady -> "ready"
+
+instance FromJSON RastersListProcessingStatus where
+    parseJSON = parseJSONText "RastersListProcessingStatus"
+
+instance ToJSON RastersListProcessingStatus where
+    toJSON = toJSONText
+
+data LayersListProcessingStatus
+    = LLPSComplete
+      -- ^ @complete@
+      -- The layer has completed processing.
+    | LLPSFailed
+      -- ^ @failed@
+      -- The layer has failed processing.
+    | LLPSNotReady
+      -- ^ @notReady@
+      -- The layer is not ready for processing.
+    | LLPSProcessing
+      -- ^ @processing@
+      -- The layer is processing.
+    | LLPSReady
+      -- ^ @ready@
+      -- The layer is ready for processing.
+      deriving (Eq,Ord,Enum,Read,Show,Data,Typeable,Generic)
+
+instance Hashable LayersListProcessingStatus
+
+instance FromText LayersListProcessingStatus where
+    fromText = \case
+        "complete" -> Just LLPSComplete
+        "failed" -> Just LLPSFailed
+        "notReady" -> Just LLPSNotReady
+        "processing" -> Just LLPSProcessing
+        "ready" -> Just LLPSReady
+        _ -> Nothing
+
+instance ToText LayersListProcessingStatus where
+    toText = \case
+        LLPSComplete -> "complete"
+        LLPSFailed -> "failed"
+        LLPSNotReady -> "notReady"
+        LLPSProcessing -> "processing"
+        LLPSReady -> "ready"
+
+instance FromJSON LayersListProcessingStatus where
+    parseJSON = parseJSONText "LayersListProcessingStatus"
+
+instance ToJSON LayersListProcessingStatus where
+    toJSON = toJSONText
+
+-- | The role parameter indicates that the response should only contain
+-- assets where the current user has the specified level of access.
+data RasterCollectionsRastersListRole
+    = RCRLROwner
+      -- ^ @owner@
+      -- The user can read, write and administer the asset.
+    | RCRLRReader
+      -- ^ @reader@
+      -- The user can read the asset.
+    | RCRLRWriter
+      -- ^ @writer@
+      -- The user can read and write the asset.
+      deriving (Eq,Ord,Enum,Read,Show,Data,Typeable,Generic)
+
+instance Hashable RasterCollectionsRastersListRole
+
+instance FromText RasterCollectionsRastersListRole where
+    fromText = \case
+        "owner" -> Just RCRLROwner
+        "reader" -> Just RCRLRReader
+        "writer" -> Just RCRLRWriter
+        _ -> Nothing
+
+instance ToText RasterCollectionsRastersListRole where
+    toText = \case
+        RCRLROwner -> "owner"
+        RCRLRReader -> "reader"
+        RCRLRWriter -> "writer"
+
+instance FromJSON RasterCollectionsRastersListRole where
+    parseJSON = parseJSONText "RasterCollectionsRastersListRole"
+
+instance ToJSON RasterCollectionsRastersListRole where
+    toJSON = toJSONText
+
+-- | Identifies this object as a GeoJsonMultiPolygon.
+data GeoJSONMultiPolygonType
+    = MultiPolygon
+      -- ^ @MultiPolygon@
+      deriving (Eq,Ord,Enum,Read,Show,Data,Typeable,Generic)
+
+instance Hashable GeoJSONMultiPolygonType
+
+instance FromText GeoJSONMultiPolygonType where
+    fromText = \case
+        "MultiPolygon" -> Just MultiPolygon
+        _ -> Nothing
+
+instance ToText GeoJSONMultiPolygonType where
+    toText = \case
+        MultiPolygon -> "MultiPolygon"
+
+instance FromJSON GeoJSONMultiPolygonType where
+    parseJSON = parseJSONText "GeoJSONMultiPolygonType"
+
+instance ToJSON GeoJSONMultiPolygonType where
+    toJSON = toJSONText
+
+-- | Identifies this object as a GeoJsonMultiPoint.
+data GeoJSONMultiPointType
+    = MultiPoint
+      -- ^ @MultiPoint@
+      deriving (Eq,Ord,Enum,Read,Show,Data,Typeable,Generic)
+
+instance Hashable GeoJSONMultiPointType
+
+instance FromText GeoJSONMultiPointType where
+    fromText = \case
+        "MultiPoint" -> Just MultiPoint
+        _ -> Nothing
+
+instance ToText GeoJSONMultiPointType where
+    toText = \case
+        MultiPoint -> "MultiPoint"
+
+instance FromJSON GeoJSONMultiPointType where
+    parseJSON = parseJSONText "GeoJSONMultiPointType"
+
+instance ToJSON GeoJSONMultiPointType where
+    toJSON = toJSONText
+
+-- | The type of the datasources used to build this Layer. This should be
+-- used instead of datasourceType. At least one of layerType and
+-- datasourceType and must be specified, but layerType takes precedence.
+data PublishedLayerLayerType
+    = Image
+      -- ^ @image@
+    | Vector
+      -- ^ @vector@
+      deriving (Eq,Ord,Enum,Read,Show,Data,Typeable,Generic)
+
+instance Hashable PublishedLayerLayerType
+
+instance FromText PublishedLayerLayerType where
+    fromText = \case
+        "image" -> Just Image
+        "vector" -> Just Vector
+        _ -> Nothing
+
+instance ToText PublishedLayerLayerType where
+    toText = \case
+        Image -> "image"
+        Vector -> "vector"
+
+instance FromJSON PublishedLayerLayerType where
+    parseJSON = parseJSONText "PublishedLayerLayerType"
+
+instance ToJSON PublishedLayerLayerType where
+    toJSON = toJSONText
+
+data TablesListProcessingStatus
+    = TLPSComplete
+      -- ^ @complete@
+      -- The table has completed processing.
+    | TLPSFailed
+      -- ^ @failed@
+      -- The table has failed processing.
+    | TLPSNotReady
+      -- ^ @notReady@
+      -- The table is not ready for processing.
+    | TLPSProcessing
+      -- ^ @processing@
+      -- The table is processing.
+    | TLPSReady
+      -- ^ @ready@
+      -- The table is ready for processing.
+      deriving (Eq,Ord,Enum,Read,Show,Data,Typeable,Generic)
+
+instance Hashable TablesListProcessingStatus
+
+instance FromText TablesListProcessingStatus where
+    fromText = \case
+        "complete" -> Just TLPSComplete
+        "failed" -> Just TLPSFailed
+        "notReady" -> Just TLPSNotReady
+        "processing" -> Just TLPSProcessing
+        "ready" -> Just TLPSReady
+        _ -> Nothing
+
+instance ToText TablesListProcessingStatus where
+    toText = \case
+        TLPSComplete -> "complete"
+        TLPSFailed -> "failed"
+        TLPSNotReady -> "notReady"
+        TLPSProcessing -> "processing"
+        TLPSReady -> "ready"
+
+instance FromJSON TablesListProcessingStatus where
+    parseJSON = parseJSONText "TablesListProcessingStatus"
+
+instance ToJSON TablesListProcessingStatus where
+    toJSON = toJSONText
+
+-- | The type of the datasources used to build this Layer. This should be
+-- used instead of datasourceType. At least one of layerType and
+-- datasourceType and must be specified, but layerType takes precedence.
+data LayerLayerType
+    = LLTImage
+      -- ^ @image@
+    | LLTVector
+      -- ^ @vector@
+      deriving (Eq,Ord,Enum,Read,Show,Data,Typeable,Generic)
+
+instance Hashable LayerLayerType
+
+instance FromText LayerLayerType where
+    fromText = \case
+        "image" -> Just LLTImage
+        "vector" -> Just LLTVector
+        _ -> Nothing
+
+instance ToText LayerLayerType where
+    toText = \case
+        LLTImage -> "image"
+        LLTVector -> "vector"
+
+instance FromJSON LayerLayerType where
+    parseJSON = parseJSONText "LayerLayerType"
+
+instance ToJSON LayerLayerType where
+    toJSON = toJSONText
+
+-- | The account type.
+data PermissionType
+    = Anyone
+      -- ^ @anyone@
+    | Group
+      -- ^ @group@
+    | User
+      -- ^ @user@
+      deriving (Eq,Ord,Enum,Read,Show,Data,Typeable,Generic)
+
+instance Hashable PermissionType
+
+instance FromText PermissionType where
+    fromText = \case
+        "anyone" -> Just Anyone
+        "group" -> Just Group
+        "user" -> Just User
+        _ -> Nothing
+
+instance ToText PermissionType where
+    toText = \case
+        Anyone -> "anyone"
+        Group -> "group"
+        User -> "user"
+
+instance FromJSON PermissionType where
+    parseJSON = parseJSONText "PermissionType"
+
+instance ToJSON PermissionType where
+    toJSON = toJSONText
+
+-- | The processing status of this map. Map processing is automatically
+-- started once a map becomes ready for processing.
+data MapProcessingStatus
+    = MPSComplete
+      -- ^ @complete@
+    | MPSFailed
+      -- ^ @failed@
+    | MPSNotReady
+      -- ^ @notReady@
+    | MPSProcessing
+      -- ^ @processing@
+    | MPSReady
+      -- ^ @ready@
+      deriving (Eq,Ord,Enum,Read,Show,Data,Typeable,Generic)
+
+instance Hashable MapProcessingStatus
+
+instance FromText MapProcessingStatus where
+    fromText = \case
+        "complete" -> Just MPSComplete
+        "failed" -> Just MPSFailed
+        "notReady" -> Just MPSNotReady
+        "processing" -> Just MPSProcessing
+        "ready" -> Just MPSReady
+        _ -> Nothing
+
+instance ToText MapProcessingStatus where
+    toText = \case
+        MPSComplete -> "complete"
+        MPSFailed -> "failed"
+        MPSNotReady -> "notReady"
+        MPSProcessing -> "processing"
+        MPSReady -> "ready"
+
+instance FromJSON MapProcessingStatus where
+    parseJSON = parseJSONText "MapProcessingStatus"
+
+instance ToJSON MapProcessingStatus where
+    toJSON = toJSONText
+
+-- | Deprecated: The version parameter indicates which version of the map
+-- should be returned. When version is set to published, the published
+-- version of the map will be returned. Please use the maps.getPublished
+-- endpoint instead.
+data MapsGetVersion
+    = Draft
+      -- ^ @draft@
+      -- The draft version.
+    | Published
+      -- ^ @published@
+      -- The published version.
+      deriving (Eq,Ord,Enum,Read,Show,Data,Typeable,Generic)
+
+instance Hashable MapsGetVersion
+
+instance FromText MapsGetVersion where
+    fromText = \case
+        "draft" -> Just Draft
+        "published" -> Just Published
+        _ -> Nothing
+
+instance ToText MapsGetVersion where
+    toText = \case
+        Draft -> "draft"
+        Published -> "published"
+
+instance FromJSON MapsGetVersion where
+    parseJSON = parseJSONText "MapsGetVersion"
+
+instance ToJSON MapsGetVersion where
+    toJSON = toJSONText
+
+-- | The role parameter indicates that the response should only contain
+-- assets where the current user has the specified level of access.
+data TablesListRole
+    = TLROwner
+      -- ^ @owner@
+      -- The user can read, write and administer the asset.
+    | TLRReader
+      -- ^ @reader@
+      -- The user can read the asset.
+    | TLRWriter
+      -- ^ @writer@
+      -- The user can read and write the asset.
+      deriving (Eq,Ord,Enum,Read,Show,Data,Typeable,Generic)
+
+instance Hashable TablesListRole
+
+instance FromText TablesListRole where
+    fromText = \case
+        "owner" -> Just TLROwner
+        "reader" -> Just TLRReader
+        "writer" -> Just TLRWriter
+        _ -> Nothing
+
+instance ToText TablesListRole where
+    toText = \case
+        TLROwner -> "owner"
+        TLRReader -> "reader"
+        TLRWriter -> "writer"
+
+instance FromJSON TablesListRole where
+    parseJSON = parseJSONText "TablesListRole"
+
+instance ToJSON TablesListRole where
+    toJSON = toJSONText
+
+-- | The type of the vector style. Currently, only displayRule is supported.
+data VectorStyleType
+    = VSTDisplayRule
+      -- ^ @displayRule@
+      deriving (Eq,Ord,Enum,Read,Show,Data,Typeable,Generic)
+
+instance Hashable VectorStyleType
+
+instance FromText VectorStyleType where
+    fromText = \case
+        "displayRule" -> Just VSTDisplayRule
+        _ -> Nothing
+
+instance ToText VectorStyleType where
+    toText = \case
+        VSTDisplayRule -> "displayRule"
+
+instance FromJSON VectorStyleType where
+    parseJSON = parseJSONText "VectorStyleType"
+
+instance ToJSON VectorStyleType where
+    toJSON = toJSONText
+
+-- | Identifies this object as a GeoJsonLineString.
+data GeoJSONLineStringType
+    = LineString
+      -- ^ @LineString@
+      deriving (Eq,Ord,Enum,Read,Show,Data,Typeable,Generic)
+
+instance Hashable GeoJSONLineStringType
+
+instance FromText GeoJSONLineStringType where
+    fromText = \case
+        "LineString" -> Just LineString
+        _ -> Nothing
+
+instance ToText GeoJSONLineStringType where
+    toText = \case
+        LineString -> "LineString"
+
+instance FromJSON GeoJSONLineStringType where
+    parseJSON = parseJSONText "GeoJSONLineStringType"
+
+instance ToJSON GeoJSONLineStringType where
+    toJSON = toJSONText
+
+-- | The publishing status of this layer.
+data LayerPublishingStatus
+    = LPSNotPublished
+      -- ^ @notPublished@
+    | LPSPublished
+      -- ^ @published@
+      deriving (Eq,Ord,Enum,Read,Show,Data,Typeable,Generic)
+
+instance Hashable LayerPublishingStatus
+
+instance FromText LayerPublishingStatus where
+    fromText = \case
+        "notPublished" -> Just LPSNotPublished
+        "published" -> Just LPSPublished
+        _ -> Nothing
+
+instance ToText LayerPublishingStatus where
+    toText = \case
+        LPSNotPublished -> "notPublished"
+        LPSPublished -> "published"
+
+instance FromJSON LayerPublishingStatus where
+    parseJSON = parseJSONText "LayerPublishingStatus"
+
+instance ToJSON LayerPublishingStatus where
+    toJSON = toJSONText
+
+-- | Identifies this object as a MapKmlLink.
+data MapKmlLinkType
+    = KmlLink
+      -- ^ @kmlLink@
+      deriving (Eq,Ord,Enum,Read,Show,Data,Typeable,Generic)
+
+instance Hashable MapKmlLinkType
+
+instance FromText MapKmlLinkType where
+    fromText = \case
+        "kmlLink" -> Just KmlLink
+        _ -> Nothing
+
+instance ToText MapKmlLinkType where
+    toText = \case
+        KmlLink -> "kmlLink"
+
+instance FromJSON MapKmlLinkType where
+    parseJSON = parseJSONText "MapKmlLinkType"
+
+instance ToJSON MapKmlLinkType where
+    toJSON = toJSONText
+
+-- | Deprecated: The type of the datasources used to build this Layer. Note:
+-- This has been replaced by layerType, but is still available for now to
+-- maintain backward compatibility.
+data LayerDatasourceType
+    = LDTImage
+      -- ^ @image@
+    | LDTTable
+      -- ^ @table@
+      deriving (Eq,Ord,Enum,Read,Show,Data,Typeable,Generic)
+
+instance Hashable LayerDatasourceType
+
+instance FromText LayerDatasourceType where
+    fromText = \case
+        "image" -> Just LDTImage
+        "table" -> Just LDTTable
+        _ -> Nothing
+
+instance ToText LayerDatasourceType where
+    toText = \case
+        LDTImage -> "image"
+        LDTTable -> "table"
+
+instance FromJSON LayerDatasourceType where
+    parseJSON = parseJSONText "LayerDatasourceType"
+
+instance ToJSON LayerDatasourceType where
+    toJSON = toJSONText
+
+-- | Identifies this object as a GeoJsonGeometryCollection.
+data GeoJSONGeometryCollectionType
+    = GeometryCollection
+      -- ^ @GeometryCollection@
+      deriving (Eq,Ord,Enum,Read,Show,Data,Typeable,Generic)
+
+instance Hashable GeoJSONGeometryCollectionType
+
+instance FromText GeoJSONGeometryCollectionType where
+    fromText = \case
+        "GeometryCollection" -> Just GeometryCollection
+        _ -> Nothing
+
+instance ToText GeoJSONGeometryCollectionType where
+    toText = \case
+        GeometryCollection -> "GeometryCollection"
+
+instance FromJSON GeoJSONGeometryCollectionType where
+    parseJSON = parseJSONText "GeoJSONGeometryCollectionType"
+
+instance ToJSON GeoJSONGeometryCollectionType where
+    toJSON = toJSONText
+
+-- | Identifies this object as a GeoJsonPoint.
+data GeoJSONPointType
+    = Point
+      -- ^ @Point@
+      deriving (Eq,Ord,Enum,Read,Show,Data,Typeable,Generic)
+
+instance Hashable GeoJSONPointType
+
+instance FromText GeoJSONPointType where
+    fromText = \case
+        "Point" -> Just Point
+        _ -> Nothing
+
+instance ToText GeoJSONPointType where
+    toText = \case
+        Point -> "Point"
+
+instance FromJSON GeoJSONPointType where
+    parseJSON = parseJSONText "GeoJSONPointType"
+
+instance ToJSON GeoJSONPointType where
+    toJSON = toJSONText
+
+-- | Identifies this object as a GeoJsonPolygon.
+data GeoJSONPolygonType
+    = Polygon
+      -- ^ @Polygon@
+      deriving (Eq,Ord,Enum,Read,Show,Data,Typeable,Generic)
+
+instance Hashable GeoJSONPolygonType
+
+instance FromText GeoJSONPolygonType where
+    fromText = \case
+        "Polygon" -> Just Polygon
+        _ -> Nothing
+
+instance ToText GeoJSONPolygonType where
+    toText = \case
+        Polygon -> "Polygon"
+
+instance FromJSON GeoJSONPolygonType where
+    parseJSON = parseJSONText "GeoJSONPolygonType"
+
+instance ToJSON GeoJSONPolygonType where
+    toJSON = toJSONText
+
+-- | Deprecated: The version parameter indicates which version of the layer
+-- should be returned. When version is set to published, the published
+-- version of the layer will be returned. Please use the
+-- layers.getPublished endpoint instead.
+data LayersGetVersion
+    = LGVDraft
+      -- ^ @draft@
+      -- The draft version.
+    | LGVPublished
+      -- ^ @published@
+      -- The published version.
+      deriving (Eq,Ord,Enum,Read,Show,Data,Typeable,Generic)
+
+instance Hashable LayersGetVersion
+
+instance FromText LayersGetVersion where
+    fromText = \case
+        "draft" -> Just LGVDraft
+        "published" -> Just LGVPublished
+        _ -> Nothing
+
+instance ToText LayersGetVersion where
+    toText = \case
+        LGVDraft -> "draft"
+        LGVPublished -> "published"
+
+instance FromJSON LayersGetVersion where
+    parseJSON = parseJSONText "LayersGetVersion"
+
+instance ToJSON LayersGetVersion where
+    toJSON = toJSONText
+
+-- | Identifies this object as a MapLayer.
+data MapLayerType
+    = MLTLayer
+      -- ^ @layer@
+      deriving (Eq,Ord,Enum,Read,Show,Data,Typeable,Generic)
+
+instance Hashable MapLayerType
+
+instance FromText MapLayerType where
+    fromText = \case
+        "layer" -> Just MLTLayer
+        _ -> Nothing
+
+instance ToText MapLayerType where
+    toText = \case
+        MLTLayer -> "layer"
+
+instance FromJSON MapLayerType where
+    parseJSON = parseJSONText "MapLayerType"
+
+instance ToJSON MapLayerType where
+    toJSON = toJSONText
+
+-- | Font weight of the label, defaults to \'normal\'.
+data LabelStyleFontWeight
+    = Bold
+      -- ^ @bold@
+    | Normal
+      -- ^ @normal@
+      deriving (Eq,Ord,Enum,Read,Show,Data,Typeable,Generic)
+
+instance Hashable LabelStyleFontWeight
+
+instance FromText LabelStyleFontWeight where
+    fromText = \case
+        "bold" -> Just Bold
+        "normal" -> Just Normal
+        _ -> Nothing
+
+instance ToText LabelStyleFontWeight where
+    toText = \case
+        Bold -> "bold"
+        Normal -> "normal"
+
+instance FromJSON LabelStyleFontWeight where
+    parseJSON = parseJSONText "LabelStyleFontWeight"
+
+instance ToJSON LabelStyleFontWeight where
+    toJSON = toJSONText
+
+-- | Identifies this object as a MapFolder.
+data MapFolderType
+    = Folder
+      -- ^ @folder@
+      deriving (Eq,Ord,Enum,Read,Show,Data,Typeable,Generic)
+
+instance Hashable MapFolderType
+
+instance FromText MapFolderType where
+    fromText = \case
+        "folder" -> Just Folder
+        _ -> Nothing
+
+instance ToText MapFolderType where
+    toText = \case
+        Folder -> "folder"
+
+instance FromJSON MapFolderType where
+    parseJSON = parseJSONText "MapFolderType"
+
+instance ToJSON MapFolderType where
+    toJSON = toJSONText
+
+-- | The processing status of this RasterCollection.
+data RasterCollectionProcessingStatus
+    = RCPSComplete
+      -- ^ @complete@
+    | RCPSFailed
+      -- ^ @failed@
+    | RCPSNotReady
+      -- ^ @notReady@
+    | RCPSProcessing
+      -- ^ @processing@
+    | RCPSReady
+      -- ^ @ready@
+      deriving (Eq,Ord,Enum,Read,Show,Data,Typeable,Generic)
+
+instance Hashable RasterCollectionProcessingStatus
+
+instance FromText RasterCollectionProcessingStatus where
+    fromText = \case
+        "complete" -> Just RCPSComplete
+        "failed" -> Just RCPSFailed
+        "notReady" -> Just RCPSNotReady
+        "processing" -> Just RCPSProcessing
+        "ready" -> Just RCPSReady
+        _ -> Nothing
+
+instance ToText RasterCollectionProcessingStatus where
+    toText = \case
+        RCPSComplete -> "complete"
+        RCPSFailed -> "failed"
+        RCPSNotReady -> "notReady"
+        RCPSProcessing -> "processing"
+        RCPSReady -> "ready"
+
+instance FromJSON RasterCollectionProcessingStatus where
+    parseJSON = parseJSONText "RasterCollectionProcessingStatus"
+
+instance ToJSON RasterCollectionProcessingStatus where
+    toJSON = toJSONText
+
+-- | The table version to access. See Accessing Public Data for information.
+data TablesFeaturesListVersion
+    = TFLVDraft
+      -- ^ @draft@
+      -- The draft version.
+    | TFLVPublished
+      -- ^ @published@
+      -- The published version.
+      deriving (Eq,Ord,Enum,Read,Show,Data,Typeable,Generic)
+
+instance Hashable TablesFeaturesListVersion
+
+instance FromText TablesFeaturesListVersion where
+    fromText = \case
+        "draft" -> Just TFLVDraft
+        "published" -> Just TFLVPublished
+        _ -> Nothing
+
+instance ToText TablesFeaturesListVersion where
+    toText = \case
+        TFLVDraft -> "draft"
+        TFLVPublished -> "published"
+
+instance FromJSON TablesFeaturesListVersion where
+    parseJSON = parseJSONText "TablesFeaturesListVersion"
+
+instance ToJSON TablesFeaturesListVersion where
+    toJSON = toJSONText
+
+data MapsListProcessingStatus
+    = MLPSComplete
+      -- ^ @complete@
+      -- The map has completed processing.
+    | MLPSFailed
+      -- ^ @failed@
+      -- The map has failed processing.
+    | MLPSNotReady
+      -- ^ @notReady@
+      -- The map is not ready for processing.
+    | MLPSProcessing
+      -- ^ @processing@
+      -- The map is processing.
+      deriving (Eq,Ord,Enum,Read,Show,Data,Typeable,Generic)
+
+instance Hashable MapsListProcessingStatus
+
+instance FromText MapsListProcessingStatus where
+    fromText = \case
+        "complete" -> Just MLPSComplete
+        "failed" -> Just MLPSFailed
+        "notReady" -> Just MLPSNotReady
+        "processing" -> Just MLPSProcessing
+        _ -> Nothing
+
+instance ToText MapsListProcessingStatus where
+    toText = \case
+        MLPSComplete -> "complete"
+        MLPSFailed -> "failed"
+        MLPSNotReady -> "notReady"
+        MLPSProcessing -> "processing"
+
+instance FromJSON MapsListProcessingStatus where
+    parseJSON = parseJSONText "MapsListProcessingStatus"
+
+instance ToJSON MapsListProcessingStatus where
+    toJSON = toJSONText
+
+-- | Font style of the label, defaults to \'normal\'.
+data LabelStyleFontStyle
+    = LSFSItalic
+      -- ^ @italic@
+    | LSFSNormal
+      -- ^ @normal@
+      deriving (Eq,Ord,Enum,Read,Show,Data,Typeable,Generic)
+
+instance Hashable LabelStyleFontStyle
+
+instance FromText LabelStyleFontStyle where
+    fromText = \case
+        "italic" -> Just LSFSItalic
+        "normal" -> Just LSFSNormal
+        _ -> Nothing
+
+instance ToText LabelStyleFontStyle where
+    toText = \case
+        LSFSItalic -> "italic"
+        LSFSNormal -> "normal"
+
+instance FromJSON LabelStyleFontStyle where
+    parseJSON = parseJSONText "LabelStyleFontStyle"
+
+instance ToJSON LabelStyleFontStyle where
+    toJSON = toJSONText
+
+-- | The type of asset. One of raster, rasterCollection, table, map, or
+-- layer.
+data AssetType
+    = ATLayer
+      -- ^ @layer@
+    | ATMap
+      -- ^ @map@
+    | ATRaster
+      -- ^ @raster@
+    | ATRasterCollection
+      -- ^ @rasterCollection@
+    | ATTable
+      -- ^ @table@
+      deriving (Eq,Ord,Enum,Read,Show,Data,Typeable,Generic)
+
+instance Hashable AssetType
+
+instance FromText AssetType where
+    fromText = \case
+        "layer" -> Just ATLayer
+        "map" -> Just ATMap
+        "raster" -> Just ATRaster
+        "rasterCollection" -> Just ATRasterCollection
+        "table" -> Just ATTable
+        _ -> Nothing
+
+instance ToText AssetType where
+    toText = \case
+        ATLayer -> "layer"
+        ATMap -> "map"
+        ATRaster -> "raster"
+        ATRasterCollection -> "rasterCollection"
+        ATTable -> "table"
+
+instance FromJSON AssetType where
+    parseJSON = parseJSONText "AssetType"
+
+instance ToJSON AssetType where
+    toJSON = toJSONText
+
+-- | The type of this Raster. Always \"image\" today.
+data RasterRasterType
+    = RRTImage
+      -- ^ @image@
+      deriving (Eq,Ord,Enum,Read,Show,Data,Typeable,Generic)
+
+instance Hashable RasterRasterType
+
+instance FromText RasterRasterType where
+    fromText = \case
+        "image" -> Just RRTImage
+        _ -> Nothing
+
+instance ToText RasterRasterType where
+    toText = \case
+        RRTImage -> "image"
+
+instance FromJSON RasterRasterType where
+    parseJSON = parseJSONText "RasterRasterType"
+
+instance ToJSON RasterRasterType where
+    toJSON = toJSONText
+
+-- | The role parameter indicates that the response should only contain
+-- assets where the current user has the specified level of access.
+data RasterCollectionsListRole
+    = RCLROwner
+      -- ^ @owner@
+      -- The user can read, write and administer the asset.
+    | RCLRReader
+      -- ^ @reader@
+      -- The user can read the asset.
+    | RCLRWriter
+      -- ^ @writer@
+      -- The user can read and write the asset.
+      deriving (Eq,Ord,Enum,Read,Show,Data,Typeable,Generic)
+
+instance Hashable RasterCollectionsListRole
+
+instance FromText RasterCollectionsListRole where
+    fromText = \case
+        "owner" -> Just RCLROwner
+        "reader" -> Just RCLRReader
+        "writer" -> Just RCLRWriter
+        _ -> Nothing
+
+instance ToText RasterCollectionsListRole where
+    toText = \case
+        RCLROwner -> "owner"
+        RCLRReader -> "reader"
+        RCLRWriter -> "writer"
+
+instance FromJSON RasterCollectionsListRole where
+    parseJSON = parseJSONText "RasterCollectionsListRole"
+
+instance ToJSON RasterCollectionsListRole where
+    toJSON = toJSONText
+
+-- | Operation used to evaluate the filter.
+data FilterOperator
+    = NotEqual
+      -- ^ @!=@
+    | Less
+      -- ^ @<@
+    | LessOrEqual
+      -- ^ @<=@
+    | Equal
+      -- ^ @==@
+    | Greater
+      -- ^ @>@
+    | GreaterEqual
+      -- ^ @>=@
+    | Contains
+      -- ^ @contains@
+    | EndsWith
+      -- ^ @endsWith@
+    | StartsWith
+      -- ^ @startsWith@
+      deriving (Eq,Ord,Enum,Read,Show,Data,Typeable,Generic)
+
+instance Hashable FilterOperator
+
+instance FromText FilterOperator where
+    fromText = \case
+        "!=" -> Just NotEqual
+        "<" -> Just Less
+        "<=" -> Just LessOrEqual
+        "==" -> Just Equal
+        ">" -> Just Greater
+        ">=" -> Just GreaterEqual
+        "contains" -> Just Contains
+        "endsWith" -> Just EndsWith
+        "startsWith" -> Just StartsWith
+        _ -> Nothing
+
+instance ToText FilterOperator where
+    toText = \case
+        NotEqual -> "!="
+        Less -> "<"
+        LessOrEqual -> "<="
+        Equal -> "=="
+        Greater -> ">"
+        GreaterEqual -> ">="
+        Contains -> "contains"
+        EndsWith -> "endsWith"
+        StartsWith -> "startsWith"
+
+instance FromJSON FilterOperator where
+    parseJSON = parseJSONText "FilterOperator"
+
+instance ToJSON FilterOperator where
+    toJSON = toJSONText
+
+-- | The type of data stored in this column.
+data TableColumnType
+    = Datetime
+      -- ^ @datetime@
+    | Double
+      -- ^ @double@
+    | Integer
+      -- ^ @integer@
+    | LineStrings
+      -- ^ @lineStrings@
+    | MixedGeometry
+      -- ^ @mixedGeometry@
+    | Points
+      -- ^ @points@
+    | Polygons
+      -- ^ @polygons@
+    | String
+      -- ^ @string@
+      deriving (Eq,Ord,Enum,Read,Show,Data,Typeable,Generic)
+
+instance Hashable TableColumnType
+
+instance FromText TableColumnType where
+    fromText = \case
+        "datetime" -> Just Datetime
+        "double" -> Just Double
+        "integer" -> Just Integer
+        "lineStrings" -> Just LineStrings
+        "mixedGeometry" -> Just MixedGeometry
+        "points" -> Just Points
+        "polygons" -> Just Polygons
+        "string" -> Just String
+        _ -> Nothing
+
+instance ToText TableColumnType where
+    toText = \case
+        Datetime -> "datetime"
+        Double -> "double"
+        Integer -> "integer"
+        LineStrings -> "lineStrings"
+        MixedGeometry -> "mixedGeometry"
+        Points -> "points"
+        Polygons -> "polygons"
+        String -> "string"
+
+instance FromJSON TableColumnType where
+    parseJSON = parseJSONText "TableColumnType"
+
+instance ToJSON TableColumnType where
+    toJSON = toJSONText
+
+data RasterCollectionsListProcessingStatus
+    = RCLPSComplete
+      -- ^ @complete@
+      -- The raster collection has completed processing.
+    | RCLPSFailed
+      -- ^ @failed@
+      -- The raster collection has failed processing.
+    | RCLPSNotReady
+      -- ^ @notReady@
+      -- The raster collection is not ready for processing.
+    | RCLPSProcessing
+      -- ^ @processing@
+      -- The raster collection is processing.
+    | RCLPSReady
+      -- ^ @ready@
+      -- The raster collection is ready for processing.
+      deriving (Eq,Ord,Enum,Read,Show,Data,Typeable,Generic)
+
+instance Hashable RasterCollectionsListProcessingStatus
+
+instance FromText RasterCollectionsListProcessingStatus where
+    fromText = \case
+        "complete" -> Just RCLPSComplete
+        "failed" -> Just RCLPSFailed
+        "notReady" -> Just RCLPSNotReady
+        "processing" -> Just RCLPSProcessing
+        "ready" -> Just RCLPSReady
+        _ -> Nothing
+
+instance ToText RasterCollectionsListProcessingStatus where
+    toText = \case
+        RCLPSComplete -> "complete"
+        RCLPSFailed -> "failed"
+        RCLPSNotReady -> "notReady"
+        RCLPSProcessing -> "processing"
+        RCLPSReady -> "ready"
+
+instance FromJSON RasterCollectionsListProcessingStatus where
+    parseJSON = parseJSONText "RasterCollectionsListProcessingStatus"
+
+instance ToJSON RasterCollectionsListProcessingStatus where
+    toJSON = toJSONText
+
+-- | The role parameter indicates that the response should only contain
+-- assets where the current user has the specified level of access.
+data LayersListRole
+    = LLROwner
+      -- ^ @owner@
+      -- The user can read, write and administer the asset.
+    | LLRReader
+      -- ^ @reader@
+      -- The user can read the asset.
+    | LLRWriter
+      -- ^ @writer@
+      -- The user can read and write the asset.
+      deriving (Eq,Ord,Enum,Read,Show,Data,Typeable,Generic)
+
+instance Hashable LayersListRole
+
+instance FromText LayersListRole where
+    fromText = \case
+        "owner" -> Just LLROwner
+        "reader" -> Just LLRReader
+        "writer" -> Just LLRWriter
+        _ -> Nothing
+
+instance ToText LayersListRole where
+    toText = \case
+        LLROwner -> "owner"
+        LLRReader -> "reader"
+        LLRWriter -> "writer"
+
+instance FromJSON LayersListRole where
+    parseJSON = parseJSONText "LayersListRole"
+
+instance ToJSON LayersListRole where
+    toJSON = toJSONText
+
+-- | The table version to access. See Accessing Public Data for information.
+data TablesFeaturesGetVersion
+    = TFGVDraft
+      -- ^ @draft@
+      -- The draft version.
+    | TFGVPublished
+      -- ^ @published@
+      -- The published version.
+      deriving (Eq,Ord,Enum,Read,Show,Data,Typeable,Generic)
+
+instance Hashable TablesFeaturesGetVersion
+
+instance FromText TablesFeaturesGetVersion where
+    fromText = \case
+        "draft" -> Just TFGVDraft
+        "published" -> Just TFGVPublished
+        _ -> Nothing
+
+instance ToText TablesFeaturesGetVersion where
+    toText = \case
+        TFGVDraft -> "draft"
+        TFGVPublished -> "published"
+
+instance FromJSON TablesFeaturesGetVersion where
+    parseJSON = parseJSONText "TablesFeaturesGetVersion"
+
+instance ToJSON TablesFeaturesGetVersion where
+    toJSON = toJSONText
+
+-- | The type of rasters contained within this RasterCollection.
+data RasterCollectionRasterType
+    = RCRTImage
+      -- ^ @image@
+      deriving (Eq,Ord,Enum,Read,Show,Data,Typeable,Generic)
+
+instance Hashable RasterCollectionRasterType
+
+instance FromText RasterCollectionRasterType where
+    fromText = \case
+        "image" -> Just RCRTImage
+        _ -> Nothing
+
+instance ToText RasterCollectionRasterType where
+    toText = \case
+        RCRTImage -> "image"
+
+instance FromJSON RasterCollectionRasterType where
+    parseJSON = parseJSONText "RasterCollectionRasterType"
+
+instance ToJSON RasterCollectionRasterType where
+    toJSON = toJSONText
+
+-- | The role parameter indicates that the response should only contain
+-- assets where the current user has the specified level of access.
+data RastersListRole
+    = RLROwner
+      -- ^ @owner@
+      -- The user can read, write and administer the asset.
+    | RLRReader
+      -- ^ @reader@
+      -- The user can read the asset.
+    | RLRWriter
+      -- ^ @writer@
+      -- The user can read and write the asset.
+      deriving (Eq,Ord,Enum,Read,Show,Data,Typeable,Generic)
+
+instance Hashable RastersListRole
+
+instance FromText RastersListRole where
+    fromText = \case
+        "owner" -> Just RLROwner
+        "reader" -> Just RLRReader
+        "writer" -> Just RLRWriter
+        _ -> Nothing
+
+instance ToText RastersListRole where
+    toText = \case
+        RLROwner -> "owner"
+        RLRReader -> "reader"
+        RLRWriter -> "writer"
+
+instance FromJSON RastersListRole where
+    parseJSON = parseJSONText "RastersListRole"
+
+instance ToJSON RastersListRole where
+    toJSON = toJSONText
+
+-- | The publishing status of this map.
+data MapPublishingStatus
+    = MPSNotPublished
+      -- ^ @notPublished@
+    | MPSPublished
+      -- ^ @published@
+      deriving (Eq,Ord,Enum,Read,Show,Data,Typeable,Generic)
+
+instance Hashable MapPublishingStatus
+
+instance FromText MapPublishingStatus where
+    fromText = \case
+        "notPublished" -> Just MPSNotPublished
+        "published" -> Just MPSPublished
+        _ -> Nothing
+
+instance ToText MapPublishingStatus where
+    toText = \case
+        MPSNotPublished -> "notPublished"
+        MPSPublished -> "published"
+
+instance FromJSON MapPublishingStatus where
+    parseJSON = parseJSONText "MapPublishingStatus"
+
+instance ToJSON MapPublishingStatus where
+    toJSON = toJSONText
+
+-- | The upload status of the file.
+data FileUploadStatus
+    = FUSCanceled
+      -- ^ @canceled@
+    | FUSComplete
+      -- ^ @complete@
+    | FUSFailed
+      -- ^ @failed@
+    | FUSInProgress
+      -- ^ @inProgress@
+      deriving (Eq,Ord,Enum,Read,Show,Data,Typeable,Generic)
+
+instance Hashable FileUploadStatus
+
+instance FromText FileUploadStatus where
+    fromText = \case
+        "canceled" -> Just FUSCanceled
+        "complete" -> Just FUSComplete
+        "failed" -> Just FUSFailed
+        "inProgress" -> Just FUSInProgress
+        _ -> Nothing
+
+instance ToText FileUploadStatus where
+    toText = \case
+        FUSCanceled -> "canceled"
+        FUSComplete -> "complete"
+        FUSFailed -> "failed"
+        FUSInProgress -> "inProgress"
+
+instance FromJSON FileUploadStatus where
+    parseJSON = parseJSONText "FileUploadStatus"
+
+instance ToJSON FileUploadStatus where
+    toJSON = toJSONText
+
+-- | The role parameter indicates that the response should only contain
+-- assets where the current user has the specified level of access.
+data MapsListRole
+    = MLROwner
+      -- ^ @owner@
+      -- The user can read, write and administer the asset.
+    | MLRReader
+      -- ^ @reader@
+      -- The user can read the asset.
+    | MLRWriter
+      -- ^ @writer@
+      -- The user can read and write the asset.
+      deriving (Eq,Ord,Enum,Read,Show,Data,Typeable,Generic)
+
+instance Hashable MapsListRole
+
+instance FromText MapsListRole where
+    fromText = \case
+        "owner" -> Just MLROwner
+        "reader" -> Just MLRReader
+        "writer" -> Just MLRWriter
+        _ -> Nothing
+
+instance ToText MapsListRole where
+    toText = \case
+        MLROwner -> "owner"
+        MLRReader -> "reader"
+        MLRWriter -> "writer"
+
+instance FromJSON MapsListRole where
+    parseJSON = parseJSONText "MapsListRole"
+
+instance ToJSON MapsListRole where
+    toJSON = toJSONText
+
+data TablesGetVersion
+    = TGVDraft
+      -- ^ @draft@
+      -- The draft version.
+    | TGVPublished
+      -- ^ @published@
+      -- The published version.
+      deriving (Eq,Ord,Enum,Read,Show,Data,Typeable,Generic)
+
+instance Hashable TablesGetVersion
+
+instance FromText TablesGetVersion where
+    fromText = \case
+        "draft" -> Just TGVDraft
+        "published" -> Just TGVPublished
+        _ -> Nothing
+
+instance ToText TablesGetVersion where
+    toText = \case
+        TGVDraft -> "draft"
+        TGVPublished -> "published"
+
+instance FromJSON TablesGetVersion where
+    parseJSON = parseJSONText "TablesGetVersion"
+
+instance ToJSON TablesGetVersion where
+    toJSON = toJSONText
+
+-- | The processing status of this table.
+data TableProcessingStatus
+    = TPSComplete
+      -- ^ @complete@
+    | TPSFailed
+      -- ^ @failed@
+    | TPSNotReady
+      -- ^ @notReady@
+    | TPSProcessing
+      -- ^ @processing@
+    | TPSReady
+      -- ^ @ready@
+      deriving (Eq,Ord,Enum,Read,Show,Data,Typeable,Generic)
+
+instance Hashable TableProcessingStatus
+
+instance FromText TableProcessingStatus where
+    fromText = \case
+        "complete" -> Just TPSComplete
+        "failed" -> Just TPSFailed
+        "notReady" -> Just TPSNotReady
+        "processing" -> Just TPSProcessing
+        "ready" -> Just TPSReady
+        _ -> Nothing
+
+instance ToText TableProcessingStatus where
+    toText = \case
+        TPSComplete -> "complete"
+        TPSFailed -> "failed"
+        TPSNotReady -> "notReady"
+        TPSProcessing -> "processing"
+        TPSReady -> "ready"
+
+instance FromJSON TableProcessingStatus where
+    parseJSON = parseJSONText "TableProcessingStatus"
+
+instance ToJSON TableProcessingStatus where
+    toJSON = toJSONText
diff --git a/gen/Network/Google/Resource/MapsEngine/Assets/Get.hs b/gen/Network/Google/Resource/MapsEngine/Assets/Get.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/MapsEngine/Assets/Get.hs
@@ -0,0 +1,81 @@
+{-# 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.MapsEngine.Assets.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)
+--
+-- Return metadata for a particular asset.
+--
+-- /See:/ <https://developers.google.com/maps-engine/ Google Maps Engine API Reference> for @mapsengine.assets.get@.
+module Network.Google.Resource.MapsEngine.Assets.Get
+    (
+    -- * REST Resource
+      AssetsGetResource
+
+    -- * Creating a Request
+    , assetsGet
+    , AssetsGet
+
+    -- * Request Lenses
+    , agId
+    ) where
+
+import           Network.Google.MapsEngine.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @mapsengine.assets.get@ method which the
+-- 'AssetsGet' request conforms to.
+type AssetsGetResource =
+     "mapsengine" :>
+       "v1" :>
+         "assets" :>
+           Capture "id" Text :>
+             QueryParam "alt" AltJSON :> Get '[JSON] Asset
+
+-- | Return metadata for a particular asset.
+--
+-- /See:/ 'assetsGet' smart constructor.
+newtype AssetsGet = AssetsGet
+    { _agId :: Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'AssetsGet' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'agId'
+assetsGet
+    :: Text -- ^ 'agId'
+    -> AssetsGet
+assetsGet pAgId_ =
+    AssetsGet
+    { _agId = pAgId_
+    }
+
+-- | The ID of the asset.
+agId :: Lens' AssetsGet Text
+agId = lens _agId (\ s a -> s{_agId = a})
+
+instance GoogleRequest AssetsGet where
+        type Rs AssetsGet = Asset
+        requestClient AssetsGet{..}
+          = go _agId (Just AltJSON) mapsEngineService
+          where go
+                  = buildClient (Proxy :: Proxy AssetsGetResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/MapsEngine/Assets/List.hs b/gen/Network/Google/Resource/MapsEngine/Assets/List.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/MapsEngine/Assets/List.hs
@@ -0,0 +1,247 @@
+{-# 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.MapsEngine.Assets.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)
+--
+-- Return all assets readable by the current user.
+--
+-- /See:/ <https://developers.google.com/maps-engine/ Google Maps Engine API Reference> for @mapsengine.assets.list@.
+module Network.Google.Resource.MapsEngine.Assets.List
+    (
+    -- * REST Resource
+      AssetsListResource
+
+    -- * Creating a Request
+    , assetsList
+    , AssetsList
+
+    -- * Request Lenses
+    , alCreatedAfter
+    , alCreatorEmail
+    , alRole
+    , alBbox
+    , alModifiedAfter
+    , alModifiedBefore
+    , alPageToken
+    , alProjectId
+    , alType
+    , alSearch
+    , alMaxResults
+    , alTags
+    , alCreatedBefore
+    ) where
+
+import           Network.Google.MapsEngine.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @mapsengine.assets.list@ method which the
+-- 'AssetsList' request conforms to.
+type AssetsListResource =
+     "mapsengine" :>
+       "v1" :>
+         "assets" :>
+           QueryParam "createdAfter" DateTime' :>
+             QueryParam "creatorEmail" Text :>
+               QueryParam "role" AssetsListRole :>
+                 QueryParam "bbox" Text :>
+                   QueryParam "modifiedAfter" DateTime' :>
+                     QueryParam "modifiedBefore" DateTime' :>
+                       QueryParam "pageToken" Text :>
+                         QueryParam "projectId" Text :>
+                           QueryParam "type" Text :>
+                             QueryParam "search" Text :>
+                               QueryParam "maxResults" (Textual Word32) :>
+                                 QueryParam "tags" Text :>
+                                   QueryParam "createdBefore" DateTime' :>
+                                     QueryParam "alt" AltJSON :>
+                                       Get '[JSON] AssetsListResponse
+
+-- | Return all assets readable by the current user.
+--
+-- /See:/ 'assetsList' smart constructor.
+data AssetsList = AssetsList
+    { _alCreatedAfter   :: !(Maybe DateTime')
+    , _alCreatorEmail   :: !(Maybe Text)
+    , _alRole           :: !(Maybe AssetsListRole)
+    , _alBbox           :: !(Maybe Text)
+    , _alModifiedAfter  :: !(Maybe DateTime')
+    , _alModifiedBefore :: !(Maybe DateTime')
+    , _alPageToken      :: !(Maybe Text)
+    , _alProjectId      :: !(Maybe Text)
+    , _alType           :: !(Maybe Text)
+    , _alSearch         :: !(Maybe Text)
+    , _alMaxResults     :: !(Maybe (Textual Word32))
+    , _alTags           :: !(Maybe Text)
+    , _alCreatedBefore  :: !(Maybe DateTime')
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'AssetsList' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'alCreatedAfter'
+--
+-- * 'alCreatorEmail'
+--
+-- * 'alRole'
+--
+-- * 'alBbox'
+--
+-- * 'alModifiedAfter'
+--
+-- * 'alModifiedBefore'
+--
+-- * 'alPageToken'
+--
+-- * 'alProjectId'
+--
+-- * 'alType'
+--
+-- * 'alSearch'
+--
+-- * 'alMaxResults'
+--
+-- * 'alTags'
+--
+-- * 'alCreatedBefore'
+assetsList
+    :: AssetsList
+assetsList =
+    AssetsList
+    { _alCreatedAfter = Nothing
+    , _alCreatorEmail = Nothing
+    , _alRole = Nothing
+    , _alBbox = Nothing
+    , _alModifiedAfter = Nothing
+    , _alModifiedBefore = Nothing
+    , _alPageToken = Nothing
+    , _alProjectId = Nothing
+    , _alType = Nothing
+    , _alSearch = Nothing
+    , _alMaxResults = Nothing
+    , _alTags = Nothing
+    , _alCreatedBefore = Nothing
+    }
+
+-- | An RFC 3339 formatted date-time value (e.g. 1970-01-01T00:00:00Z).
+-- Returned assets will have been created at or after this time.
+alCreatedAfter :: Lens' AssetsList (Maybe UTCTime)
+alCreatedAfter
+  = lens _alCreatedAfter
+      (\ s a -> s{_alCreatedAfter = a})
+      . mapping _DateTime
+
+-- | An email address representing a user. Returned assets that have been
+-- created by the user associated with the provided email address.
+alCreatorEmail :: Lens' AssetsList (Maybe Text)
+alCreatorEmail
+  = lens _alCreatorEmail
+      (\ s a -> s{_alCreatorEmail = a})
+
+-- | The role parameter indicates that the response should only contain
+-- assets where the current user has the specified level of access.
+alRole :: Lens' AssetsList (Maybe AssetsListRole)
+alRole = lens _alRole (\ s a -> s{_alRole = a})
+
+-- | A bounding box, expressed as \"west,south,east,north\". If set, only
+-- assets which intersect this bounding box will be returned.
+alBbox :: Lens' AssetsList (Maybe Text)
+alBbox = lens _alBbox (\ s a -> s{_alBbox = a})
+
+-- | An RFC 3339 formatted date-time value (e.g. 1970-01-01T00:00:00Z).
+-- Returned assets will have been modified at or after this time.
+alModifiedAfter :: Lens' AssetsList (Maybe UTCTime)
+alModifiedAfter
+  = lens _alModifiedAfter
+      (\ s a -> s{_alModifiedAfter = a})
+      . mapping _DateTime
+
+-- | An RFC 3339 formatted date-time value (e.g. 1970-01-01T00:00:00Z).
+-- Returned assets will have been modified at or before this time.
+alModifiedBefore :: Lens' AssetsList (Maybe UTCTime)
+alModifiedBefore
+  = lens _alModifiedBefore
+      (\ s a -> s{_alModifiedBefore = a})
+      . mapping _DateTime
+
+-- | The continuation token, used to page through large result sets. To get
+-- the next page of results, set this parameter to the value of
+-- nextPageToken from the previous response.
+alPageToken :: Lens' AssetsList (Maybe Text)
+alPageToken
+  = lens _alPageToken (\ s a -> s{_alPageToken = a})
+
+-- | The ID of a Maps Engine project, used to filter the response. To list
+-- all available projects with their IDs, send a Projects: list request.
+-- You can also find your project ID as the value of the DashboardPlace:cid
+-- URL parameter when signed in to mapsengine.google.com.
+alProjectId :: Lens' AssetsList (Maybe Text)
+alProjectId
+  = lens _alProjectId (\ s a -> s{_alProjectId = a})
+
+-- | A comma separated list of asset types. Returned assets will have one of
+-- the types from the provided list. Supported values are \'map\',
+-- \'layer\', \'rasterCollection\' and \'table\'.
+alType :: Lens' AssetsList (Maybe Text)
+alType = lens _alType (\ s a -> s{_alType = a})
+
+-- | An unstructured search string used to filter the set of results based on
+-- asset metadata.
+alSearch :: Lens' AssetsList (Maybe Text)
+alSearch = lens _alSearch (\ s a -> s{_alSearch = a})
+
+-- | The maximum number of items to include in a single response page. The
+-- maximum supported value is 100.
+alMaxResults :: Lens' AssetsList (Maybe Word32)
+alMaxResults
+  = lens _alMaxResults (\ s a -> s{_alMaxResults = a})
+      . mapping _Coerce
+
+-- | A comma separated list of tags. Returned assets will contain all the
+-- tags from the list.
+alTags :: Lens' AssetsList (Maybe Text)
+alTags = lens _alTags (\ s a -> s{_alTags = a})
+
+-- | An RFC 3339 formatted date-time value (e.g. 1970-01-01T00:00:00Z).
+-- Returned assets will have been created at or before this time.
+alCreatedBefore :: Lens' AssetsList (Maybe UTCTime)
+alCreatedBefore
+  = lens _alCreatedBefore
+      (\ s a -> s{_alCreatedBefore = a})
+      . mapping _DateTime
+
+instance GoogleRequest AssetsList where
+        type Rs AssetsList = AssetsListResponse
+        requestClient AssetsList{..}
+          = go _alCreatedAfter _alCreatorEmail _alRole _alBbox
+              _alModifiedAfter
+              _alModifiedBefore
+              _alPageToken
+              _alProjectId
+              _alType
+              _alSearch
+              _alMaxResults
+              _alTags
+              _alCreatedBefore
+              (Just AltJSON)
+              mapsEngineService
+          where go
+                  = buildClient (Proxy :: Proxy AssetsListResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/MapsEngine/Assets/Parents/List.hs b/gen/Network/Google/Resource/MapsEngine/Assets/Parents/List.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/MapsEngine/Assets/Parents/List.hs
@@ -0,0 +1,113 @@
+{-# LANGUAGE DataKinds          #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE FlexibleInstances  #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+{-# LANGUAGE TypeOperators      #-}
+
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
+
+-- |
+-- Module      : Network.Google.Resource.MapsEngine.Assets.Parents.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)
+--
+-- Return all parent ids of the specified asset.
+--
+-- /See:/ <https://developers.google.com/maps-engine/ Google Maps Engine API Reference> for @mapsengine.assets.parents.list@.
+module Network.Google.Resource.MapsEngine.Assets.Parents.List
+    (
+    -- * REST Resource
+      AssetsParentsListResource
+
+    -- * Creating a Request
+    , assetsParentsList
+    , AssetsParentsList
+
+    -- * Request Lenses
+    , aplId
+    , aplPageToken
+    , aplMaxResults
+    ) where
+
+import           Network.Google.MapsEngine.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @mapsengine.assets.parents.list@ method which the
+-- 'AssetsParentsList' request conforms to.
+type AssetsParentsListResource =
+     "mapsengine" :>
+       "v1" :>
+         "assets" :>
+           Capture "id" Text :>
+             "parents" :>
+               QueryParam "pageToken" Text :>
+                 QueryParam "maxResults" (Textual Word32) :>
+                   QueryParam "alt" AltJSON :>
+                     Get '[JSON] ParentsListResponse
+
+-- | Return all parent ids of the specified asset.
+--
+-- /See:/ 'assetsParentsList' smart constructor.
+data AssetsParentsList = AssetsParentsList
+    { _aplId         :: !Text
+    , _aplPageToken  :: !(Maybe Text)
+    , _aplMaxResults :: !(Maybe (Textual Word32))
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'AssetsParentsList' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'aplId'
+--
+-- * 'aplPageToken'
+--
+-- * 'aplMaxResults'
+assetsParentsList
+    :: Text -- ^ 'aplId'
+    -> AssetsParentsList
+assetsParentsList pAplId_ =
+    AssetsParentsList
+    { _aplId = pAplId_
+    , _aplPageToken = Nothing
+    , _aplMaxResults = Nothing
+    }
+
+-- | The ID of the asset whose parents will be listed.
+aplId :: Lens' AssetsParentsList Text
+aplId = lens _aplId (\ s a -> s{_aplId = a})
+
+-- | The continuation token, used to page through large result sets. To get
+-- the next page of results, set this parameter to the value of
+-- nextPageToken from the previous response.
+aplPageToken :: Lens' AssetsParentsList (Maybe Text)
+aplPageToken
+  = lens _aplPageToken (\ s a -> s{_aplPageToken = a})
+
+-- | The maximum number of items to include in a single response page. The
+-- maximum supported value is 50.
+aplMaxResults :: Lens' AssetsParentsList (Maybe Word32)
+aplMaxResults
+  = lens _aplMaxResults
+      (\ s a -> s{_aplMaxResults = a})
+      . mapping _Coerce
+
+instance GoogleRequest AssetsParentsList where
+        type Rs AssetsParentsList = ParentsListResponse
+        requestClient AssetsParentsList{..}
+          = go _aplId _aplPageToken _aplMaxResults
+              (Just AltJSON)
+              mapsEngineService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy AssetsParentsListResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/MapsEngine/Assets/Permissions/List.hs b/gen/Network/Google/Resource/MapsEngine/Assets/Permissions/List.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/MapsEngine/Assets/Permissions/List.hs
@@ -0,0 +1,85 @@
+{-# LANGUAGE DataKinds          #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE FlexibleInstances  #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+{-# LANGUAGE TypeOperators      #-}
+
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
+
+-- |
+-- Module      : Network.Google.Resource.MapsEngine.Assets.Permissions.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)
+--
+-- Return all of the permissions for the specified asset.
+--
+-- /See:/ <https://developers.google.com/maps-engine/ Google Maps Engine API Reference> for @mapsengine.assets.permissions.list@.
+module Network.Google.Resource.MapsEngine.Assets.Permissions.List
+    (
+    -- * REST Resource
+      AssetsPermissionsListResource
+
+    -- * Creating a Request
+    , assetsPermissionsList
+    , AssetsPermissionsList
+
+    -- * Request Lenses
+    , assId
+    ) where
+
+import           Network.Google.MapsEngine.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @mapsengine.assets.permissions.list@ method which the
+-- 'AssetsPermissionsList' request conforms to.
+type AssetsPermissionsListResource =
+     "mapsengine" :>
+       "v1" :>
+         "assets" :>
+           Capture "id" Text :>
+             "permissions" :>
+               QueryParam "alt" AltJSON :>
+                 Get '[JSON] PermissionsListResponse
+
+-- | Return all of the permissions for the specified asset.
+--
+-- /See:/ 'assetsPermissionsList' smart constructor.
+newtype AssetsPermissionsList = AssetsPermissionsList
+    { _assId :: Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'AssetsPermissionsList' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'assId'
+assetsPermissionsList
+    :: Text -- ^ 'assId'
+    -> AssetsPermissionsList
+assetsPermissionsList pAssId_ =
+    AssetsPermissionsList
+    { _assId = pAssId_
+    }
+
+-- | The ID of the asset whose permissions will be listed.
+assId :: Lens' AssetsPermissionsList Text
+assId = lens _assId (\ s a -> s{_assId = a})
+
+instance GoogleRequest AssetsPermissionsList where
+        type Rs AssetsPermissionsList =
+             PermissionsListResponse
+        requestClient AssetsPermissionsList{..}
+          = go _assId (Just AltJSON) mapsEngineService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy AssetsPermissionsListResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/MapsEngine/Layers/CancelProcessing.hs b/gen/Network/Google/Resource/MapsEngine/Layers/CancelProcessing.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/MapsEngine/Layers/CancelProcessing.hs
@@ -0,0 +1,84 @@
+{-# LANGUAGE DataKinds          #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE FlexibleInstances  #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+{-# LANGUAGE TypeOperators      #-}
+
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
+
+-- |
+-- Module      : Network.Google.Resource.MapsEngine.Layers.CancelProcessing
+-- 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)
+--
+-- Cancel processing on a layer asset.
+--
+-- /See:/ <https://developers.google.com/maps-engine/ Google Maps Engine API Reference> for @mapsengine.layers.cancelProcessing@.
+module Network.Google.Resource.MapsEngine.Layers.CancelProcessing
+    (
+    -- * REST Resource
+      LayersCancelProcessingResource
+
+    -- * Creating a Request
+    , layersCancelProcessing
+    , LayersCancelProcessing
+
+    -- * Request Lenses
+    , lcpId
+    ) where
+
+import           Network.Google.MapsEngine.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @mapsengine.layers.cancelProcessing@ method which the
+-- 'LayersCancelProcessing' request conforms to.
+type LayersCancelProcessingResource =
+     "mapsengine" :>
+       "v1" :>
+         "layers" :>
+           Capture "id" Text :>
+             "cancelProcessing" :>
+               QueryParam "alt" AltJSON :>
+                 Post '[JSON] ProcessResponse
+
+-- | Cancel processing on a layer asset.
+--
+-- /See:/ 'layersCancelProcessing' smart constructor.
+newtype LayersCancelProcessing = LayersCancelProcessing
+    { _lcpId :: Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'LayersCancelProcessing' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'lcpId'
+layersCancelProcessing
+    :: Text -- ^ 'lcpId'
+    -> LayersCancelProcessing
+layersCancelProcessing pLcpId_ =
+    LayersCancelProcessing
+    { _lcpId = pLcpId_
+    }
+
+-- | The ID of the layer.
+lcpId :: Lens' LayersCancelProcessing Text
+lcpId = lens _lcpId (\ s a -> s{_lcpId = a})
+
+instance GoogleRequest LayersCancelProcessing where
+        type Rs LayersCancelProcessing = ProcessResponse
+        requestClient LayersCancelProcessing{..}
+          = go _lcpId (Just AltJSON) mapsEngineService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy LayersCancelProcessingResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/MapsEngine/Layers/Create.hs b/gen/Network/Google/Resource/MapsEngine/Layers/Create.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/MapsEngine/Layers/Create.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.MapsEngine.Layers.Create
+-- Copyright   : (c) 2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Create a layer asset.
+--
+-- /See:/ <https://developers.google.com/maps-engine/ Google Maps Engine API Reference> for @mapsengine.layers.create@.
+module Network.Google.Resource.MapsEngine.Layers.Create
+    (
+    -- * REST Resource
+      LayersCreateResource
+
+    -- * Creating a Request
+    , layersCreate
+    , LayersCreate
+
+    -- * Request Lenses
+    , lcProcess
+    , lcPayload
+    ) where
+
+import           Network.Google.MapsEngine.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @mapsengine.layers.create@ method which the
+-- 'LayersCreate' request conforms to.
+type LayersCreateResource =
+     "mapsengine" :>
+       "v1" :>
+         "layers" :>
+           QueryParam "process" Bool :>
+             QueryParam "alt" AltJSON :>
+               ReqBody '[JSON] Layer :> Post '[JSON] Layer
+
+-- | Create a layer asset.
+--
+-- /See:/ 'layersCreate' smart constructor.
+data LayersCreate = LayersCreate
+    { _lcProcess :: !(Maybe Bool)
+    , _lcPayload :: !Layer
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'LayersCreate' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'lcProcess'
+--
+-- * 'lcPayload'
+layersCreate
+    :: Layer -- ^ 'lcPayload'
+    -> LayersCreate
+layersCreate pLcPayload_ =
+    LayersCreate
+    { _lcProcess = Nothing
+    , _lcPayload = pLcPayload_
+    }
+
+-- | Whether to queue the created layer for processing.
+lcProcess :: Lens' LayersCreate (Maybe Bool)
+lcProcess
+  = lens _lcProcess (\ s a -> s{_lcProcess = a})
+
+-- | Multipart request metadata.
+lcPayload :: Lens' LayersCreate Layer
+lcPayload
+  = lens _lcPayload (\ s a -> s{_lcPayload = a})
+
+instance GoogleRequest LayersCreate where
+        type Rs LayersCreate = Layer
+        requestClient LayersCreate{..}
+          = go _lcProcess (Just AltJSON) _lcPayload
+              mapsEngineService
+          where go
+                  = buildClient (Proxy :: Proxy LayersCreateResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/MapsEngine/Layers/Delete.hs b/gen/Network/Google/Resource/MapsEngine/Layers/Delete.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/MapsEngine/Layers/Delete.hs
@@ -0,0 +1,84 @@
+{-# LANGUAGE DataKinds          #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE FlexibleInstances  #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+{-# LANGUAGE TypeOperators      #-}
+
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
+
+-- |
+-- Module      : Network.Google.Resource.MapsEngine.Layers.Delete
+-- Copyright   : (c) 2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Delete a layer.
+--
+-- /See:/ <https://developers.google.com/maps-engine/ Google Maps Engine API Reference> for @mapsengine.layers.delete@.
+module Network.Google.Resource.MapsEngine.Layers.Delete
+    (
+    -- * REST Resource
+      LayersDeleteResource
+
+    -- * Creating a Request
+    , layersDelete
+    , LayersDelete
+
+    -- * Request Lenses
+    , ldId
+    ) where
+
+import           Network.Google.MapsEngine.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @mapsengine.layers.delete@ method which the
+-- 'LayersDelete' request conforms to.
+type LayersDeleteResource =
+     "mapsengine" :>
+       "v1" :>
+         "layers" :>
+           Capture "id" Text :>
+             QueryParam "alt" AltJSON :> Delete '[JSON] ()
+
+-- | Delete a layer.
+--
+-- /See:/ 'layersDelete' smart constructor.
+newtype LayersDelete = LayersDelete
+    { _ldId :: Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'LayersDelete' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'ldId'
+layersDelete
+    :: Text -- ^ 'ldId'
+    -> LayersDelete
+layersDelete pLdId_ =
+    LayersDelete
+    { _ldId = pLdId_
+    }
+
+-- | The ID of the layer. Only the layer creator or project owner are
+-- permitted to delete. If the layer is published, or included in a map,
+-- the request will fail. Unpublish the layer, and remove it from all maps
+-- prior to deleting.
+ldId :: Lens' LayersDelete Text
+ldId = lens _ldId (\ s a -> s{_ldId = a})
+
+instance GoogleRequest LayersDelete where
+        type Rs LayersDelete = ()
+        requestClient LayersDelete{..}
+          = go _ldId (Just AltJSON) mapsEngineService
+          where go
+                  = buildClient (Proxy :: Proxy LayersDeleteResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/MapsEngine/Layers/Get.hs b/gen/Network/Google/Resource/MapsEngine/Layers/Get.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/MapsEngine/Layers/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.MapsEngine.Layers.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)
+--
+-- Return metadata for a particular layer.
+--
+-- /See:/ <https://developers.google.com/maps-engine/ Google Maps Engine API Reference> for @mapsengine.layers.get@.
+module Network.Google.Resource.MapsEngine.Layers.Get
+    (
+    -- * REST Resource
+      LayersGetResource
+
+    -- * Creating a Request
+    , layersGet
+    , LayersGet
+
+    -- * Request Lenses
+    , lgVersion
+    , lgId
+    ) where
+
+import           Network.Google.MapsEngine.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @mapsengine.layers.get@ method which the
+-- 'LayersGet' request conforms to.
+type LayersGetResource =
+     "mapsengine" :>
+       "v1" :>
+         "layers" :>
+           Capture "id" Text :>
+             QueryParam "version" LayersGetVersion :>
+               QueryParam "alt" AltJSON :> Get '[JSON] Layer
+
+-- | Return metadata for a particular layer.
+--
+-- /See:/ 'layersGet' smart constructor.
+data LayersGet = LayersGet
+    { _lgVersion :: !(Maybe LayersGetVersion)
+    , _lgId      :: !Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'LayersGet' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'lgVersion'
+--
+-- * 'lgId'
+layersGet
+    :: Text -- ^ 'lgId'
+    -> LayersGet
+layersGet pLgId_ =
+    LayersGet
+    { _lgVersion = Nothing
+    , _lgId = pLgId_
+    }
+
+-- | Deprecated: The version parameter indicates which version of the layer
+-- should be returned. When version is set to published, the published
+-- version of the layer will be returned. Please use the
+-- layers.getPublished endpoint instead.
+lgVersion :: Lens' LayersGet (Maybe LayersGetVersion)
+lgVersion
+  = lens _lgVersion (\ s a -> s{_lgVersion = a})
+
+-- | The ID of the layer.
+lgId :: Lens' LayersGet Text
+lgId = lens _lgId (\ s a -> s{_lgId = a})
+
+instance GoogleRequest LayersGet where
+        type Rs LayersGet = Layer
+        requestClient LayersGet{..}
+          = go _lgId _lgVersion (Just AltJSON)
+              mapsEngineService
+          where go
+                  = buildClient (Proxy :: Proxy LayersGetResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/MapsEngine/Layers/GetPublished.hs b/gen/Network/Google/Resource/MapsEngine/Layers/GetPublished.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/MapsEngine/Layers/GetPublished.hs
@@ -0,0 +1,84 @@
+{-# LANGUAGE DataKinds          #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE FlexibleInstances  #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+{-# LANGUAGE TypeOperators      #-}
+
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
+
+-- |
+-- Module      : Network.Google.Resource.MapsEngine.Layers.GetPublished
+-- 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)
+--
+-- Return the published metadata for a particular layer.
+--
+-- /See:/ <https://developers.google.com/maps-engine/ Google Maps Engine API Reference> for @mapsengine.layers.getPublished@.
+module Network.Google.Resource.MapsEngine.Layers.GetPublished
+    (
+    -- * REST Resource
+      LayersGetPublishedResource
+
+    -- * Creating a Request
+    , layersGetPublished
+    , LayersGetPublished
+
+    -- * Request Lenses
+    , lgpId
+    ) where
+
+import           Network.Google.MapsEngine.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @mapsengine.layers.getPublished@ method which the
+-- 'LayersGetPublished' request conforms to.
+type LayersGetPublishedResource =
+     "mapsengine" :>
+       "v1" :>
+         "layers" :>
+           Capture "id" Text :>
+             "published" :>
+               QueryParam "alt" AltJSON :>
+                 Get '[JSON] PublishedLayer
+
+-- | Return the published metadata for a particular layer.
+--
+-- /See:/ 'layersGetPublished' smart constructor.
+newtype LayersGetPublished = LayersGetPublished
+    { _lgpId :: Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'LayersGetPublished' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'lgpId'
+layersGetPublished
+    :: Text -- ^ 'lgpId'
+    -> LayersGetPublished
+layersGetPublished pLgpId_ =
+    LayersGetPublished
+    { _lgpId = pLgpId_
+    }
+
+-- | The ID of the layer.
+lgpId :: Lens' LayersGetPublished Text
+lgpId = lens _lgpId (\ s a -> s{_lgpId = a})
+
+instance GoogleRequest LayersGetPublished where
+        type Rs LayersGetPublished = PublishedLayer
+        requestClient LayersGetPublished{..}
+          = go _lgpId (Just AltJSON) mapsEngineService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy LayersGetPublishedResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/MapsEngine/Layers/List.hs b/gen/Network/Google/Resource/MapsEngine/Layers/List.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/MapsEngine/Layers/List.hs
@@ -0,0 +1,248 @@
+{-# 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.MapsEngine.Layers.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)
+--
+-- Return all layers readable by the current user.
+--
+-- /See:/ <https://developers.google.com/maps-engine/ Google Maps Engine API Reference> for @mapsengine.layers.list@.
+module Network.Google.Resource.MapsEngine.Layers.List
+    (
+    -- * REST Resource
+      LayersListResource
+
+    -- * Creating a Request
+    , layersList
+    , LayersList
+
+    -- * Request Lenses
+    , llCreatedAfter
+    , llCreatorEmail
+    , llRole
+    , llBbox
+    , llProcessingStatus
+    , llModifiedAfter
+    , llModifiedBefore
+    , llPageToken
+    , llProjectId
+    , llSearch
+    , llMaxResults
+    , llTags
+    , llCreatedBefore
+    ) where
+
+import           Network.Google.MapsEngine.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @mapsengine.layers.list@ method which the
+-- 'LayersList' request conforms to.
+type LayersListResource =
+     "mapsengine" :>
+       "v1" :>
+         "layers" :>
+           QueryParam "createdAfter" DateTime' :>
+             QueryParam "creatorEmail" Text :>
+               QueryParam "role" LayersListRole :>
+                 QueryParam "bbox" Text :>
+                   QueryParam "processingStatus"
+                     LayersListProcessingStatus
+                     :>
+                     QueryParam "modifiedAfter" DateTime' :>
+                       QueryParam "modifiedBefore" DateTime' :>
+                         QueryParam "pageToken" Text :>
+                           QueryParam "projectId" Text :>
+                             QueryParam "search" Text :>
+                               QueryParam "maxResults" (Textual Word32) :>
+                                 QueryParam "tags" Text :>
+                                   QueryParam "createdBefore" DateTime' :>
+                                     QueryParam "alt" AltJSON :>
+                                       Get '[JSON] LayersListResponse
+
+-- | Return all layers readable by the current user.
+--
+-- /See:/ 'layersList' smart constructor.
+data LayersList = LayersList
+    { _llCreatedAfter     :: !(Maybe DateTime')
+    , _llCreatorEmail     :: !(Maybe Text)
+    , _llRole             :: !(Maybe LayersListRole)
+    , _llBbox             :: !(Maybe Text)
+    , _llProcessingStatus :: !(Maybe LayersListProcessingStatus)
+    , _llModifiedAfter    :: !(Maybe DateTime')
+    , _llModifiedBefore   :: !(Maybe DateTime')
+    , _llPageToken        :: !(Maybe Text)
+    , _llProjectId        :: !(Maybe Text)
+    , _llSearch           :: !(Maybe Text)
+    , _llMaxResults       :: !(Maybe (Textual Word32))
+    , _llTags             :: !(Maybe Text)
+    , _llCreatedBefore    :: !(Maybe DateTime')
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'LayersList' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'llCreatedAfter'
+--
+-- * 'llCreatorEmail'
+--
+-- * 'llRole'
+--
+-- * 'llBbox'
+--
+-- * 'llProcessingStatus'
+--
+-- * 'llModifiedAfter'
+--
+-- * 'llModifiedBefore'
+--
+-- * 'llPageToken'
+--
+-- * 'llProjectId'
+--
+-- * 'llSearch'
+--
+-- * 'llMaxResults'
+--
+-- * 'llTags'
+--
+-- * 'llCreatedBefore'
+layersList
+    :: LayersList
+layersList =
+    LayersList
+    { _llCreatedAfter = Nothing
+    , _llCreatorEmail = Nothing
+    , _llRole = Nothing
+    , _llBbox = Nothing
+    , _llProcessingStatus = Nothing
+    , _llModifiedAfter = Nothing
+    , _llModifiedBefore = Nothing
+    , _llPageToken = Nothing
+    , _llProjectId = Nothing
+    , _llSearch = Nothing
+    , _llMaxResults = Nothing
+    , _llTags = Nothing
+    , _llCreatedBefore = Nothing
+    }
+
+-- | An RFC 3339 formatted date-time value (e.g. 1970-01-01T00:00:00Z).
+-- Returned assets will have been created at or after this time.
+llCreatedAfter :: Lens' LayersList (Maybe UTCTime)
+llCreatedAfter
+  = lens _llCreatedAfter
+      (\ s a -> s{_llCreatedAfter = a})
+      . mapping _DateTime
+
+-- | An email address representing a user. Returned assets that have been
+-- created by the user associated with the provided email address.
+llCreatorEmail :: Lens' LayersList (Maybe Text)
+llCreatorEmail
+  = lens _llCreatorEmail
+      (\ s a -> s{_llCreatorEmail = a})
+
+-- | The role parameter indicates that the response should only contain
+-- assets where the current user has the specified level of access.
+llRole :: Lens' LayersList (Maybe LayersListRole)
+llRole = lens _llRole (\ s a -> s{_llRole = a})
+
+-- | A bounding box, expressed as \"west,south,east,north\". If set, only
+-- assets which intersect this bounding box will be returned.
+llBbox :: Lens' LayersList (Maybe Text)
+llBbox = lens _llBbox (\ s a -> s{_llBbox = a})
+
+llProcessingStatus :: Lens' LayersList (Maybe LayersListProcessingStatus)
+llProcessingStatus
+  = lens _llProcessingStatus
+      (\ s a -> s{_llProcessingStatus = a})
+
+-- | An RFC 3339 formatted date-time value (e.g. 1970-01-01T00:00:00Z).
+-- Returned assets will have been modified at or after this time.
+llModifiedAfter :: Lens' LayersList (Maybe UTCTime)
+llModifiedAfter
+  = lens _llModifiedAfter
+      (\ s a -> s{_llModifiedAfter = a})
+      . mapping _DateTime
+
+-- | An RFC 3339 formatted date-time value (e.g. 1970-01-01T00:00:00Z).
+-- Returned assets will have been modified at or before this time.
+llModifiedBefore :: Lens' LayersList (Maybe UTCTime)
+llModifiedBefore
+  = lens _llModifiedBefore
+      (\ s a -> s{_llModifiedBefore = a})
+      . mapping _DateTime
+
+-- | The continuation token, used to page through large result sets. To get
+-- the next page of results, set this parameter to the value of
+-- nextPageToken from the previous response.
+llPageToken :: Lens' LayersList (Maybe Text)
+llPageToken
+  = lens _llPageToken (\ s a -> s{_llPageToken = a})
+
+-- | The ID of a Maps Engine project, used to filter the response. To list
+-- all available projects with their IDs, send a Projects: list request.
+-- You can also find your project ID as the value of the DashboardPlace:cid
+-- URL parameter when signed in to mapsengine.google.com.
+llProjectId :: Lens' LayersList (Maybe Text)
+llProjectId
+  = lens _llProjectId (\ s a -> s{_llProjectId = a})
+
+-- | An unstructured search string used to filter the set of results based on
+-- asset metadata.
+llSearch :: Lens' LayersList (Maybe Text)
+llSearch = lens _llSearch (\ s a -> s{_llSearch = a})
+
+-- | The maximum number of items to include in a single response page. The
+-- maximum supported value is 100.
+llMaxResults :: Lens' LayersList (Maybe Word32)
+llMaxResults
+  = lens _llMaxResults (\ s a -> s{_llMaxResults = a})
+      . mapping _Coerce
+
+-- | A comma separated list of tags. Returned assets will contain all the
+-- tags from the list.
+llTags :: Lens' LayersList (Maybe Text)
+llTags = lens _llTags (\ s a -> s{_llTags = a})
+
+-- | An RFC 3339 formatted date-time value (e.g. 1970-01-01T00:00:00Z).
+-- Returned assets will have been created at or before this time.
+llCreatedBefore :: Lens' LayersList (Maybe UTCTime)
+llCreatedBefore
+  = lens _llCreatedBefore
+      (\ s a -> s{_llCreatedBefore = a})
+      . mapping _DateTime
+
+instance GoogleRequest LayersList where
+        type Rs LayersList = LayersListResponse
+        requestClient LayersList{..}
+          = go _llCreatedAfter _llCreatorEmail _llRole _llBbox
+              _llProcessingStatus
+              _llModifiedAfter
+              _llModifiedBefore
+              _llPageToken
+              _llProjectId
+              _llSearch
+              _llMaxResults
+              _llTags
+              _llCreatedBefore
+              (Just AltJSON)
+              mapsEngineService
+          where go
+                  = buildClient (Proxy :: Proxy LayersListResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/MapsEngine/Layers/ListPublished.hs b/gen/Network/Google/Resource/MapsEngine/Layers/ListPublished.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/MapsEngine/Layers/ListPublished.hs
@@ -0,0 +1,117 @@
+{-# LANGUAGE DataKinds          #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE FlexibleInstances  #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+{-# LANGUAGE TypeOperators      #-}
+
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
+
+-- |
+-- Module      : Network.Google.Resource.MapsEngine.Layers.ListPublished
+-- 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)
+--
+-- Return all published layers readable by the current user.
+--
+-- /See:/ <https://developers.google.com/maps-engine/ Google Maps Engine API Reference> for @mapsengine.layers.listPublished@.
+module Network.Google.Resource.MapsEngine.Layers.ListPublished
+    (
+    -- * REST Resource
+      LayersListPublishedResource
+
+    -- * Creating a Request
+    , layersListPublished
+    , LayersListPublished
+
+    -- * Request Lenses
+    , llpPageToken
+    , llpProjectId
+    , llpMaxResults
+    ) where
+
+import           Network.Google.MapsEngine.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @mapsengine.layers.listPublished@ method which the
+-- 'LayersListPublished' request conforms to.
+type LayersListPublishedResource =
+     "mapsengine" :>
+       "v1" :>
+         "layers" :>
+           "published" :>
+             QueryParam "pageToken" Text :>
+               QueryParam "projectId" Text :>
+                 QueryParam "maxResults" (Textual Word32) :>
+                   QueryParam "alt" AltJSON :>
+                     Get '[JSON] PublishedLayersListResponse
+
+-- | Return all published layers readable by the current user.
+--
+-- /See:/ 'layersListPublished' smart constructor.
+data LayersListPublished = LayersListPublished
+    { _llpPageToken  :: !(Maybe Text)
+    , _llpProjectId  :: !(Maybe Text)
+    , _llpMaxResults :: !(Maybe (Textual Word32))
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'LayersListPublished' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'llpPageToken'
+--
+-- * 'llpProjectId'
+--
+-- * 'llpMaxResults'
+layersListPublished
+    :: LayersListPublished
+layersListPublished =
+    LayersListPublished
+    { _llpPageToken = Nothing
+    , _llpProjectId = Nothing
+    , _llpMaxResults = Nothing
+    }
+
+-- | The continuation token, used to page through large result sets. To get
+-- the next page of results, set this parameter to the value of
+-- nextPageToken from the previous response.
+llpPageToken :: Lens' LayersListPublished (Maybe Text)
+llpPageToken
+  = lens _llpPageToken (\ s a -> s{_llpPageToken = a})
+
+-- | The ID of a Maps Engine project, used to filter the response. To list
+-- all available projects with their IDs, send a Projects: list request.
+-- You can also find your project ID as the value of the DashboardPlace:cid
+-- URL parameter when signed in to mapsengine.google.com.
+llpProjectId :: Lens' LayersListPublished (Maybe Text)
+llpProjectId
+  = lens _llpProjectId (\ s a -> s{_llpProjectId = a})
+
+-- | The maximum number of items to include in a single response page. The
+-- maximum supported value is 100.
+llpMaxResults :: Lens' LayersListPublished (Maybe Word32)
+llpMaxResults
+  = lens _llpMaxResults
+      (\ s a -> s{_llpMaxResults = a})
+      . mapping _Coerce
+
+instance GoogleRequest LayersListPublished where
+        type Rs LayersListPublished =
+             PublishedLayersListResponse
+        requestClient LayersListPublished{..}
+          = go _llpPageToken _llpProjectId _llpMaxResults
+              (Just AltJSON)
+              mapsEngineService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy LayersListPublishedResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/MapsEngine/Layers/Parents/List.hs b/gen/Network/Google/Resource/MapsEngine/Layers/Parents/List.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/MapsEngine/Layers/Parents/List.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.MapsEngine.Layers.Parents.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)
+--
+-- Return all parent ids of the specified layer.
+--
+-- /See:/ <https://developers.google.com/maps-engine/ Google Maps Engine API Reference> for @mapsengine.layers.parents.list@.
+module Network.Google.Resource.MapsEngine.Layers.Parents.List
+    (
+    -- * REST Resource
+      LayersParentsListResource
+
+    -- * Creating a Request
+    , layersParentsList
+    , LayersParentsList
+
+    -- * Request Lenses
+    , lId
+    , lPageToken
+    , lMaxResults
+    ) where
+
+import           Network.Google.MapsEngine.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @mapsengine.layers.parents.list@ method which the
+-- 'LayersParentsList' request conforms to.
+type LayersParentsListResource =
+     "mapsengine" :>
+       "v1" :>
+         "layers" :>
+           Capture "id" Text :>
+             "parents" :>
+               QueryParam "pageToken" Text :>
+                 QueryParam "maxResults" (Textual Word32) :>
+                   QueryParam "alt" AltJSON :>
+                     Get '[JSON] ParentsListResponse
+
+-- | Return all parent ids of the specified layer.
+--
+-- /See:/ 'layersParentsList' smart constructor.
+data LayersParentsList = LayersParentsList
+    { _lId         :: !Text
+    , _lPageToken  :: !(Maybe Text)
+    , _lMaxResults :: !(Maybe (Textual Word32))
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'LayersParentsList' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'lId'
+--
+-- * 'lPageToken'
+--
+-- * 'lMaxResults'
+layersParentsList
+    :: Text -- ^ 'lId'
+    -> LayersParentsList
+layersParentsList pLId_ =
+    LayersParentsList
+    { _lId = pLId_
+    , _lPageToken = Nothing
+    , _lMaxResults = Nothing
+    }
+
+-- | The ID of the layer whose parents will be listed.
+lId :: Lens' LayersParentsList Text
+lId = lens _lId (\ s a -> s{_lId = a})
+
+-- | The continuation token, used to page through large result sets. To get
+-- the next page of results, set this parameter to the value of
+-- nextPageToken from the previous response.
+lPageToken :: Lens' LayersParentsList (Maybe Text)
+lPageToken
+  = lens _lPageToken (\ s a -> s{_lPageToken = a})
+
+-- | The maximum number of items to include in a single response page. The
+-- maximum supported value is 50.
+lMaxResults :: Lens' LayersParentsList (Maybe Word32)
+lMaxResults
+  = lens _lMaxResults (\ s a -> s{_lMaxResults = a}) .
+      mapping _Coerce
+
+instance GoogleRequest LayersParentsList where
+        type Rs LayersParentsList = ParentsListResponse
+        requestClient LayersParentsList{..}
+          = go _lId _lPageToken _lMaxResults (Just AltJSON)
+              mapsEngineService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy LayersParentsListResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/MapsEngine/Layers/Patch.hs b/gen/Network/Google/Resource/MapsEngine/Layers/Patch.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/MapsEngine/Layers/Patch.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.MapsEngine.Layers.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)
+--
+-- Mutate a layer asset.
+--
+-- /See:/ <https://developers.google.com/maps-engine/ Google Maps Engine API Reference> for @mapsengine.layers.patch@.
+module Network.Google.Resource.MapsEngine.Layers.Patch
+    (
+    -- * REST Resource
+      LayersPatchResource
+
+    -- * Creating a Request
+    , layersPatch
+    , LayersPatch
+
+    -- * Request Lenses
+    , lppPayload
+    , lppId
+    ) where
+
+import           Network.Google.MapsEngine.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @mapsengine.layers.patch@ method which the
+-- 'LayersPatch' request conforms to.
+type LayersPatchResource =
+     "mapsengine" :>
+       "v1" :>
+         "layers" :>
+           Capture "id" Text :>
+             QueryParam "alt" AltJSON :>
+               ReqBody '[JSON] Layer :> Patch '[JSON] ()
+
+-- | Mutate a layer asset.
+--
+-- /See:/ 'layersPatch' smart constructor.
+data LayersPatch = LayersPatch
+    { _lppPayload :: !Layer
+    , _lppId      :: !Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'LayersPatch' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'lppPayload'
+--
+-- * 'lppId'
+layersPatch
+    :: Layer -- ^ 'lppPayload'
+    -> Text -- ^ 'lppId'
+    -> LayersPatch
+layersPatch pLppPayload_ pLppId_ =
+    LayersPatch
+    { _lppPayload = pLppPayload_
+    , _lppId = pLppId_
+    }
+
+-- | Multipart request metadata.
+lppPayload :: Lens' LayersPatch Layer
+lppPayload
+  = lens _lppPayload (\ s a -> s{_lppPayload = a})
+
+-- | The ID of the layer.
+lppId :: Lens' LayersPatch Text
+lppId = lens _lppId (\ s a -> s{_lppId = a})
+
+instance GoogleRequest LayersPatch where
+        type Rs LayersPatch = ()
+        requestClient LayersPatch{..}
+          = go _lppId (Just AltJSON) _lppPayload
+              mapsEngineService
+          where go
+                  = buildClient (Proxy :: Proxy LayersPatchResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/MapsEngine/Layers/Permissions/BatchDelete.hs b/gen/Network/Google/Resource/MapsEngine/Layers/Permissions/BatchDelete.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/MapsEngine/Layers/Permissions/BatchDelete.hs
@@ -0,0 +1,100 @@
+{-# LANGUAGE DataKinds          #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE FlexibleInstances  #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+{-# LANGUAGE TypeOperators      #-}
+
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
+
+-- |
+-- Module      : Network.Google.Resource.MapsEngine.Layers.Permissions.BatchDelete
+-- 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)
+--
+-- Remove permission entries from an already existing asset.
+--
+-- /See:/ <https://developers.google.com/maps-engine/ Google Maps Engine API Reference> for @mapsengine.layers.permissions.batchDelete@.
+module Network.Google.Resource.MapsEngine.Layers.Permissions.BatchDelete
+    (
+    -- * REST Resource
+      LayersPermissionsBatchDeleteResource
+
+    -- * Creating a Request
+    , layersPermissionsBatchDelete
+    , LayersPermissionsBatchDelete
+
+    -- * Request Lenses
+    , lpbdPayload
+    , lpbdId
+    ) where
+
+import           Network.Google.MapsEngine.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @mapsengine.layers.permissions.batchDelete@ method which the
+-- 'LayersPermissionsBatchDelete' request conforms to.
+type LayersPermissionsBatchDeleteResource =
+     "mapsengine" :>
+       "v1" :>
+         "layers" :>
+           Capture "id" Text :>
+             "permissions" :>
+               "batchDelete" :>
+                 QueryParam "alt" AltJSON :>
+                   ReqBody '[JSON] PermissionsBatchDeleteRequest :>
+                     Post '[JSON] PermissionsBatchDeleteResponse
+
+-- | Remove permission entries from an already existing asset.
+--
+-- /See:/ 'layersPermissionsBatchDelete' smart constructor.
+data LayersPermissionsBatchDelete = LayersPermissionsBatchDelete
+    { _lpbdPayload :: !PermissionsBatchDeleteRequest
+    , _lpbdId      :: !Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'LayersPermissionsBatchDelete' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'lpbdPayload'
+--
+-- * 'lpbdId'
+layersPermissionsBatchDelete
+    :: PermissionsBatchDeleteRequest -- ^ 'lpbdPayload'
+    -> Text -- ^ 'lpbdId'
+    -> LayersPermissionsBatchDelete
+layersPermissionsBatchDelete pLpbdPayload_ pLpbdId_ =
+    LayersPermissionsBatchDelete
+    { _lpbdPayload = pLpbdPayload_
+    , _lpbdId = pLpbdId_
+    }
+
+-- | Multipart request metadata.
+lpbdPayload :: Lens' LayersPermissionsBatchDelete PermissionsBatchDeleteRequest
+lpbdPayload
+  = lens _lpbdPayload (\ s a -> s{_lpbdPayload = a})
+
+-- | The ID of the asset from which permissions will be removed.
+lpbdId :: Lens' LayersPermissionsBatchDelete Text
+lpbdId = lens _lpbdId (\ s a -> s{_lpbdId = a})
+
+instance GoogleRequest LayersPermissionsBatchDelete
+         where
+        type Rs LayersPermissionsBatchDelete =
+             PermissionsBatchDeleteResponse
+        requestClient LayersPermissionsBatchDelete{..}
+          = go _lpbdId (Just AltJSON) _lpbdPayload
+              mapsEngineService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy LayersPermissionsBatchDeleteResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/MapsEngine/Layers/Permissions/BatchUpdate.hs b/gen/Network/Google/Resource/MapsEngine/Layers/Permissions/BatchUpdate.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/MapsEngine/Layers/Permissions/BatchUpdate.hs
@@ -0,0 +1,104 @@
+{-# 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.MapsEngine.Layers.Permissions.BatchUpdate
+-- Copyright   : (c) 2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Add or update permission entries to an already existing asset. An asset
+-- can hold up to 20 different permission entries. Each batchInsert request
+-- is atomic.
+--
+-- /See:/ <https://developers.google.com/maps-engine/ Google Maps Engine API Reference> for @mapsengine.layers.permissions.batchUpdate@.
+module Network.Google.Resource.MapsEngine.Layers.Permissions.BatchUpdate
+    (
+    -- * REST Resource
+      LayersPermissionsBatchUpdateResource
+
+    -- * Creating a Request
+    , layersPermissionsBatchUpdate
+    , LayersPermissionsBatchUpdate
+
+    -- * Request Lenses
+    , lpbuPayload
+    , lpbuId
+    ) where
+
+import           Network.Google.MapsEngine.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @mapsengine.layers.permissions.batchUpdate@ method which the
+-- 'LayersPermissionsBatchUpdate' request conforms to.
+type LayersPermissionsBatchUpdateResource =
+     "mapsengine" :>
+       "v1" :>
+         "layers" :>
+           Capture "id" Text :>
+             "permissions" :>
+               "batchUpdate" :>
+                 QueryParam "alt" AltJSON :>
+                   ReqBody '[JSON] PermissionsBatchUpdateRequest :>
+                     Post '[JSON] PermissionsBatchUpdateResponse
+
+-- | Add or update permission entries to an already existing asset. An asset
+-- can hold up to 20 different permission entries. Each batchInsert request
+-- is atomic.
+--
+-- /See:/ 'layersPermissionsBatchUpdate' smart constructor.
+data LayersPermissionsBatchUpdate = LayersPermissionsBatchUpdate
+    { _lpbuPayload :: !PermissionsBatchUpdateRequest
+    , _lpbuId      :: !Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'LayersPermissionsBatchUpdate' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'lpbuPayload'
+--
+-- * 'lpbuId'
+layersPermissionsBatchUpdate
+    :: PermissionsBatchUpdateRequest -- ^ 'lpbuPayload'
+    -> Text -- ^ 'lpbuId'
+    -> LayersPermissionsBatchUpdate
+layersPermissionsBatchUpdate pLpbuPayload_ pLpbuId_ =
+    LayersPermissionsBatchUpdate
+    { _lpbuPayload = pLpbuPayload_
+    , _lpbuId = pLpbuId_
+    }
+
+-- | Multipart request metadata.
+lpbuPayload :: Lens' LayersPermissionsBatchUpdate PermissionsBatchUpdateRequest
+lpbuPayload
+  = lens _lpbuPayload (\ s a -> s{_lpbuPayload = a})
+
+-- | The ID of the asset to which permissions will be added.
+lpbuId :: Lens' LayersPermissionsBatchUpdate Text
+lpbuId = lens _lpbuId (\ s a -> s{_lpbuId = a})
+
+instance GoogleRequest LayersPermissionsBatchUpdate
+         where
+        type Rs LayersPermissionsBatchUpdate =
+             PermissionsBatchUpdateResponse
+        requestClient LayersPermissionsBatchUpdate{..}
+          = go _lpbuId (Just AltJSON) _lpbuPayload
+              mapsEngineService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy LayersPermissionsBatchUpdateResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/MapsEngine/Layers/Permissions/List.hs b/gen/Network/Google/Resource/MapsEngine/Layers/Permissions/List.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/MapsEngine/Layers/Permissions/List.hs
@@ -0,0 +1,85 @@
+{-# LANGUAGE DataKinds          #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE FlexibleInstances  #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+{-# LANGUAGE TypeOperators      #-}
+
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
+
+-- |
+-- Module      : Network.Google.Resource.MapsEngine.Layers.Permissions.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)
+--
+-- Return all of the permissions for the specified asset.
+--
+-- /See:/ <https://developers.google.com/maps-engine/ Google Maps Engine API Reference> for @mapsengine.layers.permissions.list@.
+module Network.Google.Resource.MapsEngine.Layers.Permissions.List
+    (
+    -- * REST Resource
+      LayersPermissionsListResource
+
+    -- * Creating a Request
+    , layersPermissionsList
+    , LayersPermissionsList
+
+    -- * Request Lenses
+    , lplId
+    ) where
+
+import           Network.Google.MapsEngine.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @mapsengine.layers.permissions.list@ method which the
+-- 'LayersPermissionsList' request conforms to.
+type LayersPermissionsListResource =
+     "mapsengine" :>
+       "v1" :>
+         "layers" :>
+           Capture "id" Text :>
+             "permissions" :>
+               QueryParam "alt" AltJSON :>
+                 Get '[JSON] PermissionsListResponse
+
+-- | Return all of the permissions for the specified asset.
+--
+-- /See:/ 'layersPermissionsList' smart constructor.
+newtype LayersPermissionsList = LayersPermissionsList
+    { _lplId :: Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'LayersPermissionsList' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'lplId'
+layersPermissionsList
+    :: Text -- ^ 'lplId'
+    -> LayersPermissionsList
+layersPermissionsList pLplId_ =
+    LayersPermissionsList
+    { _lplId = pLplId_
+    }
+
+-- | The ID of the asset whose permissions will be listed.
+lplId :: Lens' LayersPermissionsList Text
+lplId = lens _lplId (\ s a -> s{_lplId = a})
+
+instance GoogleRequest LayersPermissionsList where
+        type Rs LayersPermissionsList =
+             PermissionsListResponse
+        requestClient LayersPermissionsList{..}
+          = go _lplId (Just AltJSON) mapsEngineService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy LayersPermissionsListResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/MapsEngine/Layers/Process.hs b/gen/Network/Google/Resource/MapsEngine/Layers/Process.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/MapsEngine/Layers/Process.hs
@@ -0,0 +1,83 @@
+{-# LANGUAGE DataKinds          #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE FlexibleInstances  #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+{-# LANGUAGE TypeOperators      #-}
+
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
+
+-- |
+-- Module      : Network.Google.Resource.MapsEngine.Layers.Process
+-- 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)
+--
+-- Process a layer asset.
+--
+-- /See:/ <https://developers.google.com/maps-engine/ Google Maps Engine API Reference> for @mapsengine.layers.process@.
+module Network.Google.Resource.MapsEngine.Layers.Process
+    (
+    -- * REST Resource
+      LayersProcessResource
+
+    -- * Creating a Request
+    , layersProcess
+    , LayersProcess
+
+    -- * Request Lenses
+    , lpsId
+    ) where
+
+import           Network.Google.MapsEngine.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @mapsengine.layers.process@ method which the
+-- 'LayersProcess' request conforms to.
+type LayersProcessResource =
+     "mapsengine" :>
+       "v1" :>
+         "layers" :>
+           Capture "id" Text :>
+             "process" :>
+               QueryParam "alt" AltJSON :>
+                 Post '[JSON] ProcessResponse
+
+-- | Process a layer asset.
+--
+-- /See:/ 'layersProcess' smart constructor.
+newtype LayersProcess = LayersProcess
+    { _lpsId :: Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'LayersProcess' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'lpsId'
+layersProcess
+    :: Text -- ^ 'lpsId'
+    -> LayersProcess
+layersProcess pLpsId_ =
+    LayersProcess
+    { _lpsId = pLpsId_
+    }
+
+-- | The ID of the layer.
+lpsId :: Lens' LayersProcess Text
+lpsId = lens _lpsId (\ s a -> s{_lpsId = a})
+
+instance GoogleRequest LayersProcess where
+        type Rs LayersProcess = ProcessResponse
+        requestClient LayersProcess{..}
+          = go _lpsId (Just AltJSON) mapsEngineService
+          where go
+                  = buildClient (Proxy :: Proxy LayersProcessResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/MapsEngine/Layers/Publish.hs b/gen/Network/Google/Resource/MapsEngine/Layers/Publish.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/MapsEngine/Layers/Publish.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.MapsEngine.Layers.Publish
+-- 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)
+--
+-- Publish a layer asset.
+--
+-- /See:/ <https://developers.google.com/maps-engine/ Google Maps Engine API Reference> for @mapsengine.layers.publish@.
+module Network.Google.Resource.MapsEngine.Layers.Publish
+    (
+    -- * REST Resource
+      LayersPublishResource
+
+    -- * Creating a Request
+    , layersPublish
+    , LayersPublish
+
+    -- * Request Lenses
+    , lpForce
+    , lpId
+    ) where
+
+import           Network.Google.MapsEngine.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @mapsengine.layers.publish@ method which the
+-- 'LayersPublish' request conforms to.
+type LayersPublishResource =
+     "mapsengine" :>
+       "v1" :>
+         "layers" :>
+           Capture "id" Text :>
+             "publish" :>
+               QueryParam "force" Bool :>
+                 QueryParam "alt" AltJSON :>
+                   Post '[JSON] PublishResponse
+
+-- | Publish a layer asset.
+--
+-- /See:/ 'layersPublish' smart constructor.
+data LayersPublish = LayersPublish
+    { _lpForce :: !(Maybe Bool)
+    , _lpId    :: !Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'LayersPublish' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'lpForce'
+--
+-- * 'lpId'
+layersPublish
+    :: Text -- ^ 'lpId'
+    -> LayersPublish
+layersPublish pLpId_ =
+    LayersPublish
+    { _lpForce = Nothing
+    , _lpId = pLpId_
+    }
+
+-- | If set to true, the API will allow publication of the layer even if
+-- it\'s out of date. If not true, you\'ll need to reprocess any
+-- out-of-date layer before publishing.
+lpForce :: Lens' LayersPublish (Maybe Bool)
+lpForce = lens _lpForce (\ s a -> s{_lpForce = a})
+
+-- | The ID of the layer.
+lpId :: Lens' LayersPublish Text
+lpId = lens _lpId (\ s a -> s{_lpId = a})
+
+instance GoogleRequest LayersPublish where
+        type Rs LayersPublish = PublishResponse
+        requestClient LayersPublish{..}
+          = go _lpId _lpForce (Just AltJSON) mapsEngineService
+          where go
+                  = buildClient (Proxy :: Proxy LayersPublishResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/MapsEngine/Layers/UnPublish.hs b/gen/Network/Google/Resource/MapsEngine/Layers/UnPublish.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/MapsEngine/Layers/UnPublish.hs
@@ -0,0 +1,84 @@
+{-# LANGUAGE DataKinds          #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE FlexibleInstances  #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+{-# LANGUAGE TypeOperators      #-}
+
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
+
+-- |
+-- Module      : Network.Google.Resource.MapsEngine.Layers.UnPublish
+-- 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)
+--
+-- Unpublish a layer asset.
+--
+-- /See:/ <https://developers.google.com/maps-engine/ Google Maps Engine API Reference> for @mapsengine.layers.unpublish@.
+module Network.Google.Resource.MapsEngine.Layers.UnPublish
+    (
+    -- * REST Resource
+      LayersUnPublishResource
+
+    -- * Creating a Request
+    , layersUnPublish
+    , LayersUnPublish
+
+    -- * Request Lenses
+    , lupId
+    ) where
+
+import           Network.Google.MapsEngine.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @mapsengine.layers.unpublish@ method which the
+-- 'LayersUnPublish' request conforms to.
+type LayersUnPublishResource =
+     "mapsengine" :>
+       "v1" :>
+         "layers" :>
+           Capture "id" Text :>
+             "unpublish" :>
+               QueryParam "alt" AltJSON :>
+                 Post '[JSON] PublishResponse
+
+-- | Unpublish a layer asset.
+--
+-- /See:/ 'layersUnPublish' smart constructor.
+newtype LayersUnPublish = LayersUnPublish
+    { _lupId :: Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'LayersUnPublish' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'lupId'
+layersUnPublish
+    :: Text -- ^ 'lupId'
+    -> LayersUnPublish
+layersUnPublish pLupId_ =
+    LayersUnPublish
+    { _lupId = pLupId_
+    }
+
+-- | The ID of the layer.
+lupId :: Lens' LayersUnPublish Text
+lupId = lens _lupId (\ s a -> s{_lupId = a})
+
+instance GoogleRequest LayersUnPublish where
+        type Rs LayersUnPublish = PublishResponse
+        requestClient LayersUnPublish{..}
+          = go _lupId (Just AltJSON) mapsEngineService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy LayersUnPublishResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/MapsEngine/Maps/Create.hs b/gen/Network/Google/Resource/MapsEngine/Maps/Create.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/MapsEngine/Maps/Create.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.MapsEngine.Maps.Create
+-- Copyright   : (c) 2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Create a map asset.
+--
+-- /See:/ <https://developers.google.com/maps-engine/ Google Maps Engine API Reference> for @mapsengine.maps.create@.
+module Network.Google.Resource.MapsEngine.Maps.Create
+    (
+    -- * REST Resource
+      MapsCreateResource
+
+    -- * Creating a Request
+    , mapsCreate
+    , MapsCreate
+
+    -- * Request Lenses
+    , mcPayload
+    ) where
+
+import           Network.Google.MapsEngine.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @mapsengine.maps.create@ method which the
+-- 'MapsCreate' request conforms to.
+type MapsCreateResource =
+     "mapsengine" :>
+       "v1" :>
+         "maps" :>
+           QueryParam "alt" AltJSON :>
+             ReqBody '[JSON] Map :> Post '[JSON] Map
+
+-- | Create a map asset.
+--
+-- /See:/ 'mapsCreate' smart constructor.
+newtype MapsCreate = MapsCreate
+    { _mcPayload :: Map
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'MapsCreate' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'mcPayload'
+mapsCreate
+    :: Map -- ^ 'mcPayload'
+    -> MapsCreate
+mapsCreate pMcPayload_ =
+    MapsCreate
+    { _mcPayload = pMcPayload_
+    }
+
+-- | Multipart request metadata.
+mcPayload :: Lens' MapsCreate Map
+mcPayload
+  = lens _mcPayload (\ s a -> s{_mcPayload = a})
+
+instance GoogleRequest MapsCreate where
+        type Rs MapsCreate = Map
+        requestClient MapsCreate{..}
+          = go (Just AltJSON) _mcPayload mapsEngineService
+          where go
+                  = buildClient (Proxy :: Proxy MapsCreateResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/MapsEngine/Maps/Delete.hs b/gen/Network/Google/Resource/MapsEngine/Maps/Delete.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/MapsEngine/Maps/Delete.hs
@@ -0,0 +1,83 @@
+{-# LANGUAGE DataKinds          #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE FlexibleInstances  #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+{-# LANGUAGE TypeOperators      #-}
+
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
+
+-- |
+-- Module      : Network.Google.Resource.MapsEngine.Maps.Delete
+-- Copyright   : (c) 2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Delete a map.
+--
+-- /See:/ <https://developers.google.com/maps-engine/ Google Maps Engine API Reference> for @mapsengine.maps.delete@.
+module Network.Google.Resource.MapsEngine.Maps.Delete
+    (
+    -- * REST Resource
+      MapsDeleteResource
+
+    -- * Creating a Request
+    , mapsDelete
+    , MapsDelete
+
+    -- * Request Lenses
+    , mdId
+    ) where
+
+import           Network.Google.MapsEngine.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @mapsengine.maps.delete@ method which the
+-- 'MapsDelete' request conforms to.
+type MapsDeleteResource =
+     "mapsengine" :>
+       "v1" :>
+         "maps" :>
+           Capture "id" Text :>
+             QueryParam "alt" AltJSON :> Delete '[JSON] ()
+
+-- | Delete a map.
+--
+-- /See:/ 'mapsDelete' smart constructor.
+newtype MapsDelete = MapsDelete
+    { _mdId :: Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'MapsDelete' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'mdId'
+mapsDelete
+    :: Text -- ^ 'mdId'
+    -> MapsDelete
+mapsDelete pMdId_ =
+    MapsDelete
+    { _mdId = pMdId_
+    }
+
+-- | The ID of the map. Only the map creator or project owner are permitted
+-- to delete. If the map is published the request will fail. Unpublish the
+-- map prior to deleting.
+mdId :: Lens' MapsDelete Text
+mdId = lens _mdId (\ s a -> s{_mdId = a})
+
+instance GoogleRequest MapsDelete where
+        type Rs MapsDelete = ()
+        requestClient MapsDelete{..}
+          = go _mdId (Just AltJSON) mapsEngineService
+          where go
+                  = buildClient (Proxy :: Proxy MapsDeleteResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/MapsEngine/Maps/Get.hs b/gen/Network/Google/Resource/MapsEngine/Maps/Get.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/MapsEngine/Maps/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.MapsEngine.Maps.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)
+--
+-- Return metadata for a particular map.
+--
+-- /See:/ <https://developers.google.com/maps-engine/ Google Maps Engine API Reference> for @mapsengine.maps.get@.
+module Network.Google.Resource.MapsEngine.Maps.Get
+    (
+    -- * REST Resource
+      MapsGetResource
+
+    -- * Creating a Request
+    , mapsGet
+    , MapsGet
+
+    -- * Request Lenses
+    , mgVersion
+    , mgId
+    ) where
+
+import           Network.Google.MapsEngine.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @mapsengine.maps.get@ method which the
+-- 'MapsGet' request conforms to.
+type MapsGetResource =
+     "mapsengine" :>
+       "v1" :>
+         "maps" :>
+           Capture "id" Text :>
+             QueryParam "version" MapsGetVersion :>
+               QueryParam "alt" AltJSON :> Get '[JSON] Map
+
+-- | Return metadata for a particular map.
+--
+-- /See:/ 'mapsGet' smart constructor.
+data MapsGet = MapsGet
+    { _mgVersion :: !(Maybe MapsGetVersion)
+    , _mgId      :: !Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'MapsGet' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'mgVersion'
+--
+-- * 'mgId'
+mapsGet
+    :: Text -- ^ 'mgId'
+    -> MapsGet
+mapsGet pMgId_ =
+    MapsGet
+    { _mgVersion = Nothing
+    , _mgId = pMgId_
+    }
+
+-- | Deprecated: The version parameter indicates which version of the map
+-- should be returned. When version is set to published, the published
+-- version of the map will be returned. Please use the maps.getPublished
+-- endpoint instead.
+mgVersion :: Lens' MapsGet (Maybe MapsGetVersion)
+mgVersion
+  = lens _mgVersion (\ s a -> s{_mgVersion = a})
+
+-- | The ID of the map.
+mgId :: Lens' MapsGet Text
+mgId = lens _mgId (\ s a -> s{_mgId = a})
+
+instance GoogleRequest MapsGet where
+        type Rs MapsGet = Map
+        requestClient MapsGet{..}
+          = go _mgId _mgVersion (Just AltJSON)
+              mapsEngineService
+          where go
+                  = buildClient (Proxy :: Proxy MapsGetResource) mempty
diff --git a/gen/Network/Google/Resource/MapsEngine/Maps/GetPublished.hs b/gen/Network/Google/Resource/MapsEngine/Maps/GetPublished.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/MapsEngine/Maps/GetPublished.hs
@@ -0,0 +1,83 @@
+{-# LANGUAGE DataKinds          #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE FlexibleInstances  #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+{-# LANGUAGE TypeOperators      #-}
+
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
+
+-- |
+-- Module      : Network.Google.Resource.MapsEngine.Maps.GetPublished
+-- 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)
+--
+-- Return the published metadata for a particular map.
+--
+-- /See:/ <https://developers.google.com/maps-engine/ Google Maps Engine API Reference> for @mapsengine.maps.getPublished@.
+module Network.Google.Resource.MapsEngine.Maps.GetPublished
+    (
+    -- * REST Resource
+      MapsGetPublishedResource
+
+    -- * Creating a Request
+    , mapsGetPublished
+    , MapsGetPublished
+
+    -- * Request Lenses
+    , mgpId
+    ) where
+
+import           Network.Google.MapsEngine.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @mapsengine.maps.getPublished@ method which the
+-- 'MapsGetPublished' request conforms to.
+type MapsGetPublishedResource =
+     "mapsengine" :>
+       "v1" :>
+         "maps" :>
+           Capture "id" Text :>
+             "published" :>
+               QueryParam "alt" AltJSON :> Get '[JSON] PublishedMap
+
+-- | Return the published metadata for a particular map.
+--
+-- /See:/ 'mapsGetPublished' smart constructor.
+newtype MapsGetPublished = MapsGetPublished
+    { _mgpId :: Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'MapsGetPublished' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'mgpId'
+mapsGetPublished
+    :: Text -- ^ 'mgpId'
+    -> MapsGetPublished
+mapsGetPublished pMgpId_ =
+    MapsGetPublished
+    { _mgpId = pMgpId_
+    }
+
+-- | The ID of the map.
+mgpId :: Lens' MapsGetPublished Text
+mgpId = lens _mgpId (\ s a -> s{_mgpId = a})
+
+instance GoogleRequest MapsGetPublished where
+        type Rs MapsGetPublished = PublishedMap
+        requestClient MapsGetPublished{..}
+          = go _mgpId (Just AltJSON) mapsEngineService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy MapsGetPublishedResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/MapsEngine/Maps/List.hs b/gen/Network/Google/Resource/MapsEngine/Maps/List.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/MapsEngine/Maps/List.hs
@@ -0,0 +1,248 @@
+{-# 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.MapsEngine.Maps.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)
+--
+-- Return all maps readable by the current user.
+--
+-- /See:/ <https://developers.google.com/maps-engine/ Google Maps Engine API Reference> for @mapsengine.maps.list@.
+module Network.Google.Resource.MapsEngine.Maps.List
+    (
+    -- * REST Resource
+      MapsListResource
+
+    -- * Creating a Request
+    , mapsList
+    , MapsList
+
+    -- * Request Lenses
+    , mlCreatedAfter
+    , mlCreatorEmail
+    , mlRole
+    , mlBbox
+    , mlProcessingStatus
+    , mlModifiedAfter
+    , mlModifiedBefore
+    , mlPageToken
+    , mlProjectId
+    , mlSearch
+    , mlMaxResults
+    , mlTags
+    , mlCreatedBefore
+    ) where
+
+import           Network.Google.MapsEngine.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @mapsengine.maps.list@ method which the
+-- 'MapsList' request conforms to.
+type MapsListResource =
+     "mapsengine" :>
+       "v1" :>
+         "maps" :>
+           QueryParam "createdAfter" DateTime' :>
+             QueryParam "creatorEmail" Text :>
+               QueryParam "role" MapsListRole :>
+                 QueryParam "bbox" Text :>
+                   QueryParam "processingStatus"
+                     MapsListProcessingStatus
+                     :>
+                     QueryParam "modifiedAfter" DateTime' :>
+                       QueryParam "modifiedBefore" DateTime' :>
+                         QueryParam "pageToken" Text :>
+                           QueryParam "projectId" Text :>
+                             QueryParam "search" Text :>
+                               QueryParam "maxResults" (Textual Word32) :>
+                                 QueryParam "tags" Text :>
+                                   QueryParam "createdBefore" DateTime' :>
+                                     QueryParam "alt" AltJSON :>
+                                       Get '[JSON] MapsListResponse
+
+-- | Return all maps readable by the current user.
+--
+-- /See:/ 'mapsList' smart constructor.
+data MapsList = MapsList
+    { _mlCreatedAfter     :: !(Maybe DateTime')
+    , _mlCreatorEmail     :: !(Maybe Text)
+    , _mlRole             :: !(Maybe MapsListRole)
+    , _mlBbox             :: !(Maybe Text)
+    , _mlProcessingStatus :: !(Maybe MapsListProcessingStatus)
+    , _mlModifiedAfter    :: !(Maybe DateTime')
+    , _mlModifiedBefore   :: !(Maybe DateTime')
+    , _mlPageToken        :: !(Maybe Text)
+    , _mlProjectId        :: !(Maybe Text)
+    , _mlSearch           :: !(Maybe Text)
+    , _mlMaxResults       :: !(Maybe (Textual Word32))
+    , _mlTags             :: !(Maybe Text)
+    , _mlCreatedBefore    :: !(Maybe DateTime')
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'MapsList' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'mlCreatedAfter'
+--
+-- * 'mlCreatorEmail'
+--
+-- * 'mlRole'
+--
+-- * 'mlBbox'
+--
+-- * 'mlProcessingStatus'
+--
+-- * 'mlModifiedAfter'
+--
+-- * 'mlModifiedBefore'
+--
+-- * 'mlPageToken'
+--
+-- * 'mlProjectId'
+--
+-- * 'mlSearch'
+--
+-- * 'mlMaxResults'
+--
+-- * 'mlTags'
+--
+-- * 'mlCreatedBefore'
+mapsList
+    :: MapsList
+mapsList =
+    MapsList
+    { _mlCreatedAfter = Nothing
+    , _mlCreatorEmail = Nothing
+    , _mlRole = Nothing
+    , _mlBbox = Nothing
+    , _mlProcessingStatus = Nothing
+    , _mlModifiedAfter = Nothing
+    , _mlModifiedBefore = Nothing
+    , _mlPageToken = Nothing
+    , _mlProjectId = Nothing
+    , _mlSearch = Nothing
+    , _mlMaxResults = Nothing
+    , _mlTags = Nothing
+    , _mlCreatedBefore = Nothing
+    }
+
+-- | An RFC 3339 formatted date-time value (e.g. 1970-01-01T00:00:00Z).
+-- Returned assets will have been created at or after this time.
+mlCreatedAfter :: Lens' MapsList (Maybe UTCTime)
+mlCreatedAfter
+  = lens _mlCreatedAfter
+      (\ s a -> s{_mlCreatedAfter = a})
+      . mapping _DateTime
+
+-- | An email address representing a user. Returned assets that have been
+-- created by the user associated with the provided email address.
+mlCreatorEmail :: Lens' MapsList (Maybe Text)
+mlCreatorEmail
+  = lens _mlCreatorEmail
+      (\ s a -> s{_mlCreatorEmail = a})
+
+-- | The role parameter indicates that the response should only contain
+-- assets where the current user has the specified level of access.
+mlRole :: Lens' MapsList (Maybe MapsListRole)
+mlRole = lens _mlRole (\ s a -> s{_mlRole = a})
+
+-- | A bounding box, expressed as \"west,south,east,north\". If set, only
+-- assets which intersect this bounding box will be returned.
+mlBbox :: Lens' MapsList (Maybe Text)
+mlBbox = lens _mlBbox (\ s a -> s{_mlBbox = a})
+
+mlProcessingStatus :: Lens' MapsList (Maybe MapsListProcessingStatus)
+mlProcessingStatus
+  = lens _mlProcessingStatus
+      (\ s a -> s{_mlProcessingStatus = a})
+
+-- | An RFC 3339 formatted date-time value (e.g. 1970-01-01T00:00:00Z).
+-- Returned assets will have been modified at or after this time.
+mlModifiedAfter :: Lens' MapsList (Maybe UTCTime)
+mlModifiedAfter
+  = lens _mlModifiedAfter
+      (\ s a -> s{_mlModifiedAfter = a})
+      . mapping _DateTime
+
+-- | An RFC 3339 formatted date-time value (e.g. 1970-01-01T00:00:00Z).
+-- Returned assets will have been modified at or before this time.
+mlModifiedBefore :: Lens' MapsList (Maybe UTCTime)
+mlModifiedBefore
+  = lens _mlModifiedBefore
+      (\ s a -> s{_mlModifiedBefore = a})
+      . mapping _DateTime
+
+-- | The continuation token, used to page through large result sets. To get
+-- the next page of results, set this parameter to the value of
+-- nextPageToken from the previous response.
+mlPageToken :: Lens' MapsList (Maybe Text)
+mlPageToken
+  = lens _mlPageToken (\ s a -> s{_mlPageToken = a})
+
+-- | The ID of a Maps Engine project, used to filter the response. To list
+-- all available projects with their IDs, send a Projects: list request.
+-- You can also find your project ID as the value of the DashboardPlace:cid
+-- URL parameter when signed in to mapsengine.google.com.
+mlProjectId :: Lens' MapsList (Maybe Text)
+mlProjectId
+  = lens _mlProjectId (\ s a -> s{_mlProjectId = a})
+
+-- | An unstructured search string used to filter the set of results based on
+-- asset metadata.
+mlSearch :: Lens' MapsList (Maybe Text)
+mlSearch = lens _mlSearch (\ s a -> s{_mlSearch = a})
+
+-- | The maximum number of items to include in a single response page. The
+-- maximum supported value is 100.
+mlMaxResults :: Lens' MapsList (Maybe Word32)
+mlMaxResults
+  = lens _mlMaxResults (\ s a -> s{_mlMaxResults = a})
+      . mapping _Coerce
+
+-- | A comma separated list of tags. Returned assets will contain all the
+-- tags from the list.
+mlTags :: Lens' MapsList (Maybe Text)
+mlTags = lens _mlTags (\ s a -> s{_mlTags = a})
+
+-- | An RFC 3339 formatted date-time value (e.g. 1970-01-01T00:00:00Z).
+-- Returned assets will have been created at or before this time.
+mlCreatedBefore :: Lens' MapsList (Maybe UTCTime)
+mlCreatedBefore
+  = lens _mlCreatedBefore
+      (\ s a -> s{_mlCreatedBefore = a})
+      . mapping _DateTime
+
+instance GoogleRequest MapsList where
+        type Rs MapsList = MapsListResponse
+        requestClient MapsList{..}
+          = go _mlCreatedAfter _mlCreatorEmail _mlRole _mlBbox
+              _mlProcessingStatus
+              _mlModifiedAfter
+              _mlModifiedBefore
+              _mlPageToken
+              _mlProjectId
+              _mlSearch
+              _mlMaxResults
+              _mlTags
+              _mlCreatedBefore
+              (Just AltJSON)
+              mapsEngineService
+          where go
+                  = buildClient (Proxy :: Proxy MapsListResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/MapsEngine/Maps/ListPublished.hs b/gen/Network/Google/Resource/MapsEngine/Maps/ListPublished.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/MapsEngine/Maps/ListPublished.hs
@@ -0,0 +1,116 @@
+{-# LANGUAGE DataKinds          #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE FlexibleInstances  #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+{-# LANGUAGE TypeOperators      #-}
+
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
+
+-- |
+-- Module      : Network.Google.Resource.MapsEngine.Maps.ListPublished
+-- 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)
+--
+-- Return all published maps readable by the current user.
+--
+-- /See:/ <https://developers.google.com/maps-engine/ Google Maps Engine API Reference> for @mapsengine.maps.listPublished@.
+module Network.Google.Resource.MapsEngine.Maps.ListPublished
+    (
+    -- * REST Resource
+      MapsListPublishedResource
+
+    -- * Creating a Request
+    , mapsListPublished
+    , MapsListPublished
+
+    -- * Request Lenses
+    , mlpPageToken
+    , mlpProjectId
+    , mlpMaxResults
+    ) where
+
+import           Network.Google.MapsEngine.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @mapsengine.maps.listPublished@ method which the
+-- 'MapsListPublished' request conforms to.
+type MapsListPublishedResource =
+     "mapsengine" :>
+       "v1" :>
+         "maps" :>
+           "published" :>
+             QueryParam "pageToken" Text :>
+               QueryParam "projectId" Text :>
+                 QueryParam "maxResults" (Textual Word32) :>
+                   QueryParam "alt" AltJSON :>
+                     Get '[JSON] PublishedMapsListResponse
+
+-- | Return all published maps readable by the current user.
+--
+-- /See:/ 'mapsListPublished' smart constructor.
+data MapsListPublished = MapsListPublished
+    { _mlpPageToken  :: !(Maybe Text)
+    , _mlpProjectId  :: !(Maybe Text)
+    , _mlpMaxResults :: !(Maybe (Textual Word32))
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'MapsListPublished' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'mlpPageToken'
+--
+-- * 'mlpProjectId'
+--
+-- * 'mlpMaxResults'
+mapsListPublished
+    :: MapsListPublished
+mapsListPublished =
+    MapsListPublished
+    { _mlpPageToken = Nothing
+    , _mlpProjectId = Nothing
+    , _mlpMaxResults = Nothing
+    }
+
+-- | The continuation token, used to page through large result sets. To get
+-- the next page of results, set this parameter to the value of
+-- nextPageToken from the previous response.
+mlpPageToken :: Lens' MapsListPublished (Maybe Text)
+mlpPageToken
+  = lens _mlpPageToken (\ s a -> s{_mlpPageToken = a})
+
+-- | The ID of a Maps Engine project, used to filter the response. To list
+-- all available projects with their IDs, send a Projects: list request.
+-- You can also find your project ID as the value of the DashboardPlace:cid
+-- URL parameter when signed in to mapsengine.google.com.
+mlpProjectId :: Lens' MapsListPublished (Maybe Text)
+mlpProjectId
+  = lens _mlpProjectId (\ s a -> s{_mlpProjectId = a})
+
+-- | The maximum number of items to include in a single response page. The
+-- maximum supported value is 100.
+mlpMaxResults :: Lens' MapsListPublished (Maybe Word32)
+mlpMaxResults
+  = lens _mlpMaxResults
+      (\ s a -> s{_mlpMaxResults = a})
+      . mapping _Coerce
+
+instance GoogleRequest MapsListPublished where
+        type Rs MapsListPublished = PublishedMapsListResponse
+        requestClient MapsListPublished{..}
+          = go _mlpPageToken _mlpProjectId _mlpMaxResults
+              (Just AltJSON)
+              mapsEngineService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy MapsListPublishedResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/MapsEngine/Maps/Patch.hs b/gen/Network/Google/Resource/MapsEngine/Maps/Patch.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/MapsEngine/Maps/Patch.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.MapsEngine.Maps.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)
+--
+-- Mutate a map asset.
+--
+-- /See:/ <https://developers.google.com/maps-engine/ Google Maps Engine API Reference> for @mapsengine.maps.patch@.
+module Network.Google.Resource.MapsEngine.Maps.Patch
+    (
+    -- * REST Resource
+      MapsPatchResource
+
+    -- * Creating a Request
+    , mapsPatch
+    , MapsPatch
+
+    -- * Request Lenses
+    , mpPayload
+    , mpId
+    ) where
+
+import           Network.Google.MapsEngine.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @mapsengine.maps.patch@ method which the
+-- 'MapsPatch' request conforms to.
+type MapsPatchResource =
+     "mapsengine" :>
+       "v1" :>
+         "maps" :>
+           Capture "id" Text :>
+             QueryParam "alt" AltJSON :>
+               ReqBody '[JSON] Map :> Patch '[JSON] ()
+
+-- | Mutate a map asset.
+--
+-- /See:/ 'mapsPatch' smart constructor.
+data MapsPatch = MapsPatch
+    { _mpPayload :: !Map
+    , _mpId      :: !Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'MapsPatch' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'mpPayload'
+--
+-- * 'mpId'
+mapsPatch
+    :: Map -- ^ 'mpPayload'
+    -> Text -- ^ 'mpId'
+    -> MapsPatch
+mapsPatch pMpPayload_ pMpId_ =
+    MapsPatch
+    { _mpPayload = pMpPayload_
+    , _mpId = pMpId_
+    }
+
+-- | Multipart request metadata.
+mpPayload :: Lens' MapsPatch Map
+mpPayload
+  = lens _mpPayload (\ s a -> s{_mpPayload = a})
+
+-- | The ID of the map.
+mpId :: Lens' MapsPatch Text
+mpId = lens _mpId (\ s a -> s{_mpId = a})
+
+instance GoogleRequest MapsPatch where
+        type Rs MapsPatch = ()
+        requestClient MapsPatch{..}
+          = go _mpId (Just AltJSON) _mpPayload
+              mapsEngineService
+          where go
+                  = buildClient (Proxy :: Proxy MapsPatchResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/MapsEngine/Maps/Permissions/BatchDelete.hs b/gen/Network/Google/Resource/MapsEngine/Maps/Permissions/BatchDelete.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/MapsEngine/Maps/Permissions/BatchDelete.hs
@@ -0,0 +1,100 @@
+{-# LANGUAGE DataKinds          #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE FlexibleInstances  #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+{-# LANGUAGE TypeOperators      #-}
+
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
+
+-- |
+-- Module      : Network.Google.Resource.MapsEngine.Maps.Permissions.BatchDelete
+-- 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)
+--
+-- Remove permission entries from an already existing asset.
+--
+-- /See:/ <https://developers.google.com/maps-engine/ Google Maps Engine API Reference> for @mapsengine.maps.permissions.batchDelete@.
+module Network.Google.Resource.MapsEngine.Maps.Permissions.BatchDelete
+    (
+    -- * REST Resource
+      MapsPermissionsBatchDeleteResource
+
+    -- * Creating a Request
+    , mapsPermissionsBatchDelete
+    , MapsPermissionsBatchDelete
+
+    -- * Request Lenses
+    , mpbdPayload
+    , mpbdId
+    ) where
+
+import           Network.Google.MapsEngine.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @mapsengine.maps.permissions.batchDelete@ method which the
+-- 'MapsPermissionsBatchDelete' request conforms to.
+type MapsPermissionsBatchDeleteResource =
+     "mapsengine" :>
+       "v1" :>
+         "maps" :>
+           Capture "id" Text :>
+             "permissions" :>
+               "batchDelete" :>
+                 QueryParam "alt" AltJSON :>
+                   ReqBody '[JSON] PermissionsBatchDeleteRequest :>
+                     Post '[JSON] PermissionsBatchDeleteResponse
+
+-- | Remove permission entries from an already existing asset.
+--
+-- /See:/ 'mapsPermissionsBatchDelete' smart constructor.
+data MapsPermissionsBatchDelete = MapsPermissionsBatchDelete
+    { _mpbdPayload :: !PermissionsBatchDeleteRequest
+    , _mpbdId      :: !Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'MapsPermissionsBatchDelete' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'mpbdPayload'
+--
+-- * 'mpbdId'
+mapsPermissionsBatchDelete
+    :: PermissionsBatchDeleteRequest -- ^ 'mpbdPayload'
+    -> Text -- ^ 'mpbdId'
+    -> MapsPermissionsBatchDelete
+mapsPermissionsBatchDelete pMpbdPayload_ pMpbdId_ =
+    MapsPermissionsBatchDelete
+    { _mpbdPayload = pMpbdPayload_
+    , _mpbdId = pMpbdId_
+    }
+
+-- | Multipart request metadata.
+mpbdPayload :: Lens' MapsPermissionsBatchDelete PermissionsBatchDeleteRequest
+mpbdPayload
+  = lens _mpbdPayload (\ s a -> s{_mpbdPayload = a})
+
+-- | The ID of the asset from which permissions will be removed.
+mpbdId :: Lens' MapsPermissionsBatchDelete Text
+mpbdId = lens _mpbdId (\ s a -> s{_mpbdId = a})
+
+instance GoogleRequest MapsPermissionsBatchDelete
+         where
+        type Rs MapsPermissionsBatchDelete =
+             PermissionsBatchDeleteResponse
+        requestClient MapsPermissionsBatchDelete{..}
+          = go _mpbdId (Just AltJSON) _mpbdPayload
+              mapsEngineService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy MapsPermissionsBatchDeleteResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/MapsEngine/Maps/Permissions/BatchUpdate.hs b/gen/Network/Google/Resource/MapsEngine/Maps/Permissions/BatchUpdate.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/MapsEngine/Maps/Permissions/BatchUpdate.hs
@@ -0,0 +1,104 @@
+{-# 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.MapsEngine.Maps.Permissions.BatchUpdate
+-- Copyright   : (c) 2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Add or update permission entries to an already existing asset. An asset
+-- can hold up to 20 different permission entries. Each batchInsert request
+-- is atomic.
+--
+-- /See:/ <https://developers.google.com/maps-engine/ Google Maps Engine API Reference> for @mapsengine.maps.permissions.batchUpdate@.
+module Network.Google.Resource.MapsEngine.Maps.Permissions.BatchUpdate
+    (
+    -- * REST Resource
+      MapsPermissionsBatchUpdateResource
+
+    -- * Creating a Request
+    , mapsPermissionsBatchUpdate
+    , MapsPermissionsBatchUpdate
+
+    -- * Request Lenses
+    , mpbuPayload
+    , mpbuId
+    ) where
+
+import           Network.Google.MapsEngine.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @mapsengine.maps.permissions.batchUpdate@ method which the
+-- 'MapsPermissionsBatchUpdate' request conforms to.
+type MapsPermissionsBatchUpdateResource =
+     "mapsengine" :>
+       "v1" :>
+         "maps" :>
+           Capture "id" Text :>
+             "permissions" :>
+               "batchUpdate" :>
+                 QueryParam "alt" AltJSON :>
+                   ReqBody '[JSON] PermissionsBatchUpdateRequest :>
+                     Post '[JSON] PermissionsBatchUpdateResponse
+
+-- | Add or update permission entries to an already existing asset. An asset
+-- can hold up to 20 different permission entries. Each batchInsert request
+-- is atomic.
+--
+-- /See:/ 'mapsPermissionsBatchUpdate' smart constructor.
+data MapsPermissionsBatchUpdate = MapsPermissionsBatchUpdate
+    { _mpbuPayload :: !PermissionsBatchUpdateRequest
+    , _mpbuId      :: !Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'MapsPermissionsBatchUpdate' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'mpbuPayload'
+--
+-- * 'mpbuId'
+mapsPermissionsBatchUpdate
+    :: PermissionsBatchUpdateRequest -- ^ 'mpbuPayload'
+    -> Text -- ^ 'mpbuId'
+    -> MapsPermissionsBatchUpdate
+mapsPermissionsBatchUpdate pMpbuPayload_ pMpbuId_ =
+    MapsPermissionsBatchUpdate
+    { _mpbuPayload = pMpbuPayload_
+    , _mpbuId = pMpbuId_
+    }
+
+-- | Multipart request metadata.
+mpbuPayload :: Lens' MapsPermissionsBatchUpdate PermissionsBatchUpdateRequest
+mpbuPayload
+  = lens _mpbuPayload (\ s a -> s{_mpbuPayload = a})
+
+-- | The ID of the asset to which permissions will be added.
+mpbuId :: Lens' MapsPermissionsBatchUpdate Text
+mpbuId = lens _mpbuId (\ s a -> s{_mpbuId = a})
+
+instance GoogleRequest MapsPermissionsBatchUpdate
+         where
+        type Rs MapsPermissionsBatchUpdate =
+             PermissionsBatchUpdateResponse
+        requestClient MapsPermissionsBatchUpdate{..}
+          = go _mpbuId (Just AltJSON) _mpbuPayload
+              mapsEngineService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy MapsPermissionsBatchUpdateResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/MapsEngine/Maps/Permissions/List.hs b/gen/Network/Google/Resource/MapsEngine/Maps/Permissions/List.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/MapsEngine/Maps/Permissions/List.hs
@@ -0,0 +1,84 @@
+{-# LANGUAGE DataKinds          #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE FlexibleInstances  #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+{-# LANGUAGE TypeOperators      #-}
+
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
+
+-- |
+-- Module      : Network.Google.Resource.MapsEngine.Maps.Permissions.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)
+--
+-- Return all of the permissions for the specified asset.
+--
+-- /See:/ <https://developers.google.com/maps-engine/ Google Maps Engine API Reference> for @mapsengine.maps.permissions.list@.
+module Network.Google.Resource.MapsEngine.Maps.Permissions.List
+    (
+    -- * REST Resource
+      MapsPermissionsListResource
+
+    -- * Creating a Request
+    , mapsPermissionsList
+    , MapsPermissionsList
+
+    -- * Request Lenses
+    , mplId
+    ) where
+
+import           Network.Google.MapsEngine.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @mapsengine.maps.permissions.list@ method which the
+-- 'MapsPermissionsList' request conforms to.
+type MapsPermissionsListResource =
+     "mapsengine" :>
+       "v1" :>
+         "maps" :>
+           Capture "id" Text :>
+             "permissions" :>
+               QueryParam "alt" AltJSON :>
+                 Get '[JSON] PermissionsListResponse
+
+-- | Return all of the permissions for the specified asset.
+--
+-- /See:/ 'mapsPermissionsList' smart constructor.
+newtype MapsPermissionsList = MapsPermissionsList
+    { _mplId :: Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'MapsPermissionsList' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'mplId'
+mapsPermissionsList
+    :: Text -- ^ 'mplId'
+    -> MapsPermissionsList
+mapsPermissionsList pMplId_ =
+    MapsPermissionsList
+    { _mplId = pMplId_
+    }
+
+-- | The ID of the asset whose permissions will be listed.
+mplId :: Lens' MapsPermissionsList Text
+mplId = lens _mplId (\ s a -> s{_mplId = a})
+
+instance GoogleRequest MapsPermissionsList where
+        type Rs MapsPermissionsList = PermissionsListResponse
+        requestClient MapsPermissionsList{..}
+          = go _mplId (Just AltJSON) mapsEngineService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy MapsPermissionsListResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/MapsEngine/Maps/Publish.hs b/gen/Network/Google/Resource/MapsEngine/Maps/Publish.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/MapsEngine/Maps/Publish.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.MapsEngine.Maps.Publish
+-- 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)
+--
+-- Publish a map asset.
+--
+-- /See:/ <https://developers.google.com/maps-engine/ Google Maps Engine API Reference> for @mapsengine.maps.publish@.
+module Network.Google.Resource.MapsEngine.Maps.Publish
+    (
+    -- * REST Resource
+      MapsPublishResource
+
+    -- * Creating a Request
+    , mapsPublish
+    , MapsPublish
+
+    -- * Request Lenses
+    , mapForce
+    , mapId
+    ) where
+
+import           Network.Google.MapsEngine.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @mapsengine.maps.publish@ method which the
+-- 'MapsPublish' request conforms to.
+type MapsPublishResource =
+     "mapsengine" :>
+       "v1" :>
+         "maps" :>
+           Capture "id" Text :>
+             "publish" :>
+               QueryParam "force" Bool :>
+                 QueryParam "alt" AltJSON :>
+                   Post '[JSON] PublishResponse
+
+-- | Publish a map asset.
+--
+-- /See:/ 'mapsPublish' smart constructor.
+data MapsPublish = MapsPublish
+    { _mapForce :: !(Maybe Bool)
+    , _mapId    :: !Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'MapsPublish' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'mapForce'
+--
+-- * 'mapId'
+mapsPublish
+    :: Text -- ^ 'mapId'
+    -> MapsPublish
+mapsPublish pMapId_ =
+    MapsPublish
+    { _mapForce = Nothing
+    , _mapId = pMapId_
+    }
+
+-- | If set to true, the API will allow publication of the map even if it\'s
+-- out of date. If false, the map must have a processingStatus of complete
+-- before publishing.
+mapForce :: Lens' MapsPublish (Maybe Bool)
+mapForce = lens _mapForce (\ s a -> s{_mapForce = a})
+
+-- | The ID of the map.
+mapId :: Lens' MapsPublish Text
+mapId = lens _mapId (\ s a -> s{_mapId = a})
+
+instance GoogleRequest MapsPublish where
+        type Rs MapsPublish = PublishResponse
+        requestClient MapsPublish{..}
+          = go _mapId _mapForce (Just AltJSON)
+              mapsEngineService
+          where go
+                  = buildClient (Proxy :: Proxy MapsPublishResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/MapsEngine/Maps/UnPublish.hs b/gen/Network/Google/Resource/MapsEngine/Maps/UnPublish.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/MapsEngine/Maps/UnPublish.hs
@@ -0,0 +1,83 @@
+{-# LANGUAGE DataKinds          #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE FlexibleInstances  #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+{-# LANGUAGE TypeOperators      #-}
+
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
+
+-- |
+-- Module      : Network.Google.Resource.MapsEngine.Maps.UnPublish
+-- 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)
+--
+-- Unpublish a map asset.
+--
+-- /See:/ <https://developers.google.com/maps-engine/ Google Maps Engine API Reference> for @mapsengine.maps.unpublish@.
+module Network.Google.Resource.MapsEngine.Maps.UnPublish
+    (
+    -- * REST Resource
+      MapsUnPublishResource
+
+    -- * Creating a Request
+    , mapsUnPublish
+    , MapsUnPublish
+
+    -- * Request Lenses
+    , mupId
+    ) where
+
+import           Network.Google.MapsEngine.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @mapsengine.maps.unpublish@ method which the
+-- 'MapsUnPublish' request conforms to.
+type MapsUnPublishResource =
+     "mapsengine" :>
+       "v1" :>
+         "maps" :>
+           Capture "id" Text :>
+             "unpublish" :>
+               QueryParam "alt" AltJSON :>
+                 Post '[JSON] PublishResponse
+
+-- | Unpublish a map asset.
+--
+-- /See:/ 'mapsUnPublish' smart constructor.
+newtype MapsUnPublish = MapsUnPublish
+    { _mupId :: Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'MapsUnPublish' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'mupId'
+mapsUnPublish
+    :: Text -- ^ 'mupId'
+    -> MapsUnPublish
+mapsUnPublish pMupId_ =
+    MapsUnPublish
+    { _mupId = pMupId_
+    }
+
+-- | The ID of the map.
+mupId :: Lens' MapsUnPublish Text
+mupId = lens _mupId (\ s a -> s{_mupId = a})
+
+instance GoogleRequest MapsUnPublish where
+        type Rs MapsUnPublish = PublishResponse
+        requestClient MapsUnPublish{..}
+          = go _mupId (Just AltJSON) mapsEngineService
+          where go
+                  = buildClient (Proxy :: Proxy MapsUnPublishResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/MapsEngine/Projects/Icons/Create.hs b/gen/Network/Google/Resource/MapsEngine/Projects/Icons/Create.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/MapsEngine/Projects/Icons/Create.hs
@@ -0,0 +1,122 @@
+{-# 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.MapsEngine.Projects.Icons.Create
+-- Copyright   : (c) 2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Create an icon.
+--
+-- /See:/ <https://developers.google.com/maps-engine/ Google Maps Engine API Reference> for @mapsengine.projects.icons.create@.
+module Network.Google.Resource.MapsEngine.Projects.Icons.Create
+    (
+    -- * REST Resource
+      ProjectsIconsCreateResource
+
+    -- * Creating a Request
+    , projectsIconsCreate
+    , ProjectsIconsCreate
+
+    -- * Request Lenses
+    , picPayload
+    , picProjectId
+    ) where
+
+import           Network.Google.MapsEngine.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @mapsengine.projects.icons.create@ method which the
+-- 'ProjectsIconsCreate' request conforms to.
+type ProjectsIconsCreateResource =
+     "mapsengine" :>
+       "v1" :>
+         "projects" :>
+           Capture "projectId" Text :>
+             "icons" :>
+               QueryParam "alt" AltJSON :>
+                 ReqBody '[JSON] Icon :> Post '[JSON] Icon
+       :<|>
+       "upload" :>
+         "mapsengine" :>
+           "v1" :>
+             "projects" :>
+               Capture "projectId" Text :>
+                 "icons" :>
+                   QueryParam "alt" AltJSON :>
+                     QueryParam "uploadType" AltMedia :>
+                       MultipartRelated '[JSON] Icon RequestBody :>
+                         Post '[JSON] Icon
+
+-- | Create an icon.
+--
+-- /See:/ 'projectsIconsCreate' smart constructor.
+data ProjectsIconsCreate = ProjectsIconsCreate
+    { _picPayload   :: !Icon
+    , _picProjectId :: !Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ProjectsIconsCreate' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'picPayload'
+--
+-- * 'picProjectId'
+projectsIconsCreate
+    :: Icon -- ^ 'picPayload'
+    -> Text -- ^ 'picProjectId'
+    -> ProjectsIconsCreate
+projectsIconsCreate pPicPayload_ pPicProjectId_ =
+    ProjectsIconsCreate
+    { _picPayload = pPicPayload_
+    , _picProjectId = pPicProjectId_
+    }
+
+-- | Multipart request metadata.
+picPayload :: Lens' ProjectsIconsCreate Icon
+picPayload
+  = lens _picPayload (\ s a -> s{_picPayload = a})
+
+-- | The ID of the project.
+picProjectId :: Lens' ProjectsIconsCreate Text
+picProjectId
+  = lens _picProjectId (\ s a -> s{_picProjectId = a})
+
+instance GoogleRequest ProjectsIconsCreate where
+        type Rs ProjectsIconsCreate = Icon
+        requestClient ProjectsIconsCreate{..}
+          = go _picProjectId (Just AltJSON) _picPayload
+              mapsEngineService
+          where go :<|> _
+                  = buildClient
+                      (Proxy :: Proxy ProjectsIconsCreateResource)
+                      mempty
+
+instance GoogleRequest
+         (MediaUpload ProjectsIconsCreate) where
+        type Rs (MediaUpload ProjectsIconsCreate) = Icon
+        requestClient
+          (MediaUpload ProjectsIconsCreate{..} body)
+          = go _picProjectId (Just AltJSON) (Just AltMedia)
+              _picPayload
+              body
+              mapsEngineService
+          where _ :<|> go
+                  = buildClient
+                      (Proxy :: Proxy ProjectsIconsCreateResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/MapsEngine/Projects/Icons/Get.hs b/gen/Network/Google/Resource/MapsEngine/Projects/Icons/Get.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/MapsEngine/Projects/Icons/Get.hs
@@ -0,0 +1,116 @@
+{-# LANGUAGE DataKinds          #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE FlexibleInstances  #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+{-# LANGUAGE TypeOperators      #-}
+
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
+
+-- |
+-- Module      : Network.Google.Resource.MapsEngine.Projects.Icons.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)
+--
+-- Return an icon or its associated metadata
+--
+-- /See:/ <https://developers.google.com/maps-engine/ Google Maps Engine API Reference> for @mapsengine.projects.icons.get@.
+module Network.Google.Resource.MapsEngine.Projects.Icons.Get
+    (
+    -- * REST Resource
+      ProjectsIconsGetResource
+
+    -- * Creating a Request
+    , projectsIconsGet
+    , ProjectsIconsGet
+
+    -- * Request Lenses
+    , pigId
+    , pigProjectId
+    ) where
+
+import           Network.Google.MapsEngine.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @mapsengine.projects.icons.get@ method which the
+-- 'ProjectsIconsGet' request conforms to.
+type ProjectsIconsGetResource =
+     "mapsengine" :>
+       "v1" :>
+         "projects" :>
+           Capture "projectId" Text :>
+             "icons" :>
+               Capture "id" Text :>
+                 QueryParam "alt" AltJSON :> Get '[JSON] Icon
+       :<|>
+       "mapsengine" :>
+         "v1" :>
+           "projects" :>
+             Capture "projectId" Text :>
+               "icons" :>
+                 Capture "id" Text :>
+                   QueryParam "alt" AltMedia :>
+                     Get '[OctetStream] Stream
+
+-- | Return an icon or its associated metadata
+--
+-- /See:/ 'projectsIconsGet' smart constructor.
+data ProjectsIconsGet = ProjectsIconsGet
+    { _pigId        :: !Text
+    , _pigProjectId :: !Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ProjectsIconsGet' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'pigId'
+--
+-- * 'pigProjectId'
+projectsIconsGet
+    :: Text -- ^ 'pigId'
+    -> Text -- ^ 'pigProjectId'
+    -> ProjectsIconsGet
+projectsIconsGet pPigId_ pPigProjectId_ =
+    ProjectsIconsGet
+    { _pigId = pPigId_
+    , _pigProjectId = pPigProjectId_
+    }
+
+-- | The ID of the icon.
+pigId :: Lens' ProjectsIconsGet Text
+pigId = lens _pigId (\ s a -> s{_pigId = a})
+
+-- | The ID of the project.
+pigProjectId :: Lens' ProjectsIconsGet Text
+pigProjectId
+  = lens _pigProjectId (\ s a -> s{_pigProjectId = a})
+
+instance GoogleRequest ProjectsIconsGet where
+        type Rs ProjectsIconsGet = Icon
+        requestClient ProjectsIconsGet{..}
+          = go _pigProjectId _pigId (Just AltJSON)
+              mapsEngineService
+          where go :<|> _
+                  = buildClient
+                      (Proxy :: Proxy ProjectsIconsGetResource)
+                      mempty
+
+instance GoogleRequest
+         (MediaDownload ProjectsIconsGet) where
+        type Rs (MediaDownload ProjectsIconsGet) = Stream
+        requestClient (MediaDownload ProjectsIconsGet{..})
+          = go _pigProjectId _pigId (Just AltMedia)
+              mapsEngineService
+          where _ :<|> go
+                  = buildClient
+                      (Proxy :: Proxy ProjectsIconsGetResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/MapsEngine/Projects/Icons/List.hs b/gen/Network/Google/Resource/MapsEngine/Projects/Icons/List.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/MapsEngine/Projects/Icons/List.hs
@@ -0,0 +1,114 @@
+{-# LANGUAGE DataKinds          #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE FlexibleInstances  #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+{-# LANGUAGE TypeOperators      #-}
+
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
+
+-- |
+-- Module      : Network.Google.Resource.MapsEngine.Projects.Icons.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)
+--
+-- Return all icons in the current project
+--
+-- /See:/ <https://developers.google.com/maps-engine/ Google Maps Engine API Reference> for @mapsengine.projects.icons.list@.
+module Network.Google.Resource.MapsEngine.Projects.Icons.List
+    (
+    -- * REST Resource
+      ProjectsIconsListResource
+
+    -- * Creating a Request
+    , projectsIconsList
+    , ProjectsIconsList
+
+    -- * Request Lenses
+    , pilPageToken
+    , pilProjectId
+    , pilMaxResults
+    ) where
+
+import           Network.Google.MapsEngine.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @mapsengine.projects.icons.list@ method which the
+-- 'ProjectsIconsList' request conforms to.
+type ProjectsIconsListResource =
+     "mapsengine" :>
+       "v1" :>
+         "projects" :>
+           Capture "projectId" Text :>
+             "icons" :>
+               QueryParam "pageToken" Text :>
+                 QueryParam "maxResults" (Textual Word32) :>
+                   QueryParam "alt" AltJSON :>
+                     Get '[JSON] IconsListResponse
+
+-- | Return all icons in the current project
+--
+-- /See:/ 'projectsIconsList' smart constructor.
+data ProjectsIconsList = ProjectsIconsList
+    { _pilPageToken  :: !(Maybe Text)
+    , _pilProjectId  :: !Text
+    , _pilMaxResults :: !(Maybe (Textual Word32))
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ProjectsIconsList' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'pilPageToken'
+--
+-- * 'pilProjectId'
+--
+-- * 'pilMaxResults'
+projectsIconsList
+    :: Text -- ^ 'pilProjectId'
+    -> ProjectsIconsList
+projectsIconsList pPilProjectId_ =
+    ProjectsIconsList
+    { _pilPageToken = Nothing
+    , _pilProjectId = pPilProjectId_
+    , _pilMaxResults = Nothing
+    }
+
+-- | The continuation token, used to page through large result sets. To get
+-- the next page of results, set this parameter to the value of
+-- nextPageToken from the previous response.
+pilPageToken :: Lens' ProjectsIconsList (Maybe Text)
+pilPageToken
+  = lens _pilPageToken (\ s a -> s{_pilPageToken = a})
+
+-- | The ID of the project.
+pilProjectId :: Lens' ProjectsIconsList Text
+pilProjectId
+  = lens _pilProjectId (\ s a -> s{_pilProjectId = a})
+
+-- | The maximum number of items to include in a single response page. The
+-- maximum supported value is 50.
+pilMaxResults :: Lens' ProjectsIconsList (Maybe Word32)
+pilMaxResults
+  = lens _pilMaxResults
+      (\ s a -> s{_pilMaxResults = a})
+      . mapping _Coerce
+
+instance GoogleRequest ProjectsIconsList where
+        type Rs ProjectsIconsList = IconsListResponse
+        requestClient ProjectsIconsList{..}
+          = go _pilProjectId _pilPageToken _pilMaxResults
+              (Just AltJSON)
+              mapsEngineService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy ProjectsIconsListResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/MapsEngine/Projects/List.hs b/gen/Network/Google/Resource/MapsEngine/Projects/List.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/MapsEngine/Projects/List.hs
@@ -0,0 +1,68 @@
+{-# 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.MapsEngine.Projects.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)
+--
+-- Return all projects readable by the current user.
+--
+-- /See:/ <https://developers.google.com/maps-engine/ Google Maps Engine API Reference> for @mapsengine.projects.list@.
+module Network.Google.Resource.MapsEngine.Projects.List
+    (
+    -- * REST Resource
+      ProjectsListResource
+
+    -- * Creating a Request
+    , projectsList
+    , ProjectsList
+
+    ) where
+
+import           Network.Google.MapsEngine.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @mapsengine.projects.list@ method which the
+-- 'ProjectsList' request conforms to.
+type ProjectsListResource =
+     "mapsengine" :>
+       "v1" :>
+         "projects" :>
+           QueryParam "alt" AltJSON :>
+             Get '[JSON] ProjectsListResponse
+
+-- | Return all projects readable by the current user.
+--
+-- /See:/ 'projectsList' smart constructor.
+data ProjectsList =
+    ProjectsList
+    deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ProjectsList' with the minimum fields required to make a request.
+--
+projectsList
+    :: ProjectsList
+projectsList = ProjectsList
+
+instance GoogleRequest ProjectsList where
+        type Rs ProjectsList = ProjectsListResponse
+        requestClient ProjectsList{}
+          = go (Just AltJSON) mapsEngineService
+          where go
+                  = buildClient (Proxy :: Proxy ProjectsListResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/MapsEngine/RasterCollections/CancelProcessing.hs b/gen/Network/Google/Resource/MapsEngine/RasterCollections/CancelProcessing.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/MapsEngine/RasterCollections/CancelProcessing.hs
@@ -0,0 +1,87 @@
+{-# LANGUAGE DataKinds          #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE FlexibleInstances  #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+{-# LANGUAGE TypeOperators      #-}
+
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
+
+-- |
+-- Module      : Network.Google.Resource.MapsEngine.RasterCollections.CancelProcessing
+-- 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)
+--
+-- Cancel processing on a raster collection asset.
+--
+-- /See:/ <https://developers.google.com/maps-engine/ Google Maps Engine API Reference> for @mapsengine.rasterCollections.cancelProcessing@.
+module Network.Google.Resource.MapsEngine.RasterCollections.CancelProcessing
+    (
+    -- * REST Resource
+      RasterCollectionsCancelProcessingResource
+
+    -- * Creating a Request
+    , rasterCollectionsCancelProcessing
+    , RasterCollectionsCancelProcessing
+
+    -- * Request Lenses
+    , rccpId
+    ) where
+
+import           Network.Google.MapsEngine.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @mapsengine.rasterCollections.cancelProcessing@ method which the
+-- 'RasterCollectionsCancelProcessing' request conforms to.
+type RasterCollectionsCancelProcessingResource =
+     "mapsengine" :>
+       "v1" :>
+         "rasterCollections" :>
+           Capture "id" Text :>
+             "cancelProcessing" :>
+               QueryParam "alt" AltJSON :>
+                 Post '[JSON] ProcessResponse
+
+-- | Cancel processing on a raster collection asset.
+--
+-- /See:/ 'rasterCollectionsCancelProcessing' smart constructor.
+newtype RasterCollectionsCancelProcessing = RasterCollectionsCancelProcessing
+    { _rccpId :: Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'RasterCollectionsCancelProcessing' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'rccpId'
+rasterCollectionsCancelProcessing
+    :: Text -- ^ 'rccpId'
+    -> RasterCollectionsCancelProcessing
+rasterCollectionsCancelProcessing pRccpId_ =
+    RasterCollectionsCancelProcessing
+    { _rccpId = pRccpId_
+    }
+
+-- | The ID of the raster collection.
+rccpId :: Lens' RasterCollectionsCancelProcessing Text
+rccpId = lens _rccpId (\ s a -> s{_rccpId = a})
+
+instance GoogleRequest
+         RasterCollectionsCancelProcessing where
+        type Rs RasterCollectionsCancelProcessing =
+             ProcessResponse
+        requestClient RasterCollectionsCancelProcessing{..}
+          = go _rccpId (Just AltJSON) mapsEngineService
+          where go
+                  = buildClient
+                      (Proxy ::
+                         Proxy RasterCollectionsCancelProcessingResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/MapsEngine/RasterCollections/Create.hs b/gen/Network/Google/Resource/MapsEngine/RasterCollections/Create.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/MapsEngine/RasterCollections/Create.hs
@@ -0,0 +1,84 @@
+{-# LANGUAGE DataKinds          #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE FlexibleInstances  #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+{-# LANGUAGE TypeOperators      #-}
+
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
+
+-- |
+-- Module      : Network.Google.Resource.MapsEngine.RasterCollections.Create
+-- Copyright   : (c) 2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Create a raster collection asset.
+--
+-- /See:/ <https://developers.google.com/maps-engine/ Google Maps Engine API Reference> for @mapsengine.rasterCollections.create@.
+module Network.Google.Resource.MapsEngine.RasterCollections.Create
+    (
+    -- * REST Resource
+      RasterCollectionsCreateResource
+
+    -- * Creating a Request
+    , rasterCollectionsCreate
+    , RasterCollectionsCreate
+
+    -- * Request Lenses
+    , rccPayload
+    ) where
+
+import           Network.Google.MapsEngine.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @mapsengine.rasterCollections.create@ method which the
+-- 'RasterCollectionsCreate' request conforms to.
+type RasterCollectionsCreateResource =
+     "mapsengine" :>
+       "v1" :>
+         "rasterCollections" :>
+           QueryParam "alt" AltJSON :>
+             ReqBody '[JSON] RasterCollection :>
+               Post '[JSON] RasterCollection
+
+-- | Create a raster collection asset.
+--
+-- /See:/ 'rasterCollectionsCreate' smart constructor.
+newtype RasterCollectionsCreate = RasterCollectionsCreate
+    { _rccPayload :: RasterCollection
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'RasterCollectionsCreate' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'rccPayload'
+rasterCollectionsCreate
+    :: RasterCollection -- ^ 'rccPayload'
+    -> RasterCollectionsCreate
+rasterCollectionsCreate pRccPayload_ =
+    RasterCollectionsCreate
+    { _rccPayload = pRccPayload_
+    }
+
+-- | Multipart request metadata.
+rccPayload :: Lens' RasterCollectionsCreate RasterCollection
+rccPayload
+  = lens _rccPayload (\ s a -> s{_rccPayload = a})
+
+instance GoogleRequest RasterCollectionsCreate where
+        type Rs RasterCollectionsCreate = RasterCollection
+        requestClient RasterCollectionsCreate{..}
+          = go (Just AltJSON) _rccPayload mapsEngineService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy RasterCollectionsCreateResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/MapsEngine/RasterCollections/Delete.hs b/gen/Network/Google/Resource/MapsEngine/RasterCollections/Delete.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/MapsEngine/RasterCollections/Delete.hs
@@ -0,0 +1,85 @@
+{-# LANGUAGE DataKinds          #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE FlexibleInstances  #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+{-# LANGUAGE TypeOperators      #-}
+
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
+
+-- |
+-- Module      : Network.Google.Resource.MapsEngine.RasterCollections.Delete
+-- Copyright   : (c) 2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Delete a raster collection.
+--
+-- /See:/ <https://developers.google.com/maps-engine/ Google Maps Engine API Reference> for @mapsengine.rasterCollections.delete@.
+module Network.Google.Resource.MapsEngine.RasterCollections.Delete
+    (
+    -- * REST Resource
+      RasterCollectionsDeleteResource
+
+    -- * Creating a Request
+    , rasterCollectionsDelete
+    , RasterCollectionsDelete
+
+    -- * Request Lenses
+    , rcdId
+    ) where
+
+import           Network.Google.MapsEngine.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @mapsengine.rasterCollections.delete@ method which the
+-- 'RasterCollectionsDelete' request conforms to.
+type RasterCollectionsDeleteResource =
+     "mapsengine" :>
+       "v1" :>
+         "rasterCollections" :>
+           Capture "id" Text :>
+             QueryParam "alt" AltJSON :> Delete '[JSON] ()
+
+-- | Delete a raster collection.
+--
+-- /See:/ 'rasterCollectionsDelete' smart constructor.
+newtype RasterCollectionsDelete = RasterCollectionsDelete
+    { _rcdId :: Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'RasterCollectionsDelete' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'rcdId'
+rasterCollectionsDelete
+    :: Text -- ^ 'rcdId'
+    -> RasterCollectionsDelete
+rasterCollectionsDelete pRcdId_ =
+    RasterCollectionsDelete
+    { _rcdId = pRcdId_
+    }
+
+-- | The ID of the raster collection. Only the raster collection creator or
+-- project owner are permitted to delete. If the rastor collection is
+-- included in a layer, the request will fail. Remove the raster collection
+-- from all layers prior to deleting.
+rcdId :: Lens' RasterCollectionsDelete Text
+rcdId = lens _rcdId (\ s a -> s{_rcdId = a})
+
+instance GoogleRequest RasterCollectionsDelete where
+        type Rs RasterCollectionsDelete = ()
+        requestClient RasterCollectionsDelete{..}
+          = go _rcdId (Just AltJSON) mapsEngineService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy RasterCollectionsDeleteResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/MapsEngine/RasterCollections/Get.hs b/gen/Network/Google/Resource/MapsEngine/RasterCollections/Get.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/MapsEngine/RasterCollections/Get.hs
@@ -0,0 +1,83 @@
+{-# LANGUAGE DataKinds          #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE FlexibleInstances  #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+{-# LANGUAGE TypeOperators      #-}
+
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
+
+-- |
+-- Module      : Network.Google.Resource.MapsEngine.RasterCollections.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)
+--
+-- Return metadata for a particular raster collection.
+--
+-- /See:/ <https://developers.google.com/maps-engine/ Google Maps Engine API Reference> for @mapsengine.rasterCollections.get@.
+module Network.Google.Resource.MapsEngine.RasterCollections.Get
+    (
+    -- * REST Resource
+      RasterCollectionsGetResource
+
+    -- * Creating a Request
+    , rasterCollectionsGet
+    , RasterCollectionsGet
+
+    -- * Request Lenses
+    , rcgId
+    ) where
+
+import           Network.Google.MapsEngine.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @mapsengine.rasterCollections.get@ method which the
+-- 'RasterCollectionsGet' request conforms to.
+type RasterCollectionsGetResource =
+     "mapsengine" :>
+       "v1" :>
+         "rasterCollections" :>
+           Capture "id" Text :>
+             QueryParam "alt" AltJSON :>
+               Get '[JSON] RasterCollection
+
+-- | Return metadata for a particular raster collection.
+--
+-- /See:/ 'rasterCollectionsGet' smart constructor.
+newtype RasterCollectionsGet = RasterCollectionsGet
+    { _rcgId :: Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'RasterCollectionsGet' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'rcgId'
+rasterCollectionsGet
+    :: Text -- ^ 'rcgId'
+    -> RasterCollectionsGet
+rasterCollectionsGet pRcgId_ =
+    RasterCollectionsGet
+    { _rcgId = pRcgId_
+    }
+
+-- | The ID of the raster collection.
+rcgId :: Lens' RasterCollectionsGet Text
+rcgId = lens _rcgId (\ s a -> s{_rcgId = a})
+
+instance GoogleRequest RasterCollectionsGet where
+        type Rs RasterCollectionsGet = RasterCollection
+        requestClient RasterCollectionsGet{..}
+          = go _rcgId (Just AltJSON) mapsEngineService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy RasterCollectionsGetResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/MapsEngine/RasterCollections/List.hs b/gen/Network/Google/Resource/MapsEngine/RasterCollections/List.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/MapsEngine/RasterCollections/List.hs
@@ -0,0 +1,253 @@
+{-# 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.MapsEngine.RasterCollections.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)
+--
+-- Return all raster collections readable by the current user.
+--
+-- /See:/ <https://developers.google.com/maps-engine/ Google Maps Engine API Reference> for @mapsengine.rasterCollections.list@.
+module Network.Google.Resource.MapsEngine.RasterCollections.List
+    (
+    -- * REST Resource
+      RasterCollectionsListResource
+
+    -- * Creating a Request
+    , rasterCollectionsList
+    , RasterCollectionsList
+
+    -- * Request Lenses
+    , rclCreatedAfter
+    , rclCreatorEmail
+    , rclRole
+    , rclBbox
+    , rclProcessingStatus
+    , rclModifiedAfter
+    , rclModifiedBefore
+    , rclPageToken
+    , rclProjectId
+    , rclSearch
+    , rclMaxResults
+    , rclTags
+    , rclCreatedBefore
+    ) where
+
+import           Network.Google.MapsEngine.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @mapsengine.rasterCollections.list@ method which the
+-- 'RasterCollectionsList' request conforms to.
+type RasterCollectionsListResource =
+     "mapsengine" :>
+       "v1" :>
+         "rasterCollections" :>
+           QueryParam "createdAfter" DateTime' :>
+             QueryParam "creatorEmail" Text :>
+               QueryParam "role" RasterCollectionsListRole :>
+                 QueryParam "bbox" Text :>
+                   QueryParam "processingStatus"
+                     RasterCollectionsListProcessingStatus
+                     :>
+                     QueryParam "modifiedAfter" DateTime' :>
+                       QueryParam "modifiedBefore" DateTime' :>
+                         QueryParam "pageToken" Text :>
+                           QueryParam "projectId" Text :>
+                             QueryParam "search" Text :>
+                               QueryParam "maxResults" (Textual Word32) :>
+                                 QueryParam "tags" Text :>
+                                   QueryParam "createdBefore" DateTime' :>
+                                     QueryParam "alt" AltJSON :>
+                                       Get '[JSON] RasterCollectionsListResponse
+
+-- | Return all raster collections readable by the current user.
+--
+-- /See:/ 'rasterCollectionsList' smart constructor.
+data RasterCollectionsList = RasterCollectionsList
+    { _rclCreatedAfter     :: !(Maybe DateTime')
+    , _rclCreatorEmail     :: !(Maybe Text)
+    , _rclRole             :: !(Maybe RasterCollectionsListRole)
+    , _rclBbox             :: !(Maybe Text)
+    , _rclProcessingStatus :: !(Maybe RasterCollectionsListProcessingStatus)
+    , _rclModifiedAfter    :: !(Maybe DateTime')
+    , _rclModifiedBefore   :: !(Maybe DateTime')
+    , _rclPageToken        :: !(Maybe Text)
+    , _rclProjectId        :: !(Maybe Text)
+    , _rclSearch           :: !(Maybe Text)
+    , _rclMaxResults       :: !(Maybe (Textual Word32))
+    , _rclTags             :: !(Maybe Text)
+    , _rclCreatedBefore    :: !(Maybe DateTime')
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'RasterCollectionsList' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'rclCreatedAfter'
+--
+-- * 'rclCreatorEmail'
+--
+-- * 'rclRole'
+--
+-- * 'rclBbox'
+--
+-- * 'rclProcessingStatus'
+--
+-- * 'rclModifiedAfter'
+--
+-- * 'rclModifiedBefore'
+--
+-- * 'rclPageToken'
+--
+-- * 'rclProjectId'
+--
+-- * 'rclSearch'
+--
+-- * 'rclMaxResults'
+--
+-- * 'rclTags'
+--
+-- * 'rclCreatedBefore'
+rasterCollectionsList
+    :: RasterCollectionsList
+rasterCollectionsList =
+    RasterCollectionsList
+    { _rclCreatedAfter = Nothing
+    , _rclCreatorEmail = Nothing
+    , _rclRole = Nothing
+    , _rclBbox = Nothing
+    , _rclProcessingStatus = Nothing
+    , _rclModifiedAfter = Nothing
+    , _rclModifiedBefore = Nothing
+    , _rclPageToken = Nothing
+    , _rclProjectId = Nothing
+    , _rclSearch = Nothing
+    , _rclMaxResults = Nothing
+    , _rclTags = Nothing
+    , _rclCreatedBefore = Nothing
+    }
+
+-- | An RFC 3339 formatted date-time value (e.g. 1970-01-01T00:00:00Z).
+-- Returned assets will have been created at or after this time.
+rclCreatedAfter :: Lens' RasterCollectionsList (Maybe UTCTime)
+rclCreatedAfter
+  = lens _rclCreatedAfter
+      (\ s a -> s{_rclCreatedAfter = a})
+      . mapping _DateTime
+
+-- | An email address representing a user. Returned assets that have been
+-- created by the user associated with the provided email address.
+rclCreatorEmail :: Lens' RasterCollectionsList (Maybe Text)
+rclCreatorEmail
+  = lens _rclCreatorEmail
+      (\ s a -> s{_rclCreatorEmail = a})
+
+-- | The role parameter indicates that the response should only contain
+-- assets where the current user has the specified level of access.
+rclRole :: Lens' RasterCollectionsList (Maybe RasterCollectionsListRole)
+rclRole = lens _rclRole (\ s a -> s{_rclRole = a})
+
+-- | A bounding box, expressed as \"west,south,east,north\". If set, only
+-- assets which intersect this bounding box will be returned.
+rclBbox :: Lens' RasterCollectionsList (Maybe Text)
+rclBbox = lens _rclBbox (\ s a -> s{_rclBbox = a})
+
+rclProcessingStatus :: Lens' RasterCollectionsList (Maybe RasterCollectionsListProcessingStatus)
+rclProcessingStatus
+  = lens _rclProcessingStatus
+      (\ s a -> s{_rclProcessingStatus = a})
+
+-- | An RFC 3339 formatted date-time value (e.g. 1970-01-01T00:00:00Z).
+-- Returned assets will have been modified at or after this time.
+rclModifiedAfter :: Lens' RasterCollectionsList (Maybe UTCTime)
+rclModifiedAfter
+  = lens _rclModifiedAfter
+      (\ s a -> s{_rclModifiedAfter = a})
+      . mapping _DateTime
+
+-- | An RFC 3339 formatted date-time value (e.g. 1970-01-01T00:00:00Z).
+-- Returned assets will have been modified at or before this time.
+rclModifiedBefore :: Lens' RasterCollectionsList (Maybe UTCTime)
+rclModifiedBefore
+  = lens _rclModifiedBefore
+      (\ s a -> s{_rclModifiedBefore = a})
+      . mapping _DateTime
+
+-- | The continuation token, used to page through large result sets. To get
+-- the next page of results, set this parameter to the value of
+-- nextPageToken from the previous response.
+rclPageToken :: Lens' RasterCollectionsList (Maybe Text)
+rclPageToken
+  = lens _rclPageToken (\ s a -> s{_rclPageToken = a})
+
+-- | The ID of a Maps Engine project, used to filter the response. To list
+-- all available projects with their IDs, send a Projects: list request.
+-- You can also find your project ID as the value of the DashboardPlace:cid
+-- URL parameter when signed in to mapsengine.google.com.
+rclProjectId :: Lens' RasterCollectionsList (Maybe Text)
+rclProjectId
+  = lens _rclProjectId (\ s a -> s{_rclProjectId = a})
+
+-- | An unstructured search string used to filter the set of results based on
+-- asset metadata.
+rclSearch :: Lens' RasterCollectionsList (Maybe Text)
+rclSearch
+  = lens _rclSearch (\ s a -> s{_rclSearch = a})
+
+-- | The maximum number of items to include in a single response page. The
+-- maximum supported value is 100.
+rclMaxResults :: Lens' RasterCollectionsList (Maybe Word32)
+rclMaxResults
+  = lens _rclMaxResults
+      (\ s a -> s{_rclMaxResults = a})
+      . mapping _Coerce
+
+-- | A comma separated list of tags. Returned assets will contain all the
+-- tags from the list.
+rclTags :: Lens' RasterCollectionsList (Maybe Text)
+rclTags = lens _rclTags (\ s a -> s{_rclTags = a})
+
+-- | An RFC 3339 formatted date-time value (e.g. 1970-01-01T00:00:00Z).
+-- Returned assets will have been created at or before this time.
+rclCreatedBefore :: Lens' RasterCollectionsList (Maybe UTCTime)
+rclCreatedBefore
+  = lens _rclCreatedBefore
+      (\ s a -> s{_rclCreatedBefore = a})
+      . mapping _DateTime
+
+instance GoogleRequest RasterCollectionsList where
+        type Rs RasterCollectionsList =
+             RasterCollectionsListResponse
+        requestClient RasterCollectionsList{..}
+          = go _rclCreatedAfter _rclCreatorEmail _rclRole
+              _rclBbox
+              _rclProcessingStatus
+              _rclModifiedAfter
+              _rclModifiedBefore
+              _rclPageToken
+              _rclProjectId
+              _rclSearch
+              _rclMaxResults
+              _rclTags
+              _rclCreatedBefore
+              (Just AltJSON)
+              mapsEngineService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy RasterCollectionsListResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/MapsEngine/RasterCollections/Parents/List.hs b/gen/Network/Google/Resource/MapsEngine/RasterCollections/Parents/List.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/MapsEngine/RasterCollections/Parents/List.hs
@@ -0,0 +1,116 @@
+{-# LANGUAGE DataKinds          #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE FlexibleInstances  #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+{-# LANGUAGE TypeOperators      #-}
+
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
+
+-- |
+-- Module      : Network.Google.Resource.MapsEngine.RasterCollections.Parents.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)
+--
+-- Return all parent ids of the specified raster collection.
+--
+-- /See:/ <https://developers.google.com/maps-engine/ Google Maps Engine API Reference> for @mapsengine.rasterCollections.parents.list@.
+module Network.Google.Resource.MapsEngine.RasterCollections.Parents.List
+    (
+    -- * REST Resource
+      RasterCollectionsParentsListResource
+
+    -- * Creating a Request
+    , rasterCollectionsParentsList
+    , RasterCollectionsParentsList
+
+    -- * Request Lenses
+    , rcplcId
+    , rcplcPageToken
+    , rcplcMaxResults
+    ) where
+
+import           Network.Google.MapsEngine.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @mapsengine.rasterCollections.parents.list@ method which the
+-- 'RasterCollectionsParentsList' request conforms to.
+type RasterCollectionsParentsListResource =
+     "mapsengine" :>
+       "v1" :>
+         "rasterCollections" :>
+           Capture "id" Text :>
+             "parents" :>
+               QueryParam "pageToken" Text :>
+                 QueryParam "maxResults" (Textual Word32) :>
+                   QueryParam "alt" AltJSON :>
+                     Get '[JSON] ParentsListResponse
+
+-- | Return all parent ids of the specified raster collection.
+--
+-- /See:/ 'rasterCollectionsParentsList' smart constructor.
+data RasterCollectionsParentsList = RasterCollectionsParentsList
+    { _rcplcId         :: !Text
+    , _rcplcPageToken  :: !(Maybe Text)
+    , _rcplcMaxResults :: !(Maybe (Textual Word32))
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'RasterCollectionsParentsList' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'rcplcId'
+--
+-- * 'rcplcPageToken'
+--
+-- * 'rcplcMaxResults'
+rasterCollectionsParentsList
+    :: Text -- ^ 'rcplcId'
+    -> RasterCollectionsParentsList
+rasterCollectionsParentsList pRcplcId_ =
+    RasterCollectionsParentsList
+    { _rcplcId = pRcplcId_
+    , _rcplcPageToken = Nothing
+    , _rcplcMaxResults = Nothing
+    }
+
+-- | The ID of the raster collection whose parents will be listed.
+rcplcId :: Lens' RasterCollectionsParentsList Text
+rcplcId = lens _rcplcId (\ s a -> s{_rcplcId = a})
+
+-- | The continuation token, used to page through large result sets. To get
+-- the next page of results, set this parameter to the value of
+-- nextPageToken from the previous response.
+rcplcPageToken :: Lens' RasterCollectionsParentsList (Maybe Text)
+rcplcPageToken
+  = lens _rcplcPageToken
+      (\ s a -> s{_rcplcPageToken = a})
+
+-- | The maximum number of items to include in a single response page. The
+-- maximum supported value is 50.
+rcplcMaxResults :: Lens' RasterCollectionsParentsList (Maybe Word32)
+rcplcMaxResults
+  = lens _rcplcMaxResults
+      (\ s a -> s{_rcplcMaxResults = a})
+      . mapping _Coerce
+
+instance GoogleRequest RasterCollectionsParentsList
+         where
+        type Rs RasterCollectionsParentsList =
+             ParentsListResponse
+        requestClient RasterCollectionsParentsList{..}
+          = go _rcplcId _rcplcPageToken _rcplcMaxResults
+              (Just AltJSON)
+              mapsEngineService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy RasterCollectionsParentsListResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/MapsEngine/RasterCollections/Patch.hs b/gen/Network/Google/Resource/MapsEngine/RasterCollections/Patch.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/MapsEngine/RasterCollections/Patch.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.MapsEngine.RasterCollections.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)
+--
+-- Mutate a raster collection asset.
+--
+-- /See:/ <https://developers.google.com/maps-engine/ Google Maps Engine API Reference> for @mapsengine.rasterCollections.patch@.
+module Network.Google.Resource.MapsEngine.RasterCollections.Patch
+    (
+    -- * REST Resource
+      RasterCollectionsPatchResource
+
+    -- * Creating a Request
+    , rasterCollectionsPatch
+    , RasterCollectionsPatch
+
+    -- * Request Lenses
+    , rasPayload
+    , rasId
+    ) where
+
+import           Network.Google.MapsEngine.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @mapsengine.rasterCollections.patch@ method which the
+-- 'RasterCollectionsPatch' request conforms to.
+type RasterCollectionsPatchResource =
+     "mapsengine" :>
+       "v1" :>
+         "rasterCollections" :>
+           Capture "id" Text :>
+             QueryParam "alt" AltJSON :>
+               ReqBody '[JSON] RasterCollection :> Patch '[JSON] ()
+
+-- | Mutate a raster collection asset.
+--
+-- /See:/ 'rasterCollectionsPatch' smart constructor.
+data RasterCollectionsPatch = RasterCollectionsPatch
+    { _rasPayload :: !RasterCollection
+    , _rasId      :: !Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'RasterCollectionsPatch' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'rasPayload'
+--
+-- * 'rasId'
+rasterCollectionsPatch
+    :: RasterCollection -- ^ 'rasPayload'
+    -> Text -- ^ 'rasId'
+    -> RasterCollectionsPatch
+rasterCollectionsPatch pRasPayload_ pRasId_ =
+    RasterCollectionsPatch
+    { _rasPayload = pRasPayload_
+    , _rasId = pRasId_
+    }
+
+-- | Multipart request metadata.
+rasPayload :: Lens' RasterCollectionsPatch RasterCollection
+rasPayload
+  = lens _rasPayload (\ s a -> s{_rasPayload = a})
+
+-- | The ID of the raster collection.
+rasId :: Lens' RasterCollectionsPatch Text
+rasId = lens _rasId (\ s a -> s{_rasId = a})
+
+instance GoogleRequest RasterCollectionsPatch where
+        type Rs RasterCollectionsPatch = ()
+        requestClient RasterCollectionsPatch{..}
+          = go _rasId (Just AltJSON) _rasPayload
+              mapsEngineService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy RasterCollectionsPatchResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/MapsEngine/RasterCollections/Permissions/BatchDelete.hs b/gen/Network/Google/Resource/MapsEngine/RasterCollections/Permissions/BatchDelete.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/MapsEngine/RasterCollections/Permissions/BatchDelete.hs
@@ -0,0 +1,104 @@
+{-# 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.MapsEngine.RasterCollections.Permissions.BatchDelete
+-- 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)
+--
+-- Remove permission entries from an already existing asset.
+--
+-- /See:/ <https://developers.google.com/maps-engine/ Google Maps Engine API Reference> for @mapsengine.rasterCollections.permissions.batchDelete@.
+module Network.Google.Resource.MapsEngine.RasterCollections.Permissions.BatchDelete
+    (
+    -- * REST Resource
+      RasterCollectionsPermissionsBatchDeleteResource
+
+    -- * Creating a Request
+    , rasterCollectionsPermissionsBatchDelete
+    , RasterCollectionsPermissionsBatchDelete
+
+    -- * Request Lenses
+    , rcpbdPayload
+    , rcpbdId
+    ) where
+
+import           Network.Google.MapsEngine.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @mapsengine.rasterCollections.permissions.batchDelete@ method which the
+-- 'RasterCollectionsPermissionsBatchDelete' request conforms to.
+type RasterCollectionsPermissionsBatchDeleteResource
+     =
+     "mapsengine" :>
+       "v1" :>
+         "rasterCollections" :>
+           Capture "id" Text :>
+             "permissions" :>
+               "batchDelete" :>
+                 QueryParam "alt" AltJSON :>
+                   ReqBody '[JSON] PermissionsBatchDeleteRequest :>
+                     Post '[JSON] PermissionsBatchDeleteResponse
+
+-- | Remove permission entries from an already existing asset.
+--
+-- /See:/ 'rasterCollectionsPermissionsBatchDelete' smart constructor.
+data RasterCollectionsPermissionsBatchDelete = RasterCollectionsPermissionsBatchDelete
+    { _rcpbdPayload :: !PermissionsBatchDeleteRequest
+    , _rcpbdId      :: !Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'RasterCollectionsPermissionsBatchDelete' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'rcpbdPayload'
+--
+-- * 'rcpbdId'
+rasterCollectionsPermissionsBatchDelete
+    :: PermissionsBatchDeleteRequest -- ^ 'rcpbdPayload'
+    -> Text -- ^ 'rcpbdId'
+    -> RasterCollectionsPermissionsBatchDelete
+rasterCollectionsPermissionsBatchDelete pRcpbdPayload_ pRcpbdId_ =
+    RasterCollectionsPermissionsBatchDelete
+    { _rcpbdPayload = pRcpbdPayload_
+    , _rcpbdId = pRcpbdId_
+    }
+
+-- | Multipart request metadata.
+rcpbdPayload :: Lens' RasterCollectionsPermissionsBatchDelete PermissionsBatchDeleteRequest
+rcpbdPayload
+  = lens _rcpbdPayload (\ s a -> s{_rcpbdPayload = a})
+
+-- | The ID of the asset from which permissions will be removed.
+rcpbdId :: Lens' RasterCollectionsPermissionsBatchDelete Text
+rcpbdId = lens _rcpbdId (\ s a -> s{_rcpbdId = a})
+
+instance GoogleRequest
+         RasterCollectionsPermissionsBatchDelete where
+        type Rs RasterCollectionsPermissionsBatchDelete =
+             PermissionsBatchDeleteResponse
+        requestClient
+          RasterCollectionsPermissionsBatchDelete{..}
+          = go _rcpbdId (Just AltJSON) _rcpbdPayload
+              mapsEngineService
+          where go
+                  = buildClient
+                      (Proxy ::
+                         Proxy
+                           RasterCollectionsPermissionsBatchDeleteResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/MapsEngine/RasterCollections/Permissions/BatchUpdate.hs b/gen/Network/Google/Resource/MapsEngine/RasterCollections/Permissions/BatchUpdate.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/MapsEngine/RasterCollections/Permissions/BatchUpdate.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.MapsEngine.RasterCollections.Permissions.BatchUpdate
+-- Copyright   : (c) 2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Add or update permission entries to an already existing asset. An asset
+-- can hold up to 20 different permission entries. Each batchInsert request
+-- is atomic.
+--
+-- /See:/ <https://developers.google.com/maps-engine/ Google Maps Engine API Reference> for @mapsengine.rasterCollections.permissions.batchUpdate@.
+module Network.Google.Resource.MapsEngine.RasterCollections.Permissions.BatchUpdate
+    (
+    -- * REST Resource
+      RasterCollectionsPermissionsBatchUpdateResource
+
+    -- * Creating a Request
+    , rasterCollectionsPermissionsBatchUpdate
+    , RasterCollectionsPermissionsBatchUpdate
+
+    -- * Request Lenses
+    , rcpbuPayload
+    , rcpbuId
+    ) where
+
+import           Network.Google.MapsEngine.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @mapsengine.rasterCollections.permissions.batchUpdate@ method which the
+-- 'RasterCollectionsPermissionsBatchUpdate' request conforms to.
+type RasterCollectionsPermissionsBatchUpdateResource
+     =
+     "mapsengine" :>
+       "v1" :>
+         "rasterCollections" :>
+           Capture "id" Text :>
+             "permissions" :>
+               "batchUpdate" :>
+                 QueryParam "alt" AltJSON :>
+                   ReqBody '[JSON] PermissionsBatchUpdateRequest :>
+                     Post '[JSON] PermissionsBatchUpdateResponse
+
+-- | Add or update permission entries to an already existing asset. An asset
+-- can hold up to 20 different permission entries. Each batchInsert request
+-- is atomic.
+--
+-- /See:/ 'rasterCollectionsPermissionsBatchUpdate' smart constructor.
+data RasterCollectionsPermissionsBatchUpdate = RasterCollectionsPermissionsBatchUpdate
+    { _rcpbuPayload :: !PermissionsBatchUpdateRequest
+    , _rcpbuId      :: !Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'RasterCollectionsPermissionsBatchUpdate' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'rcpbuPayload'
+--
+-- * 'rcpbuId'
+rasterCollectionsPermissionsBatchUpdate
+    :: PermissionsBatchUpdateRequest -- ^ 'rcpbuPayload'
+    -> Text -- ^ 'rcpbuId'
+    -> RasterCollectionsPermissionsBatchUpdate
+rasterCollectionsPermissionsBatchUpdate pRcpbuPayload_ pRcpbuId_ =
+    RasterCollectionsPermissionsBatchUpdate
+    { _rcpbuPayload = pRcpbuPayload_
+    , _rcpbuId = pRcpbuId_
+    }
+
+-- | Multipart request metadata.
+rcpbuPayload :: Lens' RasterCollectionsPermissionsBatchUpdate PermissionsBatchUpdateRequest
+rcpbuPayload
+  = lens _rcpbuPayload (\ s a -> s{_rcpbuPayload = a})
+
+-- | The ID of the asset to which permissions will be added.
+rcpbuId :: Lens' RasterCollectionsPermissionsBatchUpdate Text
+rcpbuId = lens _rcpbuId (\ s a -> s{_rcpbuId = a})
+
+instance GoogleRequest
+         RasterCollectionsPermissionsBatchUpdate where
+        type Rs RasterCollectionsPermissionsBatchUpdate =
+             PermissionsBatchUpdateResponse
+        requestClient
+          RasterCollectionsPermissionsBatchUpdate{..}
+          = go _rcpbuId (Just AltJSON) _rcpbuPayload
+              mapsEngineService
+          where go
+                  = buildClient
+                      (Proxy ::
+                         Proxy
+                           RasterCollectionsPermissionsBatchUpdateResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/MapsEngine/RasterCollections/Permissions/List.hs b/gen/Network/Google/Resource/MapsEngine/RasterCollections/Permissions/List.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/MapsEngine/RasterCollections/Permissions/List.hs
@@ -0,0 +1,87 @@
+{-# LANGUAGE DataKinds          #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE FlexibleInstances  #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+{-# LANGUAGE TypeOperators      #-}
+
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
+
+-- |
+-- Module      : Network.Google.Resource.MapsEngine.RasterCollections.Permissions.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)
+--
+-- Return all of the permissions for the specified asset.
+--
+-- /See:/ <https://developers.google.com/maps-engine/ Google Maps Engine API Reference> for @mapsengine.rasterCollections.permissions.list@.
+module Network.Google.Resource.MapsEngine.RasterCollections.Permissions.List
+    (
+    -- * REST Resource
+      RasterCollectionsPermissionsListResource
+
+    -- * Creating a Request
+    , rasterCollectionsPermissionsList
+    , RasterCollectionsPermissionsList
+
+    -- * Request Lenses
+    , rcplId
+    ) where
+
+import           Network.Google.MapsEngine.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @mapsengine.rasterCollections.permissions.list@ method which the
+-- 'RasterCollectionsPermissionsList' request conforms to.
+type RasterCollectionsPermissionsListResource =
+     "mapsengine" :>
+       "v1" :>
+         "rasterCollections" :>
+           Capture "id" Text :>
+             "permissions" :>
+               QueryParam "alt" AltJSON :>
+                 Get '[JSON] PermissionsListResponse
+
+-- | Return all of the permissions for the specified asset.
+--
+-- /See:/ 'rasterCollectionsPermissionsList' smart constructor.
+newtype RasterCollectionsPermissionsList = RasterCollectionsPermissionsList
+    { _rcplId :: Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'RasterCollectionsPermissionsList' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'rcplId'
+rasterCollectionsPermissionsList
+    :: Text -- ^ 'rcplId'
+    -> RasterCollectionsPermissionsList
+rasterCollectionsPermissionsList pRcplId_ =
+    RasterCollectionsPermissionsList
+    { _rcplId = pRcplId_
+    }
+
+-- | The ID of the asset whose permissions will be listed.
+rcplId :: Lens' RasterCollectionsPermissionsList Text
+rcplId = lens _rcplId (\ s a -> s{_rcplId = a})
+
+instance GoogleRequest
+         RasterCollectionsPermissionsList where
+        type Rs RasterCollectionsPermissionsList =
+             PermissionsListResponse
+        requestClient RasterCollectionsPermissionsList{..}
+          = go _rcplId (Just AltJSON) mapsEngineService
+          where go
+                  = buildClient
+                      (Proxy ::
+                         Proxy RasterCollectionsPermissionsListResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/MapsEngine/RasterCollections/Process.hs b/gen/Network/Google/Resource/MapsEngine/RasterCollections/Process.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/MapsEngine/RasterCollections/Process.hs
@@ -0,0 +1,84 @@
+{-# LANGUAGE DataKinds          #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE FlexibleInstances  #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+{-# LANGUAGE TypeOperators      #-}
+
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
+
+-- |
+-- Module      : Network.Google.Resource.MapsEngine.RasterCollections.Process
+-- 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)
+--
+-- Process a raster collection asset.
+--
+-- /See:/ <https://developers.google.com/maps-engine/ Google Maps Engine API Reference> for @mapsengine.rasterCollections.process@.
+module Network.Google.Resource.MapsEngine.RasterCollections.Process
+    (
+    -- * REST Resource
+      RasterCollectionsProcessResource
+
+    -- * Creating a Request
+    , rasterCollectionsProcess
+    , RasterCollectionsProcess
+
+    -- * Request Lenses
+    , rcpId
+    ) where
+
+import           Network.Google.MapsEngine.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @mapsengine.rasterCollections.process@ method which the
+-- 'RasterCollectionsProcess' request conforms to.
+type RasterCollectionsProcessResource =
+     "mapsengine" :>
+       "v1" :>
+         "rasterCollections" :>
+           Capture "id" Text :>
+             "process" :>
+               QueryParam "alt" AltJSON :>
+                 Post '[JSON] ProcessResponse
+
+-- | Process a raster collection asset.
+--
+-- /See:/ 'rasterCollectionsProcess' smart constructor.
+newtype RasterCollectionsProcess = RasterCollectionsProcess
+    { _rcpId :: Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'RasterCollectionsProcess' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'rcpId'
+rasterCollectionsProcess
+    :: Text -- ^ 'rcpId'
+    -> RasterCollectionsProcess
+rasterCollectionsProcess pRcpId_ =
+    RasterCollectionsProcess
+    { _rcpId = pRcpId_
+    }
+
+-- | The ID of the raster collection.
+rcpId :: Lens' RasterCollectionsProcess Text
+rcpId = lens _rcpId (\ s a -> s{_rcpId = a})
+
+instance GoogleRequest RasterCollectionsProcess where
+        type Rs RasterCollectionsProcess = ProcessResponse
+        requestClient RasterCollectionsProcess{..}
+          = go _rcpId (Just AltJSON) mapsEngineService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy RasterCollectionsProcessResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/MapsEngine/RasterCollections/Rasters/BatchDelete.hs b/gen/Network/Google/Resource/MapsEngine/RasterCollections/Rasters/BatchDelete.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/MapsEngine/RasterCollections/Rasters/BatchDelete.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.MapsEngine.RasterCollections.Rasters.BatchDelete
+-- 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)
+--
+-- Remove rasters from an existing raster collection. Up to 50 rasters can
+-- be included in a single batchDelete request. Each batchDelete request is
+-- atomic.
+--
+-- /See:/ <https://developers.google.com/maps-engine/ Google Maps Engine API Reference> for @mapsengine.rasterCollections.rasters.batchDelete@.
+module Network.Google.Resource.MapsEngine.RasterCollections.Rasters.BatchDelete
+    (
+    -- * REST Resource
+      RasterCollectionsRastersBatchDeleteResource
+
+    -- * Creating a Request
+    , rasterCollectionsRastersBatchDelete
+    , RasterCollectionsRastersBatchDelete
+
+    -- * Request Lenses
+    , rcrbdPayload
+    , rcrbdId
+    ) where
+
+import           Network.Google.MapsEngine.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @mapsengine.rasterCollections.rasters.batchDelete@ method which the
+-- 'RasterCollectionsRastersBatchDelete' request conforms to.
+type RasterCollectionsRastersBatchDeleteResource =
+     "mapsengine" :>
+       "v1" :>
+         "rasterCollections" :>
+           Capture "id" Text :>
+             "rasters" :>
+               "batchDelete" :>
+                 QueryParam "alt" AltJSON :>
+                   ReqBody '[JSON]
+                     RasterCollectionsRasterBatchDeleteRequest
+                     :>
+                     Post '[JSON]
+                       RasterCollectionsRastersBatchDeleteResponse
+
+-- | Remove rasters from an existing raster collection. Up to 50 rasters can
+-- be included in a single batchDelete request. Each batchDelete request is
+-- atomic.
+--
+-- /See:/ 'rasterCollectionsRastersBatchDelete' smart constructor.
+data RasterCollectionsRastersBatchDelete = RasterCollectionsRastersBatchDelete
+    { _rcrbdPayload :: !RasterCollectionsRasterBatchDeleteRequest
+    , _rcrbdId      :: !Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'RasterCollectionsRastersBatchDelete' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'rcrbdPayload'
+--
+-- * 'rcrbdId'
+rasterCollectionsRastersBatchDelete
+    :: RasterCollectionsRasterBatchDeleteRequest -- ^ 'rcrbdPayload'
+    -> Text -- ^ 'rcrbdId'
+    -> RasterCollectionsRastersBatchDelete
+rasterCollectionsRastersBatchDelete pRcrbdPayload_ pRcrbdId_ =
+    RasterCollectionsRastersBatchDelete
+    { _rcrbdPayload = pRcrbdPayload_
+    , _rcrbdId = pRcrbdId_
+    }
+
+-- | Multipart request metadata.
+rcrbdPayload :: Lens' RasterCollectionsRastersBatchDelete RasterCollectionsRasterBatchDeleteRequest
+rcrbdPayload
+  = lens _rcrbdPayload (\ s a -> s{_rcrbdPayload = a})
+
+-- | The ID of the raster collection to which these rasters belong.
+rcrbdId :: Lens' RasterCollectionsRastersBatchDelete Text
+rcrbdId = lens _rcrbdId (\ s a -> s{_rcrbdId = a})
+
+instance GoogleRequest
+         RasterCollectionsRastersBatchDelete where
+        type Rs RasterCollectionsRastersBatchDelete =
+             RasterCollectionsRastersBatchDeleteResponse
+        requestClient RasterCollectionsRastersBatchDelete{..}
+          = go _rcrbdId (Just AltJSON) _rcrbdPayload
+              mapsEngineService
+          where go
+                  = buildClient
+                      (Proxy ::
+                         Proxy RasterCollectionsRastersBatchDeleteResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/MapsEngine/RasterCollections/Rasters/BatchInsert.hs b/gen/Network/Google/Resource/MapsEngine/RasterCollections/Rasters/BatchInsert.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/MapsEngine/RasterCollections/Rasters/BatchInsert.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.MapsEngine.RasterCollections.Rasters.BatchInsert
+-- Copyright   : (c) 2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Add rasters to an existing raster collection. Rasters must be
+-- successfully processed in order to be added to a raster collection. Up
+-- to 50 rasters can be included in a single batchInsert request. Each
+-- batchInsert request is atomic.
+--
+-- /See:/ <https://developers.google.com/maps-engine/ Google Maps Engine API Reference> for @mapsengine.rasterCollections.rasters.batchInsert@.
+module Network.Google.Resource.MapsEngine.RasterCollections.Rasters.BatchInsert
+    (
+    -- * REST Resource
+      RasterCollectionsRastersBatchInsertResource
+
+    -- * Creating a Request
+    , rasterCollectionsRastersBatchInsert
+    , RasterCollectionsRastersBatchInsert
+
+    -- * Request Lenses
+    , rcrbiPayload
+    , rcrbiId
+    ) where
+
+import           Network.Google.MapsEngine.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @mapsengine.rasterCollections.rasters.batchInsert@ method which the
+-- 'RasterCollectionsRastersBatchInsert' request conforms to.
+type RasterCollectionsRastersBatchInsertResource =
+     "mapsengine" :>
+       "v1" :>
+         "rasterCollections" :>
+           Capture "id" Text :>
+             "rasters" :>
+               "batchInsert" :>
+                 QueryParam "alt" AltJSON :>
+                   ReqBody '[JSON]
+                     RasterCollectionsRastersBatchInsertRequest
+                     :>
+                     Post '[JSON]
+                       RasterCollectionsRastersBatchInsertResponse
+
+-- | Add rasters to an existing raster collection. Rasters must be
+-- successfully processed in order to be added to a raster collection. Up
+-- to 50 rasters can be included in a single batchInsert request. Each
+-- batchInsert request is atomic.
+--
+-- /See:/ 'rasterCollectionsRastersBatchInsert' smart constructor.
+data RasterCollectionsRastersBatchInsert = RasterCollectionsRastersBatchInsert
+    { _rcrbiPayload :: !RasterCollectionsRastersBatchInsertRequest
+    , _rcrbiId      :: !Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'RasterCollectionsRastersBatchInsert' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'rcrbiPayload'
+--
+-- * 'rcrbiId'
+rasterCollectionsRastersBatchInsert
+    :: RasterCollectionsRastersBatchInsertRequest -- ^ 'rcrbiPayload'
+    -> Text -- ^ 'rcrbiId'
+    -> RasterCollectionsRastersBatchInsert
+rasterCollectionsRastersBatchInsert pRcrbiPayload_ pRcrbiId_ =
+    RasterCollectionsRastersBatchInsert
+    { _rcrbiPayload = pRcrbiPayload_
+    , _rcrbiId = pRcrbiId_
+    }
+
+-- | Multipart request metadata.
+rcrbiPayload :: Lens' RasterCollectionsRastersBatchInsert RasterCollectionsRastersBatchInsertRequest
+rcrbiPayload
+  = lens _rcrbiPayload (\ s a -> s{_rcrbiPayload = a})
+
+-- | The ID of the raster collection to which these rasters belong.
+rcrbiId :: Lens' RasterCollectionsRastersBatchInsert Text
+rcrbiId = lens _rcrbiId (\ s a -> s{_rcrbiId = a})
+
+instance GoogleRequest
+         RasterCollectionsRastersBatchInsert where
+        type Rs RasterCollectionsRastersBatchInsert =
+             RasterCollectionsRastersBatchInsertResponse
+        requestClient RasterCollectionsRastersBatchInsert{..}
+          = go _rcrbiId (Just AltJSON) _rcrbiPayload
+              mapsEngineService
+          where go
+                  = buildClient
+                      (Proxy ::
+                         Proxy RasterCollectionsRastersBatchInsertResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/MapsEngine/RasterCollections/Rasters/List.hs b/gen/Network/Google/Resource/MapsEngine/RasterCollections/Rasters/List.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/MapsEngine/RasterCollections/Rasters/List.hs
@@ -0,0 +1,240 @@
+{-# 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.MapsEngine.RasterCollections.Rasters.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)
+--
+-- Return all rasters within a raster collection.
+--
+-- /See:/ <https://developers.google.com/maps-engine/ Google Maps Engine API Reference> for @mapsengine.rasterCollections.rasters.list@.
+module Network.Google.Resource.MapsEngine.RasterCollections.Rasters.List
+    (
+    -- * REST Resource
+      RasterCollectionsRastersListResource
+
+    -- * Creating a Request
+    , rasterCollectionsRastersList
+    , RasterCollectionsRastersList
+
+    -- * Request Lenses
+    , rcrlCreatedAfter
+    , rcrlCreatorEmail
+    , rcrlRole
+    , rcrlBbox
+    , rcrlId
+    , rcrlModifiedAfter
+    , rcrlModifiedBefore
+    , rcrlPageToken
+    , rcrlSearch
+    , rcrlMaxResults
+    , rcrlTags
+    , rcrlCreatedBefore
+    ) where
+
+import           Network.Google.MapsEngine.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @mapsengine.rasterCollections.rasters.list@ method which the
+-- 'RasterCollectionsRastersList' request conforms to.
+type RasterCollectionsRastersListResource =
+     "mapsengine" :>
+       "v1" :>
+         "rasterCollections" :>
+           Capture "id" Text :>
+             "rasters" :>
+               QueryParam "createdAfter" DateTime' :>
+                 QueryParam "creatorEmail" Text :>
+                   QueryParam "role" RasterCollectionsRastersListRole :>
+                     QueryParam "bbox" Text :>
+                       QueryParam "modifiedAfter" DateTime' :>
+                         QueryParam "modifiedBefore" DateTime' :>
+                           QueryParam "pageToken" Text :>
+                             QueryParam "search" Text :>
+                               QueryParam "maxResults" (Textual Word32) :>
+                                 QueryParam "tags" Text :>
+                                   QueryParam "createdBefore" DateTime' :>
+                                     QueryParam "alt" AltJSON :>
+                                       Get '[JSON]
+                                         RasterCollectionsRastersListResponse
+
+-- | Return all rasters within a raster collection.
+--
+-- /See:/ 'rasterCollectionsRastersList' smart constructor.
+data RasterCollectionsRastersList = RasterCollectionsRastersList
+    { _rcrlCreatedAfter   :: !(Maybe DateTime')
+    , _rcrlCreatorEmail   :: !(Maybe Text)
+    , _rcrlRole           :: !(Maybe RasterCollectionsRastersListRole)
+    , _rcrlBbox           :: !(Maybe Text)
+    , _rcrlId             :: !Text
+    , _rcrlModifiedAfter  :: !(Maybe DateTime')
+    , _rcrlModifiedBefore :: !(Maybe DateTime')
+    , _rcrlPageToken      :: !(Maybe Text)
+    , _rcrlSearch         :: !(Maybe Text)
+    , _rcrlMaxResults     :: !(Maybe (Textual Word32))
+    , _rcrlTags           :: !(Maybe Text)
+    , _rcrlCreatedBefore  :: !(Maybe DateTime')
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'RasterCollectionsRastersList' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'rcrlCreatedAfter'
+--
+-- * 'rcrlCreatorEmail'
+--
+-- * 'rcrlRole'
+--
+-- * 'rcrlBbox'
+--
+-- * 'rcrlId'
+--
+-- * 'rcrlModifiedAfter'
+--
+-- * 'rcrlModifiedBefore'
+--
+-- * 'rcrlPageToken'
+--
+-- * 'rcrlSearch'
+--
+-- * 'rcrlMaxResults'
+--
+-- * 'rcrlTags'
+--
+-- * 'rcrlCreatedBefore'
+rasterCollectionsRastersList
+    :: Text -- ^ 'rcrlId'
+    -> RasterCollectionsRastersList
+rasterCollectionsRastersList pRcrlId_ =
+    RasterCollectionsRastersList
+    { _rcrlCreatedAfter = Nothing
+    , _rcrlCreatorEmail = Nothing
+    , _rcrlRole = Nothing
+    , _rcrlBbox = Nothing
+    , _rcrlId = pRcrlId_
+    , _rcrlModifiedAfter = Nothing
+    , _rcrlModifiedBefore = Nothing
+    , _rcrlPageToken = Nothing
+    , _rcrlSearch = Nothing
+    , _rcrlMaxResults = Nothing
+    , _rcrlTags = Nothing
+    , _rcrlCreatedBefore = Nothing
+    }
+
+-- | An RFC 3339 formatted date-time value (e.g. 1970-01-01T00:00:00Z).
+-- Returned assets will have been created at or after this time.
+rcrlCreatedAfter :: Lens' RasterCollectionsRastersList (Maybe UTCTime)
+rcrlCreatedAfter
+  = lens _rcrlCreatedAfter
+      (\ s a -> s{_rcrlCreatedAfter = a})
+      . mapping _DateTime
+
+-- | An email address representing a user. Returned assets that have been
+-- created by the user associated with the provided email address.
+rcrlCreatorEmail :: Lens' RasterCollectionsRastersList (Maybe Text)
+rcrlCreatorEmail
+  = lens _rcrlCreatorEmail
+      (\ s a -> s{_rcrlCreatorEmail = a})
+
+-- | The role parameter indicates that the response should only contain
+-- assets where the current user has the specified level of access.
+rcrlRole :: Lens' RasterCollectionsRastersList (Maybe RasterCollectionsRastersListRole)
+rcrlRole = lens _rcrlRole (\ s a -> s{_rcrlRole = a})
+
+-- | A bounding box, expressed as \"west,south,east,north\". If set, only
+-- assets which intersect this bounding box will be returned.
+rcrlBbox :: Lens' RasterCollectionsRastersList (Maybe Text)
+rcrlBbox = lens _rcrlBbox (\ s a -> s{_rcrlBbox = a})
+
+-- | The ID of the raster collection to which these rasters belong.
+rcrlId :: Lens' RasterCollectionsRastersList Text
+rcrlId = lens _rcrlId (\ s a -> s{_rcrlId = a})
+
+-- | An RFC 3339 formatted date-time value (e.g. 1970-01-01T00:00:00Z).
+-- Returned assets will have been modified at or after this time.
+rcrlModifiedAfter :: Lens' RasterCollectionsRastersList (Maybe UTCTime)
+rcrlModifiedAfter
+  = lens _rcrlModifiedAfter
+      (\ s a -> s{_rcrlModifiedAfter = a})
+      . mapping _DateTime
+
+-- | An RFC 3339 formatted date-time value (e.g. 1970-01-01T00:00:00Z).
+-- Returned assets will have been modified at or before this time.
+rcrlModifiedBefore :: Lens' RasterCollectionsRastersList (Maybe UTCTime)
+rcrlModifiedBefore
+  = lens _rcrlModifiedBefore
+      (\ s a -> s{_rcrlModifiedBefore = a})
+      . mapping _DateTime
+
+-- | The continuation token, used to page through large result sets. To get
+-- the next page of results, set this parameter to the value of
+-- nextPageToken from the previous response.
+rcrlPageToken :: Lens' RasterCollectionsRastersList (Maybe Text)
+rcrlPageToken
+  = lens _rcrlPageToken
+      (\ s a -> s{_rcrlPageToken = a})
+
+-- | An unstructured search string used to filter the set of results based on
+-- asset metadata.
+rcrlSearch :: Lens' RasterCollectionsRastersList (Maybe Text)
+rcrlSearch
+  = lens _rcrlSearch (\ s a -> s{_rcrlSearch = a})
+
+-- | The maximum number of items to include in a single response page. The
+-- maximum supported value is 100.
+rcrlMaxResults :: Lens' RasterCollectionsRastersList (Maybe Word32)
+rcrlMaxResults
+  = lens _rcrlMaxResults
+      (\ s a -> s{_rcrlMaxResults = a})
+      . mapping _Coerce
+
+-- | A comma separated list of tags. Returned assets will contain all the
+-- tags from the list.
+rcrlTags :: Lens' RasterCollectionsRastersList (Maybe Text)
+rcrlTags = lens _rcrlTags (\ s a -> s{_rcrlTags = a})
+
+-- | An RFC 3339 formatted date-time value (e.g. 1970-01-01T00:00:00Z).
+-- Returned assets will have been created at or before this time.
+rcrlCreatedBefore :: Lens' RasterCollectionsRastersList (Maybe UTCTime)
+rcrlCreatedBefore
+  = lens _rcrlCreatedBefore
+      (\ s a -> s{_rcrlCreatedBefore = a})
+      . mapping _DateTime
+
+instance GoogleRequest RasterCollectionsRastersList
+         where
+        type Rs RasterCollectionsRastersList =
+             RasterCollectionsRastersListResponse
+        requestClient RasterCollectionsRastersList{..}
+          = go _rcrlId _rcrlCreatedAfter _rcrlCreatorEmail
+              _rcrlRole
+              _rcrlBbox
+              _rcrlModifiedAfter
+              _rcrlModifiedBefore
+              _rcrlPageToken
+              _rcrlSearch
+              _rcrlMaxResults
+              _rcrlTags
+              _rcrlCreatedBefore
+              (Just AltJSON)
+              mapsEngineService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy RasterCollectionsRastersListResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/MapsEngine/Rasters/Delete.hs b/gen/Network/Google/Resource/MapsEngine/Rasters/Delete.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/MapsEngine/Rasters/Delete.hs
@@ -0,0 +1,83 @@
+{-# LANGUAGE DataKinds          #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE FlexibleInstances  #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+{-# LANGUAGE TypeOperators      #-}
+
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
+
+-- |
+-- Module      : Network.Google.Resource.MapsEngine.Rasters.Delete
+-- Copyright   : (c) 2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Delete a raster.
+--
+-- /See:/ <https://developers.google.com/maps-engine/ Google Maps Engine API Reference> for @mapsengine.rasters.delete@.
+module Network.Google.Resource.MapsEngine.Rasters.Delete
+    (
+    -- * REST Resource
+      RastersDeleteResource
+
+    -- * Creating a Request
+    , rastersDelete
+    , RastersDelete
+
+    -- * Request Lenses
+    , rdId
+    ) where
+
+import           Network.Google.MapsEngine.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @mapsengine.rasters.delete@ method which the
+-- 'RastersDelete' request conforms to.
+type RastersDeleteResource =
+     "mapsengine" :>
+       "v1" :>
+         "rasters" :>
+           Capture "id" Text :>
+             QueryParam "alt" AltJSON :> Delete '[JSON] ()
+
+-- | Delete a raster.
+--
+-- /See:/ 'rastersDelete' smart constructor.
+newtype RastersDelete = RastersDelete
+    { _rdId :: Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'RastersDelete' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'rdId'
+rastersDelete
+    :: Text -- ^ 'rdId'
+    -> RastersDelete
+rastersDelete pRdId_ =
+    RastersDelete
+    { _rdId = pRdId_
+    }
+
+-- | The ID of the raster. Only the raster creator or project owner are
+-- permitted to delete. If the raster is included in a layer or mosaic, the
+-- request will fail. Remove it from all parents prior to deleting.
+rdId :: Lens' RastersDelete Text
+rdId = lens _rdId (\ s a -> s{_rdId = a})
+
+instance GoogleRequest RastersDelete where
+        type Rs RastersDelete = ()
+        requestClient RastersDelete{..}
+          = go _rdId (Just AltJSON) mapsEngineService
+          where go
+                  = buildClient (Proxy :: Proxy RastersDeleteResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/MapsEngine/Rasters/Files/Insert.hs b/gen/Network/Google/Resource/MapsEngine/Rasters/Files/Insert.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/MapsEngine/Rasters/Files/Insert.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.MapsEngine.Rasters.Files.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)
+--
+-- Upload a file to a raster asset.
+--
+-- /See:/ <https://developers.google.com/maps-engine/ Google Maps Engine API Reference> for @mapsengine.rasters.files.insert@.
+module Network.Google.Resource.MapsEngine.Rasters.Files.Insert
+    (
+    -- * REST Resource
+      RastersFilesInsertResource
+
+    -- * Creating a Request
+    , rastersFilesInsert
+    , RastersFilesInsert
+
+    -- * Request Lenses
+    , rfiId
+    , rfiFilename
+    ) where
+
+import           Network.Google.MapsEngine.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @mapsengine.rasters.files.insert@ method which the
+-- 'RastersFilesInsert' request conforms to.
+type RastersFilesInsertResource =
+     "mapsengine" :>
+       "v1" :>
+         "rasters" :>
+           Capture "id" Text :>
+             "files" :>
+               QueryParam "filename" Text :>
+                 QueryParam "alt" AltJSON :> Post '[JSON] ()
+       :<|>
+       "upload" :>
+         "mapsengine" :>
+           "v1" :>
+             "rasters" :>
+               Capture "id" Text :>
+                 "files" :>
+                   QueryParam "filename" Text :>
+                     QueryParam "alt" AltJSON :>
+                       QueryParam "uploadType" AltMedia :>
+                         ReqBody '[OctetStream] RequestBody :> Post '[JSON] ()
+
+-- | Upload a file to a raster asset.
+--
+-- /See:/ 'rastersFilesInsert' smart constructor.
+data RastersFilesInsert = RastersFilesInsert
+    { _rfiId       :: !Text
+    , _rfiFilename :: !Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'RastersFilesInsert' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'rfiId'
+--
+-- * 'rfiFilename'
+rastersFilesInsert
+    :: Text -- ^ 'rfiId'
+    -> Text -- ^ 'rfiFilename'
+    -> RastersFilesInsert
+rastersFilesInsert pRfiId_ pRfiFilename_ =
+    RastersFilesInsert
+    { _rfiId = pRfiId_
+    , _rfiFilename = pRfiFilename_
+    }
+
+-- | The ID of the raster asset.
+rfiId :: Lens' RastersFilesInsert Text
+rfiId = lens _rfiId (\ s a -> s{_rfiId = a})
+
+-- | The file name of this uploaded file.
+rfiFilename :: Lens' RastersFilesInsert Text
+rfiFilename
+  = lens _rfiFilename (\ s a -> s{_rfiFilename = a})
+
+instance GoogleRequest RastersFilesInsert where
+        type Rs RastersFilesInsert = ()
+        requestClient RastersFilesInsert{..}
+          = go _rfiId (Just _rfiFilename) (Just AltJSON)
+              mapsEngineService
+          where go :<|> _
+                  = buildClient
+                      (Proxy :: Proxy RastersFilesInsertResource)
+                      mempty
+
+instance GoogleRequest
+         (MediaUpload RastersFilesInsert) where
+        type Rs (MediaUpload RastersFilesInsert) = ()
+        requestClient
+          (MediaUpload RastersFilesInsert{..} body)
+          = go _rfiId (Just _rfiFilename) (Just AltJSON)
+              (Just AltMedia)
+              body
+              mapsEngineService
+          where _ :<|> go
+                  = buildClient
+                      (Proxy :: Proxy RastersFilesInsertResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/MapsEngine/Rasters/Get.hs b/gen/Network/Google/Resource/MapsEngine/Rasters/Get.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/MapsEngine/Rasters/Get.hs
@@ -0,0 +1,81 @@
+{-# 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.MapsEngine.Rasters.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)
+--
+-- Return metadata for a single raster.
+--
+-- /See:/ <https://developers.google.com/maps-engine/ Google Maps Engine API Reference> for @mapsengine.rasters.get@.
+module Network.Google.Resource.MapsEngine.Rasters.Get
+    (
+    -- * REST Resource
+      RastersGetResource
+
+    -- * Creating a Request
+    , rastersGet
+    , RastersGet
+
+    -- * Request Lenses
+    , rgId
+    ) where
+
+import           Network.Google.MapsEngine.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @mapsengine.rasters.get@ method which the
+-- 'RastersGet' request conforms to.
+type RastersGetResource =
+     "mapsengine" :>
+       "v1" :>
+         "rasters" :>
+           Capture "id" Text :>
+             QueryParam "alt" AltJSON :> Get '[JSON] Raster
+
+-- | Return metadata for a single raster.
+--
+-- /See:/ 'rastersGet' smart constructor.
+newtype RastersGet = RastersGet
+    { _rgId :: Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'RastersGet' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'rgId'
+rastersGet
+    :: Text -- ^ 'rgId'
+    -> RastersGet
+rastersGet pRgId_ =
+    RastersGet
+    { _rgId = pRgId_
+    }
+
+-- | The ID of the raster.
+rgId :: Lens' RastersGet Text
+rgId = lens _rgId (\ s a -> s{_rgId = a})
+
+instance GoogleRequest RastersGet where
+        type Rs RastersGet = Raster
+        requestClient RastersGet{..}
+          = go _rgId (Just AltJSON) mapsEngineService
+          where go
+                  = buildClient (Proxy :: Proxy RastersGetResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/MapsEngine/Rasters/List.hs b/gen/Network/Google/Resource/MapsEngine/Rasters/List.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/MapsEngine/Rasters/List.hs
@@ -0,0 +1,251 @@
+{-# 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.MapsEngine.Rasters.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)
+--
+-- Return all rasters readable by the current user.
+--
+-- /See:/ <https://developers.google.com/maps-engine/ Google Maps Engine API Reference> for @mapsengine.rasters.list@.
+module Network.Google.Resource.MapsEngine.Rasters.List
+    (
+    -- * REST Resource
+      RastersListResource
+
+    -- * Creating a Request
+    , rastersList
+    , RastersList
+
+    -- * Request Lenses
+    , rlCreatedAfter
+    , rlCreatorEmail
+    , rlRole
+    , rlBbox
+    , rlProcessingStatus
+    , rlModifiedAfter
+    , rlModifiedBefore
+    , rlPageToken
+    , rlProjectId
+    , rlSearch
+    , rlMaxResults
+    , rlTags
+    , rlCreatedBefore
+    ) where
+
+import           Network.Google.MapsEngine.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @mapsengine.rasters.list@ method which the
+-- 'RastersList' request conforms to.
+type RastersListResource =
+     "mapsengine" :>
+       "v1" :>
+         "rasters" :>
+           QueryParam "projectId" Text :>
+             QueryParam "createdAfter" DateTime' :>
+               QueryParam "creatorEmail" Text :>
+                 QueryParam "role" RastersListRole :>
+                   QueryParam "bbox" Text :>
+                     QueryParam "processingStatus"
+                       RastersListProcessingStatus
+                       :>
+                       QueryParam "modifiedAfter" DateTime' :>
+                         QueryParam "modifiedBefore" DateTime' :>
+                           QueryParam "pageToken" Text :>
+                             QueryParam "search" Text :>
+                               QueryParam "maxResults" (Textual Word32) :>
+                                 QueryParam "tags" Text :>
+                                   QueryParam "createdBefore" DateTime' :>
+                                     QueryParam "alt" AltJSON :>
+                                       Get '[JSON] RastersListResponse
+
+-- | Return all rasters readable by the current user.
+--
+-- /See:/ 'rastersList' smart constructor.
+data RastersList = RastersList
+    { _rlCreatedAfter     :: !(Maybe DateTime')
+    , _rlCreatorEmail     :: !(Maybe Text)
+    , _rlRole             :: !(Maybe RastersListRole)
+    , _rlBbox             :: !(Maybe Text)
+    , _rlProcessingStatus :: !(Maybe RastersListProcessingStatus)
+    , _rlModifiedAfter    :: !(Maybe DateTime')
+    , _rlModifiedBefore   :: !(Maybe DateTime')
+    , _rlPageToken        :: !(Maybe Text)
+    , _rlProjectId        :: !Text
+    , _rlSearch           :: !(Maybe Text)
+    , _rlMaxResults       :: !(Maybe (Textual Word32))
+    , _rlTags             :: !(Maybe Text)
+    , _rlCreatedBefore    :: !(Maybe DateTime')
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'RastersList' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'rlCreatedAfter'
+--
+-- * 'rlCreatorEmail'
+--
+-- * 'rlRole'
+--
+-- * 'rlBbox'
+--
+-- * 'rlProcessingStatus'
+--
+-- * 'rlModifiedAfter'
+--
+-- * 'rlModifiedBefore'
+--
+-- * 'rlPageToken'
+--
+-- * 'rlProjectId'
+--
+-- * 'rlSearch'
+--
+-- * 'rlMaxResults'
+--
+-- * 'rlTags'
+--
+-- * 'rlCreatedBefore'
+rastersList
+    :: Text -- ^ 'rlProjectId'
+    -> RastersList
+rastersList pRlProjectId_ =
+    RastersList
+    { _rlCreatedAfter = Nothing
+    , _rlCreatorEmail = Nothing
+    , _rlRole = Nothing
+    , _rlBbox = Nothing
+    , _rlProcessingStatus = Nothing
+    , _rlModifiedAfter = Nothing
+    , _rlModifiedBefore = Nothing
+    , _rlPageToken = Nothing
+    , _rlProjectId = pRlProjectId_
+    , _rlSearch = Nothing
+    , _rlMaxResults = Nothing
+    , _rlTags = Nothing
+    , _rlCreatedBefore = Nothing
+    }
+
+-- | An RFC 3339 formatted date-time value (e.g. 1970-01-01T00:00:00Z).
+-- Returned assets will have been created at or after this time.
+rlCreatedAfter :: Lens' RastersList (Maybe UTCTime)
+rlCreatedAfter
+  = lens _rlCreatedAfter
+      (\ s a -> s{_rlCreatedAfter = a})
+      . mapping _DateTime
+
+-- | An email address representing a user. Returned assets that have been
+-- created by the user associated with the provided email address.
+rlCreatorEmail :: Lens' RastersList (Maybe Text)
+rlCreatorEmail
+  = lens _rlCreatorEmail
+      (\ s a -> s{_rlCreatorEmail = a})
+
+-- | The role parameter indicates that the response should only contain
+-- assets where the current user has the specified level of access.
+rlRole :: Lens' RastersList (Maybe RastersListRole)
+rlRole = lens _rlRole (\ s a -> s{_rlRole = a})
+
+-- | A bounding box, expressed as \"west,south,east,north\". If set, only
+-- assets which intersect this bounding box will be returned.
+rlBbox :: Lens' RastersList (Maybe Text)
+rlBbox = lens _rlBbox (\ s a -> s{_rlBbox = a})
+
+rlProcessingStatus :: Lens' RastersList (Maybe RastersListProcessingStatus)
+rlProcessingStatus
+  = lens _rlProcessingStatus
+      (\ s a -> s{_rlProcessingStatus = a})
+
+-- | An RFC 3339 formatted date-time value (e.g. 1970-01-01T00:00:00Z).
+-- Returned assets will have been modified at or after this time.
+rlModifiedAfter :: Lens' RastersList (Maybe UTCTime)
+rlModifiedAfter
+  = lens _rlModifiedAfter
+      (\ s a -> s{_rlModifiedAfter = a})
+      . mapping _DateTime
+
+-- | An RFC 3339 formatted date-time value (e.g. 1970-01-01T00:00:00Z).
+-- Returned assets will have been modified at or before this time.
+rlModifiedBefore :: Lens' RastersList (Maybe UTCTime)
+rlModifiedBefore
+  = lens _rlModifiedBefore
+      (\ s a -> s{_rlModifiedBefore = a})
+      . mapping _DateTime
+
+-- | The continuation token, used to page through large result sets. To get
+-- the next page of results, set this parameter to the value of
+-- nextPageToken from the previous response.
+rlPageToken :: Lens' RastersList (Maybe Text)
+rlPageToken
+  = lens _rlPageToken (\ s a -> s{_rlPageToken = a})
+
+-- | The ID of a Maps Engine project, used to filter the response. To list
+-- all available projects with their IDs, send a Projects: list request.
+-- You can also find your project ID as the value of the DashboardPlace:cid
+-- URL parameter when signed in to mapsengine.google.com.
+rlProjectId :: Lens' RastersList Text
+rlProjectId
+  = lens _rlProjectId (\ s a -> s{_rlProjectId = a})
+
+-- | An unstructured search string used to filter the set of results based on
+-- asset metadata.
+rlSearch :: Lens' RastersList (Maybe Text)
+rlSearch = lens _rlSearch (\ s a -> s{_rlSearch = a})
+
+-- | The maximum number of items to include in a single response page. The
+-- maximum supported value is 100.
+rlMaxResults :: Lens' RastersList (Maybe Word32)
+rlMaxResults
+  = lens _rlMaxResults (\ s a -> s{_rlMaxResults = a})
+      . mapping _Coerce
+
+-- | A comma separated list of tags. Returned assets will contain all the
+-- tags from the list.
+rlTags :: Lens' RastersList (Maybe Text)
+rlTags = lens _rlTags (\ s a -> s{_rlTags = a})
+
+-- | An RFC 3339 formatted date-time value (e.g. 1970-01-01T00:00:00Z).
+-- Returned assets will have been created at or before this time.
+rlCreatedBefore :: Lens' RastersList (Maybe UTCTime)
+rlCreatedBefore
+  = lens _rlCreatedBefore
+      (\ s a -> s{_rlCreatedBefore = a})
+      . mapping _DateTime
+
+instance GoogleRequest RastersList where
+        type Rs RastersList = RastersListResponse
+        requestClient RastersList{..}
+          = go (Just _rlProjectId) _rlCreatedAfter
+              _rlCreatorEmail
+              _rlRole
+              _rlBbox
+              _rlProcessingStatus
+              _rlModifiedAfter
+              _rlModifiedBefore
+              _rlPageToken
+              _rlSearch
+              _rlMaxResults
+              _rlTags
+              _rlCreatedBefore
+              (Just AltJSON)
+              mapsEngineService
+          where go
+                  = buildClient (Proxy :: Proxy RastersListResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/MapsEngine/Rasters/Parents/List.hs b/gen/Network/Google/Resource/MapsEngine/Rasters/Parents/List.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/MapsEngine/Rasters/Parents/List.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.MapsEngine.Rasters.Parents.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)
+--
+-- Return all parent ids of the specified rasters.
+--
+-- /See:/ <https://developers.google.com/maps-engine/ Google Maps Engine API Reference> for @mapsengine.rasters.parents.list@.
+module Network.Google.Resource.MapsEngine.Rasters.Parents.List
+    (
+    -- * REST Resource
+      RastersParentsListResource
+
+    -- * Creating a Request
+    , rastersParentsList
+    , RastersParentsList
+
+    -- * Request Lenses
+    , rId
+    , rPageToken
+    , rMaxResults
+    ) where
+
+import           Network.Google.MapsEngine.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @mapsengine.rasters.parents.list@ method which the
+-- 'RastersParentsList' request conforms to.
+type RastersParentsListResource =
+     "mapsengine" :>
+       "v1" :>
+         "rasters" :>
+           Capture "id" Text :>
+             "parents" :>
+               QueryParam "pageToken" Text :>
+                 QueryParam "maxResults" (Textual Word32) :>
+                   QueryParam "alt" AltJSON :>
+                     Get '[JSON] ParentsListResponse
+
+-- | Return all parent ids of the specified rasters.
+--
+-- /See:/ 'rastersParentsList' smart constructor.
+data RastersParentsList = RastersParentsList
+    { _rId         :: !Text
+    , _rPageToken  :: !(Maybe Text)
+    , _rMaxResults :: !(Maybe (Textual Word32))
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'RastersParentsList' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'rId'
+--
+-- * 'rPageToken'
+--
+-- * 'rMaxResults'
+rastersParentsList
+    :: Text -- ^ 'rId'
+    -> RastersParentsList
+rastersParentsList pRId_ =
+    RastersParentsList
+    { _rId = pRId_
+    , _rPageToken = Nothing
+    , _rMaxResults = Nothing
+    }
+
+-- | The ID of the rasters whose parents will be listed.
+rId :: Lens' RastersParentsList Text
+rId = lens _rId (\ s a -> s{_rId = a})
+
+-- | The continuation token, used to page through large result sets. To get
+-- the next page of results, set this parameter to the value of
+-- nextPageToken from the previous response.
+rPageToken :: Lens' RastersParentsList (Maybe Text)
+rPageToken
+  = lens _rPageToken (\ s a -> s{_rPageToken = a})
+
+-- | The maximum number of items to include in a single response page. The
+-- maximum supported value is 50.
+rMaxResults :: Lens' RastersParentsList (Maybe Word32)
+rMaxResults
+  = lens _rMaxResults (\ s a -> s{_rMaxResults = a}) .
+      mapping _Coerce
+
+instance GoogleRequest RastersParentsList where
+        type Rs RastersParentsList = ParentsListResponse
+        requestClient RastersParentsList{..}
+          = go _rId _rPageToken _rMaxResults (Just AltJSON)
+              mapsEngineService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy RastersParentsListResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/MapsEngine/Rasters/Patch.hs b/gen/Network/Google/Resource/MapsEngine/Rasters/Patch.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/MapsEngine/Rasters/Patch.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.MapsEngine.Rasters.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)
+--
+-- Mutate a raster asset.
+--
+-- /See:/ <https://developers.google.com/maps-engine/ Google Maps Engine API Reference> for @mapsengine.rasters.patch@.
+module Network.Google.Resource.MapsEngine.Rasters.Patch
+    (
+    -- * REST Resource
+      RastersPatchResource
+
+    -- * Creating a Request
+    , rastersPatch
+    , RastersPatch
+
+    -- * Request Lenses
+    , rppPayload
+    , rppId
+    ) where
+
+import           Network.Google.MapsEngine.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @mapsengine.rasters.patch@ method which the
+-- 'RastersPatch' request conforms to.
+type RastersPatchResource =
+     "mapsengine" :>
+       "v1" :>
+         "rasters" :>
+           Capture "id" Text :>
+             QueryParam "alt" AltJSON :>
+               ReqBody '[JSON] Raster :> Patch '[JSON] ()
+
+-- | Mutate a raster asset.
+--
+-- /See:/ 'rastersPatch' smart constructor.
+data RastersPatch = RastersPatch
+    { _rppPayload :: !Raster
+    , _rppId      :: !Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'RastersPatch' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'rppPayload'
+--
+-- * 'rppId'
+rastersPatch
+    :: Raster -- ^ 'rppPayload'
+    -> Text -- ^ 'rppId'
+    -> RastersPatch
+rastersPatch pRppPayload_ pRppId_ =
+    RastersPatch
+    { _rppPayload = pRppPayload_
+    , _rppId = pRppId_
+    }
+
+-- | Multipart request metadata.
+rppPayload :: Lens' RastersPatch Raster
+rppPayload
+  = lens _rppPayload (\ s a -> s{_rppPayload = a})
+
+-- | The ID of the raster.
+rppId :: Lens' RastersPatch Text
+rppId = lens _rppId (\ s a -> s{_rppId = a})
+
+instance GoogleRequest RastersPatch where
+        type Rs RastersPatch = ()
+        requestClient RastersPatch{..}
+          = go _rppId (Just AltJSON) _rppPayload
+              mapsEngineService
+          where go
+                  = buildClient (Proxy :: Proxy RastersPatchResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/MapsEngine/Rasters/Permissions/BatchDelete.hs b/gen/Network/Google/Resource/MapsEngine/Rasters/Permissions/BatchDelete.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/MapsEngine/Rasters/Permissions/BatchDelete.hs
@@ -0,0 +1,101 @@
+{-# LANGUAGE DataKinds          #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE FlexibleInstances  #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+{-# LANGUAGE TypeOperators      #-}
+
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
+
+-- |
+-- Module      : Network.Google.Resource.MapsEngine.Rasters.Permissions.BatchDelete
+-- 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)
+--
+-- Remove permission entries from an already existing asset.
+--
+-- /See:/ <https://developers.google.com/maps-engine/ Google Maps Engine API Reference> for @mapsengine.rasters.permissions.batchDelete@.
+module Network.Google.Resource.MapsEngine.Rasters.Permissions.BatchDelete
+    (
+    -- * REST Resource
+      RastersPermissionsBatchDeleteResource
+
+    -- * Creating a Request
+    , rastersPermissionsBatchDelete
+    , RastersPermissionsBatchDelete
+
+    -- * Request Lenses
+    , rpbdPayload
+    , rpbdId
+    ) where
+
+import           Network.Google.MapsEngine.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @mapsengine.rasters.permissions.batchDelete@ method which the
+-- 'RastersPermissionsBatchDelete' request conforms to.
+type RastersPermissionsBatchDeleteResource =
+     "mapsengine" :>
+       "v1" :>
+         "rasters" :>
+           Capture "id" Text :>
+             "permissions" :>
+               "batchDelete" :>
+                 QueryParam "alt" AltJSON :>
+                   ReqBody '[JSON] PermissionsBatchDeleteRequest :>
+                     Post '[JSON] PermissionsBatchDeleteResponse
+
+-- | Remove permission entries from an already existing asset.
+--
+-- /See:/ 'rastersPermissionsBatchDelete' smart constructor.
+data RastersPermissionsBatchDelete = RastersPermissionsBatchDelete
+    { _rpbdPayload :: !PermissionsBatchDeleteRequest
+    , _rpbdId      :: !Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'RastersPermissionsBatchDelete' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'rpbdPayload'
+--
+-- * 'rpbdId'
+rastersPermissionsBatchDelete
+    :: PermissionsBatchDeleteRequest -- ^ 'rpbdPayload'
+    -> Text -- ^ 'rpbdId'
+    -> RastersPermissionsBatchDelete
+rastersPermissionsBatchDelete pRpbdPayload_ pRpbdId_ =
+    RastersPermissionsBatchDelete
+    { _rpbdPayload = pRpbdPayload_
+    , _rpbdId = pRpbdId_
+    }
+
+-- | Multipart request metadata.
+rpbdPayload :: Lens' RastersPermissionsBatchDelete PermissionsBatchDeleteRequest
+rpbdPayload
+  = lens _rpbdPayload (\ s a -> s{_rpbdPayload = a})
+
+-- | The ID of the asset from which permissions will be removed.
+rpbdId :: Lens' RastersPermissionsBatchDelete Text
+rpbdId = lens _rpbdId (\ s a -> s{_rpbdId = a})
+
+instance GoogleRequest RastersPermissionsBatchDelete
+         where
+        type Rs RastersPermissionsBatchDelete =
+             PermissionsBatchDeleteResponse
+        requestClient RastersPermissionsBatchDelete{..}
+          = go _rpbdId (Just AltJSON) _rpbdPayload
+              mapsEngineService
+          where go
+                  = buildClient
+                      (Proxy ::
+                         Proxy RastersPermissionsBatchDeleteResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/MapsEngine/Rasters/Permissions/BatchUpdate.hs b/gen/Network/Google/Resource/MapsEngine/Rasters/Permissions/BatchUpdate.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/MapsEngine/Rasters/Permissions/BatchUpdate.hs
@@ -0,0 +1,105 @@
+{-# 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.MapsEngine.Rasters.Permissions.BatchUpdate
+-- Copyright   : (c) 2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Add or update permission entries to an already existing asset. An asset
+-- can hold up to 20 different permission entries. Each batchInsert request
+-- is atomic.
+--
+-- /See:/ <https://developers.google.com/maps-engine/ Google Maps Engine API Reference> for @mapsengine.rasters.permissions.batchUpdate@.
+module Network.Google.Resource.MapsEngine.Rasters.Permissions.BatchUpdate
+    (
+    -- * REST Resource
+      RastersPermissionsBatchUpdateResource
+
+    -- * Creating a Request
+    , rastersPermissionsBatchUpdate
+    , RastersPermissionsBatchUpdate
+
+    -- * Request Lenses
+    , rpbuPayload
+    , rpbuId
+    ) where
+
+import           Network.Google.MapsEngine.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @mapsengine.rasters.permissions.batchUpdate@ method which the
+-- 'RastersPermissionsBatchUpdate' request conforms to.
+type RastersPermissionsBatchUpdateResource =
+     "mapsengine" :>
+       "v1" :>
+         "rasters" :>
+           Capture "id" Text :>
+             "permissions" :>
+               "batchUpdate" :>
+                 QueryParam "alt" AltJSON :>
+                   ReqBody '[JSON] PermissionsBatchUpdateRequest :>
+                     Post '[JSON] PermissionsBatchUpdateResponse
+
+-- | Add or update permission entries to an already existing asset. An asset
+-- can hold up to 20 different permission entries. Each batchInsert request
+-- is atomic.
+--
+-- /See:/ 'rastersPermissionsBatchUpdate' smart constructor.
+data RastersPermissionsBatchUpdate = RastersPermissionsBatchUpdate
+    { _rpbuPayload :: !PermissionsBatchUpdateRequest
+    , _rpbuId      :: !Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'RastersPermissionsBatchUpdate' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'rpbuPayload'
+--
+-- * 'rpbuId'
+rastersPermissionsBatchUpdate
+    :: PermissionsBatchUpdateRequest -- ^ 'rpbuPayload'
+    -> Text -- ^ 'rpbuId'
+    -> RastersPermissionsBatchUpdate
+rastersPermissionsBatchUpdate pRpbuPayload_ pRpbuId_ =
+    RastersPermissionsBatchUpdate
+    { _rpbuPayload = pRpbuPayload_
+    , _rpbuId = pRpbuId_
+    }
+
+-- | Multipart request metadata.
+rpbuPayload :: Lens' RastersPermissionsBatchUpdate PermissionsBatchUpdateRequest
+rpbuPayload
+  = lens _rpbuPayload (\ s a -> s{_rpbuPayload = a})
+
+-- | The ID of the asset to which permissions will be added.
+rpbuId :: Lens' RastersPermissionsBatchUpdate Text
+rpbuId = lens _rpbuId (\ s a -> s{_rpbuId = a})
+
+instance GoogleRequest RastersPermissionsBatchUpdate
+         where
+        type Rs RastersPermissionsBatchUpdate =
+             PermissionsBatchUpdateResponse
+        requestClient RastersPermissionsBatchUpdate{..}
+          = go _rpbuId (Just AltJSON) _rpbuPayload
+              mapsEngineService
+          where go
+                  = buildClient
+                      (Proxy ::
+                         Proxy RastersPermissionsBatchUpdateResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/MapsEngine/Rasters/Permissions/List.hs b/gen/Network/Google/Resource/MapsEngine/Rasters/Permissions/List.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/MapsEngine/Rasters/Permissions/List.hs
@@ -0,0 +1,85 @@
+{-# LANGUAGE DataKinds          #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE FlexibleInstances  #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+{-# LANGUAGE TypeOperators      #-}
+
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
+
+-- |
+-- Module      : Network.Google.Resource.MapsEngine.Rasters.Permissions.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)
+--
+-- Return all of the permissions for the specified asset.
+--
+-- /See:/ <https://developers.google.com/maps-engine/ Google Maps Engine API Reference> for @mapsengine.rasters.permissions.list@.
+module Network.Google.Resource.MapsEngine.Rasters.Permissions.List
+    (
+    -- * REST Resource
+      RastersPermissionsListResource
+
+    -- * Creating a Request
+    , rastersPermissionsList
+    , RastersPermissionsList
+
+    -- * Request Lenses
+    , rplId
+    ) where
+
+import           Network.Google.MapsEngine.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @mapsengine.rasters.permissions.list@ method which the
+-- 'RastersPermissionsList' request conforms to.
+type RastersPermissionsListResource =
+     "mapsengine" :>
+       "v1" :>
+         "rasters" :>
+           Capture "id" Text :>
+             "permissions" :>
+               QueryParam "alt" AltJSON :>
+                 Get '[JSON] PermissionsListResponse
+
+-- | Return all of the permissions for the specified asset.
+--
+-- /See:/ 'rastersPermissionsList' smart constructor.
+newtype RastersPermissionsList = RastersPermissionsList
+    { _rplId :: Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'RastersPermissionsList' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'rplId'
+rastersPermissionsList
+    :: Text -- ^ 'rplId'
+    -> RastersPermissionsList
+rastersPermissionsList pRplId_ =
+    RastersPermissionsList
+    { _rplId = pRplId_
+    }
+
+-- | The ID of the asset whose permissions will be listed.
+rplId :: Lens' RastersPermissionsList Text
+rplId = lens _rplId (\ s a -> s{_rplId = a})
+
+instance GoogleRequest RastersPermissionsList where
+        type Rs RastersPermissionsList =
+             PermissionsListResponse
+        requestClient RastersPermissionsList{..}
+          = go _rplId (Just AltJSON) mapsEngineService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy RastersPermissionsListResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/MapsEngine/Rasters/Process.hs b/gen/Network/Google/Resource/MapsEngine/Rasters/Process.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/MapsEngine/Rasters/Process.hs
@@ -0,0 +1,83 @@
+{-# LANGUAGE DataKinds          #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE FlexibleInstances  #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+{-# LANGUAGE TypeOperators      #-}
+
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
+
+-- |
+-- Module      : Network.Google.Resource.MapsEngine.Rasters.Process
+-- 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)
+--
+-- Process a raster asset.
+--
+-- /See:/ <https://developers.google.com/maps-engine/ Google Maps Engine API Reference> for @mapsengine.rasters.process@.
+module Network.Google.Resource.MapsEngine.Rasters.Process
+    (
+    -- * REST Resource
+      RastersProcessResource
+
+    -- * Creating a Request
+    , rastersProcess
+    , RastersProcess
+
+    -- * Request Lenses
+    , rpId
+    ) where
+
+import           Network.Google.MapsEngine.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @mapsengine.rasters.process@ method which the
+-- 'RastersProcess' request conforms to.
+type RastersProcessResource =
+     "mapsengine" :>
+       "v1" :>
+         "rasters" :>
+           Capture "id" Text :>
+             "process" :>
+               QueryParam "alt" AltJSON :>
+                 Post '[JSON] ProcessResponse
+
+-- | Process a raster asset.
+--
+-- /See:/ 'rastersProcess' smart constructor.
+newtype RastersProcess = RastersProcess
+    { _rpId :: Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'RastersProcess' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'rpId'
+rastersProcess
+    :: Text -- ^ 'rpId'
+    -> RastersProcess
+rastersProcess pRpId_ =
+    RastersProcess
+    { _rpId = pRpId_
+    }
+
+-- | The ID of the raster.
+rpId :: Lens' RastersProcess Text
+rpId = lens _rpId (\ s a -> s{_rpId = a})
+
+instance GoogleRequest RastersProcess where
+        type Rs RastersProcess = ProcessResponse
+        requestClient RastersProcess{..}
+          = go _rpId (Just AltJSON) mapsEngineService
+          where go
+                  = buildClient (Proxy :: Proxy RastersProcessResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/MapsEngine/Rasters/Upload.hs b/gen/Network/Google/Resource/MapsEngine/Rasters/Upload.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/MapsEngine/Rasters/Upload.hs
@@ -0,0 +1,83 @@
+{-# LANGUAGE DataKinds          #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE FlexibleInstances  #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+{-# LANGUAGE TypeOperators      #-}
+
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
+
+-- |
+-- Module      : Network.Google.Resource.MapsEngine.Rasters.Upload
+-- Copyright   : (c) 2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Create a skeleton raster asset for upload.
+--
+-- /See:/ <https://developers.google.com/maps-engine/ Google Maps Engine API Reference> for @mapsengine.rasters.upload@.
+module Network.Google.Resource.MapsEngine.Rasters.Upload
+    (
+    -- * REST Resource
+      RastersUploadResource
+
+    -- * Creating a Request
+    , rastersUpload
+    , RastersUpload
+
+    -- * Request Lenses
+    , ruPayload
+    ) where
+
+import           Network.Google.MapsEngine.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @mapsengine.rasters.upload@ method which the
+-- 'RastersUpload' request conforms to.
+type RastersUploadResource =
+     "mapsengine" :>
+       "v1" :>
+         "rasters" :>
+           "upload" :>
+             QueryParam "alt" AltJSON :>
+               ReqBody '[JSON] Raster :> Post '[JSON] Raster
+
+-- | Create a skeleton raster asset for upload.
+--
+-- /See:/ 'rastersUpload' smart constructor.
+newtype RastersUpload = RastersUpload
+    { _ruPayload :: Raster
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'RastersUpload' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'ruPayload'
+rastersUpload
+    :: Raster -- ^ 'ruPayload'
+    -> RastersUpload
+rastersUpload pRuPayload_ =
+    RastersUpload
+    { _ruPayload = pRuPayload_
+    }
+
+-- | Multipart request metadata.
+ruPayload :: Lens' RastersUpload Raster
+ruPayload
+  = lens _ruPayload (\ s a -> s{_ruPayload = a})
+
+instance GoogleRequest RastersUpload where
+        type Rs RastersUpload = Raster
+        requestClient RastersUpload{..}
+          = go (Just AltJSON) _ruPayload mapsEngineService
+          where go
+                  = buildClient (Proxy :: Proxy RastersUploadResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/MapsEngine/Tables/Create.hs b/gen/Network/Google/Resource/MapsEngine/Tables/Create.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/MapsEngine/Tables/Create.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.MapsEngine.Tables.Create
+-- Copyright   : (c) 2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Create a table asset.
+--
+-- /See:/ <https://developers.google.com/maps-engine/ Google Maps Engine API Reference> for @mapsengine.tables.create@.
+module Network.Google.Resource.MapsEngine.Tables.Create
+    (
+    -- * REST Resource
+      TablesCreateResource
+
+    -- * Creating a Request
+    , tablesCreate
+    , TablesCreate
+
+    -- * Request Lenses
+    , tcPayload
+    ) where
+
+import           Network.Google.MapsEngine.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @mapsengine.tables.create@ method which the
+-- 'TablesCreate' request conforms to.
+type TablesCreateResource =
+     "mapsengine" :>
+       "v1" :>
+         "tables" :>
+           QueryParam "alt" AltJSON :>
+             ReqBody '[JSON] Table :> Post '[JSON] Table
+
+-- | Create a table asset.
+--
+-- /See:/ 'tablesCreate' smart constructor.
+newtype TablesCreate = TablesCreate
+    { _tcPayload :: Table
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'TablesCreate' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'tcPayload'
+tablesCreate
+    :: Table -- ^ 'tcPayload'
+    -> TablesCreate
+tablesCreate pTcPayload_ =
+    TablesCreate
+    { _tcPayload = pTcPayload_
+    }
+
+-- | Multipart request metadata.
+tcPayload :: Lens' TablesCreate Table
+tcPayload
+  = lens _tcPayload (\ s a -> s{_tcPayload = a})
+
+instance GoogleRequest TablesCreate where
+        type Rs TablesCreate = Table
+        requestClient TablesCreate{..}
+          = go (Just AltJSON) _tcPayload mapsEngineService
+          where go
+                  = buildClient (Proxy :: Proxy TablesCreateResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/MapsEngine/Tables/Delete.hs b/gen/Network/Google/Resource/MapsEngine/Tables/Delete.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/MapsEngine/Tables/Delete.hs
@@ -0,0 +1,83 @@
+{-# LANGUAGE DataKinds          #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE FlexibleInstances  #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+{-# LANGUAGE TypeOperators      #-}
+
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
+
+-- |
+-- Module      : Network.Google.Resource.MapsEngine.Tables.Delete
+-- Copyright   : (c) 2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Delete a table.
+--
+-- /See:/ <https://developers.google.com/maps-engine/ Google Maps Engine API Reference> for @mapsengine.tables.delete@.
+module Network.Google.Resource.MapsEngine.Tables.Delete
+    (
+    -- * REST Resource
+      TablesDeleteResource
+
+    -- * Creating a Request
+    , tablesDelete
+    , TablesDelete
+
+    -- * Request Lenses
+    , tdId
+    ) where
+
+import           Network.Google.MapsEngine.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @mapsengine.tables.delete@ method which the
+-- 'TablesDelete' request conforms to.
+type TablesDeleteResource =
+     "mapsengine" :>
+       "v1" :>
+         "tables" :>
+           Capture "id" Text :>
+             QueryParam "alt" AltJSON :> Delete '[JSON] ()
+
+-- | Delete a table.
+--
+-- /See:/ 'tablesDelete' smart constructor.
+newtype TablesDelete = TablesDelete
+    { _tdId :: Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'TablesDelete' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'tdId'
+tablesDelete
+    :: Text -- ^ 'tdId'
+    -> TablesDelete
+tablesDelete pTdId_ =
+    TablesDelete
+    { _tdId = pTdId_
+    }
+
+-- | The ID of the table. Only the table creator or project owner are
+-- permitted to delete. If the table is included in a layer, the request
+-- will fail. Remove it from all layers prior to deleting.
+tdId :: Lens' TablesDelete Text
+tdId = lens _tdId (\ s a -> s{_tdId = a})
+
+instance GoogleRequest TablesDelete where
+        type Rs TablesDelete = ()
+        requestClient TablesDelete{..}
+          = go _tdId (Just AltJSON) mapsEngineService
+          where go
+                  = buildClient (Proxy :: Proxy TablesDeleteResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/MapsEngine/Tables/Features/BatchDelete.hs b/gen/Network/Google/Resource/MapsEngine/Tables/Features/BatchDelete.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/MapsEngine/Tables/Features/BatchDelete.hs
@@ -0,0 +1,99 @@
+{-# LANGUAGE DataKinds          #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE FlexibleInstances  #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+{-# LANGUAGE TypeOperators      #-}
+
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
+
+-- |
+-- Module      : Network.Google.Resource.MapsEngine.Tables.Features.BatchDelete
+-- Copyright   : (c) 2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Delete all features matching the given IDs.
+--
+-- /See:/ <https://developers.google.com/maps-engine/ Google Maps Engine API Reference> for @mapsengine.tables.features.batchDelete@.
+module Network.Google.Resource.MapsEngine.Tables.Features.BatchDelete
+    (
+    -- * REST Resource
+      TablesFeaturesBatchDeleteResource
+
+    -- * Creating a Request
+    , tablesFeaturesBatchDelete
+    , TablesFeaturesBatchDelete
+
+    -- * Request Lenses
+    , tfbdPayload
+    , tfbdId
+    ) where
+
+import           Network.Google.MapsEngine.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @mapsengine.tables.features.batchDelete@ method which the
+-- 'TablesFeaturesBatchDelete' request conforms to.
+type TablesFeaturesBatchDeleteResource =
+     "mapsengine" :>
+       "v1" :>
+         "tables" :>
+           Capture "id" Text :>
+             "features" :>
+               "batchDelete" :>
+                 QueryParam "alt" AltJSON :>
+                   ReqBody '[JSON] FeaturesBatchDeleteRequest :>
+                     Post '[JSON] ()
+
+-- | Delete all features matching the given IDs.
+--
+-- /See:/ 'tablesFeaturesBatchDelete' smart constructor.
+data TablesFeaturesBatchDelete = TablesFeaturesBatchDelete
+    { _tfbdPayload :: !FeaturesBatchDeleteRequest
+    , _tfbdId      :: !Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'TablesFeaturesBatchDelete' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'tfbdPayload'
+--
+-- * 'tfbdId'
+tablesFeaturesBatchDelete
+    :: FeaturesBatchDeleteRequest -- ^ 'tfbdPayload'
+    -> Text -- ^ 'tfbdId'
+    -> TablesFeaturesBatchDelete
+tablesFeaturesBatchDelete pTfbdPayload_ pTfbdId_ =
+    TablesFeaturesBatchDelete
+    { _tfbdPayload = pTfbdPayload_
+    , _tfbdId = pTfbdId_
+    }
+
+-- | Multipart request metadata.
+tfbdPayload :: Lens' TablesFeaturesBatchDelete FeaturesBatchDeleteRequest
+tfbdPayload
+  = lens _tfbdPayload (\ s a -> s{_tfbdPayload = a})
+
+-- | The ID of the table that contains the features to be deleted.
+tfbdId :: Lens' TablesFeaturesBatchDelete Text
+tfbdId = lens _tfbdId (\ s a -> s{_tfbdId = a})
+
+instance GoogleRequest TablesFeaturesBatchDelete
+         where
+        type Rs TablesFeaturesBatchDelete = ()
+        requestClient TablesFeaturesBatchDelete{..}
+          = go _tfbdId (Just AltJSON) _tfbdPayload
+              mapsEngineService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy TablesFeaturesBatchDeleteResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/MapsEngine/Tables/Features/BatchInsert.hs b/gen/Network/Google/Resource/MapsEngine/Tables/Features/BatchInsert.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/MapsEngine/Tables/Features/BatchInsert.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.MapsEngine.Tables.Features.BatchInsert
+-- 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)
+--
+-- Append features to an existing table. A single batchInsert request can
+-- create: - Up to 50 features. - A combined total of 10 000 vertices.
+-- Feature limits are documented in the Supported data formats and limits
+-- article of the Google Maps Engine help center. Note that free and paid
+-- accounts have different limits. For more information about inserting
+-- features, read Creating features in the Google Maps Engine developer\'s
+-- guide.
+--
+-- /See:/ <https://developers.google.com/maps-engine/ Google Maps Engine API Reference> for @mapsengine.tables.features.batchInsert@.
+module Network.Google.Resource.MapsEngine.Tables.Features.BatchInsert
+    (
+    -- * REST Resource
+      TablesFeaturesBatchInsertResource
+
+    -- * Creating a Request
+    , tablesFeaturesBatchInsert
+    , TablesFeaturesBatchInsert
+
+    -- * Request Lenses
+    , tfbiPayload
+    , tfbiId
+    ) where
+
+import           Network.Google.MapsEngine.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @mapsengine.tables.features.batchInsert@ method which the
+-- 'TablesFeaturesBatchInsert' request conforms to.
+type TablesFeaturesBatchInsertResource =
+     "mapsengine" :>
+       "v1" :>
+         "tables" :>
+           Capture "id" Text :>
+             "features" :>
+               "batchInsert" :>
+                 QueryParam "alt" AltJSON :>
+                   ReqBody '[JSON] FeaturesBatchInsertRequest :>
+                     Post '[JSON] ()
+
+-- | Append features to an existing table. A single batchInsert request can
+-- create: - Up to 50 features. - A combined total of 10 000 vertices.
+-- Feature limits are documented in the Supported data formats and limits
+-- article of the Google Maps Engine help center. Note that free and paid
+-- accounts have different limits. For more information about inserting
+-- features, read Creating features in the Google Maps Engine developer\'s
+-- guide.
+--
+-- /See:/ 'tablesFeaturesBatchInsert' smart constructor.
+data TablesFeaturesBatchInsert = TablesFeaturesBatchInsert
+    { _tfbiPayload :: !FeaturesBatchInsertRequest
+    , _tfbiId      :: !Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'TablesFeaturesBatchInsert' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'tfbiPayload'
+--
+-- * 'tfbiId'
+tablesFeaturesBatchInsert
+    :: FeaturesBatchInsertRequest -- ^ 'tfbiPayload'
+    -> Text -- ^ 'tfbiId'
+    -> TablesFeaturesBatchInsert
+tablesFeaturesBatchInsert pTfbiPayload_ pTfbiId_ =
+    TablesFeaturesBatchInsert
+    { _tfbiPayload = pTfbiPayload_
+    , _tfbiId = pTfbiId_
+    }
+
+-- | Multipart request metadata.
+tfbiPayload :: Lens' TablesFeaturesBatchInsert FeaturesBatchInsertRequest
+tfbiPayload
+  = lens _tfbiPayload (\ s a -> s{_tfbiPayload = a})
+
+-- | The ID of the table to append the features to.
+tfbiId :: Lens' TablesFeaturesBatchInsert Text
+tfbiId = lens _tfbiId (\ s a -> s{_tfbiId = a})
+
+instance GoogleRequest TablesFeaturesBatchInsert
+         where
+        type Rs TablesFeaturesBatchInsert = ()
+        requestClient TablesFeaturesBatchInsert{..}
+          = go _tfbiId (Just AltJSON) _tfbiPayload
+              mapsEngineService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy TablesFeaturesBatchInsertResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/MapsEngine/Tables/Features/BatchPatch.hs b/gen/Network/Google/Resource/MapsEngine/Tables/Features/BatchPatch.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/MapsEngine/Tables/Features/BatchPatch.hs
@@ -0,0 +1,120 @@
+{-# 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.MapsEngine.Tables.Features.BatchPatch
+-- Copyright   : (c) 2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Update the supplied features. A single batchPatch request can update: -
+-- Up to 50 features. - A combined total of 10 000 vertices. Feature limits
+-- are documented in the Supported data formats and limits article of the
+-- Google Maps Engine help center. Note that free and paid accounts have
+-- different limits. Feature updates use HTTP PATCH semantics: - A supplied
+-- value replaces an existing value (if any) in that field. - Omitted
+-- fields remain unchanged. - Complex values in geometries and properties
+-- must be replaced as atomic units. For example, providing just the
+-- coordinates of a geometry is not allowed; the complete geometry,
+-- including type, must be supplied. - Setting a property\'s value to null
+-- deletes that property. For more information about updating features,
+-- read Updating features in the Google Maps Engine developer\'s guide.
+--
+-- /See:/ <https://developers.google.com/maps-engine/ Google Maps Engine API Reference> for @mapsengine.tables.features.batchPatch@.
+module Network.Google.Resource.MapsEngine.Tables.Features.BatchPatch
+    (
+    -- * REST Resource
+      TablesFeaturesBatchPatchResource
+
+    -- * Creating a Request
+    , tablesFeaturesBatchPatch
+    , TablesFeaturesBatchPatch
+
+    -- * Request Lenses
+    , tfbpPayload
+    , tfbpId
+    ) where
+
+import           Network.Google.MapsEngine.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @mapsengine.tables.features.batchPatch@ method which the
+-- 'TablesFeaturesBatchPatch' request conforms to.
+type TablesFeaturesBatchPatchResource =
+     "mapsengine" :>
+       "v1" :>
+         "tables" :>
+           Capture "id" Text :>
+             "features" :>
+               "batchPatch" :>
+                 QueryParam "alt" AltJSON :>
+                   ReqBody '[JSON] FeaturesBatchPatchRequest :>
+                     Post '[JSON] ()
+
+-- | Update the supplied features. A single batchPatch request can update: -
+-- Up to 50 features. - A combined total of 10 000 vertices. Feature limits
+-- are documented in the Supported data formats and limits article of the
+-- Google Maps Engine help center. Note that free and paid accounts have
+-- different limits. Feature updates use HTTP PATCH semantics: - A supplied
+-- value replaces an existing value (if any) in that field. - Omitted
+-- fields remain unchanged. - Complex values in geometries and properties
+-- must be replaced as atomic units. For example, providing just the
+-- coordinates of a geometry is not allowed; the complete geometry,
+-- including type, must be supplied. - Setting a property\'s value to null
+-- deletes that property. For more information about updating features,
+-- read Updating features in the Google Maps Engine developer\'s guide.
+--
+-- /See:/ 'tablesFeaturesBatchPatch' smart constructor.
+data TablesFeaturesBatchPatch = TablesFeaturesBatchPatch
+    { _tfbpPayload :: !FeaturesBatchPatchRequest
+    , _tfbpId      :: !Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'TablesFeaturesBatchPatch' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'tfbpPayload'
+--
+-- * 'tfbpId'
+tablesFeaturesBatchPatch
+    :: FeaturesBatchPatchRequest -- ^ 'tfbpPayload'
+    -> Text -- ^ 'tfbpId'
+    -> TablesFeaturesBatchPatch
+tablesFeaturesBatchPatch pTfbpPayload_ pTfbpId_ =
+    TablesFeaturesBatchPatch
+    { _tfbpPayload = pTfbpPayload_
+    , _tfbpId = pTfbpId_
+    }
+
+-- | Multipart request metadata.
+tfbpPayload :: Lens' TablesFeaturesBatchPatch FeaturesBatchPatchRequest
+tfbpPayload
+  = lens _tfbpPayload (\ s a -> s{_tfbpPayload = a})
+
+-- | The ID of the table containing the features to be patched.
+tfbpId :: Lens' TablesFeaturesBatchPatch Text
+tfbpId = lens _tfbpId (\ s a -> s{_tfbpId = a})
+
+instance GoogleRequest TablesFeaturesBatchPatch where
+        type Rs TablesFeaturesBatchPatch = ()
+        requestClient TablesFeaturesBatchPatch{..}
+          = go _tfbpId (Just AltJSON) _tfbpPayload
+              mapsEngineService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy TablesFeaturesBatchPatchResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/MapsEngine/Tables/Features/Get.hs b/gen/Network/Google/Resource/MapsEngine/Tables/Features/Get.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/MapsEngine/Tables/Features/Get.hs
@@ -0,0 +1,120 @@
+{-# 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.MapsEngine.Tables.Features.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)
+--
+-- Return a single feature, given its ID.
+--
+-- /See:/ <https://developers.google.com/maps-engine/ Google Maps Engine API Reference> for @mapsengine.tables.features.get@.
+module Network.Google.Resource.MapsEngine.Tables.Features.Get
+    (
+    -- * REST Resource
+      TablesFeaturesGetResource
+
+    -- * Creating a Request
+    , tablesFeaturesGet
+    , TablesFeaturesGet
+
+    -- * Request Lenses
+    , tfgVersion
+    , tfgId
+    , tfgSelect
+    , tfgTableId
+    ) where
+
+import           Network.Google.MapsEngine.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @mapsengine.tables.features.get@ method which the
+-- 'TablesFeaturesGet' request conforms to.
+type TablesFeaturesGetResource =
+     "mapsengine" :>
+       "v1" :>
+         "tables" :>
+           Capture "tableId" Text :>
+             "features" :>
+               Capture "id" Text :>
+                 QueryParam "version" TablesFeaturesGetVersion :>
+                   QueryParam "select" Text :>
+                     QueryParam "alt" AltJSON :> Get '[JSON] Feature
+
+-- | Return a single feature, given its ID.
+--
+-- /See:/ 'tablesFeaturesGet' smart constructor.
+data TablesFeaturesGet = TablesFeaturesGet
+    { _tfgVersion :: !(Maybe TablesFeaturesGetVersion)
+    , _tfgId      :: !Text
+    , _tfgSelect  :: !(Maybe Text)
+    , _tfgTableId :: !Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'TablesFeaturesGet' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'tfgVersion'
+--
+-- * 'tfgId'
+--
+-- * 'tfgSelect'
+--
+-- * 'tfgTableId'
+tablesFeaturesGet
+    :: Text -- ^ 'tfgId'
+    -> Text -- ^ 'tfgTableId'
+    -> TablesFeaturesGet
+tablesFeaturesGet pTfgId_ pTfgTableId_ =
+    TablesFeaturesGet
+    { _tfgVersion = Nothing
+    , _tfgId = pTfgId_
+    , _tfgSelect = Nothing
+    , _tfgTableId = pTfgTableId_
+    }
+
+-- | The table version to access. See Accessing Public Data for information.
+tfgVersion :: Lens' TablesFeaturesGet (Maybe TablesFeaturesGetVersion)
+tfgVersion
+  = lens _tfgVersion (\ s a -> s{_tfgVersion = a})
+
+-- | The ID of the feature to get.
+tfgId :: Lens' TablesFeaturesGet Text
+tfgId = lens _tfgId (\ s a -> s{_tfgId = a})
+
+-- | A SQL-like projection clause used to specify returned properties. If
+-- this parameter is not included, all properties are returned.
+tfgSelect :: Lens' TablesFeaturesGet (Maybe Text)
+tfgSelect
+  = lens _tfgSelect (\ s a -> s{_tfgSelect = a})
+
+-- | The ID of the table.
+tfgTableId :: Lens' TablesFeaturesGet Text
+tfgTableId
+  = lens _tfgTableId (\ s a -> s{_tfgTableId = a})
+
+instance GoogleRequest TablesFeaturesGet where
+        type Rs TablesFeaturesGet = Feature
+        requestClient TablesFeaturesGet{..}
+          = go _tfgTableId _tfgId _tfgVersion _tfgSelect
+              (Just AltJSON)
+              mapsEngineService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy TablesFeaturesGetResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/MapsEngine/Tables/Features/List.hs b/gen/Network/Google/Resource/MapsEngine/Tables/Features/List.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/MapsEngine/Tables/Features/List.hs
@@ -0,0 +1,201 @@
+{-# LANGUAGE DataKinds          #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE FlexibleInstances  #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+{-# LANGUAGE TypeOperators      #-}
+
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
+
+-- |
+-- Module      : Network.Google.Resource.MapsEngine.Tables.Features.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)
+--
+-- Return all features readable by the current user.
+--
+-- /See:/ <https://developers.google.com/maps-engine/ Google Maps Engine API Reference> for @mapsengine.tables.features.list@.
+module Network.Google.Resource.MapsEngine.Tables.Features.List
+    (
+    -- * REST Resource
+      TablesFeaturesListResource
+
+    -- * Creating a Request
+    , tablesFeaturesList
+    , TablesFeaturesList
+
+    -- * Request Lenses
+    , tflInclude
+    , tflWhere
+    , tflOrderBy
+    , tflVersion
+    , tflId
+    , tflLimit
+    , tflPageToken
+    , tflSelect
+    , tflIntersects
+    , tflMaxResults
+    ) where
+
+import           Network.Google.MapsEngine.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @mapsengine.tables.features.list@ method which the
+-- 'TablesFeaturesList' request conforms to.
+type TablesFeaturesListResource =
+     "mapsengine" :>
+       "v1" :>
+         "tables" :>
+           Capture "id" Text :>
+             "features" :>
+               QueryParam "include" Text :>
+                 QueryParam "where" Text :>
+                   QueryParam "orderBy" Text :>
+                     QueryParam "version" TablesFeaturesListVersion :>
+                       QueryParam "limit" (Textual Word32) :>
+                         QueryParam "pageToken" Text :>
+                           QueryParam "select" Text :>
+                             QueryParam "intersects" Text :>
+                               QueryParam "maxResults" (Textual Word32) :>
+                                 QueryParam "alt" AltJSON :>
+                                   Get '[JSON] FeaturesListResponse
+
+-- | Return all features readable by the current user.
+--
+-- /See:/ 'tablesFeaturesList' smart constructor.
+data TablesFeaturesList = TablesFeaturesList
+    { _tflInclude    :: !(Maybe Text)
+    , _tflWhere      :: !(Maybe Text)
+    , _tflOrderBy    :: !(Maybe Text)
+    , _tflVersion    :: !(Maybe TablesFeaturesListVersion)
+    , _tflId         :: !Text
+    , _tflLimit      :: !(Maybe (Textual Word32))
+    , _tflPageToken  :: !(Maybe Text)
+    , _tflSelect     :: !(Maybe Text)
+    , _tflIntersects :: !(Maybe Text)
+    , _tflMaxResults :: !(Maybe (Textual Word32))
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'TablesFeaturesList' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'tflInclude'
+--
+-- * 'tflWhere'
+--
+-- * 'tflOrderBy'
+--
+-- * 'tflVersion'
+--
+-- * 'tflId'
+--
+-- * 'tflLimit'
+--
+-- * 'tflPageToken'
+--
+-- * 'tflSelect'
+--
+-- * 'tflIntersects'
+--
+-- * 'tflMaxResults'
+tablesFeaturesList
+    :: Text -- ^ 'tflId'
+    -> TablesFeaturesList
+tablesFeaturesList pTflId_ =
+    TablesFeaturesList
+    { _tflInclude = Nothing
+    , _tflWhere = Nothing
+    , _tflOrderBy = Nothing
+    , _tflVersion = Nothing
+    , _tflId = pTflId_
+    , _tflLimit = Nothing
+    , _tflPageToken = Nothing
+    , _tflSelect = Nothing
+    , _tflIntersects = Nothing
+    , _tflMaxResults = Nothing
+    }
+
+-- | A comma separated list of optional data to include. Optional data
+-- available: schema.
+tflInclude :: Lens' TablesFeaturesList (Maybe Text)
+tflInclude
+  = lens _tflInclude (\ s a -> s{_tflInclude = a})
+
+-- | An SQL-like predicate used to filter results.
+tflWhere :: Lens' TablesFeaturesList (Maybe Text)
+tflWhere = lens _tflWhere (\ s a -> s{_tflWhere = a})
+
+-- | An SQL-like order by clause used to sort results. If this parameter is
+-- not included, the order of features is undefined.
+tflOrderBy :: Lens' TablesFeaturesList (Maybe Text)
+tflOrderBy
+  = lens _tflOrderBy (\ s a -> s{_tflOrderBy = a})
+
+-- | The table version to access. See Accessing Public Data for information.
+tflVersion :: Lens' TablesFeaturesList (Maybe TablesFeaturesListVersion)
+tflVersion
+  = lens _tflVersion (\ s a -> s{_tflVersion = a})
+
+-- | The ID of the table to which these features belong.
+tflId :: Lens' TablesFeaturesList Text
+tflId = lens _tflId (\ s a -> s{_tflId = a})
+
+-- | The total number of features to return from the query, irrespective of
+-- the number of pages.
+tflLimit :: Lens' TablesFeaturesList (Maybe Word32)
+tflLimit
+  = lens _tflLimit (\ s a -> s{_tflLimit = a}) .
+      mapping _Coerce
+
+-- | The continuation token, used to page through large result sets. To get
+-- the next page of results, set this parameter to the value of
+-- nextPageToken from the previous response.
+tflPageToken :: Lens' TablesFeaturesList (Maybe Text)
+tflPageToken
+  = lens _tflPageToken (\ s a -> s{_tflPageToken = a})
+
+-- | A SQL-like projection clause used to specify returned properties. If
+-- this parameter is not included, all properties are returned.
+tflSelect :: Lens' TablesFeaturesList (Maybe Text)
+tflSelect
+  = lens _tflSelect (\ s a -> s{_tflSelect = a})
+
+-- | A geometry literal that specifies the spatial restriction of the query.
+tflIntersects :: Lens' TablesFeaturesList (Maybe Text)
+tflIntersects
+  = lens _tflIntersects
+      (\ s a -> s{_tflIntersects = a})
+
+-- | The maximum number of items to include in the response, used for paging.
+-- The maximum supported value is 1000.
+tflMaxResults :: Lens' TablesFeaturesList (Maybe Word32)
+tflMaxResults
+  = lens _tflMaxResults
+      (\ s a -> s{_tflMaxResults = a})
+      . mapping _Coerce
+
+instance GoogleRequest TablesFeaturesList where
+        type Rs TablesFeaturesList = FeaturesListResponse
+        requestClient TablesFeaturesList{..}
+          = go _tflId _tflInclude _tflWhere _tflOrderBy
+              _tflVersion
+              _tflLimit
+              _tflPageToken
+              _tflSelect
+              _tflIntersects
+              _tflMaxResults
+              (Just AltJSON)
+              mapsEngineService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy TablesFeaturesListResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/MapsEngine/Tables/Files/Insert.hs b/gen/Network/Google/Resource/MapsEngine/Tables/Files/Insert.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/MapsEngine/Tables/Files/Insert.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.MapsEngine.Tables.Files.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)
+--
+-- Upload a file to a placeholder table asset. See Table Upload in the
+-- Developer\'s Guide for more information. Supported file types are listed
+-- in the Supported data formats and limits article of the Google Maps
+-- Engine help center.
+--
+-- /See:/ <https://developers.google.com/maps-engine/ Google Maps Engine API Reference> for @mapsengine.tables.files.insert@.
+module Network.Google.Resource.MapsEngine.Tables.Files.Insert
+    (
+    -- * REST Resource
+      TablesFilesInsertResource
+
+    -- * Creating a Request
+    , tablesFilesInsert
+    , TablesFilesInsert
+
+    -- * Request Lenses
+    , tfiId
+    , tfiFilename
+    ) where
+
+import           Network.Google.MapsEngine.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @mapsengine.tables.files.insert@ method which the
+-- 'TablesFilesInsert' request conforms to.
+type TablesFilesInsertResource =
+     "mapsengine" :>
+       "v1" :>
+         "tables" :>
+           Capture "id" Text :>
+             "files" :>
+               QueryParam "filename" Text :>
+                 QueryParam "alt" AltJSON :> Post '[JSON] ()
+       :<|>
+       "upload" :>
+         "mapsengine" :>
+           "v1" :>
+             "tables" :>
+               Capture "id" Text :>
+                 "files" :>
+                   QueryParam "filename" Text :>
+                     QueryParam "alt" AltJSON :>
+                       QueryParam "uploadType" AltMedia :>
+                         ReqBody '[OctetStream] RequestBody :> Post '[JSON] ()
+
+-- | Upload a file to a placeholder table asset. See Table Upload in the
+-- Developer\'s Guide for more information. Supported file types are listed
+-- in the Supported data formats and limits article of the Google Maps
+-- Engine help center.
+--
+-- /See:/ 'tablesFilesInsert' smart constructor.
+data TablesFilesInsert = TablesFilesInsert
+    { _tfiId       :: !Text
+    , _tfiFilename :: !Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'TablesFilesInsert' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'tfiId'
+--
+-- * 'tfiFilename'
+tablesFilesInsert
+    :: Text -- ^ 'tfiId'
+    -> Text -- ^ 'tfiFilename'
+    -> TablesFilesInsert
+tablesFilesInsert pTfiId_ pTfiFilename_ =
+    TablesFilesInsert
+    { _tfiId = pTfiId_
+    , _tfiFilename = pTfiFilename_
+    }
+
+-- | The ID of the table asset.
+tfiId :: Lens' TablesFilesInsert Text
+tfiId = lens _tfiId (\ s a -> s{_tfiId = a})
+
+-- | The file name of this uploaded file.
+tfiFilename :: Lens' TablesFilesInsert Text
+tfiFilename
+  = lens _tfiFilename (\ s a -> s{_tfiFilename = a})
+
+instance GoogleRequest TablesFilesInsert where
+        type Rs TablesFilesInsert = ()
+        requestClient TablesFilesInsert{..}
+          = go _tfiId (Just _tfiFilename) (Just AltJSON)
+              mapsEngineService
+          where go :<|> _
+                  = buildClient
+                      (Proxy :: Proxy TablesFilesInsertResource)
+                      mempty
+
+instance GoogleRequest
+         (MediaUpload TablesFilesInsert) where
+        type Rs (MediaUpload TablesFilesInsert) = ()
+        requestClient
+          (MediaUpload TablesFilesInsert{..} body)
+          = go _tfiId (Just _tfiFilename) (Just AltJSON)
+              (Just AltMedia)
+              body
+              mapsEngineService
+          where _ :<|> go
+                  = buildClient
+                      (Proxy :: Proxy TablesFilesInsertResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/MapsEngine/Tables/Get.hs b/gen/Network/Google/Resource/MapsEngine/Tables/Get.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/MapsEngine/Tables/Get.hs
@@ -0,0 +1,92 @@
+{-# 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.MapsEngine.Tables.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)
+--
+-- Return metadata for a particular table, including the schema.
+--
+-- /See:/ <https://developers.google.com/maps-engine/ Google Maps Engine API Reference> for @mapsengine.tables.get@.
+module Network.Google.Resource.MapsEngine.Tables.Get
+    (
+    -- * REST Resource
+      TablesGetResource
+
+    -- * Creating a Request
+    , tablesGet
+    , TablesGet
+
+    -- * Request Lenses
+    , tgVersion
+    , tgId
+    ) where
+
+import           Network.Google.MapsEngine.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @mapsengine.tables.get@ method which the
+-- 'TablesGet' request conforms to.
+type TablesGetResource =
+     "mapsengine" :>
+       "v1" :>
+         "tables" :>
+           Capture "id" Text :>
+             QueryParam "version" TablesGetVersion :>
+               QueryParam "alt" AltJSON :> Get '[JSON] Table
+
+-- | Return metadata for a particular table, including the schema.
+--
+-- /See:/ 'tablesGet' smart constructor.
+data TablesGet = TablesGet
+    { _tgVersion :: !(Maybe TablesGetVersion)
+    , _tgId      :: !Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'TablesGet' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'tgVersion'
+--
+-- * 'tgId'
+tablesGet
+    :: Text -- ^ 'tgId'
+    -> TablesGet
+tablesGet pTgId_ =
+    TablesGet
+    { _tgVersion = Nothing
+    , _tgId = pTgId_
+    }
+
+tgVersion :: Lens' TablesGet (Maybe TablesGetVersion)
+tgVersion
+  = lens _tgVersion (\ s a -> s{_tgVersion = a})
+
+-- | The ID of the table.
+tgId :: Lens' TablesGet Text
+tgId = lens _tgId (\ s a -> s{_tgId = a})
+
+instance GoogleRequest TablesGet where
+        type Rs TablesGet = Table
+        requestClient TablesGet{..}
+          = go _tgId _tgVersion (Just AltJSON)
+              mapsEngineService
+          where go
+                  = buildClient (Proxy :: Proxy TablesGetResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/MapsEngine/Tables/List.hs b/gen/Network/Google/Resource/MapsEngine/Tables/List.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/MapsEngine/Tables/List.hs
@@ -0,0 +1,248 @@
+{-# 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.MapsEngine.Tables.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)
+--
+-- Return all tables readable by the current user.
+--
+-- /See:/ <https://developers.google.com/maps-engine/ Google Maps Engine API Reference> for @mapsengine.tables.list@.
+module Network.Google.Resource.MapsEngine.Tables.List
+    (
+    -- * REST Resource
+      TablesListResource
+
+    -- * Creating a Request
+    , tablesList
+    , TablesList
+
+    -- * Request Lenses
+    , tlCreatedAfter
+    , tlCreatorEmail
+    , tlRole
+    , tlBbox
+    , tlProcessingStatus
+    , tlModifiedAfter
+    , tlModifiedBefore
+    , tlPageToken
+    , tlProjectId
+    , tlSearch
+    , tlMaxResults
+    , tlTags
+    , tlCreatedBefore
+    ) where
+
+import           Network.Google.MapsEngine.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @mapsengine.tables.list@ method which the
+-- 'TablesList' request conforms to.
+type TablesListResource =
+     "mapsengine" :>
+       "v1" :>
+         "tables" :>
+           QueryParam "createdAfter" DateTime' :>
+             QueryParam "creatorEmail" Text :>
+               QueryParam "role" TablesListRole :>
+                 QueryParam "bbox" Text :>
+                   QueryParam "processingStatus"
+                     TablesListProcessingStatus
+                     :>
+                     QueryParam "modifiedAfter" DateTime' :>
+                       QueryParam "modifiedBefore" DateTime' :>
+                         QueryParam "pageToken" Text :>
+                           QueryParam "projectId" Text :>
+                             QueryParam "search" Text :>
+                               QueryParam "maxResults" (Textual Word32) :>
+                                 QueryParam "tags" Text :>
+                                   QueryParam "createdBefore" DateTime' :>
+                                     QueryParam "alt" AltJSON :>
+                                       Get '[JSON] TablesListResponse
+
+-- | Return all tables readable by the current user.
+--
+-- /See:/ 'tablesList' smart constructor.
+data TablesList = TablesList
+    { _tlCreatedAfter     :: !(Maybe DateTime')
+    , _tlCreatorEmail     :: !(Maybe Text)
+    , _tlRole             :: !(Maybe TablesListRole)
+    , _tlBbox             :: !(Maybe Text)
+    , _tlProcessingStatus :: !(Maybe TablesListProcessingStatus)
+    , _tlModifiedAfter    :: !(Maybe DateTime')
+    , _tlModifiedBefore   :: !(Maybe DateTime')
+    , _tlPageToken        :: !(Maybe Text)
+    , _tlProjectId        :: !(Maybe Text)
+    , _tlSearch           :: !(Maybe Text)
+    , _tlMaxResults       :: !(Maybe (Textual Word32))
+    , _tlTags             :: !(Maybe Text)
+    , _tlCreatedBefore    :: !(Maybe DateTime')
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'TablesList' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'tlCreatedAfter'
+--
+-- * 'tlCreatorEmail'
+--
+-- * 'tlRole'
+--
+-- * 'tlBbox'
+--
+-- * 'tlProcessingStatus'
+--
+-- * 'tlModifiedAfter'
+--
+-- * 'tlModifiedBefore'
+--
+-- * 'tlPageToken'
+--
+-- * 'tlProjectId'
+--
+-- * 'tlSearch'
+--
+-- * 'tlMaxResults'
+--
+-- * 'tlTags'
+--
+-- * 'tlCreatedBefore'
+tablesList
+    :: TablesList
+tablesList =
+    TablesList
+    { _tlCreatedAfter = Nothing
+    , _tlCreatorEmail = Nothing
+    , _tlRole = Nothing
+    , _tlBbox = Nothing
+    , _tlProcessingStatus = Nothing
+    , _tlModifiedAfter = Nothing
+    , _tlModifiedBefore = Nothing
+    , _tlPageToken = Nothing
+    , _tlProjectId = Nothing
+    , _tlSearch = Nothing
+    , _tlMaxResults = Nothing
+    , _tlTags = Nothing
+    , _tlCreatedBefore = Nothing
+    }
+
+-- | An RFC 3339 formatted date-time value (e.g. 1970-01-01T00:00:00Z).
+-- Returned assets will have been created at or after this time.
+tlCreatedAfter :: Lens' TablesList (Maybe UTCTime)
+tlCreatedAfter
+  = lens _tlCreatedAfter
+      (\ s a -> s{_tlCreatedAfter = a})
+      . mapping _DateTime
+
+-- | An email address representing a user. Returned assets that have been
+-- created by the user associated with the provided email address.
+tlCreatorEmail :: Lens' TablesList (Maybe Text)
+tlCreatorEmail
+  = lens _tlCreatorEmail
+      (\ s a -> s{_tlCreatorEmail = a})
+
+-- | The role parameter indicates that the response should only contain
+-- assets where the current user has the specified level of access.
+tlRole :: Lens' TablesList (Maybe TablesListRole)
+tlRole = lens _tlRole (\ s a -> s{_tlRole = a})
+
+-- | A bounding box, expressed as \"west,south,east,north\". If set, only
+-- assets which intersect this bounding box will be returned.
+tlBbox :: Lens' TablesList (Maybe Text)
+tlBbox = lens _tlBbox (\ s a -> s{_tlBbox = a})
+
+tlProcessingStatus :: Lens' TablesList (Maybe TablesListProcessingStatus)
+tlProcessingStatus
+  = lens _tlProcessingStatus
+      (\ s a -> s{_tlProcessingStatus = a})
+
+-- | An RFC 3339 formatted date-time value (e.g. 1970-01-01T00:00:00Z).
+-- Returned assets will have been modified at or after this time.
+tlModifiedAfter :: Lens' TablesList (Maybe UTCTime)
+tlModifiedAfter
+  = lens _tlModifiedAfter
+      (\ s a -> s{_tlModifiedAfter = a})
+      . mapping _DateTime
+
+-- | An RFC 3339 formatted date-time value (e.g. 1970-01-01T00:00:00Z).
+-- Returned assets will have been modified at or before this time.
+tlModifiedBefore :: Lens' TablesList (Maybe UTCTime)
+tlModifiedBefore
+  = lens _tlModifiedBefore
+      (\ s a -> s{_tlModifiedBefore = a})
+      . mapping _DateTime
+
+-- | The continuation token, used to page through large result sets. To get
+-- the next page of results, set this parameter to the value of
+-- nextPageToken from the previous response.
+tlPageToken :: Lens' TablesList (Maybe Text)
+tlPageToken
+  = lens _tlPageToken (\ s a -> s{_tlPageToken = a})
+
+-- | The ID of a Maps Engine project, used to filter the response. To list
+-- all available projects with their IDs, send a Projects: list request.
+-- You can also find your project ID as the value of the DashboardPlace:cid
+-- URL parameter when signed in to mapsengine.google.com.
+tlProjectId :: Lens' TablesList (Maybe Text)
+tlProjectId
+  = lens _tlProjectId (\ s a -> s{_tlProjectId = a})
+
+-- | An unstructured search string used to filter the set of results based on
+-- asset metadata.
+tlSearch :: Lens' TablesList (Maybe Text)
+tlSearch = lens _tlSearch (\ s a -> s{_tlSearch = a})
+
+-- | The maximum number of items to include in a single response page. The
+-- maximum supported value is 100.
+tlMaxResults :: Lens' TablesList (Maybe Word32)
+tlMaxResults
+  = lens _tlMaxResults (\ s a -> s{_tlMaxResults = a})
+      . mapping _Coerce
+
+-- | A comma separated list of tags. Returned assets will contain all the
+-- tags from the list.
+tlTags :: Lens' TablesList (Maybe Text)
+tlTags = lens _tlTags (\ s a -> s{_tlTags = a})
+
+-- | An RFC 3339 formatted date-time value (e.g. 1970-01-01T00:00:00Z).
+-- Returned assets will have been created at or before this time.
+tlCreatedBefore :: Lens' TablesList (Maybe UTCTime)
+tlCreatedBefore
+  = lens _tlCreatedBefore
+      (\ s a -> s{_tlCreatedBefore = a})
+      . mapping _DateTime
+
+instance GoogleRequest TablesList where
+        type Rs TablesList = TablesListResponse
+        requestClient TablesList{..}
+          = go _tlCreatedAfter _tlCreatorEmail _tlRole _tlBbox
+              _tlProcessingStatus
+              _tlModifiedAfter
+              _tlModifiedBefore
+              _tlPageToken
+              _tlProjectId
+              _tlSearch
+              _tlMaxResults
+              _tlTags
+              _tlCreatedBefore
+              (Just AltJSON)
+              mapsEngineService
+          where go
+                  = buildClient (Proxy :: Proxy TablesListResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/MapsEngine/Tables/Parents/List.hs b/gen/Network/Google/Resource/MapsEngine/Tables/Parents/List.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/MapsEngine/Tables/Parents/List.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.MapsEngine.Tables.Parents.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)
+--
+-- Return all parent ids of the specified table.
+--
+-- /See:/ <https://developers.google.com/maps-engine/ Google Maps Engine API Reference> for @mapsengine.tables.parents.list@.
+module Network.Google.Resource.MapsEngine.Tables.Parents.List
+    (
+    -- * REST Resource
+      TablesParentsListResource
+
+    -- * Creating a Request
+    , tablesParentsList
+    , TablesParentsList
+
+    -- * Request Lenses
+    , tId
+    , tPageToken
+    , tMaxResults
+    ) where
+
+import           Network.Google.MapsEngine.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @mapsengine.tables.parents.list@ method which the
+-- 'TablesParentsList' request conforms to.
+type TablesParentsListResource =
+     "mapsengine" :>
+       "v1" :>
+         "tables" :>
+           Capture "id" Text :>
+             "parents" :>
+               QueryParam "pageToken" Text :>
+                 QueryParam "maxResults" (Textual Word32) :>
+                   QueryParam "alt" AltJSON :>
+                     Get '[JSON] ParentsListResponse
+
+-- | Return all parent ids of the specified table.
+--
+-- /See:/ 'tablesParentsList' smart constructor.
+data TablesParentsList = TablesParentsList
+    { _tId         :: !Text
+    , _tPageToken  :: !(Maybe Text)
+    , _tMaxResults :: !(Maybe (Textual Word32))
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'TablesParentsList' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'tId'
+--
+-- * 'tPageToken'
+--
+-- * 'tMaxResults'
+tablesParentsList
+    :: Text -- ^ 'tId'
+    -> TablesParentsList
+tablesParentsList pTId_ =
+    TablesParentsList
+    { _tId = pTId_
+    , _tPageToken = Nothing
+    , _tMaxResults = Nothing
+    }
+
+-- | The ID of the table whose parents will be listed.
+tId :: Lens' TablesParentsList Text
+tId = lens _tId (\ s a -> s{_tId = a})
+
+-- | The continuation token, used to page through large result sets. To get
+-- the next page of results, set this parameter to the value of
+-- nextPageToken from the previous response.
+tPageToken :: Lens' TablesParentsList (Maybe Text)
+tPageToken
+  = lens _tPageToken (\ s a -> s{_tPageToken = a})
+
+-- | The maximum number of items to include in a single response page. The
+-- maximum supported value is 50.
+tMaxResults :: Lens' TablesParentsList (Maybe Word32)
+tMaxResults
+  = lens _tMaxResults (\ s a -> s{_tMaxResults = a}) .
+      mapping _Coerce
+
+instance GoogleRequest TablesParentsList where
+        type Rs TablesParentsList = ParentsListResponse
+        requestClient TablesParentsList{..}
+          = go _tId _tPageToken _tMaxResults (Just AltJSON)
+              mapsEngineService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy TablesParentsListResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/MapsEngine/Tables/Patch.hs b/gen/Network/Google/Resource/MapsEngine/Tables/Patch.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/MapsEngine/Tables/Patch.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.MapsEngine.Tables.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)
+--
+-- Mutate a table asset.
+--
+-- /See:/ <https://developers.google.com/maps-engine/ Google Maps Engine API Reference> for @mapsengine.tables.patch@.
+module Network.Google.Resource.MapsEngine.Tables.Patch
+    (
+    -- * REST Resource
+      TablesPatchResource
+
+    -- * Creating a Request
+    , tablesPatch
+    , TablesPatch
+
+    -- * Request Lenses
+    , tpPayload
+    , tpId
+    ) where
+
+import           Network.Google.MapsEngine.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @mapsengine.tables.patch@ method which the
+-- 'TablesPatch' request conforms to.
+type TablesPatchResource =
+     "mapsengine" :>
+       "v1" :>
+         "tables" :>
+           Capture "id" Text :>
+             QueryParam "alt" AltJSON :>
+               ReqBody '[JSON] Table :> Patch '[JSON] ()
+
+-- | Mutate a table asset.
+--
+-- /See:/ 'tablesPatch' smart constructor.
+data TablesPatch = TablesPatch
+    { _tpPayload :: !Table
+    , _tpId      :: !Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'TablesPatch' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'tpPayload'
+--
+-- * 'tpId'
+tablesPatch
+    :: Table -- ^ 'tpPayload'
+    -> Text -- ^ 'tpId'
+    -> TablesPatch
+tablesPatch pTpPayload_ pTpId_ =
+    TablesPatch
+    { _tpPayload = pTpPayload_
+    , _tpId = pTpId_
+    }
+
+-- | Multipart request metadata.
+tpPayload :: Lens' TablesPatch Table
+tpPayload
+  = lens _tpPayload (\ s a -> s{_tpPayload = a})
+
+-- | The ID of the table.
+tpId :: Lens' TablesPatch Text
+tpId = lens _tpId (\ s a -> s{_tpId = a})
+
+instance GoogleRequest TablesPatch where
+        type Rs TablesPatch = ()
+        requestClient TablesPatch{..}
+          = go _tpId (Just AltJSON) _tpPayload
+              mapsEngineService
+          where go
+                  = buildClient (Proxy :: Proxy TablesPatchResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/MapsEngine/Tables/Permissions/BatchDelete.hs b/gen/Network/Google/Resource/MapsEngine/Tables/Permissions/BatchDelete.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/MapsEngine/Tables/Permissions/BatchDelete.hs
@@ -0,0 +1,100 @@
+{-# LANGUAGE DataKinds          #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE FlexibleInstances  #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+{-# LANGUAGE TypeOperators      #-}
+
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
+
+-- |
+-- Module      : Network.Google.Resource.MapsEngine.Tables.Permissions.BatchDelete
+-- 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)
+--
+-- Remove permission entries from an already existing asset.
+--
+-- /See:/ <https://developers.google.com/maps-engine/ Google Maps Engine API Reference> for @mapsengine.tables.permissions.batchDelete@.
+module Network.Google.Resource.MapsEngine.Tables.Permissions.BatchDelete
+    (
+    -- * REST Resource
+      TablesPermissionsBatchDeleteResource
+
+    -- * Creating a Request
+    , tablesPermissionsBatchDelete
+    , TablesPermissionsBatchDelete
+
+    -- * Request Lenses
+    , tpbdPayload
+    , tpbdId
+    ) where
+
+import           Network.Google.MapsEngine.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @mapsengine.tables.permissions.batchDelete@ method which the
+-- 'TablesPermissionsBatchDelete' request conforms to.
+type TablesPermissionsBatchDeleteResource =
+     "mapsengine" :>
+       "v1" :>
+         "tables" :>
+           Capture "id" Text :>
+             "permissions" :>
+               "batchDelete" :>
+                 QueryParam "alt" AltJSON :>
+                   ReqBody '[JSON] PermissionsBatchDeleteRequest :>
+                     Post '[JSON] PermissionsBatchDeleteResponse
+
+-- | Remove permission entries from an already existing asset.
+--
+-- /See:/ 'tablesPermissionsBatchDelete' smart constructor.
+data TablesPermissionsBatchDelete = TablesPermissionsBatchDelete
+    { _tpbdPayload :: !PermissionsBatchDeleteRequest
+    , _tpbdId      :: !Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'TablesPermissionsBatchDelete' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'tpbdPayload'
+--
+-- * 'tpbdId'
+tablesPermissionsBatchDelete
+    :: PermissionsBatchDeleteRequest -- ^ 'tpbdPayload'
+    -> Text -- ^ 'tpbdId'
+    -> TablesPermissionsBatchDelete
+tablesPermissionsBatchDelete pTpbdPayload_ pTpbdId_ =
+    TablesPermissionsBatchDelete
+    { _tpbdPayload = pTpbdPayload_
+    , _tpbdId = pTpbdId_
+    }
+
+-- | Multipart request metadata.
+tpbdPayload :: Lens' TablesPermissionsBatchDelete PermissionsBatchDeleteRequest
+tpbdPayload
+  = lens _tpbdPayload (\ s a -> s{_tpbdPayload = a})
+
+-- | The ID of the asset from which permissions will be removed.
+tpbdId :: Lens' TablesPermissionsBatchDelete Text
+tpbdId = lens _tpbdId (\ s a -> s{_tpbdId = a})
+
+instance GoogleRequest TablesPermissionsBatchDelete
+         where
+        type Rs TablesPermissionsBatchDelete =
+             PermissionsBatchDeleteResponse
+        requestClient TablesPermissionsBatchDelete{..}
+          = go _tpbdId (Just AltJSON) _tpbdPayload
+              mapsEngineService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy TablesPermissionsBatchDeleteResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/MapsEngine/Tables/Permissions/BatchUpdate.hs b/gen/Network/Google/Resource/MapsEngine/Tables/Permissions/BatchUpdate.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/MapsEngine/Tables/Permissions/BatchUpdate.hs
@@ -0,0 +1,104 @@
+{-# 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.MapsEngine.Tables.Permissions.BatchUpdate
+-- Copyright   : (c) 2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Add or update permission entries to an already existing asset. An asset
+-- can hold up to 20 different permission entries. Each batchInsert request
+-- is atomic.
+--
+-- /See:/ <https://developers.google.com/maps-engine/ Google Maps Engine API Reference> for @mapsengine.tables.permissions.batchUpdate@.
+module Network.Google.Resource.MapsEngine.Tables.Permissions.BatchUpdate
+    (
+    -- * REST Resource
+      TablesPermissionsBatchUpdateResource
+
+    -- * Creating a Request
+    , tablesPermissionsBatchUpdate
+    , TablesPermissionsBatchUpdate
+
+    -- * Request Lenses
+    , tpbuPayload
+    , tpbuId
+    ) where
+
+import           Network.Google.MapsEngine.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @mapsengine.tables.permissions.batchUpdate@ method which the
+-- 'TablesPermissionsBatchUpdate' request conforms to.
+type TablesPermissionsBatchUpdateResource =
+     "mapsengine" :>
+       "v1" :>
+         "tables" :>
+           Capture "id" Text :>
+             "permissions" :>
+               "batchUpdate" :>
+                 QueryParam "alt" AltJSON :>
+                   ReqBody '[JSON] PermissionsBatchUpdateRequest :>
+                     Post '[JSON] PermissionsBatchUpdateResponse
+
+-- | Add or update permission entries to an already existing asset. An asset
+-- can hold up to 20 different permission entries. Each batchInsert request
+-- is atomic.
+--
+-- /See:/ 'tablesPermissionsBatchUpdate' smart constructor.
+data TablesPermissionsBatchUpdate = TablesPermissionsBatchUpdate
+    { _tpbuPayload :: !PermissionsBatchUpdateRequest
+    , _tpbuId      :: !Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'TablesPermissionsBatchUpdate' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'tpbuPayload'
+--
+-- * 'tpbuId'
+tablesPermissionsBatchUpdate
+    :: PermissionsBatchUpdateRequest -- ^ 'tpbuPayload'
+    -> Text -- ^ 'tpbuId'
+    -> TablesPermissionsBatchUpdate
+tablesPermissionsBatchUpdate pTpbuPayload_ pTpbuId_ =
+    TablesPermissionsBatchUpdate
+    { _tpbuPayload = pTpbuPayload_
+    , _tpbuId = pTpbuId_
+    }
+
+-- | Multipart request metadata.
+tpbuPayload :: Lens' TablesPermissionsBatchUpdate PermissionsBatchUpdateRequest
+tpbuPayload
+  = lens _tpbuPayload (\ s a -> s{_tpbuPayload = a})
+
+-- | The ID of the asset to which permissions will be added.
+tpbuId :: Lens' TablesPermissionsBatchUpdate Text
+tpbuId = lens _tpbuId (\ s a -> s{_tpbuId = a})
+
+instance GoogleRequest TablesPermissionsBatchUpdate
+         where
+        type Rs TablesPermissionsBatchUpdate =
+             PermissionsBatchUpdateResponse
+        requestClient TablesPermissionsBatchUpdate{..}
+          = go _tpbuId (Just AltJSON) _tpbuPayload
+              mapsEngineService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy TablesPermissionsBatchUpdateResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/MapsEngine/Tables/Permissions/List.hs b/gen/Network/Google/Resource/MapsEngine/Tables/Permissions/List.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/MapsEngine/Tables/Permissions/List.hs
@@ -0,0 +1,85 @@
+{-# LANGUAGE DataKinds          #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE FlexibleInstances  #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+{-# LANGUAGE TypeOperators      #-}
+
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
+
+-- |
+-- Module      : Network.Google.Resource.MapsEngine.Tables.Permissions.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)
+--
+-- Return all of the permissions for the specified asset.
+--
+-- /See:/ <https://developers.google.com/maps-engine/ Google Maps Engine API Reference> for @mapsengine.tables.permissions.list@.
+module Network.Google.Resource.MapsEngine.Tables.Permissions.List
+    (
+    -- * REST Resource
+      TablesPermissionsListResource
+
+    -- * Creating a Request
+    , tablesPermissionsList
+    , TablesPermissionsList
+
+    -- * Request Lenses
+    , tplId
+    ) where
+
+import           Network.Google.MapsEngine.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @mapsengine.tables.permissions.list@ method which the
+-- 'TablesPermissionsList' request conforms to.
+type TablesPermissionsListResource =
+     "mapsengine" :>
+       "v1" :>
+         "tables" :>
+           Capture "id" Text :>
+             "permissions" :>
+               QueryParam "alt" AltJSON :>
+                 Get '[JSON] PermissionsListResponse
+
+-- | Return all of the permissions for the specified asset.
+--
+-- /See:/ 'tablesPermissionsList' smart constructor.
+newtype TablesPermissionsList = TablesPermissionsList
+    { _tplId :: Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'TablesPermissionsList' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'tplId'
+tablesPermissionsList
+    :: Text -- ^ 'tplId'
+    -> TablesPermissionsList
+tablesPermissionsList pTplId_ =
+    TablesPermissionsList
+    { _tplId = pTplId_
+    }
+
+-- | The ID of the asset whose permissions will be listed.
+tplId :: Lens' TablesPermissionsList Text
+tplId = lens _tplId (\ s a -> s{_tplId = a})
+
+instance GoogleRequest TablesPermissionsList where
+        type Rs TablesPermissionsList =
+             PermissionsListResponse
+        requestClient TablesPermissionsList{..}
+          = go _tplId (Just AltJSON) mapsEngineService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy TablesPermissionsListResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/MapsEngine/Tables/Process.hs b/gen/Network/Google/Resource/MapsEngine/Tables/Process.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/MapsEngine/Tables/Process.hs
@@ -0,0 +1,83 @@
+{-# LANGUAGE DataKinds          #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE FlexibleInstances  #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+{-# LANGUAGE TypeOperators      #-}
+
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
+
+-- |
+-- Module      : Network.Google.Resource.MapsEngine.Tables.Process
+-- 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)
+--
+-- Process a table asset.
+--
+-- /See:/ <https://developers.google.com/maps-engine/ Google Maps Engine API Reference> for @mapsengine.tables.process@.
+module Network.Google.Resource.MapsEngine.Tables.Process
+    (
+    -- * REST Resource
+      TablesProcessResource
+
+    -- * Creating a Request
+    , tablesProcess
+    , TablesProcess
+
+    -- * Request Lenses
+    , tpsId
+    ) where
+
+import           Network.Google.MapsEngine.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @mapsengine.tables.process@ method which the
+-- 'TablesProcess' request conforms to.
+type TablesProcessResource =
+     "mapsengine" :>
+       "v1" :>
+         "tables" :>
+           Capture "id" Text :>
+             "process" :>
+               QueryParam "alt" AltJSON :>
+                 Post '[JSON] ProcessResponse
+
+-- | Process a table asset.
+--
+-- /See:/ 'tablesProcess' smart constructor.
+newtype TablesProcess = TablesProcess
+    { _tpsId :: Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'TablesProcess' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'tpsId'
+tablesProcess
+    :: Text -- ^ 'tpsId'
+    -> TablesProcess
+tablesProcess pTpsId_ =
+    TablesProcess
+    { _tpsId = pTpsId_
+    }
+
+-- | The ID of the table.
+tpsId :: Lens' TablesProcess Text
+tpsId = lens _tpsId (\ s a -> s{_tpsId = a})
+
+instance GoogleRequest TablesProcess where
+        type Rs TablesProcess = ProcessResponse
+        requestClient TablesProcess{..}
+          = go _tpsId (Just AltJSON) mapsEngineService
+          where go
+                  = buildClient (Proxy :: Proxy TablesProcessResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/MapsEngine/Tables/Upload.hs b/gen/Network/Google/Resource/MapsEngine/Tables/Upload.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/MapsEngine/Tables/Upload.hs
@@ -0,0 +1,91 @@
+{-# 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.MapsEngine.Tables.Upload
+-- Copyright   : (c) 2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Create a placeholder table asset to which table files can be uploaded.
+-- Once the placeholder has been created, files are uploaded to the
+-- https:\/\/www.googleapis.com\/upload\/mapsengine\/v1\/tables\/table_id\/files
+-- endpoint. See Table Upload in the Developer\'s Guide or Table.files:
+-- insert in the reference documentation for more information.
+--
+-- /See:/ <https://developers.google.com/maps-engine/ Google Maps Engine API Reference> for @mapsengine.tables.upload@.
+module Network.Google.Resource.MapsEngine.Tables.Upload
+    (
+    -- * REST Resource
+      TablesUploadResource
+
+    -- * Creating a Request
+    , tablesUpload
+    , TablesUpload
+
+    -- * Request Lenses
+    , tuPayload
+    ) where
+
+import           Network.Google.MapsEngine.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @mapsengine.tables.upload@ method which the
+-- 'TablesUpload' request conforms to.
+type TablesUploadResource =
+     "mapsengine" :>
+       "v1" :>
+         "tables" :>
+           "upload" :>
+             QueryParam "alt" AltJSON :>
+               ReqBody '[JSON] Table :> Post '[JSON] Table
+
+-- | Create a placeholder table asset to which table files can be uploaded.
+-- Once the placeholder has been created, files are uploaded to the
+-- https:\/\/www.googleapis.com\/upload\/mapsengine\/v1\/tables\/table_id\/files
+-- endpoint. See Table Upload in the Developer\'s Guide or Table.files:
+-- insert in the reference documentation for more information.
+--
+-- /See:/ 'tablesUpload' smart constructor.
+newtype TablesUpload = TablesUpload
+    { _tuPayload :: Table
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'TablesUpload' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'tuPayload'
+tablesUpload
+    :: Table -- ^ 'tuPayload'
+    -> TablesUpload
+tablesUpload pTuPayload_ =
+    TablesUpload
+    { _tuPayload = pTuPayload_
+    }
+
+-- | Multipart request metadata.
+tuPayload :: Lens' TablesUpload Table
+tuPayload
+  = lens _tuPayload (\ s a -> s{_tuPayload = a})
+
+instance GoogleRequest TablesUpload where
+        type Rs TablesUpload = Table
+        requestClient TablesUpload{..}
+          = go (Just AltJSON) _tuPayload mapsEngineService
+          where go
+                  = buildClient (Proxy :: Proxy TablesUploadResource)
+                      mempty
diff --git a/gogol-maps-engine.cabal b/gogol-maps-engine.cabal
new file mode 100644
--- /dev/null
+++ b/gogol-maps-engine.cabal
@@ -0,0 +1,123 @@
+name:                  gogol-maps-engine
+version:               0.0.1
+synopsis:              Google Maps Engine 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:
+    The Google Maps Engine API allows developers to store and query
+    geospatial vector and raster 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 @v1@
+    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.MapsEngine
+        , Network.Google.MapsEngine.Types
+        , Network.Google.Resource.MapsEngine.Assets.Get
+        , Network.Google.Resource.MapsEngine.Assets.List
+        , Network.Google.Resource.MapsEngine.Assets.Parents.List
+        , Network.Google.Resource.MapsEngine.Assets.Permissions.List
+        , Network.Google.Resource.MapsEngine.Layers.CancelProcessing
+        , Network.Google.Resource.MapsEngine.Layers.Create
+        , Network.Google.Resource.MapsEngine.Layers.Delete
+        , Network.Google.Resource.MapsEngine.Layers.Get
+        , Network.Google.Resource.MapsEngine.Layers.GetPublished
+        , Network.Google.Resource.MapsEngine.Layers.List
+        , Network.Google.Resource.MapsEngine.Layers.ListPublished
+        , Network.Google.Resource.MapsEngine.Layers.Parents.List
+        , Network.Google.Resource.MapsEngine.Layers.Patch
+        , Network.Google.Resource.MapsEngine.Layers.Permissions.BatchDelete
+        , Network.Google.Resource.MapsEngine.Layers.Permissions.BatchUpdate
+        , Network.Google.Resource.MapsEngine.Layers.Permissions.List
+        , Network.Google.Resource.MapsEngine.Layers.Process
+        , Network.Google.Resource.MapsEngine.Layers.Publish
+        , Network.Google.Resource.MapsEngine.Layers.UnPublish
+        , Network.Google.Resource.MapsEngine.Maps.Create
+        , Network.Google.Resource.MapsEngine.Maps.Delete
+        , Network.Google.Resource.MapsEngine.Maps.Get
+        , Network.Google.Resource.MapsEngine.Maps.GetPublished
+        , Network.Google.Resource.MapsEngine.Maps.List
+        , Network.Google.Resource.MapsEngine.Maps.ListPublished
+        , Network.Google.Resource.MapsEngine.Maps.Patch
+        , Network.Google.Resource.MapsEngine.Maps.Permissions.BatchDelete
+        , Network.Google.Resource.MapsEngine.Maps.Permissions.BatchUpdate
+        , Network.Google.Resource.MapsEngine.Maps.Permissions.List
+        , Network.Google.Resource.MapsEngine.Maps.Publish
+        , Network.Google.Resource.MapsEngine.Maps.UnPublish
+        , Network.Google.Resource.MapsEngine.Projects.Icons.Create
+        , Network.Google.Resource.MapsEngine.Projects.Icons.Get
+        , Network.Google.Resource.MapsEngine.Projects.Icons.List
+        , Network.Google.Resource.MapsEngine.Projects.List
+        , Network.Google.Resource.MapsEngine.RasterCollections.CancelProcessing
+        , Network.Google.Resource.MapsEngine.RasterCollections.Create
+        , Network.Google.Resource.MapsEngine.RasterCollections.Delete
+        , Network.Google.Resource.MapsEngine.RasterCollections.Get
+        , Network.Google.Resource.MapsEngine.RasterCollections.List
+        , Network.Google.Resource.MapsEngine.RasterCollections.Parents.List
+        , Network.Google.Resource.MapsEngine.RasterCollections.Patch
+        , Network.Google.Resource.MapsEngine.RasterCollections.Permissions.BatchDelete
+        , Network.Google.Resource.MapsEngine.RasterCollections.Permissions.BatchUpdate
+        , Network.Google.Resource.MapsEngine.RasterCollections.Permissions.List
+        , Network.Google.Resource.MapsEngine.RasterCollections.Process
+        , Network.Google.Resource.MapsEngine.RasterCollections.Rasters.BatchDelete
+        , Network.Google.Resource.MapsEngine.RasterCollections.Rasters.BatchInsert
+        , Network.Google.Resource.MapsEngine.RasterCollections.Rasters.List
+        , Network.Google.Resource.MapsEngine.Rasters.Delete
+        , Network.Google.Resource.MapsEngine.Rasters.Files.Insert
+        , Network.Google.Resource.MapsEngine.Rasters.Get
+        , Network.Google.Resource.MapsEngine.Rasters.List
+        , Network.Google.Resource.MapsEngine.Rasters.Parents.List
+        , Network.Google.Resource.MapsEngine.Rasters.Patch
+        , Network.Google.Resource.MapsEngine.Rasters.Permissions.BatchDelete
+        , Network.Google.Resource.MapsEngine.Rasters.Permissions.BatchUpdate
+        , Network.Google.Resource.MapsEngine.Rasters.Permissions.List
+        , Network.Google.Resource.MapsEngine.Rasters.Process
+        , Network.Google.Resource.MapsEngine.Rasters.Upload
+        , Network.Google.Resource.MapsEngine.Tables.Create
+        , Network.Google.Resource.MapsEngine.Tables.Delete
+        , Network.Google.Resource.MapsEngine.Tables.Features.BatchDelete
+        , Network.Google.Resource.MapsEngine.Tables.Features.BatchInsert
+        , Network.Google.Resource.MapsEngine.Tables.Features.BatchPatch
+        , Network.Google.Resource.MapsEngine.Tables.Features.Get
+        , Network.Google.Resource.MapsEngine.Tables.Features.List
+        , Network.Google.Resource.MapsEngine.Tables.Files.Insert
+        , Network.Google.Resource.MapsEngine.Tables.Get
+        , Network.Google.Resource.MapsEngine.Tables.List
+        , Network.Google.Resource.MapsEngine.Tables.Parents.List
+        , Network.Google.Resource.MapsEngine.Tables.Patch
+        , Network.Google.Resource.MapsEngine.Tables.Permissions.BatchDelete
+        , Network.Google.Resource.MapsEngine.Tables.Permissions.BatchUpdate
+        , Network.Google.Resource.MapsEngine.Tables.Permissions.List
+        , Network.Google.Resource.MapsEngine.Tables.Process
+        , Network.Google.Resource.MapsEngine.Tables.Upload
+
+    other-modules:
+          Network.Google.MapsEngine.Types.Product
+        , Network.Google.MapsEngine.Types.Sum
+
+    build-depends:
+          gogol-core == 0.0.1.*
+        , base       >= 4.7 && < 5
