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-useraccounts
+
+* [Version](#version)
+* [Description](#description)
+* [Contribute](#contribute)
+* [Licence](#licence)
+
+
+## Version
+
+`0.0.1`
+
+
+## Description
+
+A client library for the Google Cloud User Accounts.
+
+
+## Contribute
+
+For any problems, comments, or feedback please create an issue [here on GitHub](https://github.com/brendanhay/amazonka/issues).
+
+> _Note:_ this library is an auto-generated Haskell package. Please see `amazonka-gen` for more information.
+
+
+## Licence
+
+`gogol-useraccounts` is released under the [Mozilla Public License Version 2.0](http://www.mozilla.org/MPL/).
diff --git a/Setup.hs b/Setup.hs
new file mode 100644
--- /dev/null
+++ b/Setup.hs
@@ -0,0 +1,2 @@
+import           Distribution.Simple
+main = defaultMain
diff --git a/gen/Network/Google/Resource/CloudUserAccounts/GlobalAccountsOperations/Delete.hs b/gen/Network/Google/Resource/CloudUserAccounts/GlobalAccountsOperations/Delete.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/CloudUserAccounts/GlobalAccountsOperations/Delete.hs
@@ -0,0 +1,101 @@
+{-# LANGUAGE DataKinds          #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE FlexibleInstances  #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+{-# LANGUAGE TypeOperators      #-}
+
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
+
+-- |
+-- Module      : Network.Google.Resource.CloudUserAccounts.GlobalAccountsOperations.Delete
+-- Copyright   : (c) 2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Deletes the specified operation resource.
+--
+-- /See:/ <https://cloud.google.com/compute/docs/access/user-accounts/api/latest/ Cloud User Accounts API Reference> for @clouduseraccounts.globalAccountsOperations.delete@.
+module Network.Google.Resource.CloudUserAccounts.GlobalAccountsOperations.Delete
+    (
+    -- * REST Resource
+      GlobalAccountsOperationsDeleteResource
+
+    -- * Creating a Request
+    , globalAccountsOperationsDelete
+    , GlobalAccountsOperationsDelete
+
+    -- * Request Lenses
+    , gaodProject
+    , gaodOperation
+    ) where
+
+import           Network.Google.Prelude
+import           Network.Google.UserAccounts.Types
+
+-- | A resource alias for @clouduseraccounts.globalAccountsOperations.delete@ method which the
+-- 'GlobalAccountsOperationsDelete' request conforms to.
+type GlobalAccountsOperationsDeleteResource =
+     "clouduseraccounts" :>
+       "beta" :>
+         "projects" :>
+           Capture "project" Text :>
+             "global" :>
+               "operations" :>
+                 Capture "operation" Text :>
+                   QueryParam "alt" AltJSON :> Delete '[JSON] ()
+
+-- | Deletes the specified operation resource.
+--
+-- /See:/ 'globalAccountsOperationsDelete' smart constructor.
+data GlobalAccountsOperationsDelete = GlobalAccountsOperationsDelete
+    { _gaodProject   :: !Text
+    , _gaodOperation :: !Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'GlobalAccountsOperationsDelete' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'gaodProject'
+--
+-- * 'gaodOperation'
+globalAccountsOperationsDelete
+    :: Text -- ^ 'gaodProject'
+    -> Text -- ^ 'gaodOperation'
+    -> GlobalAccountsOperationsDelete
+globalAccountsOperationsDelete pGaodProject_ pGaodOperation_ =
+    GlobalAccountsOperationsDelete
+    { _gaodProject = pGaodProject_
+    , _gaodOperation = pGaodOperation_
+    }
+
+-- | Project ID for this request.
+gaodProject :: Lens' GlobalAccountsOperationsDelete Text
+gaodProject
+  = lens _gaodProject (\ s a -> s{_gaodProject = a})
+
+-- | Name of the Operations resource to delete.
+gaodOperation :: Lens' GlobalAccountsOperationsDelete Text
+gaodOperation
+  = lens _gaodOperation
+      (\ s a -> s{_gaodOperation = a})
+
+instance GoogleRequest GlobalAccountsOperationsDelete
+         where
+        type Rs GlobalAccountsOperationsDelete = ()
+        requestClient GlobalAccountsOperationsDelete{..}
+          = go _gaodProject _gaodOperation (Just AltJSON)
+              userAccountsService
+          where go
+                  = buildClient
+                      (Proxy ::
+                         Proxy GlobalAccountsOperationsDeleteResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/CloudUserAccounts/GlobalAccountsOperations/Get.hs b/gen/Network/Google/Resource/CloudUserAccounts/GlobalAccountsOperations/Get.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/CloudUserAccounts/GlobalAccountsOperations/Get.hs
@@ -0,0 +1,100 @@
+{-# LANGUAGE DataKinds          #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE FlexibleInstances  #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+{-# LANGUAGE TypeOperators      #-}
+
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
+
+-- |
+-- Module      : Network.Google.Resource.CloudUserAccounts.GlobalAccountsOperations.Get
+-- Copyright   : (c) 2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Retrieves the specified operation resource.
+--
+-- /See:/ <https://cloud.google.com/compute/docs/access/user-accounts/api/latest/ Cloud User Accounts API Reference> for @clouduseraccounts.globalAccountsOperations.get@.
+module Network.Google.Resource.CloudUserAccounts.GlobalAccountsOperations.Get
+    (
+    -- * REST Resource
+      GlobalAccountsOperationsGetResource
+
+    -- * Creating a Request
+    , globalAccountsOperationsGet
+    , GlobalAccountsOperationsGet
+
+    -- * Request Lenses
+    , gaogProject
+    , gaogOperation
+    ) where
+
+import           Network.Google.Prelude
+import           Network.Google.UserAccounts.Types
+
+-- | A resource alias for @clouduseraccounts.globalAccountsOperations.get@ method which the
+-- 'GlobalAccountsOperationsGet' request conforms to.
+type GlobalAccountsOperationsGetResource =
+     "clouduseraccounts" :>
+       "beta" :>
+         "projects" :>
+           Capture "project" Text :>
+             "global" :>
+               "operations" :>
+                 Capture "operation" Text :>
+                   QueryParam "alt" AltJSON :> Get '[JSON] Operation
+
+-- | Retrieves the specified operation resource.
+--
+-- /See:/ 'globalAccountsOperationsGet' smart constructor.
+data GlobalAccountsOperationsGet = GlobalAccountsOperationsGet
+    { _gaogProject   :: !Text
+    , _gaogOperation :: !Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'GlobalAccountsOperationsGet' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'gaogProject'
+--
+-- * 'gaogOperation'
+globalAccountsOperationsGet
+    :: Text -- ^ 'gaogProject'
+    -> Text -- ^ 'gaogOperation'
+    -> GlobalAccountsOperationsGet
+globalAccountsOperationsGet pGaogProject_ pGaogOperation_ =
+    GlobalAccountsOperationsGet
+    { _gaogProject = pGaogProject_
+    , _gaogOperation = pGaogOperation_
+    }
+
+-- | Project ID for this request.
+gaogProject :: Lens' GlobalAccountsOperationsGet Text
+gaogProject
+  = lens _gaogProject (\ s a -> s{_gaogProject = a})
+
+-- | Name of the Operations resource to return.
+gaogOperation :: Lens' GlobalAccountsOperationsGet Text
+gaogOperation
+  = lens _gaogOperation
+      (\ s a -> s{_gaogOperation = a})
+
+instance GoogleRequest GlobalAccountsOperationsGet
+         where
+        type Rs GlobalAccountsOperationsGet = Operation
+        requestClient GlobalAccountsOperationsGet{..}
+          = go _gaogProject _gaogOperation (Just AltJSON)
+              userAccountsService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy GlobalAccountsOperationsGetResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/CloudUserAccounts/GlobalAccountsOperations/List.hs b/gen/Network/Google/Resource/CloudUserAccounts/GlobalAccountsOperations/List.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/CloudUserAccounts/GlobalAccountsOperations/List.hs
@@ -0,0 +1,158 @@
+{-# 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.CloudUserAccounts.GlobalAccountsOperations.List
+-- Copyright   : (c) 2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Retrieves the list of operation resources contained within the specified
+-- project.
+--
+-- /See:/ <https://cloud.google.com/compute/docs/access/user-accounts/api/latest/ Cloud User Accounts API Reference> for @clouduseraccounts.globalAccountsOperations.list@.
+module Network.Google.Resource.CloudUserAccounts.GlobalAccountsOperations.List
+    (
+    -- * REST Resource
+      GlobalAccountsOperationsListResource
+
+    -- * Creating a Request
+    , globalAccountsOperationsList
+    , GlobalAccountsOperationsList
+
+    -- * Request Lenses
+    , gaolOrderBy
+    , gaolProject
+    , gaolFilter
+    , gaolPageToken
+    , gaolMaxResults
+    ) where
+
+import           Network.Google.Prelude
+import           Network.Google.UserAccounts.Types
+
+-- | A resource alias for @clouduseraccounts.globalAccountsOperations.list@ method which the
+-- 'GlobalAccountsOperationsList' request conforms to.
+type GlobalAccountsOperationsListResource =
+     "clouduseraccounts" :>
+       "beta" :>
+         "projects" :>
+           Capture "project" Text :>
+             "global" :>
+               "operations" :>
+                 QueryParam "orderBy" Text :>
+                   QueryParam "filter" Text :>
+                     QueryParam "pageToken" Text :>
+                       QueryParam "maxResults" (Textual Word32) :>
+                         QueryParam "alt" AltJSON :> Get '[JSON] OperationList
+
+-- | Retrieves the list of operation resources contained within the specified
+-- project.
+--
+-- /See:/ 'globalAccountsOperationsList' smart constructor.
+data GlobalAccountsOperationsList = GlobalAccountsOperationsList
+    { _gaolOrderBy    :: !(Maybe Text)
+    , _gaolProject    :: !Text
+    , _gaolFilter     :: !(Maybe Text)
+    , _gaolPageToken  :: !(Maybe Text)
+    , _gaolMaxResults :: !(Textual Word32)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'GlobalAccountsOperationsList' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'gaolOrderBy'
+--
+-- * 'gaolProject'
+--
+-- * 'gaolFilter'
+--
+-- * 'gaolPageToken'
+--
+-- * 'gaolMaxResults'
+globalAccountsOperationsList
+    :: Text -- ^ 'gaolProject'
+    -> GlobalAccountsOperationsList
+globalAccountsOperationsList pGaolProject_ =
+    GlobalAccountsOperationsList
+    { _gaolOrderBy = Nothing
+    , _gaolProject = pGaolProject_
+    , _gaolFilter = Nothing
+    , _gaolPageToken = Nothing
+    , _gaolMaxResults = 500
+    }
+
+-- | Sorts list results by a certain order. By default, results are returned
+-- in alphanumerical order based on the resource name. You can also sort
+-- results in descending order based on the creation timestamp using
+-- orderBy=\"creationTimestamp desc\". This sorts results based on the
+-- creationTimestamp field in reverse chronological order (newest result
+-- first). Use this to sort resources like operations so that the newest
+-- operation is returned first. Currently, only sorting by name or
+-- creationTimestamp desc is supported.
+gaolOrderBy :: Lens' GlobalAccountsOperationsList (Maybe Text)
+gaolOrderBy
+  = lens _gaolOrderBy (\ s a -> s{_gaolOrderBy = a})
+
+-- | Project ID for this request.
+gaolProject :: Lens' GlobalAccountsOperationsList Text
+gaolProject
+  = lens _gaolProject (\ s a -> s{_gaolProject = a})
+
+-- | Sets a filter expression for filtering listed resources, in the form
+-- filter={expression}. Your {expression} must be in the format: FIELD_NAME
+-- COMPARISON_STRING LITERAL_STRING. The FIELD_NAME is the name of the
+-- field you want to compare. Only atomic field types are supported
+-- (string, number, boolean). The COMPARISON_STRING must be either eq
+-- (equals) or ne (not equals). The LITERAL_STRING is the string value to
+-- filter to. The literal value must be valid for the type of field
+-- (string, number, boolean). For string fields, the literal value is
+-- interpreted as a regular expression using RE2 syntax. The literal value
+-- must match the entire field. For example, filter=name ne
+-- example-instance.
+gaolFilter :: Lens' GlobalAccountsOperationsList (Maybe Text)
+gaolFilter
+  = lens _gaolFilter (\ s a -> s{_gaolFilter = a})
+
+-- | Specifies a page token to use. Use this parameter if you want to list
+-- the next page of results. Set pageToken to the nextPageToken returned by
+-- a previous list request.
+gaolPageToken :: Lens' GlobalAccountsOperationsList (Maybe Text)
+gaolPageToken
+  = lens _gaolPageToken
+      (\ s a -> s{_gaolPageToken = a})
+
+-- | Maximum count of results to be returned.
+gaolMaxResults :: Lens' GlobalAccountsOperationsList Word32
+gaolMaxResults
+  = lens _gaolMaxResults
+      (\ s a -> s{_gaolMaxResults = a})
+      . _Coerce
+
+instance GoogleRequest GlobalAccountsOperationsList
+         where
+        type Rs GlobalAccountsOperationsList = OperationList
+        requestClient GlobalAccountsOperationsList{..}
+          = go _gaolProject _gaolOrderBy _gaolFilter
+              _gaolPageToken
+              (Just _gaolMaxResults)
+              (Just AltJSON)
+              userAccountsService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy GlobalAccountsOperationsListResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/CloudUserAccounts/Groups/AddMember.hs b/gen/Network/Google/Resource/CloudUserAccounts/Groups/AddMember.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/CloudUserAccounts/Groups/AddMember.hs
@@ -0,0 +1,113 @@
+{-# LANGUAGE DataKinds          #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE FlexibleInstances  #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+{-# LANGUAGE TypeOperators      #-}
+
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
+
+-- |
+-- Module      : Network.Google.Resource.CloudUserAccounts.Groups.AddMember
+-- Copyright   : (c) 2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Adds users to the specified group.
+--
+-- /See:/ <https://cloud.google.com/compute/docs/access/user-accounts/api/latest/ Cloud User Accounts API Reference> for @clouduseraccounts.groups.addMember@.
+module Network.Google.Resource.CloudUserAccounts.Groups.AddMember
+    (
+    -- * REST Resource
+      GroupsAddMemberResource
+
+    -- * Creating a Request
+    , groupsAddMember
+    , GroupsAddMember
+
+    -- * Request Lenses
+    , gamProject
+    , gamPayload
+    , gamGroupName
+    ) where
+
+import           Network.Google.Prelude
+import           Network.Google.UserAccounts.Types
+
+-- | A resource alias for @clouduseraccounts.groups.addMember@ method which the
+-- 'GroupsAddMember' request conforms to.
+type GroupsAddMemberResource =
+     "clouduseraccounts" :>
+       "beta" :>
+         "projects" :>
+           Capture "project" Text :>
+             "global" :>
+               "groups" :>
+                 Capture "groupName" Text :>
+                   "addMember" :>
+                     QueryParam "alt" AltJSON :>
+                       ReqBody '[JSON] GroupsAddMemberRequest :>
+                         Post '[JSON] Operation
+
+-- | Adds users to the specified group.
+--
+-- /See:/ 'groupsAddMember' smart constructor.
+data GroupsAddMember = GroupsAddMember
+    { _gamProject   :: !Text
+    , _gamPayload   :: !GroupsAddMemberRequest
+    , _gamGroupName :: !Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'GroupsAddMember' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'gamProject'
+--
+-- * 'gamPayload'
+--
+-- * 'gamGroupName'
+groupsAddMember
+    :: Text -- ^ 'gamProject'
+    -> GroupsAddMemberRequest -- ^ 'gamPayload'
+    -> Text -- ^ 'gamGroupName'
+    -> GroupsAddMember
+groupsAddMember pGamProject_ pGamPayload_ pGamGroupName_ =
+    GroupsAddMember
+    { _gamProject = pGamProject_
+    , _gamPayload = pGamPayload_
+    , _gamGroupName = pGamGroupName_
+    }
+
+-- | Project ID for this request.
+gamProject :: Lens' GroupsAddMember Text
+gamProject
+  = lens _gamProject (\ s a -> s{_gamProject = a})
+
+-- | Multipart request metadata.
+gamPayload :: Lens' GroupsAddMember GroupsAddMemberRequest
+gamPayload
+  = lens _gamPayload (\ s a -> s{_gamPayload = a})
+
+-- | Name of the group for this request.
+gamGroupName :: Lens' GroupsAddMember Text
+gamGroupName
+  = lens _gamGroupName (\ s a -> s{_gamGroupName = a})
+
+instance GoogleRequest GroupsAddMember where
+        type Rs GroupsAddMember = Operation
+        requestClient GroupsAddMember{..}
+          = go _gamProject _gamGroupName (Just AltJSON)
+              _gamPayload
+              userAccountsService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy GroupsAddMemberResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/CloudUserAccounts/Groups/Delete.hs b/gen/Network/Google/Resource/CloudUserAccounts/Groups/Delete.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/CloudUserAccounts/Groups/Delete.hs
@@ -0,0 +1,97 @@
+{-# LANGUAGE DataKinds          #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE FlexibleInstances  #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+{-# LANGUAGE TypeOperators      #-}
+
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
+
+-- |
+-- Module      : Network.Google.Resource.CloudUserAccounts.Groups.Delete
+-- Copyright   : (c) 2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Deletes the specified Group resource.
+--
+-- /See:/ <https://cloud.google.com/compute/docs/access/user-accounts/api/latest/ Cloud User Accounts API Reference> for @clouduseraccounts.groups.delete@.
+module Network.Google.Resource.CloudUserAccounts.Groups.Delete
+    (
+    -- * REST Resource
+      GroupsDeleteResource
+
+    -- * Creating a Request
+    , groupsDelete
+    , GroupsDelete
+
+    -- * Request Lenses
+    , gdProject
+    , gdGroupName
+    ) where
+
+import           Network.Google.Prelude
+import           Network.Google.UserAccounts.Types
+
+-- | A resource alias for @clouduseraccounts.groups.delete@ method which the
+-- 'GroupsDelete' request conforms to.
+type GroupsDeleteResource =
+     "clouduseraccounts" :>
+       "beta" :>
+         "projects" :>
+           Capture "project" Text :>
+             "global" :>
+               "groups" :>
+                 Capture "groupName" Text :>
+                   QueryParam "alt" AltJSON :> Delete '[JSON] Operation
+
+-- | Deletes the specified Group resource.
+--
+-- /See:/ 'groupsDelete' smart constructor.
+data GroupsDelete = GroupsDelete
+    { _gdProject   :: !Text
+    , _gdGroupName :: !Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'GroupsDelete' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'gdProject'
+--
+-- * 'gdGroupName'
+groupsDelete
+    :: Text -- ^ 'gdProject'
+    -> Text -- ^ 'gdGroupName'
+    -> GroupsDelete
+groupsDelete pGdProject_ pGdGroupName_ =
+    GroupsDelete
+    { _gdProject = pGdProject_
+    , _gdGroupName = pGdGroupName_
+    }
+
+-- | Project ID for this request.
+gdProject :: Lens' GroupsDelete Text
+gdProject
+  = lens _gdProject (\ s a -> s{_gdProject = a})
+
+-- | Name of the Group resource to delete.
+gdGroupName :: Lens' GroupsDelete Text
+gdGroupName
+  = lens _gdGroupName (\ s a -> s{_gdGroupName = a})
+
+instance GoogleRequest GroupsDelete where
+        type Rs GroupsDelete = Operation
+        requestClient GroupsDelete{..}
+          = go _gdProject _gdGroupName (Just AltJSON)
+              userAccountsService
+          where go
+                  = buildClient (Proxy :: Proxy GroupsDeleteResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/CloudUserAccounts/Groups/Get.hs b/gen/Network/Google/Resource/CloudUserAccounts/Groups/Get.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/CloudUserAccounts/Groups/Get.hs
@@ -0,0 +1,97 @@
+{-# LANGUAGE DataKinds          #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE FlexibleInstances  #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+{-# LANGUAGE TypeOperators      #-}
+
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
+
+-- |
+-- Module      : Network.Google.Resource.CloudUserAccounts.Groups.Get
+-- Copyright   : (c) 2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Returns the specified Group resource.
+--
+-- /See:/ <https://cloud.google.com/compute/docs/access/user-accounts/api/latest/ Cloud User Accounts API Reference> for @clouduseraccounts.groups.get@.
+module Network.Google.Resource.CloudUserAccounts.Groups.Get
+    (
+    -- * REST Resource
+      GroupsGetResource
+
+    -- * Creating a Request
+    , groupsGet
+    , GroupsGet
+
+    -- * Request Lenses
+    , ggProject
+    , ggGroupName
+    ) where
+
+import           Network.Google.Prelude
+import           Network.Google.UserAccounts.Types
+
+-- | A resource alias for @clouduseraccounts.groups.get@ method which the
+-- 'GroupsGet' request conforms to.
+type GroupsGetResource =
+     "clouduseraccounts" :>
+       "beta" :>
+         "projects" :>
+           Capture "project" Text :>
+             "global" :>
+               "groups" :>
+                 Capture "groupName" Text :>
+                   QueryParam "alt" AltJSON :> Get '[JSON] Group
+
+-- | Returns the specified Group resource.
+--
+-- /See:/ 'groupsGet' smart constructor.
+data GroupsGet = GroupsGet
+    { _ggProject   :: !Text
+    , _ggGroupName :: !Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'GroupsGet' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'ggProject'
+--
+-- * 'ggGroupName'
+groupsGet
+    :: Text -- ^ 'ggProject'
+    -> Text -- ^ 'ggGroupName'
+    -> GroupsGet
+groupsGet pGgProject_ pGgGroupName_ =
+    GroupsGet
+    { _ggProject = pGgProject_
+    , _ggGroupName = pGgGroupName_
+    }
+
+-- | Project ID for this request.
+ggProject :: Lens' GroupsGet Text
+ggProject
+  = lens _ggProject (\ s a -> s{_ggProject = a})
+
+-- | Name of the Group resource to return.
+ggGroupName :: Lens' GroupsGet Text
+ggGroupName
+  = lens _ggGroupName (\ s a -> s{_ggGroupName = a})
+
+instance GoogleRequest GroupsGet where
+        type Rs GroupsGet = Group
+        requestClient GroupsGet{..}
+          = go _ggProject _ggGroupName (Just AltJSON)
+              userAccountsService
+          where go
+                  = buildClient (Proxy :: Proxy GroupsGetResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/CloudUserAccounts/Groups/Insert.hs b/gen/Network/Google/Resource/CloudUserAccounts/Groups/Insert.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/CloudUserAccounts/Groups/Insert.hs
@@ -0,0 +1,99 @@
+{-# LANGUAGE DataKinds          #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE FlexibleInstances  #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+{-# LANGUAGE TypeOperators      #-}
+
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
+
+-- |
+-- Module      : Network.Google.Resource.CloudUserAccounts.Groups.Insert
+-- Copyright   : (c) 2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Creates a Group resource in the specified project using the data
+-- included in the request.
+--
+-- /See:/ <https://cloud.google.com/compute/docs/access/user-accounts/api/latest/ Cloud User Accounts API Reference> for @clouduseraccounts.groups.insert@.
+module Network.Google.Resource.CloudUserAccounts.Groups.Insert
+    (
+    -- * REST Resource
+      GroupsInsertResource
+
+    -- * Creating a Request
+    , groupsInsert
+    , GroupsInsert
+
+    -- * Request Lenses
+    , giProject
+    , giPayload
+    ) where
+
+import           Network.Google.Prelude
+import           Network.Google.UserAccounts.Types
+
+-- | A resource alias for @clouduseraccounts.groups.insert@ method which the
+-- 'GroupsInsert' request conforms to.
+type GroupsInsertResource =
+     "clouduseraccounts" :>
+       "beta" :>
+         "projects" :>
+           Capture "project" Text :>
+             "global" :>
+               "groups" :>
+                 QueryParam "alt" AltJSON :>
+                   ReqBody '[JSON] Group :> Post '[JSON] Operation
+
+-- | Creates a Group resource in the specified project using the data
+-- included in the request.
+--
+-- /See:/ 'groupsInsert' smart constructor.
+data GroupsInsert = GroupsInsert
+    { _giProject :: !Text
+    , _giPayload :: !Group
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'GroupsInsert' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'giProject'
+--
+-- * 'giPayload'
+groupsInsert
+    :: Text -- ^ 'giProject'
+    -> Group -- ^ 'giPayload'
+    -> GroupsInsert
+groupsInsert pGiProject_ pGiPayload_ =
+    GroupsInsert
+    { _giProject = pGiProject_
+    , _giPayload = pGiPayload_
+    }
+
+-- | Project ID for this request.
+giProject :: Lens' GroupsInsert Text
+giProject
+  = lens _giProject (\ s a -> s{_giProject = a})
+
+-- | Multipart request metadata.
+giPayload :: Lens' GroupsInsert Group
+giPayload
+  = lens _giPayload (\ s a -> s{_giPayload = a})
+
+instance GoogleRequest GroupsInsert where
+        type Rs GroupsInsert = Operation
+        requestClient GroupsInsert{..}
+          = go _giProject (Just AltJSON) _giPayload
+              userAccountsService
+          where go
+                  = buildClient (Proxy :: Proxy GroupsInsertResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/CloudUserAccounts/Groups/List.hs b/gen/Network/Google/Resource/CloudUserAccounts/Groups/List.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/CloudUserAccounts/Groups/List.hs
@@ -0,0 +1,150 @@
+{-# 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.CloudUserAccounts.Groups.List
+-- Copyright   : (c) 2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Retrieves the list of groups contained within the specified project.
+--
+-- /See:/ <https://cloud.google.com/compute/docs/access/user-accounts/api/latest/ Cloud User Accounts API Reference> for @clouduseraccounts.groups.list@.
+module Network.Google.Resource.CloudUserAccounts.Groups.List
+    (
+    -- * REST Resource
+      GroupsListResource
+
+    -- * Creating a Request
+    , groupsList
+    , GroupsList
+
+    -- * Request Lenses
+    , glOrderBy
+    , glProject
+    , glFilter
+    , glPageToken
+    , glMaxResults
+    ) where
+
+import           Network.Google.Prelude
+import           Network.Google.UserAccounts.Types
+
+-- | A resource alias for @clouduseraccounts.groups.list@ method which the
+-- 'GroupsList' request conforms to.
+type GroupsListResource =
+     "clouduseraccounts" :>
+       "beta" :>
+         "projects" :>
+           Capture "project" Text :>
+             "global" :>
+               "groups" :>
+                 QueryParam "orderBy" Text :>
+                   QueryParam "filter" Text :>
+                     QueryParam "pageToken" Text :>
+                       QueryParam "maxResults" (Textual Word32) :>
+                         QueryParam "alt" AltJSON :> Get '[JSON] GroupList
+
+-- | Retrieves the list of groups contained within the specified project.
+--
+-- /See:/ 'groupsList' smart constructor.
+data GroupsList = GroupsList
+    { _glOrderBy    :: !(Maybe Text)
+    , _glProject    :: !Text
+    , _glFilter     :: !(Maybe Text)
+    , _glPageToken  :: !(Maybe Text)
+    , _glMaxResults :: !(Textual Word32)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'GroupsList' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'glOrderBy'
+--
+-- * 'glProject'
+--
+-- * 'glFilter'
+--
+-- * 'glPageToken'
+--
+-- * 'glMaxResults'
+groupsList
+    :: Text -- ^ 'glProject'
+    -> GroupsList
+groupsList pGlProject_ =
+    GroupsList
+    { _glOrderBy = Nothing
+    , _glProject = pGlProject_
+    , _glFilter = Nothing
+    , _glPageToken = Nothing
+    , _glMaxResults = 500
+    }
+
+-- | Sorts list results by a certain order. By default, results are returned
+-- in alphanumerical order based on the resource name. You can also sort
+-- results in descending order based on the creation timestamp using
+-- orderBy=\"creationTimestamp desc\". This sorts results based on the
+-- creationTimestamp field in reverse chronological order (newest result
+-- first). Use this to sort resources like operations so that the newest
+-- operation is returned first. Currently, only sorting by name or
+-- creationTimestamp desc is supported.
+glOrderBy :: Lens' GroupsList (Maybe Text)
+glOrderBy
+  = lens _glOrderBy (\ s a -> s{_glOrderBy = a})
+
+-- | Project ID for this request.
+glProject :: Lens' GroupsList Text
+glProject
+  = lens _glProject (\ s a -> s{_glProject = a})
+
+-- | Sets a filter expression for filtering listed resources, in the form
+-- filter={expression}. Your {expression} must be in the format: FIELD_NAME
+-- COMPARISON_STRING LITERAL_STRING. The FIELD_NAME is the name of the
+-- field you want to compare. Only atomic field types are supported
+-- (string, number, boolean). The COMPARISON_STRING must be either eq
+-- (equals) or ne (not equals). The LITERAL_STRING is the string value to
+-- filter to. The literal value must be valid for the type of field
+-- (string, number, boolean). For string fields, the literal value is
+-- interpreted as a regular expression using RE2 syntax. The literal value
+-- must match the entire field. For example, filter=name ne
+-- example-instance.
+glFilter :: Lens' GroupsList (Maybe Text)
+glFilter = lens _glFilter (\ s a -> s{_glFilter = a})
+
+-- | Specifies a page token to use. Use this parameter if you want to list
+-- the next page of results. Set pageToken to the nextPageToken returned by
+-- a previous list request.
+glPageToken :: Lens' GroupsList (Maybe Text)
+glPageToken
+  = lens _glPageToken (\ s a -> s{_glPageToken = a})
+
+-- | Maximum count of results to be returned.
+glMaxResults :: Lens' GroupsList Word32
+glMaxResults
+  = lens _glMaxResults (\ s a -> s{_glMaxResults = a})
+      . _Coerce
+
+instance GoogleRequest GroupsList where
+        type Rs GroupsList = GroupList
+        requestClient GroupsList{..}
+          = go _glProject _glOrderBy _glFilter _glPageToken
+              (Just _glMaxResults)
+              (Just AltJSON)
+              userAccountsService
+          where go
+                  = buildClient (Proxy :: Proxy GroupsListResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/CloudUserAccounts/Groups/RemoveMember.hs b/gen/Network/Google/Resource/CloudUserAccounts/Groups/RemoveMember.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/CloudUserAccounts/Groups/RemoveMember.hs
@@ -0,0 +1,113 @@
+{-# LANGUAGE DataKinds          #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE FlexibleInstances  #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+{-# LANGUAGE TypeOperators      #-}
+
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
+
+-- |
+-- Module      : Network.Google.Resource.CloudUserAccounts.Groups.RemoveMember
+-- Copyright   : (c) 2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Removes users from the specified group.
+--
+-- /See:/ <https://cloud.google.com/compute/docs/access/user-accounts/api/latest/ Cloud User Accounts API Reference> for @clouduseraccounts.groups.removeMember@.
+module Network.Google.Resource.CloudUserAccounts.Groups.RemoveMember
+    (
+    -- * REST Resource
+      GroupsRemoveMemberResource
+
+    -- * Creating a Request
+    , groupsRemoveMember
+    , GroupsRemoveMember
+
+    -- * Request Lenses
+    , grmProject
+    , grmPayload
+    , grmGroupName
+    ) where
+
+import           Network.Google.Prelude
+import           Network.Google.UserAccounts.Types
+
+-- | A resource alias for @clouduseraccounts.groups.removeMember@ method which the
+-- 'GroupsRemoveMember' request conforms to.
+type GroupsRemoveMemberResource =
+     "clouduseraccounts" :>
+       "beta" :>
+         "projects" :>
+           Capture "project" Text :>
+             "global" :>
+               "groups" :>
+                 Capture "groupName" Text :>
+                   "removeMember" :>
+                     QueryParam "alt" AltJSON :>
+                       ReqBody '[JSON] GroupsRemoveMemberRequest :>
+                         Post '[JSON] Operation
+
+-- | Removes users from the specified group.
+--
+-- /See:/ 'groupsRemoveMember' smart constructor.
+data GroupsRemoveMember = GroupsRemoveMember
+    { _grmProject   :: !Text
+    , _grmPayload   :: !GroupsRemoveMemberRequest
+    , _grmGroupName :: !Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'GroupsRemoveMember' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'grmProject'
+--
+-- * 'grmPayload'
+--
+-- * 'grmGroupName'
+groupsRemoveMember
+    :: Text -- ^ 'grmProject'
+    -> GroupsRemoveMemberRequest -- ^ 'grmPayload'
+    -> Text -- ^ 'grmGroupName'
+    -> GroupsRemoveMember
+groupsRemoveMember pGrmProject_ pGrmPayload_ pGrmGroupName_ =
+    GroupsRemoveMember
+    { _grmProject = pGrmProject_
+    , _grmPayload = pGrmPayload_
+    , _grmGroupName = pGrmGroupName_
+    }
+
+-- | Project ID for this request.
+grmProject :: Lens' GroupsRemoveMember Text
+grmProject
+  = lens _grmProject (\ s a -> s{_grmProject = a})
+
+-- | Multipart request metadata.
+grmPayload :: Lens' GroupsRemoveMember GroupsRemoveMemberRequest
+grmPayload
+  = lens _grmPayload (\ s a -> s{_grmPayload = a})
+
+-- | Name of the group for this request.
+grmGroupName :: Lens' GroupsRemoveMember Text
+grmGroupName
+  = lens _grmGroupName (\ s a -> s{_grmGroupName = a})
+
+instance GoogleRequest GroupsRemoveMember where
+        type Rs GroupsRemoveMember = Operation
+        requestClient GroupsRemoveMember{..}
+          = go _grmProject _grmGroupName (Just AltJSON)
+              _grmPayload
+              userAccountsService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy GroupsRemoveMemberResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/CloudUserAccounts/Linux/GetAuthorizedKeysView.hs b/gen/Network/Google/Resource/CloudUserAccounts/Linux/GetAuthorizedKeysView.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/CloudUserAccounts/Linux/GetAuthorizedKeysView.hs
@@ -0,0 +1,141 @@
+{-# 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.CloudUserAccounts.Linux.GetAuthorizedKeysView
+-- Copyright   : (c) 2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Returns a list of authorized public keys for a specific user account.
+--
+-- /See:/ <https://cloud.google.com/compute/docs/access/user-accounts/api/latest/ Cloud User Accounts API Reference> for @clouduseraccounts.linux.getAuthorizedKeysView@.
+module Network.Google.Resource.CloudUserAccounts.Linux.GetAuthorizedKeysView
+    (
+    -- * REST Resource
+      LinuxGetAuthorizedKeysViewResource
+
+    -- * Creating a Request
+    , linuxGetAuthorizedKeysView
+    , LinuxGetAuthorizedKeysView
+
+    -- * Request Lenses
+    , lgakvProject
+    , lgakvZone
+    , lgakvUser
+    , lgakvLogin
+    , lgakvInstance
+    ) where
+
+import           Network.Google.Prelude
+import           Network.Google.UserAccounts.Types
+
+-- | A resource alias for @clouduseraccounts.linux.getAuthorizedKeysView@ method which the
+-- 'LinuxGetAuthorizedKeysView' request conforms to.
+type LinuxGetAuthorizedKeysViewResource =
+     "clouduseraccounts" :>
+       "beta" :>
+         "projects" :>
+           Capture "project" Text :>
+             "zones" :>
+               Capture "zone" Text :>
+                 "authorizedKeysView" :>
+                   Capture "user" Text :>
+                     QueryParam "instance" Text :>
+                       QueryParam "login" Bool :>
+                         QueryParam "alt" AltJSON :>
+                           Post '[JSON] LinuxGetAuthorizedKeysViewResponse
+
+-- | Returns a list of authorized public keys for a specific user account.
+--
+-- /See:/ 'linuxGetAuthorizedKeysView' smart constructor.
+data LinuxGetAuthorizedKeysView = LinuxGetAuthorizedKeysView
+    { _lgakvProject  :: !Text
+    , _lgakvZone     :: !Text
+    , _lgakvUser     :: !Text
+    , _lgakvLogin    :: !(Maybe Bool)
+    , _lgakvInstance :: !Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'LinuxGetAuthorizedKeysView' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'lgakvProject'
+--
+-- * 'lgakvZone'
+--
+-- * 'lgakvUser'
+--
+-- * 'lgakvLogin'
+--
+-- * 'lgakvInstance'
+linuxGetAuthorizedKeysView
+    :: Text -- ^ 'lgakvProject'
+    -> Text -- ^ 'lgakvZone'
+    -> Text -- ^ 'lgakvUser'
+    -> Text -- ^ 'lgakvInstance'
+    -> LinuxGetAuthorizedKeysView
+linuxGetAuthorizedKeysView pLgakvProject_ pLgakvZone_ pLgakvUser_ pLgakvInstance_ =
+    LinuxGetAuthorizedKeysView
+    { _lgakvProject = pLgakvProject_
+    , _lgakvZone = pLgakvZone_
+    , _lgakvUser = pLgakvUser_
+    , _lgakvLogin = Nothing
+    , _lgakvInstance = pLgakvInstance_
+    }
+
+-- | Project ID for this request.
+lgakvProject :: Lens' LinuxGetAuthorizedKeysView Text
+lgakvProject
+  = lens _lgakvProject (\ s a -> s{_lgakvProject = a})
+
+-- | Name of the zone for this request.
+lgakvZone :: Lens' LinuxGetAuthorizedKeysView Text
+lgakvZone
+  = lens _lgakvZone (\ s a -> s{_lgakvZone = a})
+
+-- | The user account for which you want to get a list of authorized public
+-- keys.
+lgakvUser :: Lens' LinuxGetAuthorizedKeysView Text
+lgakvUser
+  = lens _lgakvUser (\ s a -> s{_lgakvUser = a})
+
+-- | Whether the view was requested as part of a user-initiated login.
+lgakvLogin :: Lens' LinuxGetAuthorizedKeysView (Maybe Bool)
+lgakvLogin
+  = lens _lgakvLogin (\ s a -> s{_lgakvLogin = a})
+
+-- | The fully-qualified URL of the virtual machine requesting the view.
+lgakvInstance :: Lens' LinuxGetAuthorizedKeysView Text
+lgakvInstance
+  = lens _lgakvInstance
+      (\ s a -> s{_lgakvInstance = a})
+
+instance GoogleRequest LinuxGetAuthorizedKeysView
+         where
+        type Rs LinuxGetAuthorizedKeysView =
+             LinuxGetAuthorizedKeysViewResponse
+        requestClient LinuxGetAuthorizedKeysView{..}
+          = go _lgakvProject _lgakvZone _lgakvUser
+              (Just _lgakvInstance)
+              _lgakvLogin
+              (Just AltJSON)
+              userAccountsService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy LinuxGetAuthorizedKeysViewResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/CloudUserAccounts/Linux/GetLinuxAccountViews.hs b/gen/Network/Google/Resource/CloudUserAccounts/Linux/GetLinuxAccountViews.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/CloudUserAccounts/Linux/GetLinuxAccountViews.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.CloudUserAccounts.Linux.GetLinuxAccountViews
+-- Copyright   : (c) 2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Retrieves a list of user accounts for an instance within a specific
+-- project.
+--
+-- /See:/ <https://cloud.google.com/compute/docs/access/user-accounts/api/latest/ Cloud User Accounts API Reference> for @clouduseraccounts.linux.getLinuxAccountViews@.
+module Network.Google.Resource.CloudUserAccounts.Linux.GetLinuxAccountViews
+    (
+    -- * REST Resource
+      LinuxGetLinuxAccountViewsResource
+
+    -- * Creating a Request
+    , linuxGetLinuxAccountViews
+    , LinuxGetLinuxAccountViews
+
+    -- * Request Lenses
+    , lglavOrderBy
+    , lglavProject
+    , lglavZone
+    , lglavFilter
+    , lglavPageToken
+    , lglavMaxResults
+    , lglavInstance
+    ) where
+
+import           Network.Google.Prelude
+import           Network.Google.UserAccounts.Types
+
+-- | A resource alias for @clouduseraccounts.linux.getLinuxAccountViews@ method which the
+-- 'LinuxGetLinuxAccountViews' request conforms to.
+type LinuxGetLinuxAccountViewsResource =
+     "clouduseraccounts" :>
+       "beta" :>
+         "projects" :>
+           Capture "project" Text :>
+             "zones" :>
+               Capture "zone" Text :>
+                 "linuxAccountViews" :>
+                   QueryParam "instance" Text :>
+                     QueryParam "orderBy" Text :>
+                       QueryParam "filter" Text :>
+                         QueryParam "pageToken" Text :>
+                           QueryParam "maxResults" (Textual Word32) :>
+                             QueryParam "alt" AltJSON :>
+                               Post '[JSON] LinuxGetLinuxAccountViewsResponse
+
+-- | Retrieves a list of user accounts for an instance within a specific
+-- project.
+--
+-- /See:/ 'linuxGetLinuxAccountViews' smart constructor.
+data LinuxGetLinuxAccountViews = LinuxGetLinuxAccountViews
+    { _lglavOrderBy    :: !(Maybe Text)
+    , _lglavProject    :: !Text
+    , _lglavZone       :: !Text
+    , _lglavFilter     :: !(Maybe Text)
+    , _lglavPageToken  :: !(Maybe Text)
+    , _lglavMaxResults :: !(Textual Word32)
+    , _lglavInstance   :: !Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'LinuxGetLinuxAccountViews' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'lglavOrderBy'
+--
+-- * 'lglavProject'
+--
+-- * 'lglavZone'
+--
+-- * 'lglavFilter'
+--
+-- * 'lglavPageToken'
+--
+-- * 'lglavMaxResults'
+--
+-- * 'lglavInstance'
+linuxGetLinuxAccountViews
+    :: Text -- ^ 'lglavProject'
+    -> Text -- ^ 'lglavZone'
+    -> Text -- ^ 'lglavInstance'
+    -> LinuxGetLinuxAccountViews
+linuxGetLinuxAccountViews pLglavProject_ pLglavZone_ pLglavInstance_ =
+    LinuxGetLinuxAccountViews
+    { _lglavOrderBy = Nothing
+    , _lglavProject = pLglavProject_
+    , _lglavZone = pLglavZone_
+    , _lglavFilter = Nothing
+    , _lglavPageToken = Nothing
+    , _lglavMaxResults = 500
+    , _lglavInstance = pLglavInstance_
+    }
+
+-- | Sorts list results by a certain order. By default, results are returned
+-- in alphanumerical order based on the resource name. You can also sort
+-- results in descending order based on the creation timestamp using
+-- orderBy=\"creationTimestamp desc\". This sorts results based on the
+-- creationTimestamp field in reverse chronological order (newest result
+-- first). Use this to sort resources like operations so that the newest
+-- operation is returned first. Currently, only sorting by name or
+-- creationTimestamp desc is supported.
+lglavOrderBy :: Lens' LinuxGetLinuxAccountViews (Maybe Text)
+lglavOrderBy
+  = lens _lglavOrderBy (\ s a -> s{_lglavOrderBy = a})
+
+-- | Project ID for this request.
+lglavProject :: Lens' LinuxGetLinuxAccountViews Text
+lglavProject
+  = lens _lglavProject (\ s a -> s{_lglavProject = a})
+
+-- | Name of the zone for this request.
+lglavZone :: Lens' LinuxGetLinuxAccountViews Text
+lglavZone
+  = lens _lglavZone (\ s a -> s{_lglavZone = a})
+
+-- | Sets a filter expression for filtering listed resources, in the form
+-- filter={expression}. Your {expression} must be in the format: FIELD_NAME
+-- COMPARISON_STRING LITERAL_STRING. The FIELD_NAME is the name of the
+-- field you want to compare. Only atomic field types are supported
+-- (string, number, boolean). The COMPARISON_STRING must be either eq
+-- (equals) or ne (not equals). The LITERAL_STRING is the string value to
+-- filter to. The literal value must be valid for the type of field
+-- (string, number, boolean). For string fields, the literal value is
+-- interpreted as a regular expression using RE2 syntax. The literal value
+-- must match the entire field. For example, filter=name ne
+-- example-instance.
+lglavFilter :: Lens' LinuxGetLinuxAccountViews (Maybe Text)
+lglavFilter
+  = lens _lglavFilter (\ s a -> s{_lglavFilter = a})
+
+-- | Specifies a page token to use. Use this parameter if you want to list
+-- the next page of results. Set pageToken to the nextPageToken returned by
+-- a previous list request.
+lglavPageToken :: Lens' LinuxGetLinuxAccountViews (Maybe Text)
+lglavPageToken
+  = lens _lglavPageToken
+      (\ s a -> s{_lglavPageToken = a})
+
+-- | Maximum count of results to be returned.
+lglavMaxResults :: Lens' LinuxGetLinuxAccountViews Word32
+lglavMaxResults
+  = lens _lglavMaxResults
+      (\ s a -> s{_lglavMaxResults = a})
+      . _Coerce
+
+-- | The fully-qualified URL of the virtual machine requesting the views.
+lglavInstance :: Lens' LinuxGetLinuxAccountViews Text
+lglavInstance
+  = lens _lglavInstance
+      (\ s a -> s{_lglavInstance = a})
+
+instance GoogleRequest LinuxGetLinuxAccountViews
+         where
+        type Rs LinuxGetLinuxAccountViews =
+             LinuxGetLinuxAccountViewsResponse
+        requestClient LinuxGetLinuxAccountViews{..}
+          = go _lglavProject _lglavZone (Just _lglavInstance)
+              _lglavOrderBy
+              _lglavFilter
+              _lglavPageToken
+              (Just _lglavMaxResults)
+              (Just AltJSON)
+              userAccountsService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy LinuxGetLinuxAccountViewsResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/CloudUserAccounts/Users/AddPublicKey.hs b/gen/Network/Google/Resource/CloudUserAccounts/Users/AddPublicKey.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/CloudUserAccounts/Users/AddPublicKey.hs
@@ -0,0 +1,113 @@
+{-# LANGUAGE DataKinds          #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE FlexibleInstances  #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+{-# LANGUAGE TypeOperators      #-}
+
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
+
+-- |
+-- Module      : Network.Google.Resource.CloudUserAccounts.Users.AddPublicKey
+-- Copyright   : (c) 2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Adds a public key to the specified User resource with the data included
+-- in the request.
+--
+-- /See:/ <https://cloud.google.com/compute/docs/access/user-accounts/api/latest/ Cloud User Accounts API Reference> for @clouduseraccounts.users.addPublicKey@.
+module Network.Google.Resource.CloudUserAccounts.Users.AddPublicKey
+    (
+    -- * REST Resource
+      UsersAddPublicKeyResource
+
+    -- * Creating a Request
+    , usersAddPublicKey
+    , UsersAddPublicKey
+
+    -- * Request Lenses
+    , uapkProject
+    , uapkPayload
+    , uapkUser
+    ) where
+
+import           Network.Google.Prelude
+import           Network.Google.UserAccounts.Types
+
+-- | A resource alias for @clouduseraccounts.users.addPublicKey@ method which the
+-- 'UsersAddPublicKey' request conforms to.
+type UsersAddPublicKeyResource =
+     "clouduseraccounts" :>
+       "beta" :>
+         "projects" :>
+           Capture "project" Text :>
+             "global" :>
+               "users" :>
+                 Capture "user" Text :>
+                   "addPublicKey" :>
+                     QueryParam "alt" AltJSON :>
+                       ReqBody '[JSON] PublicKey :> Post '[JSON] Operation
+
+-- | Adds a public key to the specified User resource with the data included
+-- in the request.
+--
+-- /See:/ 'usersAddPublicKey' smart constructor.
+data UsersAddPublicKey = UsersAddPublicKey
+    { _uapkProject :: !Text
+    , _uapkPayload :: !PublicKey
+    , _uapkUser    :: !Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'UsersAddPublicKey' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'uapkProject'
+--
+-- * 'uapkPayload'
+--
+-- * 'uapkUser'
+usersAddPublicKey
+    :: Text -- ^ 'uapkProject'
+    -> PublicKey -- ^ 'uapkPayload'
+    -> Text -- ^ 'uapkUser'
+    -> UsersAddPublicKey
+usersAddPublicKey pUapkProject_ pUapkPayload_ pUapkUser_ =
+    UsersAddPublicKey
+    { _uapkProject = pUapkProject_
+    , _uapkPayload = pUapkPayload_
+    , _uapkUser = pUapkUser_
+    }
+
+-- | Project ID for this request.
+uapkProject :: Lens' UsersAddPublicKey Text
+uapkProject
+  = lens _uapkProject (\ s a -> s{_uapkProject = a})
+
+-- | Multipart request metadata.
+uapkPayload :: Lens' UsersAddPublicKey PublicKey
+uapkPayload
+  = lens _uapkPayload (\ s a -> s{_uapkPayload = a})
+
+-- | Name of the user for this request.
+uapkUser :: Lens' UsersAddPublicKey Text
+uapkUser = lens _uapkUser (\ s a -> s{_uapkUser = a})
+
+instance GoogleRequest UsersAddPublicKey where
+        type Rs UsersAddPublicKey = Operation
+        requestClient UsersAddPublicKey{..}
+          = go _uapkProject _uapkUser (Just AltJSON)
+              _uapkPayload
+              userAccountsService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy UsersAddPublicKeyResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/CloudUserAccounts/Users/Delete.hs b/gen/Network/Google/Resource/CloudUserAccounts/Users/Delete.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/CloudUserAccounts/Users/Delete.hs
@@ -0,0 +1,96 @@
+{-# LANGUAGE DataKinds          #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE FlexibleInstances  #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+{-# LANGUAGE TypeOperators      #-}
+
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
+
+-- |
+-- Module      : Network.Google.Resource.CloudUserAccounts.Users.Delete
+-- Copyright   : (c) 2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Deletes the specified User resource.
+--
+-- /See:/ <https://cloud.google.com/compute/docs/access/user-accounts/api/latest/ Cloud User Accounts API Reference> for @clouduseraccounts.users.delete@.
+module Network.Google.Resource.CloudUserAccounts.Users.Delete
+    (
+    -- * REST Resource
+      UsersDeleteResource
+
+    -- * Creating a Request
+    , usersDelete
+    , UsersDelete
+
+    -- * Request Lenses
+    , udProject
+    , udUser
+    ) where
+
+import           Network.Google.Prelude
+import           Network.Google.UserAccounts.Types
+
+-- | A resource alias for @clouduseraccounts.users.delete@ method which the
+-- 'UsersDelete' request conforms to.
+type UsersDeleteResource =
+     "clouduseraccounts" :>
+       "beta" :>
+         "projects" :>
+           Capture "project" Text :>
+             "global" :>
+               "users" :>
+                 Capture "user" Text :>
+                   QueryParam "alt" AltJSON :> Delete '[JSON] Operation
+
+-- | Deletes the specified User resource.
+--
+-- /See:/ 'usersDelete' smart constructor.
+data UsersDelete = UsersDelete
+    { _udProject :: !Text
+    , _udUser    :: !Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'UsersDelete' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'udProject'
+--
+-- * 'udUser'
+usersDelete
+    :: Text -- ^ 'udProject'
+    -> Text -- ^ 'udUser'
+    -> UsersDelete
+usersDelete pUdProject_ pUdUser_ =
+    UsersDelete
+    { _udProject = pUdProject_
+    , _udUser = pUdUser_
+    }
+
+-- | Project ID for this request.
+udProject :: Lens' UsersDelete Text
+udProject
+  = lens _udProject (\ s a -> s{_udProject = a})
+
+-- | Name of the user resource to delete.
+udUser :: Lens' UsersDelete Text
+udUser = lens _udUser (\ s a -> s{_udUser = a})
+
+instance GoogleRequest UsersDelete where
+        type Rs UsersDelete = Operation
+        requestClient UsersDelete{..}
+          = go _udProject _udUser (Just AltJSON)
+              userAccountsService
+          where go
+                  = buildClient (Proxy :: Proxy UsersDeleteResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/CloudUserAccounts/Users/Get.hs b/gen/Network/Google/Resource/CloudUserAccounts/Users/Get.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/CloudUserAccounts/Users/Get.hs
@@ -0,0 +1,96 @@
+{-# LANGUAGE DataKinds          #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE FlexibleInstances  #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+{-# LANGUAGE TypeOperators      #-}
+
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
+
+-- |
+-- Module      : Network.Google.Resource.CloudUserAccounts.Users.Get
+-- Copyright   : (c) 2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Returns the specified User resource.
+--
+-- /See:/ <https://cloud.google.com/compute/docs/access/user-accounts/api/latest/ Cloud User Accounts API Reference> for @clouduseraccounts.users.get@.
+module Network.Google.Resource.CloudUserAccounts.Users.Get
+    (
+    -- * REST Resource
+      UsersGetResource
+
+    -- * Creating a Request
+    , usersGet
+    , UsersGet
+
+    -- * Request Lenses
+    , ugProject
+    , ugUser
+    ) where
+
+import           Network.Google.Prelude
+import           Network.Google.UserAccounts.Types
+
+-- | A resource alias for @clouduseraccounts.users.get@ method which the
+-- 'UsersGet' request conforms to.
+type UsersGetResource =
+     "clouduseraccounts" :>
+       "beta" :>
+         "projects" :>
+           Capture "project" Text :>
+             "global" :>
+               "users" :>
+                 Capture "user" Text :>
+                   QueryParam "alt" AltJSON :> Get '[JSON] User
+
+-- | Returns the specified User resource.
+--
+-- /See:/ 'usersGet' smart constructor.
+data UsersGet = UsersGet
+    { _ugProject :: !Text
+    , _ugUser    :: !Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'UsersGet' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'ugProject'
+--
+-- * 'ugUser'
+usersGet
+    :: Text -- ^ 'ugProject'
+    -> Text -- ^ 'ugUser'
+    -> UsersGet
+usersGet pUgProject_ pUgUser_ =
+    UsersGet
+    { _ugProject = pUgProject_
+    , _ugUser = pUgUser_
+    }
+
+-- | Project ID for this request.
+ugProject :: Lens' UsersGet Text
+ugProject
+  = lens _ugProject (\ s a -> s{_ugProject = a})
+
+-- | Name of the user resource to return.
+ugUser :: Lens' UsersGet Text
+ugUser = lens _ugUser (\ s a -> s{_ugUser = a})
+
+instance GoogleRequest UsersGet where
+        type Rs UsersGet = User
+        requestClient UsersGet{..}
+          = go _ugProject _ugUser (Just AltJSON)
+              userAccountsService
+          where go
+                  = buildClient (Proxy :: Proxy UsersGetResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/CloudUserAccounts/Users/Insert.hs b/gen/Network/Google/Resource/CloudUserAccounts/Users/Insert.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/CloudUserAccounts/Users/Insert.hs
@@ -0,0 +1,99 @@
+{-# LANGUAGE DataKinds          #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE FlexibleInstances  #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+{-# LANGUAGE TypeOperators      #-}
+
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
+
+-- |
+-- Module      : Network.Google.Resource.CloudUserAccounts.Users.Insert
+-- Copyright   : (c) 2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Creates a User resource in the specified project using the data included
+-- in the request.
+--
+-- /See:/ <https://cloud.google.com/compute/docs/access/user-accounts/api/latest/ Cloud User Accounts API Reference> for @clouduseraccounts.users.insert@.
+module Network.Google.Resource.CloudUserAccounts.Users.Insert
+    (
+    -- * REST Resource
+      UsersInsertResource
+
+    -- * Creating a Request
+    , usersInsert
+    , UsersInsert
+
+    -- * Request Lenses
+    , uiProject
+    , uiPayload
+    ) where
+
+import           Network.Google.Prelude
+import           Network.Google.UserAccounts.Types
+
+-- | A resource alias for @clouduseraccounts.users.insert@ method which the
+-- 'UsersInsert' request conforms to.
+type UsersInsertResource =
+     "clouduseraccounts" :>
+       "beta" :>
+         "projects" :>
+           Capture "project" Text :>
+             "global" :>
+               "users" :>
+                 QueryParam "alt" AltJSON :>
+                   ReqBody '[JSON] User :> Post '[JSON] Operation
+
+-- | Creates a User resource in the specified project using the data included
+-- in the request.
+--
+-- /See:/ 'usersInsert' smart constructor.
+data UsersInsert = UsersInsert
+    { _uiProject :: !Text
+    , _uiPayload :: !User
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'UsersInsert' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'uiProject'
+--
+-- * 'uiPayload'
+usersInsert
+    :: Text -- ^ 'uiProject'
+    -> User -- ^ 'uiPayload'
+    -> UsersInsert
+usersInsert pUiProject_ pUiPayload_ =
+    UsersInsert
+    { _uiProject = pUiProject_
+    , _uiPayload = pUiPayload_
+    }
+
+-- | Project ID for this request.
+uiProject :: Lens' UsersInsert Text
+uiProject
+  = lens _uiProject (\ s a -> s{_uiProject = a})
+
+-- | Multipart request metadata.
+uiPayload :: Lens' UsersInsert User
+uiPayload
+  = lens _uiPayload (\ s a -> s{_uiPayload = a})
+
+instance GoogleRequest UsersInsert where
+        type Rs UsersInsert = Operation
+        requestClient UsersInsert{..}
+          = go _uiProject (Just AltJSON) _uiPayload
+              userAccountsService
+          where go
+                  = buildClient (Proxy :: Proxy UsersInsertResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/CloudUserAccounts/Users/List.hs b/gen/Network/Google/Resource/CloudUserAccounts/Users/List.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/CloudUserAccounts/Users/List.hs
@@ -0,0 +1,150 @@
+{-# 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.CloudUserAccounts.Users.List
+-- Copyright   : (c) 2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Retrieves a list of users contained within the specified project.
+--
+-- /See:/ <https://cloud.google.com/compute/docs/access/user-accounts/api/latest/ Cloud User Accounts API Reference> for @clouduseraccounts.users.list@.
+module Network.Google.Resource.CloudUserAccounts.Users.List
+    (
+    -- * REST Resource
+      UsersListResource
+
+    -- * Creating a Request
+    , usersList
+    , UsersList
+
+    -- * Request Lenses
+    , ulOrderBy
+    , ulProject
+    , ulFilter
+    , ulPageToken
+    , ulMaxResults
+    ) where
+
+import           Network.Google.Prelude
+import           Network.Google.UserAccounts.Types
+
+-- | A resource alias for @clouduseraccounts.users.list@ method which the
+-- 'UsersList' request conforms to.
+type UsersListResource =
+     "clouduseraccounts" :>
+       "beta" :>
+         "projects" :>
+           Capture "project" Text :>
+             "global" :>
+               "users" :>
+                 QueryParam "orderBy" Text :>
+                   QueryParam "filter" Text :>
+                     QueryParam "pageToken" Text :>
+                       QueryParam "maxResults" (Textual Word32) :>
+                         QueryParam "alt" AltJSON :> Get '[JSON] UserList
+
+-- | Retrieves a list of users contained within the specified project.
+--
+-- /See:/ 'usersList' smart constructor.
+data UsersList = UsersList
+    { _ulOrderBy    :: !(Maybe Text)
+    , _ulProject    :: !Text
+    , _ulFilter     :: !(Maybe Text)
+    , _ulPageToken  :: !(Maybe Text)
+    , _ulMaxResults :: !(Textual Word32)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'UsersList' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'ulOrderBy'
+--
+-- * 'ulProject'
+--
+-- * 'ulFilter'
+--
+-- * 'ulPageToken'
+--
+-- * 'ulMaxResults'
+usersList
+    :: Text -- ^ 'ulProject'
+    -> UsersList
+usersList pUlProject_ =
+    UsersList
+    { _ulOrderBy = Nothing
+    , _ulProject = pUlProject_
+    , _ulFilter = Nothing
+    , _ulPageToken = Nothing
+    , _ulMaxResults = 500
+    }
+
+-- | Sorts list results by a certain order. By default, results are returned
+-- in alphanumerical order based on the resource name. You can also sort
+-- results in descending order based on the creation timestamp using
+-- orderBy=\"creationTimestamp desc\". This sorts results based on the
+-- creationTimestamp field in reverse chronological order (newest result
+-- first). Use this to sort resources like operations so that the newest
+-- operation is returned first. Currently, only sorting by name or
+-- creationTimestamp desc is supported.
+ulOrderBy :: Lens' UsersList (Maybe Text)
+ulOrderBy
+  = lens _ulOrderBy (\ s a -> s{_ulOrderBy = a})
+
+-- | Project ID for this request.
+ulProject :: Lens' UsersList Text
+ulProject
+  = lens _ulProject (\ s a -> s{_ulProject = a})
+
+-- | Sets a filter expression for filtering listed resources, in the form
+-- filter={expression}. Your {expression} must be in the format: FIELD_NAME
+-- COMPARISON_STRING LITERAL_STRING. The FIELD_NAME is the name of the
+-- field you want to compare. Only atomic field types are supported
+-- (string, number, boolean). The COMPARISON_STRING must be either eq
+-- (equals) or ne (not equals). The LITERAL_STRING is the string value to
+-- filter to. The literal value must be valid for the type of field
+-- (string, number, boolean). For string fields, the literal value is
+-- interpreted as a regular expression using RE2 syntax. The literal value
+-- must match the entire field. For example, filter=name ne
+-- example-instance.
+ulFilter :: Lens' UsersList (Maybe Text)
+ulFilter = lens _ulFilter (\ s a -> s{_ulFilter = a})
+
+-- | Specifies a page token to use. Use this parameter if you want to list
+-- the next page of results. Set pageToken to the nextPageToken returned by
+-- a previous list request.
+ulPageToken :: Lens' UsersList (Maybe Text)
+ulPageToken
+  = lens _ulPageToken (\ s a -> s{_ulPageToken = a})
+
+-- | Maximum count of results to be returned.
+ulMaxResults :: Lens' UsersList Word32
+ulMaxResults
+  = lens _ulMaxResults (\ s a -> s{_ulMaxResults = a})
+      . _Coerce
+
+instance GoogleRequest UsersList where
+        type Rs UsersList = UserList
+        requestClient UsersList{..}
+          = go _ulProject _ulOrderBy _ulFilter _ulPageToken
+              (Just _ulMaxResults)
+              (Just AltJSON)
+              userAccountsService
+          where go
+                  = buildClient (Proxy :: Proxy UsersListResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/CloudUserAccounts/Users/RemovePublicKey.hs b/gen/Network/Google/Resource/CloudUserAccounts/Users/RemovePublicKey.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/CloudUserAccounts/Users/RemovePublicKey.hs
@@ -0,0 +1,114 @@
+{-# LANGUAGE DataKinds          #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE FlexibleInstances  #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+{-# LANGUAGE TypeOperators      #-}
+
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
+
+-- |
+-- Module      : Network.Google.Resource.CloudUserAccounts.Users.RemovePublicKey
+-- Copyright   : (c) 2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Removes the specified public key from the user.
+--
+-- /See:/ <https://cloud.google.com/compute/docs/access/user-accounts/api/latest/ Cloud User Accounts API Reference> for @clouduseraccounts.users.removePublicKey@.
+module Network.Google.Resource.CloudUserAccounts.Users.RemovePublicKey
+    (
+    -- * REST Resource
+      UsersRemovePublicKeyResource
+
+    -- * Creating a Request
+    , usersRemovePublicKey
+    , UsersRemovePublicKey
+
+    -- * Request Lenses
+    , urpkProject
+    , urpkFingerprint
+    , urpkUser
+    ) where
+
+import           Network.Google.Prelude
+import           Network.Google.UserAccounts.Types
+
+-- | A resource alias for @clouduseraccounts.users.removePublicKey@ method which the
+-- 'UsersRemovePublicKey' request conforms to.
+type UsersRemovePublicKeyResource =
+     "clouduseraccounts" :>
+       "beta" :>
+         "projects" :>
+           Capture "project" Text :>
+             "global" :>
+               "users" :>
+                 Capture "user" Text :>
+                   "removePublicKey" :>
+                     QueryParam "fingerprint" Text :>
+                       QueryParam "alt" AltJSON :> Post '[JSON] Operation
+
+-- | Removes the specified public key from the user.
+--
+-- /See:/ 'usersRemovePublicKey' smart constructor.
+data UsersRemovePublicKey = UsersRemovePublicKey
+    { _urpkProject     :: !Text
+    , _urpkFingerprint :: !Text
+    , _urpkUser        :: !Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'UsersRemovePublicKey' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'urpkProject'
+--
+-- * 'urpkFingerprint'
+--
+-- * 'urpkUser'
+usersRemovePublicKey
+    :: Text -- ^ 'urpkProject'
+    -> Text -- ^ 'urpkFingerprint'
+    -> Text -- ^ 'urpkUser'
+    -> UsersRemovePublicKey
+usersRemovePublicKey pUrpkProject_ pUrpkFingerprint_ pUrpkUser_ =
+    UsersRemovePublicKey
+    { _urpkProject = pUrpkProject_
+    , _urpkFingerprint = pUrpkFingerprint_
+    , _urpkUser = pUrpkUser_
+    }
+
+-- | Project ID for this request.
+urpkProject :: Lens' UsersRemovePublicKey Text
+urpkProject
+  = lens _urpkProject (\ s a -> s{_urpkProject = a})
+
+-- | The fingerprint of the public key to delete. Public keys are identified
+-- by their fingerprint, which is defined by RFC4716 to be the MD5 digest
+-- of the public key.
+urpkFingerprint :: Lens' UsersRemovePublicKey Text
+urpkFingerprint
+  = lens _urpkFingerprint
+      (\ s a -> s{_urpkFingerprint = a})
+
+-- | Name of the user for this request.
+urpkUser :: Lens' UsersRemovePublicKey Text
+urpkUser = lens _urpkUser (\ s a -> s{_urpkUser = a})
+
+instance GoogleRequest UsersRemovePublicKey where
+        type Rs UsersRemovePublicKey = Operation
+        requestClient UsersRemovePublicKey{..}
+          = go _urpkProject _urpkUser (Just _urpkFingerprint)
+              (Just AltJSON)
+              userAccountsService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy UsersRemovePublicKeyResource)
+                      mempty
diff --git a/gen/Network/Google/UserAccounts.hs b/gen/Network/Google/UserAccounts.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/UserAccounts.hs
@@ -0,0 +1,291 @@
+{-# LANGUAGE DataKinds         #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# LANGUAGE TypeOperators     #-}
+
+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+
+-- |
+-- Module      : Network.Google.UserAccounts
+-- Copyright   : (c) 2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- API for the Google Cloud User Accounts service.
+--
+-- /See:/ <https://cloud.google.com/compute/docs/access/user-accounts/api/latest/ Cloud User Accounts API Reference>
+module Network.Google.UserAccounts
+    (
+    -- * Service Configuration
+      userAccountsService
+
+    -- * API Declaration
+    , UserAccountsAPI
+
+    -- * Resources
+
+    -- ** clouduseraccounts.globalAccountsOperations.delete
+    , module Network.Google.Resource.CloudUserAccounts.GlobalAccountsOperations.Delete
+
+    -- ** clouduseraccounts.globalAccountsOperations.get
+    , module Network.Google.Resource.CloudUserAccounts.GlobalAccountsOperations.Get
+
+    -- ** clouduseraccounts.globalAccountsOperations.list
+    , module Network.Google.Resource.CloudUserAccounts.GlobalAccountsOperations.List
+
+    -- ** clouduseraccounts.groups.addMember
+    , module Network.Google.Resource.CloudUserAccounts.Groups.AddMember
+
+    -- ** clouduseraccounts.groups.delete
+    , module Network.Google.Resource.CloudUserAccounts.Groups.Delete
+
+    -- ** clouduseraccounts.groups.get
+    , module Network.Google.Resource.CloudUserAccounts.Groups.Get
+
+    -- ** clouduseraccounts.groups.insert
+    , module Network.Google.Resource.CloudUserAccounts.Groups.Insert
+
+    -- ** clouduseraccounts.groups.list
+    , module Network.Google.Resource.CloudUserAccounts.Groups.List
+
+    -- ** clouduseraccounts.groups.removeMember
+    , module Network.Google.Resource.CloudUserAccounts.Groups.RemoveMember
+
+    -- ** clouduseraccounts.linux.getAuthorizedKeysView
+    , module Network.Google.Resource.CloudUserAccounts.Linux.GetAuthorizedKeysView
+
+    -- ** clouduseraccounts.linux.getLinuxAccountViews
+    , module Network.Google.Resource.CloudUserAccounts.Linux.GetLinuxAccountViews
+
+    -- ** clouduseraccounts.users.addPublicKey
+    , module Network.Google.Resource.CloudUserAccounts.Users.AddPublicKey
+
+    -- ** clouduseraccounts.users.delete
+    , module Network.Google.Resource.CloudUserAccounts.Users.Delete
+
+    -- ** clouduseraccounts.users.get
+    , module Network.Google.Resource.CloudUserAccounts.Users.Get
+
+    -- ** clouduseraccounts.users.insert
+    , module Network.Google.Resource.CloudUserAccounts.Users.Insert
+
+    -- ** clouduseraccounts.users.list
+    , module Network.Google.Resource.CloudUserAccounts.Users.List
+
+    -- ** clouduseraccounts.users.removePublicKey
+    , module Network.Google.Resource.CloudUserAccounts.Users.RemovePublicKey
+
+    -- * Types
+
+    -- ** OperationWarningsItemDataItem
+    , OperationWarningsItemDataItem
+    , operationWarningsItemDataItem
+    , owidiValue
+    , owidiKey
+
+    -- ** OperationWarningsItemCode
+    , OperationWarningsItemCode (..)
+
+    -- ** OperationList
+    , OperationList
+    , operationList
+    , olNextPageToken
+    , olKind
+    , olItems
+    , olSelfLink
+    , olId
+
+    -- ** Group
+    , Group
+    , group'
+    , gKind
+    , gMembers
+    , gSelfLink
+    , gName
+    , gCreationTimestamp
+    , gId
+    , gDescription
+
+    -- ** GroupList
+    , GroupList
+    , groupList
+    , glNextPageToken
+    , glKind
+    , glItems
+    , glSelfLink
+    , glId
+
+    -- ** Operation
+    , Operation
+    , operation
+    , oTargetId
+    , oStatus
+    , oInsertTime
+    , oProgress
+    , oStartTime
+    , oKind
+    , oError
+    , oHTTPErrorMessage
+    , oZone
+    , oWarnings
+    , oHTTPErrorStatusCode
+    , oUser
+    , oSelfLink
+    , oName
+    , oStatusMessage
+    , oCreationTimestamp
+    , oEndTime
+    , oId
+    , oOperationType
+    , oRegion
+    , oTargetLink
+    , oClientOperationId
+
+    -- ** UserList
+    , UserList
+    , userList
+    , ulNextPageToken
+    , ulKind
+    , ulItems
+    , ulSelfLink
+    , ulId
+
+    -- ** PublicKey
+    , PublicKey
+    , publicKey
+    , pkFingerprint
+    , pkKey
+    , pkCreationTimestamp
+    , pkExpirationTimestamp
+    , pkDescription
+
+    -- ** OperationStatus
+    , OperationStatus (..)
+
+    -- ** LinuxAccountViews
+    , LinuxAccountViews
+    , linuxAccountViews
+    , lavUserViews
+    , lavKind
+    , lavGroupViews
+
+    -- ** User
+    , User
+    , user
+    , uGroups
+    , uPublicKeys
+    , uKind
+    , uOwner
+    , uSelfLink
+    , uName
+    , uCreationTimestamp
+    , uId
+    , uDescription
+
+    -- ** GroupsAddMemberRequest
+    , GroupsAddMemberRequest
+    , groupsAddMemberRequest
+    , gamrUsers
+
+    -- ** LinuxGroupView
+    , LinuxGroupView
+    , linuxGroupView
+    , lgvMembers
+    , lgvGid
+    , lgvGroupName
+
+    -- ** LinuxUserView
+    , LinuxUserView
+    , linuxUserView
+    , luvGecos
+    , luvUid
+    , luvUsername
+    , luvShell
+    , luvGid
+    , luvHomeDirectory
+
+    -- ** LinuxGetLinuxAccountViewsResponse
+    , LinuxGetLinuxAccountViewsResponse
+    , linuxGetLinuxAccountViewsResponse
+    , lglavrResource
+
+    -- ** OperationError
+    , OperationError
+    , operationError
+    , oeErrors
+
+    -- ** LinuxGetAuthorizedKeysViewResponse
+    , LinuxGetAuthorizedKeysViewResponse
+    , linuxGetAuthorizedKeysViewResponse
+    , lgakvrResource
+
+    -- ** OperationErrorErrorsItem
+    , OperationErrorErrorsItem
+    , operationErrorErrorsItem
+    , oeeiLocation
+    , oeeiCode
+    , oeeiMessage
+
+    -- ** GroupsRemoveMemberRequest
+    , GroupsRemoveMemberRequest
+    , groupsRemoveMemberRequest
+    , grmrUsers
+
+    -- ** AuthorizedKeysView
+    , AuthorizedKeysView
+    , authorizedKeysView
+    , akvSudoer
+    , akvKeys
+
+    -- ** OperationWarningsItem
+    , OperationWarningsItem
+    , operationWarningsItem
+    , owiData
+    , owiCode
+    , owiMessage
+    ) where
+
+import           Network.Google.Prelude
+import           Network.Google.Resource.CloudUserAccounts.GlobalAccountsOperations.Delete
+import           Network.Google.Resource.CloudUserAccounts.GlobalAccountsOperations.Get
+import           Network.Google.Resource.CloudUserAccounts.GlobalAccountsOperations.List
+import           Network.Google.Resource.CloudUserAccounts.Groups.AddMember
+import           Network.Google.Resource.CloudUserAccounts.Groups.Delete
+import           Network.Google.Resource.CloudUserAccounts.Groups.Get
+import           Network.Google.Resource.CloudUserAccounts.Groups.Insert
+import           Network.Google.Resource.CloudUserAccounts.Groups.List
+import           Network.Google.Resource.CloudUserAccounts.Groups.RemoveMember
+import           Network.Google.Resource.CloudUserAccounts.Linux.GetAuthorizedKeysView
+import           Network.Google.Resource.CloudUserAccounts.Linux.GetLinuxAccountViews
+import           Network.Google.Resource.CloudUserAccounts.Users.AddPublicKey
+import           Network.Google.Resource.CloudUserAccounts.Users.Delete
+import           Network.Google.Resource.CloudUserAccounts.Users.Get
+import           Network.Google.Resource.CloudUserAccounts.Users.Insert
+import           Network.Google.Resource.CloudUserAccounts.Users.List
+import           Network.Google.Resource.CloudUserAccounts.Users.RemovePublicKey
+import           Network.Google.UserAccounts.Types
+
+{- $resources
+TODO
+-}
+
+-- | Represents the entirety of the methods and resources available for the Cloud User Accounts API service.
+type UserAccountsAPI =
+     GroupsInsertResource :<|> GroupsListResource :<|>
+       GroupsGetResource
+       :<|> GroupsRemoveMemberResource
+       :<|> GroupsDeleteResource
+       :<|> GroupsAddMemberResource
+       :<|> UsersAddPublicKeyResource
+       :<|> UsersInsertResource
+       :<|> UsersListResource
+       :<|> UsersRemovePublicKeyResource
+       :<|> UsersGetResource
+       :<|> UsersDeleteResource
+       :<|> GlobalAccountsOperationsListResource
+       :<|> GlobalAccountsOperationsGetResource
+       :<|> GlobalAccountsOperationsDeleteResource
+       :<|> LinuxGetLinuxAccountViewsResource
+       :<|> LinuxGetAuthorizedKeysViewResource
diff --git a/gen/Network/Google/UserAccounts/Types.hs b/gen/Network/Google/UserAccounts/Types.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/UserAccounts/Types.hs
@@ -0,0 +1,219 @@
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- |
+-- Module      : Network.Google.UserAccounts.Types
+-- Copyright   : (c) 2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+module Network.Google.UserAccounts.Types
+    (
+    -- * Service Configuration
+      userAccountsService
+
+    -- * OAuth Scopes
+    , cloudPlatformReadOnlyScope
+    , cloudPlatformScope
+    , cloudUseraccountsScope
+    , cloudUseraccountsReadonlyScope
+
+    -- * OperationWarningsItemDataItem
+    , OperationWarningsItemDataItem
+    , operationWarningsItemDataItem
+    , owidiValue
+    , owidiKey
+
+    -- * OperationWarningsItemCode
+    , OperationWarningsItemCode (..)
+
+    -- * OperationList
+    , OperationList
+    , operationList
+    , olNextPageToken
+    , olKind
+    , olItems
+    , olSelfLink
+    , olId
+
+    -- * Group
+    , Group
+    , group'
+    , gKind
+    , gMembers
+    , gSelfLink
+    , gName
+    , gCreationTimestamp
+    , gId
+    , gDescription
+
+    -- * GroupList
+    , GroupList
+    , groupList
+    , glNextPageToken
+    , glKind
+    , glItems
+    , glSelfLink
+    , glId
+
+    -- * Operation
+    , Operation
+    , operation
+    , oTargetId
+    , oStatus
+    , oInsertTime
+    , oProgress
+    , oStartTime
+    , oKind
+    , oError
+    , oHTTPErrorMessage
+    , oZone
+    , oWarnings
+    , oHTTPErrorStatusCode
+    , oUser
+    , oSelfLink
+    , oName
+    , oStatusMessage
+    , oCreationTimestamp
+    , oEndTime
+    , oId
+    , oOperationType
+    , oRegion
+    , oTargetLink
+    , oClientOperationId
+
+    -- * UserList
+    , UserList
+    , userList
+    , ulNextPageToken
+    , ulKind
+    , ulItems
+    , ulSelfLink
+    , ulId
+
+    -- * PublicKey
+    , PublicKey
+    , publicKey
+    , pkFingerprint
+    , pkKey
+    , pkCreationTimestamp
+    , pkExpirationTimestamp
+    , pkDescription
+
+    -- * OperationStatus
+    , OperationStatus (..)
+
+    -- * LinuxAccountViews
+    , LinuxAccountViews
+    , linuxAccountViews
+    , lavUserViews
+    , lavKind
+    , lavGroupViews
+
+    -- * User
+    , User
+    , user
+    , uGroups
+    , uPublicKeys
+    , uKind
+    , uOwner
+    , uSelfLink
+    , uName
+    , uCreationTimestamp
+    , uId
+    , uDescription
+
+    -- * GroupsAddMemberRequest
+    , GroupsAddMemberRequest
+    , groupsAddMemberRequest
+    , gamrUsers
+
+    -- * LinuxGroupView
+    , LinuxGroupView
+    , linuxGroupView
+    , lgvMembers
+    , lgvGid
+    , lgvGroupName
+
+    -- * LinuxUserView
+    , LinuxUserView
+    , linuxUserView
+    , luvGecos
+    , luvUid
+    , luvUsername
+    , luvShell
+    , luvGid
+    , luvHomeDirectory
+
+    -- * LinuxGetLinuxAccountViewsResponse
+    , LinuxGetLinuxAccountViewsResponse
+    , linuxGetLinuxAccountViewsResponse
+    , lglavrResource
+
+    -- * OperationError
+    , OperationError
+    , operationError
+    , oeErrors
+
+    -- * LinuxGetAuthorizedKeysViewResponse
+    , LinuxGetAuthorizedKeysViewResponse
+    , linuxGetAuthorizedKeysViewResponse
+    , lgakvrResource
+
+    -- * OperationErrorErrorsItem
+    , OperationErrorErrorsItem
+    , operationErrorErrorsItem
+    , oeeiLocation
+    , oeeiCode
+    , oeeiMessage
+
+    -- * GroupsRemoveMemberRequest
+    , GroupsRemoveMemberRequest
+    , groupsRemoveMemberRequest
+    , grmrUsers
+
+    -- * AuthorizedKeysView
+    , AuthorizedKeysView
+    , authorizedKeysView
+    , akvSudoer
+    , akvKeys
+
+    -- * OperationWarningsItem
+    , OperationWarningsItem
+    , operationWarningsItem
+    , owiData
+    , owiCode
+    , owiMessage
+    ) where
+
+import           Network.Google.Prelude
+import           Network.Google.UserAccounts.Types.Product
+import           Network.Google.UserAccounts.Types.Sum
+
+-- | Default request referring to version 'beta' of the Cloud User Accounts API. This contains the host and root path used as a starting point for constructing service requests.
+userAccountsService :: Service
+userAccountsService
+  = defaultService (ServiceId "clouduseraccounts:beta")
+      "www.googleapis.com"
+
+-- | View your data across Google Cloud Platform services
+cloudPlatformReadOnlyScope :: OAuthScope
+cloudPlatformReadOnlyScope = "https://www.googleapis.com/auth/cloud-platform.read-only";
+
+-- | View and manage your data across Google Cloud Platform services
+cloudPlatformScope :: OAuthScope
+cloudPlatformScope = "https://www.googleapis.com/auth/cloud-platform";
+
+-- | Manage your Google Cloud User Accounts
+cloudUseraccountsScope :: OAuthScope
+cloudUseraccountsScope = "https://www.googleapis.com/auth/cloud.useraccounts";
+
+-- | View your Google Cloud User Accounts
+cloudUseraccountsReadonlyScope :: OAuthScope
+cloudUseraccountsReadonlyScope = "https://www.googleapis.com/auth/cloud.useraccounts.readonly";
diff --git a/gen/Network/Google/UserAccounts/Types/Product.hs b/gen/Network/Google/UserAccounts/Types/Product.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/UserAccounts/Types/Product.hs
@@ -0,0 +1,1488 @@
+{-# 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.UserAccounts.Types.Product
+-- Copyright   : (c) 2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+module Network.Google.UserAccounts.Types.Product where
+
+import           Network.Google.Prelude
+import           Network.Google.UserAccounts.Types.Sum
+
+--
+-- /See:/ 'operationWarningsItemDataItem' smart constructor.
+data OperationWarningsItemDataItem = OperationWarningsItemDataItem
+    { _owidiValue :: !(Maybe Text)
+    , _owidiKey   :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'OperationWarningsItemDataItem' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'owidiValue'
+--
+-- * 'owidiKey'
+operationWarningsItemDataItem
+    :: OperationWarningsItemDataItem
+operationWarningsItemDataItem =
+    OperationWarningsItemDataItem
+    { _owidiValue = Nothing
+    , _owidiKey = Nothing
+    }
+
+-- | [Output Only] A warning data value corresponding to the key.
+owidiValue :: Lens' OperationWarningsItemDataItem (Maybe Text)
+owidiValue
+  = lens _owidiValue (\ s a -> s{_owidiValue = a})
+
+-- | [Output Only] A key for the warning data.
+owidiKey :: Lens' OperationWarningsItemDataItem (Maybe Text)
+owidiKey = lens _owidiKey (\ s a -> s{_owidiKey = a})
+
+instance FromJSON OperationWarningsItemDataItem where
+        parseJSON
+          = withObject "OperationWarningsItemDataItem"
+              (\ o ->
+                 OperationWarningsItemDataItem <$>
+                   (o .:? "value") <*> (o .:? "key"))
+
+instance ToJSON OperationWarningsItemDataItem where
+        toJSON OperationWarningsItemDataItem{..}
+          = object
+              (catMaybes
+                 [("value" .=) <$> _owidiValue,
+                  ("key" .=) <$> _owidiKey])
+
+-- | Contains a list of Operation resources.
+--
+-- /See:/ 'operationList' smart constructor.
+data OperationList = OperationList
+    { _olNextPageToken :: !(Maybe Text)
+    , _olKind          :: !Text
+    , _olItems         :: !(Maybe [Operation])
+    , _olSelfLink      :: !(Maybe Text)
+    , _olId            :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'OperationList' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'olNextPageToken'
+--
+-- * 'olKind'
+--
+-- * 'olItems'
+--
+-- * 'olSelfLink'
+--
+-- * 'olId'
+operationList
+    :: OperationList
+operationList =
+    OperationList
+    { _olNextPageToken = Nothing
+    , _olKind = "clouduseraccounts#operationList"
+    , _olItems = Nothing
+    , _olSelfLink = Nothing
+    , _olId = Nothing
+    }
+
+-- | [Output Only] A token used to continue a truncate.
+olNextPageToken :: Lens' OperationList (Maybe Text)
+olNextPageToken
+  = lens _olNextPageToken
+      (\ s a -> s{_olNextPageToken = a})
+
+-- | [Output Only] Type of resource. Always compute#operations for Operations
+-- resource.
+olKind :: Lens' OperationList Text
+olKind = lens _olKind (\ s a -> s{_olKind = a})
+
+-- | [Output Only] The Operation resources.
+olItems :: Lens' OperationList [Operation]
+olItems
+  = lens _olItems (\ s a -> s{_olItems = a}) . _Default
+      . _Coerce
+
+-- | [Output Only] Server-defined URL for this resource.
+olSelfLink :: Lens' OperationList (Maybe Text)
+olSelfLink
+  = lens _olSelfLink (\ s a -> s{_olSelfLink = a})
+
+-- | [Output Only] Unique identifier for the resource; defined by the server.
+olId :: Lens' OperationList (Maybe Text)
+olId = lens _olId (\ s a -> s{_olId = a})
+
+instance FromJSON OperationList where
+        parseJSON
+          = withObject "OperationList"
+              (\ o ->
+                 OperationList <$>
+                   (o .:? "nextPageToken") <*>
+                     (o .:? "kind" .!= "clouduseraccounts#operationList")
+                     <*> (o .:? "items" .!= mempty)
+                     <*> (o .:? "selfLink")
+                     <*> (o .:? "id"))
+
+instance ToJSON OperationList where
+        toJSON OperationList{..}
+          = object
+              (catMaybes
+                 [("nextPageToken" .=) <$> _olNextPageToken,
+                  Just ("kind" .= _olKind), ("items" .=) <$> _olItems,
+                  ("selfLink" .=) <$> _olSelfLink,
+                  ("id" .=) <$> _olId])
+
+-- | A Group resource.
+--
+-- /See:/ 'group'' smart constructor.
+data Group = Group
+    { _gKind              :: !Text
+    , _gMembers           :: !(Maybe [Text])
+    , _gSelfLink          :: !(Maybe Text)
+    , _gName              :: !(Maybe Text)
+    , _gCreationTimestamp :: !(Maybe Text)
+    , _gId                :: !(Maybe (Textual Word64))
+    , _gDescription       :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'Group' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'gKind'
+--
+-- * 'gMembers'
+--
+-- * 'gSelfLink'
+--
+-- * 'gName'
+--
+-- * 'gCreationTimestamp'
+--
+-- * 'gId'
+--
+-- * 'gDescription'
+group'
+    :: Group
+group' =
+    Group
+    { _gKind = "clouduseraccounts#group"
+    , _gMembers = Nothing
+    , _gSelfLink = Nothing
+    , _gName = Nothing
+    , _gCreationTimestamp = Nothing
+    , _gId = Nothing
+    , _gDescription = Nothing
+    }
+
+-- | [Output Only] Type of the resource. Always clouduseraccounts#group for
+-- groups.
+gKind :: Lens' Group Text
+gKind = lens _gKind (\ s a -> s{_gKind = a})
+
+-- | [Output Only] A list of URLs to User resources who belong to the group.
+-- Users may only be members of groups in the same project.
+gMembers :: Lens' Group [Text]
+gMembers
+  = lens _gMembers (\ s a -> s{_gMembers = a}) .
+      _Default
+      . _Coerce
+
+-- | [Output Only] Server defined URL for the resource.
+gSelfLink :: Lens' Group (Maybe Text)
+gSelfLink
+  = lens _gSelfLink (\ s a -> s{_gSelfLink = a})
+
+-- | Name of the resource; provided by the client when the resource is
+-- created.
+gName :: Lens' Group (Maybe Text)
+gName = lens _gName (\ s a -> s{_gName = a})
+
+-- | [Output Only] Creation timestamp in RFC3339 text format.
+gCreationTimestamp :: Lens' Group (Maybe Text)
+gCreationTimestamp
+  = lens _gCreationTimestamp
+      (\ s a -> s{_gCreationTimestamp = a})
+
+-- | [Output Only] Unique identifier for the resource; defined by the server.
+gId :: Lens' Group (Maybe Word64)
+gId
+  = lens _gId (\ s a -> s{_gId = a}) . mapping _Coerce
+
+-- | An optional textual description of the resource; provided by the client
+-- when the resource is created.
+gDescription :: Lens' Group (Maybe Text)
+gDescription
+  = lens _gDescription (\ s a -> s{_gDescription = a})
+
+instance FromJSON Group where
+        parseJSON
+          = withObject "Group"
+              (\ o ->
+                 Group <$>
+                   (o .:? "kind" .!= "clouduseraccounts#group") <*>
+                     (o .:? "members" .!= mempty)
+                     <*> (o .:? "selfLink")
+                     <*> (o .:? "name")
+                     <*> (o .:? "creationTimestamp")
+                     <*> (o .:? "id")
+                     <*> (o .:? "description"))
+
+instance ToJSON Group where
+        toJSON Group{..}
+          = object
+              (catMaybes
+                 [Just ("kind" .= _gKind),
+                  ("members" .=) <$> _gMembers,
+                  ("selfLink" .=) <$> _gSelfLink,
+                  ("name" .=) <$> _gName,
+                  ("creationTimestamp" .=) <$> _gCreationTimestamp,
+                  ("id" .=) <$> _gId,
+                  ("description" .=) <$> _gDescription])
+
+--
+-- /See:/ 'groupList' smart constructor.
+data GroupList = GroupList
+    { _glNextPageToken :: !(Maybe Text)
+    , _glKind          :: !Text
+    , _glItems         :: !(Maybe [Group])
+    , _glSelfLink      :: !(Maybe Text)
+    , _glId            :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'GroupList' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'glNextPageToken'
+--
+-- * 'glKind'
+--
+-- * 'glItems'
+--
+-- * 'glSelfLink'
+--
+-- * 'glId'
+groupList
+    :: GroupList
+groupList =
+    GroupList
+    { _glNextPageToken = Nothing
+    , _glKind = "clouduseraccounts#groupList"
+    , _glItems = Nothing
+    , _glSelfLink = Nothing
+    , _glId = Nothing
+    }
+
+-- | [Output Only] A token used to continue a truncated list request.
+glNextPageToken :: Lens' GroupList (Maybe Text)
+glNextPageToken
+  = lens _glNextPageToken
+      (\ s a -> s{_glNextPageToken = a})
+
+-- | [Output Only] Type of resource. Always clouduseraccounts#groupList for
+-- lists of groups.
+glKind :: Lens' GroupList Text
+glKind = lens _glKind (\ s a -> s{_glKind = a})
+
+-- | [Output Only] A list of Group resources.
+glItems :: Lens' GroupList [Group]
+glItems
+  = lens _glItems (\ s a -> s{_glItems = a}) . _Default
+      . _Coerce
+
+-- | [Output Only] Server defined URL for this resource.
+glSelfLink :: Lens' GroupList (Maybe Text)
+glSelfLink
+  = lens _glSelfLink (\ s a -> s{_glSelfLink = a})
+
+-- | [Output Only] Unique identifier for the resource; defined by the server.
+glId :: Lens' GroupList (Maybe Text)
+glId = lens _glId (\ s a -> s{_glId = a})
+
+instance FromJSON GroupList where
+        parseJSON
+          = withObject "GroupList"
+              (\ o ->
+                 GroupList <$>
+                   (o .:? "nextPageToken") <*>
+                     (o .:? "kind" .!= "clouduseraccounts#groupList")
+                     <*> (o .:? "items" .!= mempty)
+                     <*> (o .:? "selfLink")
+                     <*> (o .:? "id"))
+
+instance ToJSON GroupList where
+        toJSON GroupList{..}
+          = object
+              (catMaybes
+                 [("nextPageToken" .=) <$> _glNextPageToken,
+                  Just ("kind" .= _glKind), ("items" .=) <$> _glItems,
+                  ("selfLink" .=) <$> _glSelfLink,
+                  ("id" .=) <$> _glId])
+
+-- | An Operation resource, used to manage asynchronous API requests.
+--
+-- /See:/ 'operation' smart constructor.
+data Operation = Operation
+    { _oTargetId            :: !(Maybe (Textual Word64))
+    , _oStatus              :: !(Maybe OperationStatus)
+    , _oInsertTime          :: !(Maybe Text)
+    , _oProgress            :: !(Maybe (Textual Int32))
+    , _oStartTime           :: !(Maybe Text)
+    , _oKind                :: !Text
+    , _oError               :: !(Maybe OperationError)
+    , _oHTTPErrorMessage    :: !(Maybe Text)
+    , _oZone                :: !(Maybe Text)
+    , _oWarnings            :: !(Maybe [OperationWarningsItem])
+    , _oHTTPErrorStatusCode :: !(Maybe (Textual Int32))
+    , _oUser                :: !(Maybe Text)
+    , _oSelfLink            :: !(Maybe Text)
+    , _oName                :: !(Maybe Text)
+    , _oStatusMessage       :: !(Maybe Text)
+    , _oCreationTimestamp   :: !(Maybe Text)
+    , _oEndTime             :: !(Maybe Text)
+    , _oId                  :: !(Maybe (Textual Word64))
+    , _oOperationType       :: !(Maybe Text)
+    , _oRegion              :: !(Maybe Text)
+    , _oTargetLink          :: !(Maybe Text)
+    , _oClientOperationId   :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'Operation' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'oTargetId'
+--
+-- * 'oStatus'
+--
+-- * 'oInsertTime'
+--
+-- * 'oProgress'
+--
+-- * 'oStartTime'
+--
+-- * 'oKind'
+--
+-- * 'oError'
+--
+-- * 'oHTTPErrorMessage'
+--
+-- * 'oZone'
+--
+-- * 'oWarnings'
+--
+-- * 'oHTTPErrorStatusCode'
+--
+-- * 'oUser'
+--
+-- * 'oSelfLink'
+--
+-- * 'oName'
+--
+-- * 'oStatusMessage'
+--
+-- * 'oCreationTimestamp'
+--
+-- * 'oEndTime'
+--
+-- * 'oId'
+--
+-- * 'oOperationType'
+--
+-- * 'oRegion'
+--
+-- * 'oTargetLink'
+--
+-- * 'oClientOperationId'
+operation
+    :: Operation
+operation =
+    Operation
+    { _oTargetId = Nothing
+    , _oStatus = Nothing
+    , _oInsertTime = Nothing
+    , _oProgress = Nothing
+    , _oStartTime = Nothing
+    , _oKind = "clouduseraccounts#operation"
+    , _oError = Nothing
+    , _oHTTPErrorMessage = Nothing
+    , _oZone = Nothing
+    , _oWarnings = Nothing
+    , _oHTTPErrorStatusCode = Nothing
+    , _oUser = Nothing
+    , _oSelfLink = Nothing
+    , _oName = Nothing
+    , _oStatusMessage = Nothing
+    , _oCreationTimestamp = Nothing
+    , _oEndTime = Nothing
+    , _oId = Nothing
+    , _oOperationType = Nothing
+    , _oRegion = Nothing
+    , _oTargetLink = Nothing
+    , _oClientOperationId = Nothing
+    }
+
+-- | [Output Only] Unique target ID which identifies a particular incarnation
+-- of the target.
+oTargetId :: Lens' Operation (Maybe Word64)
+oTargetId
+  = lens _oTargetId (\ s a -> s{_oTargetId = a}) .
+      mapping _Coerce
+
+-- | [Output Only] Status of the operation. Can be one of the following:
+-- PENDING, RUNNING, or DONE.
+oStatus :: Lens' Operation (Maybe OperationStatus)
+oStatus = lens _oStatus (\ s a -> s{_oStatus = a})
+
+-- | [Output Only] The time that this operation was requested. This is in
+-- RFC3339 text format.
+oInsertTime :: Lens' Operation (Maybe Text)
+oInsertTime
+  = lens _oInsertTime (\ s a -> s{_oInsertTime = a})
+
+-- | [Output Only] An optional progress indicator that ranges from 0 to 100.
+-- There is no requirement that this be linear or support any granularity
+-- of operations. This should not be used to guess at when the operation
+-- will be complete. This number should monotonically increase as the
+-- operation progresses.
+oProgress :: Lens' Operation (Maybe Int32)
+oProgress
+  = lens _oProgress (\ s a -> s{_oProgress = a}) .
+      mapping _Coerce
+
+-- | [Output Only] The time that this operation was started by the server.
+-- This is in RFC3339 text format.
+oStartTime :: Lens' Operation (Maybe Text)
+oStartTime
+  = lens _oStartTime (\ s a -> s{_oStartTime = a})
+
+-- | [Output Only] Type of the resource. Always compute#operation for
+-- Operation resources.
+oKind :: Lens' Operation Text
+oKind = lens _oKind (\ s a -> s{_oKind = a})
+
+-- | [Output Only] If errors are generated during processing of the
+-- operation, this field will be populated.
+oError :: Lens' Operation (Maybe OperationError)
+oError = lens _oError (\ s a -> s{_oError = a})
+
+-- | [Output Only] If the operation fails, this field contains the HTTP error
+-- message that was returned, such as NOT FOUND.
+oHTTPErrorMessage :: Lens' Operation (Maybe Text)
+oHTTPErrorMessage
+  = lens _oHTTPErrorMessage
+      (\ s a -> s{_oHTTPErrorMessage = a})
+
+-- | [Output Only] URL of the zone where the operation resides.
+oZone :: Lens' Operation (Maybe Text)
+oZone = lens _oZone (\ s a -> s{_oZone = a})
+
+-- | [Output Only] If warning messages are generated during processing of the
+-- operation, this field will be populated.
+oWarnings :: Lens' Operation [OperationWarningsItem]
+oWarnings
+  = lens _oWarnings (\ s a -> s{_oWarnings = a}) .
+      _Default
+      . _Coerce
+
+-- | [Output Only] If the operation fails, this field contains the HTTP error
+-- message that was returned, such as 404.
+oHTTPErrorStatusCode :: Lens' Operation (Maybe Int32)
+oHTTPErrorStatusCode
+  = lens _oHTTPErrorStatusCode
+      (\ s a -> s{_oHTTPErrorStatusCode = a})
+      . mapping _Coerce
+
+-- | [Output Only] User who requested the operation, for example:
+-- user\'example.com.
+oUser :: Lens' Operation (Maybe Text)
+oUser = lens _oUser (\ s a -> s{_oUser = a})
+
+-- | [Output Only] Server-defined URL for the resource.
+oSelfLink :: Lens' Operation (Maybe Text)
+oSelfLink
+  = lens _oSelfLink (\ s a -> s{_oSelfLink = a})
+
+-- | [Output Only] Name of the resource.
+oName :: Lens' Operation (Maybe Text)
+oName = lens _oName (\ s a -> s{_oName = a})
+
+-- | [Output Only] An optional textual description of the current status of
+-- the operation.
+oStatusMessage :: Lens' Operation (Maybe Text)
+oStatusMessage
+  = lens _oStatusMessage
+      (\ s a -> s{_oStatusMessage = a})
+
+-- | [Output Only] Creation timestamp in RFC3339 text format.
+oCreationTimestamp :: Lens' Operation (Maybe Text)
+oCreationTimestamp
+  = lens _oCreationTimestamp
+      (\ s a -> s{_oCreationTimestamp = a})
+
+-- | [Output Only] The time that this operation was completed. This is in
+-- RFC3339 text format.
+oEndTime :: Lens' Operation (Maybe Text)
+oEndTime = lens _oEndTime (\ s a -> s{_oEndTime = a})
+
+-- | [Output Only] Unique identifier for the resource; defined by the server.
+oId :: Lens' Operation (Maybe Word64)
+oId
+  = lens _oId (\ s a -> s{_oId = a}) . mapping _Coerce
+
+-- | [Output Only] Type of the operation, such as insert,
+-- compute.instanceGroups.update, or compute.instanceGroups.delete.
+oOperationType :: Lens' Operation (Maybe Text)
+oOperationType
+  = lens _oOperationType
+      (\ s a -> s{_oOperationType = a})
+
+-- | [Output Only] URL of the region where the operation resides. Only
+-- applicable for regional resources.
+oRegion :: Lens' Operation (Maybe Text)
+oRegion = lens _oRegion (\ s a -> s{_oRegion = a})
+
+-- | [Output Only] URL of the resource the operation is mutating.
+oTargetLink :: Lens' Operation (Maybe Text)
+oTargetLink
+  = lens _oTargetLink (\ s a -> s{_oTargetLink = a})
+
+-- | [Output Only] An optional identifier specified by the client when the
+-- mutation was initiated. Must be unique for all Operation resources in
+-- the project.
+oClientOperationId :: Lens' Operation (Maybe Text)
+oClientOperationId
+  = lens _oClientOperationId
+      (\ s a -> s{_oClientOperationId = a})
+
+instance FromJSON Operation where
+        parseJSON
+          = withObject "Operation"
+              (\ o ->
+                 Operation <$>
+                   (o .:? "targetId") <*> (o .:? "status") <*>
+                     (o .:? "insertTime")
+                     <*> (o .:? "progress")
+                     <*> (o .:? "startTime")
+                     <*> (o .:? "kind" .!= "clouduseraccounts#operation")
+                     <*> (o .:? "error")
+                     <*> (o .:? "httpErrorMessage")
+                     <*> (o .:? "zone")
+                     <*> (o .:? "warnings" .!= mempty)
+                     <*> (o .:? "httpErrorStatusCode")
+                     <*> (o .:? "user")
+                     <*> (o .:? "selfLink")
+                     <*> (o .:? "name")
+                     <*> (o .:? "statusMessage")
+                     <*> (o .:? "creationTimestamp")
+                     <*> (o .:? "endTime")
+                     <*> (o .:? "id")
+                     <*> (o .:? "operationType")
+                     <*> (o .:? "region")
+                     <*> (o .:? "targetLink")
+                     <*> (o .:? "clientOperationId"))
+
+instance ToJSON Operation where
+        toJSON Operation{..}
+          = object
+              (catMaybes
+                 [("targetId" .=) <$> _oTargetId,
+                  ("status" .=) <$> _oStatus,
+                  ("insertTime" .=) <$> _oInsertTime,
+                  ("progress" .=) <$> _oProgress,
+                  ("startTime" .=) <$> _oStartTime,
+                  Just ("kind" .= _oKind), ("error" .=) <$> _oError,
+                  ("httpErrorMessage" .=) <$> _oHTTPErrorMessage,
+                  ("zone" .=) <$> _oZone,
+                  ("warnings" .=) <$> _oWarnings,
+                  ("httpErrorStatusCode" .=) <$> _oHTTPErrorStatusCode,
+                  ("user" .=) <$> _oUser,
+                  ("selfLink" .=) <$> _oSelfLink,
+                  ("name" .=) <$> _oName,
+                  ("statusMessage" .=) <$> _oStatusMessage,
+                  ("creationTimestamp" .=) <$> _oCreationTimestamp,
+                  ("endTime" .=) <$> _oEndTime, ("id" .=) <$> _oId,
+                  ("operationType" .=) <$> _oOperationType,
+                  ("region" .=) <$> _oRegion,
+                  ("targetLink" .=) <$> _oTargetLink,
+                  ("clientOperationId" .=) <$> _oClientOperationId])
+
+--
+-- /See:/ 'userList' smart constructor.
+data UserList = UserList
+    { _ulNextPageToken :: !(Maybe Text)
+    , _ulKind          :: !Text
+    , _ulItems         :: !(Maybe [User])
+    , _ulSelfLink      :: !(Maybe Text)
+    , _ulId            :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'UserList' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'ulNextPageToken'
+--
+-- * 'ulKind'
+--
+-- * 'ulItems'
+--
+-- * 'ulSelfLink'
+--
+-- * 'ulId'
+userList
+    :: UserList
+userList =
+    UserList
+    { _ulNextPageToken = Nothing
+    , _ulKind = "clouduseraccounts#userList"
+    , _ulItems = Nothing
+    , _ulSelfLink = Nothing
+    , _ulId = Nothing
+    }
+
+-- | [Output Only] A token used to continue a truncated list request.
+ulNextPageToken :: Lens' UserList (Maybe Text)
+ulNextPageToken
+  = lens _ulNextPageToken
+      (\ s a -> s{_ulNextPageToken = a})
+
+-- | [Output Only] Type of resource. Always clouduseraccounts#userList for
+-- lists of users.
+ulKind :: Lens' UserList Text
+ulKind = lens _ulKind (\ s a -> s{_ulKind = a})
+
+-- | [Output Only] A list of User resources.
+ulItems :: Lens' UserList [User]
+ulItems
+  = lens _ulItems (\ s a -> s{_ulItems = a}) . _Default
+      . _Coerce
+
+-- | [Output Only] Server defined URL for this resource.
+ulSelfLink :: Lens' UserList (Maybe Text)
+ulSelfLink
+  = lens _ulSelfLink (\ s a -> s{_ulSelfLink = a})
+
+-- | [Output Only] Unique identifier for the resource; defined by the server.
+ulId :: Lens' UserList (Maybe Text)
+ulId = lens _ulId (\ s a -> s{_ulId = a})
+
+instance FromJSON UserList where
+        parseJSON
+          = withObject "UserList"
+              (\ o ->
+                 UserList <$>
+                   (o .:? "nextPageToken") <*>
+                     (o .:? "kind" .!= "clouduseraccounts#userList")
+                     <*> (o .:? "items" .!= mempty)
+                     <*> (o .:? "selfLink")
+                     <*> (o .:? "id"))
+
+instance ToJSON UserList where
+        toJSON UserList{..}
+          = object
+              (catMaybes
+                 [("nextPageToken" .=) <$> _ulNextPageToken,
+                  Just ("kind" .= _ulKind), ("items" .=) <$> _ulItems,
+                  ("selfLink" .=) <$> _ulSelfLink,
+                  ("id" .=) <$> _ulId])
+
+-- | A public key for authenticating to guests.
+--
+-- /See:/ 'publicKey' smart constructor.
+data PublicKey = PublicKey
+    { _pkFingerprint         :: !(Maybe Text)
+    , _pkKey                 :: !(Maybe Text)
+    , _pkCreationTimestamp   :: !(Maybe Text)
+    , _pkExpirationTimestamp :: !(Maybe Text)
+    , _pkDescription         :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'PublicKey' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'pkFingerprint'
+--
+-- * 'pkKey'
+--
+-- * 'pkCreationTimestamp'
+--
+-- * 'pkExpirationTimestamp'
+--
+-- * 'pkDescription'
+publicKey
+    :: PublicKey
+publicKey =
+    PublicKey
+    { _pkFingerprint = Nothing
+    , _pkKey = Nothing
+    , _pkCreationTimestamp = Nothing
+    , _pkExpirationTimestamp = Nothing
+    , _pkDescription = Nothing
+    }
+
+-- | [Output Only] The fingerprint of the key is defined by RFC4716 to be the
+-- MD5 digest of the public key.
+pkFingerprint :: Lens' PublicKey (Maybe Text)
+pkFingerprint
+  = lens _pkFingerprint
+      (\ s a -> s{_pkFingerprint = a})
+
+-- | Public key text in SSH format, defined by RFC4253 section 6.6.
+pkKey :: Lens' PublicKey (Maybe Text)
+pkKey = lens _pkKey (\ s a -> s{_pkKey = a})
+
+-- | [Output Only] Creation timestamp in RFC3339 text format.
+pkCreationTimestamp :: Lens' PublicKey (Maybe Text)
+pkCreationTimestamp
+  = lens _pkCreationTimestamp
+      (\ s a -> s{_pkCreationTimestamp = a})
+
+-- | Optional expiration timestamp. If provided, the timestamp must be in
+-- RFC3339 text format. If not provided, the public key never expires.
+pkExpirationTimestamp :: Lens' PublicKey (Maybe Text)
+pkExpirationTimestamp
+  = lens _pkExpirationTimestamp
+      (\ s a -> s{_pkExpirationTimestamp = a})
+
+-- | An optional textual description of the resource; provided by the client
+-- when the resource is created.
+pkDescription :: Lens' PublicKey (Maybe Text)
+pkDescription
+  = lens _pkDescription
+      (\ s a -> s{_pkDescription = a})
+
+instance FromJSON PublicKey where
+        parseJSON
+          = withObject "PublicKey"
+              (\ o ->
+                 PublicKey <$>
+                   (o .:? "fingerprint") <*> (o .:? "key") <*>
+                     (o .:? "creationTimestamp")
+                     <*> (o .:? "expirationTimestamp")
+                     <*> (o .:? "description"))
+
+instance ToJSON PublicKey where
+        toJSON PublicKey{..}
+          = object
+              (catMaybes
+                 [("fingerprint" .=) <$> _pkFingerprint,
+                  ("key" .=) <$> _pkKey,
+                  ("creationTimestamp" .=) <$> _pkCreationTimestamp,
+                  ("expirationTimestamp" .=) <$>
+                    _pkExpirationTimestamp,
+                  ("description" .=) <$> _pkDescription])
+
+-- | A list of all Linux accounts for this project. This API is only used by
+-- Compute Engine virtual machines to get information about user accounts
+-- for a project or instance. Linux resources are read-only views into
+-- users and groups managed by the Compute Engine Accounts API.
+--
+-- /See:/ 'linuxAccountViews' smart constructor.
+data LinuxAccountViews = LinuxAccountViews
+    { _lavUserViews  :: !(Maybe [LinuxUserView])
+    , _lavKind       :: !Text
+    , _lavGroupViews :: !(Maybe [LinuxGroupView])
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'LinuxAccountViews' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'lavUserViews'
+--
+-- * 'lavKind'
+--
+-- * 'lavGroupViews'
+linuxAccountViews
+    :: LinuxAccountViews
+linuxAccountViews =
+    LinuxAccountViews
+    { _lavUserViews = Nothing
+    , _lavKind = "clouduseraccounts#linuxAccountViews"
+    , _lavGroupViews = Nothing
+    }
+
+-- | [Output Only] A list of all users within a project.
+lavUserViews :: Lens' LinuxAccountViews [LinuxUserView]
+lavUserViews
+  = lens _lavUserViews (\ s a -> s{_lavUserViews = a})
+      . _Default
+      . _Coerce
+
+-- | [Output Only] Type of the resource. Always
+-- clouduseraccounts#linuxAccountViews for Linux resources.
+lavKind :: Lens' LinuxAccountViews Text
+lavKind = lens _lavKind (\ s a -> s{_lavKind = a})
+
+-- | [Output Only] A list of all groups within a project.
+lavGroupViews :: Lens' LinuxAccountViews [LinuxGroupView]
+lavGroupViews
+  = lens _lavGroupViews
+      (\ s a -> s{_lavGroupViews = a})
+      . _Default
+      . _Coerce
+
+instance FromJSON LinuxAccountViews where
+        parseJSON
+          = withObject "LinuxAccountViews"
+              (\ o ->
+                 LinuxAccountViews <$>
+                   (o .:? "userViews" .!= mempty) <*>
+                     (o .:? "kind" .!=
+                        "clouduseraccounts#linuxAccountViews")
+                     <*> (o .:? "groupViews" .!= mempty))
+
+instance ToJSON LinuxAccountViews where
+        toJSON LinuxAccountViews{..}
+          = object
+              (catMaybes
+                 [("userViews" .=) <$> _lavUserViews,
+                  Just ("kind" .= _lavKind),
+                  ("groupViews" .=) <$> _lavGroupViews])
+
+-- | A User resource.
+--
+-- /See:/ 'user' smart constructor.
+data User = User
+    { _uGroups            :: !(Maybe [Text])
+    , _uPublicKeys        :: !(Maybe [PublicKey])
+    , _uKind              :: !Text
+    , _uOwner             :: !(Maybe Text)
+    , _uSelfLink          :: !(Maybe Text)
+    , _uName              :: !(Maybe Text)
+    , _uCreationTimestamp :: !(Maybe Text)
+    , _uId                :: !(Maybe (Textual Word64))
+    , _uDescription       :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'User' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'uGroups'
+--
+-- * 'uPublicKeys'
+--
+-- * 'uKind'
+--
+-- * 'uOwner'
+--
+-- * 'uSelfLink'
+--
+-- * 'uName'
+--
+-- * 'uCreationTimestamp'
+--
+-- * 'uId'
+--
+-- * 'uDescription'
+user
+    :: User
+user =
+    User
+    { _uGroups = Nothing
+    , _uPublicKeys = Nothing
+    , _uKind = "clouduseraccounts#user"
+    , _uOwner = Nothing
+    , _uSelfLink = Nothing
+    , _uName = Nothing
+    , _uCreationTimestamp = Nothing
+    , _uId = Nothing
+    , _uDescription = Nothing
+    }
+
+-- | [Output Only] A list of URLs to Group resources who contain the user.
+-- Users are only members of groups in the same project.
+uGroups :: Lens' User [Text]
+uGroups
+  = lens _uGroups (\ s a -> s{_uGroups = a}) . _Default
+      . _Coerce
+
+-- | [Output Only] Public keys that this user may use to login.
+uPublicKeys :: Lens' User [PublicKey]
+uPublicKeys
+  = lens _uPublicKeys (\ s a -> s{_uPublicKeys = a}) .
+      _Default
+      . _Coerce
+
+-- | [Output Only] Type of the resource. Always clouduseraccounts#user for
+-- users.
+uKind :: Lens' User Text
+uKind = lens _uKind (\ s a -> s{_uKind = a})
+
+-- | Email address of account\'s owner. This account will be validated to
+-- make sure it exists. The email can belong to any domain, but it must be
+-- tied to a Google account.
+uOwner :: Lens' User (Maybe Text)
+uOwner = lens _uOwner (\ s a -> s{_uOwner = a})
+
+-- | [Output Only] Server defined URL for the resource.
+uSelfLink :: Lens' User (Maybe Text)
+uSelfLink
+  = lens _uSelfLink (\ s a -> s{_uSelfLink = a})
+
+-- | Name of the resource; provided by the client when the resource is
+-- created.
+uName :: Lens' User (Maybe Text)
+uName = lens _uName (\ s a -> s{_uName = a})
+
+-- | [Output Only] Creation timestamp in RFC3339 text format.
+uCreationTimestamp :: Lens' User (Maybe Text)
+uCreationTimestamp
+  = lens _uCreationTimestamp
+      (\ s a -> s{_uCreationTimestamp = a})
+
+-- | [Output Only] Unique identifier for the resource; defined by the server.
+uId :: Lens' User (Maybe Word64)
+uId
+  = lens _uId (\ s a -> s{_uId = a}) . mapping _Coerce
+
+-- | An optional textual description of the resource; provided by the client
+-- when the resource is created.
+uDescription :: Lens' User (Maybe Text)
+uDescription
+  = lens _uDescription (\ s a -> s{_uDescription = a})
+
+instance FromJSON User where
+        parseJSON
+          = withObject "User"
+              (\ o ->
+                 User <$>
+                   (o .:? "groups" .!= mempty) <*>
+                     (o .:? "publicKeys" .!= mempty)
+                     <*> (o .:? "kind" .!= "clouduseraccounts#user")
+                     <*> (o .:? "owner")
+                     <*> (o .:? "selfLink")
+                     <*> (o .:? "name")
+                     <*> (o .:? "creationTimestamp")
+                     <*> (o .:? "id")
+                     <*> (o .:? "description"))
+
+instance ToJSON User where
+        toJSON User{..}
+          = object
+              (catMaybes
+                 [("groups" .=) <$> _uGroups,
+                  ("publicKeys" .=) <$> _uPublicKeys,
+                  Just ("kind" .= _uKind), ("owner" .=) <$> _uOwner,
+                  ("selfLink" .=) <$> _uSelfLink,
+                  ("name" .=) <$> _uName,
+                  ("creationTimestamp" .=) <$> _uCreationTimestamp,
+                  ("id" .=) <$> _uId,
+                  ("description" .=) <$> _uDescription])
+
+--
+-- /See:/ 'groupsAddMemberRequest' smart constructor.
+newtype GroupsAddMemberRequest = GroupsAddMemberRequest
+    { _gamrUsers :: Maybe [Text]
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'GroupsAddMemberRequest' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'gamrUsers'
+groupsAddMemberRequest
+    :: GroupsAddMemberRequest
+groupsAddMemberRequest =
+    GroupsAddMemberRequest
+    { _gamrUsers = Nothing
+    }
+
+-- | Fully-qualified URLs of the User resources to add.
+gamrUsers :: Lens' GroupsAddMemberRequest [Text]
+gamrUsers
+  = lens _gamrUsers (\ s a -> s{_gamrUsers = a}) .
+      _Default
+      . _Coerce
+
+instance FromJSON GroupsAddMemberRequest where
+        parseJSON
+          = withObject "GroupsAddMemberRequest"
+              (\ o ->
+                 GroupsAddMemberRequest <$>
+                   (o .:? "users" .!= mempty))
+
+instance ToJSON GroupsAddMemberRequest where
+        toJSON GroupsAddMemberRequest{..}
+          = object (catMaybes [("users" .=) <$> _gamrUsers])
+
+-- | A detailed view of a Linux group.
+--
+-- /See:/ 'linuxGroupView' smart constructor.
+data LinuxGroupView = LinuxGroupView
+    { _lgvMembers   :: !(Maybe [Text])
+    , _lgvGid       :: !(Maybe (Textual Word32))
+    , _lgvGroupName :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'LinuxGroupView' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'lgvMembers'
+--
+-- * 'lgvGid'
+--
+-- * 'lgvGroupName'
+linuxGroupView
+    :: LinuxGroupView
+linuxGroupView =
+    LinuxGroupView
+    { _lgvMembers = Nothing
+    , _lgvGid = Nothing
+    , _lgvGroupName = Nothing
+    }
+
+-- | [Output Only] List of user accounts that belong to the group.
+lgvMembers :: Lens' LinuxGroupView [Text]
+lgvMembers
+  = lens _lgvMembers (\ s a -> s{_lgvMembers = a}) .
+      _Default
+      . _Coerce
+
+-- | [Output Only] The Group ID.
+lgvGid :: Lens' LinuxGroupView (Maybe Word32)
+lgvGid
+  = lens _lgvGid (\ s a -> s{_lgvGid = a}) .
+      mapping _Coerce
+
+-- | [Output Only] Group name.
+lgvGroupName :: Lens' LinuxGroupView (Maybe Text)
+lgvGroupName
+  = lens _lgvGroupName (\ s a -> s{_lgvGroupName = a})
+
+instance FromJSON LinuxGroupView where
+        parseJSON
+          = withObject "LinuxGroupView"
+              (\ o ->
+                 LinuxGroupView <$>
+                   (o .:? "members" .!= mempty) <*> (o .:? "gid") <*>
+                     (o .:? "groupName"))
+
+instance ToJSON LinuxGroupView where
+        toJSON LinuxGroupView{..}
+          = object
+              (catMaybes
+                 [("members" .=) <$> _lgvMembers,
+                  ("gid" .=) <$> _lgvGid,
+                  ("groupName" .=) <$> _lgvGroupName])
+
+-- | A detailed view of a Linux user account.
+--
+-- /See:/ 'linuxUserView' smart constructor.
+data LinuxUserView = LinuxUserView
+    { _luvGecos         :: !(Maybe Text)
+    , _luvUid           :: !(Maybe (Textual Word32))
+    , _luvUsername      :: !(Maybe Text)
+    , _luvShell         :: !(Maybe Text)
+    , _luvGid           :: !(Maybe (Textual Word32))
+    , _luvHomeDirectory :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'LinuxUserView' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'luvGecos'
+--
+-- * 'luvUid'
+--
+-- * 'luvUsername'
+--
+-- * 'luvShell'
+--
+-- * 'luvGid'
+--
+-- * 'luvHomeDirectory'
+linuxUserView
+    :: LinuxUserView
+linuxUserView =
+    LinuxUserView
+    { _luvGecos = Nothing
+    , _luvUid = Nothing
+    , _luvUsername = Nothing
+    , _luvShell = Nothing
+    , _luvGid = Nothing
+    , _luvHomeDirectory = Nothing
+    }
+
+-- | [Output Only] The GECOS (user information) entry for this account.
+luvGecos :: Lens' LinuxUserView (Maybe Text)
+luvGecos = lens _luvGecos (\ s a -> s{_luvGecos = a})
+
+-- | [Output Only] User ID.
+luvUid :: Lens' LinuxUserView (Maybe Word32)
+luvUid
+  = lens _luvUid (\ s a -> s{_luvUid = a}) .
+      mapping _Coerce
+
+-- | [Output Only] The username of the account.
+luvUsername :: Lens' LinuxUserView (Maybe Text)
+luvUsername
+  = lens _luvUsername (\ s a -> s{_luvUsername = a})
+
+-- | [Output Only] The path to the login shell for this account.
+luvShell :: Lens' LinuxUserView (Maybe Text)
+luvShell = lens _luvShell (\ s a -> s{_luvShell = a})
+
+-- | [Output Only] User\'s default group ID.
+luvGid :: Lens' LinuxUserView (Maybe Word32)
+luvGid
+  = lens _luvGid (\ s a -> s{_luvGid = a}) .
+      mapping _Coerce
+
+-- | [Output Only] The path to the home directory for this account.
+luvHomeDirectory :: Lens' LinuxUserView (Maybe Text)
+luvHomeDirectory
+  = lens _luvHomeDirectory
+      (\ s a -> s{_luvHomeDirectory = a})
+
+instance FromJSON LinuxUserView where
+        parseJSON
+          = withObject "LinuxUserView"
+              (\ o ->
+                 LinuxUserView <$>
+                   (o .:? "gecos") <*> (o .:? "uid") <*>
+                     (o .:? "username")
+                     <*> (o .:? "shell")
+                     <*> (o .:? "gid")
+                     <*> (o .:? "homeDirectory"))
+
+instance ToJSON LinuxUserView where
+        toJSON LinuxUserView{..}
+          = object
+              (catMaybes
+                 [("gecos" .=) <$> _luvGecos, ("uid" .=) <$> _luvUid,
+                  ("username" .=) <$> _luvUsername,
+                  ("shell" .=) <$> _luvShell, ("gid" .=) <$> _luvGid,
+                  ("homeDirectory" .=) <$> _luvHomeDirectory])
+
+--
+-- /See:/ 'linuxGetLinuxAccountViewsResponse' smart constructor.
+newtype LinuxGetLinuxAccountViewsResponse = LinuxGetLinuxAccountViewsResponse
+    { _lglavrResource :: Maybe LinuxAccountViews
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'LinuxGetLinuxAccountViewsResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'lglavrResource'
+linuxGetLinuxAccountViewsResponse
+    :: LinuxGetLinuxAccountViewsResponse
+linuxGetLinuxAccountViewsResponse =
+    LinuxGetLinuxAccountViewsResponse
+    { _lglavrResource = Nothing
+    }
+
+-- | [Output Only] A list of authorized user accounts and groups.
+lglavrResource :: Lens' LinuxGetLinuxAccountViewsResponse (Maybe LinuxAccountViews)
+lglavrResource
+  = lens _lglavrResource
+      (\ s a -> s{_lglavrResource = a})
+
+instance FromJSON LinuxGetLinuxAccountViewsResponse
+         where
+        parseJSON
+          = withObject "LinuxGetLinuxAccountViewsResponse"
+              (\ o ->
+                 LinuxGetLinuxAccountViewsResponse <$>
+                   (o .:? "resource"))
+
+instance ToJSON LinuxGetLinuxAccountViewsResponse
+         where
+        toJSON LinuxGetLinuxAccountViewsResponse{..}
+          = object
+              (catMaybes [("resource" .=) <$> _lglavrResource])
+
+-- | [Output Only] If errors are generated during processing of the
+-- operation, this field will be populated.
+--
+-- /See:/ 'operationError' smart constructor.
+newtype OperationError = OperationError
+    { _oeErrors :: Maybe [OperationErrorErrorsItem]
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'OperationError' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'oeErrors'
+operationError
+    :: OperationError
+operationError =
+    OperationError
+    { _oeErrors = Nothing
+    }
+
+-- | [Output Only] The array of errors encountered while processing this
+-- operation.
+oeErrors :: Lens' OperationError [OperationErrorErrorsItem]
+oeErrors
+  = lens _oeErrors (\ s a -> s{_oeErrors = a}) .
+      _Default
+      . _Coerce
+
+instance FromJSON OperationError where
+        parseJSON
+          = withObject "OperationError"
+              (\ o ->
+                 OperationError <$> (o .:? "errors" .!= mempty))
+
+instance ToJSON OperationError where
+        toJSON OperationError{..}
+          = object (catMaybes [("errors" .=) <$> _oeErrors])
+
+--
+-- /See:/ 'linuxGetAuthorizedKeysViewResponse' smart constructor.
+newtype LinuxGetAuthorizedKeysViewResponse = LinuxGetAuthorizedKeysViewResponse
+    { _lgakvrResource :: Maybe AuthorizedKeysView
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'LinuxGetAuthorizedKeysViewResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'lgakvrResource'
+linuxGetAuthorizedKeysViewResponse
+    :: LinuxGetAuthorizedKeysViewResponse
+linuxGetAuthorizedKeysViewResponse =
+    LinuxGetAuthorizedKeysViewResponse
+    { _lgakvrResource = Nothing
+    }
+
+-- | [Output Only] A list of authorized public keys for a user.
+lgakvrResource :: Lens' LinuxGetAuthorizedKeysViewResponse (Maybe AuthorizedKeysView)
+lgakvrResource
+  = lens _lgakvrResource
+      (\ s a -> s{_lgakvrResource = a})
+
+instance FromJSON LinuxGetAuthorizedKeysViewResponse
+         where
+        parseJSON
+          = withObject "LinuxGetAuthorizedKeysViewResponse"
+              (\ o ->
+                 LinuxGetAuthorizedKeysViewResponse <$>
+                   (o .:? "resource"))
+
+instance ToJSON LinuxGetAuthorizedKeysViewResponse
+         where
+        toJSON LinuxGetAuthorizedKeysViewResponse{..}
+          = object
+              (catMaybes [("resource" .=) <$> _lgakvrResource])
+
+--
+-- /See:/ 'operationErrorErrorsItem' smart constructor.
+data OperationErrorErrorsItem = OperationErrorErrorsItem
+    { _oeeiLocation :: !(Maybe Text)
+    , _oeeiCode     :: !(Maybe Text)
+    , _oeeiMessage  :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'OperationErrorErrorsItem' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'oeeiLocation'
+--
+-- * 'oeeiCode'
+--
+-- * 'oeeiMessage'
+operationErrorErrorsItem
+    :: OperationErrorErrorsItem
+operationErrorErrorsItem =
+    OperationErrorErrorsItem
+    { _oeeiLocation = Nothing
+    , _oeeiCode = Nothing
+    , _oeeiMessage = Nothing
+    }
+
+-- | [Output Only] Indicates the field in the request which caused the error.
+-- This property is optional.
+oeeiLocation :: Lens' OperationErrorErrorsItem (Maybe Text)
+oeeiLocation
+  = lens _oeeiLocation (\ s a -> s{_oeeiLocation = a})
+
+-- | [Output Only] The error type identifier for this error.
+oeeiCode :: Lens' OperationErrorErrorsItem (Maybe Text)
+oeeiCode = lens _oeeiCode (\ s a -> s{_oeeiCode = a})
+
+-- | [Output Only] An optional, human-readable error message.
+oeeiMessage :: Lens' OperationErrorErrorsItem (Maybe Text)
+oeeiMessage
+  = lens _oeeiMessage (\ s a -> s{_oeeiMessage = a})
+
+instance FromJSON OperationErrorErrorsItem where
+        parseJSON
+          = withObject "OperationErrorErrorsItem"
+              (\ o ->
+                 OperationErrorErrorsItem <$>
+                   (o .:? "location") <*> (o .:? "code") <*>
+                     (o .:? "message"))
+
+instance ToJSON OperationErrorErrorsItem where
+        toJSON OperationErrorErrorsItem{..}
+          = object
+              (catMaybes
+                 [("location" .=) <$> _oeeiLocation,
+                  ("code" .=) <$> _oeeiCode,
+                  ("message" .=) <$> _oeeiMessage])
+
+--
+-- /See:/ 'groupsRemoveMemberRequest' smart constructor.
+newtype GroupsRemoveMemberRequest = GroupsRemoveMemberRequest
+    { _grmrUsers :: Maybe [Text]
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'GroupsRemoveMemberRequest' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'grmrUsers'
+groupsRemoveMemberRequest
+    :: GroupsRemoveMemberRequest
+groupsRemoveMemberRequest =
+    GroupsRemoveMemberRequest
+    { _grmrUsers = Nothing
+    }
+
+-- | Fully-qualified URLs of the User resources to remove.
+grmrUsers :: Lens' GroupsRemoveMemberRequest [Text]
+grmrUsers
+  = lens _grmrUsers (\ s a -> s{_grmrUsers = a}) .
+      _Default
+      . _Coerce
+
+instance FromJSON GroupsRemoveMemberRequest where
+        parseJSON
+          = withObject "GroupsRemoveMemberRequest"
+              (\ o ->
+                 GroupsRemoveMemberRequest <$>
+                   (o .:? "users" .!= mempty))
+
+instance ToJSON GroupsRemoveMemberRequest where
+        toJSON GroupsRemoveMemberRequest{..}
+          = object (catMaybes [("users" .=) <$> _grmrUsers])
+
+-- | A list of authorized public keys for a user account.
+--
+-- /See:/ 'authorizedKeysView' smart constructor.
+data AuthorizedKeysView = AuthorizedKeysView
+    { _akvSudoer :: !(Maybe Bool)
+    , _akvKeys   :: !(Maybe [Text])
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'AuthorizedKeysView' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'akvSudoer'
+--
+-- * 'akvKeys'
+authorizedKeysView
+    :: AuthorizedKeysView
+authorizedKeysView =
+    AuthorizedKeysView
+    { _akvSudoer = Nothing
+    , _akvKeys = Nothing
+    }
+
+-- | [Output Only] Whether the user has the ability to elevate on the
+-- instance that requested the authorized keys.
+akvSudoer :: Lens' AuthorizedKeysView (Maybe Bool)
+akvSudoer
+  = lens _akvSudoer (\ s a -> s{_akvSudoer = a})
+
+-- | [Output Only] The list of authorized public keys in SSH format.
+akvKeys :: Lens' AuthorizedKeysView [Text]
+akvKeys
+  = lens _akvKeys (\ s a -> s{_akvKeys = a}) . _Default
+      . _Coerce
+
+instance FromJSON AuthorizedKeysView where
+        parseJSON
+          = withObject "AuthorizedKeysView"
+              (\ o ->
+                 AuthorizedKeysView <$>
+                   (o .:? "sudoer") <*> (o .:? "keys" .!= mempty))
+
+instance ToJSON AuthorizedKeysView where
+        toJSON AuthorizedKeysView{..}
+          = object
+              (catMaybes
+                 [("sudoer" .=) <$> _akvSudoer,
+                  ("keys" .=) <$> _akvKeys])
+
+--
+-- /See:/ 'operationWarningsItem' smart constructor.
+data OperationWarningsItem = OperationWarningsItem
+    { _owiData    :: !(Maybe [OperationWarningsItemDataItem])
+    , _owiCode    :: !(Maybe OperationWarningsItemCode)
+    , _owiMessage :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'OperationWarningsItem' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'owiData'
+--
+-- * 'owiCode'
+--
+-- * 'owiMessage'
+operationWarningsItem
+    :: OperationWarningsItem
+operationWarningsItem =
+    OperationWarningsItem
+    { _owiData = Nothing
+    , _owiCode = Nothing
+    , _owiMessage = Nothing
+    }
+
+-- | [Output Only] Metadata for this warning in key: value format.
+owiData :: Lens' OperationWarningsItem [OperationWarningsItemDataItem]
+owiData
+  = lens _owiData (\ s a -> s{_owiData = a}) . _Default
+      . _Coerce
+
+-- | [Output Only] The warning type identifier for this warning.
+owiCode :: Lens' OperationWarningsItem (Maybe OperationWarningsItemCode)
+owiCode = lens _owiCode (\ s a -> s{_owiCode = a})
+
+-- | [Output Only] Optional human-readable details for this warning.
+owiMessage :: Lens' OperationWarningsItem (Maybe Text)
+owiMessage
+  = lens _owiMessage (\ s a -> s{_owiMessage = a})
+
+instance FromJSON OperationWarningsItem where
+        parseJSON
+          = withObject "OperationWarningsItem"
+              (\ o ->
+                 OperationWarningsItem <$>
+                   (o .:? "data" .!= mempty) <*> (o .:? "code") <*>
+                     (o .:? "message"))
+
+instance ToJSON OperationWarningsItem where
+        toJSON OperationWarningsItem{..}
+          = object
+              (catMaybes
+                 [("data" .=) <$> _owiData, ("code" .=) <$> _owiCode,
+                  ("message" .=) <$> _owiMessage])
diff --git a/gen/Network/Google/UserAccounts/Types/Sum.hs b/gen/Network/Google/UserAccounts/Types/Sum.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/UserAccounts/Types/Sum.hs
@@ -0,0 +1,126 @@
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE LambdaCase         #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- |
+-- Module      : Network.Google.UserAccounts.Types.Sum
+-- Copyright   : (c) 2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+module Network.Google.UserAccounts.Types.Sum where
+
+import           Network.Google.Prelude
+
+-- | [Output Only] The warning type identifier for this warning.
+data OperationWarningsItemCode
+    = DeprecatedResourceUsed
+      -- ^ @DEPRECATED_RESOURCE_USED@
+    | DiskSizeLargerThanImageSize
+      -- ^ @DISK_SIZE_LARGER_THAN_IMAGE_SIZE@
+    | InjectedKernelsDeprecated
+      -- ^ @INJECTED_KERNELS_DEPRECATED@
+    | NextHopAddressNotAssigned
+      -- ^ @NEXT_HOP_ADDRESS_NOT_ASSIGNED@
+    | NextHopCannotIPForward
+      -- ^ @NEXT_HOP_CANNOT_IP_FORWARD@
+    | NextHopInstanceNotFound
+      -- ^ @NEXT_HOP_INSTANCE_NOT_FOUND@
+    | NextHopInstanceNotOnNetwork
+      -- ^ @NEXT_HOP_INSTANCE_NOT_ON_NETWORK@
+    | NextHopNotRunning
+      -- ^ @NEXT_HOP_NOT_RUNNING@
+    | NotCriticalError
+      -- ^ @NOT_CRITICAL_ERROR@
+    | NoResultsOnPage
+      -- ^ @NO_RESULTS_ON_PAGE@
+    | RequiredTosAgreement
+      -- ^ @REQUIRED_TOS_AGREEMENT@
+    | ResourceNotDeleted
+      -- ^ @RESOURCE_NOT_DELETED@
+    | SingleInstancePropertyTemplate
+      -- ^ @SINGLE_INSTANCE_PROPERTY_TEMPLATE@
+    | Unreachable
+      -- ^ @UNREACHABLE@
+      deriving (Eq,Ord,Enum,Read,Show,Data,Typeable,Generic)
+
+instance Hashable OperationWarningsItemCode
+
+instance FromText OperationWarningsItemCode where
+    fromText = \case
+        "DEPRECATED_RESOURCE_USED" -> Just DeprecatedResourceUsed
+        "DISK_SIZE_LARGER_THAN_IMAGE_SIZE" -> Just DiskSizeLargerThanImageSize
+        "INJECTED_KERNELS_DEPRECATED" -> Just InjectedKernelsDeprecated
+        "NEXT_HOP_ADDRESS_NOT_ASSIGNED" -> Just NextHopAddressNotAssigned
+        "NEXT_HOP_CANNOT_IP_FORWARD" -> Just NextHopCannotIPForward
+        "NEXT_HOP_INSTANCE_NOT_FOUND" -> Just NextHopInstanceNotFound
+        "NEXT_HOP_INSTANCE_NOT_ON_NETWORK" -> Just NextHopInstanceNotOnNetwork
+        "NEXT_HOP_NOT_RUNNING" -> Just NextHopNotRunning
+        "NOT_CRITICAL_ERROR" -> Just NotCriticalError
+        "NO_RESULTS_ON_PAGE" -> Just NoResultsOnPage
+        "REQUIRED_TOS_AGREEMENT" -> Just RequiredTosAgreement
+        "RESOURCE_NOT_DELETED" -> Just ResourceNotDeleted
+        "SINGLE_INSTANCE_PROPERTY_TEMPLATE" -> Just SingleInstancePropertyTemplate
+        "UNREACHABLE" -> Just Unreachable
+        _ -> Nothing
+
+instance ToText OperationWarningsItemCode where
+    toText = \case
+        DeprecatedResourceUsed -> "DEPRECATED_RESOURCE_USED"
+        DiskSizeLargerThanImageSize -> "DISK_SIZE_LARGER_THAN_IMAGE_SIZE"
+        InjectedKernelsDeprecated -> "INJECTED_KERNELS_DEPRECATED"
+        NextHopAddressNotAssigned -> "NEXT_HOP_ADDRESS_NOT_ASSIGNED"
+        NextHopCannotIPForward -> "NEXT_HOP_CANNOT_IP_FORWARD"
+        NextHopInstanceNotFound -> "NEXT_HOP_INSTANCE_NOT_FOUND"
+        NextHopInstanceNotOnNetwork -> "NEXT_HOP_INSTANCE_NOT_ON_NETWORK"
+        NextHopNotRunning -> "NEXT_HOP_NOT_RUNNING"
+        NotCriticalError -> "NOT_CRITICAL_ERROR"
+        NoResultsOnPage -> "NO_RESULTS_ON_PAGE"
+        RequiredTosAgreement -> "REQUIRED_TOS_AGREEMENT"
+        ResourceNotDeleted -> "RESOURCE_NOT_DELETED"
+        SingleInstancePropertyTemplate -> "SINGLE_INSTANCE_PROPERTY_TEMPLATE"
+        Unreachable -> "UNREACHABLE"
+
+instance FromJSON OperationWarningsItemCode where
+    parseJSON = parseJSONText "OperationWarningsItemCode"
+
+instance ToJSON OperationWarningsItemCode where
+    toJSON = toJSONText
+
+-- | [Output Only] Status of the operation. Can be one of the following:
+-- PENDING, RUNNING, or DONE.
+data OperationStatus
+    = Done
+      -- ^ @DONE@
+    | Pending
+      -- ^ @PENDING@
+    | Running
+      -- ^ @RUNNING@
+      deriving (Eq,Ord,Enum,Read,Show,Data,Typeable,Generic)
+
+instance Hashable OperationStatus
+
+instance FromText OperationStatus where
+    fromText = \case
+        "DONE" -> Just Done
+        "PENDING" -> Just Pending
+        "RUNNING" -> Just Running
+        _ -> Nothing
+
+instance ToText OperationStatus where
+    toText = \case
+        Done -> "DONE"
+        Pending -> "PENDING"
+        Running -> "RUNNING"
+
+instance FromJSON OperationStatus where
+    parseJSON = parseJSONText "OperationStatus"
+
+instance ToJSON OperationStatus where
+    toJSON = toJSONText
diff --git a/gogol-useraccounts.cabal b/gogol-useraccounts.cabal
new file mode 100644
--- /dev/null
+++ b/gogol-useraccounts.cabal
@@ -0,0 +1,62 @@
+name:                  gogol-useraccounts
+version:               0.0.1
+synopsis:              Google Cloud User Accounts SDK.
+homepage:              https://github.com/brendanhay/gogol
+bug-reports:           https://github.com/brendanhay/gogol/issues
+license:               OtherLicense
+license-file:          LICENSE
+author:                Brendan Hay
+maintainer:            Brendan Hay <brendan.g.hay@gmail.com>
+copyright:             Copyright (c) 2015 Brendan Hay
+category:              Network, Google, Cloud
+build-type:            Simple
+cabal-version:         >= 1.10
+extra-source-files:    README.md
+
+description:
+    API for the Google Cloud User Accounts service.
+    .
+    /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 @beta@
+    of the API.
+
+source-repository head
+    type:     git
+    location: git://github.com/brendanhay/gogol.git
+
+library
+    default-language:  Haskell2010
+    hs-source-dirs:    src gen
+
+    ghc-options:       -Wall
+
+    exposed-modules:
+          Network.Google.Resource.CloudUserAccounts.GlobalAccountsOperations.Delete
+        , Network.Google.Resource.CloudUserAccounts.GlobalAccountsOperations.Get
+        , Network.Google.Resource.CloudUserAccounts.GlobalAccountsOperations.List
+        , Network.Google.Resource.CloudUserAccounts.Groups.AddMember
+        , Network.Google.Resource.CloudUserAccounts.Groups.Delete
+        , Network.Google.Resource.CloudUserAccounts.Groups.Get
+        , Network.Google.Resource.CloudUserAccounts.Groups.Insert
+        , Network.Google.Resource.CloudUserAccounts.Groups.List
+        , Network.Google.Resource.CloudUserAccounts.Groups.RemoveMember
+        , Network.Google.Resource.CloudUserAccounts.Linux.GetAuthorizedKeysView
+        , Network.Google.Resource.CloudUserAccounts.Linux.GetLinuxAccountViews
+        , Network.Google.Resource.CloudUserAccounts.Users.AddPublicKey
+        , Network.Google.Resource.CloudUserAccounts.Users.Delete
+        , Network.Google.Resource.CloudUserAccounts.Users.Get
+        , Network.Google.Resource.CloudUserAccounts.Users.Insert
+        , Network.Google.Resource.CloudUserAccounts.Users.List
+        , Network.Google.Resource.CloudUserAccounts.Users.RemovePublicKey
+        , Network.Google.UserAccounts
+        , Network.Google.UserAccounts.Types
+
+    other-modules:
+          Network.Google.UserAccounts.Types.Product
+        , Network.Google.UserAccounts.Types.Sum
+
+    build-depends:
+          gogol-core == 0.0.1.*
+        , base       >= 4.7 && < 5
