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-taskqueue
+
+* [Version](#version)
+* [Description](#description)
+* [Contribute](#contribute)
+* [Licence](#licence)
+
+
+## Version
+
+`0.0.1`
+
+
+## Description
+
+A client library for the Google TaskQueue.
+
+
+## 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-taskqueue` 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/Resource/TaskQueue/Taskqueues/Get.hs b/gen/Network/Google/Resource/TaskQueue/Taskqueues/Get.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/TaskQueue/Taskqueues/Get.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.TaskQueue.Taskqueues.Get
+-- Copyright   : (c) 2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Get detailed information about a TaskQueue.
+--
+-- /See:/ <https://developers.google.com/appengine/docs/python/taskqueue/rest TaskQueue API Reference> for @taskqueue.taskqueues.get@.
+module Network.Google.Resource.TaskQueue.Taskqueues.Get
+    (
+    -- * REST Resource
+      TaskqueuesGetResource
+
+    -- * Creating a Request
+    , taskqueuesGet
+    , TaskqueuesGet
+
+    -- * Request Lenses
+    , tasTaskqueue
+    , tasProject
+    , tasGetStats
+    ) where
+
+import           Network.Google.Prelude
+import           Network.Google.TaskQueue.Types
+
+-- | A resource alias for @taskqueue.taskqueues.get@ method which the
+-- 'TaskqueuesGet' request conforms to.
+type TaskqueuesGetResource =
+     "taskqueue" :>
+       "v1beta2" :>
+         "projects" :>
+           Capture "project" Text :>
+             "taskqueues" :>
+               Capture "taskqueue" Text :>
+                 QueryParam "getStats" Bool :>
+                   QueryParam "alt" AltJSON :> Get '[JSON] TaskQueue
+
+-- | Get detailed information about a TaskQueue.
+--
+-- /See:/ 'taskqueuesGet' smart constructor.
+data TaskqueuesGet = TaskqueuesGet
+    { _tasTaskqueue :: !Text
+    , _tasProject   :: !Text
+    , _tasGetStats  :: !(Maybe Bool)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'TaskqueuesGet' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'tasTaskqueue'
+--
+-- * 'tasProject'
+--
+-- * 'tasGetStats'
+taskqueuesGet
+    :: Text -- ^ 'tasTaskqueue'
+    -> Text -- ^ 'tasProject'
+    -> TaskqueuesGet
+taskqueuesGet pTasTaskqueue_ pTasProject_ =
+    TaskqueuesGet
+    { _tasTaskqueue = pTasTaskqueue_
+    , _tasProject = pTasProject_
+    , _tasGetStats = Nothing
+    }
+
+-- | The id of the taskqueue to get the properties of.
+tasTaskqueue :: Lens' TaskqueuesGet Text
+tasTaskqueue
+  = lens _tasTaskqueue (\ s a -> s{_tasTaskqueue = a})
+
+-- | The project under which the queue lies.
+tasProject :: Lens' TaskqueuesGet Text
+tasProject
+  = lens _tasProject (\ s a -> s{_tasProject = a})
+
+-- | Whether to get stats. Optional.
+tasGetStats :: Lens' TaskqueuesGet (Maybe Bool)
+tasGetStats
+  = lens _tasGetStats (\ s a -> s{_tasGetStats = a})
+
+instance GoogleRequest TaskqueuesGet where
+        type Rs TaskqueuesGet = TaskQueue
+        requestClient TaskqueuesGet{..}
+          = go _tasProject _tasTaskqueue _tasGetStats
+              (Just AltJSON)
+              taskQueueService
+          where go
+                  = buildClient (Proxy :: Proxy TaskqueuesGetResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/TaskQueue/Tasks/Delete.hs b/gen/Network/Google/Resource/TaskQueue/Tasks/Delete.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/TaskQueue/Tasks/Delete.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.TaskQueue.Tasks.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 task from a TaskQueue.
+--
+-- /See:/ <https://developers.google.com/appengine/docs/python/taskqueue/rest TaskQueue API Reference> for @taskqueue.tasks.delete@.
+module Network.Google.Resource.TaskQueue.Tasks.Delete
+    (
+    -- * REST Resource
+      TasksDeleteResource
+
+    -- * Creating a Request
+    , tasksDelete
+    , TasksDelete
+
+    -- * Request Lenses
+    , tdTaskqueue
+    , tdProject
+    , tdTask
+    ) where
+
+import           Network.Google.Prelude
+import           Network.Google.TaskQueue.Types
+
+-- | A resource alias for @taskqueue.tasks.delete@ method which the
+-- 'TasksDelete' request conforms to.
+type TasksDeleteResource =
+     "taskqueue" :>
+       "v1beta2" :>
+         "projects" :>
+           Capture "project" Text :>
+             "taskqueues" :>
+               Capture "taskqueue" Text :>
+                 "tasks" :>
+                   Capture "task" Text :>
+                     QueryParam "alt" AltJSON :> Delete '[JSON] ()
+
+-- | Delete a task from a TaskQueue.
+--
+-- /See:/ 'tasksDelete' smart constructor.
+data TasksDelete = TasksDelete
+    { _tdTaskqueue :: !Text
+    , _tdProject   :: !Text
+    , _tdTask      :: !Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'TasksDelete' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'tdTaskqueue'
+--
+-- * 'tdProject'
+--
+-- * 'tdTask'
+tasksDelete
+    :: Text -- ^ 'tdTaskqueue'
+    -> Text -- ^ 'tdProject'
+    -> Text -- ^ 'tdTask'
+    -> TasksDelete
+tasksDelete pTdTaskqueue_ pTdProject_ pTdTask_ =
+    TasksDelete
+    { _tdTaskqueue = pTdTaskqueue_
+    , _tdProject = pTdProject_
+    , _tdTask = pTdTask_
+    }
+
+-- | The taskqueue to delete a task from.
+tdTaskqueue :: Lens' TasksDelete Text
+tdTaskqueue
+  = lens _tdTaskqueue (\ s a -> s{_tdTaskqueue = a})
+
+-- | The project under which the queue lies.
+tdProject :: Lens' TasksDelete Text
+tdProject
+  = lens _tdProject (\ s a -> s{_tdProject = a})
+
+-- | The id of the task to delete.
+tdTask :: Lens' TasksDelete Text
+tdTask = lens _tdTask (\ s a -> s{_tdTask = a})
+
+instance GoogleRequest TasksDelete where
+        type Rs TasksDelete = ()
+        requestClient TasksDelete{..}
+          = go _tdProject _tdTaskqueue _tdTask (Just AltJSON)
+              taskQueueService
+          where go
+                  = buildClient (Proxy :: Proxy TasksDeleteResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/TaskQueue/Tasks/Get.hs b/gen/Network/Google/Resource/TaskQueue/Tasks/Get.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/TaskQueue/Tasks/Get.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.TaskQueue.Tasks.Get
+-- Copyright   : (c) 2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Get a particular task from a TaskQueue.
+--
+-- /See:/ <https://developers.google.com/appengine/docs/python/taskqueue/rest TaskQueue API Reference> for @taskqueue.tasks.get@.
+module Network.Google.Resource.TaskQueue.Tasks.Get
+    (
+    -- * REST Resource
+      TasksGetResource
+
+    -- * Creating a Request
+    , tasksGet
+    , TasksGet
+
+    -- * Request Lenses
+    , tgTaskqueue
+    , tgProject
+    , tgTask
+    ) where
+
+import           Network.Google.Prelude
+import           Network.Google.TaskQueue.Types
+
+-- | A resource alias for @taskqueue.tasks.get@ method which the
+-- 'TasksGet' request conforms to.
+type TasksGetResource =
+     "taskqueue" :>
+       "v1beta2" :>
+         "projects" :>
+           Capture "project" Text :>
+             "taskqueues" :>
+               Capture "taskqueue" Text :>
+                 "tasks" :>
+                   Capture "task" Text :>
+                     QueryParam "alt" AltJSON :> Get '[JSON] Task
+
+-- | Get a particular task from a TaskQueue.
+--
+-- /See:/ 'tasksGet' smart constructor.
+data TasksGet = TasksGet
+    { _tgTaskqueue :: !Text
+    , _tgProject   :: !Text
+    , _tgTask      :: !Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'TasksGet' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'tgTaskqueue'
+--
+-- * 'tgProject'
+--
+-- * 'tgTask'
+tasksGet
+    :: Text -- ^ 'tgTaskqueue'
+    -> Text -- ^ 'tgProject'
+    -> Text -- ^ 'tgTask'
+    -> TasksGet
+tasksGet pTgTaskqueue_ pTgProject_ pTgTask_ =
+    TasksGet
+    { _tgTaskqueue = pTgTaskqueue_
+    , _tgProject = pTgProject_
+    , _tgTask = pTgTask_
+    }
+
+-- | The taskqueue in which the task belongs.
+tgTaskqueue :: Lens' TasksGet Text
+tgTaskqueue
+  = lens _tgTaskqueue (\ s a -> s{_tgTaskqueue = a})
+
+-- | The project under which the queue lies.
+tgProject :: Lens' TasksGet Text
+tgProject
+  = lens _tgProject (\ s a -> s{_tgProject = a})
+
+-- | The task to get properties of.
+tgTask :: Lens' TasksGet Text
+tgTask = lens _tgTask (\ s a -> s{_tgTask = a})
+
+instance GoogleRequest TasksGet where
+        type Rs TasksGet = Task
+        requestClient TasksGet{..}
+          = go _tgProject _tgTaskqueue _tgTask (Just AltJSON)
+              taskQueueService
+          where go
+                  = buildClient (Proxy :: Proxy TasksGetResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/TaskQueue/Tasks/Insert.hs b/gen/Network/Google/Resource/TaskQueue/Tasks/Insert.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/TaskQueue/Tasks/Insert.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.TaskQueue.Tasks.Insert
+-- Copyright   : (c) 2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Insert a new task in a TaskQueue
+--
+-- /See:/ <https://developers.google.com/appengine/docs/python/taskqueue/rest TaskQueue API Reference> for @taskqueue.tasks.insert@.
+module Network.Google.Resource.TaskQueue.Tasks.Insert
+    (
+    -- * REST Resource
+      TasksInsertResource
+
+    -- * Creating a Request
+    , tasksInsert
+    , TasksInsert
+
+    -- * Request Lenses
+    , tiTaskqueue
+    , tiProject
+    , tiPayload
+    ) where
+
+import           Network.Google.Prelude
+import           Network.Google.TaskQueue.Types
+
+-- | A resource alias for @taskqueue.tasks.insert@ method which the
+-- 'TasksInsert' request conforms to.
+type TasksInsertResource =
+     "taskqueue" :>
+       "v1beta2" :>
+         "projects" :>
+           Capture "project" Text :>
+             "taskqueues" :>
+               Capture "taskqueue" Text :>
+                 "tasks" :>
+                   QueryParam "alt" AltJSON :>
+                     ReqBody '[JSON] Task :> Post '[JSON] Task
+
+-- | Insert a new task in a TaskQueue
+--
+-- /See:/ 'tasksInsert' smart constructor.
+data TasksInsert = TasksInsert
+    { _tiTaskqueue :: !Text
+    , _tiProject   :: !Text
+    , _tiPayload   :: !Task
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'TasksInsert' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'tiTaskqueue'
+--
+-- * 'tiProject'
+--
+-- * 'tiPayload'
+tasksInsert
+    :: Text -- ^ 'tiTaskqueue'
+    -> Text -- ^ 'tiProject'
+    -> Task -- ^ 'tiPayload'
+    -> TasksInsert
+tasksInsert pTiTaskqueue_ pTiProject_ pTiPayload_ =
+    TasksInsert
+    { _tiTaskqueue = pTiTaskqueue_
+    , _tiProject = pTiProject_
+    , _tiPayload = pTiPayload_
+    }
+
+-- | The taskqueue to insert the task into
+tiTaskqueue :: Lens' TasksInsert Text
+tiTaskqueue
+  = lens _tiTaskqueue (\ s a -> s{_tiTaskqueue = a})
+
+-- | The project under which the queue lies
+tiProject :: Lens' TasksInsert Text
+tiProject
+  = lens _tiProject (\ s a -> s{_tiProject = a})
+
+-- | Multipart request metadata.
+tiPayload :: Lens' TasksInsert Task
+tiPayload
+  = lens _tiPayload (\ s a -> s{_tiPayload = a})
+
+instance GoogleRequest TasksInsert where
+        type Rs TasksInsert = Task
+        requestClient TasksInsert{..}
+          = go _tiProject _tiTaskqueue (Just AltJSON)
+              _tiPayload
+              taskQueueService
+          where go
+                  = buildClient (Proxy :: Proxy TasksInsertResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/TaskQueue/Tasks/Lease.hs b/gen/Network/Google/Resource/TaskQueue/Tasks/Lease.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/TaskQueue/Tasks/Lease.hs
@@ -0,0 +1,152 @@
+{-# 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.TaskQueue.Tasks.Lease
+-- 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)
+--
+-- Lease 1 or more tasks from a TaskQueue.
+--
+-- /See:/ <https://developers.google.com/appengine/docs/python/taskqueue/rest TaskQueue API Reference> for @taskqueue.tasks.lease@.
+module Network.Google.Resource.TaskQueue.Tasks.Lease
+    (
+    -- * REST Resource
+      TasksLeaseResource
+
+    -- * Creating a Request
+    , tasksLease
+    , TasksLease
+
+    -- * Request Lenses
+    , tlTaskqueue
+    , tlTag
+    , tlProject
+    , tlNumTasks
+    , tlLeaseSecs
+    , tlGroupByTag
+    ) where
+
+import           Network.Google.Prelude
+import           Network.Google.TaskQueue.Types
+
+-- | A resource alias for @taskqueue.tasks.lease@ method which the
+-- 'TasksLease' request conforms to.
+type TasksLeaseResource =
+     "taskqueue" :>
+       "v1beta2" :>
+         "projects" :>
+           Capture "project" Text :>
+             "taskqueues" :>
+               Capture "taskqueue" Text :>
+                 "tasks" :>
+                   "lease" :>
+                     QueryParam "numTasks" (Textual Int32) :>
+                       QueryParam "leaseSecs" (Textual Int32) :>
+                         QueryParam "tag" Text :>
+                           QueryParam "groupByTag" Bool :>
+                             QueryParam "alt" AltJSON :> Post '[JSON] Tasks
+
+-- | Lease 1 or more tasks from a TaskQueue.
+--
+-- /See:/ 'tasksLease' smart constructor.
+data TasksLease = TasksLease
+    { _tlTaskqueue  :: !Text
+    , _tlTag        :: !(Maybe Text)
+    , _tlProject    :: !Text
+    , _tlNumTasks   :: !(Textual Int32)
+    , _tlLeaseSecs  :: !(Textual Int32)
+    , _tlGroupByTag :: !(Maybe Bool)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'TasksLease' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'tlTaskqueue'
+--
+-- * 'tlTag'
+--
+-- * 'tlProject'
+--
+-- * 'tlNumTasks'
+--
+-- * 'tlLeaseSecs'
+--
+-- * 'tlGroupByTag'
+tasksLease
+    :: Text -- ^ 'tlTaskqueue'
+    -> Text -- ^ 'tlProject'
+    -> Int32 -- ^ 'tlNumTasks'
+    -> Int32 -- ^ 'tlLeaseSecs'
+    -> TasksLease
+tasksLease pTlTaskqueue_ pTlProject_ pTlNumTasks_ pTlLeaseSecs_ =
+    TasksLease
+    { _tlTaskqueue = pTlTaskqueue_
+    , _tlTag = Nothing
+    , _tlProject = pTlProject_
+    , _tlNumTasks = _Coerce # pTlNumTasks_
+    , _tlLeaseSecs = _Coerce # pTlLeaseSecs_
+    , _tlGroupByTag = Nothing
+    }
+
+-- | The taskqueue to lease a task from.
+tlTaskqueue :: Lens' TasksLease Text
+tlTaskqueue
+  = lens _tlTaskqueue (\ s a -> s{_tlTaskqueue = a})
+
+-- | The tag allowed for tasks in the response. Must only be specified if
+-- group_by_tag is true. If group_by_tag is true and tag is not specified
+-- the tag will be that of the oldest task by eta, i.e. the first available
+-- tag
+tlTag :: Lens' TasksLease (Maybe Text)
+tlTag = lens _tlTag (\ s a -> s{_tlTag = a})
+
+-- | The project under which the queue lies.
+tlProject :: Lens' TasksLease Text
+tlProject
+  = lens _tlProject (\ s a -> s{_tlProject = a})
+
+-- | The number of tasks to lease.
+tlNumTasks :: Lens' TasksLease Int32
+tlNumTasks
+  = lens _tlNumTasks (\ s a -> s{_tlNumTasks = a}) .
+      _Coerce
+
+-- | The lease in seconds.
+tlLeaseSecs :: Lens' TasksLease Int32
+tlLeaseSecs
+  = lens _tlLeaseSecs (\ s a -> s{_tlLeaseSecs = a}) .
+      _Coerce
+
+-- | When true, all returned tasks will have the same tag
+tlGroupByTag :: Lens' TasksLease (Maybe Bool)
+tlGroupByTag
+  = lens _tlGroupByTag (\ s a -> s{_tlGroupByTag = a})
+
+instance GoogleRequest TasksLease where
+        type Rs TasksLease = Tasks
+        requestClient TasksLease{..}
+          = go _tlProject _tlTaskqueue (Just _tlNumTasks)
+              (Just _tlLeaseSecs)
+              _tlTag
+              _tlGroupByTag
+              (Just AltJSON)
+              taskQueueService
+          where go
+                  = buildClient (Proxy :: Proxy TasksLeaseResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/TaskQueue/Tasks/List.hs b/gen/Network/Google/Resource/TaskQueue/Tasks/List.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/TaskQueue/Tasks/List.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.TaskQueue.Tasks.List
+-- Copyright   : (c) 2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- List Tasks in a TaskQueue
+--
+-- /See:/ <https://developers.google.com/appengine/docs/python/taskqueue/rest TaskQueue API Reference> for @taskqueue.tasks.list@.
+module Network.Google.Resource.TaskQueue.Tasks.List
+    (
+    -- * REST Resource
+      TasksListResource
+
+    -- * Creating a Request
+    , tasksList
+    , TasksList
+
+    -- * Request Lenses
+    , tTaskqueue
+    , tProject
+    ) where
+
+import           Network.Google.Prelude
+import           Network.Google.TaskQueue.Types
+
+-- | A resource alias for @taskqueue.tasks.list@ method which the
+-- 'TasksList' request conforms to.
+type TasksListResource =
+     "taskqueue" :>
+       "v1beta2" :>
+         "projects" :>
+           Capture "project" Text :>
+             "taskqueues" :>
+               Capture "taskqueue" Text :>
+                 "tasks" :>
+                   QueryParam "alt" AltJSON :> Get '[JSON] Tasks2
+
+-- | List Tasks in a TaskQueue
+--
+-- /See:/ 'tasksList' smart constructor.
+data TasksList = TasksList
+    { _tTaskqueue :: !Text
+    , _tProject   :: !Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'TasksList' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'tTaskqueue'
+--
+-- * 'tProject'
+tasksList
+    :: Text -- ^ 'tTaskqueue'
+    -> Text -- ^ 'tProject'
+    -> TasksList
+tasksList pTTaskqueue_ pTProject_ =
+    TasksList
+    { _tTaskqueue = pTTaskqueue_
+    , _tProject = pTProject_
+    }
+
+-- | The id of the taskqueue to list tasks from.
+tTaskqueue :: Lens' TasksList Text
+tTaskqueue
+  = lens _tTaskqueue (\ s a -> s{_tTaskqueue = a})
+
+-- | The project under which the queue lies.
+tProject :: Lens' TasksList Text
+tProject = lens _tProject (\ s a -> s{_tProject = a})
+
+instance GoogleRequest TasksList where
+        type Rs TasksList = Tasks2
+        requestClient TasksList{..}
+          = go _tProject _tTaskqueue (Just AltJSON)
+              taskQueueService
+          where go
+                  = buildClient (Proxy :: Proxy TasksListResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/TaskQueue/Tasks/Patch.hs b/gen/Network/Google/Resource/TaskQueue/Tasks/Patch.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/TaskQueue/Tasks/Patch.hs
@@ -0,0 +1,137 @@
+{-# 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.TaskQueue.Tasks.Patch
+-- Copyright   : (c) 2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Update tasks that are leased out of a TaskQueue. This method supports
+-- patch semantics.
+--
+-- /See:/ <https://developers.google.com/appengine/docs/python/taskqueue/rest TaskQueue API Reference> for @taskqueue.tasks.patch@.
+module Network.Google.Resource.TaskQueue.Tasks.Patch
+    (
+    -- * REST Resource
+      TasksPatchResource
+
+    -- * Creating a Request
+    , tasksPatch
+    , TasksPatch
+
+    -- * Request Lenses
+    , tpTaskqueue
+    , tpProject
+    , tpPayload
+    , tpTask
+    , tpNewLeaseSeconds
+    ) where
+
+import           Network.Google.Prelude
+import           Network.Google.TaskQueue.Types
+
+-- | A resource alias for @taskqueue.tasks.patch@ method which the
+-- 'TasksPatch' request conforms to.
+type TasksPatchResource =
+     "taskqueue" :>
+       "v1beta2" :>
+         "projects" :>
+           Capture "project" Text :>
+             "taskqueues" :>
+               Capture "taskqueue" Text :>
+                 "tasks" :>
+                   Capture "task" Text :>
+                     QueryParam "newLeaseSeconds" (Textual Int32) :>
+                       QueryParam "alt" AltJSON :>
+                         ReqBody '[JSON] Task :> Patch '[JSON] Task
+
+-- | Update tasks that are leased out of a TaskQueue. This method supports
+-- patch semantics.
+--
+-- /See:/ 'tasksPatch' smart constructor.
+data TasksPatch = TasksPatch
+    { _tpTaskqueue       :: !Text
+    , _tpProject         :: !Text
+    , _tpPayload         :: !Task
+    , _tpTask            :: !Text
+    , _tpNewLeaseSeconds :: !(Textual Int32)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'TasksPatch' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'tpTaskqueue'
+--
+-- * 'tpProject'
+--
+-- * 'tpPayload'
+--
+-- * 'tpTask'
+--
+-- * 'tpNewLeaseSeconds'
+tasksPatch
+    :: Text -- ^ 'tpTaskqueue'
+    -> Text -- ^ 'tpProject'
+    -> Task -- ^ 'tpPayload'
+    -> Text -- ^ 'tpTask'
+    -> Int32 -- ^ 'tpNewLeaseSeconds'
+    -> TasksPatch
+tasksPatch pTpTaskqueue_ pTpProject_ pTpPayload_ pTpTask_ pTpNewLeaseSeconds_ =
+    TasksPatch
+    { _tpTaskqueue = pTpTaskqueue_
+    , _tpProject = pTpProject_
+    , _tpPayload = pTpPayload_
+    , _tpTask = pTpTask_
+    , _tpNewLeaseSeconds = _Coerce # pTpNewLeaseSeconds_
+    }
+
+tpTaskqueue :: Lens' TasksPatch Text
+tpTaskqueue
+  = lens _tpTaskqueue (\ s a -> s{_tpTaskqueue = a})
+
+-- | The project under which the queue lies.
+tpProject :: Lens' TasksPatch Text
+tpProject
+  = lens _tpProject (\ s a -> s{_tpProject = a})
+
+-- | Multipart request metadata.
+tpPayload :: Lens' TasksPatch Task
+tpPayload
+  = lens _tpPayload (\ s a -> s{_tpPayload = a})
+
+tpTask :: Lens' TasksPatch Text
+tpTask = lens _tpTask (\ s a -> s{_tpTask = a})
+
+-- | The new lease in seconds.
+tpNewLeaseSeconds :: Lens' TasksPatch Int32
+tpNewLeaseSeconds
+  = lens _tpNewLeaseSeconds
+      (\ s a -> s{_tpNewLeaseSeconds = a})
+      . _Coerce
+
+instance GoogleRequest TasksPatch where
+        type Rs TasksPatch = Task
+        requestClient TasksPatch{..}
+          = go _tpProject _tpTaskqueue _tpTask
+              (Just _tpNewLeaseSeconds)
+              (Just AltJSON)
+              _tpPayload
+              taskQueueService
+          where go
+                  = buildClient (Proxy :: Proxy TasksPatchResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/TaskQueue/Tasks/Update.hs b/gen/Network/Google/Resource/TaskQueue/Tasks/Update.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/TaskQueue/Tasks/Update.hs
@@ -0,0 +1,135 @@
+{-# 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.TaskQueue.Tasks.Update
+-- Copyright   : (c) 2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Update tasks that are leased out of a TaskQueue.
+--
+-- /See:/ <https://developers.google.com/appengine/docs/python/taskqueue/rest TaskQueue API Reference> for @taskqueue.tasks.update@.
+module Network.Google.Resource.TaskQueue.Tasks.Update
+    (
+    -- * REST Resource
+      TasksUpdateResource
+
+    -- * Creating a Request
+    , tasksUpdate
+    , TasksUpdate
+
+    -- * Request Lenses
+    , tuTaskqueue
+    , tuProject
+    , tuPayload
+    , tuTask
+    , tuNewLeaseSeconds
+    ) where
+
+import           Network.Google.Prelude
+import           Network.Google.TaskQueue.Types
+
+-- | A resource alias for @taskqueue.tasks.update@ method which the
+-- 'TasksUpdate' request conforms to.
+type TasksUpdateResource =
+     "taskqueue" :>
+       "v1beta2" :>
+         "projects" :>
+           Capture "project" Text :>
+             "taskqueues" :>
+               Capture "taskqueue" Text :>
+                 "tasks" :>
+                   Capture "task" Text :>
+                     QueryParam "newLeaseSeconds" (Textual Int32) :>
+                       QueryParam "alt" AltJSON :>
+                         ReqBody '[JSON] Task :> Post '[JSON] Task
+
+-- | Update tasks that are leased out of a TaskQueue.
+--
+-- /See:/ 'tasksUpdate' smart constructor.
+data TasksUpdate = TasksUpdate
+    { _tuTaskqueue       :: !Text
+    , _tuProject         :: !Text
+    , _tuPayload         :: !Task
+    , _tuTask            :: !Text
+    , _tuNewLeaseSeconds :: !(Textual Int32)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'TasksUpdate' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'tuTaskqueue'
+--
+-- * 'tuProject'
+--
+-- * 'tuPayload'
+--
+-- * 'tuTask'
+--
+-- * 'tuNewLeaseSeconds'
+tasksUpdate
+    :: Text -- ^ 'tuTaskqueue'
+    -> Text -- ^ 'tuProject'
+    -> Task -- ^ 'tuPayload'
+    -> Text -- ^ 'tuTask'
+    -> Int32 -- ^ 'tuNewLeaseSeconds'
+    -> TasksUpdate
+tasksUpdate pTuTaskqueue_ pTuProject_ pTuPayload_ pTuTask_ pTuNewLeaseSeconds_ =
+    TasksUpdate
+    { _tuTaskqueue = pTuTaskqueue_
+    , _tuProject = pTuProject_
+    , _tuPayload = pTuPayload_
+    , _tuTask = pTuTask_
+    , _tuNewLeaseSeconds = _Coerce # pTuNewLeaseSeconds_
+    }
+
+tuTaskqueue :: Lens' TasksUpdate Text
+tuTaskqueue
+  = lens _tuTaskqueue (\ s a -> s{_tuTaskqueue = a})
+
+-- | The project under which the queue lies.
+tuProject :: Lens' TasksUpdate Text
+tuProject
+  = lens _tuProject (\ s a -> s{_tuProject = a})
+
+-- | Multipart request metadata.
+tuPayload :: Lens' TasksUpdate Task
+tuPayload
+  = lens _tuPayload (\ s a -> s{_tuPayload = a})
+
+tuTask :: Lens' TasksUpdate Text
+tuTask = lens _tuTask (\ s a -> s{_tuTask = a})
+
+-- | The new lease in seconds.
+tuNewLeaseSeconds :: Lens' TasksUpdate Int32
+tuNewLeaseSeconds
+  = lens _tuNewLeaseSeconds
+      (\ s a -> s{_tuNewLeaseSeconds = a})
+      . _Coerce
+
+instance GoogleRequest TasksUpdate where
+        type Rs TasksUpdate = Task
+        requestClient TasksUpdate{..}
+          = go _tuProject _tuTaskqueue _tuTask
+              (Just _tuNewLeaseSeconds)
+              (Just AltJSON)
+              _tuPayload
+              taskQueueService
+          where go
+                  = buildClient (Proxy :: Proxy TasksUpdateResource)
+                      mempty
diff --git a/gen/Network/Google/TaskQueue.hs b/gen/Network/Google/TaskQueue.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/TaskQueue.hs
@@ -0,0 +1,127 @@
+{-# LANGUAGE DataKinds         #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# LANGUAGE TypeOperators     #-}
+
+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+
+-- |
+-- Module      : Network.Google.TaskQueue
+-- Copyright   : (c) 2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Lets you access a Google App Engine Pull Task Queue over REST.
+--
+-- /See:/ <https://developers.google.com/appengine/docs/python/taskqueue/rest TaskQueue API Reference>
+module Network.Google.TaskQueue
+    (
+    -- * Service Configuration
+      taskQueueService
+
+    -- * API Declaration
+    , TaskQueueAPI
+
+    -- * Resources
+
+    -- ** taskqueue.taskqueues.get
+    , module Network.Google.Resource.TaskQueue.Taskqueues.Get
+
+    -- ** taskqueue.tasks.delete
+    , module Network.Google.Resource.TaskQueue.Tasks.Delete
+
+    -- ** taskqueue.tasks.get
+    , module Network.Google.Resource.TaskQueue.Tasks.Get
+
+    -- ** taskqueue.tasks.insert
+    , module Network.Google.Resource.TaskQueue.Tasks.Insert
+
+    -- ** taskqueue.tasks.lease
+    , module Network.Google.Resource.TaskQueue.Tasks.Lease
+
+    -- ** taskqueue.tasks.list
+    , module Network.Google.Resource.TaskQueue.Tasks.List
+
+    -- ** taskqueue.tasks.patch
+    , module Network.Google.Resource.TaskQueue.Tasks.Patch
+
+    -- ** taskqueue.tasks.update
+    , module Network.Google.Resource.TaskQueue.Tasks.Update
+
+    -- * Types
+
+    -- ** Tasks2
+    , Tasks2
+    , tasks2
+    , tKind
+    , tItems
+
+    -- ** TaskQueue
+    , TaskQueue
+    , taskQueue
+    , tqKind
+    , tqStats
+    , tqMaxLeases
+    , tqId
+    , tqACL
+
+    -- ** TaskQueueACL
+    , TaskQueueACL
+    , taskQueueACL
+    , tqaProducerEmails
+    , tqaAdminEmails
+    , tqaConsumerEmails
+
+    -- ** TaskQueueStats
+    , TaskQueueStats
+    , taskQueueStats
+    , tqsTotalTasks
+    , tqsOldestTask
+    , tqsLeasedLastHour
+    , tqsLeasedLastMinute
+
+    -- ** Tasks
+    , Tasks
+    , tasks
+    , tasKind
+    , tasItems
+
+    -- ** Task
+    , Task
+    , task
+    , ttRetryCount
+    , ttEnqueueTimestamp
+    , ttTag
+    , ttKind
+    , ttQueueName
+    , ttPayloadBase64
+    , ttId
+    , ttLeaseTimestamp
+    ) where
+
+import           Network.Google.Prelude
+import           Network.Google.Resource.TaskQueue.Taskqueues.Get
+import           Network.Google.Resource.TaskQueue.Tasks.Delete
+import           Network.Google.Resource.TaskQueue.Tasks.Get
+import           Network.Google.Resource.TaskQueue.Tasks.Insert
+import           Network.Google.Resource.TaskQueue.Tasks.Lease
+import           Network.Google.Resource.TaskQueue.Tasks.List
+import           Network.Google.Resource.TaskQueue.Tasks.Patch
+import           Network.Google.Resource.TaskQueue.Tasks.Update
+import           Network.Google.TaskQueue.Types
+
+{- $resources
+TODO
+-}
+
+-- | Represents the entirety of the methods and resources available for the TaskQueue API service.
+type TaskQueueAPI =
+     TasksInsertResource :<|> TasksListResource :<|>
+       TasksPatchResource
+       :<|> TasksGetResource
+       :<|> TasksLeaseResource
+       :<|> TasksDeleteResource
+       :<|> TasksUpdateResource
+       :<|> TaskqueuesGetResource
diff --git a/gen/Network/Google/TaskQueue/Types.hs b/gen/Network/Google/TaskQueue/Types.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/TaskQueue/Types.hs
@@ -0,0 +1,90 @@
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- |
+-- Module      : Network.Google.TaskQueue.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.TaskQueue.Types
+    (
+    -- * Service Configuration
+      taskQueueService
+
+    -- * OAuth Scopes
+    , taskqueueConsumerScope
+    , taskqueueScope
+
+    -- * Tasks2
+    , Tasks2
+    , tasks2
+    , tKind
+    , tItems
+
+    -- * TaskQueue
+    , TaskQueue
+    , taskQueue
+    , tqKind
+    , tqStats
+    , tqMaxLeases
+    , tqId
+    , tqACL
+
+    -- * TaskQueueACL
+    , TaskQueueACL
+    , taskQueueACL
+    , tqaProducerEmails
+    , tqaAdminEmails
+    , tqaConsumerEmails
+
+    -- * TaskQueueStats
+    , TaskQueueStats
+    , taskQueueStats
+    , tqsTotalTasks
+    , tqsOldestTask
+    , tqsLeasedLastHour
+    , tqsLeasedLastMinute
+
+    -- * Tasks
+    , Tasks
+    , tasks
+    , tasKind
+    , tasItems
+
+    -- * Task
+    , Task
+    , task
+    , ttRetryCount
+    , ttEnqueueTimestamp
+    , ttTag
+    , ttKind
+    , ttQueueName
+    , ttPayloadBase64
+    , ttId
+    , ttLeaseTimestamp
+    ) where
+
+import           Network.Google.Prelude
+import           Network.Google.TaskQueue.Types.Product
+import           Network.Google.TaskQueue.Types.Sum
+
+-- | Default request referring to version 'v1beta2' of the TaskQueue API. This contains the host and root path used as a starting point for constructing service requests.
+taskQueueService :: Service
+taskQueueService
+  = defaultService (ServiceId "taskqueue:v1beta2")
+      "www.googleapis.com"
+
+-- | Consume Tasks from your Taskqueues
+taskqueueConsumerScope :: OAuthScope
+taskqueueConsumerScope = "https://www.googleapis.com/auth/taskqueue.consumer";
+
+-- | Manage your Tasks and Taskqueues
+taskqueueScope :: OAuthScope
+taskqueueScope = "https://www.googleapis.com/auth/taskqueue";
diff --git a/gen/Network/Google/TaskQueue/Types/Product.hs b/gen/Network/Google/TaskQueue/Types/Product.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/TaskQueue/Types/Product.hs
@@ -0,0 +1,457 @@
+{-# 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.TaskQueue.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.TaskQueue.Types.Product where
+
+import           Network.Google.Prelude
+import           Network.Google.TaskQueue.Types.Sum
+
+--
+-- /See:/ 'tasks2' smart constructor.
+data Tasks2 = Tasks2
+    { _tKind  :: !Text
+    , _tItems :: !(Maybe [Task])
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'Tasks2' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'tKind'
+--
+-- * 'tItems'
+tasks2
+    :: Tasks2
+tasks2 =
+    Tasks2
+    { _tKind = "taskqueues#tasks"
+    , _tItems = Nothing
+    }
+
+-- | The kind of object returned, a list of tasks.
+tKind :: Lens' Tasks2 Text
+tKind = lens _tKind (\ s a -> s{_tKind = a})
+
+-- | The actual list of tasks currently active in the TaskQueue.
+tItems :: Lens' Tasks2 [Task]
+tItems
+  = lens _tItems (\ s a -> s{_tItems = a}) . _Default .
+      _Coerce
+
+instance FromJSON Tasks2 where
+        parseJSON
+          = withObject "Tasks2"
+              (\ o ->
+                 Tasks2 <$>
+                   (o .:? "kind" .!= "taskqueues#tasks") <*>
+                     (o .:? "items" .!= mempty))
+
+instance ToJSON Tasks2 where
+        toJSON Tasks2{..}
+          = object
+              (catMaybes
+                 [Just ("kind" .= _tKind), ("items" .=) <$> _tItems])
+
+--
+-- /See:/ 'taskQueue' smart constructor.
+data TaskQueue = TaskQueue
+    { _tqKind      :: !Text
+    , _tqStats     :: !(Maybe TaskQueueStats)
+    , _tqMaxLeases :: !(Maybe (Textual Int32))
+    , _tqId        :: !(Maybe Text)
+    , _tqACL       :: !(Maybe TaskQueueACL)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'TaskQueue' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'tqKind'
+--
+-- * 'tqStats'
+--
+-- * 'tqMaxLeases'
+--
+-- * 'tqId'
+--
+-- * 'tqACL'
+taskQueue
+    :: TaskQueue
+taskQueue =
+    TaskQueue
+    { _tqKind = "taskqueues#taskqueue"
+    , _tqStats = Nothing
+    , _tqMaxLeases = Nothing
+    , _tqId = Nothing
+    , _tqACL = Nothing
+    }
+
+-- | The kind of REST object returned, in this case taskqueue.
+tqKind :: Lens' TaskQueue Text
+tqKind = lens _tqKind (\ s a -> s{_tqKind = a})
+
+-- | Statistics for the TaskQueue object in question.
+tqStats :: Lens' TaskQueue (Maybe TaskQueueStats)
+tqStats = lens _tqStats (\ s a -> s{_tqStats = a})
+
+-- | The number of times we should lease out tasks before giving up on them.
+-- If unset we lease them out forever until a worker deletes the task.
+tqMaxLeases :: Lens' TaskQueue (Maybe Int32)
+tqMaxLeases
+  = lens _tqMaxLeases (\ s a -> s{_tqMaxLeases = a}) .
+      mapping _Coerce
+
+-- | Name of the taskqueue.
+tqId :: Lens' TaskQueue (Maybe Text)
+tqId = lens _tqId (\ s a -> s{_tqId = a})
+
+-- | ACLs that are applicable to this TaskQueue object.
+tqACL :: Lens' TaskQueue (Maybe TaskQueueACL)
+tqACL = lens _tqACL (\ s a -> s{_tqACL = a})
+
+instance FromJSON TaskQueue where
+        parseJSON
+          = withObject "TaskQueue"
+              (\ o ->
+                 TaskQueue <$>
+                   (o .:? "kind" .!= "taskqueues#taskqueue") <*>
+                     (o .:? "stats")
+                     <*> (o .:? "maxLeases")
+                     <*> (o .:? "id")
+                     <*> (o .:? "acl"))
+
+instance ToJSON TaskQueue where
+        toJSON TaskQueue{..}
+          = object
+              (catMaybes
+                 [Just ("kind" .= _tqKind), ("stats" .=) <$> _tqStats,
+                  ("maxLeases" .=) <$> _tqMaxLeases,
+                  ("id" .=) <$> _tqId, ("acl" .=) <$> _tqACL])
+
+-- | ACLs that are applicable to this TaskQueue object.
+--
+-- /See:/ 'taskQueueACL' smart constructor.
+data TaskQueueACL = TaskQueueACL
+    { _tqaProducerEmails :: !(Maybe [Text])
+    , _tqaAdminEmails    :: !(Maybe [Text])
+    , _tqaConsumerEmails :: !(Maybe [Text])
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'TaskQueueACL' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'tqaProducerEmails'
+--
+-- * 'tqaAdminEmails'
+--
+-- * 'tqaConsumerEmails'
+taskQueueACL
+    :: TaskQueueACL
+taskQueueACL =
+    TaskQueueACL
+    { _tqaProducerEmails = Nothing
+    , _tqaAdminEmails = Nothing
+    , _tqaConsumerEmails = Nothing
+    }
+
+-- | Email addresses of users who can \"produce\" tasks into the TaskQueue.
+-- This means they can Insert tasks into the queue.
+tqaProducerEmails :: Lens' TaskQueueACL [Text]
+tqaProducerEmails
+  = lens _tqaProducerEmails
+      (\ s a -> s{_tqaProducerEmails = a})
+      . _Default
+      . _Coerce
+
+-- | Email addresses of users who are \"admins\" of the TaskQueue. This means
+-- they can control the queue, eg set ACLs for the queue.
+tqaAdminEmails :: Lens' TaskQueueACL [Text]
+tqaAdminEmails
+  = lens _tqaAdminEmails
+      (\ s a -> s{_tqaAdminEmails = a})
+      . _Default
+      . _Coerce
+
+-- | Email addresses of users who can \"consume\" tasks from the TaskQueue.
+-- This means they can Dequeue and Delete tasks from the queue.
+tqaConsumerEmails :: Lens' TaskQueueACL [Text]
+tqaConsumerEmails
+  = lens _tqaConsumerEmails
+      (\ s a -> s{_tqaConsumerEmails = a})
+      . _Default
+      . _Coerce
+
+instance FromJSON TaskQueueACL where
+        parseJSON
+          = withObject "TaskQueueACL"
+              (\ o ->
+                 TaskQueueACL <$>
+                   (o .:? "producerEmails" .!= mempty) <*>
+                     (o .:? "adminEmails" .!= mempty)
+                     <*> (o .:? "consumerEmails" .!= mempty))
+
+instance ToJSON TaskQueueACL where
+        toJSON TaskQueueACL{..}
+          = object
+              (catMaybes
+                 [("producerEmails" .=) <$> _tqaProducerEmails,
+                  ("adminEmails" .=) <$> _tqaAdminEmails,
+                  ("consumerEmails" .=) <$> _tqaConsumerEmails])
+
+-- | Statistics for the TaskQueue object in question.
+--
+-- /See:/ 'taskQueueStats' smart constructor.
+data TaskQueueStats = TaskQueueStats
+    { _tqsTotalTasks       :: !(Maybe (Textual Int32))
+    , _tqsOldestTask       :: !(Maybe (Textual Int64))
+    , _tqsLeasedLastHour   :: !(Maybe (Textual Int64))
+    , _tqsLeasedLastMinute :: !(Maybe (Textual Int64))
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'TaskQueueStats' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'tqsTotalTasks'
+--
+-- * 'tqsOldestTask'
+--
+-- * 'tqsLeasedLastHour'
+--
+-- * 'tqsLeasedLastMinute'
+taskQueueStats
+    :: TaskQueueStats
+taskQueueStats =
+    TaskQueueStats
+    { _tqsTotalTasks = Nothing
+    , _tqsOldestTask = Nothing
+    , _tqsLeasedLastHour = Nothing
+    , _tqsLeasedLastMinute = Nothing
+    }
+
+-- | Number of tasks in the queue.
+tqsTotalTasks :: Lens' TaskQueueStats (Maybe Int32)
+tqsTotalTasks
+  = lens _tqsTotalTasks
+      (\ s a -> s{_tqsTotalTasks = a})
+      . mapping _Coerce
+
+-- | The timestamp (in seconds since the epoch) of the oldest unfinished
+-- task.
+tqsOldestTask :: Lens' TaskQueueStats (Maybe Int64)
+tqsOldestTask
+  = lens _tqsOldestTask
+      (\ s a -> s{_tqsOldestTask = a})
+      . mapping _Coerce
+
+-- | Number of tasks leased in the last hour.
+tqsLeasedLastHour :: Lens' TaskQueueStats (Maybe Int64)
+tqsLeasedLastHour
+  = lens _tqsLeasedLastHour
+      (\ s a -> s{_tqsLeasedLastHour = a})
+      . mapping _Coerce
+
+-- | Number of tasks leased in the last minute.
+tqsLeasedLastMinute :: Lens' TaskQueueStats (Maybe Int64)
+tqsLeasedLastMinute
+  = lens _tqsLeasedLastMinute
+      (\ s a -> s{_tqsLeasedLastMinute = a})
+      . mapping _Coerce
+
+instance FromJSON TaskQueueStats where
+        parseJSON
+          = withObject "TaskQueueStats"
+              (\ o ->
+                 TaskQueueStats <$>
+                   (o .:? "totalTasks") <*> (o .:? "oldestTask") <*>
+                     (o .:? "leasedLastHour")
+                     <*> (o .:? "leasedLastMinute"))
+
+instance ToJSON TaskQueueStats where
+        toJSON TaskQueueStats{..}
+          = object
+              (catMaybes
+                 [("totalTasks" .=) <$> _tqsTotalTasks,
+                  ("oldestTask" .=) <$> _tqsOldestTask,
+                  ("leasedLastHour" .=) <$> _tqsLeasedLastHour,
+                  ("leasedLastMinute" .=) <$> _tqsLeasedLastMinute])
+
+--
+-- /See:/ 'tasks' smart constructor.
+data Tasks = Tasks
+    { _tasKind  :: !Text
+    , _tasItems :: !(Maybe [Task])
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'Tasks' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'tasKind'
+--
+-- * 'tasItems'
+tasks
+    :: Tasks
+tasks =
+    Tasks
+    { _tasKind = "taskqueue#tasks"
+    , _tasItems = Nothing
+    }
+
+-- | The kind of object returned, a list of tasks.
+tasKind :: Lens' Tasks Text
+tasKind = lens _tasKind (\ s a -> s{_tasKind = a})
+
+-- | The actual list of tasks returned as a result of the lease operation.
+tasItems :: Lens' Tasks [Task]
+tasItems
+  = lens _tasItems (\ s a -> s{_tasItems = a}) .
+      _Default
+      . _Coerce
+
+instance FromJSON Tasks where
+        parseJSON
+          = withObject "Tasks"
+              (\ o ->
+                 Tasks <$>
+                   (o .:? "kind" .!= "taskqueue#tasks") <*>
+                     (o .:? "items" .!= mempty))
+
+instance ToJSON Tasks where
+        toJSON Tasks{..}
+          = object
+              (catMaybes
+                 [Just ("kind" .= _tasKind),
+                  ("items" .=) <$> _tasItems])
+
+--
+-- /See:/ 'task' smart constructor.
+data Task = Task
+    { _ttRetryCount       :: !(Maybe (Textual Int32))
+    , _ttEnqueueTimestamp :: !(Maybe (Textual Int64))
+    , _ttTag              :: !(Maybe Text)
+    , _ttKind             :: !Text
+    , _ttQueueName        :: !(Maybe Text)
+    , _ttPayloadBase64    :: !(Maybe Text)
+    , _ttId               :: !(Maybe Text)
+    , _ttLeaseTimestamp   :: !(Maybe (Textual Int64))
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'Task' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'ttRetryCount'
+--
+-- * 'ttEnqueueTimestamp'
+--
+-- * 'ttTag'
+--
+-- * 'ttKind'
+--
+-- * 'ttQueueName'
+--
+-- * 'ttPayloadBase64'
+--
+-- * 'ttId'
+--
+-- * 'ttLeaseTimestamp'
+task
+    :: Task
+task =
+    Task
+    { _ttRetryCount = Nothing
+    , _ttEnqueueTimestamp = Nothing
+    , _ttTag = Nothing
+    , _ttKind = "taskqueues#task"
+    , _ttQueueName = Nothing
+    , _ttPayloadBase64 = Nothing
+    , _ttId = Nothing
+    , _ttLeaseTimestamp = Nothing
+    }
+
+-- | The number of leases applied to this task.
+ttRetryCount :: Lens' Task (Maybe Int32)
+ttRetryCount
+  = lens _ttRetryCount (\ s a -> s{_ttRetryCount = a})
+      . mapping _Coerce
+
+-- | Time (in seconds since the epoch) at which the task was enqueued.
+ttEnqueueTimestamp :: Lens' Task (Maybe Int64)
+ttEnqueueTimestamp
+  = lens _ttEnqueueTimestamp
+      (\ s a -> s{_ttEnqueueTimestamp = a})
+      . mapping _Coerce
+
+-- | Tag for the task, could be used later to lease tasks grouped by a
+-- specific tag.
+ttTag :: Lens' Task (Maybe Text)
+ttTag = lens _ttTag (\ s a -> s{_ttTag = a})
+
+-- | The kind of object returned, in this case set to task.
+ttKind :: Lens' Task Text
+ttKind = lens _ttKind (\ s a -> s{_ttKind = a})
+
+-- | Name of the queue that the task is in.
+ttQueueName :: Lens' Task (Maybe Text)
+ttQueueName
+  = lens _ttQueueName (\ s a -> s{_ttQueueName = a})
+
+-- | A bag of bytes which is the task payload. The payload on the JSON side
+-- is always Base64 encoded.
+ttPayloadBase64 :: Lens' Task (Maybe Text)
+ttPayloadBase64
+  = lens _ttPayloadBase64
+      (\ s a -> s{_ttPayloadBase64 = a})
+
+-- | Name of the task.
+ttId :: Lens' Task (Maybe Text)
+ttId = lens _ttId (\ s a -> s{_ttId = a})
+
+-- | Time (in seconds since the epoch) at which the task lease will expire.
+-- This value is 0 if the task isnt currently leased out to a worker.
+ttLeaseTimestamp :: Lens' Task (Maybe Int64)
+ttLeaseTimestamp
+  = lens _ttLeaseTimestamp
+      (\ s a -> s{_ttLeaseTimestamp = a})
+      . mapping _Coerce
+
+instance FromJSON Task where
+        parseJSON
+          = withObject "Task"
+              (\ o ->
+                 Task <$>
+                   (o .:? "retry_count") <*> (o .:? "enqueueTimestamp")
+                     <*> (o .:? "tag")
+                     <*> (o .:? "kind" .!= "taskqueues#task")
+                     <*> (o .:? "queueName")
+                     <*> (o .:? "payloadBase64")
+                     <*> (o .:? "id")
+                     <*> (o .:? "leaseTimestamp"))
+
+instance ToJSON Task where
+        toJSON Task{..}
+          = object
+              (catMaybes
+                 [("retry_count" .=) <$> _ttRetryCount,
+                  ("enqueueTimestamp" .=) <$> _ttEnqueueTimestamp,
+                  ("tag" .=) <$> _ttTag, Just ("kind" .= _ttKind),
+                  ("queueName" .=) <$> _ttQueueName,
+                  ("payloadBase64" .=) <$> _ttPayloadBase64,
+                  ("id" .=) <$> _ttId,
+                  ("leaseTimestamp" .=) <$> _ttLeaseTimestamp])
diff --git a/gen/Network/Google/TaskQueue/Types/Sum.hs b/gen/Network/Google/TaskQueue/Types/Sum.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/TaskQueue/Types/Sum.hs
@@ -0,0 +1,19 @@
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE LambdaCase         #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- |
+-- Module      : Network.Google.TaskQueue.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.TaskQueue.Types.Sum where
+
+import           Network.Google.Prelude
diff --git a/gogol-taskqueue.cabal b/gogol-taskqueue.cabal
new file mode 100644
--- /dev/null
+++ b/gogol-taskqueue.cabal
@@ -0,0 +1,53 @@
+name:                  gogol-taskqueue
+version:               0.0.1
+synopsis:              Google TaskQueue SDK.
+homepage:              https://github.com/brendanhay/gogol
+bug-reports:           https://github.com/brendanhay/gogol/issues
+license:               OtherLicense
+license-file:          LICENSE
+author:                Brendan Hay
+maintainer:            Brendan Hay <brendan.g.hay@gmail.com>
+copyright:             Copyright (c) 2015 Brendan Hay
+category:              Network, Google, Cloud
+build-type:            Simple
+cabal-version:         >= 1.10
+extra-source-files:    README.md
+
+description:
+    Lets you access a Google App Engine Pull Task Queue over REST.
+    .
+    /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 @v1beta2@
+    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.Resource.TaskQueue.Taskqueues.Get
+        , Network.Google.Resource.TaskQueue.Tasks.Delete
+        , Network.Google.Resource.TaskQueue.Tasks.Get
+        , Network.Google.Resource.TaskQueue.Tasks.Insert
+        , Network.Google.Resource.TaskQueue.Tasks.Lease
+        , Network.Google.Resource.TaskQueue.Tasks.List
+        , Network.Google.Resource.TaskQueue.Tasks.Patch
+        , Network.Google.Resource.TaskQueue.Tasks.Update
+        , Network.Google.TaskQueue
+        , Network.Google.TaskQueue.Types
+
+    other-modules:
+          Network.Google.TaskQueue.Types.Product
+        , Network.Google.TaskQueue.Types.Sum
+
+    build-depends:
+          gogol-core == 0.0.1.*
+        , base       >= 4.7 && < 5
