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-cloudtasks
+
+* [Version](#version)
+* [Description](#description)
+* [Contribute](#contribute)
+* [Licence](#licence)
+
+
+## Version
+
+`0.3.0`
+
+
+## Description
+
+A client library for the Google Cloud Tasks.
+
+
+## Contribute
+
+For any problems, comments, or feedback please create an issue [here on GitHub](https://github.com/brendanhay/gogol/issues).
+
+> _Note:_ this library is an auto-generated Haskell package. Please see `gogol-gen` for more information.
+
+
+## Licence
+
+`gogol-cloudtasks` 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/CloudTasks.hs b/gen/Network/Google/CloudTasks.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/CloudTasks.hs
@@ -0,0 +1,343 @@
+{-# LANGUAGE DataKinds         #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# LANGUAGE TypeOperators     #-}
+
+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+
+-- |
+-- Module      : Network.Google.CloudTasks
+-- Copyright   : (c) 2015-2016 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)
+--
+-- Manages the execution of large numbers of distributed requests.
+--
+-- /See:/ <https://cloud.google.com/tasks/ Cloud Tasks API Reference>
+module Network.Google.CloudTasks
+    (
+    -- * Service Configuration
+      cloudTasksService
+
+    -- * OAuth Scopes
+    , cloudPlatformScope
+
+    -- * API Declaration
+    , CloudTasksAPI
+
+    -- * Resources
+
+    -- ** cloudtasks.projects.locations.get
+    , module Network.Google.Resource.CloudTasks.Projects.Locations.Get
+
+    -- ** cloudtasks.projects.locations.list
+    , module Network.Google.Resource.CloudTasks.Projects.Locations.List
+
+    -- ** cloudtasks.projects.locations.queues.create
+    , module Network.Google.Resource.CloudTasks.Projects.Locations.Queues.Create
+
+    -- ** cloudtasks.projects.locations.queues.delete
+    , module Network.Google.Resource.CloudTasks.Projects.Locations.Queues.Delete
+
+    -- ** cloudtasks.projects.locations.queues.get
+    , module Network.Google.Resource.CloudTasks.Projects.Locations.Queues.Get
+
+    -- ** cloudtasks.projects.locations.queues.getIamPolicy
+    , module Network.Google.Resource.CloudTasks.Projects.Locations.Queues.GetIAMPolicy
+
+    -- ** cloudtasks.projects.locations.queues.list
+    , module Network.Google.Resource.CloudTasks.Projects.Locations.Queues.List
+
+    -- ** cloudtasks.projects.locations.queues.patch
+    , module Network.Google.Resource.CloudTasks.Projects.Locations.Queues.Patch
+
+    -- ** cloudtasks.projects.locations.queues.pause
+    , module Network.Google.Resource.CloudTasks.Projects.Locations.Queues.Pause
+
+    -- ** cloudtasks.projects.locations.queues.purge
+    , module Network.Google.Resource.CloudTasks.Projects.Locations.Queues.Purge
+
+    -- ** cloudtasks.projects.locations.queues.resume
+    , module Network.Google.Resource.CloudTasks.Projects.Locations.Queues.Resume
+
+    -- ** cloudtasks.projects.locations.queues.setIamPolicy
+    , module Network.Google.Resource.CloudTasks.Projects.Locations.Queues.SetIAMPolicy
+
+    -- ** cloudtasks.projects.locations.queues.tasks.create
+    , module Network.Google.Resource.CloudTasks.Projects.Locations.Queues.Tasks.Create
+
+    -- ** cloudtasks.projects.locations.queues.tasks.delete
+    , module Network.Google.Resource.CloudTasks.Projects.Locations.Queues.Tasks.Delete
+
+    -- ** cloudtasks.projects.locations.queues.tasks.get
+    , module Network.Google.Resource.CloudTasks.Projects.Locations.Queues.Tasks.Get
+
+    -- ** cloudtasks.projects.locations.queues.tasks.list
+    , module Network.Google.Resource.CloudTasks.Projects.Locations.Queues.Tasks.List
+
+    -- ** cloudtasks.projects.locations.queues.tasks.run
+    , module Network.Google.Resource.CloudTasks.Projects.Locations.Queues.Tasks.Run
+
+    -- ** cloudtasks.projects.locations.queues.testIamPermissions
+    , module Network.Google.Resource.CloudTasks.Projects.Locations.Queues.TestIAMPermissions
+
+    -- * Types
+
+    -- ** RateLimits
+    , RateLimits
+    , rateLimits
+    , rlMaxConcurrentDispatches
+    , rlMaxDispatchesPerSecond
+    , rlMaxBurstSize
+
+    -- ** Status
+    , Status
+    , status
+    , sDetails
+    , sCode
+    , sMessage
+
+    -- ** Expr
+    , Expr
+    , expr
+    , eLocation
+    , eExpression
+    , eTitle
+    , eDescription
+
+    -- ** ListLocationsResponse
+    , ListLocationsResponse
+    , listLocationsResponse
+    , llrNextPageToken
+    , llrLocations
+
+    -- ** GetIAMPolicyRequest
+    , GetIAMPolicyRequest
+    , getIAMPolicyRequest
+
+    -- ** RetryConfig
+    , RetryConfig
+    , retryConfig
+    , rcMaxDoublings
+    , rcMaxRetryDuration
+    , rcMaxAttempts
+    , rcMaxBackoff
+    , rcMinBackoff
+
+    -- ** RunTaskRequest
+    , RunTaskRequest
+    , runTaskRequest
+    , rtrResponseView
+
+    -- ** Location
+    , Location
+    , location
+    , lName
+    , lMetadata
+    , lDisplayName
+    , lLabels
+    , lLocationId
+
+    -- ** Empty
+    , Empty
+    , empty
+
+    -- ** CreateTaskRequest
+    , CreateTaskRequest
+    , createTaskRequest
+    , ctrResponseView
+    , ctrTask
+
+    -- ** TaskView
+    , TaskView (..)
+
+    -- ** ListQueuesResponse
+    , ListQueuesResponse
+    , listQueuesResponse
+    , lqrNextPageToken
+    , lqrQueues
+
+    -- ** StatusDetailsItem
+    , StatusDetailsItem
+    , statusDetailsItem
+    , sdiAddtional
+
+    -- ** QueueState
+    , QueueState (..)
+
+    -- ** AppEngineHTTPQueue
+    , AppEngineHTTPQueue
+    , appEngineHTTPQueue
+    , aehttpqAppEngineRoutingOverride
+
+    -- ** CreateTaskRequestResponseView
+    , CreateTaskRequestResponseView (..)
+
+    -- ** SetIAMPolicyRequest
+    , SetIAMPolicyRequest
+    , setIAMPolicyRequest
+    , siprPolicy
+
+    -- ** Queue
+    , Queue
+    , queue
+    , qRateLimits
+    , qState
+    , qRetryConfig
+    , qAppEngineHTTPQueue
+    , qName
+    , qPurgeTime
+
+    -- ** AppEngineHTTPRequestHTTPMethod
+    , AppEngineHTTPRequestHTTPMethod (..)
+
+    -- ** ListTasksResponse
+    , ListTasksResponse
+    , listTasksResponse
+    , ltrNextPageToken
+    , ltrTasks
+
+    -- ** AppEngineHTTPRequestHeaders
+    , AppEngineHTTPRequestHeaders
+    , appEngineHTTPRequestHeaders
+    , aehttprhAddtional
+
+    -- ** Xgafv
+    , Xgafv (..)
+
+    -- ** PauseQueueRequest
+    , PauseQueueRequest
+    , pauseQueueRequest
+
+    -- ** TestIAMPermissionsRequest
+    , TestIAMPermissionsRequest
+    , testIAMPermissionsRequest
+    , tiprPermissions
+
+    -- ** Attempt
+    , Attempt
+    , attempt
+    , aResponseStatus
+    , aScheduleTime
+    , aDispatchTime
+    , aResponseTime
+
+    -- ** PurgeQueueRequest
+    , PurgeQueueRequest
+    , purgeQueueRequest
+
+    -- ** Task
+    , Task
+    , task
+    , tLastAttempt
+    , tScheduleTime
+    , tName
+    , tFirstAttempt
+    , tView
+    , tResponseCount
+    , tDispatchCount
+    , tAppEngineHTTPRequest
+    , tCreateTime
+
+    -- ** TestIAMPermissionsResponse
+    , TestIAMPermissionsResponse
+    , testIAMPermissionsResponse
+    , tiamprPermissions
+
+    -- ** Policy
+    , Policy
+    , policy
+    , pEtag
+    , pVersion
+    , pBindings
+
+    -- ** LocationLabels
+    , LocationLabels
+    , locationLabels
+    , llAddtional
+
+    -- ** LocationMetadata
+    , LocationMetadata
+    , locationMetadata
+    , lmAddtional
+
+    -- ** RunTaskRequestResponseView
+    , RunTaskRequestResponseView (..)
+
+    -- ** AppEngineRouting
+    , AppEngineRouting
+    , appEngineRouting
+    , aerService
+    , aerVersion
+    , aerHost
+    , aerInstance
+
+    -- ** AppEngineHTTPRequest
+    , AppEngineHTTPRequest
+    , appEngineHTTPRequest
+    , aehttprHTTPMethod
+    , aehttprRelativeURI
+    , aehttprBody
+    , aehttprHeaders
+    , aehttprAppEngineRouting
+
+    -- ** ResumeQueueRequest
+    , ResumeQueueRequest
+    , resumeQueueRequest
+
+    -- ** Binding
+    , Binding
+    , binding
+    , bMembers
+    , bRole
+    , bCondition
+    ) where
+
+import           Network.Google.CloudTasks.Types
+import           Network.Google.Prelude
+import           Network.Google.Resource.CloudTasks.Projects.Locations.Get
+import           Network.Google.Resource.CloudTasks.Projects.Locations.List
+import           Network.Google.Resource.CloudTasks.Projects.Locations.Queues.Create
+import           Network.Google.Resource.CloudTasks.Projects.Locations.Queues.Delete
+import           Network.Google.Resource.CloudTasks.Projects.Locations.Queues.Get
+import           Network.Google.Resource.CloudTasks.Projects.Locations.Queues.GetIAMPolicy
+import           Network.Google.Resource.CloudTasks.Projects.Locations.Queues.List
+import           Network.Google.Resource.CloudTasks.Projects.Locations.Queues.Patch
+import           Network.Google.Resource.CloudTasks.Projects.Locations.Queues.Pause
+import           Network.Google.Resource.CloudTasks.Projects.Locations.Queues.Purge
+import           Network.Google.Resource.CloudTasks.Projects.Locations.Queues.Resume
+import           Network.Google.Resource.CloudTasks.Projects.Locations.Queues.SetIAMPolicy
+import           Network.Google.Resource.CloudTasks.Projects.Locations.Queues.Tasks.Create
+import           Network.Google.Resource.CloudTasks.Projects.Locations.Queues.Tasks.Delete
+import           Network.Google.Resource.CloudTasks.Projects.Locations.Queues.Tasks.Get
+import           Network.Google.Resource.CloudTasks.Projects.Locations.Queues.Tasks.List
+import           Network.Google.Resource.CloudTasks.Projects.Locations.Queues.Tasks.Run
+import           Network.Google.Resource.CloudTasks.Projects.Locations.Queues.TestIAMPermissions
+
+{- $resources
+TODO
+-}
+
+-- | Represents the entirety of the methods and resources available for the Cloud Tasks API service.
+type CloudTasksAPI =
+     ProjectsLocationsQueuesTasksListResource :<|>
+       ProjectsLocationsQueuesTasksGetResource
+       :<|> ProjectsLocationsQueuesTasksRunResource
+       :<|> ProjectsLocationsQueuesTasksCreateResource
+       :<|> ProjectsLocationsQueuesTasksDeleteResource
+       :<|> ProjectsLocationsQueuesListResource
+       :<|> ProjectsLocationsQueuesGetIAMPolicyResource
+       :<|> ProjectsLocationsQueuesPatchResource
+       :<|> ProjectsLocationsQueuesGetResource
+       :<|> ProjectsLocationsQueuesCreateResource
+       :<|> ProjectsLocationsQueuesSetIAMPolicyResource
+       :<|> ProjectsLocationsQueuesPauseResource
+       :<|> ProjectsLocationsQueuesPurgeResource
+       :<|>
+       ProjectsLocationsQueuesTestIAMPermissionsResource
+       :<|> ProjectsLocationsQueuesDeleteResource
+       :<|> ProjectsLocationsQueuesResumeResource
+       :<|> ProjectsLocationsListResource
+       :<|> ProjectsLocationsGetResource
diff --git a/gen/Network/Google/CloudTasks/Types.hs b/gen/Network/Google/CloudTasks/Types.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/CloudTasks/Types.hs
@@ -0,0 +1,247 @@
+{-# LANGUAGE DataKinds          #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- |
+-- Module      : Network.Google.CloudTasks.Types
+-- Copyright   : (c) 2015-2016 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.CloudTasks.Types
+    (
+    -- * Service Configuration
+      cloudTasksService
+
+    -- * OAuth Scopes
+    , cloudPlatformScope
+
+    -- * RateLimits
+    , RateLimits
+    , rateLimits
+    , rlMaxConcurrentDispatches
+    , rlMaxDispatchesPerSecond
+    , rlMaxBurstSize
+
+    -- * Status
+    , Status
+    , status
+    , sDetails
+    , sCode
+    , sMessage
+
+    -- * Expr
+    , Expr
+    , expr
+    , eLocation
+    , eExpression
+    , eTitle
+    , eDescription
+
+    -- * ListLocationsResponse
+    , ListLocationsResponse
+    , listLocationsResponse
+    , llrNextPageToken
+    , llrLocations
+
+    -- * GetIAMPolicyRequest
+    , GetIAMPolicyRequest
+    , getIAMPolicyRequest
+
+    -- * RetryConfig
+    , RetryConfig
+    , retryConfig
+    , rcMaxDoublings
+    , rcMaxRetryDuration
+    , rcMaxAttempts
+    , rcMaxBackoff
+    , rcMinBackoff
+
+    -- * RunTaskRequest
+    , RunTaskRequest
+    , runTaskRequest
+    , rtrResponseView
+
+    -- * Location
+    , Location
+    , location
+    , lName
+    , lMetadata
+    , lDisplayName
+    , lLabels
+    , lLocationId
+
+    -- * Empty
+    , Empty
+    , empty
+
+    -- * CreateTaskRequest
+    , CreateTaskRequest
+    , createTaskRequest
+    , ctrResponseView
+    , ctrTask
+
+    -- * TaskView
+    , TaskView (..)
+
+    -- * ListQueuesResponse
+    , ListQueuesResponse
+    , listQueuesResponse
+    , lqrNextPageToken
+    , lqrQueues
+
+    -- * StatusDetailsItem
+    , StatusDetailsItem
+    , statusDetailsItem
+    , sdiAddtional
+
+    -- * QueueState
+    , QueueState (..)
+
+    -- * AppEngineHTTPQueue
+    , AppEngineHTTPQueue
+    , appEngineHTTPQueue
+    , aehttpqAppEngineRoutingOverride
+
+    -- * CreateTaskRequestResponseView
+    , CreateTaskRequestResponseView (..)
+
+    -- * SetIAMPolicyRequest
+    , SetIAMPolicyRequest
+    , setIAMPolicyRequest
+    , siprPolicy
+
+    -- * Queue
+    , Queue
+    , queue
+    , qRateLimits
+    , qState
+    , qRetryConfig
+    , qAppEngineHTTPQueue
+    , qName
+    , qPurgeTime
+
+    -- * AppEngineHTTPRequestHTTPMethod
+    , AppEngineHTTPRequestHTTPMethod (..)
+
+    -- * ListTasksResponse
+    , ListTasksResponse
+    , listTasksResponse
+    , ltrNextPageToken
+    , ltrTasks
+
+    -- * AppEngineHTTPRequestHeaders
+    , AppEngineHTTPRequestHeaders
+    , appEngineHTTPRequestHeaders
+    , aehttprhAddtional
+
+    -- * Xgafv
+    , Xgafv (..)
+
+    -- * PauseQueueRequest
+    , PauseQueueRequest
+    , pauseQueueRequest
+
+    -- * TestIAMPermissionsRequest
+    , TestIAMPermissionsRequest
+    , testIAMPermissionsRequest
+    , tiprPermissions
+
+    -- * Attempt
+    , Attempt
+    , attempt
+    , aResponseStatus
+    , aScheduleTime
+    , aDispatchTime
+    , aResponseTime
+
+    -- * PurgeQueueRequest
+    , PurgeQueueRequest
+    , purgeQueueRequest
+
+    -- * Task
+    , Task
+    , task
+    , tLastAttempt
+    , tScheduleTime
+    , tName
+    , tFirstAttempt
+    , tView
+    , tResponseCount
+    , tDispatchCount
+    , tAppEngineHTTPRequest
+    , tCreateTime
+
+    -- * TestIAMPermissionsResponse
+    , TestIAMPermissionsResponse
+    , testIAMPermissionsResponse
+    , tiamprPermissions
+
+    -- * Policy
+    , Policy
+    , policy
+    , pEtag
+    , pVersion
+    , pBindings
+
+    -- * LocationLabels
+    , LocationLabels
+    , locationLabels
+    , llAddtional
+
+    -- * LocationMetadata
+    , LocationMetadata
+    , locationMetadata
+    , lmAddtional
+
+    -- * RunTaskRequestResponseView
+    , RunTaskRequestResponseView (..)
+
+    -- * AppEngineRouting
+    , AppEngineRouting
+    , appEngineRouting
+    , aerService
+    , aerVersion
+    , aerHost
+    , aerInstance
+
+    -- * AppEngineHTTPRequest
+    , AppEngineHTTPRequest
+    , appEngineHTTPRequest
+    , aehttprHTTPMethod
+    , aehttprRelativeURI
+    , aehttprBody
+    , aehttprHeaders
+    , aehttprAppEngineRouting
+
+    -- * ResumeQueueRequest
+    , ResumeQueueRequest
+    , resumeQueueRequest
+
+    -- * Binding
+    , Binding
+    , binding
+    , bMembers
+    , bRole
+    , bCondition
+    ) where
+
+import           Network.Google.CloudTasks.Types.Product
+import           Network.Google.CloudTasks.Types.Sum
+import           Network.Google.Prelude
+
+-- | Default request referring to version 'v2beta3' of the Cloud Tasks API. This contains the host and root path used as a starting point for constructing service requests.
+cloudTasksService :: ServiceConfig
+cloudTasksService
+  = defaultService (ServiceId "cloudtasks:v2beta3")
+      "cloudtasks.googleapis.com"
+
+-- | View and manage your data across Google Cloud Platform services
+cloudPlatformScope :: Proxy '["https://www.googleapis.com/auth/cloud-platform"]
+cloudPlatformScope = Proxy;
diff --git a/gen/Network/Google/CloudTasks/Types/Product.hs b/gen/Network/Google/CloudTasks/Types/Product.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/CloudTasks/Types/Product.hs
@@ -0,0 +1,1999 @@
+{-# 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.CloudTasks.Types.Product
+-- Copyright   : (c) 2015-2016 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.CloudTasks.Types.Product where
+
+import           Network.Google.CloudTasks.Types.Sum
+import           Network.Google.Prelude
+
+-- | Rate limits. This message determines the maximum rate that tasks can be
+-- dispatched by a queue, regardless of whether the dispatch is a first
+-- task attempt or a retry. Note: The debugging command, RunTask, will run
+-- a task even if the queue has reached its RateLimits.
+--
+-- /See:/ 'rateLimits' smart constructor.
+data RateLimits = RateLimits'
+    { _rlMaxConcurrentDispatches :: !(Maybe (Textual Int32))
+    , _rlMaxDispatchesPerSecond  :: !(Maybe (Textual Double))
+    , _rlMaxBurstSize            :: !(Maybe (Textual Int32))
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'RateLimits' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'rlMaxConcurrentDispatches'
+--
+-- * 'rlMaxDispatchesPerSecond'
+--
+-- * 'rlMaxBurstSize'
+rateLimits
+    :: RateLimits
+rateLimits =
+    RateLimits'
+    { _rlMaxConcurrentDispatches = Nothing
+    , _rlMaxDispatchesPerSecond = Nothing
+    , _rlMaxBurstSize = Nothing
+    }
+
+-- | The maximum number of concurrent tasks that Cloud Tasks allows to be
+-- dispatched for this queue. After this threshold has been reached, Cloud
+-- Tasks stops dispatching tasks until the number of concurrent requests
+-- decreases. If unspecified when the queue is created, Cloud Tasks will
+-- pick the default. The maximum allowed value is 5,000. This field has the
+-- same meaning as [max_concurrent_requests in
+-- queue.yaml\/xml](https:\/\/cloud.google.com\/appengine\/docs\/standard\/python\/config\/queueref#max_concurrent_requests).
+rlMaxConcurrentDispatches :: Lens' RateLimits (Maybe Int32)
+rlMaxConcurrentDispatches
+  = lens _rlMaxConcurrentDispatches
+      (\ s a -> s{_rlMaxConcurrentDispatches = a})
+      . mapping _Coerce
+
+-- | The maximum rate at which tasks are dispatched from this queue. If
+-- unspecified when the queue is created, Cloud Tasks will pick the
+-- default. * For App Engine queues, the maximum allowed value is 500. This
+-- field has the same meaning as [rate in
+-- queue.yaml\/xml](https:\/\/cloud.google.com\/appengine\/docs\/standard\/python\/config\/queueref#rate).
+rlMaxDispatchesPerSecond :: Lens' RateLimits (Maybe Double)
+rlMaxDispatchesPerSecond
+  = lens _rlMaxDispatchesPerSecond
+      (\ s a -> s{_rlMaxDispatchesPerSecond = a})
+      . mapping _Coerce
+
+-- | Output only. The max burst size. Max burst size limits how fast tasks in
+-- queue are processed when many tasks are in the queue and the rate is
+-- high. This field allows the queue to have a high rate so processing
+-- starts shortly after a task is enqueued, but still limits resource usage
+-- when many tasks are enqueued in a short period of time. The [token
+-- bucket](https:\/\/wikipedia.org\/wiki\/Token_Bucket) algorithm is used
+-- to control the rate of task dispatches. Each queue has a token bucket
+-- that holds tokens, up to the maximum specified by \`max_burst_size\`.
+-- Each time a task is dispatched, a token is removed from the bucket.
+-- Tasks will be dispatched until the queue\'s bucket runs out of tokens.
+-- The bucket will be continuously refilled with new tokens based on
+-- max_dispatches_per_second. Cloud Tasks will pick the value of
+-- \`max_burst_size\` based on the value of max_dispatches_per_second. For
+-- App Engine queues that were created or updated using
+-- \`queue.yaml\/xml\`, \`max_burst_size\` is equal to
+-- [bucket_size](https:\/\/cloud.google.com\/appengine\/docs\/standard\/python\/config\/queueref#bucket_size).
+-- Since \`max_burst_size\` is output only, if UpdateQueue is called on a
+-- queue created by \`queue.yaml\/xml\`, \`max_burst_size\` will be reset
+-- based on the value of max_dispatches_per_second, regardless of whether
+-- max_dispatches_per_second is updated.
+rlMaxBurstSize :: Lens' RateLimits (Maybe Int32)
+rlMaxBurstSize
+  = lens _rlMaxBurstSize
+      (\ s a -> s{_rlMaxBurstSize = a})
+      . mapping _Coerce
+
+instance FromJSON RateLimits where
+        parseJSON
+          = withObject "RateLimits"
+              (\ o ->
+                 RateLimits' <$>
+                   (o .:? "maxConcurrentDispatches") <*>
+                     (o .:? "maxDispatchesPerSecond")
+                     <*> (o .:? "maxBurstSize"))
+
+instance ToJSON RateLimits where
+        toJSON RateLimits'{..}
+          = object
+              (catMaybes
+                 [("maxConcurrentDispatches" .=) <$>
+                    _rlMaxConcurrentDispatches,
+                  ("maxDispatchesPerSecond" .=) <$>
+                    _rlMaxDispatchesPerSecond,
+                  ("maxBurstSize" .=) <$> _rlMaxBurstSize])
+
+-- | The \`Status\` type defines a logical error model that is suitable for
+-- different programming environments, including REST APIs and RPC APIs. It
+-- is used by [gRPC](https:\/\/github.com\/grpc). The error model is
+-- designed to be: - Simple to use and understand for most users - Flexible
+-- enough to meet unexpected needs # Overview The \`Status\` message
+-- contains three pieces of data: error code, error message, and error
+-- details. The error code should be an enum value of google.rpc.Code, but
+-- it may accept additional error codes if needed. The error message should
+-- be a developer-facing English message that helps developers *understand*
+-- and *resolve* the error. If a localized user-facing error message is
+-- needed, put the localized message in the error details or localize it in
+-- the client. The optional error details may contain arbitrary information
+-- about the error. There is a predefined set of error detail types in the
+-- package \`google.rpc\` that can be used for common error conditions. #
+-- Language mapping The \`Status\` message is the logical representation of
+-- the error model, but it is not necessarily the actual wire format. When
+-- the \`Status\` message is exposed in different client libraries and
+-- different wire protocols, it can be mapped differently. For example, it
+-- will likely be mapped to some exceptions in Java, but more likely mapped
+-- to some error codes in C. # Other uses The error model and the
+-- \`Status\` message can be used in a variety of environments, either with
+-- or without APIs, to provide a consistent developer experience across
+-- different environments. Example uses of this error model include: -
+-- Partial errors. If a service needs to return partial errors to the
+-- client, it may embed the \`Status\` in the normal response to indicate
+-- the partial errors. - Workflow errors. A typical workflow has multiple
+-- steps. Each step may have a \`Status\` message for error reporting. -
+-- Batch operations. If a client uses batch request and batch response, the
+-- \`Status\` message should be used directly inside batch response, one
+-- for each error sub-response. - Asynchronous operations. If an API call
+-- embeds asynchronous operation results in its response, the status of
+-- those operations should be represented directly using the \`Status\`
+-- message. - Logging. If some API errors are stored in logs, the message
+-- \`Status\` could be used directly after any stripping needed for
+-- security\/privacy reasons.
+--
+-- /See:/ 'status' smart constructor.
+data Status = Status'
+    { _sDetails :: !(Maybe [StatusDetailsItem])
+    , _sCode    :: !(Maybe (Textual Int32))
+    , _sMessage :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'Status' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'sDetails'
+--
+-- * 'sCode'
+--
+-- * 'sMessage'
+status
+    :: Status
+status =
+    Status'
+    { _sDetails = Nothing
+    , _sCode = Nothing
+    , _sMessage = Nothing
+    }
+
+-- | A list of messages that carry the error details. There is a common set
+-- of message types for APIs to use.
+sDetails :: Lens' Status [StatusDetailsItem]
+sDetails
+  = lens _sDetails (\ s a -> s{_sDetails = a}) .
+      _Default
+      . _Coerce
+
+-- | The status code, which should be an enum value of google.rpc.Code.
+sCode :: Lens' Status (Maybe Int32)
+sCode
+  = lens _sCode (\ s a -> s{_sCode = a}) .
+      mapping _Coerce
+
+-- | A developer-facing error message, which should be in English. Any
+-- user-facing error message should be localized and sent in the
+-- google.rpc.Status.details field, or localized by the client.
+sMessage :: Lens' Status (Maybe Text)
+sMessage = lens _sMessage (\ s a -> s{_sMessage = a})
+
+instance FromJSON Status where
+        parseJSON
+          = withObject "Status"
+              (\ o ->
+                 Status' <$>
+                   (o .:? "details" .!= mempty) <*> (o .:? "code") <*>
+                     (o .:? "message"))
+
+instance ToJSON Status where
+        toJSON Status'{..}
+          = object
+              (catMaybes
+                 [("details" .=) <$> _sDetails,
+                  ("code" .=) <$> _sCode,
+                  ("message" .=) <$> _sMessage])
+
+-- | Represents an expression text. Example: title: \"User account presence\"
+-- description: \"Determines whether the request has a user account\"
+-- expression: \"size(request.user) > 0\"
+--
+-- /See:/ 'expr' smart constructor.
+data Expr = Expr'
+    { _eLocation    :: !(Maybe Text)
+    , _eExpression  :: !(Maybe Text)
+    , _eTitle       :: !(Maybe Text)
+    , _eDescription :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'Expr' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'eLocation'
+--
+-- * 'eExpression'
+--
+-- * 'eTitle'
+--
+-- * 'eDescription'
+expr
+    :: Expr
+expr =
+    Expr'
+    { _eLocation = Nothing
+    , _eExpression = Nothing
+    , _eTitle = Nothing
+    , _eDescription = Nothing
+    }
+
+-- | An optional string indicating the location of the expression for error
+-- reporting, e.g. a file name and a position in the file.
+eLocation :: Lens' Expr (Maybe Text)
+eLocation
+  = lens _eLocation (\ s a -> s{_eLocation = a})
+
+-- | Textual representation of an expression in Common Expression Language
+-- syntax. The application context of the containing message determines
+-- which well-known feature set of CEL is supported.
+eExpression :: Lens' Expr (Maybe Text)
+eExpression
+  = lens _eExpression (\ s a -> s{_eExpression = a})
+
+-- | An optional title for the expression, i.e. a short string describing its
+-- purpose. This can be used e.g. in UIs which allow to enter the
+-- expression.
+eTitle :: Lens' Expr (Maybe Text)
+eTitle = lens _eTitle (\ s a -> s{_eTitle = a})
+
+-- | An optional description of the expression. This is a longer text which
+-- describes the expression, e.g. when hovered over it in a UI.
+eDescription :: Lens' Expr (Maybe Text)
+eDescription
+  = lens _eDescription (\ s a -> s{_eDescription = a})
+
+instance FromJSON Expr where
+        parseJSON
+          = withObject "Expr"
+              (\ o ->
+                 Expr' <$>
+                   (o .:? "location") <*> (o .:? "expression") <*>
+                     (o .:? "title")
+                     <*> (o .:? "description"))
+
+instance ToJSON Expr where
+        toJSON Expr'{..}
+          = object
+              (catMaybes
+                 [("location" .=) <$> _eLocation,
+                  ("expression" .=) <$> _eExpression,
+                  ("title" .=) <$> _eTitle,
+                  ("description" .=) <$> _eDescription])
+
+-- | The response message for Locations.ListLocations.
+--
+-- /See:/ 'listLocationsResponse' smart constructor.
+data ListLocationsResponse = ListLocationsResponse'
+    { _llrNextPageToken :: !(Maybe Text)
+    , _llrLocations     :: !(Maybe [Location])
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ListLocationsResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'llrNextPageToken'
+--
+-- * 'llrLocations'
+listLocationsResponse
+    :: ListLocationsResponse
+listLocationsResponse =
+    ListLocationsResponse'
+    { _llrNextPageToken = Nothing
+    , _llrLocations = Nothing
+    }
+
+-- | The standard List next-page token.
+llrNextPageToken :: Lens' ListLocationsResponse (Maybe Text)
+llrNextPageToken
+  = lens _llrNextPageToken
+      (\ s a -> s{_llrNextPageToken = a})
+
+-- | A list of locations that matches the specified filter in the request.
+llrLocations :: Lens' ListLocationsResponse [Location]
+llrLocations
+  = lens _llrLocations (\ s a -> s{_llrLocations = a})
+      . _Default
+      . _Coerce
+
+instance FromJSON ListLocationsResponse where
+        parseJSON
+          = withObject "ListLocationsResponse"
+              (\ o ->
+                 ListLocationsResponse' <$>
+                   (o .:? "nextPageToken") <*>
+                     (o .:? "locations" .!= mempty))
+
+instance ToJSON ListLocationsResponse where
+        toJSON ListLocationsResponse'{..}
+          = object
+              (catMaybes
+                 [("nextPageToken" .=) <$> _llrNextPageToken,
+                  ("locations" .=) <$> _llrLocations])
+
+-- | Request message for \`GetIamPolicy\` method.
+--
+-- /See:/ 'getIAMPolicyRequest' smart constructor.
+data GetIAMPolicyRequest =
+    GetIAMPolicyRequest'
+    deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'GetIAMPolicyRequest' with the minimum fields required to make a request.
+--
+getIAMPolicyRequest
+    :: GetIAMPolicyRequest
+getIAMPolicyRequest = GetIAMPolicyRequest'
+
+instance FromJSON GetIAMPolicyRequest where
+        parseJSON
+          = withObject "GetIAMPolicyRequest"
+              (\ o -> pure GetIAMPolicyRequest')
+
+instance ToJSON GetIAMPolicyRequest where
+        toJSON = const emptyObject
+
+-- | Retry config. These settings determine when a failed task attempt is
+-- retried.
+--
+-- /See:/ 'retryConfig' smart constructor.
+data RetryConfig = RetryConfig'
+    { _rcMaxDoublings     :: !(Maybe (Textual Int32))
+    , _rcMaxRetryDuration :: !(Maybe GDuration)
+    , _rcMaxAttempts      :: !(Maybe (Textual Int32))
+    , _rcMaxBackoff       :: !(Maybe GDuration)
+    , _rcMinBackoff       :: !(Maybe GDuration)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'RetryConfig' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'rcMaxDoublings'
+--
+-- * 'rcMaxRetryDuration'
+--
+-- * 'rcMaxAttempts'
+--
+-- * 'rcMaxBackoff'
+--
+-- * 'rcMinBackoff'
+retryConfig
+    :: RetryConfig
+retryConfig =
+    RetryConfig'
+    { _rcMaxDoublings = Nothing
+    , _rcMaxRetryDuration = Nothing
+    , _rcMaxAttempts = Nothing
+    , _rcMaxBackoff = Nothing
+    , _rcMinBackoff = Nothing
+    }
+
+-- | The time between retries will double \`max_doublings\` times. A task\'s
+-- retry interval starts at min_backoff, then doubles \`max_doublings\`
+-- times, then increases linearly, and finally retries retries at intervals
+-- of max_backoff up to max_attempts times. For example, if min_backoff is
+-- 10s, max_backoff is 300s, and \`max_doublings\` is 3, then the a task
+-- will first be retried in 10s. The retry interval will double three
+-- times, and then increase linearly by 2^3 * 10s. Finally, the task will
+-- retry at intervals of max_backoff until the task has been attempted
+-- max_attempts times. Thus, the requests will retry at 10s, 20s, 40s, 80s,
+-- 160s, 240s, 300s, 300s, .... If unspecified when the queue is created,
+-- Cloud Tasks will pick the default. This field has the same meaning as
+-- [max_doublings in
+-- queue.yaml\/xml](https:\/\/cloud.google.com\/appengine\/docs\/standard\/python\/config\/queueref#retry_parameters).
+rcMaxDoublings :: Lens' RetryConfig (Maybe Int32)
+rcMaxDoublings
+  = lens _rcMaxDoublings
+      (\ s a -> s{_rcMaxDoublings = a})
+      . mapping _Coerce
+
+-- | If positive, \`max_retry_duration\` specifies the time limit for
+-- retrying a failed task, measured from when the task was first attempted.
+-- Once \`max_retry_duration\` time has passed *and* the task has been
+-- attempted max_attempts times, no further attempts will be made and the
+-- task will be deleted. If zero, then the task age is unlimited. If
+-- unspecified when the queue is created, Cloud Tasks will pick the
+-- default. \`max_retry_duration\` will be truncated to the nearest second.
+-- This field has the same meaning as [task_age_limit in
+-- queue.yaml\/xml](https:\/\/cloud.google.com\/appengine\/docs\/standard\/python\/config\/queueref#retry_parameters).
+rcMaxRetryDuration :: Lens' RetryConfig (Maybe Scientific)
+rcMaxRetryDuration
+  = lens _rcMaxRetryDuration
+      (\ s a -> s{_rcMaxRetryDuration = a})
+      . mapping _GDuration
+
+-- | Number of attempts per task. Cloud Tasks will attempt the task
+-- \`max_attempts\` times (that is, if the first attempt fails, then there
+-- will be \`max_attempts - 1\` retries). Must be >= -1. If unspecified
+-- when the queue is created, Cloud Tasks will pick the default. -1
+-- indicates unlimited attempts. This field has the same meaning as
+-- [task_retry_limit in
+-- queue.yaml\/xml](https:\/\/cloud.google.com\/appengine\/docs\/standard\/python\/config\/queueref#retry_parameters).
+rcMaxAttempts :: Lens' RetryConfig (Maybe Int32)
+rcMaxAttempts
+  = lens _rcMaxAttempts
+      (\ s a -> s{_rcMaxAttempts = a})
+      . mapping _Coerce
+
+-- | A task will be scheduled for retry between min_backoff and max_backoff
+-- duration after it fails, if the queue\'s RetryConfig specifies that the
+-- task should be retried. If unspecified when the queue is created, Cloud
+-- Tasks will pick the default. \`max_backoff\` will be truncated to the
+-- nearest second. This field has the same meaning as [max_backoff_seconds
+-- in
+-- queue.yaml\/xml](https:\/\/cloud.google.com\/appengine\/docs\/standard\/python\/config\/queueref#retry_parameters).
+rcMaxBackoff :: Lens' RetryConfig (Maybe Scientific)
+rcMaxBackoff
+  = lens _rcMaxBackoff (\ s a -> s{_rcMaxBackoff = a})
+      . mapping _GDuration
+
+-- | A task will be scheduled for retry between min_backoff and max_backoff
+-- duration after it fails, if the queue\'s RetryConfig specifies that the
+-- task should be retried. If unspecified when the queue is created, Cloud
+-- Tasks will pick the default. \`min_backoff\` will be truncated to the
+-- nearest second. This field has the same meaning as [min_backoff_seconds
+-- in
+-- queue.yaml\/xml](https:\/\/cloud.google.com\/appengine\/docs\/standard\/python\/config\/queueref#retry_parameters).
+rcMinBackoff :: Lens' RetryConfig (Maybe Scientific)
+rcMinBackoff
+  = lens _rcMinBackoff (\ s a -> s{_rcMinBackoff = a})
+      . mapping _GDuration
+
+instance FromJSON RetryConfig where
+        parseJSON
+          = withObject "RetryConfig"
+              (\ o ->
+                 RetryConfig' <$>
+                   (o .:? "maxDoublings") <*> (o .:? "maxRetryDuration")
+                     <*> (o .:? "maxAttempts")
+                     <*> (o .:? "maxBackoff")
+                     <*> (o .:? "minBackoff"))
+
+instance ToJSON RetryConfig where
+        toJSON RetryConfig'{..}
+          = object
+              (catMaybes
+                 [("maxDoublings" .=) <$> _rcMaxDoublings,
+                  ("maxRetryDuration" .=) <$> _rcMaxRetryDuration,
+                  ("maxAttempts" .=) <$> _rcMaxAttempts,
+                  ("maxBackoff" .=) <$> _rcMaxBackoff,
+                  ("minBackoff" .=) <$> _rcMinBackoff])
+
+-- | Request message for forcing a task to run now using RunTask.
+--
+-- /See:/ 'runTaskRequest' smart constructor.
+newtype RunTaskRequest = RunTaskRequest'
+    { _rtrResponseView :: Maybe RunTaskRequestResponseView
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'RunTaskRequest' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'rtrResponseView'
+runTaskRequest
+    :: RunTaskRequest
+runTaskRequest =
+    RunTaskRequest'
+    { _rtrResponseView = Nothing
+    }
+
+-- | The response_view specifies which subset of the Task will be returned.
+-- By default response_view is BASIC; not all information is retrieved by
+-- default because some data, such as payloads, might be desirable to
+-- return only when needed because of its large size or because of the
+-- sensitivity of data that it contains. Authorization for FULL requires
+-- \`cloudtasks.tasks.fullView\` [Google
+-- IAM](https:\/\/cloud.google.com\/iam\/) permission on the Task resource.
+rtrResponseView :: Lens' RunTaskRequest (Maybe RunTaskRequestResponseView)
+rtrResponseView
+  = lens _rtrResponseView
+      (\ s a -> s{_rtrResponseView = a})
+
+instance FromJSON RunTaskRequest where
+        parseJSON
+          = withObject "RunTaskRequest"
+              (\ o -> RunTaskRequest' <$> (o .:? "responseView"))
+
+instance ToJSON RunTaskRequest where
+        toJSON RunTaskRequest'{..}
+          = object
+              (catMaybes
+                 [("responseView" .=) <$> _rtrResponseView])
+
+-- | A resource that represents Google Cloud Platform location.
+--
+-- /See:/ 'location' smart constructor.
+data Location = Location'
+    { _lName        :: !(Maybe Text)
+    , _lMetadata    :: !(Maybe LocationMetadata)
+    , _lDisplayName :: !(Maybe Text)
+    , _lLabels      :: !(Maybe LocationLabels)
+    , _lLocationId  :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'Location' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'lName'
+--
+-- * 'lMetadata'
+--
+-- * 'lDisplayName'
+--
+-- * 'lLabels'
+--
+-- * 'lLocationId'
+location
+    :: Location
+location =
+    Location'
+    { _lName = Nothing
+    , _lMetadata = Nothing
+    , _lDisplayName = Nothing
+    , _lLabels = Nothing
+    , _lLocationId = Nothing
+    }
+
+-- | Resource name for the location, which may vary between implementations.
+-- For example: \`\"projects\/example-project\/locations\/us-east1\"\`
+lName :: Lens' Location (Maybe Text)
+lName = lens _lName (\ s a -> s{_lName = a})
+
+-- | Service-specific metadata. For example the available capacity at the
+-- given location.
+lMetadata :: Lens' Location (Maybe LocationMetadata)
+lMetadata
+  = lens _lMetadata (\ s a -> s{_lMetadata = a})
+
+-- | The friendly name for this location, typically a nearby city name. For
+-- example, \"Tokyo\".
+lDisplayName :: Lens' Location (Maybe Text)
+lDisplayName
+  = lens _lDisplayName (\ s a -> s{_lDisplayName = a})
+
+-- | Cross-service attributes for the location. For example
+-- {\"cloud.googleapis.com\/region\": \"us-east1\"}
+lLabels :: Lens' Location (Maybe LocationLabels)
+lLabels = lens _lLabels (\ s a -> s{_lLabels = a})
+
+-- | The canonical id for this location. For example: \`\"us-east1\"\`.
+lLocationId :: Lens' Location (Maybe Text)
+lLocationId
+  = lens _lLocationId (\ s a -> s{_lLocationId = a})
+
+instance FromJSON Location where
+        parseJSON
+          = withObject "Location"
+              (\ o ->
+                 Location' <$>
+                   (o .:? "name") <*> (o .:? "metadata") <*>
+                     (o .:? "displayName")
+                     <*> (o .:? "labels")
+                     <*> (o .:? "locationId"))
+
+instance ToJSON Location where
+        toJSON Location'{..}
+          = object
+              (catMaybes
+                 [("name" .=) <$> _lName,
+                  ("metadata" .=) <$> _lMetadata,
+                  ("displayName" .=) <$> _lDisplayName,
+                  ("labels" .=) <$> _lLabels,
+                  ("locationId" .=) <$> _lLocationId])
+
+-- | A generic empty message that you can re-use to avoid defining duplicated
+-- empty messages in your APIs. A typical example is to use it as the
+-- request or the response type of an API method. For instance: service Foo
+-- { rpc Bar(google.protobuf.Empty) returns (google.protobuf.Empty); } The
+-- JSON representation for \`Empty\` is empty JSON object \`{}\`.
+--
+-- /See:/ 'empty' smart constructor.
+data Empty =
+    Empty'
+    deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'Empty' with the minimum fields required to make a request.
+--
+empty
+    :: Empty
+empty = Empty'
+
+instance FromJSON Empty where
+        parseJSON = withObject "Empty" (\ o -> pure Empty')
+
+instance ToJSON Empty where
+        toJSON = const emptyObject
+
+-- | Request message for CreateTask.
+--
+-- /See:/ 'createTaskRequest' smart constructor.
+data CreateTaskRequest = CreateTaskRequest'
+    { _ctrResponseView :: !(Maybe CreateTaskRequestResponseView)
+    , _ctrTask         :: !(Maybe Task)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'CreateTaskRequest' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'ctrResponseView'
+--
+-- * 'ctrTask'
+createTaskRequest
+    :: CreateTaskRequest
+createTaskRequest =
+    CreateTaskRequest'
+    { _ctrResponseView = Nothing
+    , _ctrTask = Nothing
+    }
+
+-- | The response_view specifies which subset of the Task will be returned.
+-- By default response_view is BASIC; not all information is retrieved by
+-- default because some data, such as payloads, might be desirable to
+-- return only when needed because of its large size or because of the
+-- sensitivity of data that it contains. Authorization for FULL requires
+-- \`cloudtasks.tasks.fullView\` [Google
+-- IAM](https:\/\/cloud.google.com\/iam\/) permission on the Task resource.
+ctrResponseView :: Lens' CreateTaskRequest (Maybe CreateTaskRequestResponseView)
+ctrResponseView
+  = lens _ctrResponseView
+      (\ s a -> s{_ctrResponseView = a})
+
+-- | Required. The task to add. Task names have the following format:
+-- \`projects\/PROJECT_ID\/locations\/LOCATION_ID\/queues\/QUEUE_ID\/tasks\/TASK_ID\`.
+-- The user can optionally specify a task name. If a name is not specified
+-- then the system will generate a random unique task id, which will be set
+-- in the task returned in the response. If schedule_time is not set or is
+-- in the past then Cloud Tasks will set it to the current time. Task
+-- De-duplication: Explicitly specifying a task ID enables task
+-- de-duplication. If a task\'s ID is identical to that of an existing task
+-- or a task that was deleted or executed recently then the call will fail
+-- with ALREADY_EXISTS. If the task\'s queue was created using Cloud Tasks,
+-- then another task with the same name can\'t be created for ~1hour after
+-- the original task was deleted or executed. If the task\'s queue was
+-- created using queue.yaml or queue.xml, then another task with the same
+-- name can\'t be created for ~9days after the original task was deleted or
+-- executed. Because there is an extra lookup cost to identify duplicate
+-- task names, these CreateTask calls have significantly increased latency.
+-- Using hashed strings for the task id or for the prefix of the task id is
+-- recommended. Choosing task ids that are sequential or have sequential
+-- prefixes, for example using a timestamp, causes an increase in latency
+-- and error rates in all task commands. The infrastructure relies on an
+-- approximately uniform distribution of task ids to store and serve tasks
+-- efficiently.
+ctrTask :: Lens' CreateTaskRequest (Maybe Task)
+ctrTask = lens _ctrTask (\ s a -> s{_ctrTask = a})
+
+instance FromJSON CreateTaskRequest where
+        parseJSON
+          = withObject "CreateTaskRequest"
+              (\ o ->
+                 CreateTaskRequest' <$>
+                   (o .:? "responseView") <*> (o .:? "task"))
+
+instance ToJSON CreateTaskRequest where
+        toJSON CreateTaskRequest'{..}
+          = object
+              (catMaybes
+                 [("responseView" .=) <$> _ctrResponseView,
+                  ("task" .=) <$> _ctrTask])
+
+-- | Response message for ListQueues.
+--
+-- /See:/ 'listQueuesResponse' smart constructor.
+data ListQueuesResponse = ListQueuesResponse'
+    { _lqrNextPageToken :: !(Maybe Text)
+    , _lqrQueues        :: !(Maybe [Queue])
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ListQueuesResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'lqrNextPageToken'
+--
+-- * 'lqrQueues'
+listQueuesResponse
+    :: ListQueuesResponse
+listQueuesResponse =
+    ListQueuesResponse'
+    { _lqrNextPageToken = Nothing
+    , _lqrQueues = Nothing
+    }
+
+-- | A token to retrieve next page of results. To return the next page of
+-- results, call ListQueues with this value as the page_token. If the
+-- next_page_token is empty, there are no more results. The page token is
+-- valid for only 2 hours.
+lqrNextPageToken :: Lens' ListQueuesResponse (Maybe Text)
+lqrNextPageToken
+  = lens _lqrNextPageToken
+      (\ s a -> s{_lqrNextPageToken = a})
+
+-- | The list of queues.
+lqrQueues :: Lens' ListQueuesResponse [Queue]
+lqrQueues
+  = lens _lqrQueues (\ s a -> s{_lqrQueues = a}) .
+      _Default
+      . _Coerce
+
+instance FromJSON ListQueuesResponse where
+        parseJSON
+          = withObject "ListQueuesResponse"
+              (\ o ->
+                 ListQueuesResponse' <$>
+                   (o .:? "nextPageToken") <*>
+                     (o .:? "queues" .!= mempty))
+
+instance ToJSON ListQueuesResponse where
+        toJSON ListQueuesResponse'{..}
+          = object
+              (catMaybes
+                 [("nextPageToken" .=) <$> _lqrNextPageToken,
+                  ("queues" .=) <$> _lqrQueues])
+
+--
+-- /See:/ 'statusDetailsItem' smart constructor.
+newtype StatusDetailsItem = StatusDetailsItem'
+    { _sdiAddtional :: HashMap Text JSONValue
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'StatusDetailsItem' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'sdiAddtional'
+statusDetailsItem
+    :: HashMap Text JSONValue -- ^ 'sdiAddtional'
+    -> StatusDetailsItem
+statusDetailsItem pSdiAddtional_ =
+    StatusDetailsItem'
+    { _sdiAddtional = _Coerce # pSdiAddtional_
+    }
+
+-- | Properties of the object. Contains field \'type with type URL.
+sdiAddtional :: Lens' StatusDetailsItem (HashMap Text JSONValue)
+sdiAddtional
+  = lens _sdiAddtional (\ s a -> s{_sdiAddtional = a})
+      . _Coerce
+
+instance FromJSON StatusDetailsItem where
+        parseJSON
+          = withObject "StatusDetailsItem"
+              (\ o -> StatusDetailsItem' <$> (parseJSONObject o))
+
+instance ToJSON StatusDetailsItem where
+        toJSON = toJSON . _sdiAddtional
+
+-- | App Engine HTTP queue. The task will be delivered to the App Engine
+-- application hostname specified by its AppEngineHttpQueue and
+-- AppEngineHttpRequest. The documentation for AppEngineHttpRequest
+-- explains how the task\'s host URL is constructed. Using
+-- AppEngineHttpQueue requires
+-- [\`appengine.applications.get\`](https:\/\/cloud.google.com\/appengine\/docs\/admin-api\/access-control)
+-- Google IAM permission for the project and the following scope:
+-- \`https:\/\/www.googleapis.com\/auth\/cloud-platform\`
+--
+-- /See:/ 'appEngineHTTPQueue' smart constructor.
+newtype AppEngineHTTPQueue = AppEngineHTTPQueue'
+    { _aehttpqAppEngineRoutingOverride :: Maybe AppEngineRouting
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'AppEngineHTTPQueue' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'aehttpqAppEngineRoutingOverride'
+appEngineHTTPQueue
+    :: AppEngineHTTPQueue
+appEngineHTTPQueue =
+    AppEngineHTTPQueue'
+    { _aehttpqAppEngineRoutingOverride = Nothing
+    }
+
+-- | Overrides for the task-level app_engine_routing. If set,
+-- \`app_engine_routing_override\` is used for all tasks in the queue, no
+-- matter what the setting is for the task-level app_engine_routing.
+aehttpqAppEngineRoutingOverride :: Lens' AppEngineHTTPQueue (Maybe AppEngineRouting)
+aehttpqAppEngineRoutingOverride
+  = lens _aehttpqAppEngineRoutingOverride
+      (\ s a -> s{_aehttpqAppEngineRoutingOverride = a})
+
+instance FromJSON AppEngineHTTPQueue where
+        parseJSON
+          = withObject "AppEngineHTTPQueue"
+              (\ o ->
+                 AppEngineHTTPQueue' <$>
+                   (o .:? "appEngineRoutingOverride"))
+
+instance ToJSON AppEngineHTTPQueue where
+        toJSON AppEngineHTTPQueue'{..}
+          = object
+              (catMaybes
+                 [("appEngineRoutingOverride" .=) <$>
+                    _aehttpqAppEngineRoutingOverride])
+
+-- | Request message for \`SetIamPolicy\` method.
+--
+-- /See:/ 'setIAMPolicyRequest' smart constructor.
+newtype SetIAMPolicyRequest = SetIAMPolicyRequest'
+    { _siprPolicy :: Maybe Policy
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'SetIAMPolicyRequest' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'siprPolicy'
+setIAMPolicyRequest
+    :: SetIAMPolicyRequest
+setIAMPolicyRequest =
+    SetIAMPolicyRequest'
+    { _siprPolicy = Nothing
+    }
+
+-- | REQUIRED: The complete policy to be applied to the \`resource\`. The
+-- size of the policy is limited to a few 10s of KB. An empty policy is a
+-- valid policy but certain Cloud Platform services (such as Projects)
+-- might reject them.
+siprPolicy :: Lens' SetIAMPolicyRequest (Maybe Policy)
+siprPolicy
+  = lens _siprPolicy (\ s a -> s{_siprPolicy = a})
+
+instance FromJSON SetIAMPolicyRequest where
+        parseJSON
+          = withObject "SetIAMPolicyRequest"
+              (\ o -> SetIAMPolicyRequest' <$> (o .:? "policy"))
+
+instance ToJSON SetIAMPolicyRequest where
+        toJSON SetIAMPolicyRequest'{..}
+          = object (catMaybes [("policy" .=) <$> _siprPolicy])
+
+-- | A queue is a container of related tasks. Queues are configured to manage
+-- how those tasks are dispatched. Configurable properties include rate
+-- limits, retry options, queue types, and others.
+--
+-- /See:/ 'queue' smart constructor.
+data Queue = Queue'
+    { _qRateLimits         :: !(Maybe RateLimits)
+    , _qState              :: !(Maybe QueueState)
+    , _qRetryConfig        :: !(Maybe RetryConfig)
+    , _qAppEngineHTTPQueue :: !(Maybe AppEngineHTTPQueue)
+    , _qName               :: !(Maybe Text)
+    , _qPurgeTime          :: !(Maybe DateTime')
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'Queue' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'qRateLimits'
+--
+-- * 'qState'
+--
+-- * 'qRetryConfig'
+--
+-- * 'qAppEngineHTTPQueue'
+--
+-- * 'qName'
+--
+-- * 'qPurgeTime'
+queue
+    :: Queue
+queue =
+    Queue'
+    { _qRateLimits = Nothing
+    , _qState = Nothing
+    , _qRetryConfig = Nothing
+    , _qAppEngineHTTPQueue = Nothing
+    , _qName = Nothing
+    , _qPurgeTime = Nothing
+    }
+
+-- | Rate limits for task dispatches. rate_limits and retry_config are
+-- related because they both control task attempts however they control how
+-- tasks are attempted in different ways: * rate_limits controls the total
+-- rate of dispatches from a queue (i.e. all traffic dispatched from the
+-- queue, regardless of whether the dispatch is from a first attempt or a
+-- retry). * retry_config controls what happens to particular a task after
+-- its first attempt fails. That is, retry_config controls task retries
+-- (the second attempt, third attempt, etc).
+qRateLimits :: Lens' Queue (Maybe RateLimits)
+qRateLimits
+  = lens _qRateLimits (\ s a -> s{_qRateLimits = a})
+
+-- | Output only. The state of the queue. \`state\` can only be changed by
+-- called PauseQueue, ResumeQueue, or uploading
+-- [queue.yaml\/xml](https:\/\/cloud.google.com\/appengine\/docs\/python\/config\/queueref).
+-- UpdateQueue cannot be used to change \`state\`.
+qState :: Lens' Queue (Maybe QueueState)
+qState = lens _qState (\ s a -> s{_qState = a})
+
+-- | Settings that determine the retry behavior. * For tasks created using
+-- Cloud Tasks: the queue-level retry settings apply to all tasks in the
+-- queue that were created using Cloud Tasks. Retry settings cannot be set
+-- on individual tasks. * For tasks created using the App Engine SDK: the
+-- queue-level retry settings apply to all tasks in the queue which do not
+-- have retry settings explicitly set on the task and were created by the
+-- App Engine SDK. See [App Engine
+-- documentation](https:\/\/cloud.google.com\/appengine\/docs\/standard\/python\/taskqueue\/push\/retrying-tasks).
+qRetryConfig :: Lens' Queue (Maybe RetryConfig)
+qRetryConfig
+  = lens _qRetryConfig (\ s a -> s{_qRetryConfig = a})
+
+-- | App Engine HTTP queue. An App Engine queue is a queue that has an
+-- AppEngineHttpQueue type.
+qAppEngineHTTPQueue :: Lens' Queue (Maybe AppEngineHTTPQueue)
+qAppEngineHTTPQueue
+  = lens _qAppEngineHTTPQueue
+      (\ s a -> s{_qAppEngineHTTPQueue = a})
+
+-- | Caller-specified and required in CreateQueue, after which it becomes
+-- output only. The queue name. The queue name must have the following
+-- format:
+-- \`projects\/PROJECT_ID\/locations\/LOCATION_ID\/queues\/QUEUE_ID\` *
+-- \`PROJECT_ID\` can contain letters ([A-Za-z]), numbers ([0-9]), hyphens
+-- (-), colons (:), or periods (.). For more information, see [Identifying
+-- projects](https:\/\/cloud.google.com\/resource-manager\/docs\/creating-managing-projects#identifying_projects)
+-- * \`LOCATION_ID\` is the canonical ID for the queue\'s location. The
+-- list of available locations can be obtained by calling ListLocations.
+-- For more information, see
+-- https:\/\/cloud.google.com\/about\/locations\/. * \`QUEUE_ID\` can
+-- contain letters ([A-Za-z]), numbers ([0-9]), or hyphens (-). The maximum
+-- length is 100 characters.
+qName :: Lens' Queue (Maybe Text)
+qName = lens _qName (\ s a -> s{_qName = a})
+
+-- | Output only. The last time this queue was purged. All tasks that were
+-- created before this time were purged. A queue can be purged using
+-- PurgeQueue, the [App Engine Task Queue SDK, or the Cloud
+-- Console](https:\/\/cloud.google.com\/appengine\/docs\/standard\/python\/taskqueue\/push\/deleting-tasks-and-queues#purging_all_tasks_from_a_queue).
+-- Purge time will be truncated to the nearest microsecond. Purge time will
+-- be unset if the queue has never been purged.
+qPurgeTime :: Lens' Queue (Maybe UTCTime)
+qPurgeTime
+  = lens _qPurgeTime (\ s a -> s{_qPurgeTime = a}) .
+      mapping _DateTime
+
+instance FromJSON Queue where
+        parseJSON
+          = withObject "Queue"
+              (\ o ->
+                 Queue' <$>
+                   (o .:? "rateLimits") <*> (o .:? "state") <*>
+                     (o .:? "retryConfig")
+                     <*> (o .:? "appEngineHttpQueue")
+                     <*> (o .:? "name")
+                     <*> (o .:? "purgeTime"))
+
+instance ToJSON Queue where
+        toJSON Queue'{..}
+          = object
+              (catMaybes
+                 [("rateLimits" .=) <$> _qRateLimits,
+                  ("state" .=) <$> _qState,
+                  ("retryConfig" .=) <$> _qRetryConfig,
+                  ("appEngineHttpQueue" .=) <$> _qAppEngineHTTPQueue,
+                  ("name" .=) <$> _qName,
+                  ("purgeTime" .=) <$> _qPurgeTime])
+
+-- | Response message for listing tasks using ListTasks.
+--
+-- /See:/ 'listTasksResponse' smart constructor.
+data ListTasksResponse = ListTasksResponse'
+    { _ltrNextPageToken :: !(Maybe Text)
+    , _ltrTasks         :: !(Maybe [Task])
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ListTasksResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'ltrNextPageToken'
+--
+-- * 'ltrTasks'
+listTasksResponse
+    :: ListTasksResponse
+listTasksResponse =
+    ListTasksResponse'
+    { _ltrNextPageToken = Nothing
+    , _ltrTasks = Nothing
+    }
+
+-- | A token to retrieve next page of results. To return the next page of
+-- results, call ListTasks with this value as the page_token. If the
+-- next_page_token is empty, there are no more results.
+ltrNextPageToken :: Lens' ListTasksResponse (Maybe Text)
+ltrNextPageToken
+  = lens _ltrNextPageToken
+      (\ s a -> s{_ltrNextPageToken = a})
+
+-- | The list of tasks.
+ltrTasks :: Lens' ListTasksResponse [Task]
+ltrTasks
+  = lens _ltrTasks (\ s a -> s{_ltrTasks = a}) .
+      _Default
+      . _Coerce
+
+instance FromJSON ListTasksResponse where
+        parseJSON
+          = withObject "ListTasksResponse"
+              (\ o ->
+                 ListTasksResponse' <$>
+                   (o .:? "nextPageToken") <*>
+                     (o .:? "tasks" .!= mempty))
+
+instance ToJSON ListTasksResponse where
+        toJSON ListTasksResponse'{..}
+          = object
+              (catMaybes
+                 [("nextPageToken" .=) <$> _ltrNextPageToken,
+                  ("tasks" .=) <$> _ltrTasks])
+
+-- | HTTP request headers. This map contains the header field names and
+-- values. Headers can be set when the task is created. Repeated headers
+-- are not supported but a header value can contain commas. Cloud Tasks
+-- sets some headers to default values: * \`User-Agent\`: By default, this
+-- header is \`\"AppEngine-Google;
+-- (+http:\/\/code.google.com\/appengine)\"\`. This header can be modified,
+-- but Cloud Tasks will append \`\"AppEngine-Google;
+-- (+http:\/\/code.google.com\/appengine)\"\` to the modified
+-- \`User-Agent\`. If the task has a body, Cloud Tasks sets the following
+-- headers: * \`Content-Type\`: By default, the \`Content-Type\` header is
+-- set to \`\"application\/octet-stream\"\`. The default can be overridden
+-- by explicitly setting \`Content-Type\` to a particular media type when
+-- the task is created. For example, \`Content-Type\` can be set to
+-- \`\"application\/json\"\`. * \`Content-Length\`: This is computed by
+-- Cloud Tasks. This value is output only. It cannot be changed. The
+-- headers below cannot be set or overridden: * \`Host\` * \`X-Google-*\` *
+-- \`X-AppEngine-*\` In addition, Cloud Tasks sets some headers when the
+-- task is dispatched, such as headers containing information about the
+-- task; see [request
+-- headers](https:\/\/cloud.google.com\/appengine\/docs\/python\/taskqueue\/push\/creating-handlers#reading_request_headers).
+-- These headers are set only when the task is dispatched, so they are not
+-- visible when the task is returned in a Cloud Tasks response. Although
+-- there is no specific limit for the maximum number of headers or the
+-- size, there is a limit on the maximum size of the Task. For more
+-- information, see the CreateTask documentation.
+--
+-- /See:/ 'appEngineHTTPRequestHeaders' smart constructor.
+newtype AppEngineHTTPRequestHeaders = AppEngineHTTPRequestHeaders'
+    { _aehttprhAddtional :: HashMap Text Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'AppEngineHTTPRequestHeaders' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'aehttprhAddtional'
+appEngineHTTPRequestHeaders
+    :: HashMap Text Text -- ^ 'aehttprhAddtional'
+    -> AppEngineHTTPRequestHeaders
+appEngineHTTPRequestHeaders pAehttprhAddtional_ =
+    AppEngineHTTPRequestHeaders'
+    { _aehttprhAddtional = _Coerce # pAehttprhAddtional_
+    }
+
+aehttprhAddtional :: Lens' AppEngineHTTPRequestHeaders (HashMap Text Text)
+aehttprhAddtional
+  = lens _aehttprhAddtional
+      (\ s a -> s{_aehttprhAddtional = a})
+      . _Coerce
+
+instance FromJSON AppEngineHTTPRequestHeaders where
+        parseJSON
+          = withObject "AppEngineHTTPRequestHeaders"
+              (\ o ->
+                 AppEngineHTTPRequestHeaders' <$> (parseJSONObject o))
+
+instance ToJSON AppEngineHTTPRequestHeaders where
+        toJSON = toJSON . _aehttprhAddtional
+
+-- | Request message for PauseQueue.
+--
+-- /See:/ 'pauseQueueRequest' smart constructor.
+data PauseQueueRequest =
+    PauseQueueRequest'
+    deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'PauseQueueRequest' with the minimum fields required to make a request.
+--
+pauseQueueRequest
+    :: PauseQueueRequest
+pauseQueueRequest = PauseQueueRequest'
+
+instance FromJSON PauseQueueRequest where
+        parseJSON
+          = withObject "PauseQueueRequest"
+              (\ o -> pure PauseQueueRequest')
+
+instance ToJSON PauseQueueRequest where
+        toJSON = const emptyObject
+
+-- | Request message for \`TestIamPermissions\` method.
+--
+-- /See:/ 'testIAMPermissionsRequest' smart constructor.
+newtype TestIAMPermissionsRequest = TestIAMPermissionsRequest'
+    { _tiprPermissions :: Maybe [Text]
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'TestIAMPermissionsRequest' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'tiprPermissions'
+testIAMPermissionsRequest
+    :: TestIAMPermissionsRequest
+testIAMPermissionsRequest =
+    TestIAMPermissionsRequest'
+    { _tiprPermissions = Nothing
+    }
+
+-- | The set of permissions to check for the \`resource\`. Permissions with
+-- wildcards (such as \'*\' or \'storage.*\') are not allowed. For more
+-- information see [IAM
+-- Overview](https:\/\/cloud.google.com\/iam\/docs\/overview#permissions).
+tiprPermissions :: Lens' TestIAMPermissionsRequest [Text]
+tiprPermissions
+  = lens _tiprPermissions
+      (\ s a -> s{_tiprPermissions = a})
+      . _Default
+      . _Coerce
+
+instance FromJSON TestIAMPermissionsRequest where
+        parseJSON
+          = withObject "TestIAMPermissionsRequest"
+              (\ o ->
+                 TestIAMPermissionsRequest' <$>
+                   (o .:? "permissions" .!= mempty))
+
+instance ToJSON TestIAMPermissionsRequest where
+        toJSON TestIAMPermissionsRequest'{..}
+          = object
+              (catMaybes [("permissions" .=) <$> _tiprPermissions])
+
+-- | The status of a task attempt.
+--
+-- /See:/ 'attempt' smart constructor.
+data Attempt = Attempt'
+    { _aResponseStatus :: !(Maybe Status)
+    , _aScheduleTime   :: !(Maybe DateTime')
+    , _aDispatchTime   :: !(Maybe DateTime')
+    , _aResponseTime   :: !(Maybe DateTime')
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'Attempt' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'aResponseStatus'
+--
+-- * 'aScheduleTime'
+--
+-- * 'aDispatchTime'
+--
+-- * 'aResponseTime'
+attempt
+    :: Attempt
+attempt =
+    Attempt'
+    { _aResponseStatus = Nothing
+    , _aScheduleTime = Nothing
+    , _aDispatchTime = Nothing
+    , _aResponseTime = Nothing
+    }
+
+-- | Output only. The response from the target for this attempt. If
+-- \`response_time\` is unset, then the task has not been attempted or is
+-- currently running and the \`response_status\` field is meaningless.
+aResponseStatus :: Lens' Attempt (Maybe Status)
+aResponseStatus
+  = lens _aResponseStatus
+      (\ s a -> s{_aResponseStatus = a})
+
+-- | Output only. The time that this attempt was scheduled. \`schedule_time\`
+-- will be truncated to the nearest microsecond.
+aScheduleTime :: Lens' Attempt (Maybe UTCTime)
+aScheduleTime
+  = lens _aScheduleTime
+      (\ s a -> s{_aScheduleTime = a})
+      . mapping _DateTime
+
+-- | Output only. The time that this attempt was dispatched.
+-- \`dispatch_time\` will be truncated to the nearest microsecond.
+aDispatchTime :: Lens' Attempt (Maybe UTCTime)
+aDispatchTime
+  = lens _aDispatchTime
+      (\ s a -> s{_aDispatchTime = a})
+      . mapping _DateTime
+
+-- | Output only. The time that this attempt response was received.
+-- \`response_time\` will be truncated to the nearest microsecond.
+aResponseTime :: Lens' Attempt (Maybe UTCTime)
+aResponseTime
+  = lens _aResponseTime
+      (\ s a -> s{_aResponseTime = a})
+      . mapping _DateTime
+
+instance FromJSON Attempt where
+        parseJSON
+          = withObject "Attempt"
+              (\ o ->
+                 Attempt' <$>
+                   (o .:? "responseStatus") <*> (o .:? "scheduleTime")
+                     <*> (o .:? "dispatchTime")
+                     <*> (o .:? "responseTime"))
+
+instance ToJSON Attempt where
+        toJSON Attempt'{..}
+          = object
+              (catMaybes
+                 [("responseStatus" .=) <$> _aResponseStatus,
+                  ("scheduleTime" .=) <$> _aScheduleTime,
+                  ("dispatchTime" .=) <$> _aDispatchTime,
+                  ("responseTime" .=) <$> _aResponseTime])
+
+-- | Request message for PurgeQueue.
+--
+-- /See:/ 'purgeQueueRequest' smart constructor.
+data PurgeQueueRequest =
+    PurgeQueueRequest'
+    deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'PurgeQueueRequest' with the minimum fields required to make a request.
+--
+purgeQueueRequest
+    :: PurgeQueueRequest
+purgeQueueRequest = PurgeQueueRequest'
+
+instance FromJSON PurgeQueueRequest where
+        parseJSON
+          = withObject "PurgeQueueRequest"
+              (\ o -> pure PurgeQueueRequest')
+
+instance ToJSON PurgeQueueRequest where
+        toJSON = const emptyObject
+
+-- | A unit of scheduled work.
+--
+-- /See:/ 'task' smart constructor.
+data Task = Task'
+    { _tLastAttempt          :: !(Maybe Attempt)
+    , _tScheduleTime         :: !(Maybe DateTime')
+    , _tName                 :: !(Maybe Text)
+    , _tFirstAttempt         :: !(Maybe Attempt)
+    , _tView                 :: !(Maybe TaskView)
+    , _tResponseCount        :: !(Maybe (Textual Int32))
+    , _tDispatchCount        :: !(Maybe (Textual Int32))
+    , _tAppEngineHTTPRequest :: !(Maybe AppEngineHTTPRequest)
+    , _tCreateTime           :: !(Maybe DateTime')
+    } 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:
+--
+-- * 'tLastAttempt'
+--
+-- * 'tScheduleTime'
+--
+-- * 'tName'
+--
+-- * 'tFirstAttempt'
+--
+-- * 'tView'
+--
+-- * 'tResponseCount'
+--
+-- * 'tDispatchCount'
+--
+-- * 'tAppEngineHTTPRequest'
+--
+-- * 'tCreateTime'
+task
+    :: Task
+task =
+    Task'
+    { _tLastAttempt = Nothing
+    , _tScheduleTime = Nothing
+    , _tName = Nothing
+    , _tFirstAttempt = Nothing
+    , _tView = Nothing
+    , _tResponseCount = Nothing
+    , _tDispatchCount = Nothing
+    , _tAppEngineHTTPRequest = Nothing
+    , _tCreateTime = Nothing
+    }
+
+-- | Output only. The status of the task\'s last attempt.
+tLastAttempt :: Lens' Task (Maybe Attempt)
+tLastAttempt
+  = lens _tLastAttempt (\ s a -> s{_tLastAttempt = a})
+
+-- | The time when the task is scheduled to be attempted. For App Engine
+-- queues, this is when the task will be attempted or retried.
+-- \`schedule_time\` will be truncated to the nearest microsecond.
+tScheduleTime :: Lens' Task (Maybe UTCTime)
+tScheduleTime
+  = lens _tScheduleTime
+      (\ s a -> s{_tScheduleTime = a})
+      . mapping _DateTime
+
+-- | Optionally caller-specified in CreateTask. The task name. The task name
+-- must have the following format:
+-- \`projects\/PROJECT_ID\/locations\/LOCATION_ID\/queues\/QUEUE_ID\/tasks\/TASK_ID\`
+-- * \`PROJECT_ID\` can contain letters ([A-Za-z]), numbers ([0-9]),
+-- hyphens (-), colons (:), or periods (.). For more information, see
+-- [Identifying
+-- projects](https:\/\/cloud.google.com\/resource-manager\/docs\/creating-managing-projects#identifying_projects)
+-- * \`LOCATION_ID\` is the canonical ID for the task\'s location. The list
+-- of available locations can be obtained by calling ListLocations. For
+-- more information, see https:\/\/cloud.google.com\/about\/locations\/. *
+-- \`QUEUE_ID\` can contain letters ([A-Za-z]), numbers ([0-9]), or hyphens
+-- (-). The maximum length is 100 characters. * \`TASK_ID\` can contain
+-- only letters ([A-Za-z]), numbers ([0-9]), hyphens (-), or underscores
+-- (_). The maximum length is 500 characters.
+tName :: Lens' Task (Maybe Text)
+tName = lens _tName (\ s a -> s{_tName = a})
+
+-- | Output only. The status of the task\'s first attempt. Only dispatch_time
+-- will be set. The other Attempt information is not retained by Cloud
+-- Tasks.
+tFirstAttempt :: Lens' Task (Maybe Attempt)
+tFirstAttempt
+  = lens _tFirstAttempt
+      (\ s a -> s{_tFirstAttempt = a})
+
+-- | Output only. The view specifies which subset of the Task has been
+-- returned.
+tView :: Lens' Task (Maybe TaskView)
+tView = lens _tView (\ s a -> s{_tView = a})
+
+-- | Output only. The number of attempts which have received a response.
+tResponseCount :: Lens' Task (Maybe Int32)
+tResponseCount
+  = lens _tResponseCount
+      (\ s a -> s{_tResponseCount = a})
+      . mapping _Coerce
+
+-- | Output only. The number of attempts dispatched. This count includes
+-- tasks which have been dispatched but haven\'t received a response.
+tDispatchCount :: Lens' Task (Maybe Int32)
+tDispatchCount
+  = lens _tDispatchCount
+      (\ s a -> s{_tDispatchCount = a})
+      . mapping _Coerce
+
+-- | App Engine HTTP request that is sent to the task\'s target. Can be set
+-- only if app_engine_http_queue is set on the queue. An App Engine task is
+-- a task that has AppEngineHttpRequest set.
+tAppEngineHTTPRequest :: Lens' Task (Maybe AppEngineHTTPRequest)
+tAppEngineHTTPRequest
+  = lens _tAppEngineHTTPRequest
+      (\ s a -> s{_tAppEngineHTTPRequest = a})
+
+-- | Output only. The time that the task was created. \`create_time\` will be
+-- truncated to the nearest second.
+tCreateTime :: Lens' Task (Maybe UTCTime)
+tCreateTime
+  = lens _tCreateTime (\ s a -> s{_tCreateTime = a}) .
+      mapping _DateTime
+
+instance FromJSON Task where
+        parseJSON
+          = withObject "Task"
+              (\ o ->
+                 Task' <$>
+                   (o .:? "lastAttempt") <*> (o .:? "scheduleTime") <*>
+                     (o .:? "name")
+                     <*> (o .:? "firstAttempt")
+                     <*> (o .:? "view")
+                     <*> (o .:? "responseCount")
+                     <*> (o .:? "dispatchCount")
+                     <*> (o .:? "appEngineHttpRequest")
+                     <*> (o .:? "createTime"))
+
+instance ToJSON Task where
+        toJSON Task'{..}
+          = object
+              (catMaybes
+                 [("lastAttempt" .=) <$> _tLastAttempt,
+                  ("scheduleTime" .=) <$> _tScheduleTime,
+                  ("name" .=) <$> _tName,
+                  ("firstAttempt" .=) <$> _tFirstAttempt,
+                  ("view" .=) <$> _tView,
+                  ("responseCount" .=) <$> _tResponseCount,
+                  ("dispatchCount" .=) <$> _tDispatchCount,
+                  ("appEngineHttpRequest" .=) <$>
+                    _tAppEngineHTTPRequest,
+                  ("createTime" .=) <$> _tCreateTime])
+
+-- | Response message for \`TestIamPermissions\` method.
+--
+-- /See:/ 'testIAMPermissionsResponse' smart constructor.
+newtype TestIAMPermissionsResponse = TestIAMPermissionsResponse'
+    { _tiamprPermissions :: Maybe [Text]
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'TestIAMPermissionsResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'tiamprPermissions'
+testIAMPermissionsResponse
+    :: TestIAMPermissionsResponse
+testIAMPermissionsResponse =
+    TestIAMPermissionsResponse'
+    { _tiamprPermissions = Nothing
+    }
+
+-- | A subset of \`TestPermissionsRequest.permissions\` that the caller is
+-- allowed.
+tiamprPermissions :: Lens' TestIAMPermissionsResponse [Text]
+tiamprPermissions
+  = lens _tiamprPermissions
+      (\ s a -> s{_tiamprPermissions = a})
+      . _Default
+      . _Coerce
+
+instance FromJSON TestIAMPermissionsResponse where
+        parseJSON
+          = withObject "TestIAMPermissionsResponse"
+              (\ o ->
+                 TestIAMPermissionsResponse' <$>
+                   (o .:? "permissions" .!= mempty))
+
+instance ToJSON TestIAMPermissionsResponse where
+        toJSON TestIAMPermissionsResponse'{..}
+          = object
+              (catMaybes
+                 [("permissions" .=) <$> _tiamprPermissions])
+
+-- | Defines an Identity and Access Management (IAM) policy. It is used to
+-- specify access control policies for Cloud Platform resources. A
+-- \`Policy\` consists of a list of \`bindings\`. A \`binding\` binds a
+-- list of \`members\` to a \`role\`, where the members can be user
+-- accounts, Google groups, Google domains, and service accounts. A
+-- \`role\` is a named list of permissions defined by IAM. **JSON Example**
+-- { \"bindings\": [ { \"role\": \"roles\/owner\", \"members\": [
+-- \"user:mike\'example.com\", \"group:admins\'example.com\",
+-- \"domain:google.com\",
+-- \"serviceAccount:my-other-app\'appspot.gserviceaccount.com\" ] }, {
+-- \"role\": \"roles\/viewer\", \"members\": [\"user:sean\'example.com\"] }
+-- ] } **YAML Example** bindings: - members: - user:mike\'example.com -
+-- group:admins\'example.com - domain:google.com -
+-- serviceAccount:my-other-app\'appspot.gserviceaccount.com role:
+-- roles\/owner - members: - user:sean\'example.com role: roles\/viewer For
+-- a description of IAM and its features, see the [IAM developer\'s
+-- guide](https:\/\/cloud.google.com\/iam\/docs).
+--
+-- /See:/ 'policy' smart constructor.
+data Policy = Policy'
+    { _pEtag     :: !(Maybe Bytes)
+    , _pVersion  :: !(Maybe (Textual Int32))
+    , _pBindings :: !(Maybe [Binding])
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'Policy' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'pEtag'
+--
+-- * 'pVersion'
+--
+-- * 'pBindings'
+policy
+    :: Policy
+policy =
+    Policy'
+    { _pEtag = Nothing
+    , _pVersion = Nothing
+    , _pBindings = Nothing
+    }
+
+-- | \`etag\` is used for optimistic concurrency control as a way to help
+-- prevent simultaneous updates of a policy from overwriting each other. It
+-- is strongly suggested that systems make use of the \`etag\` in the
+-- read-modify-write cycle to perform policy updates in order to avoid race
+-- conditions: An \`etag\` is returned in the response to \`getIamPolicy\`,
+-- and systems are expected to put that etag in the request to
+-- \`setIamPolicy\` to ensure that their change will be applied to the same
+-- version of the policy. If no \`etag\` is provided in the call to
+-- \`setIamPolicy\`, then the existing policy is overwritten blindly.
+pEtag :: Lens' Policy (Maybe ByteString)
+pEtag
+  = lens _pEtag (\ s a -> s{_pEtag = a}) .
+      mapping _Bytes
+
+-- | Deprecated.
+pVersion :: Lens' Policy (Maybe Int32)
+pVersion
+  = lens _pVersion (\ s a -> s{_pVersion = a}) .
+      mapping _Coerce
+
+-- | Associates a list of \`members\` to a \`role\`. \`bindings\` with no
+-- members will result in an error.
+pBindings :: Lens' Policy [Binding]
+pBindings
+  = lens _pBindings (\ s a -> s{_pBindings = a}) .
+      _Default
+      . _Coerce
+
+instance FromJSON Policy where
+        parseJSON
+          = withObject "Policy"
+              (\ o ->
+                 Policy' <$>
+                   (o .:? "etag") <*> (o .:? "version") <*>
+                     (o .:? "bindings" .!= mempty))
+
+instance ToJSON Policy where
+        toJSON Policy'{..}
+          = object
+              (catMaybes
+                 [("etag" .=) <$> _pEtag,
+                  ("version" .=) <$> _pVersion,
+                  ("bindings" .=) <$> _pBindings])
+
+-- | Cross-service attributes for the location. For example
+-- {\"cloud.googleapis.com\/region\": \"us-east1\"}
+--
+-- /See:/ 'locationLabels' smart constructor.
+newtype LocationLabels = LocationLabels'
+    { _llAddtional :: HashMap Text Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'LocationLabels' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'llAddtional'
+locationLabels
+    :: HashMap Text Text -- ^ 'llAddtional'
+    -> LocationLabels
+locationLabels pLlAddtional_ =
+    LocationLabels'
+    { _llAddtional = _Coerce # pLlAddtional_
+    }
+
+llAddtional :: Lens' LocationLabels (HashMap Text Text)
+llAddtional
+  = lens _llAddtional (\ s a -> s{_llAddtional = a}) .
+      _Coerce
+
+instance FromJSON LocationLabels where
+        parseJSON
+          = withObject "LocationLabels"
+              (\ o -> LocationLabels' <$> (parseJSONObject o))
+
+instance ToJSON LocationLabels where
+        toJSON = toJSON . _llAddtional
+
+-- | Service-specific metadata. For example the available capacity at the
+-- given location.
+--
+-- /See:/ 'locationMetadata' smart constructor.
+newtype LocationMetadata = LocationMetadata'
+    { _lmAddtional :: HashMap Text JSONValue
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'LocationMetadata' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'lmAddtional'
+locationMetadata
+    :: HashMap Text JSONValue -- ^ 'lmAddtional'
+    -> LocationMetadata
+locationMetadata pLmAddtional_ =
+    LocationMetadata'
+    { _lmAddtional = _Coerce # pLmAddtional_
+    }
+
+-- | Properties of the object. Contains field \'type with type URL.
+lmAddtional :: Lens' LocationMetadata (HashMap Text JSONValue)
+lmAddtional
+  = lens _lmAddtional (\ s a -> s{_lmAddtional = a}) .
+      _Coerce
+
+instance FromJSON LocationMetadata where
+        parseJSON
+          = withObject "LocationMetadata"
+              (\ o -> LocationMetadata' <$> (parseJSONObject o))
+
+instance ToJSON LocationMetadata where
+        toJSON = toJSON . _lmAddtional
+
+-- | App Engine Routing. Defines routing characteristics specific to App
+-- Engine - service, version, and instance. For more information about
+-- services, versions, and instances see [An Overview of App
+-- Engine](https:\/\/cloud.google.com\/appengine\/docs\/python\/an-overview-of-app-engine),
+-- [Microservices Architecture on Google App
+-- Engine](https:\/\/cloud.google.com\/appengine\/docs\/python\/microservices-on-app-engine),
+-- [App Engine Standard request
+-- routing](https:\/\/cloud.google.com\/appengine\/docs\/standard\/python\/how-requests-are-routed),
+-- and [App Engine Flex request
+-- routing](https:\/\/cloud.google.com\/appengine\/docs\/flexible\/python\/how-requests-are-routed).
+--
+-- /See:/ 'appEngineRouting' smart constructor.
+data AppEngineRouting = AppEngineRouting'
+    { _aerService  :: !(Maybe Text)
+    , _aerVersion  :: !(Maybe Text)
+    , _aerHost     :: !(Maybe Text)
+    , _aerInstance :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'AppEngineRouting' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'aerService'
+--
+-- * 'aerVersion'
+--
+-- * 'aerHost'
+--
+-- * 'aerInstance'
+appEngineRouting
+    :: AppEngineRouting
+appEngineRouting =
+    AppEngineRouting'
+    { _aerService = Nothing
+    , _aerVersion = Nothing
+    , _aerHost = Nothing
+    , _aerInstance = Nothing
+    }
+
+-- | App service. By default, the task is sent to the service which is the
+-- default service when the task is attempted. For some queues or tasks
+-- which were created using the App Engine Task Queue API, host is not
+-- parsable into service, version, and instance. For example, some tasks
+-- which were created using the App Engine SDK use a custom domain name;
+-- custom domains are not parsed by Cloud Tasks. If host is not parsable,
+-- then service, version, and instance are the empty string.
+aerService :: Lens' AppEngineRouting (Maybe Text)
+aerService
+  = lens _aerService (\ s a -> s{_aerService = a})
+
+-- | App version. By default, the task is sent to the version which is the
+-- default version when the task is attempted. For some queues or tasks
+-- which were created using the App Engine Task Queue API, host is not
+-- parsable into service, version, and instance. For example, some tasks
+-- which were created using the App Engine SDK use a custom domain name;
+-- custom domains are not parsed by Cloud Tasks. If host is not parsable,
+-- then service, version, and instance are the empty string.
+aerVersion :: Lens' AppEngineRouting (Maybe Text)
+aerVersion
+  = lens _aerVersion (\ s a -> s{_aerVersion = a})
+
+-- | Output only. The host that the task is sent to. The host is constructed
+-- from the domain name of the app associated with the queue\'s project ID
+-- (for example .appspot.com), and the service, version, and instance.
+-- Tasks which were created using the App Engine SDK might have a custom
+-- domain name. For more information, see [How Requests are
+-- Routed](https:\/\/cloud.google.com\/appengine\/docs\/standard\/python\/how-requests-are-routed).
+aerHost :: Lens' AppEngineRouting (Maybe Text)
+aerHost = lens _aerHost (\ s a -> s{_aerHost = a})
+
+-- | App instance. By default, the task is sent to an instance which is
+-- available when the task is attempted. Requests can only be sent to a
+-- specific instance if [manual scaling is used in App Engine
+-- Standard](https:\/\/cloud.google.com\/appengine\/docs\/python\/an-overview-of-app-engine?hl=en_US#scaling_types_and_instance_classes).
+-- App Engine Flex does not support instances. For more information, see
+-- [App Engine Standard request
+-- routing](https:\/\/cloud.google.com\/appengine\/docs\/standard\/python\/how-requests-are-routed)
+-- and [App Engine Flex request
+-- routing](https:\/\/cloud.google.com\/appengine\/docs\/flexible\/python\/how-requests-are-routed).
+aerInstance :: Lens' AppEngineRouting (Maybe Text)
+aerInstance
+  = lens _aerInstance (\ s a -> s{_aerInstance = a})
+
+instance FromJSON AppEngineRouting where
+        parseJSON
+          = withObject "AppEngineRouting"
+              (\ o ->
+                 AppEngineRouting' <$>
+                   (o .:? "service") <*> (o .:? "version") <*>
+                     (o .:? "host")
+                     <*> (o .:? "instance"))
+
+instance ToJSON AppEngineRouting where
+        toJSON AppEngineRouting'{..}
+          = object
+              (catMaybes
+                 [("service" .=) <$> _aerService,
+                  ("version" .=) <$> _aerVersion,
+                  ("host" .=) <$> _aerHost,
+                  ("instance" .=) <$> _aerInstance])
+
+-- | App Engine HTTP request. The message defines the HTTP request that is
+-- sent to an App Engine app when the task is dispatched. This proto can
+-- only be used for tasks in a queue which has app_engine_http_queue set.
+-- Using AppEngineHttpRequest requires
+-- [\`appengine.applications.get\`](https:\/\/cloud.google.com\/appengine\/docs\/admin-api\/access-control)
+-- Google IAM permission for the project and the following scope:
+-- \`https:\/\/www.googleapis.com\/auth\/cloud-platform\` The task will be
+-- delivered to the App Engine app which belongs to the same project as the
+-- queue. For more information, see [How Requests are
+-- Routed](https:\/\/cloud.google.com\/appengine\/docs\/standard\/python\/how-requests-are-routed)
+-- and how routing is affected by [dispatch
+-- files](https:\/\/cloud.google.com\/appengine\/docs\/python\/config\/dispatchref).
+-- Traffic is encrypted during transport and never leaves Google
+-- datacenters. Because this traffic is carried over a communication
+-- mechanism internal to Google, you cannot explicitly set the protocol
+-- (for example, HTTP or HTTPS). The request to the handler, however, will
+-- appear to have used the HTTP protocol. The AppEngineRouting used to
+-- construct the URL that the task is delivered to can be set at the
+-- queue-level or task-level: * If set, app_engine_routing_override is used
+-- for all tasks in the queue, no matter what the setting is for the
+-- task-level app_engine_routing. The \`url\` that the task will be sent to
+-- is: * \`url =\` host \`+\` relative_uri Tasks can be dispatched to
+-- secure app handlers, unsecure app handlers, and URIs restricted with
+-- [\`login:
+-- admin\`](https:\/\/cloud.google.com\/appengine\/docs\/standard\/python\/config\/appref).
+-- Because tasks are not run as any user, they cannot be dispatched to URIs
+-- restricted with [\`login:
+-- required\`](https:\/\/cloud.google.com\/appengine\/docs\/standard\/python\/config\/appref)
+-- Task dispatches also do not follow redirects. The task attempt has
+-- succeeded if the app\'s request handler returns an HTTP response code in
+-- the range [\`200\` - \`299\`]. \`503\` is considered an App Engine
+-- system error instead of an application error. Requests returning error
+-- \`503\` will be retried regardless of retry configuration and not
+-- counted against retry counts. Any other response code or a failure to
+-- receive a response before the deadline is a failed attempt.
+--
+-- /See:/ 'appEngineHTTPRequest' smart constructor.
+data AppEngineHTTPRequest = AppEngineHTTPRequest'
+    { _aehttprHTTPMethod       :: !(Maybe AppEngineHTTPRequestHTTPMethod)
+    , _aehttprRelativeURI      :: !(Maybe Text)
+    , _aehttprBody             :: !(Maybe Bytes)
+    , _aehttprHeaders          :: !(Maybe AppEngineHTTPRequestHeaders)
+    , _aehttprAppEngineRouting :: !(Maybe AppEngineRouting)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'AppEngineHTTPRequest' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'aehttprHTTPMethod'
+--
+-- * 'aehttprRelativeURI'
+--
+-- * 'aehttprBody'
+--
+-- * 'aehttprHeaders'
+--
+-- * 'aehttprAppEngineRouting'
+appEngineHTTPRequest
+    :: AppEngineHTTPRequest
+appEngineHTTPRequest =
+    AppEngineHTTPRequest'
+    { _aehttprHTTPMethod = Nothing
+    , _aehttprRelativeURI = Nothing
+    , _aehttprBody = Nothing
+    , _aehttprHeaders = Nothing
+    , _aehttprAppEngineRouting = Nothing
+    }
+
+-- | The HTTP method to use for the request. The default is POST. The app\'s
+-- request handler for the task\'s target URL must be able to handle HTTP
+-- requests with this http_method, otherwise the task attempt will fail
+-- with error code 405 (Method Not Allowed). See [Writing a push task
+-- request
+-- handler](https:\/\/cloud.google.com\/appengine\/docs\/java\/taskqueue\/push\/creating-handlers#writing_a_push_task_request_handler)
+-- and the documentation for the request handlers in the language your app
+-- is written in e.g. [Python Request
+-- Handler](https:\/\/cloud.google.com\/appengine\/docs\/python\/tools\/webapp\/requesthandlerclass).
+aehttprHTTPMethod :: Lens' AppEngineHTTPRequest (Maybe AppEngineHTTPRequestHTTPMethod)
+aehttprHTTPMethod
+  = lens _aehttprHTTPMethod
+      (\ s a -> s{_aehttprHTTPMethod = a})
+
+-- | The relative URI. The relative URI must begin with \"\/\" and must be a
+-- valid HTTP relative URI. It can contain a path and query string
+-- arguments. If the relative URI is empty, then the root path \"\/\" will
+-- be used. No spaces are allowed, and the maximum length allowed is 2083
+-- characters.
+aehttprRelativeURI :: Lens' AppEngineHTTPRequest (Maybe Text)
+aehttprRelativeURI
+  = lens _aehttprRelativeURI
+      (\ s a -> s{_aehttprRelativeURI = a})
+
+-- | HTTP request body. A request body is allowed only if the HTTP method is
+-- POST or PUT. It is an error to set a body on a task with an incompatible
+-- HttpMethod.
+aehttprBody :: Lens' AppEngineHTTPRequest (Maybe ByteString)
+aehttprBody
+  = lens _aehttprBody (\ s a -> s{_aehttprBody = a}) .
+      mapping _Bytes
+
+-- | HTTP request headers. This map contains the header field names and
+-- values. Headers can be set when the task is created. Repeated headers
+-- are not supported but a header value can contain commas. Cloud Tasks
+-- sets some headers to default values: * \`User-Agent\`: By default, this
+-- header is \`\"AppEngine-Google;
+-- (+http:\/\/code.google.com\/appengine)\"\`. This header can be modified,
+-- but Cloud Tasks will append \`\"AppEngine-Google;
+-- (+http:\/\/code.google.com\/appengine)\"\` to the modified
+-- \`User-Agent\`. If the task has a body, Cloud Tasks sets the following
+-- headers: * \`Content-Type\`: By default, the \`Content-Type\` header is
+-- set to \`\"application\/octet-stream\"\`. The default can be overridden
+-- by explicitly setting \`Content-Type\` to a particular media type when
+-- the task is created. For example, \`Content-Type\` can be set to
+-- \`\"application\/json\"\`. * \`Content-Length\`: This is computed by
+-- Cloud Tasks. This value is output only. It cannot be changed. The
+-- headers below cannot be set or overridden: * \`Host\` * \`X-Google-*\` *
+-- \`X-AppEngine-*\` In addition, Cloud Tasks sets some headers when the
+-- task is dispatched, such as headers containing information about the
+-- task; see [request
+-- headers](https:\/\/cloud.google.com\/appengine\/docs\/python\/taskqueue\/push\/creating-handlers#reading_request_headers).
+-- These headers are set only when the task is dispatched, so they are not
+-- visible when the task is returned in a Cloud Tasks response. Although
+-- there is no specific limit for the maximum number of headers or the
+-- size, there is a limit on the maximum size of the Task. For more
+-- information, see the CreateTask documentation.
+aehttprHeaders :: Lens' AppEngineHTTPRequest (Maybe AppEngineHTTPRequestHeaders)
+aehttprHeaders
+  = lens _aehttprHeaders
+      (\ s a -> s{_aehttprHeaders = a})
+
+-- | Task-level setting for App Engine routing. If set,
+-- app_engine_routing_override is used for all tasks in the queue, no
+-- matter what the setting is for the task-level app_engine_routing.
+aehttprAppEngineRouting :: Lens' AppEngineHTTPRequest (Maybe AppEngineRouting)
+aehttprAppEngineRouting
+  = lens _aehttprAppEngineRouting
+      (\ s a -> s{_aehttprAppEngineRouting = a})
+
+instance FromJSON AppEngineHTTPRequest where
+        parseJSON
+          = withObject "AppEngineHTTPRequest"
+              (\ o ->
+                 AppEngineHTTPRequest' <$>
+                   (o .:? "httpMethod") <*> (o .:? "relativeUri") <*>
+                     (o .:? "body")
+                     <*> (o .:? "headers")
+                     <*> (o .:? "appEngineRouting"))
+
+instance ToJSON AppEngineHTTPRequest where
+        toJSON AppEngineHTTPRequest'{..}
+          = object
+              (catMaybes
+                 [("httpMethod" .=) <$> _aehttprHTTPMethod,
+                  ("relativeUri" .=) <$> _aehttprRelativeURI,
+                  ("body" .=) <$> _aehttprBody,
+                  ("headers" .=) <$> _aehttprHeaders,
+                  ("appEngineRouting" .=) <$>
+                    _aehttprAppEngineRouting])
+
+-- | Request message for ResumeQueue.
+--
+-- /See:/ 'resumeQueueRequest' smart constructor.
+data ResumeQueueRequest =
+    ResumeQueueRequest'
+    deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ResumeQueueRequest' with the minimum fields required to make a request.
+--
+resumeQueueRequest
+    :: ResumeQueueRequest
+resumeQueueRequest = ResumeQueueRequest'
+
+instance FromJSON ResumeQueueRequest where
+        parseJSON
+          = withObject "ResumeQueueRequest"
+              (\ o -> pure ResumeQueueRequest')
+
+instance ToJSON ResumeQueueRequest where
+        toJSON = const emptyObject
+
+-- | Associates \`members\` with a \`role\`.
+--
+-- /See:/ 'binding' smart constructor.
+data Binding = Binding'
+    { _bMembers   :: !(Maybe [Text])
+    , _bRole      :: !(Maybe Text)
+    , _bCondition :: !(Maybe Expr)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'Binding' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'bMembers'
+--
+-- * 'bRole'
+--
+-- * 'bCondition'
+binding
+    :: Binding
+binding =
+    Binding'
+    { _bMembers = Nothing
+    , _bRole = Nothing
+    , _bCondition = Nothing
+    }
+
+-- | Specifies the identities requesting access for a Cloud Platform
+-- resource. \`members\` can have the following values: * \`allUsers\`: A
+-- special identifier that represents anyone who is on the internet; with
+-- or without a Google account. * \`allAuthenticatedUsers\`: A special
+-- identifier that represents anyone who is authenticated with a Google
+-- account or a service account. * \`user:{emailid}\`: An email address
+-- that represents a specific Google account. For example,
+-- \`alice\'gmail.com\` . * \`serviceAccount:{emailid}\`: An email address
+-- that represents a service account. For example,
+-- \`my-other-app\'appspot.gserviceaccount.com\`. * \`group:{emailid}\`: An
+-- email address that represents a Google group. For example,
+-- \`admins\'example.com\`. * \`domain:{domain}\`: A Google Apps domain
+-- name that represents all the users of that domain. For example,
+-- \`google.com\` or \`example.com\`.
+bMembers :: Lens' Binding [Text]
+bMembers
+  = lens _bMembers (\ s a -> s{_bMembers = a}) .
+      _Default
+      . _Coerce
+
+-- | Role that is assigned to \`members\`. For example, \`roles\/viewer\`,
+-- \`roles\/editor\`, or \`roles\/owner\`.
+bRole :: Lens' Binding (Maybe Text)
+bRole = lens _bRole (\ s a -> s{_bRole = a})
+
+-- | Unimplemented. The condition that is associated with this binding. NOTE:
+-- an unsatisfied condition will not allow user access via current binding.
+-- Different bindings, including their conditions, are examined
+-- independently.
+bCondition :: Lens' Binding (Maybe Expr)
+bCondition
+  = lens _bCondition (\ s a -> s{_bCondition = a})
+
+instance FromJSON Binding where
+        parseJSON
+          = withObject "Binding"
+              (\ o ->
+                 Binding' <$>
+                   (o .:? "members" .!= mempty) <*> (o .:? "role") <*>
+                     (o .:? "condition"))
+
+instance ToJSON Binding where
+        toJSON Binding'{..}
+          = object
+              (catMaybes
+                 [("members" .=) <$> _bMembers,
+                  ("role" .=) <$> _bRole,
+                  ("condition" .=) <$> _bCondition])
diff --git a/gen/Network/Google/CloudTasks/Types/Sum.hs b/gen/Network/Google/CloudTasks/Types/Sum.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/CloudTasks/Types/Sum.hs
@@ -0,0 +1,296 @@
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE LambdaCase         #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- |
+-- Module      : Network.Google.CloudTasks.Types.Sum
+-- Copyright   : (c) 2015-2016 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.CloudTasks.Types.Sum where
+
+import           Network.Google.Prelude hiding (Bytes)
+
+-- | Output only. The view specifies which subset of the Task has been
+-- returned.
+data TaskView
+    = ViewUnspecified
+      -- ^ @VIEW_UNSPECIFIED@
+      -- Unspecified. Defaults to BASIC.
+    | Basic
+      -- ^ @BASIC@
+      -- The basic view omits fields which can be large or can contain sensitive
+      -- data. This view does not include the body in AppEngineHttpRequest.
+      -- Bodies are desirable to return only when needed, because they can be
+      -- large and because of the sensitivity of the data that you choose to
+      -- store in it.
+    | Full
+      -- ^ @FULL@
+      -- All information is returned. Authorization for FULL requires
+      -- \`cloudtasks.tasks.fullView\` [Google
+      -- IAM](https:\/\/cloud.google.com\/iam\/) permission on the Queue
+      -- resource.
+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
+
+instance Hashable TaskView
+
+instance FromHttpApiData TaskView where
+    parseQueryParam = \case
+        "VIEW_UNSPECIFIED" -> Right ViewUnspecified
+        "BASIC" -> Right Basic
+        "FULL" -> Right Full
+        x -> Left ("Unable to parse TaskView from: " <> x)
+
+instance ToHttpApiData TaskView where
+    toQueryParam = \case
+        ViewUnspecified -> "VIEW_UNSPECIFIED"
+        Basic -> "BASIC"
+        Full -> "FULL"
+
+instance FromJSON TaskView where
+    parseJSON = parseJSONText "TaskView"
+
+instance ToJSON TaskView where
+    toJSON = toJSONText
+
+-- | Output only. The state of the queue. \`state\` can only be changed by
+-- called PauseQueue, ResumeQueue, or uploading
+-- [queue.yaml\/xml](https:\/\/cloud.google.com\/appengine\/docs\/python\/config\/queueref).
+-- UpdateQueue cannot be used to change \`state\`.
+data QueueState
+    = StateUnspecified
+      -- ^ @STATE_UNSPECIFIED@
+      -- Unspecified state.
+    | Running
+      -- ^ @RUNNING@
+      -- The queue is running. Tasks can be dispatched. If the queue was created
+      -- using Cloud Tasks and the queue has had no activity (method calls or
+      -- task dispatches) for 30 days, the queue may take a few minutes to
+      -- re-activate. Some method calls may return NOT_FOUND and tasks may not be
+      -- dispatched for a few minutes until the queue has been re-activated.
+    | Paused
+      -- ^ @PAUSED@
+      -- Tasks are paused by the user. If the queue is paused then Cloud Tasks
+      -- will stop delivering tasks from it, but more tasks can still be added to
+      -- it by the user.
+    | Disabled
+      -- ^ @DISABLED@
+      -- The queue is disabled. A queue becomes \`DISABLED\` when
+      -- [queue.yaml](https:\/\/cloud.google.com\/appengine\/docs\/python\/config\/queueref)
+      -- or
+      -- [queue.xml](https:\/\/cloud.google.com\/appengine\/docs\/standard\/java\/config\/queueref)
+      -- is uploaded which does not contain the queue. You cannot directly
+      -- disable a queue. When a queue is disabled, tasks can still be added to a
+      -- queue but the tasks are not dispatched. To permanently delete this queue
+      -- and all of its tasks, call DeleteQueue.
+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
+
+instance Hashable QueueState
+
+instance FromHttpApiData QueueState where
+    parseQueryParam = \case
+        "STATE_UNSPECIFIED" -> Right StateUnspecified
+        "RUNNING" -> Right Running
+        "PAUSED" -> Right Paused
+        "DISABLED" -> Right Disabled
+        x -> Left ("Unable to parse QueueState from: " <> x)
+
+instance ToHttpApiData QueueState where
+    toQueryParam = \case
+        StateUnspecified -> "STATE_UNSPECIFIED"
+        Running -> "RUNNING"
+        Paused -> "PAUSED"
+        Disabled -> "DISABLED"
+
+instance FromJSON QueueState where
+    parseJSON = parseJSONText "QueueState"
+
+instance ToJSON QueueState where
+    toJSON = toJSONText
+
+-- | The response_view specifies which subset of the Task will be returned.
+-- By default response_view is BASIC; not all information is retrieved by
+-- default because some data, such as payloads, might be desirable to
+-- return only when needed because of its large size or because of the
+-- sensitivity of data that it contains. Authorization for FULL requires
+-- \`cloudtasks.tasks.fullView\` [Google
+-- IAM](https:\/\/cloud.google.com\/iam\/) permission on the Task resource.
+data CreateTaskRequestResponseView
+    = CTRRVViewUnspecified
+      -- ^ @VIEW_UNSPECIFIED@
+      -- Unspecified. Defaults to BASIC.
+    | CTRRVBasic
+      -- ^ @BASIC@
+      -- The basic view omits fields which can be large or can contain sensitive
+      -- data. This view does not include the body in AppEngineHttpRequest.
+      -- Bodies are desirable to return only when needed, because they can be
+      -- large and because of the sensitivity of the data that you choose to
+      -- store in it.
+    | CTRRVFull
+      -- ^ @FULL@
+      -- All information is returned. Authorization for FULL requires
+      -- \`cloudtasks.tasks.fullView\` [Google
+      -- IAM](https:\/\/cloud.google.com\/iam\/) permission on the Queue
+      -- resource.
+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
+
+instance Hashable CreateTaskRequestResponseView
+
+instance FromHttpApiData CreateTaskRequestResponseView where
+    parseQueryParam = \case
+        "VIEW_UNSPECIFIED" -> Right CTRRVViewUnspecified
+        "BASIC" -> Right CTRRVBasic
+        "FULL" -> Right CTRRVFull
+        x -> Left ("Unable to parse CreateTaskRequestResponseView from: " <> x)
+
+instance ToHttpApiData CreateTaskRequestResponseView where
+    toQueryParam = \case
+        CTRRVViewUnspecified -> "VIEW_UNSPECIFIED"
+        CTRRVBasic -> "BASIC"
+        CTRRVFull -> "FULL"
+
+instance FromJSON CreateTaskRequestResponseView where
+    parseJSON = parseJSONText "CreateTaskRequestResponseView"
+
+instance ToJSON CreateTaskRequestResponseView where
+    toJSON = toJSONText
+
+-- | The HTTP method to use for the request. The default is POST. The app\'s
+-- request handler for the task\'s target URL must be able to handle HTTP
+-- requests with this http_method, otherwise the task attempt will fail
+-- with error code 405 (Method Not Allowed). See [Writing a push task
+-- request
+-- handler](https:\/\/cloud.google.com\/appengine\/docs\/java\/taskqueue\/push\/creating-handlers#writing_a_push_task_request_handler)
+-- and the documentation for the request handlers in the language your app
+-- is written in e.g. [Python Request
+-- Handler](https:\/\/cloud.google.com\/appengine\/docs\/python\/tools\/webapp\/requesthandlerclass).
+data AppEngineHTTPRequestHTTPMethod
+    = HTTPMethodUnspecified
+      -- ^ @HTTP_METHOD_UNSPECIFIED@
+      -- HTTP method unspecified
+    | Post'
+      -- ^ @POST@
+      -- HTTP POST
+    | Get'
+      -- ^ @GET@
+      -- HTTP GET
+    | Head'
+      -- ^ @HEAD@
+      -- HTTP HEAD
+    | Put'
+      -- ^ @PUT@
+      -- HTTP PUT
+    | Delete'
+      -- ^ @DELETE@
+      -- HTTP DELETE
+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
+
+instance Hashable AppEngineHTTPRequestHTTPMethod
+
+instance FromHttpApiData AppEngineHTTPRequestHTTPMethod where
+    parseQueryParam = \case
+        "HTTP_METHOD_UNSPECIFIED" -> Right HTTPMethodUnspecified
+        "POST" -> Right Post'
+        "GET" -> Right Get'
+        "HEAD" -> Right Head'
+        "PUT" -> Right Put'
+        "DELETE" -> Right Delete'
+        x -> Left ("Unable to parse AppEngineHTTPRequestHTTPMethod from: " <> x)
+
+instance ToHttpApiData AppEngineHTTPRequestHTTPMethod where
+    toQueryParam = \case
+        HTTPMethodUnspecified -> "HTTP_METHOD_UNSPECIFIED"
+        Post' -> "POST"
+        Get' -> "GET"
+        Head' -> "HEAD"
+        Put' -> "PUT"
+        Delete' -> "DELETE"
+
+instance FromJSON AppEngineHTTPRequestHTTPMethod where
+    parseJSON = parseJSONText "AppEngineHTTPRequestHTTPMethod"
+
+instance ToJSON AppEngineHTTPRequestHTTPMethod where
+    toJSON = toJSONText
+
+-- | V1 error format.
+data Xgafv
+    = X1
+      -- ^ @1@
+      -- v1 error format
+    | X2
+      -- ^ @2@
+      -- v2 error format
+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
+
+instance Hashable Xgafv
+
+instance FromHttpApiData Xgafv where
+    parseQueryParam = \case
+        "1" -> Right X1
+        "2" -> Right X2
+        x -> Left ("Unable to parse Xgafv from: " <> x)
+
+instance ToHttpApiData Xgafv where
+    toQueryParam = \case
+        X1 -> "1"
+        X2 -> "2"
+
+instance FromJSON Xgafv where
+    parseJSON = parseJSONText "Xgafv"
+
+instance ToJSON Xgafv where
+    toJSON = toJSONText
+
+-- | The response_view specifies which subset of the Task will be returned.
+-- By default response_view is BASIC; not all information is retrieved by
+-- default because some data, such as payloads, might be desirable to
+-- return only when needed because of its large size or because of the
+-- sensitivity of data that it contains. Authorization for FULL requires
+-- \`cloudtasks.tasks.fullView\` [Google
+-- IAM](https:\/\/cloud.google.com\/iam\/) permission on the Task resource.
+data RunTaskRequestResponseView
+    = RTRRVViewUnspecified
+      -- ^ @VIEW_UNSPECIFIED@
+      -- Unspecified. Defaults to BASIC.
+    | RTRRVBasic
+      -- ^ @BASIC@
+      -- The basic view omits fields which can be large or can contain sensitive
+      -- data. This view does not include the body in AppEngineHttpRequest.
+      -- Bodies are desirable to return only when needed, because they can be
+      -- large and because of the sensitivity of the data that you choose to
+      -- store in it.
+    | RTRRVFull
+      -- ^ @FULL@
+      -- All information is returned. Authorization for FULL requires
+      -- \`cloudtasks.tasks.fullView\` [Google
+      -- IAM](https:\/\/cloud.google.com\/iam\/) permission on the Queue
+      -- resource.
+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
+
+instance Hashable RunTaskRequestResponseView
+
+instance FromHttpApiData RunTaskRequestResponseView where
+    parseQueryParam = \case
+        "VIEW_UNSPECIFIED" -> Right RTRRVViewUnspecified
+        "BASIC" -> Right RTRRVBasic
+        "FULL" -> Right RTRRVFull
+        x -> Left ("Unable to parse RunTaskRequestResponseView from: " <> x)
+
+instance ToHttpApiData RunTaskRequestResponseView where
+    toQueryParam = \case
+        RTRRVViewUnspecified -> "VIEW_UNSPECIFIED"
+        RTRRVBasic -> "BASIC"
+        RTRRVFull -> "FULL"
+
+instance FromJSON RunTaskRequestResponseView where
+    parseJSON = parseJSONText "RunTaskRequestResponseView"
+
+instance ToJSON RunTaskRequestResponseView where
+    toJSON = toJSONText
diff --git a/gen/Network/Google/Resource/CloudTasks/Projects/Locations/Get.hs b/gen/Network/Google/Resource/CloudTasks/Projects/Locations/Get.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/CloudTasks/Projects/Locations/Get.hs
@@ -0,0 +1,144 @@
+{-# 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.CloudTasks.Projects.Locations.Get
+-- Copyright   : (c) 2015-2016 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Gets information about a location.
+--
+-- /See:/ <https://cloud.google.com/tasks/ Cloud Tasks API Reference> for @cloudtasks.projects.locations.get@.
+module Network.Google.Resource.CloudTasks.Projects.Locations.Get
+    (
+    -- * REST Resource
+      ProjectsLocationsGetResource
+
+    -- * Creating a Request
+    , projectsLocationsGet
+    , ProjectsLocationsGet
+
+    -- * Request Lenses
+    , plgXgafv
+    , plgUploadProtocol
+    , plgAccessToken
+    , plgUploadType
+    , plgName
+    , plgCallback
+    ) where
+
+import           Network.Google.CloudTasks.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @cloudtasks.projects.locations.get@ method which the
+-- 'ProjectsLocationsGet' request conforms to.
+type ProjectsLocationsGetResource =
+     "v2beta3" :>
+       Capture "name" Text :>
+         QueryParam "$.xgafv" Xgafv :>
+           QueryParam "upload_protocol" Text :>
+             QueryParam "access_token" Text :>
+               QueryParam "uploadType" Text :>
+                 QueryParam "callback" Text :>
+                   QueryParam "alt" AltJSON :> Get '[JSON] Location
+
+-- | Gets information about a location.
+--
+-- /See:/ 'projectsLocationsGet' smart constructor.
+data ProjectsLocationsGet = ProjectsLocationsGet'
+    { _plgXgafv          :: !(Maybe Xgafv)
+    , _plgUploadProtocol :: !(Maybe Text)
+    , _plgAccessToken    :: !(Maybe Text)
+    , _plgUploadType     :: !(Maybe Text)
+    , _plgName           :: !Text
+    , _plgCallback       :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ProjectsLocationsGet' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'plgXgafv'
+--
+-- * 'plgUploadProtocol'
+--
+-- * 'plgAccessToken'
+--
+-- * 'plgUploadType'
+--
+-- * 'plgName'
+--
+-- * 'plgCallback'
+projectsLocationsGet
+    :: Text -- ^ 'plgName'
+    -> ProjectsLocationsGet
+projectsLocationsGet pPlgName_ =
+    ProjectsLocationsGet'
+    { _plgXgafv = Nothing
+    , _plgUploadProtocol = Nothing
+    , _plgAccessToken = Nothing
+    , _plgUploadType = Nothing
+    , _plgName = pPlgName_
+    , _plgCallback = Nothing
+    }
+
+-- | V1 error format.
+plgXgafv :: Lens' ProjectsLocationsGet (Maybe Xgafv)
+plgXgafv = lens _plgXgafv (\ s a -> s{_plgXgafv = a})
+
+-- | Upload protocol for media (e.g. \"raw\", \"multipart\").
+plgUploadProtocol :: Lens' ProjectsLocationsGet (Maybe Text)
+plgUploadProtocol
+  = lens _plgUploadProtocol
+      (\ s a -> s{_plgUploadProtocol = a})
+
+-- | OAuth access token.
+plgAccessToken :: Lens' ProjectsLocationsGet (Maybe Text)
+plgAccessToken
+  = lens _plgAccessToken
+      (\ s a -> s{_plgAccessToken = a})
+
+-- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
+plgUploadType :: Lens' ProjectsLocationsGet (Maybe Text)
+plgUploadType
+  = lens _plgUploadType
+      (\ s a -> s{_plgUploadType = a})
+
+-- | Resource name for the location.
+plgName :: Lens' ProjectsLocationsGet Text
+plgName = lens _plgName (\ s a -> s{_plgName = a})
+
+-- | JSONP
+plgCallback :: Lens' ProjectsLocationsGet (Maybe Text)
+plgCallback
+  = lens _plgCallback (\ s a -> s{_plgCallback = a})
+
+instance GoogleRequest ProjectsLocationsGet where
+        type Rs ProjectsLocationsGet = Location
+        type Scopes ProjectsLocationsGet =
+             '["https://www.googleapis.com/auth/cloud-platform"]
+        requestClient ProjectsLocationsGet'{..}
+          = go _plgName _plgXgafv _plgUploadProtocol
+              _plgAccessToken
+              _plgUploadType
+              _plgCallback
+              (Just AltJSON)
+              cloudTasksService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy ProjectsLocationsGetResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/CloudTasks/Projects/Locations/List.hs b/gen/Network/Google/Resource/CloudTasks/Projects/Locations/List.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/CloudTasks/Projects/Locations/List.hs
@@ -0,0 +1,183 @@
+{-# 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.CloudTasks.Projects.Locations.List
+-- Copyright   : (c) 2015-2016 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)
+--
+-- Lists information about the supported locations for this service.
+--
+-- /See:/ <https://cloud.google.com/tasks/ Cloud Tasks API Reference> for @cloudtasks.projects.locations.list@.
+module Network.Google.Resource.CloudTasks.Projects.Locations.List
+    (
+    -- * REST Resource
+      ProjectsLocationsListResource
+
+    -- * Creating a Request
+    , projectsLocationsList
+    , ProjectsLocationsList
+
+    -- * Request Lenses
+    , pllXgafv
+    , pllUploadProtocol
+    , pllAccessToken
+    , pllUploadType
+    , pllName
+    , pllFilter
+    , pllPageToken
+    , pllPageSize
+    , pllCallback
+    ) where
+
+import           Network.Google.CloudTasks.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @cloudtasks.projects.locations.list@ method which the
+-- 'ProjectsLocationsList' request conforms to.
+type ProjectsLocationsListResource =
+     "v2beta3" :>
+       Capture "name" Text :>
+         "locations" :>
+           QueryParam "$.xgafv" Xgafv :>
+             QueryParam "upload_protocol" Text :>
+               QueryParam "access_token" Text :>
+                 QueryParam "uploadType" Text :>
+                   QueryParam "filter" Text :>
+                     QueryParam "pageToken" Text :>
+                       QueryParam "pageSize" (Textual Int32) :>
+                         QueryParam "callback" Text :>
+                           QueryParam "alt" AltJSON :>
+                             Get '[JSON] ListLocationsResponse
+
+-- | Lists information about the supported locations for this service.
+--
+-- /See:/ 'projectsLocationsList' smart constructor.
+data ProjectsLocationsList = ProjectsLocationsList'
+    { _pllXgafv          :: !(Maybe Xgafv)
+    , _pllUploadProtocol :: !(Maybe Text)
+    , _pllAccessToken    :: !(Maybe Text)
+    , _pllUploadType     :: !(Maybe Text)
+    , _pllName           :: !Text
+    , _pllFilter         :: !(Maybe Text)
+    , _pllPageToken      :: !(Maybe Text)
+    , _pllPageSize       :: !(Maybe (Textual Int32))
+    , _pllCallback       :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ProjectsLocationsList' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'pllXgafv'
+--
+-- * 'pllUploadProtocol'
+--
+-- * 'pllAccessToken'
+--
+-- * 'pllUploadType'
+--
+-- * 'pllName'
+--
+-- * 'pllFilter'
+--
+-- * 'pllPageToken'
+--
+-- * 'pllPageSize'
+--
+-- * 'pllCallback'
+projectsLocationsList
+    :: Text -- ^ 'pllName'
+    -> ProjectsLocationsList
+projectsLocationsList pPllName_ =
+    ProjectsLocationsList'
+    { _pllXgafv = Nothing
+    , _pllUploadProtocol = Nothing
+    , _pllAccessToken = Nothing
+    , _pllUploadType = Nothing
+    , _pllName = pPllName_
+    , _pllFilter = Nothing
+    , _pllPageToken = Nothing
+    , _pllPageSize = Nothing
+    , _pllCallback = Nothing
+    }
+
+-- | V1 error format.
+pllXgafv :: Lens' ProjectsLocationsList (Maybe Xgafv)
+pllXgafv = lens _pllXgafv (\ s a -> s{_pllXgafv = a})
+
+-- | Upload protocol for media (e.g. \"raw\", \"multipart\").
+pllUploadProtocol :: Lens' ProjectsLocationsList (Maybe Text)
+pllUploadProtocol
+  = lens _pllUploadProtocol
+      (\ s a -> s{_pllUploadProtocol = a})
+
+-- | OAuth access token.
+pllAccessToken :: Lens' ProjectsLocationsList (Maybe Text)
+pllAccessToken
+  = lens _pllAccessToken
+      (\ s a -> s{_pllAccessToken = a})
+
+-- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
+pllUploadType :: Lens' ProjectsLocationsList (Maybe Text)
+pllUploadType
+  = lens _pllUploadType
+      (\ s a -> s{_pllUploadType = a})
+
+-- | The resource that owns the locations collection, if applicable.
+pllName :: Lens' ProjectsLocationsList Text
+pllName = lens _pllName (\ s a -> s{_pllName = a})
+
+-- | The standard list filter.
+pllFilter :: Lens' ProjectsLocationsList (Maybe Text)
+pllFilter
+  = lens _pllFilter (\ s a -> s{_pllFilter = a})
+
+-- | The standard list page token.
+pllPageToken :: Lens' ProjectsLocationsList (Maybe Text)
+pllPageToken
+  = lens _pllPageToken (\ s a -> s{_pllPageToken = a})
+
+-- | The standard list page size.
+pllPageSize :: Lens' ProjectsLocationsList (Maybe Int32)
+pllPageSize
+  = lens _pllPageSize (\ s a -> s{_pllPageSize = a}) .
+      mapping _Coerce
+
+-- | JSONP
+pllCallback :: Lens' ProjectsLocationsList (Maybe Text)
+pllCallback
+  = lens _pllCallback (\ s a -> s{_pllCallback = a})
+
+instance GoogleRequest ProjectsLocationsList where
+        type Rs ProjectsLocationsList = ListLocationsResponse
+        type Scopes ProjectsLocationsList =
+             '["https://www.googleapis.com/auth/cloud-platform"]
+        requestClient ProjectsLocationsList'{..}
+          = go _pllName _pllXgafv _pllUploadProtocol
+              _pllAccessToken
+              _pllUploadType
+              _pllFilter
+              _pllPageToken
+              _pllPageSize
+              _pllCallback
+              (Just AltJSON)
+              cloudTasksService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy ProjectsLocationsListResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/CloudTasks/Projects/Locations/Queues/Create.hs b/gen/Network/Google/Resource/CloudTasks/Projects/Locations/Queues/Create.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/CloudTasks/Projects/Locations/Queues/Create.hs
@@ -0,0 +1,179 @@
+{-# 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.CloudTasks.Projects.Locations.Queues.Create
+-- Copyright   : (c) 2015-2016 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Creates a queue. Queues created with this method allow tasks to live for
+-- a maximum of 31 days. After a task is 31 days old, the task will be
+-- deleted regardless of whether it was dispatched or not. WARNING: Using
+-- this method may have unintended side effects if you are using an App
+-- Engine \`queue.yaml\` or \`queue.xml\` file to manage your queues. Read
+-- [Overview of Queue Management and
+-- queue.yaml](https:\/\/cloud.google.com\/tasks\/docs\/queue-yaml) before
+-- using this method.
+--
+-- /See:/ <https://cloud.google.com/tasks/ Cloud Tasks API Reference> for @cloudtasks.projects.locations.queues.create@.
+module Network.Google.Resource.CloudTasks.Projects.Locations.Queues.Create
+    (
+    -- * REST Resource
+      ProjectsLocationsQueuesCreateResource
+
+    -- * Creating a Request
+    , projectsLocationsQueuesCreate
+    , ProjectsLocationsQueuesCreate
+
+    -- * Request Lenses
+    , plqcParent
+    , plqcXgafv
+    , plqcUploadProtocol
+    , plqcAccessToken
+    , plqcUploadType
+    , plqcPayload
+    , plqcCallback
+    ) where
+
+import           Network.Google.CloudTasks.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @cloudtasks.projects.locations.queues.create@ method which the
+-- 'ProjectsLocationsQueuesCreate' request conforms to.
+type ProjectsLocationsQueuesCreateResource =
+     "v2beta3" :>
+       Capture "parent" Text :>
+         "queues" :>
+           QueryParam "$.xgafv" Xgafv :>
+             QueryParam "upload_protocol" Text :>
+               QueryParam "access_token" Text :>
+                 QueryParam "uploadType" Text :>
+                   QueryParam "callback" Text :>
+                     QueryParam "alt" AltJSON :>
+                       ReqBody '[JSON] Queue :> Post '[JSON] Queue
+
+-- | Creates a queue. Queues created with this method allow tasks to live for
+-- a maximum of 31 days. After a task is 31 days old, the task will be
+-- deleted regardless of whether it was dispatched or not. WARNING: Using
+-- this method may have unintended side effects if you are using an App
+-- Engine \`queue.yaml\` or \`queue.xml\` file to manage your queues. Read
+-- [Overview of Queue Management and
+-- queue.yaml](https:\/\/cloud.google.com\/tasks\/docs\/queue-yaml) before
+-- using this method.
+--
+-- /See:/ 'projectsLocationsQueuesCreate' smart constructor.
+data ProjectsLocationsQueuesCreate = ProjectsLocationsQueuesCreate'
+    { _plqcParent         :: !Text
+    , _plqcXgafv          :: !(Maybe Xgafv)
+    , _plqcUploadProtocol :: !(Maybe Text)
+    , _plqcAccessToken    :: !(Maybe Text)
+    , _plqcUploadType     :: !(Maybe Text)
+    , _plqcPayload        :: !Queue
+    , _plqcCallback       :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ProjectsLocationsQueuesCreate' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'plqcParent'
+--
+-- * 'plqcXgafv'
+--
+-- * 'plqcUploadProtocol'
+--
+-- * 'plqcAccessToken'
+--
+-- * 'plqcUploadType'
+--
+-- * 'plqcPayload'
+--
+-- * 'plqcCallback'
+projectsLocationsQueuesCreate
+    :: Text -- ^ 'plqcParent'
+    -> Queue -- ^ 'plqcPayload'
+    -> ProjectsLocationsQueuesCreate
+projectsLocationsQueuesCreate pPlqcParent_ pPlqcPayload_ =
+    ProjectsLocationsQueuesCreate'
+    { _plqcParent = pPlqcParent_
+    , _plqcXgafv = Nothing
+    , _plqcUploadProtocol = Nothing
+    , _plqcAccessToken = Nothing
+    , _plqcUploadType = Nothing
+    , _plqcPayload = pPlqcPayload_
+    , _plqcCallback = Nothing
+    }
+
+-- | Required. The location name in which the queue will be created. For
+-- example: \`projects\/PROJECT_ID\/locations\/LOCATION_ID\` The list of
+-- allowed locations can be obtained by calling Cloud Tasks\'
+-- implementation of ListLocations.
+plqcParent :: Lens' ProjectsLocationsQueuesCreate Text
+plqcParent
+  = lens _plqcParent (\ s a -> s{_plqcParent = a})
+
+-- | V1 error format.
+plqcXgafv :: Lens' ProjectsLocationsQueuesCreate (Maybe Xgafv)
+plqcXgafv
+  = lens _plqcXgafv (\ s a -> s{_plqcXgafv = a})
+
+-- | Upload protocol for media (e.g. \"raw\", \"multipart\").
+plqcUploadProtocol :: Lens' ProjectsLocationsQueuesCreate (Maybe Text)
+plqcUploadProtocol
+  = lens _plqcUploadProtocol
+      (\ s a -> s{_plqcUploadProtocol = a})
+
+-- | OAuth access token.
+plqcAccessToken :: Lens' ProjectsLocationsQueuesCreate (Maybe Text)
+plqcAccessToken
+  = lens _plqcAccessToken
+      (\ s a -> s{_plqcAccessToken = a})
+
+-- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
+plqcUploadType :: Lens' ProjectsLocationsQueuesCreate (Maybe Text)
+plqcUploadType
+  = lens _plqcUploadType
+      (\ s a -> s{_plqcUploadType = a})
+
+-- | Multipart request metadata.
+plqcPayload :: Lens' ProjectsLocationsQueuesCreate Queue
+plqcPayload
+  = lens _plqcPayload (\ s a -> s{_plqcPayload = a})
+
+-- | JSONP
+plqcCallback :: Lens' ProjectsLocationsQueuesCreate (Maybe Text)
+plqcCallback
+  = lens _plqcCallback (\ s a -> s{_plqcCallback = a})
+
+instance GoogleRequest ProjectsLocationsQueuesCreate
+         where
+        type Rs ProjectsLocationsQueuesCreate = Queue
+        type Scopes ProjectsLocationsQueuesCreate =
+             '["https://www.googleapis.com/auth/cloud-platform"]
+        requestClient ProjectsLocationsQueuesCreate'{..}
+          = go _plqcParent _plqcXgafv _plqcUploadProtocol
+              _plqcAccessToken
+              _plqcUploadType
+              _plqcCallback
+              (Just AltJSON)
+              _plqcPayload
+              cloudTasksService
+          where go
+                  = buildClient
+                      (Proxy ::
+                         Proxy ProjectsLocationsQueuesCreateResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/CloudTasks/Projects/Locations/Queues/Delete.hs b/gen/Network/Google/Resource/CloudTasks/Projects/Locations/Queues/Delete.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/CloudTasks/Projects/Locations/Queues/Delete.hs
@@ -0,0 +1,160 @@
+{-# 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.CloudTasks.Projects.Locations.Queues.Delete
+-- Copyright   : (c) 2015-2016 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Deletes a queue. This command will delete the queue even if it has tasks
+-- in it. Note: If you delete a queue, a queue with the same name can\'t be
+-- created for 7 days. WARNING: Using this method may have unintended side
+-- effects if you are using an App Engine \`queue.yaml\` or \`queue.xml\`
+-- file to manage your queues. Read [Overview of Queue Management and
+-- queue.yaml](https:\/\/cloud.google.com\/tasks\/docs\/queue-yaml) before
+-- using this method.
+--
+-- /See:/ <https://cloud.google.com/tasks/ Cloud Tasks API Reference> for @cloudtasks.projects.locations.queues.delete@.
+module Network.Google.Resource.CloudTasks.Projects.Locations.Queues.Delete
+    (
+    -- * REST Resource
+      ProjectsLocationsQueuesDeleteResource
+
+    -- * Creating a Request
+    , projectsLocationsQueuesDelete
+    , ProjectsLocationsQueuesDelete
+
+    -- * Request Lenses
+    , plqdXgafv
+    , plqdUploadProtocol
+    , plqdAccessToken
+    , plqdUploadType
+    , plqdName
+    , plqdCallback
+    ) where
+
+import           Network.Google.CloudTasks.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @cloudtasks.projects.locations.queues.delete@ method which the
+-- 'ProjectsLocationsQueuesDelete' request conforms to.
+type ProjectsLocationsQueuesDeleteResource =
+     "v2beta3" :>
+       Capture "name" Text :>
+         QueryParam "$.xgafv" Xgafv :>
+           QueryParam "upload_protocol" Text :>
+             QueryParam "access_token" Text :>
+               QueryParam "uploadType" Text :>
+                 QueryParam "callback" Text :>
+                   QueryParam "alt" AltJSON :> Delete '[JSON] Empty
+
+-- | Deletes a queue. This command will delete the queue even if it has tasks
+-- in it. Note: If you delete a queue, a queue with the same name can\'t be
+-- created for 7 days. WARNING: Using this method may have unintended side
+-- effects if you are using an App Engine \`queue.yaml\` or \`queue.xml\`
+-- file to manage your queues. Read [Overview of Queue Management and
+-- queue.yaml](https:\/\/cloud.google.com\/tasks\/docs\/queue-yaml) before
+-- using this method.
+--
+-- /See:/ 'projectsLocationsQueuesDelete' smart constructor.
+data ProjectsLocationsQueuesDelete = ProjectsLocationsQueuesDelete'
+    { _plqdXgafv          :: !(Maybe Xgafv)
+    , _plqdUploadProtocol :: !(Maybe Text)
+    , _plqdAccessToken    :: !(Maybe Text)
+    , _plqdUploadType     :: !(Maybe Text)
+    , _plqdName           :: !Text
+    , _plqdCallback       :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ProjectsLocationsQueuesDelete' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'plqdXgafv'
+--
+-- * 'plqdUploadProtocol'
+--
+-- * 'plqdAccessToken'
+--
+-- * 'plqdUploadType'
+--
+-- * 'plqdName'
+--
+-- * 'plqdCallback'
+projectsLocationsQueuesDelete
+    :: Text -- ^ 'plqdName'
+    -> ProjectsLocationsQueuesDelete
+projectsLocationsQueuesDelete pPlqdName_ =
+    ProjectsLocationsQueuesDelete'
+    { _plqdXgafv = Nothing
+    , _plqdUploadProtocol = Nothing
+    , _plqdAccessToken = Nothing
+    , _plqdUploadType = Nothing
+    , _plqdName = pPlqdName_
+    , _plqdCallback = Nothing
+    }
+
+-- | V1 error format.
+plqdXgafv :: Lens' ProjectsLocationsQueuesDelete (Maybe Xgafv)
+plqdXgafv
+  = lens _plqdXgafv (\ s a -> s{_plqdXgafv = a})
+
+-- | Upload protocol for media (e.g. \"raw\", \"multipart\").
+plqdUploadProtocol :: Lens' ProjectsLocationsQueuesDelete (Maybe Text)
+plqdUploadProtocol
+  = lens _plqdUploadProtocol
+      (\ s a -> s{_plqdUploadProtocol = a})
+
+-- | OAuth access token.
+plqdAccessToken :: Lens' ProjectsLocationsQueuesDelete (Maybe Text)
+plqdAccessToken
+  = lens _plqdAccessToken
+      (\ s a -> s{_plqdAccessToken = a})
+
+-- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
+plqdUploadType :: Lens' ProjectsLocationsQueuesDelete (Maybe Text)
+plqdUploadType
+  = lens _plqdUploadType
+      (\ s a -> s{_plqdUploadType = a})
+
+-- | Required. The queue name. For example:
+-- \`projects\/PROJECT_ID\/locations\/LOCATION_ID\/queues\/QUEUE_ID\`
+plqdName :: Lens' ProjectsLocationsQueuesDelete Text
+plqdName = lens _plqdName (\ s a -> s{_plqdName = a})
+
+-- | JSONP
+plqdCallback :: Lens' ProjectsLocationsQueuesDelete (Maybe Text)
+plqdCallback
+  = lens _plqdCallback (\ s a -> s{_plqdCallback = a})
+
+instance GoogleRequest ProjectsLocationsQueuesDelete
+         where
+        type Rs ProjectsLocationsQueuesDelete = Empty
+        type Scopes ProjectsLocationsQueuesDelete =
+             '["https://www.googleapis.com/auth/cloud-platform"]
+        requestClient ProjectsLocationsQueuesDelete'{..}
+          = go _plqdName _plqdXgafv _plqdUploadProtocol
+              _plqdAccessToken
+              _plqdUploadType
+              _plqdCallback
+              (Just AltJSON)
+              cloudTasksService
+          where go
+                  = buildClient
+                      (Proxy ::
+                         Proxy ProjectsLocationsQueuesDeleteResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/CloudTasks/Projects/Locations/Queues/Get.hs b/gen/Network/Google/Resource/CloudTasks/Projects/Locations/Queues/Get.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/CloudTasks/Projects/Locations/Queues/Get.hs
@@ -0,0 +1,147 @@
+{-# 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.CloudTasks.Projects.Locations.Queues.Get
+-- Copyright   : (c) 2015-2016 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Gets a queue.
+--
+-- /See:/ <https://cloud.google.com/tasks/ Cloud Tasks API Reference> for @cloudtasks.projects.locations.queues.get@.
+module Network.Google.Resource.CloudTasks.Projects.Locations.Queues.Get
+    (
+    -- * REST Resource
+      ProjectsLocationsQueuesGetResource
+
+    -- * Creating a Request
+    , projectsLocationsQueuesGet
+    , ProjectsLocationsQueuesGet
+
+    -- * Request Lenses
+    , plqgXgafv
+    , plqgUploadProtocol
+    , plqgAccessToken
+    , plqgUploadType
+    , plqgName
+    , plqgCallback
+    ) where
+
+import           Network.Google.CloudTasks.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @cloudtasks.projects.locations.queues.get@ method which the
+-- 'ProjectsLocationsQueuesGet' request conforms to.
+type ProjectsLocationsQueuesGetResource =
+     "v2beta3" :>
+       Capture "name" Text :>
+         QueryParam "$.xgafv" Xgafv :>
+           QueryParam "upload_protocol" Text :>
+             QueryParam "access_token" Text :>
+               QueryParam "uploadType" Text :>
+                 QueryParam "callback" Text :>
+                   QueryParam "alt" AltJSON :> Get '[JSON] Queue
+
+-- | Gets a queue.
+--
+-- /See:/ 'projectsLocationsQueuesGet' smart constructor.
+data ProjectsLocationsQueuesGet = ProjectsLocationsQueuesGet'
+    { _plqgXgafv          :: !(Maybe Xgafv)
+    , _plqgUploadProtocol :: !(Maybe Text)
+    , _plqgAccessToken    :: !(Maybe Text)
+    , _plqgUploadType     :: !(Maybe Text)
+    , _plqgName           :: !Text
+    , _plqgCallback       :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ProjectsLocationsQueuesGet' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'plqgXgafv'
+--
+-- * 'plqgUploadProtocol'
+--
+-- * 'plqgAccessToken'
+--
+-- * 'plqgUploadType'
+--
+-- * 'plqgName'
+--
+-- * 'plqgCallback'
+projectsLocationsQueuesGet
+    :: Text -- ^ 'plqgName'
+    -> ProjectsLocationsQueuesGet
+projectsLocationsQueuesGet pPlqgName_ =
+    ProjectsLocationsQueuesGet'
+    { _plqgXgafv = Nothing
+    , _plqgUploadProtocol = Nothing
+    , _plqgAccessToken = Nothing
+    , _plqgUploadType = Nothing
+    , _plqgName = pPlqgName_
+    , _plqgCallback = Nothing
+    }
+
+-- | V1 error format.
+plqgXgafv :: Lens' ProjectsLocationsQueuesGet (Maybe Xgafv)
+plqgXgafv
+  = lens _plqgXgafv (\ s a -> s{_plqgXgafv = a})
+
+-- | Upload protocol for media (e.g. \"raw\", \"multipart\").
+plqgUploadProtocol :: Lens' ProjectsLocationsQueuesGet (Maybe Text)
+plqgUploadProtocol
+  = lens _plqgUploadProtocol
+      (\ s a -> s{_plqgUploadProtocol = a})
+
+-- | OAuth access token.
+plqgAccessToken :: Lens' ProjectsLocationsQueuesGet (Maybe Text)
+plqgAccessToken
+  = lens _plqgAccessToken
+      (\ s a -> s{_plqgAccessToken = a})
+
+-- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
+plqgUploadType :: Lens' ProjectsLocationsQueuesGet (Maybe Text)
+plqgUploadType
+  = lens _plqgUploadType
+      (\ s a -> s{_plqgUploadType = a})
+
+-- | Required. The resource name of the queue. For example:
+-- \`projects\/PROJECT_ID\/locations\/LOCATION_ID\/queues\/QUEUE_ID\`
+plqgName :: Lens' ProjectsLocationsQueuesGet Text
+plqgName = lens _plqgName (\ s a -> s{_plqgName = a})
+
+-- | JSONP
+plqgCallback :: Lens' ProjectsLocationsQueuesGet (Maybe Text)
+plqgCallback
+  = lens _plqgCallback (\ s a -> s{_plqgCallback = a})
+
+instance GoogleRequest ProjectsLocationsQueuesGet
+         where
+        type Rs ProjectsLocationsQueuesGet = Queue
+        type Scopes ProjectsLocationsQueuesGet =
+             '["https://www.googleapis.com/auth/cloud-platform"]
+        requestClient ProjectsLocationsQueuesGet'{..}
+          = go _plqgName _plqgXgafv _plqgUploadProtocol
+              _plqgAccessToken
+              _plqgUploadType
+              _plqgCallback
+              (Just AltJSON)
+              cloudTasksService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy ProjectsLocationsQueuesGetResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/CloudTasks/Projects/Locations/Queues/GetIAMPolicy.hs b/gen/Network/Google/Resource/CloudTasks/Projects/Locations/Queues/GetIAMPolicy.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/CloudTasks/Projects/Locations/Queues/GetIAMPolicy.hs
@@ -0,0 +1,176 @@
+{-# 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.CloudTasks.Projects.Locations.Queues.GetIAMPolicy
+-- Copyright   : (c) 2015-2016 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Gets the access control policy for a Queue. Returns an empty policy if
+-- the resource exists and does not have a policy set. Authorization
+-- requires the following [Google IAM](https:\/\/cloud.google.com\/iam)
+-- permission on the specified resource parent: *
+-- \`cloudtasks.queues.getIamPolicy\`
+--
+-- /See:/ <https://cloud.google.com/tasks/ Cloud Tasks API Reference> for @cloudtasks.projects.locations.queues.getIamPolicy@.
+module Network.Google.Resource.CloudTasks.Projects.Locations.Queues.GetIAMPolicy
+    (
+    -- * REST Resource
+      ProjectsLocationsQueuesGetIAMPolicyResource
+
+    -- * Creating a Request
+    , projectsLocationsQueuesGetIAMPolicy
+    , ProjectsLocationsQueuesGetIAMPolicy
+
+    -- * Request Lenses
+    , plqgipXgafv
+    , plqgipUploadProtocol
+    , plqgipAccessToken
+    , plqgipUploadType
+    , plqgipPayload
+    , plqgipResource
+    , plqgipCallback
+    ) where
+
+import           Network.Google.CloudTasks.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @cloudtasks.projects.locations.queues.getIamPolicy@ method which the
+-- 'ProjectsLocationsQueuesGetIAMPolicy' request conforms to.
+type ProjectsLocationsQueuesGetIAMPolicyResource =
+     "v2beta3" :>
+       CaptureMode "resource" "getIamPolicy" Text :>
+         QueryParam "$.xgafv" Xgafv :>
+           QueryParam "upload_protocol" Text :>
+             QueryParam "access_token" Text :>
+               QueryParam "uploadType" Text :>
+                 QueryParam "callback" Text :>
+                   QueryParam "alt" AltJSON :>
+                     ReqBody '[JSON] GetIAMPolicyRequest :>
+                       Post '[JSON] Policy
+
+-- | Gets the access control policy for a Queue. Returns an empty policy if
+-- the resource exists and does not have a policy set. Authorization
+-- requires the following [Google IAM](https:\/\/cloud.google.com\/iam)
+-- permission on the specified resource parent: *
+-- \`cloudtasks.queues.getIamPolicy\`
+--
+-- /See:/ 'projectsLocationsQueuesGetIAMPolicy' smart constructor.
+data ProjectsLocationsQueuesGetIAMPolicy = ProjectsLocationsQueuesGetIAMPolicy'
+    { _plqgipXgafv          :: !(Maybe Xgafv)
+    , _plqgipUploadProtocol :: !(Maybe Text)
+    , _plqgipAccessToken    :: !(Maybe Text)
+    , _plqgipUploadType     :: !(Maybe Text)
+    , _plqgipPayload        :: !GetIAMPolicyRequest
+    , _plqgipResource       :: !Text
+    , _plqgipCallback       :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ProjectsLocationsQueuesGetIAMPolicy' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'plqgipXgafv'
+--
+-- * 'plqgipUploadProtocol'
+--
+-- * 'plqgipAccessToken'
+--
+-- * 'plqgipUploadType'
+--
+-- * 'plqgipPayload'
+--
+-- * 'plqgipResource'
+--
+-- * 'plqgipCallback'
+projectsLocationsQueuesGetIAMPolicy
+    :: GetIAMPolicyRequest -- ^ 'plqgipPayload'
+    -> Text -- ^ 'plqgipResource'
+    -> ProjectsLocationsQueuesGetIAMPolicy
+projectsLocationsQueuesGetIAMPolicy pPlqgipPayload_ pPlqgipResource_ =
+    ProjectsLocationsQueuesGetIAMPolicy'
+    { _plqgipXgafv = Nothing
+    , _plqgipUploadProtocol = Nothing
+    , _plqgipAccessToken = Nothing
+    , _plqgipUploadType = Nothing
+    , _plqgipPayload = pPlqgipPayload_
+    , _plqgipResource = pPlqgipResource_
+    , _plqgipCallback = Nothing
+    }
+
+-- | V1 error format.
+plqgipXgafv :: Lens' ProjectsLocationsQueuesGetIAMPolicy (Maybe Xgafv)
+plqgipXgafv
+  = lens _plqgipXgafv (\ s a -> s{_plqgipXgafv = a})
+
+-- | Upload protocol for media (e.g. \"raw\", \"multipart\").
+plqgipUploadProtocol :: Lens' ProjectsLocationsQueuesGetIAMPolicy (Maybe Text)
+plqgipUploadProtocol
+  = lens _plqgipUploadProtocol
+      (\ s a -> s{_plqgipUploadProtocol = a})
+
+-- | OAuth access token.
+plqgipAccessToken :: Lens' ProjectsLocationsQueuesGetIAMPolicy (Maybe Text)
+plqgipAccessToken
+  = lens _plqgipAccessToken
+      (\ s a -> s{_plqgipAccessToken = a})
+
+-- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
+plqgipUploadType :: Lens' ProjectsLocationsQueuesGetIAMPolicy (Maybe Text)
+plqgipUploadType
+  = lens _plqgipUploadType
+      (\ s a -> s{_plqgipUploadType = a})
+
+-- | Multipart request metadata.
+plqgipPayload :: Lens' ProjectsLocationsQueuesGetIAMPolicy GetIAMPolicyRequest
+plqgipPayload
+  = lens _plqgipPayload
+      (\ s a -> s{_plqgipPayload = a})
+
+-- | REQUIRED: The resource for which the policy is being requested. See the
+-- operation documentation for the appropriate value for this field.
+plqgipResource :: Lens' ProjectsLocationsQueuesGetIAMPolicy Text
+plqgipResource
+  = lens _plqgipResource
+      (\ s a -> s{_plqgipResource = a})
+
+-- | JSONP
+plqgipCallback :: Lens' ProjectsLocationsQueuesGetIAMPolicy (Maybe Text)
+plqgipCallback
+  = lens _plqgipCallback
+      (\ s a -> s{_plqgipCallback = a})
+
+instance GoogleRequest
+         ProjectsLocationsQueuesGetIAMPolicy where
+        type Rs ProjectsLocationsQueuesGetIAMPolicy = Policy
+        type Scopes ProjectsLocationsQueuesGetIAMPolicy =
+             '["https://www.googleapis.com/auth/cloud-platform"]
+        requestClient
+          ProjectsLocationsQueuesGetIAMPolicy'{..}
+          = go _plqgipResource _plqgipXgafv
+              _plqgipUploadProtocol
+              _plqgipAccessToken
+              _plqgipUploadType
+              _plqgipCallback
+              (Just AltJSON)
+              _plqgipPayload
+              cloudTasksService
+          where go
+                  = buildClient
+                      (Proxy ::
+                         Proxy ProjectsLocationsQueuesGetIAMPolicyResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/CloudTasks/Projects/Locations/Queues/List.hs b/gen/Network/Google/Resource/CloudTasks/Projects/Locations/Queues/List.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/CloudTasks/Projects/Locations/Queues/List.hs
@@ -0,0 +1,202 @@
+{-# 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.CloudTasks.Projects.Locations.Queues.List
+-- Copyright   : (c) 2015-2016 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)
+--
+-- Lists queues. Queues are returned in lexicographical order.
+--
+-- /See:/ <https://cloud.google.com/tasks/ Cloud Tasks API Reference> for @cloudtasks.projects.locations.queues.list@.
+module Network.Google.Resource.CloudTasks.Projects.Locations.Queues.List
+    (
+    -- * REST Resource
+      ProjectsLocationsQueuesListResource
+
+    -- * Creating a Request
+    , projectsLocationsQueuesList
+    , ProjectsLocationsQueuesList
+
+    -- * Request Lenses
+    , plqlParent
+    , plqlXgafv
+    , plqlUploadProtocol
+    , plqlAccessToken
+    , plqlUploadType
+    , plqlFilter
+    , plqlPageToken
+    , plqlPageSize
+    , plqlCallback
+    ) where
+
+import           Network.Google.CloudTasks.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @cloudtasks.projects.locations.queues.list@ method which the
+-- 'ProjectsLocationsQueuesList' request conforms to.
+type ProjectsLocationsQueuesListResource =
+     "v2beta3" :>
+       Capture "parent" Text :>
+         "queues" :>
+           QueryParam "$.xgafv" Xgafv :>
+             QueryParam "upload_protocol" Text :>
+               QueryParam "access_token" Text :>
+                 QueryParam "uploadType" Text :>
+                   QueryParam "filter" Text :>
+                     QueryParam "pageToken" Text :>
+                       QueryParam "pageSize" (Textual Int32) :>
+                         QueryParam "callback" Text :>
+                           QueryParam "alt" AltJSON :>
+                             Get '[JSON] ListQueuesResponse
+
+-- | Lists queues. Queues are returned in lexicographical order.
+--
+-- /See:/ 'projectsLocationsQueuesList' smart constructor.
+data ProjectsLocationsQueuesList = ProjectsLocationsQueuesList'
+    { _plqlParent         :: !Text
+    , _plqlXgafv          :: !(Maybe Xgafv)
+    , _plqlUploadProtocol :: !(Maybe Text)
+    , _plqlAccessToken    :: !(Maybe Text)
+    , _plqlUploadType     :: !(Maybe Text)
+    , _plqlFilter         :: !(Maybe Text)
+    , _plqlPageToken      :: !(Maybe Text)
+    , _plqlPageSize       :: !(Maybe (Textual Int32))
+    , _plqlCallback       :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ProjectsLocationsQueuesList' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'plqlParent'
+--
+-- * 'plqlXgafv'
+--
+-- * 'plqlUploadProtocol'
+--
+-- * 'plqlAccessToken'
+--
+-- * 'plqlUploadType'
+--
+-- * 'plqlFilter'
+--
+-- * 'plqlPageToken'
+--
+-- * 'plqlPageSize'
+--
+-- * 'plqlCallback'
+projectsLocationsQueuesList
+    :: Text -- ^ 'plqlParent'
+    -> ProjectsLocationsQueuesList
+projectsLocationsQueuesList pPlqlParent_ =
+    ProjectsLocationsQueuesList'
+    { _plqlParent = pPlqlParent_
+    , _plqlXgafv = Nothing
+    , _plqlUploadProtocol = Nothing
+    , _plqlAccessToken = Nothing
+    , _plqlUploadType = Nothing
+    , _plqlFilter = Nothing
+    , _plqlPageToken = Nothing
+    , _plqlPageSize = Nothing
+    , _plqlCallback = Nothing
+    }
+
+-- | Required. The location name. For example:
+-- \`projects\/PROJECT_ID\/locations\/LOCATION_ID\`
+plqlParent :: Lens' ProjectsLocationsQueuesList Text
+plqlParent
+  = lens _plqlParent (\ s a -> s{_plqlParent = a})
+
+-- | V1 error format.
+plqlXgafv :: Lens' ProjectsLocationsQueuesList (Maybe Xgafv)
+plqlXgafv
+  = lens _plqlXgafv (\ s a -> s{_plqlXgafv = a})
+
+-- | Upload protocol for media (e.g. \"raw\", \"multipart\").
+plqlUploadProtocol :: Lens' ProjectsLocationsQueuesList (Maybe Text)
+plqlUploadProtocol
+  = lens _plqlUploadProtocol
+      (\ s a -> s{_plqlUploadProtocol = a})
+
+-- | OAuth access token.
+plqlAccessToken :: Lens' ProjectsLocationsQueuesList (Maybe Text)
+plqlAccessToken
+  = lens _plqlAccessToken
+      (\ s a -> s{_plqlAccessToken = a})
+
+-- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
+plqlUploadType :: Lens' ProjectsLocationsQueuesList (Maybe Text)
+plqlUploadType
+  = lens _plqlUploadType
+      (\ s a -> s{_plqlUploadType = a})
+
+-- | \`filter\` can be used to specify a subset of queues. Any Queue field
+-- can be used as a filter and several operators as supported. For example:
+-- \`\<=, \<, >=, >, !=, =, :\`. The filter syntax is the same as described
+-- in [Stackdriver\'s Advanced Logs
+-- Filters](https:\/\/cloud.google.com\/logging\/docs\/view\/advanced_filters).
+-- Sample filter \"state: PAUSED\". Note that using filters might cause
+-- fewer queues than the requested page_size to be returned.
+plqlFilter :: Lens' ProjectsLocationsQueuesList (Maybe Text)
+plqlFilter
+  = lens _plqlFilter (\ s a -> s{_plqlFilter = a})
+
+-- | A token identifying the page of results to return. To request the first
+-- page results, page_token must be empty. To request the next page of
+-- results, page_token must be the value of next_page_token returned from
+-- the previous call to ListQueues method. It is an error to switch the
+-- value of the filter while iterating through pages.
+plqlPageToken :: Lens' ProjectsLocationsQueuesList (Maybe Text)
+plqlPageToken
+  = lens _plqlPageToken
+      (\ s a -> s{_plqlPageToken = a})
+
+-- | Requested page size. The maximum page size is 9800. If unspecified, the
+-- page size will be the maximum. Fewer queues than requested might be
+-- returned, even if more queues exist; use the next_page_token in the
+-- response to determine if more queues exist.
+plqlPageSize :: Lens' ProjectsLocationsQueuesList (Maybe Int32)
+plqlPageSize
+  = lens _plqlPageSize (\ s a -> s{_plqlPageSize = a})
+      . mapping _Coerce
+
+-- | JSONP
+plqlCallback :: Lens' ProjectsLocationsQueuesList (Maybe Text)
+plqlCallback
+  = lens _plqlCallback (\ s a -> s{_plqlCallback = a})
+
+instance GoogleRequest ProjectsLocationsQueuesList
+         where
+        type Rs ProjectsLocationsQueuesList =
+             ListQueuesResponse
+        type Scopes ProjectsLocationsQueuesList =
+             '["https://www.googleapis.com/auth/cloud-platform"]
+        requestClient ProjectsLocationsQueuesList'{..}
+          = go _plqlParent _plqlXgafv _plqlUploadProtocol
+              _plqlAccessToken
+              _plqlUploadType
+              _plqlFilter
+              _plqlPageToken
+              _plqlPageSize
+              _plqlCallback
+              (Just AltJSON)
+              cloudTasksService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy ProjectsLocationsQueuesListResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/CloudTasks/Projects/Locations/Queues/Patch.hs b/gen/Network/Google/Resource/CloudTasks/Projects/Locations/Queues/Patch.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/CloudTasks/Projects/Locations/Queues/Patch.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.CloudTasks.Projects.Locations.Queues.Patch
+-- Copyright   : (c) 2015-2016 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Updates a queue. This method creates the queue if it does not exist and
+-- updates the queue if it does exist. Queues created with this method
+-- allow tasks to live for a maximum of 31 days. After a task is 31 days
+-- old, the task will be deleted regardless of whether it was dispatched or
+-- not. WARNING: Using this method may have unintended side effects if you
+-- are using an App Engine \`queue.yaml\` or \`queue.xml\` file to manage
+-- your queues. Read [Overview of Queue Management and
+-- queue.yaml](https:\/\/cloud.google.com\/tasks\/docs\/queue-yaml) before
+-- using this method.
+--
+-- /See:/ <https://cloud.google.com/tasks/ Cloud Tasks API Reference> for @cloudtasks.projects.locations.queues.patch@.
+module Network.Google.Resource.CloudTasks.Projects.Locations.Queues.Patch
+    (
+    -- * REST Resource
+      ProjectsLocationsQueuesPatchResource
+
+    -- * Creating a Request
+    , projectsLocationsQueuesPatch
+    , ProjectsLocationsQueuesPatch
+
+    -- * Request Lenses
+    , plqpXgafv
+    , plqpUploadProtocol
+    , plqpUpdateMask
+    , plqpAccessToken
+    , plqpUploadType
+    , plqpPayload
+    , plqpName
+    , plqpCallback
+    ) where
+
+import           Network.Google.CloudTasks.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @cloudtasks.projects.locations.queues.patch@ method which the
+-- 'ProjectsLocationsQueuesPatch' request conforms to.
+type ProjectsLocationsQueuesPatchResource =
+     "v2beta3" :>
+       Capture "name" Text :>
+         QueryParam "$.xgafv" Xgafv :>
+           QueryParam "upload_protocol" Text :>
+             QueryParam "updateMask" GFieldMask :>
+               QueryParam "access_token" Text :>
+                 QueryParam "uploadType" Text :>
+                   QueryParam "callback" Text :>
+                     QueryParam "alt" AltJSON :>
+                       ReqBody '[JSON] Queue :> Patch '[JSON] Queue
+
+-- | Updates a queue. This method creates the queue if it does not exist and
+-- updates the queue if it does exist. Queues created with this method
+-- allow tasks to live for a maximum of 31 days. After a task is 31 days
+-- old, the task will be deleted regardless of whether it was dispatched or
+-- not. WARNING: Using this method may have unintended side effects if you
+-- are using an App Engine \`queue.yaml\` or \`queue.xml\` file to manage
+-- your queues. Read [Overview of Queue Management and
+-- queue.yaml](https:\/\/cloud.google.com\/tasks\/docs\/queue-yaml) before
+-- using this method.
+--
+-- /See:/ 'projectsLocationsQueuesPatch' smart constructor.
+data ProjectsLocationsQueuesPatch = ProjectsLocationsQueuesPatch'
+    { _plqpXgafv          :: !(Maybe Xgafv)
+    , _plqpUploadProtocol :: !(Maybe Text)
+    , _plqpUpdateMask     :: !(Maybe GFieldMask)
+    , _plqpAccessToken    :: !(Maybe Text)
+    , _plqpUploadType     :: !(Maybe Text)
+    , _plqpPayload        :: !Queue
+    , _plqpName           :: !Text
+    , _plqpCallback       :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ProjectsLocationsQueuesPatch' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'plqpXgafv'
+--
+-- * 'plqpUploadProtocol'
+--
+-- * 'plqpUpdateMask'
+--
+-- * 'plqpAccessToken'
+--
+-- * 'plqpUploadType'
+--
+-- * 'plqpPayload'
+--
+-- * 'plqpName'
+--
+-- * 'plqpCallback'
+projectsLocationsQueuesPatch
+    :: Queue -- ^ 'plqpPayload'
+    -> Text -- ^ 'plqpName'
+    -> ProjectsLocationsQueuesPatch
+projectsLocationsQueuesPatch pPlqpPayload_ pPlqpName_ =
+    ProjectsLocationsQueuesPatch'
+    { _plqpXgafv = Nothing
+    , _plqpUploadProtocol = Nothing
+    , _plqpUpdateMask = Nothing
+    , _plqpAccessToken = Nothing
+    , _plqpUploadType = Nothing
+    , _plqpPayload = pPlqpPayload_
+    , _plqpName = pPlqpName_
+    , _plqpCallback = Nothing
+    }
+
+-- | V1 error format.
+plqpXgafv :: Lens' ProjectsLocationsQueuesPatch (Maybe Xgafv)
+plqpXgafv
+  = lens _plqpXgafv (\ s a -> s{_plqpXgafv = a})
+
+-- | Upload protocol for media (e.g. \"raw\", \"multipart\").
+plqpUploadProtocol :: Lens' ProjectsLocationsQueuesPatch (Maybe Text)
+plqpUploadProtocol
+  = lens _plqpUploadProtocol
+      (\ s a -> s{_plqpUploadProtocol = a})
+
+-- | A mask used to specify which fields of the queue are being updated. If
+-- empty, then all fields will be updated.
+plqpUpdateMask :: Lens' ProjectsLocationsQueuesPatch (Maybe GFieldMask)
+plqpUpdateMask
+  = lens _plqpUpdateMask
+      (\ s a -> s{_plqpUpdateMask = a})
+
+-- | OAuth access token.
+plqpAccessToken :: Lens' ProjectsLocationsQueuesPatch (Maybe Text)
+plqpAccessToken
+  = lens _plqpAccessToken
+      (\ s a -> s{_plqpAccessToken = a})
+
+-- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
+plqpUploadType :: Lens' ProjectsLocationsQueuesPatch (Maybe Text)
+plqpUploadType
+  = lens _plqpUploadType
+      (\ s a -> s{_plqpUploadType = a})
+
+-- | Multipart request metadata.
+plqpPayload :: Lens' ProjectsLocationsQueuesPatch Queue
+plqpPayload
+  = lens _plqpPayload (\ s a -> s{_plqpPayload = a})
+
+-- | Caller-specified and required in CreateQueue, after which it becomes
+-- output only. The queue name. The queue name must have the following
+-- format:
+-- \`projects\/PROJECT_ID\/locations\/LOCATION_ID\/queues\/QUEUE_ID\` *
+-- \`PROJECT_ID\` can contain letters ([A-Za-z]), numbers ([0-9]), hyphens
+-- (-), colons (:), or periods (.). For more information, see [Identifying
+-- projects](https:\/\/cloud.google.com\/resource-manager\/docs\/creating-managing-projects#identifying_projects)
+-- * \`LOCATION_ID\` is the canonical ID for the queue\'s location. The
+-- list of available locations can be obtained by calling ListLocations.
+-- For more information, see
+-- https:\/\/cloud.google.com\/about\/locations\/. * \`QUEUE_ID\` can
+-- contain letters ([A-Za-z]), numbers ([0-9]), or hyphens (-). The maximum
+-- length is 100 characters.
+plqpName :: Lens' ProjectsLocationsQueuesPatch Text
+plqpName = lens _plqpName (\ s a -> s{_plqpName = a})
+
+-- | JSONP
+plqpCallback :: Lens' ProjectsLocationsQueuesPatch (Maybe Text)
+plqpCallback
+  = lens _plqpCallback (\ s a -> s{_plqpCallback = a})
+
+instance GoogleRequest ProjectsLocationsQueuesPatch
+         where
+        type Rs ProjectsLocationsQueuesPatch = Queue
+        type Scopes ProjectsLocationsQueuesPatch =
+             '["https://www.googleapis.com/auth/cloud-platform"]
+        requestClient ProjectsLocationsQueuesPatch'{..}
+          = go _plqpName _plqpXgafv _plqpUploadProtocol
+              _plqpUpdateMask
+              _plqpAccessToken
+              _plqpUploadType
+              _plqpCallback
+              (Just AltJSON)
+              _plqpPayload
+              cloudTasksService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy ProjectsLocationsQueuesPatchResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/CloudTasks/Projects/Locations/Queues/Pause.hs b/gen/Network/Google/Resource/CloudTasks/Projects/Locations/Queues/Pause.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/CloudTasks/Projects/Locations/Queues/Pause.hs
@@ -0,0 +1,166 @@
+{-# 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.CloudTasks.Projects.Locations.Queues.Pause
+-- Copyright   : (c) 2015-2016 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)
+--
+-- Pauses the queue. If a queue is paused then the system will stop
+-- dispatching tasks until the queue is resumed via ResumeQueue. Tasks can
+-- still be added when the queue is paused. A queue is paused if its state
+-- is PAUSED.
+--
+-- /See:/ <https://cloud.google.com/tasks/ Cloud Tasks API Reference> for @cloudtasks.projects.locations.queues.pause@.
+module Network.Google.Resource.CloudTasks.Projects.Locations.Queues.Pause
+    (
+    -- * REST Resource
+      ProjectsLocationsQueuesPauseResource
+
+    -- * Creating a Request
+    , projectsLocationsQueuesPause
+    , ProjectsLocationsQueuesPause
+
+    -- * Request Lenses
+    , proXgafv
+    , proUploadProtocol
+    , proAccessToken
+    , proUploadType
+    , proPayload
+    , proName
+    , proCallback
+    ) where
+
+import           Network.Google.CloudTasks.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @cloudtasks.projects.locations.queues.pause@ method which the
+-- 'ProjectsLocationsQueuesPause' request conforms to.
+type ProjectsLocationsQueuesPauseResource =
+     "v2beta3" :>
+       CaptureMode "name" "pause" Text :>
+         QueryParam "$.xgafv" Xgafv :>
+           QueryParam "upload_protocol" Text :>
+             QueryParam "access_token" Text :>
+               QueryParam "uploadType" Text :>
+                 QueryParam "callback" Text :>
+                   QueryParam "alt" AltJSON :>
+                     ReqBody '[JSON] PauseQueueRequest :>
+                       Post '[JSON] Queue
+
+-- | Pauses the queue. If a queue is paused then the system will stop
+-- dispatching tasks until the queue is resumed via ResumeQueue. Tasks can
+-- still be added when the queue is paused. A queue is paused if its state
+-- is PAUSED.
+--
+-- /See:/ 'projectsLocationsQueuesPause' smart constructor.
+data ProjectsLocationsQueuesPause = ProjectsLocationsQueuesPause'
+    { _proXgafv          :: !(Maybe Xgafv)
+    , _proUploadProtocol :: !(Maybe Text)
+    , _proAccessToken    :: !(Maybe Text)
+    , _proUploadType     :: !(Maybe Text)
+    , _proPayload        :: !PauseQueueRequest
+    , _proName           :: !Text
+    , _proCallback       :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ProjectsLocationsQueuesPause' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'proXgafv'
+--
+-- * 'proUploadProtocol'
+--
+-- * 'proAccessToken'
+--
+-- * 'proUploadType'
+--
+-- * 'proPayload'
+--
+-- * 'proName'
+--
+-- * 'proCallback'
+projectsLocationsQueuesPause
+    :: PauseQueueRequest -- ^ 'proPayload'
+    -> Text -- ^ 'proName'
+    -> ProjectsLocationsQueuesPause
+projectsLocationsQueuesPause pProPayload_ pProName_ =
+    ProjectsLocationsQueuesPause'
+    { _proXgafv = Nothing
+    , _proUploadProtocol = Nothing
+    , _proAccessToken = Nothing
+    , _proUploadType = Nothing
+    , _proPayload = pProPayload_
+    , _proName = pProName_
+    , _proCallback = Nothing
+    }
+
+-- | V1 error format.
+proXgafv :: Lens' ProjectsLocationsQueuesPause (Maybe Xgafv)
+proXgafv = lens _proXgafv (\ s a -> s{_proXgafv = a})
+
+-- | Upload protocol for media (e.g. \"raw\", \"multipart\").
+proUploadProtocol :: Lens' ProjectsLocationsQueuesPause (Maybe Text)
+proUploadProtocol
+  = lens _proUploadProtocol
+      (\ s a -> s{_proUploadProtocol = a})
+
+-- | OAuth access token.
+proAccessToken :: Lens' ProjectsLocationsQueuesPause (Maybe Text)
+proAccessToken
+  = lens _proAccessToken
+      (\ s a -> s{_proAccessToken = a})
+
+-- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
+proUploadType :: Lens' ProjectsLocationsQueuesPause (Maybe Text)
+proUploadType
+  = lens _proUploadType
+      (\ s a -> s{_proUploadType = a})
+
+-- | Multipart request metadata.
+proPayload :: Lens' ProjectsLocationsQueuesPause PauseQueueRequest
+proPayload
+  = lens _proPayload (\ s a -> s{_proPayload = a})
+
+-- | Required. The queue name. For example:
+-- \`projects\/PROJECT_ID\/location\/LOCATION_ID\/queues\/QUEUE_ID\`
+proName :: Lens' ProjectsLocationsQueuesPause Text
+proName = lens _proName (\ s a -> s{_proName = a})
+
+-- | JSONP
+proCallback :: Lens' ProjectsLocationsQueuesPause (Maybe Text)
+proCallback
+  = lens _proCallback (\ s a -> s{_proCallback = a})
+
+instance GoogleRequest ProjectsLocationsQueuesPause
+         where
+        type Rs ProjectsLocationsQueuesPause = Queue
+        type Scopes ProjectsLocationsQueuesPause =
+             '["https://www.googleapis.com/auth/cloud-platform"]
+        requestClient ProjectsLocationsQueuesPause'{..}
+          = go _proName _proXgafv _proUploadProtocol
+              _proAccessToken
+              _proUploadType
+              _proCallback
+              (Just AltJSON)
+              _proPayload
+              cloudTasksService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy ProjectsLocationsQueuesPauseResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/CloudTasks/Projects/Locations/Queues/Purge.hs b/gen/Network/Google/Resource/CloudTasks/Projects/Locations/Queues/Purge.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/CloudTasks/Projects/Locations/Queues/Purge.hs
@@ -0,0 +1,162 @@
+{-# 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.CloudTasks.Projects.Locations.Queues.Purge
+-- Copyright   : (c) 2015-2016 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)
+--
+-- Purges a queue by deleting all of its tasks. All tasks created before
+-- this method is called are permanently deleted. Purge operations can take
+-- up to one minute to take effect. Tasks might be dispatched before the
+-- purge takes effect. A purge is irreversible.
+--
+-- /See:/ <https://cloud.google.com/tasks/ Cloud Tasks API Reference> for @cloudtasks.projects.locations.queues.purge@.
+module Network.Google.Resource.CloudTasks.Projects.Locations.Queues.Purge
+    (
+    -- * REST Resource
+      ProjectsLocationsQueuesPurgeResource
+
+    -- * Creating a Request
+    , projectsLocationsQueuesPurge
+    , ProjectsLocationsQueuesPurge
+
+    -- * Request Lenses
+    , pXgafv
+    , pUploadProtocol
+    , pAccessToken
+    , pUploadType
+    , pPayload
+    , pName
+    , pCallback
+    ) where
+
+import           Network.Google.CloudTasks.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @cloudtasks.projects.locations.queues.purge@ method which the
+-- 'ProjectsLocationsQueuesPurge' request conforms to.
+type ProjectsLocationsQueuesPurgeResource =
+     "v2beta3" :>
+       CaptureMode "name" "purge" Text :>
+         QueryParam "$.xgafv" Xgafv :>
+           QueryParam "upload_protocol" Text :>
+             QueryParam "access_token" Text :>
+               QueryParam "uploadType" Text :>
+                 QueryParam "callback" Text :>
+                   QueryParam "alt" AltJSON :>
+                     ReqBody '[JSON] PurgeQueueRequest :>
+                       Post '[JSON] Queue
+
+-- | Purges a queue by deleting all of its tasks. All tasks created before
+-- this method is called are permanently deleted. Purge operations can take
+-- up to one minute to take effect. Tasks might be dispatched before the
+-- purge takes effect. A purge is irreversible.
+--
+-- /See:/ 'projectsLocationsQueuesPurge' smart constructor.
+data ProjectsLocationsQueuesPurge = ProjectsLocationsQueuesPurge'
+    { _pXgafv          :: !(Maybe Xgafv)
+    , _pUploadProtocol :: !(Maybe Text)
+    , _pAccessToken    :: !(Maybe Text)
+    , _pUploadType     :: !(Maybe Text)
+    , _pPayload        :: !PurgeQueueRequest
+    , _pName           :: !Text
+    , _pCallback       :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ProjectsLocationsQueuesPurge' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'pXgafv'
+--
+-- * 'pUploadProtocol'
+--
+-- * 'pAccessToken'
+--
+-- * 'pUploadType'
+--
+-- * 'pPayload'
+--
+-- * 'pName'
+--
+-- * 'pCallback'
+projectsLocationsQueuesPurge
+    :: PurgeQueueRequest -- ^ 'pPayload'
+    -> Text -- ^ 'pName'
+    -> ProjectsLocationsQueuesPurge
+projectsLocationsQueuesPurge pPPayload_ pPName_ =
+    ProjectsLocationsQueuesPurge'
+    { _pXgafv = Nothing
+    , _pUploadProtocol = Nothing
+    , _pAccessToken = Nothing
+    , _pUploadType = Nothing
+    , _pPayload = pPPayload_
+    , _pName = pPName_
+    , _pCallback = Nothing
+    }
+
+-- | V1 error format.
+pXgafv :: Lens' ProjectsLocationsQueuesPurge (Maybe Xgafv)
+pXgafv = lens _pXgafv (\ s a -> s{_pXgafv = a})
+
+-- | Upload protocol for media (e.g. \"raw\", \"multipart\").
+pUploadProtocol :: Lens' ProjectsLocationsQueuesPurge (Maybe Text)
+pUploadProtocol
+  = lens _pUploadProtocol
+      (\ s a -> s{_pUploadProtocol = a})
+
+-- | OAuth access token.
+pAccessToken :: Lens' ProjectsLocationsQueuesPurge (Maybe Text)
+pAccessToken
+  = lens _pAccessToken (\ s a -> s{_pAccessToken = a})
+
+-- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
+pUploadType :: Lens' ProjectsLocationsQueuesPurge (Maybe Text)
+pUploadType
+  = lens _pUploadType (\ s a -> s{_pUploadType = a})
+
+-- | Multipart request metadata.
+pPayload :: Lens' ProjectsLocationsQueuesPurge PurgeQueueRequest
+pPayload = lens _pPayload (\ s a -> s{_pPayload = a})
+
+-- | Required. The queue name. For example:
+-- \`projects\/PROJECT_ID\/location\/LOCATION_ID\/queues\/QUEUE_ID\`
+pName :: Lens' ProjectsLocationsQueuesPurge Text
+pName = lens _pName (\ s a -> s{_pName = a})
+
+-- | JSONP
+pCallback :: Lens' ProjectsLocationsQueuesPurge (Maybe Text)
+pCallback
+  = lens _pCallback (\ s a -> s{_pCallback = a})
+
+instance GoogleRequest ProjectsLocationsQueuesPurge
+         where
+        type Rs ProjectsLocationsQueuesPurge = Queue
+        type Scopes ProjectsLocationsQueuesPurge =
+             '["https://www.googleapis.com/auth/cloud-platform"]
+        requestClient ProjectsLocationsQueuesPurge'{..}
+          = go _pName _pXgafv _pUploadProtocol _pAccessToken
+              _pUploadType
+              _pCallback
+              (Just AltJSON)
+              _pPayload
+              cloudTasksService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy ProjectsLocationsQueuesPurgeResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/CloudTasks/Projects/Locations/Queues/Resume.hs b/gen/Network/Google/Resource/CloudTasks/Projects/Locations/Queues/Resume.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/CloudTasks/Projects/Locations/Queues/Resume.hs
@@ -0,0 +1,174 @@
+{-# 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.CloudTasks.Projects.Locations.Queues.Resume
+-- Copyright   : (c) 2015-2016 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)
+--
+-- Resume a queue. This method resumes a queue after it has been PAUSED or
+-- DISABLED. The state of a queue is stored in the queue\'s state; after
+-- calling this method it will be set to RUNNING. WARNING: Resuming many
+-- high-QPS queues at the same time can lead to target overloading. If you
+-- are resuming high-QPS queues, follow the 500\/50\/5 pattern described in
+-- [Managing Cloud Tasks Scaling
+-- Risks](https:\/\/cloud.google.com\/tasks\/docs\/manage-cloud-task-scaling).
+--
+-- /See:/ <https://cloud.google.com/tasks/ Cloud Tasks API Reference> for @cloudtasks.projects.locations.queues.resume@.
+module Network.Google.Resource.CloudTasks.Projects.Locations.Queues.Resume
+    (
+    -- * REST Resource
+      ProjectsLocationsQueuesResumeResource
+
+    -- * Creating a Request
+    , projectsLocationsQueuesResume
+    , ProjectsLocationsQueuesResume
+
+    -- * Request Lenses
+    , plqrXgafv
+    , plqrUploadProtocol
+    , plqrAccessToken
+    , plqrUploadType
+    , plqrPayload
+    , plqrName
+    , plqrCallback
+    ) where
+
+import           Network.Google.CloudTasks.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @cloudtasks.projects.locations.queues.resume@ method which the
+-- 'ProjectsLocationsQueuesResume' request conforms to.
+type ProjectsLocationsQueuesResumeResource =
+     "v2beta3" :>
+       CaptureMode "name" "resume" Text :>
+         QueryParam "$.xgafv" Xgafv :>
+           QueryParam "upload_protocol" Text :>
+             QueryParam "access_token" Text :>
+               QueryParam "uploadType" Text :>
+                 QueryParam "callback" Text :>
+                   QueryParam "alt" AltJSON :>
+                     ReqBody '[JSON] ResumeQueueRequest :>
+                       Post '[JSON] Queue
+
+-- | Resume a queue. This method resumes a queue after it has been PAUSED or
+-- DISABLED. The state of a queue is stored in the queue\'s state; after
+-- calling this method it will be set to RUNNING. WARNING: Resuming many
+-- high-QPS queues at the same time can lead to target overloading. If you
+-- are resuming high-QPS queues, follow the 500\/50\/5 pattern described in
+-- [Managing Cloud Tasks Scaling
+-- Risks](https:\/\/cloud.google.com\/tasks\/docs\/manage-cloud-task-scaling).
+--
+-- /See:/ 'projectsLocationsQueuesResume' smart constructor.
+data ProjectsLocationsQueuesResume = ProjectsLocationsQueuesResume'
+    { _plqrXgafv          :: !(Maybe Xgafv)
+    , _plqrUploadProtocol :: !(Maybe Text)
+    , _plqrAccessToken    :: !(Maybe Text)
+    , _plqrUploadType     :: !(Maybe Text)
+    , _plqrPayload        :: !ResumeQueueRequest
+    , _plqrName           :: !Text
+    , _plqrCallback       :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ProjectsLocationsQueuesResume' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'plqrXgafv'
+--
+-- * 'plqrUploadProtocol'
+--
+-- * 'plqrAccessToken'
+--
+-- * 'plqrUploadType'
+--
+-- * 'plqrPayload'
+--
+-- * 'plqrName'
+--
+-- * 'plqrCallback'
+projectsLocationsQueuesResume
+    :: ResumeQueueRequest -- ^ 'plqrPayload'
+    -> Text -- ^ 'plqrName'
+    -> ProjectsLocationsQueuesResume
+projectsLocationsQueuesResume pPlqrPayload_ pPlqrName_ =
+    ProjectsLocationsQueuesResume'
+    { _plqrXgafv = Nothing
+    , _plqrUploadProtocol = Nothing
+    , _plqrAccessToken = Nothing
+    , _plqrUploadType = Nothing
+    , _plqrPayload = pPlqrPayload_
+    , _plqrName = pPlqrName_
+    , _plqrCallback = Nothing
+    }
+
+-- | V1 error format.
+plqrXgafv :: Lens' ProjectsLocationsQueuesResume (Maybe Xgafv)
+plqrXgafv
+  = lens _plqrXgafv (\ s a -> s{_plqrXgafv = a})
+
+-- | Upload protocol for media (e.g. \"raw\", \"multipart\").
+plqrUploadProtocol :: Lens' ProjectsLocationsQueuesResume (Maybe Text)
+plqrUploadProtocol
+  = lens _plqrUploadProtocol
+      (\ s a -> s{_plqrUploadProtocol = a})
+
+-- | OAuth access token.
+plqrAccessToken :: Lens' ProjectsLocationsQueuesResume (Maybe Text)
+plqrAccessToken
+  = lens _plqrAccessToken
+      (\ s a -> s{_plqrAccessToken = a})
+
+-- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
+plqrUploadType :: Lens' ProjectsLocationsQueuesResume (Maybe Text)
+plqrUploadType
+  = lens _plqrUploadType
+      (\ s a -> s{_plqrUploadType = a})
+
+-- | Multipart request metadata.
+plqrPayload :: Lens' ProjectsLocationsQueuesResume ResumeQueueRequest
+plqrPayload
+  = lens _plqrPayload (\ s a -> s{_plqrPayload = a})
+
+-- | Required. The queue name. For example:
+-- \`projects\/PROJECT_ID\/location\/LOCATION_ID\/queues\/QUEUE_ID\`
+plqrName :: Lens' ProjectsLocationsQueuesResume Text
+plqrName = lens _plqrName (\ s a -> s{_plqrName = a})
+
+-- | JSONP
+plqrCallback :: Lens' ProjectsLocationsQueuesResume (Maybe Text)
+plqrCallback
+  = lens _plqrCallback (\ s a -> s{_plqrCallback = a})
+
+instance GoogleRequest ProjectsLocationsQueuesResume
+         where
+        type Rs ProjectsLocationsQueuesResume = Queue
+        type Scopes ProjectsLocationsQueuesResume =
+             '["https://www.googleapis.com/auth/cloud-platform"]
+        requestClient ProjectsLocationsQueuesResume'{..}
+          = go _plqrName _plqrXgafv _plqrUploadProtocol
+              _plqrAccessToken
+              _plqrUploadType
+              _plqrCallback
+              (Just AltJSON)
+              _plqrPayload
+              cloudTasksService
+          where go
+                  = buildClient
+                      (Proxy ::
+                         Proxy ProjectsLocationsQueuesResumeResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/CloudTasks/Projects/Locations/Queues/SetIAMPolicy.hs b/gen/Network/Google/Resource/CloudTasks/Projects/Locations/Queues/SetIAMPolicy.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/CloudTasks/Projects/Locations/Queues/SetIAMPolicy.hs
@@ -0,0 +1,178 @@
+{-# 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.CloudTasks.Projects.Locations.Queues.SetIAMPolicy
+-- Copyright   : (c) 2015-2016 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)
+--
+-- Sets the access control policy for a Queue. Replaces any existing
+-- policy. Note: The Cloud Console does not check queue-level IAM
+-- permissions yet. Project-level permissions are required to use the Cloud
+-- Console. Authorization requires the following [Google
+-- IAM](https:\/\/cloud.google.com\/iam) permission on the specified
+-- resource parent: * \`cloudtasks.queues.setIamPolicy\`
+--
+-- /See:/ <https://cloud.google.com/tasks/ Cloud Tasks API Reference> for @cloudtasks.projects.locations.queues.setIamPolicy@.
+module Network.Google.Resource.CloudTasks.Projects.Locations.Queues.SetIAMPolicy
+    (
+    -- * REST Resource
+      ProjectsLocationsQueuesSetIAMPolicyResource
+
+    -- * Creating a Request
+    , projectsLocationsQueuesSetIAMPolicy
+    , ProjectsLocationsQueuesSetIAMPolicy
+
+    -- * Request Lenses
+    , plqsipXgafv
+    , plqsipUploadProtocol
+    , plqsipAccessToken
+    , plqsipUploadType
+    , plqsipPayload
+    , plqsipResource
+    , plqsipCallback
+    ) where
+
+import           Network.Google.CloudTasks.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @cloudtasks.projects.locations.queues.setIamPolicy@ method which the
+-- 'ProjectsLocationsQueuesSetIAMPolicy' request conforms to.
+type ProjectsLocationsQueuesSetIAMPolicyResource =
+     "v2beta3" :>
+       CaptureMode "resource" "setIamPolicy" Text :>
+         QueryParam "$.xgafv" Xgafv :>
+           QueryParam "upload_protocol" Text :>
+             QueryParam "access_token" Text :>
+               QueryParam "uploadType" Text :>
+                 QueryParam "callback" Text :>
+                   QueryParam "alt" AltJSON :>
+                     ReqBody '[JSON] SetIAMPolicyRequest :>
+                       Post '[JSON] Policy
+
+-- | Sets the access control policy for a Queue. Replaces any existing
+-- policy. Note: The Cloud Console does not check queue-level IAM
+-- permissions yet. Project-level permissions are required to use the Cloud
+-- Console. Authorization requires the following [Google
+-- IAM](https:\/\/cloud.google.com\/iam) permission on the specified
+-- resource parent: * \`cloudtasks.queues.setIamPolicy\`
+--
+-- /See:/ 'projectsLocationsQueuesSetIAMPolicy' smart constructor.
+data ProjectsLocationsQueuesSetIAMPolicy = ProjectsLocationsQueuesSetIAMPolicy'
+    { _plqsipXgafv          :: !(Maybe Xgafv)
+    , _plqsipUploadProtocol :: !(Maybe Text)
+    , _plqsipAccessToken    :: !(Maybe Text)
+    , _plqsipUploadType     :: !(Maybe Text)
+    , _plqsipPayload        :: !SetIAMPolicyRequest
+    , _plqsipResource       :: !Text
+    , _plqsipCallback       :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ProjectsLocationsQueuesSetIAMPolicy' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'plqsipXgafv'
+--
+-- * 'plqsipUploadProtocol'
+--
+-- * 'plqsipAccessToken'
+--
+-- * 'plqsipUploadType'
+--
+-- * 'plqsipPayload'
+--
+-- * 'plqsipResource'
+--
+-- * 'plqsipCallback'
+projectsLocationsQueuesSetIAMPolicy
+    :: SetIAMPolicyRequest -- ^ 'plqsipPayload'
+    -> Text -- ^ 'plqsipResource'
+    -> ProjectsLocationsQueuesSetIAMPolicy
+projectsLocationsQueuesSetIAMPolicy pPlqsipPayload_ pPlqsipResource_ =
+    ProjectsLocationsQueuesSetIAMPolicy'
+    { _plqsipXgafv = Nothing
+    , _plqsipUploadProtocol = Nothing
+    , _plqsipAccessToken = Nothing
+    , _plqsipUploadType = Nothing
+    , _plqsipPayload = pPlqsipPayload_
+    , _plqsipResource = pPlqsipResource_
+    , _plqsipCallback = Nothing
+    }
+
+-- | V1 error format.
+plqsipXgafv :: Lens' ProjectsLocationsQueuesSetIAMPolicy (Maybe Xgafv)
+plqsipXgafv
+  = lens _plqsipXgafv (\ s a -> s{_plqsipXgafv = a})
+
+-- | Upload protocol for media (e.g. \"raw\", \"multipart\").
+plqsipUploadProtocol :: Lens' ProjectsLocationsQueuesSetIAMPolicy (Maybe Text)
+plqsipUploadProtocol
+  = lens _plqsipUploadProtocol
+      (\ s a -> s{_plqsipUploadProtocol = a})
+
+-- | OAuth access token.
+plqsipAccessToken :: Lens' ProjectsLocationsQueuesSetIAMPolicy (Maybe Text)
+plqsipAccessToken
+  = lens _plqsipAccessToken
+      (\ s a -> s{_plqsipAccessToken = a})
+
+-- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
+plqsipUploadType :: Lens' ProjectsLocationsQueuesSetIAMPolicy (Maybe Text)
+plqsipUploadType
+  = lens _plqsipUploadType
+      (\ s a -> s{_plqsipUploadType = a})
+
+-- | Multipart request metadata.
+plqsipPayload :: Lens' ProjectsLocationsQueuesSetIAMPolicy SetIAMPolicyRequest
+plqsipPayload
+  = lens _plqsipPayload
+      (\ s a -> s{_plqsipPayload = a})
+
+-- | REQUIRED: The resource for which the policy is being specified. See the
+-- operation documentation for the appropriate value for this field.
+plqsipResource :: Lens' ProjectsLocationsQueuesSetIAMPolicy Text
+plqsipResource
+  = lens _plqsipResource
+      (\ s a -> s{_plqsipResource = a})
+
+-- | JSONP
+plqsipCallback :: Lens' ProjectsLocationsQueuesSetIAMPolicy (Maybe Text)
+plqsipCallback
+  = lens _plqsipCallback
+      (\ s a -> s{_plqsipCallback = a})
+
+instance GoogleRequest
+         ProjectsLocationsQueuesSetIAMPolicy where
+        type Rs ProjectsLocationsQueuesSetIAMPolicy = Policy
+        type Scopes ProjectsLocationsQueuesSetIAMPolicy =
+             '["https://www.googleapis.com/auth/cloud-platform"]
+        requestClient
+          ProjectsLocationsQueuesSetIAMPolicy'{..}
+          = go _plqsipResource _plqsipXgafv
+              _plqsipUploadProtocol
+              _plqsipAccessToken
+              _plqsipUploadType
+              _plqsipCallback
+              (Just AltJSON)
+              _plqsipPayload
+              cloudTasksService
+          where go
+                  = buildClient
+                      (Proxy ::
+                         Proxy ProjectsLocationsQueuesSetIAMPolicyResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/CloudTasks/Projects/Locations/Queues/Tasks/Create.hs b/gen/Network/Google/Resource/CloudTasks/Projects/Locations/Queues/Tasks/Create.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/CloudTasks/Projects/Locations/Queues/Tasks/Create.hs
@@ -0,0 +1,170 @@
+{-# 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.CloudTasks.Projects.Locations.Queues.Tasks.Create
+-- Copyright   : (c) 2015-2016 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Creates a task and adds it to a queue. Tasks cannot be updated after
+-- creation; there is no UpdateTask command. * For App Engine queues, the
+-- maximum task size is 100KB.
+--
+-- /See:/ <https://cloud.google.com/tasks/ Cloud Tasks API Reference> for @cloudtasks.projects.locations.queues.tasks.create@.
+module Network.Google.Resource.CloudTasks.Projects.Locations.Queues.Tasks.Create
+    (
+    -- * REST Resource
+      ProjectsLocationsQueuesTasksCreateResource
+
+    -- * Creating a Request
+    , projectsLocationsQueuesTasksCreate
+    , ProjectsLocationsQueuesTasksCreate
+
+    -- * Request Lenses
+    , plqtcParent
+    , plqtcXgafv
+    , plqtcUploadProtocol
+    , plqtcAccessToken
+    , plqtcUploadType
+    , plqtcPayload
+    , plqtcCallback
+    ) where
+
+import           Network.Google.CloudTasks.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @cloudtasks.projects.locations.queues.tasks.create@ method which the
+-- 'ProjectsLocationsQueuesTasksCreate' request conforms to.
+type ProjectsLocationsQueuesTasksCreateResource =
+     "v2beta3" :>
+       Capture "parent" Text :>
+         "tasks" :>
+           QueryParam "$.xgafv" Xgafv :>
+             QueryParam "upload_protocol" Text :>
+               QueryParam "access_token" Text :>
+                 QueryParam "uploadType" Text :>
+                   QueryParam "callback" Text :>
+                     QueryParam "alt" AltJSON :>
+                       ReqBody '[JSON] CreateTaskRequest :>
+                         Post '[JSON] Task
+
+-- | Creates a task and adds it to a queue. Tasks cannot be updated after
+-- creation; there is no UpdateTask command. * For App Engine queues, the
+-- maximum task size is 100KB.
+--
+-- /See:/ 'projectsLocationsQueuesTasksCreate' smart constructor.
+data ProjectsLocationsQueuesTasksCreate = ProjectsLocationsQueuesTasksCreate'
+    { _plqtcParent         :: !Text
+    , _plqtcXgafv          :: !(Maybe Xgafv)
+    , _plqtcUploadProtocol :: !(Maybe Text)
+    , _plqtcAccessToken    :: !(Maybe Text)
+    , _plqtcUploadType     :: !(Maybe Text)
+    , _plqtcPayload        :: !CreateTaskRequest
+    , _plqtcCallback       :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ProjectsLocationsQueuesTasksCreate' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'plqtcParent'
+--
+-- * 'plqtcXgafv'
+--
+-- * 'plqtcUploadProtocol'
+--
+-- * 'plqtcAccessToken'
+--
+-- * 'plqtcUploadType'
+--
+-- * 'plqtcPayload'
+--
+-- * 'plqtcCallback'
+projectsLocationsQueuesTasksCreate
+    :: Text -- ^ 'plqtcParent'
+    -> CreateTaskRequest -- ^ 'plqtcPayload'
+    -> ProjectsLocationsQueuesTasksCreate
+projectsLocationsQueuesTasksCreate pPlqtcParent_ pPlqtcPayload_ =
+    ProjectsLocationsQueuesTasksCreate'
+    { _plqtcParent = pPlqtcParent_
+    , _plqtcXgafv = Nothing
+    , _plqtcUploadProtocol = Nothing
+    , _plqtcAccessToken = Nothing
+    , _plqtcUploadType = Nothing
+    , _plqtcPayload = pPlqtcPayload_
+    , _plqtcCallback = Nothing
+    }
+
+-- | Required. The queue name. For example:
+-- \`projects\/PROJECT_ID\/locations\/LOCATION_ID\/queues\/QUEUE_ID\` The
+-- queue must already exist.
+plqtcParent :: Lens' ProjectsLocationsQueuesTasksCreate Text
+plqtcParent
+  = lens _plqtcParent (\ s a -> s{_plqtcParent = a})
+
+-- | V1 error format.
+plqtcXgafv :: Lens' ProjectsLocationsQueuesTasksCreate (Maybe Xgafv)
+plqtcXgafv
+  = lens _plqtcXgafv (\ s a -> s{_plqtcXgafv = a})
+
+-- | Upload protocol for media (e.g. \"raw\", \"multipart\").
+plqtcUploadProtocol :: Lens' ProjectsLocationsQueuesTasksCreate (Maybe Text)
+plqtcUploadProtocol
+  = lens _plqtcUploadProtocol
+      (\ s a -> s{_plqtcUploadProtocol = a})
+
+-- | OAuth access token.
+plqtcAccessToken :: Lens' ProjectsLocationsQueuesTasksCreate (Maybe Text)
+plqtcAccessToken
+  = lens _plqtcAccessToken
+      (\ s a -> s{_plqtcAccessToken = a})
+
+-- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
+plqtcUploadType :: Lens' ProjectsLocationsQueuesTasksCreate (Maybe Text)
+plqtcUploadType
+  = lens _plqtcUploadType
+      (\ s a -> s{_plqtcUploadType = a})
+
+-- | Multipart request metadata.
+plqtcPayload :: Lens' ProjectsLocationsQueuesTasksCreate CreateTaskRequest
+plqtcPayload
+  = lens _plqtcPayload (\ s a -> s{_plqtcPayload = a})
+
+-- | JSONP
+plqtcCallback :: Lens' ProjectsLocationsQueuesTasksCreate (Maybe Text)
+plqtcCallback
+  = lens _plqtcCallback
+      (\ s a -> s{_plqtcCallback = a})
+
+instance GoogleRequest
+         ProjectsLocationsQueuesTasksCreate where
+        type Rs ProjectsLocationsQueuesTasksCreate = Task
+        type Scopes ProjectsLocationsQueuesTasksCreate =
+             '["https://www.googleapis.com/auth/cloud-platform"]
+        requestClient ProjectsLocationsQueuesTasksCreate'{..}
+          = go _plqtcParent _plqtcXgafv _plqtcUploadProtocol
+              _plqtcAccessToken
+              _plqtcUploadType
+              _plqtcCallback
+              (Just AltJSON)
+              _plqtcPayload
+              cloudTasksService
+          where go
+                  = buildClient
+                      (Proxy ::
+                         Proxy ProjectsLocationsQueuesTasksCreateResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/CloudTasks/Projects/Locations/Queues/Tasks/Delete.hs b/gen/Network/Google/Resource/CloudTasks/Projects/Locations/Queues/Tasks/Delete.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/CloudTasks/Projects/Locations/Queues/Tasks/Delete.hs
@@ -0,0 +1,154 @@
+{-# 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.CloudTasks.Projects.Locations.Queues.Tasks.Delete
+-- Copyright   : (c) 2015-2016 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Deletes a task. A task can be deleted if it is scheduled or dispatched.
+-- A task cannot be deleted if it has executed successfully or permanently
+-- failed.
+--
+-- /See:/ <https://cloud.google.com/tasks/ Cloud Tasks API Reference> for @cloudtasks.projects.locations.queues.tasks.delete@.
+module Network.Google.Resource.CloudTasks.Projects.Locations.Queues.Tasks.Delete
+    (
+    -- * REST Resource
+      ProjectsLocationsQueuesTasksDeleteResource
+
+    -- * Creating a Request
+    , projectsLocationsQueuesTasksDelete
+    , ProjectsLocationsQueuesTasksDelete
+
+    -- * Request Lenses
+    , plqtdXgafv
+    , plqtdUploadProtocol
+    , plqtdAccessToken
+    , plqtdUploadType
+    , plqtdName
+    , plqtdCallback
+    ) where
+
+import           Network.Google.CloudTasks.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @cloudtasks.projects.locations.queues.tasks.delete@ method which the
+-- 'ProjectsLocationsQueuesTasksDelete' request conforms to.
+type ProjectsLocationsQueuesTasksDeleteResource =
+     "v2beta3" :>
+       Capture "name" Text :>
+         QueryParam "$.xgafv" Xgafv :>
+           QueryParam "upload_protocol" Text :>
+             QueryParam "access_token" Text :>
+               QueryParam "uploadType" Text :>
+                 QueryParam "callback" Text :>
+                   QueryParam "alt" AltJSON :> Delete '[JSON] Empty
+
+-- | Deletes a task. A task can be deleted if it is scheduled or dispatched.
+-- A task cannot be deleted if it has executed successfully or permanently
+-- failed.
+--
+-- /See:/ 'projectsLocationsQueuesTasksDelete' smart constructor.
+data ProjectsLocationsQueuesTasksDelete = ProjectsLocationsQueuesTasksDelete'
+    { _plqtdXgafv          :: !(Maybe Xgafv)
+    , _plqtdUploadProtocol :: !(Maybe Text)
+    , _plqtdAccessToken    :: !(Maybe Text)
+    , _plqtdUploadType     :: !(Maybe Text)
+    , _plqtdName           :: !Text
+    , _plqtdCallback       :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ProjectsLocationsQueuesTasksDelete' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'plqtdXgafv'
+--
+-- * 'plqtdUploadProtocol'
+--
+-- * 'plqtdAccessToken'
+--
+-- * 'plqtdUploadType'
+--
+-- * 'plqtdName'
+--
+-- * 'plqtdCallback'
+projectsLocationsQueuesTasksDelete
+    :: Text -- ^ 'plqtdName'
+    -> ProjectsLocationsQueuesTasksDelete
+projectsLocationsQueuesTasksDelete pPlqtdName_ =
+    ProjectsLocationsQueuesTasksDelete'
+    { _plqtdXgafv = Nothing
+    , _plqtdUploadProtocol = Nothing
+    , _plqtdAccessToken = Nothing
+    , _plqtdUploadType = Nothing
+    , _plqtdName = pPlqtdName_
+    , _plqtdCallback = Nothing
+    }
+
+-- | V1 error format.
+plqtdXgafv :: Lens' ProjectsLocationsQueuesTasksDelete (Maybe Xgafv)
+plqtdXgafv
+  = lens _plqtdXgafv (\ s a -> s{_plqtdXgafv = a})
+
+-- | Upload protocol for media (e.g. \"raw\", \"multipart\").
+plqtdUploadProtocol :: Lens' ProjectsLocationsQueuesTasksDelete (Maybe Text)
+plqtdUploadProtocol
+  = lens _plqtdUploadProtocol
+      (\ s a -> s{_plqtdUploadProtocol = a})
+
+-- | OAuth access token.
+plqtdAccessToken :: Lens' ProjectsLocationsQueuesTasksDelete (Maybe Text)
+plqtdAccessToken
+  = lens _plqtdAccessToken
+      (\ s a -> s{_plqtdAccessToken = a})
+
+-- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
+plqtdUploadType :: Lens' ProjectsLocationsQueuesTasksDelete (Maybe Text)
+plqtdUploadType
+  = lens _plqtdUploadType
+      (\ s a -> s{_plqtdUploadType = a})
+
+-- | Required. The task name. For example:
+-- \`projects\/PROJECT_ID\/locations\/LOCATION_ID\/queues\/QUEUE_ID\/tasks\/TASK_ID\`
+plqtdName :: Lens' ProjectsLocationsQueuesTasksDelete Text
+plqtdName
+  = lens _plqtdName (\ s a -> s{_plqtdName = a})
+
+-- | JSONP
+plqtdCallback :: Lens' ProjectsLocationsQueuesTasksDelete (Maybe Text)
+plqtdCallback
+  = lens _plqtdCallback
+      (\ s a -> s{_plqtdCallback = a})
+
+instance GoogleRequest
+         ProjectsLocationsQueuesTasksDelete where
+        type Rs ProjectsLocationsQueuesTasksDelete = Empty
+        type Scopes ProjectsLocationsQueuesTasksDelete =
+             '["https://www.googleapis.com/auth/cloud-platform"]
+        requestClient ProjectsLocationsQueuesTasksDelete'{..}
+          = go _plqtdName _plqtdXgafv _plqtdUploadProtocol
+              _plqtdAccessToken
+              _plqtdUploadType
+              _plqtdCallback
+              (Just AltJSON)
+              cloudTasksService
+          where go
+                  = buildClient
+                      (Proxy ::
+                         Proxy ProjectsLocationsQueuesTasksDeleteResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/CloudTasks/Projects/Locations/Queues/Tasks/Get.hs b/gen/Network/Google/Resource/CloudTasks/Projects/Locations/Queues/Tasks/Get.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/CloudTasks/Projects/Locations/Queues/Tasks/Get.hs
@@ -0,0 +1,169 @@
+{-# 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.CloudTasks.Projects.Locations.Queues.Tasks.Get
+-- Copyright   : (c) 2015-2016 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Gets a task.
+--
+-- /See:/ <https://cloud.google.com/tasks/ Cloud Tasks API Reference> for @cloudtasks.projects.locations.queues.tasks.get@.
+module Network.Google.Resource.CloudTasks.Projects.Locations.Queues.Tasks.Get
+    (
+    -- * REST Resource
+      ProjectsLocationsQueuesTasksGetResource
+
+    -- * Creating a Request
+    , projectsLocationsQueuesTasksGet
+    , ProjectsLocationsQueuesTasksGet
+
+    -- * Request Lenses
+    , plqtgXgafv
+    , plqtgUploadProtocol
+    , plqtgAccessToken
+    , plqtgUploadType
+    , plqtgResponseView
+    , plqtgName
+    , plqtgCallback
+    ) where
+
+import           Network.Google.CloudTasks.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @cloudtasks.projects.locations.queues.tasks.get@ method which the
+-- 'ProjectsLocationsQueuesTasksGet' request conforms to.
+type ProjectsLocationsQueuesTasksGetResource =
+     "v2beta3" :>
+       Capture "name" Text :>
+         QueryParam "$.xgafv" Xgafv :>
+           QueryParam "upload_protocol" Text :>
+             QueryParam "access_token" Text :>
+               QueryParam "uploadType" Text :>
+                 QueryParam "responseView" Text :>
+                   QueryParam "callback" Text :>
+                     QueryParam "alt" AltJSON :> Get '[JSON] Task
+
+-- | Gets a task.
+--
+-- /See:/ 'projectsLocationsQueuesTasksGet' smart constructor.
+data ProjectsLocationsQueuesTasksGet = ProjectsLocationsQueuesTasksGet'
+    { _plqtgXgafv          :: !(Maybe Xgafv)
+    , _plqtgUploadProtocol :: !(Maybe Text)
+    , _plqtgAccessToken    :: !(Maybe Text)
+    , _plqtgUploadType     :: !(Maybe Text)
+    , _plqtgResponseView   :: !(Maybe Text)
+    , _plqtgName           :: !Text
+    , _plqtgCallback       :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ProjectsLocationsQueuesTasksGet' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'plqtgXgafv'
+--
+-- * 'plqtgUploadProtocol'
+--
+-- * 'plqtgAccessToken'
+--
+-- * 'plqtgUploadType'
+--
+-- * 'plqtgResponseView'
+--
+-- * 'plqtgName'
+--
+-- * 'plqtgCallback'
+projectsLocationsQueuesTasksGet
+    :: Text -- ^ 'plqtgName'
+    -> ProjectsLocationsQueuesTasksGet
+projectsLocationsQueuesTasksGet pPlqtgName_ =
+    ProjectsLocationsQueuesTasksGet'
+    { _plqtgXgafv = Nothing
+    , _plqtgUploadProtocol = Nothing
+    , _plqtgAccessToken = Nothing
+    , _plqtgUploadType = Nothing
+    , _plqtgResponseView = Nothing
+    , _plqtgName = pPlqtgName_
+    , _plqtgCallback = Nothing
+    }
+
+-- | V1 error format.
+plqtgXgafv :: Lens' ProjectsLocationsQueuesTasksGet (Maybe Xgafv)
+plqtgXgafv
+  = lens _plqtgXgafv (\ s a -> s{_plqtgXgafv = a})
+
+-- | Upload protocol for media (e.g. \"raw\", \"multipart\").
+plqtgUploadProtocol :: Lens' ProjectsLocationsQueuesTasksGet (Maybe Text)
+plqtgUploadProtocol
+  = lens _plqtgUploadProtocol
+      (\ s a -> s{_plqtgUploadProtocol = a})
+
+-- | OAuth access token.
+plqtgAccessToken :: Lens' ProjectsLocationsQueuesTasksGet (Maybe Text)
+plqtgAccessToken
+  = lens _plqtgAccessToken
+      (\ s a -> s{_plqtgAccessToken = a})
+
+-- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
+plqtgUploadType :: Lens' ProjectsLocationsQueuesTasksGet (Maybe Text)
+plqtgUploadType
+  = lens _plqtgUploadType
+      (\ s a -> s{_plqtgUploadType = a})
+
+-- | The response_view specifies which subset of the Task will be returned.
+-- By default response_view is BASIC; not all information is retrieved by
+-- default because some data, such as payloads, might be desirable to
+-- return only when needed because of its large size or because of the
+-- sensitivity of data that it contains. Authorization for FULL requires
+-- \`cloudtasks.tasks.fullView\` [Google
+-- IAM](https:\/\/cloud.google.com\/iam\/) permission on the Task resource.
+plqtgResponseView :: Lens' ProjectsLocationsQueuesTasksGet (Maybe Text)
+plqtgResponseView
+  = lens _plqtgResponseView
+      (\ s a -> s{_plqtgResponseView = a})
+
+-- | Required. The task name. For example:
+-- \`projects\/PROJECT_ID\/locations\/LOCATION_ID\/queues\/QUEUE_ID\/tasks\/TASK_ID\`
+plqtgName :: Lens' ProjectsLocationsQueuesTasksGet Text
+plqtgName
+  = lens _plqtgName (\ s a -> s{_plqtgName = a})
+
+-- | JSONP
+plqtgCallback :: Lens' ProjectsLocationsQueuesTasksGet (Maybe Text)
+plqtgCallback
+  = lens _plqtgCallback
+      (\ s a -> s{_plqtgCallback = a})
+
+instance GoogleRequest
+         ProjectsLocationsQueuesTasksGet where
+        type Rs ProjectsLocationsQueuesTasksGet = Task
+        type Scopes ProjectsLocationsQueuesTasksGet =
+             '["https://www.googleapis.com/auth/cloud-platform"]
+        requestClient ProjectsLocationsQueuesTasksGet'{..}
+          = go _plqtgName _plqtgXgafv _plqtgUploadProtocol
+              _plqtgAccessToken
+              _plqtgUploadType
+              _plqtgResponseView
+              _plqtgCallback
+              (Just AltJSON)
+              cloudTasksService
+          where go
+                  = buildClient
+                      (Proxy ::
+                         Proxy ProjectsLocationsQueuesTasksGetResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/CloudTasks/Projects/Locations/Queues/Tasks/List.hs b/gen/Network/Google/Resource/CloudTasks/Projects/Locations/Queues/Tasks/List.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/CloudTasks/Projects/Locations/Queues/Tasks/List.hs
@@ -0,0 +1,213 @@
+{-# 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.CloudTasks.Projects.Locations.Queues.Tasks.List
+-- Copyright   : (c) 2015-2016 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)
+--
+-- Lists the tasks in a queue. By default, only the BASIC view is retrieved
+-- due to performance considerations; response_view controls the subset of
+-- information which is returned. The tasks may be returned in any order.
+-- The ordering may change at any time.
+--
+-- /See:/ <https://cloud.google.com/tasks/ Cloud Tasks API Reference> for @cloudtasks.projects.locations.queues.tasks.list@.
+module Network.Google.Resource.CloudTasks.Projects.Locations.Queues.Tasks.List
+    (
+    -- * REST Resource
+      ProjectsLocationsQueuesTasksListResource
+
+    -- * Creating a Request
+    , projectsLocationsQueuesTasksList
+    , ProjectsLocationsQueuesTasksList
+
+    -- * Request Lenses
+    , plqtlParent
+    , plqtlXgafv
+    , plqtlUploadProtocol
+    , plqtlAccessToken
+    , plqtlUploadType
+    , plqtlResponseView
+    , plqtlPageToken
+    , plqtlPageSize
+    , plqtlCallback
+    ) where
+
+import           Network.Google.CloudTasks.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @cloudtasks.projects.locations.queues.tasks.list@ method which the
+-- 'ProjectsLocationsQueuesTasksList' request conforms to.
+type ProjectsLocationsQueuesTasksListResource =
+     "v2beta3" :>
+       Capture "parent" Text :>
+         "tasks" :>
+           QueryParam "$.xgafv" Xgafv :>
+             QueryParam "upload_protocol" Text :>
+               QueryParam "access_token" Text :>
+                 QueryParam "uploadType" Text :>
+                   QueryParam "responseView" Text :>
+                     QueryParam "pageToken" Text :>
+                       QueryParam "pageSize" (Textual Int32) :>
+                         QueryParam "callback" Text :>
+                           QueryParam "alt" AltJSON :>
+                             Get '[JSON] ListTasksResponse
+
+-- | Lists the tasks in a queue. By default, only the BASIC view is retrieved
+-- due to performance considerations; response_view controls the subset of
+-- information which is returned. The tasks may be returned in any order.
+-- The ordering may change at any time.
+--
+-- /See:/ 'projectsLocationsQueuesTasksList' smart constructor.
+data ProjectsLocationsQueuesTasksList = ProjectsLocationsQueuesTasksList'
+    { _plqtlParent         :: !Text
+    , _plqtlXgafv          :: !(Maybe Xgafv)
+    , _plqtlUploadProtocol :: !(Maybe Text)
+    , _plqtlAccessToken    :: !(Maybe Text)
+    , _plqtlUploadType     :: !(Maybe Text)
+    , _plqtlResponseView   :: !(Maybe Text)
+    , _plqtlPageToken      :: !(Maybe Text)
+    , _plqtlPageSize       :: !(Maybe (Textual Int32))
+    , _plqtlCallback       :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ProjectsLocationsQueuesTasksList' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'plqtlParent'
+--
+-- * 'plqtlXgafv'
+--
+-- * 'plqtlUploadProtocol'
+--
+-- * 'plqtlAccessToken'
+--
+-- * 'plqtlUploadType'
+--
+-- * 'plqtlResponseView'
+--
+-- * 'plqtlPageToken'
+--
+-- * 'plqtlPageSize'
+--
+-- * 'plqtlCallback'
+projectsLocationsQueuesTasksList
+    :: Text -- ^ 'plqtlParent'
+    -> ProjectsLocationsQueuesTasksList
+projectsLocationsQueuesTasksList pPlqtlParent_ =
+    ProjectsLocationsQueuesTasksList'
+    { _plqtlParent = pPlqtlParent_
+    , _plqtlXgafv = Nothing
+    , _plqtlUploadProtocol = Nothing
+    , _plqtlAccessToken = Nothing
+    , _plqtlUploadType = Nothing
+    , _plqtlResponseView = Nothing
+    , _plqtlPageToken = Nothing
+    , _plqtlPageSize = Nothing
+    , _plqtlCallback = Nothing
+    }
+
+-- | Required. The queue name. For example:
+-- \`projects\/PROJECT_ID\/locations\/LOCATION_ID\/queues\/QUEUE_ID\`
+plqtlParent :: Lens' ProjectsLocationsQueuesTasksList Text
+plqtlParent
+  = lens _plqtlParent (\ s a -> s{_plqtlParent = a})
+
+-- | V1 error format.
+plqtlXgafv :: Lens' ProjectsLocationsQueuesTasksList (Maybe Xgafv)
+plqtlXgafv
+  = lens _plqtlXgafv (\ s a -> s{_plqtlXgafv = a})
+
+-- | Upload protocol for media (e.g. \"raw\", \"multipart\").
+plqtlUploadProtocol :: Lens' ProjectsLocationsQueuesTasksList (Maybe Text)
+plqtlUploadProtocol
+  = lens _plqtlUploadProtocol
+      (\ s a -> s{_plqtlUploadProtocol = a})
+
+-- | OAuth access token.
+plqtlAccessToken :: Lens' ProjectsLocationsQueuesTasksList (Maybe Text)
+plqtlAccessToken
+  = lens _plqtlAccessToken
+      (\ s a -> s{_plqtlAccessToken = a})
+
+-- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
+plqtlUploadType :: Lens' ProjectsLocationsQueuesTasksList (Maybe Text)
+plqtlUploadType
+  = lens _plqtlUploadType
+      (\ s a -> s{_plqtlUploadType = a})
+
+-- | The response_view specifies which subset of the Task will be returned.
+-- By default response_view is BASIC; not all information is retrieved by
+-- default because some data, such as payloads, might be desirable to
+-- return only when needed because of its large size or because of the
+-- sensitivity of data that it contains. Authorization for FULL requires
+-- \`cloudtasks.tasks.fullView\` [Google
+-- IAM](https:\/\/cloud.google.com\/iam\/) permission on the Task resource.
+plqtlResponseView :: Lens' ProjectsLocationsQueuesTasksList (Maybe Text)
+plqtlResponseView
+  = lens _plqtlResponseView
+      (\ s a -> s{_plqtlResponseView = a})
+
+-- | A token identifying the page of results to return. To request the first
+-- page results, page_token must be empty. To request the next page of
+-- results, page_token must be the value of next_page_token returned from
+-- the previous call to ListTasks method. The page token is valid for only
+-- 2 hours.
+plqtlPageToken :: Lens' ProjectsLocationsQueuesTasksList (Maybe Text)
+plqtlPageToken
+  = lens _plqtlPageToken
+      (\ s a -> s{_plqtlPageToken = a})
+
+-- | Requested page size. Fewer tasks than requested might be returned. The
+-- maximum page size is 1000. If unspecified, the page size will be the
+-- maximum. Fewer tasks than requested might be returned, even if more
+-- tasks exist; use next_page_token in the response to determine if more
+-- tasks exist.
+plqtlPageSize :: Lens' ProjectsLocationsQueuesTasksList (Maybe Int32)
+plqtlPageSize
+  = lens _plqtlPageSize
+      (\ s a -> s{_plqtlPageSize = a})
+      . mapping _Coerce
+
+-- | JSONP
+plqtlCallback :: Lens' ProjectsLocationsQueuesTasksList (Maybe Text)
+plqtlCallback
+  = lens _plqtlCallback
+      (\ s a -> s{_plqtlCallback = a})
+
+instance GoogleRequest
+         ProjectsLocationsQueuesTasksList where
+        type Rs ProjectsLocationsQueuesTasksList =
+             ListTasksResponse
+        type Scopes ProjectsLocationsQueuesTasksList =
+             '["https://www.googleapis.com/auth/cloud-platform"]
+        requestClient ProjectsLocationsQueuesTasksList'{..}
+          = go _plqtlParent _plqtlXgafv _plqtlUploadProtocol
+              _plqtlAccessToken
+              _plqtlUploadType
+              _plqtlResponseView
+              _plqtlPageToken
+              _plqtlPageSize
+              _plqtlCallback
+              (Just AltJSON)
+              cloudTasksService
+          where go
+                  = buildClient
+                      (Proxy ::
+                         Proxy ProjectsLocationsQueuesTasksListResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/CloudTasks/Projects/Locations/Queues/Tasks/Run.hs b/gen/Network/Google/Resource/CloudTasks/Projects/Locations/Queues/Tasks/Run.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/CloudTasks/Projects/Locations/Queues/Tasks/Run.hs
@@ -0,0 +1,187 @@
+{-# LANGUAGE DataKinds          #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE FlexibleInstances  #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+{-# LANGUAGE TypeOperators      #-}
+
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
+
+-- |
+-- Module      : Network.Google.Resource.CloudTasks.Projects.Locations.Queues.Tasks.Run
+-- Copyright   : (c) 2015-2016 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)
+--
+-- Forces a task to run now. When this method is called, Cloud Tasks will
+-- dispatch the task, even if the task is already running, the queue has
+-- reached its RateLimits or is PAUSED. This command is meant to be used
+-- for manual debugging. For example, RunTask can be used to retry a failed
+-- task after a fix has been made or to manually force a task to be
+-- dispatched now. The dispatched task is returned. That is, the task that
+-- is returned contains the status after the task is dispatched but before
+-- the task is received by its target. If Cloud Tasks receives a successful
+-- response from the task\'s target, then the task will be deleted;
+-- otherwise the task\'s schedule_time will be reset to the time that
+-- RunTask was called plus the retry delay specified in the queue\'s
+-- RetryConfig. RunTask returns NOT_FOUND when it is called on a task that
+-- has already succeeded or permanently failed.
+--
+-- /See:/ <https://cloud.google.com/tasks/ Cloud Tasks API Reference> for @cloudtasks.projects.locations.queues.tasks.run@.
+module Network.Google.Resource.CloudTasks.Projects.Locations.Queues.Tasks.Run
+    (
+    -- * REST Resource
+      ProjectsLocationsQueuesTasksRunResource
+
+    -- * Creating a Request
+    , projectsLocationsQueuesTasksRun
+    , ProjectsLocationsQueuesTasksRun
+
+    -- * Request Lenses
+    , plqtrXgafv
+    , plqtrUploadProtocol
+    , plqtrAccessToken
+    , plqtrUploadType
+    , plqtrPayload
+    , plqtrName
+    , plqtrCallback
+    ) where
+
+import           Network.Google.CloudTasks.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @cloudtasks.projects.locations.queues.tasks.run@ method which the
+-- 'ProjectsLocationsQueuesTasksRun' request conforms to.
+type ProjectsLocationsQueuesTasksRunResource =
+     "v2beta3" :>
+       CaptureMode "name" "run" Text :>
+         QueryParam "$.xgafv" Xgafv :>
+           QueryParam "upload_protocol" Text :>
+             QueryParam "access_token" Text :>
+               QueryParam "uploadType" Text :>
+                 QueryParam "callback" Text :>
+                   QueryParam "alt" AltJSON :>
+                     ReqBody '[JSON] RunTaskRequest :> Post '[JSON] Task
+
+-- | Forces a task to run now. When this method is called, Cloud Tasks will
+-- dispatch the task, even if the task is already running, the queue has
+-- reached its RateLimits or is PAUSED. This command is meant to be used
+-- for manual debugging. For example, RunTask can be used to retry a failed
+-- task after a fix has been made or to manually force a task to be
+-- dispatched now. The dispatched task is returned. That is, the task that
+-- is returned contains the status after the task is dispatched but before
+-- the task is received by its target. If Cloud Tasks receives a successful
+-- response from the task\'s target, then the task will be deleted;
+-- otherwise the task\'s schedule_time will be reset to the time that
+-- RunTask was called plus the retry delay specified in the queue\'s
+-- RetryConfig. RunTask returns NOT_FOUND when it is called on a task that
+-- has already succeeded or permanently failed.
+--
+-- /See:/ 'projectsLocationsQueuesTasksRun' smart constructor.
+data ProjectsLocationsQueuesTasksRun = ProjectsLocationsQueuesTasksRun'
+    { _plqtrXgafv          :: !(Maybe Xgafv)
+    , _plqtrUploadProtocol :: !(Maybe Text)
+    , _plqtrAccessToken    :: !(Maybe Text)
+    , _plqtrUploadType     :: !(Maybe Text)
+    , _plqtrPayload        :: !RunTaskRequest
+    , _plqtrName           :: !Text
+    , _plqtrCallback       :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ProjectsLocationsQueuesTasksRun' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'plqtrXgafv'
+--
+-- * 'plqtrUploadProtocol'
+--
+-- * 'plqtrAccessToken'
+--
+-- * 'plqtrUploadType'
+--
+-- * 'plqtrPayload'
+--
+-- * 'plqtrName'
+--
+-- * 'plqtrCallback'
+projectsLocationsQueuesTasksRun
+    :: RunTaskRequest -- ^ 'plqtrPayload'
+    -> Text -- ^ 'plqtrName'
+    -> ProjectsLocationsQueuesTasksRun
+projectsLocationsQueuesTasksRun pPlqtrPayload_ pPlqtrName_ =
+    ProjectsLocationsQueuesTasksRun'
+    { _plqtrXgafv = Nothing
+    , _plqtrUploadProtocol = Nothing
+    , _plqtrAccessToken = Nothing
+    , _plqtrUploadType = Nothing
+    , _plqtrPayload = pPlqtrPayload_
+    , _plqtrName = pPlqtrName_
+    , _plqtrCallback = Nothing
+    }
+
+-- | V1 error format.
+plqtrXgafv :: Lens' ProjectsLocationsQueuesTasksRun (Maybe Xgafv)
+plqtrXgafv
+  = lens _plqtrXgafv (\ s a -> s{_plqtrXgafv = a})
+
+-- | Upload protocol for media (e.g. \"raw\", \"multipart\").
+plqtrUploadProtocol :: Lens' ProjectsLocationsQueuesTasksRun (Maybe Text)
+plqtrUploadProtocol
+  = lens _plqtrUploadProtocol
+      (\ s a -> s{_plqtrUploadProtocol = a})
+
+-- | OAuth access token.
+plqtrAccessToken :: Lens' ProjectsLocationsQueuesTasksRun (Maybe Text)
+plqtrAccessToken
+  = lens _plqtrAccessToken
+      (\ s a -> s{_plqtrAccessToken = a})
+
+-- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
+plqtrUploadType :: Lens' ProjectsLocationsQueuesTasksRun (Maybe Text)
+plqtrUploadType
+  = lens _plqtrUploadType
+      (\ s a -> s{_plqtrUploadType = a})
+
+-- | Multipart request metadata.
+plqtrPayload :: Lens' ProjectsLocationsQueuesTasksRun RunTaskRequest
+plqtrPayload
+  = lens _plqtrPayload (\ s a -> s{_plqtrPayload = a})
+
+-- | Required. The task name. For example:
+-- \`projects\/PROJECT_ID\/locations\/LOCATION_ID\/queues\/QUEUE_ID\/tasks\/TASK_ID\`
+plqtrName :: Lens' ProjectsLocationsQueuesTasksRun Text
+plqtrName
+  = lens _plqtrName (\ s a -> s{_plqtrName = a})
+
+-- | JSONP
+plqtrCallback :: Lens' ProjectsLocationsQueuesTasksRun (Maybe Text)
+plqtrCallback
+  = lens _plqtrCallback
+      (\ s a -> s{_plqtrCallback = a})
+
+instance GoogleRequest
+         ProjectsLocationsQueuesTasksRun where
+        type Rs ProjectsLocationsQueuesTasksRun = Task
+        type Scopes ProjectsLocationsQueuesTasksRun =
+             '["https://www.googleapis.com/auth/cloud-platform"]
+        requestClient ProjectsLocationsQueuesTasksRun'{..}
+          = go _plqtrName _plqtrXgafv _plqtrUploadProtocol
+              _plqtrAccessToken
+              _plqtrUploadType
+              _plqtrCallback
+              (Just AltJSON)
+              _plqtrPayload
+              cloudTasksService
+          where go
+                  = buildClient
+                      (Proxy ::
+                         Proxy ProjectsLocationsQueuesTasksRunResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/CloudTasks/Projects/Locations/Queues/TestIAMPermissions.hs b/gen/Network/Google/Resource/CloudTasks/Projects/Locations/Queues/TestIAMPermissions.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/CloudTasks/Projects/Locations/Queues/TestIAMPermissions.hs
@@ -0,0 +1,180 @@
+{-# 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.CloudTasks.Projects.Locations.Queues.TestIAMPermissions
+-- Copyright   : (c) 2015-2016 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)
+--
+-- Returns permissions that a caller has on a Queue. If the resource does
+-- not exist, this will return an empty set of permissions, not a NOT_FOUND
+-- error. Note: This operation is designed to be used for building
+-- permission-aware UIs and command-line tools, not for authorization
+-- checking. This operation may \"fail open\" without warning.
+--
+-- /See:/ <https://cloud.google.com/tasks/ Cloud Tasks API Reference> for @cloudtasks.projects.locations.queues.testIamPermissions@.
+module Network.Google.Resource.CloudTasks.Projects.Locations.Queues.TestIAMPermissions
+    (
+    -- * REST Resource
+      ProjectsLocationsQueuesTestIAMPermissionsResource
+
+    -- * Creating a Request
+    , projectsLocationsQueuesTestIAMPermissions
+    , ProjectsLocationsQueuesTestIAMPermissions
+
+    -- * Request Lenses
+    , plqtipXgafv
+    , plqtipUploadProtocol
+    , plqtipAccessToken
+    , plqtipUploadType
+    , plqtipPayload
+    , plqtipResource
+    , plqtipCallback
+    ) where
+
+import           Network.Google.CloudTasks.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @cloudtasks.projects.locations.queues.testIamPermissions@ method which the
+-- 'ProjectsLocationsQueuesTestIAMPermissions' request conforms to.
+type ProjectsLocationsQueuesTestIAMPermissionsResource
+     =
+     "v2beta3" :>
+       CaptureMode "resource" "testIamPermissions" Text :>
+         QueryParam "$.xgafv" Xgafv :>
+           QueryParam "upload_protocol" Text :>
+             QueryParam "access_token" Text :>
+               QueryParam "uploadType" Text :>
+                 QueryParam "callback" Text :>
+                   QueryParam "alt" AltJSON :>
+                     ReqBody '[JSON] TestIAMPermissionsRequest :>
+                       Post '[JSON] TestIAMPermissionsResponse
+
+-- | Returns permissions that a caller has on a Queue. If the resource does
+-- not exist, this will return an empty set of permissions, not a NOT_FOUND
+-- error. Note: This operation is designed to be used for building
+-- permission-aware UIs and command-line tools, not for authorization
+-- checking. This operation may \"fail open\" without warning.
+--
+-- /See:/ 'projectsLocationsQueuesTestIAMPermissions' smart constructor.
+data ProjectsLocationsQueuesTestIAMPermissions = ProjectsLocationsQueuesTestIAMPermissions'
+    { _plqtipXgafv          :: !(Maybe Xgafv)
+    , _plqtipUploadProtocol :: !(Maybe Text)
+    , _plqtipAccessToken    :: !(Maybe Text)
+    , _plqtipUploadType     :: !(Maybe Text)
+    , _plqtipPayload        :: !TestIAMPermissionsRequest
+    , _plqtipResource       :: !Text
+    , _plqtipCallback       :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ProjectsLocationsQueuesTestIAMPermissions' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'plqtipXgafv'
+--
+-- * 'plqtipUploadProtocol'
+--
+-- * 'plqtipAccessToken'
+--
+-- * 'plqtipUploadType'
+--
+-- * 'plqtipPayload'
+--
+-- * 'plqtipResource'
+--
+-- * 'plqtipCallback'
+projectsLocationsQueuesTestIAMPermissions
+    :: TestIAMPermissionsRequest -- ^ 'plqtipPayload'
+    -> Text -- ^ 'plqtipResource'
+    -> ProjectsLocationsQueuesTestIAMPermissions
+projectsLocationsQueuesTestIAMPermissions pPlqtipPayload_ pPlqtipResource_ =
+    ProjectsLocationsQueuesTestIAMPermissions'
+    { _plqtipXgafv = Nothing
+    , _plqtipUploadProtocol = Nothing
+    , _plqtipAccessToken = Nothing
+    , _plqtipUploadType = Nothing
+    , _plqtipPayload = pPlqtipPayload_
+    , _plqtipResource = pPlqtipResource_
+    , _plqtipCallback = Nothing
+    }
+
+-- | V1 error format.
+plqtipXgafv :: Lens' ProjectsLocationsQueuesTestIAMPermissions (Maybe Xgafv)
+plqtipXgafv
+  = lens _plqtipXgafv (\ s a -> s{_plqtipXgafv = a})
+
+-- | Upload protocol for media (e.g. \"raw\", \"multipart\").
+plqtipUploadProtocol :: Lens' ProjectsLocationsQueuesTestIAMPermissions (Maybe Text)
+plqtipUploadProtocol
+  = lens _plqtipUploadProtocol
+      (\ s a -> s{_plqtipUploadProtocol = a})
+
+-- | OAuth access token.
+plqtipAccessToken :: Lens' ProjectsLocationsQueuesTestIAMPermissions (Maybe Text)
+plqtipAccessToken
+  = lens _plqtipAccessToken
+      (\ s a -> s{_plqtipAccessToken = a})
+
+-- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
+plqtipUploadType :: Lens' ProjectsLocationsQueuesTestIAMPermissions (Maybe Text)
+plqtipUploadType
+  = lens _plqtipUploadType
+      (\ s a -> s{_plqtipUploadType = a})
+
+-- | Multipart request metadata.
+plqtipPayload :: Lens' ProjectsLocationsQueuesTestIAMPermissions TestIAMPermissionsRequest
+plqtipPayload
+  = lens _plqtipPayload
+      (\ s a -> s{_plqtipPayload = a})
+
+-- | REQUIRED: The resource for which the policy detail is being requested.
+-- See the operation documentation for the appropriate value for this
+-- field.
+plqtipResource :: Lens' ProjectsLocationsQueuesTestIAMPermissions Text
+plqtipResource
+  = lens _plqtipResource
+      (\ s a -> s{_plqtipResource = a})
+
+-- | JSONP
+plqtipCallback :: Lens' ProjectsLocationsQueuesTestIAMPermissions (Maybe Text)
+plqtipCallback
+  = lens _plqtipCallback
+      (\ s a -> s{_plqtipCallback = a})
+
+instance GoogleRequest
+         ProjectsLocationsQueuesTestIAMPermissions where
+        type Rs ProjectsLocationsQueuesTestIAMPermissions =
+             TestIAMPermissionsResponse
+        type Scopes ProjectsLocationsQueuesTestIAMPermissions
+             = '["https://www.googleapis.com/auth/cloud-platform"]
+        requestClient
+          ProjectsLocationsQueuesTestIAMPermissions'{..}
+          = go _plqtipResource _plqtipXgafv
+              _plqtipUploadProtocol
+              _plqtipAccessToken
+              _plqtipUploadType
+              _plqtipCallback
+              (Just AltJSON)
+              _plqtipPayload
+              cloudTasksService
+          where go
+                  = buildClient
+                      (Proxy ::
+                         Proxy
+                           ProjectsLocationsQueuesTestIAMPermissionsResource)
+                      mempty
diff --git a/gogol-cloudtasks.cabal b/gogol-cloudtasks.cabal
new file mode 100644
--- /dev/null
+++ b/gogol-cloudtasks.cabal
@@ -0,0 +1,63 @@
+name:                  gogol-cloudtasks
+version:               0.4.0
+synopsis:              Google Cloud Tasks 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-2016 Brendan Hay
+category:              Network, Google, Cloud
+build-type:            Simple
+cabal-version:         >= 1.10
+extra-source-files:    README.md src/.gitkeep
+
+description:
+    Manages the execution of large numbers of distributed requests.
+    .
+    /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 @v2beta3@
+    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.CloudTasks
+        , Network.Google.CloudTasks.Types
+        , Network.Google.Resource.CloudTasks.Projects.Locations.Get
+        , Network.Google.Resource.CloudTasks.Projects.Locations.List
+        , Network.Google.Resource.CloudTasks.Projects.Locations.Queues.Create
+        , Network.Google.Resource.CloudTasks.Projects.Locations.Queues.Delete
+        , Network.Google.Resource.CloudTasks.Projects.Locations.Queues.Get
+        , Network.Google.Resource.CloudTasks.Projects.Locations.Queues.GetIAMPolicy
+        , Network.Google.Resource.CloudTasks.Projects.Locations.Queues.List
+        , Network.Google.Resource.CloudTasks.Projects.Locations.Queues.Patch
+        , Network.Google.Resource.CloudTasks.Projects.Locations.Queues.Pause
+        , Network.Google.Resource.CloudTasks.Projects.Locations.Queues.Purge
+        , Network.Google.Resource.CloudTasks.Projects.Locations.Queues.Resume
+        , Network.Google.Resource.CloudTasks.Projects.Locations.Queues.SetIAMPolicy
+        , Network.Google.Resource.CloudTasks.Projects.Locations.Queues.Tasks.Create
+        , Network.Google.Resource.CloudTasks.Projects.Locations.Queues.Tasks.Delete
+        , Network.Google.Resource.CloudTasks.Projects.Locations.Queues.Tasks.Get
+        , Network.Google.Resource.CloudTasks.Projects.Locations.Queues.Tasks.List
+        , Network.Google.Resource.CloudTasks.Projects.Locations.Queues.Tasks.Run
+        , Network.Google.Resource.CloudTasks.Projects.Locations.Queues.TestIAMPermissions
+
+    other-modules:
+          Network.Google.CloudTasks.Types.Product
+        , Network.Google.CloudTasks.Types.Sum
+
+    build-depends:
+          gogol-core == 0.4.0.*
+        , base       >= 4.7 && < 5
diff --git a/src/.gitkeep b/src/.gitkeep
new file mode 100644
--- /dev/null
+++ b/src/.gitkeep
