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-accessapproval
+
+* [Version](#version)
+* [Description](#description)
+* [Contribute](#contribute)
+* [Licence](#licence)
+
+
+## Version
+
+`0.5.0`
+
+
+## Description
+
+A client library for the Google Access Approval.
+
+
+## Contribute
+
+For any problems, comments, or feedback please create an issue [here on GitHub](https://github.com/brendanhay/gogol/issues).
+
+> _Note:_ this library is an auto-generated Haskell package. Please see `gogol-gen` for more information.
+
+
+## Licence
+
+`gogol-accessapproval` 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/AccessApproval.hs b/gen/Network/Google/AccessApproval.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/AccessApproval.hs
@@ -0,0 +1,196 @@
+{-# LANGUAGE DataKinds         #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# LANGUAGE TypeOperators     #-}
+
+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+
+-- |
+-- Module      : Network.Google.AccessApproval
+-- Copyright   : (c) 2015-2016 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- An API for controlling access to data by Google personnel.
+--
+-- /See:/ <https://cloud.google.com/access-approval/docs Access Approval API Reference>
+module Network.Google.AccessApproval
+    (
+    -- * Service Configuration
+      accessApprovalService
+
+    -- * OAuth Scopes
+    , cloudPlatformScope
+
+    -- * API Declaration
+    , AccessApprovalAPI
+
+    -- * Resources
+
+    -- ** accessapproval.folders.approvalRequests.approve
+    , module Network.Google.Resource.AccessApproval.Folders.ApprovalRequests.Approve
+
+    -- ** accessapproval.folders.approvalRequests.dismiss
+    , module Network.Google.Resource.AccessApproval.Folders.ApprovalRequests.Dismiss
+
+    -- ** accessapproval.folders.approvalRequests.get
+    , module Network.Google.Resource.AccessApproval.Folders.ApprovalRequests.Get
+
+    -- ** accessapproval.folders.approvalRequests.list
+    , module Network.Google.Resource.AccessApproval.Folders.ApprovalRequests.List
+
+    -- ** accessapproval.folders.getAccessApprovalSettings
+    , module Network.Google.Resource.AccessApproval.Folders.GetAccessApprovalSettings
+
+    -- ** accessapproval.folders.updateAccessApprovalSettings
+    , module Network.Google.Resource.AccessApproval.Folders.UpdateAccessApprovalSettings
+
+    -- ** accessapproval.organizations.approvalRequests.approve
+    , module Network.Google.Resource.AccessApproval.Organizations.ApprovalRequests.Approve
+
+    -- ** accessapproval.organizations.approvalRequests.dismiss
+    , module Network.Google.Resource.AccessApproval.Organizations.ApprovalRequests.Dismiss
+
+    -- ** accessapproval.organizations.approvalRequests.get
+    , module Network.Google.Resource.AccessApproval.Organizations.ApprovalRequests.Get
+
+    -- ** accessapproval.organizations.approvalRequests.list
+    , module Network.Google.Resource.AccessApproval.Organizations.ApprovalRequests.List
+
+    -- ** accessapproval.organizations.getAccessApprovalSettings
+    , module Network.Google.Resource.AccessApproval.Organizations.GetAccessApprovalSettings
+
+    -- ** accessapproval.organizations.updateAccessApprovalSettings
+    , module Network.Google.Resource.AccessApproval.Organizations.UpdateAccessApprovalSettings
+
+    -- ** accessapproval.projects.approvalRequests.approve
+    , module Network.Google.Resource.AccessApproval.Projects.ApprovalRequests.Approve
+
+    -- ** accessapproval.projects.approvalRequests.dismiss
+    , module Network.Google.Resource.AccessApproval.Projects.ApprovalRequests.Dismiss
+
+    -- ** accessapproval.projects.approvalRequests.get
+    , module Network.Google.Resource.AccessApproval.Projects.ApprovalRequests.Get
+
+    -- ** accessapproval.projects.approvalRequests.list
+    , module Network.Google.Resource.AccessApproval.Projects.ApprovalRequests.List
+
+    -- ** accessapproval.projects.getAccessApprovalSettings
+    , module Network.Google.Resource.AccessApproval.Projects.GetAccessApprovalSettings
+
+    -- ** accessapproval.projects.updateAccessApprovalSettings
+    , module Network.Google.Resource.AccessApproval.Projects.UpdateAccessApprovalSettings
+
+    -- * Types
+
+    -- ** ListApprovalRequestsResponse
+    , ListApprovalRequestsResponse
+    , listApprovalRequestsResponse
+    , larrNextPageToken
+    , larrApprovalRequests
+
+    -- ** ApproveDecision
+    , ApproveDecision
+    , approveDecision
+    , adApproveTime
+    , adExpireTime
+
+    -- ** AccessLocations
+    , AccessLocations
+    , accessLocations
+    , alPrincipalOfficeCountry
+    , alPrincipalPhysicalLocationCountry
+
+    -- ** DismissDecision
+    , DismissDecision
+    , dismissDecision
+    , ddDismissTime
+
+    -- ** AccessReasonType
+    , AccessReasonType (..)
+
+    -- ** AccessApprovalSettings
+    , AccessApprovalSettings
+    , accessApprovalSettings
+    , aasName
+    , aasNotificationEmails
+
+    -- ** ApprovalRequest
+    , ApprovalRequest
+    , approvalRequest
+    , arRequestedResourceName
+    , arRequestedExpiration
+    , arRequestTime
+    , arRequestedReason
+    , arName
+    , arApprove
+    , arDismiss
+    , arRequestedLocations
+
+    -- ** DismissApprovalRequestMessage
+    , DismissApprovalRequestMessage
+    , dismissApprovalRequestMessage
+
+    -- ** Xgafv
+    , Xgafv (..)
+
+    -- ** ApproveApprovalRequestMessage
+    , ApproveApprovalRequestMessage
+    , approveApprovalRequestMessage
+    , aarmExpireTime
+
+    -- ** AccessReason
+    , AccessReason
+    , accessReason
+    , arType
+    , arDetail
+    ) where
+
+import           Network.Google.AccessApproval.Types
+import           Network.Google.Prelude
+import           Network.Google.Resource.AccessApproval.Folders.ApprovalRequests.Approve
+import           Network.Google.Resource.AccessApproval.Folders.ApprovalRequests.Dismiss
+import           Network.Google.Resource.AccessApproval.Folders.ApprovalRequests.Get
+import           Network.Google.Resource.AccessApproval.Folders.ApprovalRequests.List
+import           Network.Google.Resource.AccessApproval.Folders.GetAccessApprovalSettings
+import           Network.Google.Resource.AccessApproval.Folders.UpdateAccessApprovalSettings
+import           Network.Google.Resource.AccessApproval.Organizations.ApprovalRequests.Approve
+import           Network.Google.Resource.AccessApproval.Organizations.ApprovalRequests.Dismiss
+import           Network.Google.Resource.AccessApproval.Organizations.ApprovalRequests.Get
+import           Network.Google.Resource.AccessApproval.Organizations.ApprovalRequests.List
+import           Network.Google.Resource.AccessApproval.Organizations.GetAccessApprovalSettings
+import           Network.Google.Resource.AccessApproval.Organizations.UpdateAccessApprovalSettings
+import           Network.Google.Resource.AccessApproval.Projects.ApprovalRequests.Approve
+import           Network.Google.Resource.AccessApproval.Projects.ApprovalRequests.Dismiss
+import           Network.Google.Resource.AccessApproval.Projects.ApprovalRequests.Get
+import           Network.Google.Resource.AccessApproval.Projects.ApprovalRequests.List
+import           Network.Google.Resource.AccessApproval.Projects.GetAccessApprovalSettings
+import           Network.Google.Resource.AccessApproval.Projects.UpdateAccessApprovalSettings
+
+{- $resources
+TODO
+-}
+
+-- | Represents the entirety of the methods and resources available for the Access Approval API service.
+type AccessApprovalAPI =
+     FoldersApprovalRequestsListResource :<|>
+       FoldersApprovalRequestsGetResource
+       :<|> FoldersApprovalRequestsApproveResource
+       :<|> FoldersApprovalRequestsDismissResource
+       :<|> FoldersUpdateAccessApprovalSettingsResource
+       :<|> FoldersGetAccessApprovalSettingsResource
+       :<|> OrganizationsApprovalRequestsListResource
+       :<|> OrganizationsApprovalRequestsGetResource
+       :<|> OrganizationsApprovalRequestsApproveResource
+       :<|> OrganizationsApprovalRequestsDismissResource
+       :<|>
+       OrganizationsUpdateAccessApprovalSettingsResource
+       :<|> OrganizationsGetAccessApprovalSettingsResource
+       :<|> ProjectsApprovalRequestsListResource
+       :<|> ProjectsApprovalRequestsGetResource
+       :<|> ProjectsApprovalRequestsApproveResource
+       :<|> ProjectsApprovalRequestsDismissResource
+       :<|> ProjectsUpdateAccessApprovalSettingsResource
+       :<|> ProjectsGetAccessApprovalSettingsResource
diff --git a/gen/Network/Google/AccessApproval/Types.hs b/gen/Network/Google/AccessApproval/Types.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/AccessApproval/Types.hs
@@ -0,0 +1,100 @@
+{-# LANGUAGE DataKinds          #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- |
+-- Module      : Network.Google.AccessApproval.Types
+-- Copyright   : (c) 2015-2016 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+module Network.Google.AccessApproval.Types
+    (
+    -- * Service Configuration
+      accessApprovalService
+
+    -- * OAuth Scopes
+    , cloudPlatformScope
+
+    -- * ListApprovalRequestsResponse
+    , ListApprovalRequestsResponse
+    , listApprovalRequestsResponse
+    , larrNextPageToken
+    , larrApprovalRequests
+
+    -- * ApproveDecision
+    , ApproveDecision
+    , approveDecision
+    , adApproveTime
+    , adExpireTime
+
+    -- * AccessLocations
+    , AccessLocations
+    , accessLocations
+    , alPrincipalOfficeCountry
+    , alPrincipalPhysicalLocationCountry
+
+    -- * DismissDecision
+    , DismissDecision
+    , dismissDecision
+    , ddDismissTime
+
+    -- * AccessReasonType
+    , AccessReasonType (..)
+
+    -- * AccessApprovalSettings
+    , AccessApprovalSettings
+    , accessApprovalSettings
+    , aasName
+    , aasNotificationEmails
+
+    -- * ApprovalRequest
+    , ApprovalRequest
+    , approvalRequest
+    , arRequestedResourceName
+    , arRequestedExpiration
+    , arRequestTime
+    , arRequestedReason
+    , arName
+    , arApprove
+    , arDismiss
+    , arRequestedLocations
+
+    -- * DismissApprovalRequestMessage
+    , DismissApprovalRequestMessage
+    , dismissApprovalRequestMessage
+
+    -- * Xgafv
+    , Xgafv (..)
+
+    -- * ApproveApprovalRequestMessage
+    , ApproveApprovalRequestMessage
+    , approveApprovalRequestMessage
+    , aarmExpireTime
+
+    -- * AccessReason
+    , AccessReason
+    , accessReason
+    , arType
+    , arDetail
+    ) where
+
+import           Network.Google.AccessApproval.Types.Product
+import           Network.Google.AccessApproval.Types.Sum
+import           Network.Google.Prelude
+
+-- | Default request referring to version 'v1beta1' of the Access Approval API. This contains the host and root path used as a starting point for constructing service requests.
+accessApprovalService :: ServiceConfig
+accessApprovalService
+  = defaultService (ServiceId "accessapproval:v1beta1")
+      "accessapproval.googleapis.com"
+
+-- | View and manage your data across Google Cloud Platform services
+cloudPlatformScope :: Proxy '["https://www.googleapis.com/auth/cloud-platform"]
+cloudPlatformScope = Proxy
diff --git a/gen/Network/Google/AccessApproval/Types/Product.hs b/gen/Network/Google/AccessApproval/Types/Product.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/AccessApproval/Types/Product.hs
@@ -0,0 +1,546 @@
+{-# 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.AccessApproval.Types.Product
+-- Copyright   : (c) 2015-2016 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+module Network.Google.AccessApproval.Types.Product where
+
+import           Network.Google.AccessApproval.Types.Sum
+import           Network.Google.Prelude
+
+-- | Response to listing of ApprovalRequest objects.
+--
+-- /See:/ 'listApprovalRequestsResponse' smart constructor.
+data ListApprovalRequestsResponse =
+  ListApprovalRequestsResponse'
+    { _larrNextPageToken    :: !(Maybe Text)
+    , _larrApprovalRequests :: !(Maybe [ApprovalRequest])
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'ListApprovalRequestsResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'larrNextPageToken'
+--
+-- * 'larrApprovalRequests'
+listApprovalRequestsResponse
+    :: ListApprovalRequestsResponse
+listApprovalRequestsResponse =
+  ListApprovalRequestsResponse'
+    {_larrNextPageToken = Nothing, _larrApprovalRequests = Nothing}
+
+
+-- | Token to retrieve the next page of results, or empty if there are no
+-- more.
+larrNextPageToken :: Lens' ListApprovalRequestsResponse (Maybe Text)
+larrNextPageToken
+  = lens _larrNextPageToken
+      (\ s a -> s{_larrNextPageToken = a})
+
+-- | Approval request details.
+larrApprovalRequests :: Lens' ListApprovalRequestsResponse [ApprovalRequest]
+larrApprovalRequests
+  = lens _larrApprovalRequests
+      (\ s a -> s{_larrApprovalRequests = a})
+      . _Default
+      . _Coerce
+
+instance FromJSON ListApprovalRequestsResponse where
+        parseJSON
+          = withObject "ListApprovalRequestsResponse"
+              (\ o ->
+                 ListApprovalRequestsResponse' <$>
+                   (o .:? "nextPageToken") <*>
+                     (o .:? "approvalRequests" .!= mempty))
+
+instance ToJSON ListApprovalRequestsResponse where
+        toJSON ListApprovalRequestsResponse'{..}
+          = object
+              (catMaybes
+                 [("nextPageToken" .=) <$> _larrNextPageToken,
+                  ("approvalRequests" .=) <$> _larrApprovalRequests])
+
+-- | A decision that has been made to approve access to a resource.
+--
+-- /See:/ 'approveDecision' smart constructor.
+data ApproveDecision =
+  ApproveDecision'
+    { _adApproveTime :: !(Maybe DateTime')
+    , _adExpireTime  :: !(Maybe DateTime')
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'ApproveDecision' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'adApproveTime'
+--
+-- * 'adExpireTime'
+approveDecision
+    :: ApproveDecision
+approveDecision =
+  ApproveDecision' {_adApproveTime = Nothing, _adExpireTime = Nothing}
+
+
+-- | The time at which approval was granted.
+adApproveTime :: Lens' ApproveDecision (Maybe UTCTime)
+adApproveTime
+  = lens _adApproveTime
+      (\ s a -> s{_adApproveTime = a})
+      . mapping _DateTime
+
+-- | The time at which the approval expires.
+adExpireTime :: Lens' ApproveDecision (Maybe UTCTime)
+adExpireTime
+  = lens _adExpireTime (\ s a -> s{_adExpireTime = a})
+      . mapping _DateTime
+
+instance FromJSON ApproveDecision where
+        parseJSON
+          = withObject "ApproveDecision"
+              (\ o ->
+                 ApproveDecision' <$>
+                   (o .:? "approveTime") <*> (o .:? "expireTime"))
+
+instance ToJSON ApproveDecision where
+        toJSON ApproveDecision'{..}
+          = object
+              (catMaybes
+                 [("approveTime" .=) <$> _adApproveTime,
+                  ("expireTime" .=) <$> _adExpireTime])
+
+-- | Home office and physical location of the principal.
+--
+-- /See:/ 'accessLocations' smart constructor.
+data AccessLocations =
+  AccessLocations'
+    { _alPrincipalOfficeCountry           :: !(Maybe Text)
+    , _alPrincipalPhysicalLocationCountry :: !(Maybe Text)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'AccessLocations' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'alPrincipalOfficeCountry'
+--
+-- * 'alPrincipalPhysicalLocationCountry'
+accessLocations
+    :: AccessLocations
+accessLocations =
+  AccessLocations'
+    { _alPrincipalOfficeCountry = Nothing
+    , _alPrincipalPhysicalLocationCountry = Nothing
+    }
+
+
+-- | The \"home office\" location of the principal. A two-letter country code
+-- (ISO 3166-1 alpha-2), such as \"US\", \"DE\" or \"GB\" or a region code.
+-- In some limited situations Google systems may refer refer to a region
+-- code instead of a country code. Possible Region Codes:
+--
+-- 1.  ASI: Asia
+-- 2.  EUR: Europe
+-- 3.  OCE: Oceania
+-- 4.  AFR: Africa
+-- 5.  NAM: North America
+-- 6.  SAM: South America
+-- 7.  ANT: Antarctica
+-- 8.  ANY: Any location
+alPrincipalOfficeCountry :: Lens' AccessLocations (Maybe Text)
+alPrincipalOfficeCountry
+  = lens _alPrincipalOfficeCountry
+      (\ s a -> s{_alPrincipalOfficeCountry = a})
+
+-- | Physical location of the principal at the time of the access. A
+-- two-letter country code (ISO 3166-1 alpha-2), such as \"US\", \"DE\" or
+-- \"GB\" or a region code. In some limited situations Google systems may
+-- refer refer to a region code instead of a country code. Possible Region
+-- Codes:
+--
+-- 1.  ASI: Asia
+-- 2.  EUR: Europe
+-- 3.  OCE: Oceania
+-- 4.  AFR: Africa
+-- 5.  NAM: North America
+-- 6.  SAM: South America
+-- 7.  ANT: Antarctica
+-- 8.  ANY: Any location
+alPrincipalPhysicalLocationCountry :: Lens' AccessLocations (Maybe Text)
+alPrincipalPhysicalLocationCountry
+  = lens _alPrincipalPhysicalLocationCountry
+      (\ s a -> s{_alPrincipalPhysicalLocationCountry = a})
+
+instance FromJSON AccessLocations where
+        parseJSON
+          = withObject "AccessLocations"
+              (\ o ->
+                 AccessLocations' <$>
+                   (o .:? "principalOfficeCountry") <*>
+                     (o .:? "principalPhysicalLocationCountry"))
+
+instance ToJSON AccessLocations where
+        toJSON AccessLocations'{..}
+          = object
+              (catMaybes
+                 [("principalOfficeCountry" .=) <$>
+                    _alPrincipalOfficeCountry,
+                  ("principalPhysicalLocationCountry" .=) <$>
+                    _alPrincipalPhysicalLocationCountry])
+
+-- | A decision that has been made to dismiss an approval request.
+--
+-- /See:/ 'dismissDecision' smart constructor.
+newtype DismissDecision =
+  DismissDecision'
+    { _ddDismissTime :: Maybe DateTime'
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'DismissDecision' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'ddDismissTime'
+dismissDecision
+    :: DismissDecision
+dismissDecision = DismissDecision' {_ddDismissTime = Nothing}
+
+
+-- | The time at which the approval request was dismissed.
+ddDismissTime :: Lens' DismissDecision (Maybe UTCTime)
+ddDismissTime
+  = lens _ddDismissTime
+      (\ s a -> s{_ddDismissTime = a})
+      . mapping _DateTime
+
+instance FromJSON DismissDecision where
+        parseJSON
+          = withObject "DismissDecision"
+              (\ o -> DismissDecision' <$> (o .:? "dismissTime"))
+
+instance ToJSON DismissDecision where
+        toJSON DismissDecision'{..}
+          = object
+              (catMaybes [("dismissTime" .=) <$> _ddDismissTime])
+
+-- | Settings on a Project\/Folder\/Organization related to Access Approval.
+--
+-- /See:/ 'accessApprovalSettings' smart constructor.
+data AccessApprovalSettings =
+  AccessApprovalSettings'
+    { _aasName               :: !(Maybe Text)
+    , _aasNotificationEmails :: !(Maybe [Text])
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'AccessApprovalSettings' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'aasName'
+--
+-- * 'aasNotificationEmails'
+accessApprovalSettings
+    :: AccessApprovalSettings
+accessApprovalSettings =
+  AccessApprovalSettings' {_aasName = Nothing, _aasNotificationEmails = Nothing}
+
+
+-- | The resource name of the settings. Format is one of:
+-- \"projects\/{project_id}\/accessApprovalSettings\"
+-- \"folders\/{folder_id}\/accessApprovalSettings\"
+-- \"organizations\/{organization_id}\/accessApprovalSettings\"
+aasName :: Lens' AccessApprovalSettings (Maybe Text)
+aasName = lens _aasName (\ s a -> s{_aasName = a})
+
+-- | A list of email addresses to which notifications relating to approval
+-- requests should be sent. Notifications relating to a resource will be
+-- sent to all emails in the settings of ancestor resources of that
+-- resource.
+aasNotificationEmails :: Lens' AccessApprovalSettings [Text]
+aasNotificationEmails
+  = lens _aasNotificationEmails
+      (\ s a -> s{_aasNotificationEmails = a})
+      . _Default
+      . _Coerce
+
+instance FromJSON AccessApprovalSettings where
+        parseJSON
+          = withObject "AccessApprovalSettings"
+              (\ o ->
+                 AccessApprovalSettings' <$>
+                   (o .:? "name") <*>
+                     (o .:? "notificationEmails" .!= mempty))
+
+instance ToJSON AccessApprovalSettings where
+        toJSON AccessApprovalSettings'{..}
+          = object
+              (catMaybes
+                 [("name" .=) <$> _aasName,
+                  ("notificationEmails" .=) <$>
+                    _aasNotificationEmails])
+
+-- | A request for the customer to approve access to a resource.
+--
+-- /See:/ 'approvalRequest' smart constructor.
+data ApprovalRequest =
+  ApprovalRequest'
+    { _arRequestedResourceName :: !(Maybe Text)
+    , _arRequestedExpiration   :: !(Maybe DateTime')
+    , _arRequestTime           :: !(Maybe DateTime')
+    , _arRequestedReason       :: !(Maybe AccessReason)
+    , _arName                  :: !(Maybe Text)
+    , _arApprove               :: !(Maybe ApproveDecision)
+    , _arDismiss               :: !(Maybe DismissDecision)
+    , _arRequestedLocations    :: !(Maybe AccessLocations)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'ApprovalRequest' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'arRequestedResourceName'
+--
+-- * 'arRequestedExpiration'
+--
+-- * 'arRequestTime'
+--
+-- * 'arRequestedReason'
+--
+-- * 'arName'
+--
+-- * 'arApprove'
+--
+-- * 'arDismiss'
+--
+-- * 'arRequestedLocations'
+approvalRequest
+    :: ApprovalRequest
+approvalRequest =
+  ApprovalRequest'
+    { _arRequestedResourceName = Nothing
+    , _arRequestedExpiration = Nothing
+    , _arRequestTime = Nothing
+    , _arRequestedReason = Nothing
+    , _arName = Nothing
+    , _arApprove = Nothing
+    , _arDismiss = Nothing
+    , _arRequestedLocations = Nothing
+    }
+
+
+-- | The resource for which approval is being requested. The format of the
+-- resource name is defined at
+-- https:\/\/cloud.google.com\/apis\/design\/resource_names. The resource
+-- name here may either be a \"full\" resource name (e.g.
+-- \"\/\/library.googleapis.com\/shelves\/shelf1\/books\/book2\") or a
+-- \"relative\" resource name (e.g. \"shelves\/shelf1\/books\/book2\") as
+-- described in the resource name specification.
+arRequestedResourceName :: Lens' ApprovalRequest (Maybe Text)
+arRequestedResourceName
+  = lens _arRequestedResourceName
+      (\ s a -> s{_arRequestedResourceName = a})
+
+-- | The requested expiration for the approval. If the request is approved,
+-- access will be granted from the time of approval until the expiration
+-- time.
+arRequestedExpiration :: Lens' ApprovalRequest (Maybe UTCTime)
+arRequestedExpiration
+  = lens _arRequestedExpiration
+      (\ s a -> s{_arRequestedExpiration = a})
+      . mapping _DateTime
+
+-- | The time at which approval was requested.
+arRequestTime :: Lens' ApprovalRequest (Maybe UTCTime)
+arRequestTime
+  = lens _arRequestTime
+      (\ s a -> s{_arRequestTime = a})
+      . mapping _DateTime
+
+-- | The justification for which approval is being requested.
+arRequestedReason :: Lens' ApprovalRequest (Maybe AccessReason)
+arRequestedReason
+  = lens _arRequestedReason
+      (\ s a -> s{_arRequestedReason = a})
+
+-- | The resource name of the request. Format is
+-- \"{projects|folders|organizations}\/{id}\/approvalRequests\/{approval_request_id}\".
+arName :: Lens' ApprovalRequest (Maybe Text)
+arName = lens _arName (\ s a -> s{_arName = a})
+
+-- | Access was approved.
+arApprove :: Lens' ApprovalRequest (Maybe ApproveDecision)
+arApprove
+  = lens _arApprove (\ s a -> s{_arApprove = a})
+
+-- | The request was dismissed.
+arDismiss :: Lens' ApprovalRequest (Maybe DismissDecision)
+arDismiss
+  = lens _arDismiss (\ s a -> s{_arDismiss = a})
+
+-- | The locations for which approval is being requested.
+arRequestedLocations :: Lens' ApprovalRequest (Maybe AccessLocations)
+arRequestedLocations
+  = lens _arRequestedLocations
+      (\ s a -> s{_arRequestedLocations = a})
+
+instance FromJSON ApprovalRequest where
+        parseJSON
+          = withObject "ApprovalRequest"
+              (\ o ->
+                 ApprovalRequest' <$>
+                   (o .:? "requestedResourceName") <*>
+                     (o .:? "requestedExpiration")
+                     <*> (o .:? "requestTime")
+                     <*> (o .:? "requestedReason")
+                     <*> (o .:? "name")
+                     <*> (o .:? "approve")
+                     <*> (o .:? "dismiss")
+                     <*> (o .:? "requestedLocations"))
+
+instance ToJSON ApprovalRequest where
+        toJSON ApprovalRequest'{..}
+          = object
+              (catMaybes
+                 [("requestedResourceName" .=) <$>
+                    _arRequestedResourceName,
+                  ("requestedExpiration" .=) <$>
+                    _arRequestedExpiration,
+                  ("requestTime" .=) <$> _arRequestTime,
+                  ("requestedReason" .=) <$> _arRequestedReason,
+                  ("name" .=) <$> _arName,
+                  ("approve" .=) <$> _arApprove,
+                  ("dismiss" .=) <$> _arDismiss,
+                  ("requestedLocations" .=) <$> _arRequestedLocations])
+
+-- | Request to dismiss an approval request.
+--
+-- /See:/ 'dismissApprovalRequestMessage' smart constructor.
+data DismissApprovalRequestMessage =
+  DismissApprovalRequestMessage'
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'DismissApprovalRequestMessage' with the minimum fields required to make a request.
+--
+dismissApprovalRequestMessage
+    :: DismissApprovalRequestMessage
+dismissApprovalRequestMessage = DismissApprovalRequestMessage'
+
+
+instance FromJSON DismissApprovalRequestMessage where
+        parseJSON
+          = withObject "DismissApprovalRequestMessage"
+              (\ o -> pure DismissApprovalRequestMessage')
+
+instance ToJSON DismissApprovalRequestMessage where
+        toJSON = const emptyObject
+
+-- | Request to approve an ApprovalRequest.
+--
+-- /See:/ 'approveApprovalRequestMessage' smart constructor.
+newtype ApproveApprovalRequestMessage =
+  ApproveApprovalRequestMessage'
+    { _aarmExpireTime :: Maybe DateTime'
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'ApproveApprovalRequestMessage' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'aarmExpireTime'
+approveApprovalRequestMessage
+    :: ApproveApprovalRequestMessage
+approveApprovalRequestMessage =
+  ApproveApprovalRequestMessage' {_aarmExpireTime = Nothing}
+
+
+-- | The expiration time of this approval.
+aarmExpireTime :: Lens' ApproveApprovalRequestMessage (Maybe UTCTime)
+aarmExpireTime
+  = lens _aarmExpireTime
+      (\ s a -> s{_aarmExpireTime = a})
+      . mapping _DateTime
+
+instance FromJSON ApproveApprovalRequestMessage where
+        parseJSON
+          = withObject "ApproveApprovalRequestMessage"
+              (\ o ->
+                 ApproveApprovalRequestMessage' <$>
+                   (o .:? "expireTime"))
+
+instance ToJSON ApproveApprovalRequestMessage where
+        toJSON ApproveApprovalRequestMessage'{..}
+          = object
+              (catMaybes [("expireTime" .=) <$> _aarmExpireTime])
+
+--
+-- /See:/ 'accessReason' smart constructor.
+data AccessReason =
+  AccessReason'
+    { _arType   :: !(Maybe AccessReasonType)
+    , _arDetail :: !(Maybe Text)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'AccessReason' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'arType'
+--
+-- * 'arDetail'
+accessReason
+    :: AccessReason
+accessReason = AccessReason' {_arType = Nothing, _arDetail = Nothing}
+
+
+-- | Type of access justification.
+arType :: Lens' AccessReason (Maybe AccessReasonType)
+arType = lens _arType (\ s a -> s{_arType = a})
+
+-- | More detail about certain reason types. See comments for each type
+-- above.
+arDetail :: Lens' AccessReason (Maybe Text)
+arDetail = lens _arDetail (\ s a -> s{_arDetail = a})
+
+instance FromJSON AccessReason where
+        parseJSON
+          = withObject "AccessReason"
+              (\ o ->
+                 AccessReason' <$>
+                   (o .:? "type") <*> (o .:? "detail"))
+
+instance ToJSON AccessReason where
+        toJSON AccessReason'{..}
+          = object
+              (catMaybes
+                 [("type" .=) <$> _arType,
+                  ("detail" .=) <$> _arDetail])
diff --git a/gen/Network/Google/AccessApproval/Types/Sum.hs b/gen/Network/Google/AccessApproval/Types/Sum.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/AccessApproval/Types/Sum.hs
@@ -0,0 +1,100 @@
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE LambdaCase         #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- |
+-- Module      : Network.Google.AccessApproval.Types.Sum
+-- Copyright   : (c) 2015-2016 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+module Network.Google.AccessApproval.Types.Sum where
+
+import           Network.Google.Prelude hiding (Bytes)
+
+-- | Type of access justification.
+data AccessReasonType
+    = TypeUnspecified
+      -- ^ @TYPE_UNSPECIFIED@
+      -- Default value for proto, shouldn\'t be used.
+    | CustomerInitiatedSupport
+      -- ^ @CUSTOMER_INITIATED_SUPPORT@
+      -- Customer made a request or raised an issue that required the principal
+      -- to access customer data. \`detail\` is of the form (\"#####\" is the
+      -- issue ID):
+      --
+      -- 1.  \"Feedback Report: #####\"
+      -- 2.  \"Case Number: #####\"
+      -- 3.  \"Case ID: #####\"
+      -- 4.  \"E-PIN Reference: #####\"
+      -- 5.  \"Google-#####\"
+      -- 6.  \"T-#####\"
+    | GoogleInitiatedService
+      -- ^ @GOOGLE_INITIATED_SERVICE@
+      -- The principal accessed customer data in order to diagnose or resolve a
+      -- suspected issue in services or a known outage. Often this access is used
+      -- to confirm that customers are not affected by a suspected service issue
+      -- or to remediate a reversible system issue.
+    | GoogleInitiatedReview
+      -- ^ @GOOGLE_INITIATED_REVIEW@
+      -- Google initiated service for security, fraud, abuse, or compliance
+      -- purposes.
+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
+
+instance Hashable AccessReasonType
+
+instance FromHttpApiData AccessReasonType where
+    parseQueryParam = \case
+        "TYPE_UNSPECIFIED" -> Right TypeUnspecified
+        "CUSTOMER_INITIATED_SUPPORT" -> Right CustomerInitiatedSupport
+        "GOOGLE_INITIATED_SERVICE" -> Right GoogleInitiatedService
+        "GOOGLE_INITIATED_REVIEW" -> Right GoogleInitiatedReview
+        x -> Left ("Unable to parse AccessReasonType from: " <> x)
+
+instance ToHttpApiData AccessReasonType where
+    toQueryParam = \case
+        TypeUnspecified -> "TYPE_UNSPECIFIED"
+        CustomerInitiatedSupport -> "CUSTOMER_INITIATED_SUPPORT"
+        GoogleInitiatedService -> "GOOGLE_INITIATED_SERVICE"
+        GoogleInitiatedReview -> "GOOGLE_INITIATED_REVIEW"
+
+instance FromJSON AccessReasonType where
+    parseJSON = parseJSONText "AccessReasonType"
+
+instance ToJSON AccessReasonType where
+    toJSON = toJSONText
+
+-- | V1 error format.
+data Xgafv
+    = X1
+      -- ^ @1@
+      -- v1 error format
+    | X2
+      -- ^ @2@
+      -- v2 error format
+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
+
+instance Hashable Xgafv
+
+instance FromHttpApiData Xgafv where
+    parseQueryParam = \case
+        "1" -> Right X1
+        "2" -> Right X2
+        x -> Left ("Unable to parse Xgafv from: " <> x)
+
+instance ToHttpApiData Xgafv where
+    toQueryParam = \case
+        X1 -> "1"
+        X2 -> "2"
+
+instance FromJSON Xgafv where
+    parseJSON = parseJSONText "Xgafv"
+
+instance ToJSON Xgafv where
+    toJSON = toJSONText
diff --git a/gen/Network/Google/Resource/AccessApproval/Folders/ApprovalRequests/Approve.hs b/gen/Network/Google/Resource/AccessApproval/Folders/ApprovalRequests/Approve.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/AccessApproval/Folders/ApprovalRequests/Approve.hs
@@ -0,0 +1,170 @@
+{-# LANGUAGE DataKinds          #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE FlexibleInstances  #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+{-# LANGUAGE TypeOperators      #-}
+
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
+
+-- |
+-- Module      : Network.Google.Resource.AccessApproval.Folders.ApprovalRequests.Approve
+-- Copyright   : (c) 2015-2016 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Approves a request and returns the updated ApprovalRequest. Returns
+-- NOT_FOUND if the request does not exist. Returns FAILED_PRECONDITION if
+-- the request exists but is not in a pending state.
+--
+-- /See:/ <https://cloud.google.com/access-approval/docs Access Approval API Reference> for @accessapproval.folders.approvalRequests.approve@.
+module Network.Google.Resource.AccessApproval.Folders.ApprovalRequests.Approve
+    (
+    -- * REST Resource
+      FoldersApprovalRequestsApproveResource
+
+    -- * Creating a Request
+    , foldersApprovalRequestsApprove
+    , FoldersApprovalRequestsApprove
+
+    -- * Request Lenses
+    , faraXgafv
+    , faraUploadProtocol
+    , faraAccessToken
+    , faraUploadType
+    , faraPayload
+    , faraName
+    , faraCallback
+    ) where
+
+import           Network.Google.AccessApproval.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @accessapproval.folders.approvalRequests.approve@ method which the
+-- 'FoldersApprovalRequestsApprove' request conforms to.
+type FoldersApprovalRequestsApproveResource =
+     "v1beta1" :>
+       CaptureMode "name" "approve" Text :>
+         QueryParam "$.xgafv" Xgafv :>
+           QueryParam "upload_protocol" Text :>
+             QueryParam "access_token" Text :>
+               QueryParam "uploadType" Text :>
+                 QueryParam "callback" Text :>
+                   QueryParam "alt" AltJSON :>
+                     ReqBody '[JSON] ApproveApprovalRequestMessage :>
+                       Post '[JSON] ApprovalRequest
+
+-- | Approves a request and returns the updated ApprovalRequest. Returns
+-- NOT_FOUND if the request does not exist. Returns FAILED_PRECONDITION if
+-- the request exists but is not in a pending state.
+--
+-- /See:/ 'foldersApprovalRequestsApprove' smart constructor.
+data FoldersApprovalRequestsApprove =
+  FoldersApprovalRequestsApprove'
+    { _faraXgafv          :: !(Maybe Xgafv)
+    , _faraUploadProtocol :: !(Maybe Text)
+    , _faraAccessToken    :: !(Maybe Text)
+    , _faraUploadType     :: !(Maybe Text)
+    , _faraPayload        :: !ApproveApprovalRequestMessage
+    , _faraName           :: !Text
+    , _faraCallback       :: !(Maybe Text)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'FoldersApprovalRequestsApprove' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'faraXgafv'
+--
+-- * 'faraUploadProtocol'
+--
+-- * 'faraAccessToken'
+--
+-- * 'faraUploadType'
+--
+-- * 'faraPayload'
+--
+-- * 'faraName'
+--
+-- * 'faraCallback'
+foldersApprovalRequestsApprove
+    :: ApproveApprovalRequestMessage -- ^ 'faraPayload'
+    -> Text -- ^ 'faraName'
+    -> FoldersApprovalRequestsApprove
+foldersApprovalRequestsApprove pFaraPayload_ pFaraName_ =
+  FoldersApprovalRequestsApprove'
+    { _faraXgafv = Nothing
+    , _faraUploadProtocol = Nothing
+    , _faraAccessToken = Nothing
+    , _faraUploadType = Nothing
+    , _faraPayload = pFaraPayload_
+    , _faraName = pFaraName_
+    , _faraCallback = Nothing
+    }
+
+
+-- | V1 error format.
+faraXgafv :: Lens' FoldersApprovalRequestsApprove (Maybe Xgafv)
+faraXgafv
+  = lens _faraXgafv (\ s a -> s{_faraXgafv = a})
+
+-- | Upload protocol for media (e.g. \"raw\", \"multipart\").
+faraUploadProtocol :: Lens' FoldersApprovalRequestsApprove (Maybe Text)
+faraUploadProtocol
+  = lens _faraUploadProtocol
+      (\ s a -> s{_faraUploadProtocol = a})
+
+-- | OAuth access token.
+faraAccessToken :: Lens' FoldersApprovalRequestsApprove (Maybe Text)
+faraAccessToken
+  = lens _faraAccessToken
+      (\ s a -> s{_faraAccessToken = a})
+
+-- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
+faraUploadType :: Lens' FoldersApprovalRequestsApprove (Maybe Text)
+faraUploadType
+  = lens _faraUploadType
+      (\ s a -> s{_faraUploadType = a})
+
+-- | Multipart request metadata.
+faraPayload :: Lens' FoldersApprovalRequestsApprove ApproveApprovalRequestMessage
+faraPayload
+  = lens _faraPayload (\ s a -> s{_faraPayload = a})
+
+-- | Name of the approval request to approve.
+faraName :: Lens' FoldersApprovalRequestsApprove Text
+faraName = lens _faraName (\ s a -> s{_faraName = a})
+
+-- | JSONP
+faraCallback :: Lens' FoldersApprovalRequestsApprove (Maybe Text)
+faraCallback
+  = lens _faraCallback (\ s a -> s{_faraCallback = a})
+
+instance GoogleRequest FoldersApprovalRequestsApprove
+         where
+        type Rs FoldersApprovalRequestsApprove =
+             ApprovalRequest
+        type Scopes FoldersApprovalRequestsApprove =
+             '["https://www.googleapis.com/auth/cloud-platform"]
+        requestClient FoldersApprovalRequestsApprove'{..}
+          = go _faraName _faraXgafv _faraUploadProtocol
+              _faraAccessToken
+              _faraUploadType
+              _faraCallback
+              (Just AltJSON)
+              _faraPayload
+              accessApprovalService
+          where go
+                  = buildClient
+                      (Proxy ::
+                         Proxy FoldersApprovalRequestsApproveResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/AccessApproval/Folders/ApprovalRequests/Dismiss.hs b/gen/Network/Google/Resource/AccessApproval/Folders/ApprovalRequests/Dismiss.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/AccessApproval/Folders/ApprovalRequests/Dismiss.hs
@@ -0,0 +1,174 @@
+{-# LANGUAGE DataKinds          #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE FlexibleInstances  #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+{-# LANGUAGE TypeOperators      #-}
+
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
+
+-- |
+-- Module      : Network.Google.Resource.AccessApproval.Folders.ApprovalRequests.Dismiss
+-- Copyright   : (c) 2015-2016 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Dismisses a request. Returns the updated ApprovalRequest. NOTE: This
+-- does not deny access to the resource if another request has been made
+-- and approved. It is equivalent in effect to ignoring the request
+-- altogether. Returns NOT_FOUND if the request does not exist. Returns
+-- FAILED_PRECONDITION if the request exists but is not in a pending state.
+--
+-- /See:/ <https://cloud.google.com/access-approval/docs Access Approval API Reference> for @accessapproval.folders.approvalRequests.dismiss@.
+module Network.Google.Resource.AccessApproval.Folders.ApprovalRequests.Dismiss
+    (
+    -- * REST Resource
+      FoldersApprovalRequestsDismissResource
+
+    -- * Creating a Request
+    , foldersApprovalRequestsDismiss
+    , FoldersApprovalRequestsDismiss
+
+    -- * Request Lenses
+    , fardXgafv
+    , fardUploadProtocol
+    , fardAccessToken
+    , fardUploadType
+    , fardPayload
+    , fardName
+    , fardCallback
+    ) where
+
+import           Network.Google.AccessApproval.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @accessapproval.folders.approvalRequests.dismiss@ method which the
+-- 'FoldersApprovalRequestsDismiss' request conforms to.
+type FoldersApprovalRequestsDismissResource =
+     "v1beta1" :>
+       CaptureMode "name" "dismiss" Text :>
+         QueryParam "$.xgafv" Xgafv :>
+           QueryParam "upload_protocol" Text :>
+             QueryParam "access_token" Text :>
+               QueryParam "uploadType" Text :>
+                 QueryParam "callback" Text :>
+                   QueryParam "alt" AltJSON :>
+                     ReqBody '[JSON] DismissApprovalRequestMessage :>
+                       Post '[JSON] ApprovalRequest
+
+-- | Dismisses a request. Returns the updated ApprovalRequest. NOTE: This
+-- does not deny access to the resource if another request has been made
+-- and approved. It is equivalent in effect to ignoring the request
+-- altogether. Returns NOT_FOUND if the request does not exist. Returns
+-- FAILED_PRECONDITION if the request exists but is not in a pending state.
+--
+-- /See:/ 'foldersApprovalRequestsDismiss' smart constructor.
+data FoldersApprovalRequestsDismiss =
+  FoldersApprovalRequestsDismiss'
+    { _fardXgafv          :: !(Maybe Xgafv)
+    , _fardUploadProtocol :: !(Maybe Text)
+    , _fardAccessToken    :: !(Maybe Text)
+    , _fardUploadType     :: !(Maybe Text)
+    , _fardPayload        :: !DismissApprovalRequestMessage
+    , _fardName           :: !Text
+    , _fardCallback       :: !(Maybe Text)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'FoldersApprovalRequestsDismiss' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'fardXgafv'
+--
+-- * 'fardUploadProtocol'
+--
+-- * 'fardAccessToken'
+--
+-- * 'fardUploadType'
+--
+-- * 'fardPayload'
+--
+-- * 'fardName'
+--
+-- * 'fardCallback'
+foldersApprovalRequestsDismiss
+    :: DismissApprovalRequestMessage -- ^ 'fardPayload'
+    -> Text -- ^ 'fardName'
+    -> FoldersApprovalRequestsDismiss
+foldersApprovalRequestsDismiss pFardPayload_ pFardName_ =
+  FoldersApprovalRequestsDismiss'
+    { _fardXgafv = Nothing
+    , _fardUploadProtocol = Nothing
+    , _fardAccessToken = Nothing
+    , _fardUploadType = Nothing
+    , _fardPayload = pFardPayload_
+    , _fardName = pFardName_
+    , _fardCallback = Nothing
+    }
+
+
+-- | V1 error format.
+fardXgafv :: Lens' FoldersApprovalRequestsDismiss (Maybe Xgafv)
+fardXgafv
+  = lens _fardXgafv (\ s a -> s{_fardXgafv = a})
+
+-- | Upload protocol for media (e.g. \"raw\", \"multipart\").
+fardUploadProtocol :: Lens' FoldersApprovalRequestsDismiss (Maybe Text)
+fardUploadProtocol
+  = lens _fardUploadProtocol
+      (\ s a -> s{_fardUploadProtocol = a})
+
+-- | OAuth access token.
+fardAccessToken :: Lens' FoldersApprovalRequestsDismiss (Maybe Text)
+fardAccessToken
+  = lens _fardAccessToken
+      (\ s a -> s{_fardAccessToken = a})
+
+-- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
+fardUploadType :: Lens' FoldersApprovalRequestsDismiss (Maybe Text)
+fardUploadType
+  = lens _fardUploadType
+      (\ s a -> s{_fardUploadType = a})
+
+-- | Multipart request metadata.
+fardPayload :: Lens' FoldersApprovalRequestsDismiss DismissApprovalRequestMessage
+fardPayload
+  = lens _fardPayload (\ s a -> s{_fardPayload = a})
+
+-- | Name of the ApprovalRequest to dismiss.
+fardName :: Lens' FoldersApprovalRequestsDismiss Text
+fardName = lens _fardName (\ s a -> s{_fardName = a})
+
+-- | JSONP
+fardCallback :: Lens' FoldersApprovalRequestsDismiss (Maybe Text)
+fardCallback
+  = lens _fardCallback (\ s a -> s{_fardCallback = a})
+
+instance GoogleRequest FoldersApprovalRequestsDismiss
+         where
+        type Rs FoldersApprovalRequestsDismiss =
+             ApprovalRequest
+        type Scopes FoldersApprovalRequestsDismiss =
+             '["https://www.googleapis.com/auth/cloud-platform"]
+        requestClient FoldersApprovalRequestsDismiss'{..}
+          = go _fardName _fardXgafv _fardUploadProtocol
+              _fardAccessToken
+              _fardUploadType
+              _fardCallback
+              (Just AltJSON)
+              _fardPayload
+              accessApprovalService
+          where go
+                  = buildClient
+                      (Proxy ::
+                         Proxy FoldersApprovalRequestsDismissResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/AccessApproval/Folders/ApprovalRequests/Get.hs b/gen/Network/Google/Resource/AccessApproval/Folders/ApprovalRequests/Get.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/AccessApproval/Folders/ApprovalRequests/Get.hs
@@ -0,0 +1,153 @@
+{-# 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.AccessApproval.Folders.ApprovalRequests.Get
+-- Copyright   : (c) 2015-2016 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Gets an approval request. Returns NOT_FOUND if the request does not
+-- exist.
+--
+-- /See:/ <https://cloud.google.com/access-approval/docs Access Approval API Reference> for @accessapproval.folders.approvalRequests.get@.
+module Network.Google.Resource.AccessApproval.Folders.ApprovalRequests.Get
+    (
+    -- * REST Resource
+      FoldersApprovalRequestsGetResource
+
+    -- * Creating a Request
+    , foldersApprovalRequestsGet
+    , FoldersApprovalRequestsGet
+
+    -- * Request Lenses
+    , fargXgafv
+    , fargUploadProtocol
+    , fargAccessToken
+    , fargUploadType
+    , fargName
+    , fargCallback
+    ) where
+
+import           Network.Google.AccessApproval.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @accessapproval.folders.approvalRequests.get@ method which the
+-- 'FoldersApprovalRequestsGet' request conforms to.
+type FoldersApprovalRequestsGetResource =
+     "v1beta1" :>
+       Capture "name" Text :>
+         QueryParam "$.xgafv" Xgafv :>
+           QueryParam "upload_protocol" Text :>
+             QueryParam "access_token" Text :>
+               QueryParam "uploadType" Text :>
+                 QueryParam "callback" Text :>
+                   QueryParam "alt" AltJSON :>
+                     Get '[JSON] ApprovalRequest
+
+-- | Gets an approval request. Returns NOT_FOUND if the request does not
+-- exist.
+--
+-- /See:/ 'foldersApprovalRequestsGet' smart constructor.
+data FoldersApprovalRequestsGet =
+  FoldersApprovalRequestsGet'
+    { _fargXgafv          :: !(Maybe Xgafv)
+    , _fargUploadProtocol :: !(Maybe Text)
+    , _fargAccessToken    :: !(Maybe Text)
+    , _fargUploadType     :: !(Maybe Text)
+    , _fargName           :: !Text
+    , _fargCallback       :: !(Maybe Text)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'FoldersApprovalRequestsGet' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'fargXgafv'
+--
+-- * 'fargUploadProtocol'
+--
+-- * 'fargAccessToken'
+--
+-- * 'fargUploadType'
+--
+-- * 'fargName'
+--
+-- * 'fargCallback'
+foldersApprovalRequestsGet
+    :: Text -- ^ 'fargName'
+    -> FoldersApprovalRequestsGet
+foldersApprovalRequestsGet pFargName_ =
+  FoldersApprovalRequestsGet'
+    { _fargXgafv = Nothing
+    , _fargUploadProtocol = Nothing
+    , _fargAccessToken = Nothing
+    , _fargUploadType = Nothing
+    , _fargName = pFargName_
+    , _fargCallback = Nothing
+    }
+
+
+-- | V1 error format.
+fargXgafv :: Lens' FoldersApprovalRequestsGet (Maybe Xgafv)
+fargXgafv
+  = lens _fargXgafv (\ s a -> s{_fargXgafv = a})
+
+-- | Upload protocol for media (e.g. \"raw\", \"multipart\").
+fargUploadProtocol :: Lens' FoldersApprovalRequestsGet (Maybe Text)
+fargUploadProtocol
+  = lens _fargUploadProtocol
+      (\ s a -> s{_fargUploadProtocol = a})
+
+-- | OAuth access token.
+fargAccessToken :: Lens' FoldersApprovalRequestsGet (Maybe Text)
+fargAccessToken
+  = lens _fargAccessToken
+      (\ s a -> s{_fargAccessToken = a})
+
+-- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
+fargUploadType :: Lens' FoldersApprovalRequestsGet (Maybe Text)
+fargUploadType
+  = lens _fargUploadType
+      (\ s a -> s{_fargUploadType = a})
+
+-- | Name of the approval request to retrieve.
+fargName :: Lens' FoldersApprovalRequestsGet Text
+fargName = lens _fargName (\ s a -> s{_fargName = a})
+
+-- | JSONP
+fargCallback :: Lens' FoldersApprovalRequestsGet (Maybe Text)
+fargCallback
+  = lens _fargCallback (\ s a -> s{_fargCallback = a})
+
+instance GoogleRequest FoldersApprovalRequestsGet
+         where
+        type Rs FoldersApprovalRequestsGet = ApprovalRequest
+        type Scopes FoldersApprovalRequestsGet =
+             '["https://www.googleapis.com/auth/cloud-platform"]
+        requestClient FoldersApprovalRequestsGet'{..}
+          = go _fargName _fargXgafv _fargUploadProtocol
+              _fargAccessToken
+              _fargUploadType
+              _fargCallback
+              (Just AltJSON)
+              accessApprovalService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy FoldersApprovalRequestsGetResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/AccessApproval/Folders/ApprovalRequests/List.hs b/gen/Network/Google/Resource/AccessApproval/Folders/ApprovalRequests/List.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/AccessApproval/Folders/ApprovalRequests/List.hs
@@ -0,0 +1,204 @@
+{-# 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.AccessApproval.Folders.ApprovalRequests.List
+-- Copyright   : (c) 2015-2016 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Lists approval requests associated with a project, folder, or
+-- organization. Approval requests can be filtered by state (pending,
+-- active, dismissed). The order is reverse chronological.
+--
+-- /See:/ <https://cloud.google.com/access-approval/docs Access Approval API Reference> for @accessapproval.folders.approvalRequests.list@.
+module Network.Google.Resource.AccessApproval.Folders.ApprovalRequests.List
+    (
+    -- * REST Resource
+      FoldersApprovalRequestsListResource
+
+    -- * Creating a Request
+    , foldersApprovalRequestsList
+    , FoldersApprovalRequestsList
+
+    -- * Request Lenses
+    , farlParent
+    , farlXgafv
+    , farlUploadProtocol
+    , farlAccessToken
+    , farlUploadType
+    , farlFilter
+    , farlPageToken
+    , farlPageSize
+    , farlCallback
+    ) where
+
+import           Network.Google.AccessApproval.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @accessapproval.folders.approvalRequests.list@ method which the
+-- 'FoldersApprovalRequestsList' request conforms to.
+type FoldersApprovalRequestsListResource =
+     "v1beta1" :>
+       Capture "parent" Text :>
+         "approvalRequests" :>
+           QueryParam "$.xgafv" Xgafv :>
+             QueryParam "upload_protocol" Text :>
+               QueryParam "access_token" Text :>
+                 QueryParam "uploadType" Text :>
+                   QueryParam "filter" Text :>
+                     QueryParam "pageToken" Text :>
+                       QueryParam "pageSize" (Textual Int32) :>
+                         QueryParam "callback" Text :>
+                           QueryParam "alt" AltJSON :>
+                             Get '[JSON] ListApprovalRequestsResponse
+
+-- | Lists approval requests associated with a project, folder, or
+-- organization. Approval requests can be filtered by state (pending,
+-- active, dismissed). The order is reverse chronological.
+--
+-- /See:/ 'foldersApprovalRequestsList' smart constructor.
+data FoldersApprovalRequestsList =
+  FoldersApprovalRequestsList'
+    { _farlParent         :: !Text
+    , _farlXgafv          :: !(Maybe Xgafv)
+    , _farlUploadProtocol :: !(Maybe Text)
+    , _farlAccessToken    :: !(Maybe Text)
+    , _farlUploadType     :: !(Maybe Text)
+    , _farlFilter         :: !(Maybe Text)
+    , _farlPageToken      :: !(Maybe Text)
+    , _farlPageSize       :: !(Maybe (Textual Int32))
+    , _farlCallback       :: !(Maybe Text)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'FoldersApprovalRequestsList' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'farlParent'
+--
+-- * 'farlXgafv'
+--
+-- * 'farlUploadProtocol'
+--
+-- * 'farlAccessToken'
+--
+-- * 'farlUploadType'
+--
+-- * 'farlFilter'
+--
+-- * 'farlPageToken'
+--
+-- * 'farlPageSize'
+--
+-- * 'farlCallback'
+foldersApprovalRequestsList
+    :: Text -- ^ 'farlParent'
+    -> FoldersApprovalRequestsList
+foldersApprovalRequestsList pFarlParent_ =
+  FoldersApprovalRequestsList'
+    { _farlParent = pFarlParent_
+    , _farlXgafv = Nothing
+    , _farlUploadProtocol = Nothing
+    , _farlAccessToken = Nothing
+    , _farlUploadType = Nothing
+    , _farlFilter = Nothing
+    , _farlPageToken = Nothing
+    , _farlPageSize = Nothing
+    , _farlCallback = Nothing
+    }
+
+
+-- | The parent resource. This may be \"projects\/{project_id}\",
+-- \"folders\/{folder_id}\", or \"organizations\/{organization_id}\".
+farlParent :: Lens' FoldersApprovalRequestsList Text
+farlParent
+  = lens _farlParent (\ s a -> s{_farlParent = a})
+
+-- | V1 error format.
+farlXgafv :: Lens' FoldersApprovalRequestsList (Maybe Xgafv)
+farlXgafv
+  = lens _farlXgafv (\ s a -> s{_farlXgafv = a})
+
+-- | Upload protocol for media (e.g. \"raw\", \"multipart\").
+farlUploadProtocol :: Lens' FoldersApprovalRequestsList (Maybe Text)
+farlUploadProtocol
+  = lens _farlUploadProtocol
+      (\ s a -> s{_farlUploadProtocol = a})
+
+-- | OAuth access token.
+farlAccessToken :: Lens' FoldersApprovalRequestsList (Maybe Text)
+farlAccessToken
+  = lens _farlAccessToken
+      (\ s a -> s{_farlAccessToken = a})
+
+-- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
+farlUploadType :: Lens' FoldersApprovalRequestsList (Maybe Text)
+farlUploadType
+  = lens _farlUploadType
+      (\ s a -> s{_farlUploadType = a})
+
+-- | A filter on the type of approval requests to retrieve. Must be one of
+-- the following values:
+--
+-- 1.  [not set]: Requests that are pending or have active approvals.
+-- 2.  ALL: All requests.
+-- 3.  PENDING: Only pending requests.
+-- 4.  ACTIVE: Only active (i.e. currently approved) requests.
+-- 5.  DISMISSED: Only dismissed (including expired) requests.
+farlFilter :: Lens' FoldersApprovalRequestsList (Maybe Text)
+farlFilter
+  = lens _farlFilter (\ s a -> s{_farlFilter = a})
+
+-- | A token identifying the page of results to return.
+farlPageToken :: Lens' FoldersApprovalRequestsList (Maybe Text)
+farlPageToken
+  = lens _farlPageToken
+      (\ s a -> s{_farlPageToken = a})
+
+-- | Requested page size.
+farlPageSize :: Lens' FoldersApprovalRequestsList (Maybe Int32)
+farlPageSize
+  = lens _farlPageSize (\ s a -> s{_farlPageSize = a})
+      . mapping _Coerce
+
+-- | JSONP
+farlCallback :: Lens' FoldersApprovalRequestsList (Maybe Text)
+farlCallback
+  = lens _farlCallback (\ s a -> s{_farlCallback = a})
+
+instance GoogleRequest FoldersApprovalRequestsList
+         where
+        type Rs FoldersApprovalRequestsList =
+             ListApprovalRequestsResponse
+        type Scopes FoldersApprovalRequestsList =
+             '["https://www.googleapis.com/auth/cloud-platform"]
+        requestClient FoldersApprovalRequestsList'{..}
+          = go _farlParent _farlXgafv _farlUploadProtocol
+              _farlAccessToken
+              _farlUploadType
+              _farlFilter
+              _farlPageToken
+              _farlPageSize
+              _farlCallback
+              (Just AltJSON)
+              accessApprovalService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy FoldersApprovalRequestsListResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/AccessApproval/Folders/GetAccessApprovalSettings.hs b/gen/Network/Google/Resource/AccessApproval/Folders/GetAccessApprovalSettings.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/AccessApproval/Folders/GetAccessApprovalSettings.hs
@@ -0,0 +1,156 @@
+{-# 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.AccessApproval.Folders.GetAccessApprovalSettings
+-- Copyright   : (c) 2015-2016 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Gets the settings associated with a project, folder, or organization.
+--
+-- /See:/ <https://cloud.google.com/access-approval/docs Access Approval API Reference> for @accessapproval.folders.getAccessApprovalSettings@.
+module Network.Google.Resource.AccessApproval.Folders.GetAccessApprovalSettings
+    (
+    -- * REST Resource
+      FoldersGetAccessApprovalSettingsResource
+
+    -- * Creating a Request
+    , foldersGetAccessApprovalSettings
+    , FoldersGetAccessApprovalSettings
+
+    -- * Request Lenses
+    , fgaasXgafv
+    , fgaasUploadProtocol
+    , fgaasAccessToken
+    , fgaasUploadType
+    , fgaasName
+    , fgaasCallback
+    ) where
+
+import           Network.Google.AccessApproval.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @accessapproval.folders.getAccessApprovalSettings@ method which the
+-- 'FoldersGetAccessApprovalSettings' request conforms to.
+type FoldersGetAccessApprovalSettingsResource =
+     "v1beta1" :>
+       Capture "name" Text :>
+         QueryParam "$.xgafv" Xgafv :>
+           QueryParam "upload_protocol" Text :>
+             QueryParam "access_token" Text :>
+               QueryParam "uploadType" Text :>
+                 QueryParam "callback" Text :>
+                   QueryParam "alt" AltJSON :>
+                     Get '[JSON] AccessApprovalSettings
+
+-- | Gets the settings associated with a project, folder, or organization.
+--
+-- /See:/ 'foldersGetAccessApprovalSettings' smart constructor.
+data FoldersGetAccessApprovalSettings =
+  FoldersGetAccessApprovalSettings'
+    { _fgaasXgafv          :: !(Maybe Xgafv)
+    , _fgaasUploadProtocol :: !(Maybe Text)
+    , _fgaasAccessToken    :: !(Maybe Text)
+    , _fgaasUploadType     :: !(Maybe Text)
+    , _fgaasName           :: !Text
+    , _fgaasCallback       :: !(Maybe Text)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'FoldersGetAccessApprovalSettings' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'fgaasXgafv'
+--
+-- * 'fgaasUploadProtocol'
+--
+-- * 'fgaasAccessToken'
+--
+-- * 'fgaasUploadType'
+--
+-- * 'fgaasName'
+--
+-- * 'fgaasCallback'
+foldersGetAccessApprovalSettings
+    :: Text -- ^ 'fgaasName'
+    -> FoldersGetAccessApprovalSettings
+foldersGetAccessApprovalSettings pFgaasName_ =
+  FoldersGetAccessApprovalSettings'
+    { _fgaasXgafv = Nothing
+    , _fgaasUploadProtocol = Nothing
+    , _fgaasAccessToken = Nothing
+    , _fgaasUploadType = Nothing
+    , _fgaasName = pFgaasName_
+    , _fgaasCallback = Nothing
+    }
+
+
+-- | V1 error format.
+fgaasXgafv :: Lens' FoldersGetAccessApprovalSettings (Maybe Xgafv)
+fgaasXgafv
+  = lens _fgaasXgafv (\ s a -> s{_fgaasXgafv = a})
+
+-- | Upload protocol for media (e.g. \"raw\", \"multipart\").
+fgaasUploadProtocol :: Lens' FoldersGetAccessApprovalSettings (Maybe Text)
+fgaasUploadProtocol
+  = lens _fgaasUploadProtocol
+      (\ s a -> s{_fgaasUploadProtocol = a})
+
+-- | OAuth access token.
+fgaasAccessToken :: Lens' FoldersGetAccessApprovalSettings (Maybe Text)
+fgaasAccessToken
+  = lens _fgaasAccessToken
+      (\ s a -> s{_fgaasAccessToken = a})
+
+-- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
+fgaasUploadType :: Lens' FoldersGetAccessApprovalSettings (Maybe Text)
+fgaasUploadType
+  = lens _fgaasUploadType
+      (\ s a -> s{_fgaasUploadType = a})
+
+-- | Name of the AccessApprovalSettings to retrieve.
+fgaasName :: Lens' FoldersGetAccessApprovalSettings Text
+fgaasName
+  = lens _fgaasName (\ s a -> s{_fgaasName = a})
+
+-- | JSONP
+fgaasCallback :: Lens' FoldersGetAccessApprovalSettings (Maybe Text)
+fgaasCallback
+  = lens _fgaasCallback
+      (\ s a -> s{_fgaasCallback = a})
+
+instance GoogleRequest
+           FoldersGetAccessApprovalSettings
+         where
+        type Rs FoldersGetAccessApprovalSettings =
+             AccessApprovalSettings
+        type Scopes FoldersGetAccessApprovalSettings =
+             '["https://www.googleapis.com/auth/cloud-platform"]
+        requestClient FoldersGetAccessApprovalSettings'{..}
+          = go _fgaasName _fgaasXgafv _fgaasUploadProtocol
+              _fgaasAccessToken
+              _fgaasUploadType
+              _fgaasCallback
+              (Just AltJSON)
+              accessApprovalService
+          where go
+                  = buildClient
+                      (Proxy ::
+                         Proxy FoldersGetAccessApprovalSettingsResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/AccessApproval/Folders/UpdateAccessApprovalSettings.hs b/gen/Network/Google/Resource/AccessApproval/Folders/UpdateAccessApprovalSettings.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/AccessApproval/Folders/UpdateAccessApprovalSettings.hs
@@ -0,0 +1,175 @@
+{-# 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.AccessApproval.Folders.UpdateAccessApprovalSettings
+-- Copyright   : (c) 2015-2016 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Updates the settings associated with a project, folder, or organization.
+-- Completely replaces the existing settings.
+--
+-- /See:/ <https://cloud.google.com/access-approval/docs Access Approval API Reference> for @accessapproval.folders.updateAccessApprovalSettings@.
+module Network.Google.Resource.AccessApproval.Folders.UpdateAccessApprovalSettings
+    (
+    -- * REST Resource
+      FoldersUpdateAccessApprovalSettingsResource
+
+    -- * Creating a Request
+    , foldersUpdateAccessApprovalSettings
+    , FoldersUpdateAccessApprovalSettings
+
+    -- * Request Lenses
+    , fuaasXgafv
+    , fuaasUploadProtocol
+    , fuaasAccessToken
+    , fuaasUploadType
+    , fuaasPayload
+    , fuaasName
+    , fuaasCallback
+    ) where
+
+import           Network.Google.AccessApproval.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @accessapproval.folders.updateAccessApprovalSettings@ method which the
+-- 'FoldersUpdateAccessApprovalSettings' request conforms to.
+type FoldersUpdateAccessApprovalSettingsResource =
+     "v1beta1" :>
+       Capture "name" Text :>
+         QueryParam "$.xgafv" Xgafv :>
+           QueryParam "upload_protocol" Text :>
+             QueryParam "access_token" Text :>
+               QueryParam "uploadType" Text :>
+                 QueryParam "callback" Text :>
+                   QueryParam "alt" AltJSON :>
+                     ReqBody '[JSON] AccessApprovalSettings :>
+                       Patch '[JSON] AccessApprovalSettings
+
+-- | Updates the settings associated with a project, folder, or organization.
+-- Completely replaces the existing settings.
+--
+-- /See:/ 'foldersUpdateAccessApprovalSettings' smart constructor.
+data FoldersUpdateAccessApprovalSettings =
+  FoldersUpdateAccessApprovalSettings'
+    { _fuaasXgafv          :: !(Maybe Xgafv)
+    , _fuaasUploadProtocol :: !(Maybe Text)
+    , _fuaasAccessToken    :: !(Maybe Text)
+    , _fuaasUploadType     :: !(Maybe Text)
+    , _fuaasPayload        :: !AccessApprovalSettings
+    , _fuaasName           :: !Text
+    , _fuaasCallback       :: !(Maybe Text)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'FoldersUpdateAccessApprovalSettings' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'fuaasXgafv'
+--
+-- * 'fuaasUploadProtocol'
+--
+-- * 'fuaasAccessToken'
+--
+-- * 'fuaasUploadType'
+--
+-- * 'fuaasPayload'
+--
+-- * 'fuaasName'
+--
+-- * 'fuaasCallback'
+foldersUpdateAccessApprovalSettings
+    :: AccessApprovalSettings -- ^ 'fuaasPayload'
+    -> Text -- ^ 'fuaasName'
+    -> FoldersUpdateAccessApprovalSettings
+foldersUpdateAccessApprovalSettings pFuaasPayload_ pFuaasName_ =
+  FoldersUpdateAccessApprovalSettings'
+    { _fuaasXgafv = Nothing
+    , _fuaasUploadProtocol = Nothing
+    , _fuaasAccessToken = Nothing
+    , _fuaasUploadType = Nothing
+    , _fuaasPayload = pFuaasPayload_
+    , _fuaasName = pFuaasName_
+    , _fuaasCallback = Nothing
+    }
+
+
+-- | V1 error format.
+fuaasXgafv :: Lens' FoldersUpdateAccessApprovalSettings (Maybe Xgafv)
+fuaasXgafv
+  = lens _fuaasXgafv (\ s a -> s{_fuaasXgafv = a})
+
+-- | Upload protocol for media (e.g. \"raw\", \"multipart\").
+fuaasUploadProtocol :: Lens' FoldersUpdateAccessApprovalSettings (Maybe Text)
+fuaasUploadProtocol
+  = lens _fuaasUploadProtocol
+      (\ s a -> s{_fuaasUploadProtocol = a})
+
+-- | OAuth access token.
+fuaasAccessToken :: Lens' FoldersUpdateAccessApprovalSettings (Maybe Text)
+fuaasAccessToken
+  = lens _fuaasAccessToken
+      (\ s a -> s{_fuaasAccessToken = a})
+
+-- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
+fuaasUploadType :: Lens' FoldersUpdateAccessApprovalSettings (Maybe Text)
+fuaasUploadType
+  = lens _fuaasUploadType
+      (\ s a -> s{_fuaasUploadType = a})
+
+-- | Multipart request metadata.
+fuaasPayload :: Lens' FoldersUpdateAccessApprovalSettings AccessApprovalSettings
+fuaasPayload
+  = lens _fuaasPayload (\ s a -> s{_fuaasPayload = a})
+
+-- | The resource name of the settings. Format is one of:
+-- \"projects\/{project_id}\/accessApprovalSettings\"
+-- \"folders\/{folder_id}\/accessApprovalSettings\"
+-- \"organizations\/{organization_id}\/accessApprovalSettings\"
+fuaasName :: Lens' FoldersUpdateAccessApprovalSettings Text
+fuaasName
+  = lens _fuaasName (\ s a -> s{_fuaasName = a})
+
+-- | JSONP
+fuaasCallback :: Lens' FoldersUpdateAccessApprovalSettings (Maybe Text)
+fuaasCallback
+  = lens _fuaasCallback
+      (\ s a -> s{_fuaasCallback = a})
+
+instance GoogleRequest
+           FoldersUpdateAccessApprovalSettings
+         where
+        type Rs FoldersUpdateAccessApprovalSettings =
+             AccessApprovalSettings
+        type Scopes FoldersUpdateAccessApprovalSettings =
+             '["https://www.googleapis.com/auth/cloud-platform"]
+        requestClient
+          FoldersUpdateAccessApprovalSettings'{..}
+          = go _fuaasName _fuaasXgafv _fuaasUploadProtocol
+              _fuaasAccessToken
+              _fuaasUploadType
+              _fuaasCallback
+              (Just AltJSON)
+              _fuaasPayload
+              accessApprovalService
+          where go
+                  = buildClient
+                      (Proxy ::
+                         Proxy FoldersUpdateAccessApprovalSettingsResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/AccessApproval/Organizations/ApprovalRequests/Approve.hs b/gen/Network/Google/Resource/AccessApproval/Organizations/ApprovalRequests/Approve.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/AccessApproval/Organizations/ApprovalRequests/Approve.hs
@@ -0,0 +1,172 @@
+{-# 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.AccessApproval.Organizations.ApprovalRequests.Approve
+-- Copyright   : (c) 2015-2016 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Approves a request and returns the updated ApprovalRequest. Returns
+-- NOT_FOUND if the request does not exist. Returns FAILED_PRECONDITION if
+-- the request exists but is not in a pending state.
+--
+-- /See:/ <https://cloud.google.com/access-approval/docs Access Approval API Reference> for @accessapproval.organizations.approvalRequests.approve@.
+module Network.Google.Resource.AccessApproval.Organizations.ApprovalRequests.Approve
+    (
+    -- * REST Resource
+      OrganizationsApprovalRequestsApproveResource
+
+    -- * Creating a Request
+    , organizationsApprovalRequestsApprove
+    , OrganizationsApprovalRequestsApprove
+
+    -- * Request Lenses
+    , oaraXgafv
+    , oaraUploadProtocol
+    , oaraAccessToken
+    , oaraUploadType
+    , oaraPayload
+    , oaraName
+    , oaraCallback
+    ) where
+
+import           Network.Google.AccessApproval.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @accessapproval.organizations.approvalRequests.approve@ method which the
+-- 'OrganizationsApprovalRequestsApprove' request conforms to.
+type OrganizationsApprovalRequestsApproveResource =
+     "v1beta1" :>
+       CaptureMode "name" "approve" Text :>
+         QueryParam "$.xgafv" Xgafv :>
+           QueryParam "upload_protocol" Text :>
+             QueryParam "access_token" Text :>
+               QueryParam "uploadType" Text :>
+                 QueryParam "callback" Text :>
+                   QueryParam "alt" AltJSON :>
+                     ReqBody '[JSON] ApproveApprovalRequestMessage :>
+                       Post '[JSON] ApprovalRequest
+
+-- | Approves a request and returns the updated ApprovalRequest. Returns
+-- NOT_FOUND if the request does not exist. Returns FAILED_PRECONDITION if
+-- the request exists but is not in a pending state.
+--
+-- /See:/ 'organizationsApprovalRequestsApprove' smart constructor.
+data OrganizationsApprovalRequestsApprove =
+  OrganizationsApprovalRequestsApprove'
+    { _oaraXgafv          :: !(Maybe Xgafv)
+    , _oaraUploadProtocol :: !(Maybe Text)
+    , _oaraAccessToken    :: !(Maybe Text)
+    , _oaraUploadType     :: !(Maybe Text)
+    , _oaraPayload        :: !ApproveApprovalRequestMessage
+    , _oaraName           :: !Text
+    , _oaraCallback       :: !(Maybe Text)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'OrganizationsApprovalRequestsApprove' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'oaraXgafv'
+--
+-- * 'oaraUploadProtocol'
+--
+-- * 'oaraAccessToken'
+--
+-- * 'oaraUploadType'
+--
+-- * 'oaraPayload'
+--
+-- * 'oaraName'
+--
+-- * 'oaraCallback'
+organizationsApprovalRequestsApprove
+    :: ApproveApprovalRequestMessage -- ^ 'oaraPayload'
+    -> Text -- ^ 'oaraName'
+    -> OrganizationsApprovalRequestsApprove
+organizationsApprovalRequestsApprove pOaraPayload_ pOaraName_ =
+  OrganizationsApprovalRequestsApprove'
+    { _oaraXgafv = Nothing
+    , _oaraUploadProtocol = Nothing
+    , _oaraAccessToken = Nothing
+    , _oaraUploadType = Nothing
+    , _oaraPayload = pOaraPayload_
+    , _oaraName = pOaraName_
+    , _oaraCallback = Nothing
+    }
+
+
+-- | V1 error format.
+oaraXgafv :: Lens' OrganizationsApprovalRequestsApprove (Maybe Xgafv)
+oaraXgafv
+  = lens _oaraXgafv (\ s a -> s{_oaraXgafv = a})
+
+-- | Upload protocol for media (e.g. \"raw\", \"multipart\").
+oaraUploadProtocol :: Lens' OrganizationsApprovalRequestsApprove (Maybe Text)
+oaraUploadProtocol
+  = lens _oaraUploadProtocol
+      (\ s a -> s{_oaraUploadProtocol = a})
+
+-- | OAuth access token.
+oaraAccessToken :: Lens' OrganizationsApprovalRequestsApprove (Maybe Text)
+oaraAccessToken
+  = lens _oaraAccessToken
+      (\ s a -> s{_oaraAccessToken = a})
+
+-- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
+oaraUploadType :: Lens' OrganizationsApprovalRequestsApprove (Maybe Text)
+oaraUploadType
+  = lens _oaraUploadType
+      (\ s a -> s{_oaraUploadType = a})
+
+-- | Multipart request metadata.
+oaraPayload :: Lens' OrganizationsApprovalRequestsApprove ApproveApprovalRequestMessage
+oaraPayload
+  = lens _oaraPayload (\ s a -> s{_oaraPayload = a})
+
+-- | Name of the approval request to approve.
+oaraName :: Lens' OrganizationsApprovalRequestsApprove Text
+oaraName = lens _oaraName (\ s a -> s{_oaraName = a})
+
+-- | JSONP
+oaraCallback :: Lens' OrganizationsApprovalRequestsApprove (Maybe Text)
+oaraCallback
+  = lens _oaraCallback (\ s a -> s{_oaraCallback = a})
+
+instance GoogleRequest
+           OrganizationsApprovalRequestsApprove
+         where
+        type Rs OrganizationsApprovalRequestsApprove =
+             ApprovalRequest
+        type Scopes OrganizationsApprovalRequestsApprove =
+             '["https://www.googleapis.com/auth/cloud-platform"]
+        requestClient
+          OrganizationsApprovalRequestsApprove'{..}
+          = go _oaraName _oaraXgafv _oaraUploadProtocol
+              _oaraAccessToken
+              _oaraUploadType
+              _oaraCallback
+              (Just AltJSON)
+              _oaraPayload
+              accessApprovalService
+          where go
+                  = buildClient
+                      (Proxy ::
+                         Proxy OrganizationsApprovalRequestsApproveResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/AccessApproval/Organizations/ApprovalRequests/Dismiss.hs b/gen/Network/Google/Resource/AccessApproval/Organizations/ApprovalRequests/Dismiss.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/AccessApproval/Organizations/ApprovalRequests/Dismiss.hs
@@ -0,0 +1,176 @@
+{-# LANGUAGE DataKinds          #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE FlexibleInstances  #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+{-# LANGUAGE TypeOperators      #-}
+
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
+
+-- |
+-- Module      : Network.Google.Resource.AccessApproval.Organizations.ApprovalRequests.Dismiss
+-- Copyright   : (c) 2015-2016 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Dismisses a request. Returns the updated ApprovalRequest. NOTE: This
+-- does not deny access to the resource if another request has been made
+-- and approved. It is equivalent in effect to ignoring the request
+-- altogether. Returns NOT_FOUND if the request does not exist. Returns
+-- FAILED_PRECONDITION if the request exists but is not in a pending state.
+--
+-- /See:/ <https://cloud.google.com/access-approval/docs Access Approval API Reference> for @accessapproval.organizations.approvalRequests.dismiss@.
+module Network.Google.Resource.AccessApproval.Organizations.ApprovalRequests.Dismiss
+    (
+    -- * REST Resource
+      OrganizationsApprovalRequestsDismissResource
+
+    -- * Creating a Request
+    , organizationsApprovalRequestsDismiss
+    , OrganizationsApprovalRequestsDismiss
+
+    -- * Request Lenses
+    , oardXgafv
+    , oardUploadProtocol
+    , oardAccessToken
+    , oardUploadType
+    , oardPayload
+    , oardName
+    , oardCallback
+    ) where
+
+import           Network.Google.AccessApproval.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @accessapproval.organizations.approvalRequests.dismiss@ method which the
+-- 'OrganizationsApprovalRequestsDismiss' request conforms to.
+type OrganizationsApprovalRequestsDismissResource =
+     "v1beta1" :>
+       CaptureMode "name" "dismiss" Text :>
+         QueryParam "$.xgafv" Xgafv :>
+           QueryParam "upload_protocol" Text :>
+             QueryParam "access_token" Text :>
+               QueryParam "uploadType" Text :>
+                 QueryParam "callback" Text :>
+                   QueryParam "alt" AltJSON :>
+                     ReqBody '[JSON] DismissApprovalRequestMessage :>
+                       Post '[JSON] ApprovalRequest
+
+-- | Dismisses a request. Returns the updated ApprovalRequest. NOTE: This
+-- does not deny access to the resource if another request has been made
+-- and approved. It is equivalent in effect to ignoring the request
+-- altogether. Returns NOT_FOUND if the request does not exist. Returns
+-- FAILED_PRECONDITION if the request exists but is not in a pending state.
+--
+-- /See:/ 'organizationsApprovalRequestsDismiss' smart constructor.
+data OrganizationsApprovalRequestsDismiss =
+  OrganizationsApprovalRequestsDismiss'
+    { _oardXgafv          :: !(Maybe Xgafv)
+    , _oardUploadProtocol :: !(Maybe Text)
+    , _oardAccessToken    :: !(Maybe Text)
+    , _oardUploadType     :: !(Maybe Text)
+    , _oardPayload        :: !DismissApprovalRequestMessage
+    , _oardName           :: !Text
+    , _oardCallback       :: !(Maybe Text)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'OrganizationsApprovalRequestsDismiss' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'oardXgafv'
+--
+-- * 'oardUploadProtocol'
+--
+-- * 'oardAccessToken'
+--
+-- * 'oardUploadType'
+--
+-- * 'oardPayload'
+--
+-- * 'oardName'
+--
+-- * 'oardCallback'
+organizationsApprovalRequestsDismiss
+    :: DismissApprovalRequestMessage -- ^ 'oardPayload'
+    -> Text -- ^ 'oardName'
+    -> OrganizationsApprovalRequestsDismiss
+organizationsApprovalRequestsDismiss pOardPayload_ pOardName_ =
+  OrganizationsApprovalRequestsDismiss'
+    { _oardXgafv = Nothing
+    , _oardUploadProtocol = Nothing
+    , _oardAccessToken = Nothing
+    , _oardUploadType = Nothing
+    , _oardPayload = pOardPayload_
+    , _oardName = pOardName_
+    , _oardCallback = Nothing
+    }
+
+
+-- | V1 error format.
+oardXgafv :: Lens' OrganizationsApprovalRequestsDismiss (Maybe Xgafv)
+oardXgafv
+  = lens _oardXgafv (\ s a -> s{_oardXgafv = a})
+
+-- | Upload protocol for media (e.g. \"raw\", \"multipart\").
+oardUploadProtocol :: Lens' OrganizationsApprovalRequestsDismiss (Maybe Text)
+oardUploadProtocol
+  = lens _oardUploadProtocol
+      (\ s a -> s{_oardUploadProtocol = a})
+
+-- | OAuth access token.
+oardAccessToken :: Lens' OrganizationsApprovalRequestsDismiss (Maybe Text)
+oardAccessToken
+  = lens _oardAccessToken
+      (\ s a -> s{_oardAccessToken = a})
+
+-- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
+oardUploadType :: Lens' OrganizationsApprovalRequestsDismiss (Maybe Text)
+oardUploadType
+  = lens _oardUploadType
+      (\ s a -> s{_oardUploadType = a})
+
+-- | Multipart request metadata.
+oardPayload :: Lens' OrganizationsApprovalRequestsDismiss DismissApprovalRequestMessage
+oardPayload
+  = lens _oardPayload (\ s a -> s{_oardPayload = a})
+
+-- | Name of the ApprovalRequest to dismiss.
+oardName :: Lens' OrganizationsApprovalRequestsDismiss Text
+oardName = lens _oardName (\ s a -> s{_oardName = a})
+
+-- | JSONP
+oardCallback :: Lens' OrganizationsApprovalRequestsDismiss (Maybe Text)
+oardCallback
+  = lens _oardCallback (\ s a -> s{_oardCallback = a})
+
+instance GoogleRequest
+           OrganizationsApprovalRequestsDismiss
+         where
+        type Rs OrganizationsApprovalRequestsDismiss =
+             ApprovalRequest
+        type Scopes OrganizationsApprovalRequestsDismiss =
+             '["https://www.googleapis.com/auth/cloud-platform"]
+        requestClient
+          OrganizationsApprovalRequestsDismiss'{..}
+          = go _oardName _oardXgafv _oardUploadProtocol
+              _oardAccessToken
+              _oardUploadType
+              _oardCallback
+              (Just AltJSON)
+              _oardPayload
+              accessApprovalService
+          where go
+                  = buildClient
+                      (Proxy ::
+                         Proxy OrganizationsApprovalRequestsDismissResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/AccessApproval/Organizations/ApprovalRequests/Get.hs b/gen/Network/Google/Resource/AccessApproval/Organizations/ApprovalRequests/Get.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/AccessApproval/Organizations/ApprovalRequests/Get.hs
@@ -0,0 +1,156 @@
+{-# 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.AccessApproval.Organizations.ApprovalRequests.Get
+-- Copyright   : (c) 2015-2016 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Gets an approval request. Returns NOT_FOUND if the request does not
+-- exist.
+--
+-- /See:/ <https://cloud.google.com/access-approval/docs Access Approval API Reference> for @accessapproval.organizations.approvalRequests.get@.
+module Network.Google.Resource.AccessApproval.Organizations.ApprovalRequests.Get
+    (
+    -- * REST Resource
+      OrganizationsApprovalRequestsGetResource
+
+    -- * Creating a Request
+    , organizationsApprovalRequestsGet
+    , OrganizationsApprovalRequestsGet
+
+    -- * Request Lenses
+    , oargXgafv
+    , oargUploadProtocol
+    , oargAccessToken
+    , oargUploadType
+    , oargName
+    , oargCallback
+    ) where
+
+import           Network.Google.AccessApproval.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @accessapproval.organizations.approvalRequests.get@ method which the
+-- 'OrganizationsApprovalRequestsGet' request conforms to.
+type OrganizationsApprovalRequestsGetResource =
+     "v1beta1" :>
+       Capture "name" Text :>
+         QueryParam "$.xgafv" Xgafv :>
+           QueryParam "upload_protocol" Text :>
+             QueryParam "access_token" Text :>
+               QueryParam "uploadType" Text :>
+                 QueryParam "callback" Text :>
+                   QueryParam "alt" AltJSON :>
+                     Get '[JSON] ApprovalRequest
+
+-- | Gets an approval request. Returns NOT_FOUND if the request does not
+-- exist.
+--
+-- /See:/ 'organizationsApprovalRequestsGet' smart constructor.
+data OrganizationsApprovalRequestsGet =
+  OrganizationsApprovalRequestsGet'
+    { _oargXgafv          :: !(Maybe Xgafv)
+    , _oargUploadProtocol :: !(Maybe Text)
+    , _oargAccessToken    :: !(Maybe Text)
+    , _oargUploadType     :: !(Maybe Text)
+    , _oargName           :: !Text
+    , _oargCallback       :: !(Maybe Text)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'OrganizationsApprovalRequestsGet' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'oargXgafv'
+--
+-- * 'oargUploadProtocol'
+--
+-- * 'oargAccessToken'
+--
+-- * 'oargUploadType'
+--
+-- * 'oargName'
+--
+-- * 'oargCallback'
+organizationsApprovalRequestsGet
+    :: Text -- ^ 'oargName'
+    -> OrganizationsApprovalRequestsGet
+organizationsApprovalRequestsGet pOargName_ =
+  OrganizationsApprovalRequestsGet'
+    { _oargXgafv = Nothing
+    , _oargUploadProtocol = Nothing
+    , _oargAccessToken = Nothing
+    , _oargUploadType = Nothing
+    , _oargName = pOargName_
+    , _oargCallback = Nothing
+    }
+
+
+-- | V1 error format.
+oargXgafv :: Lens' OrganizationsApprovalRequestsGet (Maybe Xgafv)
+oargXgafv
+  = lens _oargXgafv (\ s a -> s{_oargXgafv = a})
+
+-- | Upload protocol for media (e.g. \"raw\", \"multipart\").
+oargUploadProtocol :: Lens' OrganizationsApprovalRequestsGet (Maybe Text)
+oargUploadProtocol
+  = lens _oargUploadProtocol
+      (\ s a -> s{_oargUploadProtocol = a})
+
+-- | OAuth access token.
+oargAccessToken :: Lens' OrganizationsApprovalRequestsGet (Maybe Text)
+oargAccessToken
+  = lens _oargAccessToken
+      (\ s a -> s{_oargAccessToken = a})
+
+-- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
+oargUploadType :: Lens' OrganizationsApprovalRequestsGet (Maybe Text)
+oargUploadType
+  = lens _oargUploadType
+      (\ s a -> s{_oargUploadType = a})
+
+-- | Name of the approval request to retrieve.
+oargName :: Lens' OrganizationsApprovalRequestsGet Text
+oargName = lens _oargName (\ s a -> s{_oargName = a})
+
+-- | JSONP
+oargCallback :: Lens' OrganizationsApprovalRequestsGet (Maybe Text)
+oargCallback
+  = lens _oargCallback (\ s a -> s{_oargCallback = a})
+
+instance GoogleRequest
+           OrganizationsApprovalRequestsGet
+         where
+        type Rs OrganizationsApprovalRequestsGet =
+             ApprovalRequest
+        type Scopes OrganizationsApprovalRequestsGet =
+             '["https://www.googleapis.com/auth/cloud-platform"]
+        requestClient OrganizationsApprovalRequestsGet'{..}
+          = go _oargName _oargXgafv _oargUploadProtocol
+              _oargAccessToken
+              _oargUploadType
+              _oargCallback
+              (Just AltJSON)
+              accessApprovalService
+          where go
+                  = buildClient
+                      (Proxy ::
+                         Proxy OrganizationsApprovalRequestsGetResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/AccessApproval/Organizations/ApprovalRequests/List.hs b/gen/Network/Google/Resource/AccessApproval/Organizations/ApprovalRequests/List.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/AccessApproval/Organizations/ApprovalRequests/List.hs
@@ -0,0 +1,206 @@
+{-# 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.AccessApproval.Organizations.ApprovalRequests.List
+-- Copyright   : (c) 2015-2016 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Lists approval requests associated with a project, folder, or
+-- organization. Approval requests can be filtered by state (pending,
+-- active, dismissed). The order is reverse chronological.
+--
+-- /See:/ <https://cloud.google.com/access-approval/docs Access Approval API Reference> for @accessapproval.organizations.approvalRequests.list@.
+module Network.Google.Resource.AccessApproval.Organizations.ApprovalRequests.List
+    (
+    -- * REST Resource
+      OrganizationsApprovalRequestsListResource
+
+    -- * Creating a Request
+    , organizationsApprovalRequestsList
+    , OrganizationsApprovalRequestsList
+
+    -- * Request Lenses
+    , oarlParent
+    , oarlXgafv
+    , oarlUploadProtocol
+    , oarlAccessToken
+    , oarlUploadType
+    , oarlFilter
+    , oarlPageToken
+    , oarlPageSize
+    , oarlCallback
+    ) where
+
+import           Network.Google.AccessApproval.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @accessapproval.organizations.approvalRequests.list@ method which the
+-- 'OrganizationsApprovalRequestsList' request conforms to.
+type OrganizationsApprovalRequestsListResource =
+     "v1beta1" :>
+       Capture "parent" Text :>
+         "approvalRequests" :>
+           QueryParam "$.xgafv" Xgafv :>
+             QueryParam "upload_protocol" Text :>
+               QueryParam "access_token" Text :>
+                 QueryParam "uploadType" Text :>
+                   QueryParam "filter" Text :>
+                     QueryParam "pageToken" Text :>
+                       QueryParam "pageSize" (Textual Int32) :>
+                         QueryParam "callback" Text :>
+                           QueryParam "alt" AltJSON :>
+                             Get '[JSON] ListApprovalRequestsResponse
+
+-- | Lists approval requests associated with a project, folder, or
+-- organization. Approval requests can be filtered by state (pending,
+-- active, dismissed). The order is reverse chronological.
+--
+-- /See:/ 'organizationsApprovalRequestsList' smart constructor.
+data OrganizationsApprovalRequestsList =
+  OrganizationsApprovalRequestsList'
+    { _oarlParent         :: !Text
+    , _oarlXgafv          :: !(Maybe Xgafv)
+    , _oarlUploadProtocol :: !(Maybe Text)
+    , _oarlAccessToken    :: !(Maybe Text)
+    , _oarlUploadType     :: !(Maybe Text)
+    , _oarlFilter         :: !(Maybe Text)
+    , _oarlPageToken      :: !(Maybe Text)
+    , _oarlPageSize       :: !(Maybe (Textual Int32))
+    , _oarlCallback       :: !(Maybe Text)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'OrganizationsApprovalRequestsList' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'oarlParent'
+--
+-- * 'oarlXgafv'
+--
+-- * 'oarlUploadProtocol'
+--
+-- * 'oarlAccessToken'
+--
+-- * 'oarlUploadType'
+--
+-- * 'oarlFilter'
+--
+-- * 'oarlPageToken'
+--
+-- * 'oarlPageSize'
+--
+-- * 'oarlCallback'
+organizationsApprovalRequestsList
+    :: Text -- ^ 'oarlParent'
+    -> OrganizationsApprovalRequestsList
+organizationsApprovalRequestsList pOarlParent_ =
+  OrganizationsApprovalRequestsList'
+    { _oarlParent = pOarlParent_
+    , _oarlXgafv = Nothing
+    , _oarlUploadProtocol = Nothing
+    , _oarlAccessToken = Nothing
+    , _oarlUploadType = Nothing
+    , _oarlFilter = Nothing
+    , _oarlPageToken = Nothing
+    , _oarlPageSize = Nothing
+    , _oarlCallback = Nothing
+    }
+
+
+-- | The parent resource. This may be \"projects\/{project_id}\",
+-- \"folders\/{folder_id}\", or \"organizations\/{organization_id}\".
+oarlParent :: Lens' OrganizationsApprovalRequestsList Text
+oarlParent
+  = lens _oarlParent (\ s a -> s{_oarlParent = a})
+
+-- | V1 error format.
+oarlXgafv :: Lens' OrganizationsApprovalRequestsList (Maybe Xgafv)
+oarlXgafv
+  = lens _oarlXgafv (\ s a -> s{_oarlXgafv = a})
+
+-- | Upload protocol for media (e.g. \"raw\", \"multipart\").
+oarlUploadProtocol :: Lens' OrganizationsApprovalRequestsList (Maybe Text)
+oarlUploadProtocol
+  = lens _oarlUploadProtocol
+      (\ s a -> s{_oarlUploadProtocol = a})
+
+-- | OAuth access token.
+oarlAccessToken :: Lens' OrganizationsApprovalRequestsList (Maybe Text)
+oarlAccessToken
+  = lens _oarlAccessToken
+      (\ s a -> s{_oarlAccessToken = a})
+
+-- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
+oarlUploadType :: Lens' OrganizationsApprovalRequestsList (Maybe Text)
+oarlUploadType
+  = lens _oarlUploadType
+      (\ s a -> s{_oarlUploadType = a})
+
+-- | A filter on the type of approval requests to retrieve. Must be one of
+-- the following values:
+--
+-- 1.  [not set]: Requests that are pending or have active approvals.
+-- 2.  ALL: All requests.
+-- 3.  PENDING: Only pending requests.
+-- 4.  ACTIVE: Only active (i.e. currently approved) requests.
+-- 5.  DISMISSED: Only dismissed (including expired) requests.
+oarlFilter :: Lens' OrganizationsApprovalRequestsList (Maybe Text)
+oarlFilter
+  = lens _oarlFilter (\ s a -> s{_oarlFilter = a})
+
+-- | A token identifying the page of results to return.
+oarlPageToken :: Lens' OrganizationsApprovalRequestsList (Maybe Text)
+oarlPageToken
+  = lens _oarlPageToken
+      (\ s a -> s{_oarlPageToken = a})
+
+-- | Requested page size.
+oarlPageSize :: Lens' OrganizationsApprovalRequestsList (Maybe Int32)
+oarlPageSize
+  = lens _oarlPageSize (\ s a -> s{_oarlPageSize = a})
+      . mapping _Coerce
+
+-- | JSONP
+oarlCallback :: Lens' OrganizationsApprovalRequestsList (Maybe Text)
+oarlCallback
+  = lens _oarlCallback (\ s a -> s{_oarlCallback = a})
+
+instance GoogleRequest
+           OrganizationsApprovalRequestsList
+         where
+        type Rs OrganizationsApprovalRequestsList =
+             ListApprovalRequestsResponse
+        type Scopes OrganizationsApprovalRequestsList =
+             '["https://www.googleapis.com/auth/cloud-platform"]
+        requestClient OrganizationsApprovalRequestsList'{..}
+          = go _oarlParent _oarlXgafv _oarlUploadProtocol
+              _oarlAccessToken
+              _oarlUploadType
+              _oarlFilter
+              _oarlPageToken
+              _oarlPageSize
+              _oarlCallback
+              (Just AltJSON)
+              accessApprovalService
+          where go
+                  = buildClient
+                      (Proxy ::
+                         Proxy OrganizationsApprovalRequestsListResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/AccessApproval/Organizations/GetAccessApprovalSettings.hs b/gen/Network/Google/Resource/AccessApproval/Organizations/GetAccessApprovalSettings.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/AccessApproval/Organizations/GetAccessApprovalSettings.hs
@@ -0,0 +1,157 @@
+{-# 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.AccessApproval.Organizations.GetAccessApprovalSettings
+-- Copyright   : (c) 2015-2016 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Gets the settings associated with a project, folder, or organization.
+--
+-- /See:/ <https://cloud.google.com/access-approval/docs Access Approval API Reference> for @accessapproval.organizations.getAccessApprovalSettings@.
+module Network.Google.Resource.AccessApproval.Organizations.GetAccessApprovalSettings
+    (
+    -- * REST Resource
+      OrganizationsGetAccessApprovalSettingsResource
+
+    -- * Creating a Request
+    , organizationsGetAccessApprovalSettings
+    , OrganizationsGetAccessApprovalSettings
+
+    -- * Request Lenses
+    , ogaasXgafv
+    , ogaasUploadProtocol
+    , ogaasAccessToken
+    , ogaasUploadType
+    , ogaasName
+    , ogaasCallback
+    ) where
+
+import           Network.Google.AccessApproval.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @accessapproval.organizations.getAccessApprovalSettings@ method which the
+-- 'OrganizationsGetAccessApprovalSettings' request conforms to.
+type OrganizationsGetAccessApprovalSettingsResource =
+     "v1beta1" :>
+       Capture "name" Text :>
+         QueryParam "$.xgafv" Xgafv :>
+           QueryParam "upload_protocol" Text :>
+             QueryParam "access_token" Text :>
+               QueryParam "uploadType" Text :>
+                 QueryParam "callback" Text :>
+                   QueryParam "alt" AltJSON :>
+                     Get '[JSON] AccessApprovalSettings
+
+-- | Gets the settings associated with a project, folder, or organization.
+--
+-- /See:/ 'organizationsGetAccessApprovalSettings' smart constructor.
+data OrganizationsGetAccessApprovalSettings =
+  OrganizationsGetAccessApprovalSettings'
+    { _ogaasXgafv          :: !(Maybe Xgafv)
+    , _ogaasUploadProtocol :: !(Maybe Text)
+    , _ogaasAccessToken    :: !(Maybe Text)
+    , _ogaasUploadType     :: !(Maybe Text)
+    , _ogaasName           :: !Text
+    , _ogaasCallback       :: !(Maybe Text)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'OrganizationsGetAccessApprovalSettings' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'ogaasXgafv'
+--
+-- * 'ogaasUploadProtocol'
+--
+-- * 'ogaasAccessToken'
+--
+-- * 'ogaasUploadType'
+--
+-- * 'ogaasName'
+--
+-- * 'ogaasCallback'
+organizationsGetAccessApprovalSettings
+    :: Text -- ^ 'ogaasName'
+    -> OrganizationsGetAccessApprovalSettings
+organizationsGetAccessApprovalSettings pOgaasName_ =
+  OrganizationsGetAccessApprovalSettings'
+    { _ogaasXgafv = Nothing
+    , _ogaasUploadProtocol = Nothing
+    , _ogaasAccessToken = Nothing
+    , _ogaasUploadType = Nothing
+    , _ogaasName = pOgaasName_
+    , _ogaasCallback = Nothing
+    }
+
+
+-- | V1 error format.
+ogaasXgafv :: Lens' OrganizationsGetAccessApprovalSettings (Maybe Xgafv)
+ogaasXgafv
+  = lens _ogaasXgafv (\ s a -> s{_ogaasXgafv = a})
+
+-- | Upload protocol for media (e.g. \"raw\", \"multipart\").
+ogaasUploadProtocol :: Lens' OrganizationsGetAccessApprovalSettings (Maybe Text)
+ogaasUploadProtocol
+  = lens _ogaasUploadProtocol
+      (\ s a -> s{_ogaasUploadProtocol = a})
+
+-- | OAuth access token.
+ogaasAccessToken :: Lens' OrganizationsGetAccessApprovalSettings (Maybe Text)
+ogaasAccessToken
+  = lens _ogaasAccessToken
+      (\ s a -> s{_ogaasAccessToken = a})
+
+-- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
+ogaasUploadType :: Lens' OrganizationsGetAccessApprovalSettings (Maybe Text)
+ogaasUploadType
+  = lens _ogaasUploadType
+      (\ s a -> s{_ogaasUploadType = a})
+
+-- | Name of the AccessApprovalSettings to retrieve.
+ogaasName :: Lens' OrganizationsGetAccessApprovalSettings Text
+ogaasName
+  = lens _ogaasName (\ s a -> s{_ogaasName = a})
+
+-- | JSONP
+ogaasCallback :: Lens' OrganizationsGetAccessApprovalSettings (Maybe Text)
+ogaasCallback
+  = lens _ogaasCallback
+      (\ s a -> s{_ogaasCallback = a})
+
+instance GoogleRequest
+           OrganizationsGetAccessApprovalSettings
+         where
+        type Rs OrganizationsGetAccessApprovalSettings =
+             AccessApprovalSettings
+        type Scopes OrganizationsGetAccessApprovalSettings =
+             '["https://www.googleapis.com/auth/cloud-platform"]
+        requestClient
+          OrganizationsGetAccessApprovalSettings'{..}
+          = go _ogaasName _ogaasXgafv _ogaasUploadProtocol
+              _ogaasAccessToken
+              _ogaasUploadType
+              _ogaasCallback
+              (Just AltJSON)
+              accessApprovalService
+          where go
+                  = buildClient
+                      (Proxy ::
+                         Proxy OrganizationsGetAccessApprovalSettingsResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/AccessApproval/Organizations/UpdateAccessApprovalSettings.hs b/gen/Network/Google/Resource/AccessApproval/Organizations/UpdateAccessApprovalSettings.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/AccessApproval/Organizations/UpdateAccessApprovalSettings.hs
@@ -0,0 +1,177 @@
+{-# 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.AccessApproval.Organizations.UpdateAccessApprovalSettings
+-- Copyright   : (c) 2015-2016 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Updates the settings associated with a project, folder, or organization.
+-- Completely replaces the existing settings.
+--
+-- /See:/ <https://cloud.google.com/access-approval/docs Access Approval API Reference> for @accessapproval.organizations.updateAccessApprovalSettings@.
+module Network.Google.Resource.AccessApproval.Organizations.UpdateAccessApprovalSettings
+    (
+    -- * REST Resource
+      OrganizationsUpdateAccessApprovalSettingsResource
+
+    -- * Creating a Request
+    , organizationsUpdateAccessApprovalSettings
+    , OrganizationsUpdateAccessApprovalSettings
+
+    -- * Request Lenses
+    , ouaasXgafv
+    , ouaasUploadProtocol
+    , ouaasAccessToken
+    , ouaasUploadType
+    , ouaasPayload
+    , ouaasName
+    , ouaasCallback
+    ) where
+
+import           Network.Google.AccessApproval.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @accessapproval.organizations.updateAccessApprovalSettings@ method which the
+-- 'OrganizationsUpdateAccessApprovalSettings' request conforms to.
+type OrganizationsUpdateAccessApprovalSettingsResource
+     =
+     "v1beta1" :>
+       Capture "name" Text :>
+         QueryParam "$.xgafv" Xgafv :>
+           QueryParam "upload_protocol" Text :>
+             QueryParam "access_token" Text :>
+               QueryParam "uploadType" Text :>
+                 QueryParam "callback" Text :>
+                   QueryParam "alt" AltJSON :>
+                     ReqBody '[JSON] AccessApprovalSettings :>
+                       Patch '[JSON] AccessApprovalSettings
+
+-- | Updates the settings associated with a project, folder, or organization.
+-- Completely replaces the existing settings.
+--
+-- /See:/ 'organizationsUpdateAccessApprovalSettings' smart constructor.
+data OrganizationsUpdateAccessApprovalSettings =
+  OrganizationsUpdateAccessApprovalSettings'
+    { _ouaasXgafv          :: !(Maybe Xgafv)
+    , _ouaasUploadProtocol :: !(Maybe Text)
+    , _ouaasAccessToken    :: !(Maybe Text)
+    , _ouaasUploadType     :: !(Maybe Text)
+    , _ouaasPayload        :: !AccessApprovalSettings
+    , _ouaasName           :: !Text
+    , _ouaasCallback       :: !(Maybe Text)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'OrganizationsUpdateAccessApprovalSettings' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'ouaasXgafv'
+--
+-- * 'ouaasUploadProtocol'
+--
+-- * 'ouaasAccessToken'
+--
+-- * 'ouaasUploadType'
+--
+-- * 'ouaasPayload'
+--
+-- * 'ouaasName'
+--
+-- * 'ouaasCallback'
+organizationsUpdateAccessApprovalSettings
+    :: AccessApprovalSettings -- ^ 'ouaasPayload'
+    -> Text -- ^ 'ouaasName'
+    -> OrganizationsUpdateAccessApprovalSettings
+organizationsUpdateAccessApprovalSettings pOuaasPayload_ pOuaasName_ =
+  OrganizationsUpdateAccessApprovalSettings'
+    { _ouaasXgafv = Nothing
+    , _ouaasUploadProtocol = Nothing
+    , _ouaasAccessToken = Nothing
+    , _ouaasUploadType = Nothing
+    , _ouaasPayload = pOuaasPayload_
+    , _ouaasName = pOuaasName_
+    , _ouaasCallback = Nothing
+    }
+
+
+-- | V1 error format.
+ouaasXgafv :: Lens' OrganizationsUpdateAccessApprovalSettings (Maybe Xgafv)
+ouaasXgafv
+  = lens _ouaasXgafv (\ s a -> s{_ouaasXgafv = a})
+
+-- | Upload protocol for media (e.g. \"raw\", \"multipart\").
+ouaasUploadProtocol :: Lens' OrganizationsUpdateAccessApprovalSettings (Maybe Text)
+ouaasUploadProtocol
+  = lens _ouaasUploadProtocol
+      (\ s a -> s{_ouaasUploadProtocol = a})
+
+-- | OAuth access token.
+ouaasAccessToken :: Lens' OrganizationsUpdateAccessApprovalSettings (Maybe Text)
+ouaasAccessToken
+  = lens _ouaasAccessToken
+      (\ s a -> s{_ouaasAccessToken = a})
+
+-- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
+ouaasUploadType :: Lens' OrganizationsUpdateAccessApprovalSettings (Maybe Text)
+ouaasUploadType
+  = lens _ouaasUploadType
+      (\ s a -> s{_ouaasUploadType = a})
+
+-- | Multipart request metadata.
+ouaasPayload :: Lens' OrganizationsUpdateAccessApprovalSettings AccessApprovalSettings
+ouaasPayload
+  = lens _ouaasPayload (\ s a -> s{_ouaasPayload = a})
+
+-- | The resource name of the settings. Format is one of:
+-- \"projects\/{project_id}\/accessApprovalSettings\"
+-- \"folders\/{folder_id}\/accessApprovalSettings\"
+-- \"organizations\/{organization_id}\/accessApprovalSettings\"
+ouaasName :: Lens' OrganizationsUpdateAccessApprovalSettings Text
+ouaasName
+  = lens _ouaasName (\ s a -> s{_ouaasName = a})
+
+-- | JSONP
+ouaasCallback :: Lens' OrganizationsUpdateAccessApprovalSettings (Maybe Text)
+ouaasCallback
+  = lens _ouaasCallback
+      (\ s a -> s{_ouaasCallback = a})
+
+instance GoogleRequest
+           OrganizationsUpdateAccessApprovalSettings
+         where
+        type Rs OrganizationsUpdateAccessApprovalSettings =
+             AccessApprovalSettings
+        type Scopes OrganizationsUpdateAccessApprovalSettings
+             = '["https://www.googleapis.com/auth/cloud-platform"]
+        requestClient
+          OrganizationsUpdateAccessApprovalSettings'{..}
+          = go _ouaasName _ouaasXgafv _ouaasUploadProtocol
+              _ouaasAccessToken
+              _ouaasUploadType
+              _ouaasCallback
+              (Just AltJSON)
+              _ouaasPayload
+              accessApprovalService
+          where go
+                  = buildClient
+                      (Proxy ::
+                         Proxy
+                           OrganizationsUpdateAccessApprovalSettingsResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/AccessApproval/Projects/ApprovalRequests/Approve.hs b/gen/Network/Google/Resource/AccessApproval/Projects/ApprovalRequests/Approve.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/AccessApproval/Projects/ApprovalRequests/Approve.hs
@@ -0,0 +1,171 @@
+{-# 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.AccessApproval.Projects.ApprovalRequests.Approve
+-- Copyright   : (c) 2015-2016 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Approves a request and returns the updated ApprovalRequest. Returns
+-- NOT_FOUND if the request does not exist. Returns FAILED_PRECONDITION if
+-- the request exists but is not in a pending state.
+--
+-- /See:/ <https://cloud.google.com/access-approval/docs Access Approval API Reference> for @accessapproval.projects.approvalRequests.approve@.
+module Network.Google.Resource.AccessApproval.Projects.ApprovalRequests.Approve
+    (
+    -- * REST Resource
+      ProjectsApprovalRequestsApproveResource
+
+    -- * Creating a Request
+    , projectsApprovalRequestsApprove
+    , ProjectsApprovalRequestsApprove
+
+    -- * Request Lenses
+    , paraXgafv
+    , paraUploadProtocol
+    , paraAccessToken
+    , paraUploadType
+    , paraPayload
+    , paraName
+    , paraCallback
+    ) where
+
+import           Network.Google.AccessApproval.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @accessapproval.projects.approvalRequests.approve@ method which the
+-- 'ProjectsApprovalRequestsApprove' request conforms to.
+type ProjectsApprovalRequestsApproveResource =
+     "v1beta1" :>
+       CaptureMode "name" "approve" Text :>
+         QueryParam "$.xgafv" Xgafv :>
+           QueryParam "upload_protocol" Text :>
+             QueryParam "access_token" Text :>
+               QueryParam "uploadType" Text :>
+                 QueryParam "callback" Text :>
+                   QueryParam "alt" AltJSON :>
+                     ReqBody '[JSON] ApproveApprovalRequestMessage :>
+                       Post '[JSON] ApprovalRequest
+
+-- | Approves a request and returns the updated ApprovalRequest. Returns
+-- NOT_FOUND if the request does not exist. Returns FAILED_PRECONDITION if
+-- the request exists but is not in a pending state.
+--
+-- /See:/ 'projectsApprovalRequestsApprove' smart constructor.
+data ProjectsApprovalRequestsApprove =
+  ProjectsApprovalRequestsApprove'
+    { _paraXgafv          :: !(Maybe Xgafv)
+    , _paraUploadProtocol :: !(Maybe Text)
+    , _paraAccessToken    :: !(Maybe Text)
+    , _paraUploadType     :: !(Maybe Text)
+    , _paraPayload        :: !ApproveApprovalRequestMessage
+    , _paraName           :: !Text
+    , _paraCallback       :: !(Maybe Text)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'ProjectsApprovalRequestsApprove' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'paraXgafv'
+--
+-- * 'paraUploadProtocol'
+--
+-- * 'paraAccessToken'
+--
+-- * 'paraUploadType'
+--
+-- * 'paraPayload'
+--
+-- * 'paraName'
+--
+-- * 'paraCallback'
+projectsApprovalRequestsApprove
+    :: ApproveApprovalRequestMessage -- ^ 'paraPayload'
+    -> Text -- ^ 'paraName'
+    -> ProjectsApprovalRequestsApprove
+projectsApprovalRequestsApprove pParaPayload_ pParaName_ =
+  ProjectsApprovalRequestsApprove'
+    { _paraXgafv = Nothing
+    , _paraUploadProtocol = Nothing
+    , _paraAccessToken = Nothing
+    , _paraUploadType = Nothing
+    , _paraPayload = pParaPayload_
+    , _paraName = pParaName_
+    , _paraCallback = Nothing
+    }
+
+
+-- | V1 error format.
+paraXgafv :: Lens' ProjectsApprovalRequestsApprove (Maybe Xgafv)
+paraXgafv
+  = lens _paraXgafv (\ s a -> s{_paraXgafv = a})
+
+-- | Upload protocol for media (e.g. \"raw\", \"multipart\").
+paraUploadProtocol :: Lens' ProjectsApprovalRequestsApprove (Maybe Text)
+paraUploadProtocol
+  = lens _paraUploadProtocol
+      (\ s a -> s{_paraUploadProtocol = a})
+
+-- | OAuth access token.
+paraAccessToken :: Lens' ProjectsApprovalRequestsApprove (Maybe Text)
+paraAccessToken
+  = lens _paraAccessToken
+      (\ s a -> s{_paraAccessToken = a})
+
+-- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
+paraUploadType :: Lens' ProjectsApprovalRequestsApprove (Maybe Text)
+paraUploadType
+  = lens _paraUploadType
+      (\ s a -> s{_paraUploadType = a})
+
+-- | Multipart request metadata.
+paraPayload :: Lens' ProjectsApprovalRequestsApprove ApproveApprovalRequestMessage
+paraPayload
+  = lens _paraPayload (\ s a -> s{_paraPayload = a})
+
+-- | Name of the approval request to approve.
+paraName :: Lens' ProjectsApprovalRequestsApprove Text
+paraName = lens _paraName (\ s a -> s{_paraName = a})
+
+-- | JSONP
+paraCallback :: Lens' ProjectsApprovalRequestsApprove (Maybe Text)
+paraCallback
+  = lens _paraCallback (\ s a -> s{_paraCallback = a})
+
+instance GoogleRequest
+           ProjectsApprovalRequestsApprove
+         where
+        type Rs ProjectsApprovalRequestsApprove =
+             ApprovalRequest
+        type Scopes ProjectsApprovalRequestsApprove =
+             '["https://www.googleapis.com/auth/cloud-platform"]
+        requestClient ProjectsApprovalRequestsApprove'{..}
+          = go _paraName _paraXgafv _paraUploadProtocol
+              _paraAccessToken
+              _paraUploadType
+              _paraCallback
+              (Just AltJSON)
+              _paraPayload
+              accessApprovalService
+          where go
+                  = buildClient
+                      (Proxy ::
+                         Proxy ProjectsApprovalRequestsApproveResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/AccessApproval/Projects/ApprovalRequests/Dismiss.hs b/gen/Network/Google/Resource/AccessApproval/Projects/ApprovalRequests/Dismiss.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/AccessApproval/Projects/ApprovalRequests/Dismiss.hs
@@ -0,0 +1,175 @@
+{-# 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.AccessApproval.Projects.ApprovalRequests.Dismiss
+-- Copyright   : (c) 2015-2016 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Dismisses a request. Returns the updated ApprovalRequest. NOTE: This
+-- does not deny access to the resource if another request has been made
+-- and approved. It is equivalent in effect to ignoring the request
+-- altogether. Returns NOT_FOUND if the request does not exist. Returns
+-- FAILED_PRECONDITION if the request exists but is not in a pending state.
+--
+-- /See:/ <https://cloud.google.com/access-approval/docs Access Approval API Reference> for @accessapproval.projects.approvalRequests.dismiss@.
+module Network.Google.Resource.AccessApproval.Projects.ApprovalRequests.Dismiss
+    (
+    -- * REST Resource
+      ProjectsApprovalRequestsDismissResource
+
+    -- * Creating a Request
+    , projectsApprovalRequestsDismiss
+    , ProjectsApprovalRequestsDismiss
+
+    -- * Request Lenses
+    , pardXgafv
+    , pardUploadProtocol
+    , pardAccessToken
+    , pardUploadType
+    , pardPayload
+    , pardName
+    , pardCallback
+    ) where
+
+import           Network.Google.AccessApproval.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @accessapproval.projects.approvalRequests.dismiss@ method which the
+-- 'ProjectsApprovalRequestsDismiss' request conforms to.
+type ProjectsApprovalRequestsDismissResource =
+     "v1beta1" :>
+       CaptureMode "name" "dismiss" Text :>
+         QueryParam "$.xgafv" Xgafv :>
+           QueryParam "upload_protocol" Text :>
+             QueryParam "access_token" Text :>
+               QueryParam "uploadType" Text :>
+                 QueryParam "callback" Text :>
+                   QueryParam "alt" AltJSON :>
+                     ReqBody '[JSON] DismissApprovalRequestMessage :>
+                       Post '[JSON] ApprovalRequest
+
+-- | Dismisses a request. Returns the updated ApprovalRequest. NOTE: This
+-- does not deny access to the resource if another request has been made
+-- and approved. It is equivalent in effect to ignoring the request
+-- altogether. Returns NOT_FOUND if the request does not exist. Returns
+-- FAILED_PRECONDITION if the request exists but is not in a pending state.
+--
+-- /See:/ 'projectsApprovalRequestsDismiss' smart constructor.
+data ProjectsApprovalRequestsDismiss =
+  ProjectsApprovalRequestsDismiss'
+    { _pardXgafv          :: !(Maybe Xgafv)
+    , _pardUploadProtocol :: !(Maybe Text)
+    , _pardAccessToken    :: !(Maybe Text)
+    , _pardUploadType     :: !(Maybe Text)
+    , _pardPayload        :: !DismissApprovalRequestMessage
+    , _pardName           :: !Text
+    , _pardCallback       :: !(Maybe Text)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'ProjectsApprovalRequestsDismiss' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'pardXgafv'
+--
+-- * 'pardUploadProtocol'
+--
+-- * 'pardAccessToken'
+--
+-- * 'pardUploadType'
+--
+-- * 'pardPayload'
+--
+-- * 'pardName'
+--
+-- * 'pardCallback'
+projectsApprovalRequestsDismiss
+    :: DismissApprovalRequestMessage -- ^ 'pardPayload'
+    -> Text -- ^ 'pardName'
+    -> ProjectsApprovalRequestsDismiss
+projectsApprovalRequestsDismiss pPardPayload_ pPardName_ =
+  ProjectsApprovalRequestsDismiss'
+    { _pardXgafv = Nothing
+    , _pardUploadProtocol = Nothing
+    , _pardAccessToken = Nothing
+    , _pardUploadType = Nothing
+    , _pardPayload = pPardPayload_
+    , _pardName = pPardName_
+    , _pardCallback = Nothing
+    }
+
+
+-- | V1 error format.
+pardXgafv :: Lens' ProjectsApprovalRequestsDismiss (Maybe Xgafv)
+pardXgafv
+  = lens _pardXgafv (\ s a -> s{_pardXgafv = a})
+
+-- | Upload protocol for media (e.g. \"raw\", \"multipart\").
+pardUploadProtocol :: Lens' ProjectsApprovalRequestsDismiss (Maybe Text)
+pardUploadProtocol
+  = lens _pardUploadProtocol
+      (\ s a -> s{_pardUploadProtocol = a})
+
+-- | OAuth access token.
+pardAccessToken :: Lens' ProjectsApprovalRequestsDismiss (Maybe Text)
+pardAccessToken
+  = lens _pardAccessToken
+      (\ s a -> s{_pardAccessToken = a})
+
+-- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
+pardUploadType :: Lens' ProjectsApprovalRequestsDismiss (Maybe Text)
+pardUploadType
+  = lens _pardUploadType
+      (\ s a -> s{_pardUploadType = a})
+
+-- | Multipart request metadata.
+pardPayload :: Lens' ProjectsApprovalRequestsDismiss DismissApprovalRequestMessage
+pardPayload
+  = lens _pardPayload (\ s a -> s{_pardPayload = a})
+
+-- | Name of the ApprovalRequest to dismiss.
+pardName :: Lens' ProjectsApprovalRequestsDismiss Text
+pardName = lens _pardName (\ s a -> s{_pardName = a})
+
+-- | JSONP
+pardCallback :: Lens' ProjectsApprovalRequestsDismiss (Maybe Text)
+pardCallback
+  = lens _pardCallback (\ s a -> s{_pardCallback = a})
+
+instance GoogleRequest
+           ProjectsApprovalRequestsDismiss
+         where
+        type Rs ProjectsApprovalRequestsDismiss =
+             ApprovalRequest
+        type Scopes ProjectsApprovalRequestsDismiss =
+             '["https://www.googleapis.com/auth/cloud-platform"]
+        requestClient ProjectsApprovalRequestsDismiss'{..}
+          = go _pardName _pardXgafv _pardUploadProtocol
+              _pardAccessToken
+              _pardUploadType
+              _pardCallback
+              (Just AltJSON)
+              _pardPayload
+              accessApprovalService
+          where go
+                  = buildClient
+                      (Proxy ::
+                         Proxy ProjectsApprovalRequestsDismissResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/AccessApproval/Projects/ApprovalRequests/Get.hs b/gen/Network/Google/Resource/AccessApproval/Projects/ApprovalRequests/Get.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/AccessApproval/Projects/ApprovalRequests/Get.hs
@@ -0,0 +1,153 @@
+{-# 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.AccessApproval.Projects.ApprovalRequests.Get
+-- Copyright   : (c) 2015-2016 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Gets an approval request. Returns NOT_FOUND if the request does not
+-- exist.
+--
+-- /See:/ <https://cloud.google.com/access-approval/docs Access Approval API Reference> for @accessapproval.projects.approvalRequests.get@.
+module Network.Google.Resource.AccessApproval.Projects.ApprovalRequests.Get
+    (
+    -- * REST Resource
+      ProjectsApprovalRequestsGetResource
+
+    -- * Creating a Request
+    , projectsApprovalRequestsGet
+    , ProjectsApprovalRequestsGet
+
+    -- * Request Lenses
+    , pargXgafv
+    , pargUploadProtocol
+    , pargAccessToken
+    , pargUploadType
+    , pargName
+    , pargCallback
+    ) where
+
+import           Network.Google.AccessApproval.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @accessapproval.projects.approvalRequests.get@ method which the
+-- 'ProjectsApprovalRequestsGet' request conforms to.
+type ProjectsApprovalRequestsGetResource =
+     "v1beta1" :>
+       Capture "name" Text :>
+         QueryParam "$.xgafv" Xgafv :>
+           QueryParam "upload_protocol" Text :>
+             QueryParam "access_token" Text :>
+               QueryParam "uploadType" Text :>
+                 QueryParam "callback" Text :>
+                   QueryParam "alt" AltJSON :>
+                     Get '[JSON] ApprovalRequest
+
+-- | Gets an approval request. Returns NOT_FOUND if the request does not
+-- exist.
+--
+-- /See:/ 'projectsApprovalRequestsGet' smart constructor.
+data ProjectsApprovalRequestsGet =
+  ProjectsApprovalRequestsGet'
+    { _pargXgafv          :: !(Maybe Xgafv)
+    , _pargUploadProtocol :: !(Maybe Text)
+    , _pargAccessToken    :: !(Maybe Text)
+    , _pargUploadType     :: !(Maybe Text)
+    , _pargName           :: !Text
+    , _pargCallback       :: !(Maybe Text)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'ProjectsApprovalRequestsGet' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'pargXgafv'
+--
+-- * 'pargUploadProtocol'
+--
+-- * 'pargAccessToken'
+--
+-- * 'pargUploadType'
+--
+-- * 'pargName'
+--
+-- * 'pargCallback'
+projectsApprovalRequestsGet
+    :: Text -- ^ 'pargName'
+    -> ProjectsApprovalRequestsGet
+projectsApprovalRequestsGet pPargName_ =
+  ProjectsApprovalRequestsGet'
+    { _pargXgafv = Nothing
+    , _pargUploadProtocol = Nothing
+    , _pargAccessToken = Nothing
+    , _pargUploadType = Nothing
+    , _pargName = pPargName_
+    , _pargCallback = Nothing
+    }
+
+
+-- | V1 error format.
+pargXgafv :: Lens' ProjectsApprovalRequestsGet (Maybe Xgafv)
+pargXgafv
+  = lens _pargXgafv (\ s a -> s{_pargXgafv = a})
+
+-- | Upload protocol for media (e.g. \"raw\", \"multipart\").
+pargUploadProtocol :: Lens' ProjectsApprovalRequestsGet (Maybe Text)
+pargUploadProtocol
+  = lens _pargUploadProtocol
+      (\ s a -> s{_pargUploadProtocol = a})
+
+-- | OAuth access token.
+pargAccessToken :: Lens' ProjectsApprovalRequestsGet (Maybe Text)
+pargAccessToken
+  = lens _pargAccessToken
+      (\ s a -> s{_pargAccessToken = a})
+
+-- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
+pargUploadType :: Lens' ProjectsApprovalRequestsGet (Maybe Text)
+pargUploadType
+  = lens _pargUploadType
+      (\ s a -> s{_pargUploadType = a})
+
+-- | Name of the approval request to retrieve.
+pargName :: Lens' ProjectsApprovalRequestsGet Text
+pargName = lens _pargName (\ s a -> s{_pargName = a})
+
+-- | JSONP
+pargCallback :: Lens' ProjectsApprovalRequestsGet (Maybe Text)
+pargCallback
+  = lens _pargCallback (\ s a -> s{_pargCallback = a})
+
+instance GoogleRequest ProjectsApprovalRequestsGet
+         where
+        type Rs ProjectsApprovalRequestsGet = ApprovalRequest
+        type Scopes ProjectsApprovalRequestsGet =
+             '["https://www.googleapis.com/auth/cloud-platform"]
+        requestClient ProjectsApprovalRequestsGet'{..}
+          = go _pargName _pargXgafv _pargUploadProtocol
+              _pargAccessToken
+              _pargUploadType
+              _pargCallback
+              (Just AltJSON)
+              accessApprovalService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy ProjectsApprovalRequestsGetResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/AccessApproval/Projects/ApprovalRequests/List.hs b/gen/Network/Google/Resource/AccessApproval/Projects/ApprovalRequests/List.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/AccessApproval/Projects/ApprovalRequests/List.hs
@@ -0,0 +1,204 @@
+{-# 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.AccessApproval.Projects.ApprovalRequests.List
+-- Copyright   : (c) 2015-2016 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Lists approval requests associated with a project, folder, or
+-- organization. Approval requests can be filtered by state (pending,
+-- active, dismissed). The order is reverse chronological.
+--
+-- /See:/ <https://cloud.google.com/access-approval/docs Access Approval API Reference> for @accessapproval.projects.approvalRequests.list@.
+module Network.Google.Resource.AccessApproval.Projects.ApprovalRequests.List
+    (
+    -- * REST Resource
+      ProjectsApprovalRequestsListResource
+
+    -- * Creating a Request
+    , projectsApprovalRequestsList
+    , ProjectsApprovalRequestsList
+
+    -- * Request Lenses
+    , parlParent
+    , parlXgafv
+    , parlUploadProtocol
+    , parlAccessToken
+    , parlUploadType
+    , parlFilter
+    , parlPageToken
+    , parlPageSize
+    , parlCallback
+    ) where
+
+import           Network.Google.AccessApproval.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @accessapproval.projects.approvalRequests.list@ method which the
+-- 'ProjectsApprovalRequestsList' request conforms to.
+type ProjectsApprovalRequestsListResource =
+     "v1beta1" :>
+       Capture "parent" Text :>
+         "approvalRequests" :>
+           QueryParam "$.xgafv" Xgafv :>
+             QueryParam "upload_protocol" Text :>
+               QueryParam "access_token" Text :>
+                 QueryParam "uploadType" Text :>
+                   QueryParam "filter" Text :>
+                     QueryParam "pageToken" Text :>
+                       QueryParam "pageSize" (Textual Int32) :>
+                         QueryParam "callback" Text :>
+                           QueryParam "alt" AltJSON :>
+                             Get '[JSON] ListApprovalRequestsResponse
+
+-- | Lists approval requests associated with a project, folder, or
+-- organization. Approval requests can be filtered by state (pending,
+-- active, dismissed). The order is reverse chronological.
+--
+-- /See:/ 'projectsApprovalRequestsList' smart constructor.
+data ProjectsApprovalRequestsList =
+  ProjectsApprovalRequestsList'
+    { _parlParent         :: !Text
+    , _parlXgafv          :: !(Maybe Xgafv)
+    , _parlUploadProtocol :: !(Maybe Text)
+    , _parlAccessToken    :: !(Maybe Text)
+    , _parlUploadType     :: !(Maybe Text)
+    , _parlFilter         :: !(Maybe Text)
+    , _parlPageToken      :: !(Maybe Text)
+    , _parlPageSize       :: !(Maybe (Textual Int32))
+    , _parlCallback       :: !(Maybe Text)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'ProjectsApprovalRequestsList' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'parlParent'
+--
+-- * 'parlXgafv'
+--
+-- * 'parlUploadProtocol'
+--
+-- * 'parlAccessToken'
+--
+-- * 'parlUploadType'
+--
+-- * 'parlFilter'
+--
+-- * 'parlPageToken'
+--
+-- * 'parlPageSize'
+--
+-- * 'parlCallback'
+projectsApprovalRequestsList
+    :: Text -- ^ 'parlParent'
+    -> ProjectsApprovalRequestsList
+projectsApprovalRequestsList pParlParent_ =
+  ProjectsApprovalRequestsList'
+    { _parlParent = pParlParent_
+    , _parlXgafv = Nothing
+    , _parlUploadProtocol = Nothing
+    , _parlAccessToken = Nothing
+    , _parlUploadType = Nothing
+    , _parlFilter = Nothing
+    , _parlPageToken = Nothing
+    , _parlPageSize = Nothing
+    , _parlCallback = Nothing
+    }
+
+
+-- | The parent resource. This may be \"projects\/{project_id}\",
+-- \"folders\/{folder_id}\", or \"organizations\/{organization_id}\".
+parlParent :: Lens' ProjectsApprovalRequestsList Text
+parlParent
+  = lens _parlParent (\ s a -> s{_parlParent = a})
+
+-- | V1 error format.
+parlXgafv :: Lens' ProjectsApprovalRequestsList (Maybe Xgafv)
+parlXgafv
+  = lens _parlXgafv (\ s a -> s{_parlXgafv = a})
+
+-- | Upload protocol for media (e.g. \"raw\", \"multipart\").
+parlUploadProtocol :: Lens' ProjectsApprovalRequestsList (Maybe Text)
+parlUploadProtocol
+  = lens _parlUploadProtocol
+      (\ s a -> s{_parlUploadProtocol = a})
+
+-- | OAuth access token.
+parlAccessToken :: Lens' ProjectsApprovalRequestsList (Maybe Text)
+parlAccessToken
+  = lens _parlAccessToken
+      (\ s a -> s{_parlAccessToken = a})
+
+-- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
+parlUploadType :: Lens' ProjectsApprovalRequestsList (Maybe Text)
+parlUploadType
+  = lens _parlUploadType
+      (\ s a -> s{_parlUploadType = a})
+
+-- | A filter on the type of approval requests to retrieve. Must be one of
+-- the following values:
+--
+-- 1.  [not set]: Requests that are pending or have active approvals.
+-- 2.  ALL: All requests.
+-- 3.  PENDING: Only pending requests.
+-- 4.  ACTIVE: Only active (i.e. currently approved) requests.
+-- 5.  DISMISSED: Only dismissed (including expired) requests.
+parlFilter :: Lens' ProjectsApprovalRequestsList (Maybe Text)
+parlFilter
+  = lens _parlFilter (\ s a -> s{_parlFilter = a})
+
+-- | A token identifying the page of results to return.
+parlPageToken :: Lens' ProjectsApprovalRequestsList (Maybe Text)
+parlPageToken
+  = lens _parlPageToken
+      (\ s a -> s{_parlPageToken = a})
+
+-- | Requested page size.
+parlPageSize :: Lens' ProjectsApprovalRequestsList (Maybe Int32)
+parlPageSize
+  = lens _parlPageSize (\ s a -> s{_parlPageSize = a})
+      . mapping _Coerce
+
+-- | JSONP
+parlCallback :: Lens' ProjectsApprovalRequestsList (Maybe Text)
+parlCallback
+  = lens _parlCallback (\ s a -> s{_parlCallback = a})
+
+instance GoogleRequest ProjectsApprovalRequestsList
+         where
+        type Rs ProjectsApprovalRequestsList =
+             ListApprovalRequestsResponse
+        type Scopes ProjectsApprovalRequestsList =
+             '["https://www.googleapis.com/auth/cloud-platform"]
+        requestClient ProjectsApprovalRequestsList'{..}
+          = go _parlParent _parlXgafv _parlUploadProtocol
+              _parlAccessToken
+              _parlUploadType
+              _parlFilter
+              _parlPageToken
+              _parlPageSize
+              _parlCallback
+              (Just AltJSON)
+              accessApprovalService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy ProjectsApprovalRequestsListResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/AccessApproval/Projects/GetAccessApprovalSettings.hs b/gen/Network/Google/Resource/AccessApproval/Projects/GetAccessApprovalSettings.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/AccessApproval/Projects/GetAccessApprovalSettings.hs
@@ -0,0 +1,156 @@
+{-# 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.AccessApproval.Projects.GetAccessApprovalSettings
+-- Copyright   : (c) 2015-2016 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Gets the settings associated with a project, folder, or organization.
+--
+-- /See:/ <https://cloud.google.com/access-approval/docs Access Approval API Reference> for @accessapproval.projects.getAccessApprovalSettings@.
+module Network.Google.Resource.AccessApproval.Projects.GetAccessApprovalSettings
+    (
+    -- * REST Resource
+      ProjectsGetAccessApprovalSettingsResource
+
+    -- * Creating a Request
+    , projectsGetAccessApprovalSettings
+    , ProjectsGetAccessApprovalSettings
+
+    -- * Request Lenses
+    , pgaasXgafv
+    , pgaasUploadProtocol
+    , pgaasAccessToken
+    , pgaasUploadType
+    , pgaasName
+    , pgaasCallback
+    ) where
+
+import           Network.Google.AccessApproval.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @accessapproval.projects.getAccessApprovalSettings@ method which the
+-- 'ProjectsGetAccessApprovalSettings' request conforms to.
+type ProjectsGetAccessApprovalSettingsResource =
+     "v1beta1" :>
+       Capture "name" Text :>
+         QueryParam "$.xgafv" Xgafv :>
+           QueryParam "upload_protocol" Text :>
+             QueryParam "access_token" Text :>
+               QueryParam "uploadType" Text :>
+                 QueryParam "callback" Text :>
+                   QueryParam "alt" AltJSON :>
+                     Get '[JSON] AccessApprovalSettings
+
+-- | Gets the settings associated with a project, folder, or organization.
+--
+-- /See:/ 'projectsGetAccessApprovalSettings' smart constructor.
+data ProjectsGetAccessApprovalSettings =
+  ProjectsGetAccessApprovalSettings'
+    { _pgaasXgafv          :: !(Maybe Xgafv)
+    , _pgaasUploadProtocol :: !(Maybe Text)
+    , _pgaasAccessToken    :: !(Maybe Text)
+    , _pgaasUploadType     :: !(Maybe Text)
+    , _pgaasName           :: !Text
+    , _pgaasCallback       :: !(Maybe Text)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'ProjectsGetAccessApprovalSettings' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'pgaasXgafv'
+--
+-- * 'pgaasUploadProtocol'
+--
+-- * 'pgaasAccessToken'
+--
+-- * 'pgaasUploadType'
+--
+-- * 'pgaasName'
+--
+-- * 'pgaasCallback'
+projectsGetAccessApprovalSettings
+    :: Text -- ^ 'pgaasName'
+    -> ProjectsGetAccessApprovalSettings
+projectsGetAccessApprovalSettings pPgaasName_ =
+  ProjectsGetAccessApprovalSettings'
+    { _pgaasXgafv = Nothing
+    , _pgaasUploadProtocol = Nothing
+    , _pgaasAccessToken = Nothing
+    , _pgaasUploadType = Nothing
+    , _pgaasName = pPgaasName_
+    , _pgaasCallback = Nothing
+    }
+
+
+-- | V1 error format.
+pgaasXgafv :: Lens' ProjectsGetAccessApprovalSettings (Maybe Xgafv)
+pgaasXgafv
+  = lens _pgaasXgafv (\ s a -> s{_pgaasXgafv = a})
+
+-- | Upload protocol for media (e.g. \"raw\", \"multipart\").
+pgaasUploadProtocol :: Lens' ProjectsGetAccessApprovalSettings (Maybe Text)
+pgaasUploadProtocol
+  = lens _pgaasUploadProtocol
+      (\ s a -> s{_pgaasUploadProtocol = a})
+
+-- | OAuth access token.
+pgaasAccessToken :: Lens' ProjectsGetAccessApprovalSettings (Maybe Text)
+pgaasAccessToken
+  = lens _pgaasAccessToken
+      (\ s a -> s{_pgaasAccessToken = a})
+
+-- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
+pgaasUploadType :: Lens' ProjectsGetAccessApprovalSettings (Maybe Text)
+pgaasUploadType
+  = lens _pgaasUploadType
+      (\ s a -> s{_pgaasUploadType = a})
+
+-- | Name of the AccessApprovalSettings to retrieve.
+pgaasName :: Lens' ProjectsGetAccessApprovalSettings Text
+pgaasName
+  = lens _pgaasName (\ s a -> s{_pgaasName = a})
+
+-- | JSONP
+pgaasCallback :: Lens' ProjectsGetAccessApprovalSettings (Maybe Text)
+pgaasCallback
+  = lens _pgaasCallback
+      (\ s a -> s{_pgaasCallback = a})
+
+instance GoogleRequest
+           ProjectsGetAccessApprovalSettings
+         where
+        type Rs ProjectsGetAccessApprovalSettings =
+             AccessApprovalSettings
+        type Scopes ProjectsGetAccessApprovalSettings =
+             '["https://www.googleapis.com/auth/cloud-platform"]
+        requestClient ProjectsGetAccessApprovalSettings'{..}
+          = go _pgaasName _pgaasXgafv _pgaasUploadProtocol
+              _pgaasAccessToken
+              _pgaasUploadType
+              _pgaasCallback
+              (Just AltJSON)
+              accessApprovalService
+          where go
+                  = buildClient
+                      (Proxy ::
+                         Proxy ProjectsGetAccessApprovalSettingsResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/AccessApproval/Projects/UpdateAccessApprovalSettings.hs b/gen/Network/Google/Resource/AccessApproval/Projects/UpdateAccessApprovalSettings.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/AccessApproval/Projects/UpdateAccessApprovalSettings.hs
@@ -0,0 +1,175 @@
+{-# 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.AccessApproval.Projects.UpdateAccessApprovalSettings
+-- Copyright   : (c) 2015-2016 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Updates the settings associated with a project, folder, or organization.
+-- Completely replaces the existing settings.
+--
+-- /See:/ <https://cloud.google.com/access-approval/docs Access Approval API Reference> for @accessapproval.projects.updateAccessApprovalSettings@.
+module Network.Google.Resource.AccessApproval.Projects.UpdateAccessApprovalSettings
+    (
+    -- * REST Resource
+      ProjectsUpdateAccessApprovalSettingsResource
+
+    -- * Creating a Request
+    , projectsUpdateAccessApprovalSettings
+    , ProjectsUpdateAccessApprovalSettings
+
+    -- * Request Lenses
+    , puaasXgafv
+    , puaasUploadProtocol
+    , puaasAccessToken
+    , puaasUploadType
+    , puaasPayload
+    , puaasName
+    , puaasCallback
+    ) where
+
+import           Network.Google.AccessApproval.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @accessapproval.projects.updateAccessApprovalSettings@ method which the
+-- 'ProjectsUpdateAccessApprovalSettings' request conforms to.
+type ProjectsUpdateAccessApprovalSettingsResource =
+     "v1beta1" :>
+       Capture "name" Text :>
+         QueryParam "$.xgafv" Xgafv :>
+           QueryParam "upload_protocol" Text :>
+             QueryParam "access_token" Text :>
+               QueryParam "uploadType" Text :>
+                 QueryParam "callback" Text :>
+                   QueryParam "alt" AltJSON :>
+                     ReqBody '[JSON] AccessApprovalSettings :>
+                       Patch '[JSON] AccessApprovalSettings
+
+-- | Updates the settings associated with a project, folder, or organization.
+-- Completely replaces the existing settings.
+--
+-- /See:/ 'projectsUpdateAccessApprovalSettings' smart constructor.
+data ProjectsUpdateAccessApprovalSettings =
+  ProjectsUpdateAccessApprovalSettings'
+    { _puaasXgafv          :: !(Maybe Xgafv)
+    , _puaasUploadProtocol :: !(Maybe Text)
+    , _puaasAccessToken    :: !(Maybe Text)
+    , _puaasUploadType     :: !(Maybe Text)
+    , _puaasPayload        :: !AccessApprovalSettings
+    , _puaasName           :: !Text
+    , _puaasCallback       :: !(Maybe Text)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'ProjectsUpdateAccessApprovalSettings' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'puaasXgafv'
+--
+-- * 'puaasUploadProtocol'
+--
+-- * 'puaasAccessToken'
+--
+-- * 'puaasUploadType'
+--
+-- * 'puaasPayload'
+--
+-- * 'puaasName'
+--
+-- * 'puaasCallback'
+projectsUpdateAccessApprovalSettings
+    :: AccessApprovalSettings -- ^ 'puaasPayload'
+    -> Text -- ^ 'puaasName'
+    -> ProjectsUpdateAccessApprovalSettings
+projectsUpdateAccessApprovalSettings pPuaasPayload_ pPuaasName_ =
+  ProjectsUpdateAccessApprovalSettings'
+    { _puaasXgafv = Nothing
+    , _puaasUploadProtocol = Nothing
+    , _puaasAccessToken = Nothing
+    , _puaasUploadType = Nothing
+    , _puaasPayload = pPuaasPayload_
+    , _puaasName = pPuaasName_
+    , _puaasCallback = Nothing
+    }
+
+
+-- | V1 error format.
+puaasXgafv :: Lens' ProjectsUpdateAccessApprovalSettings (Maybe Xgafv)
+puaasXgafv
+  = lens _puaasXgafv (\ s a -> s{_puaasXgafv = a})
+
+-- | Upload protocol for media (e.g. \"raw\", \"multipart\").
+puaasUploadProtocol :: Lens' ProjectsUpdateAccessApprovalSettings (Maybe Text)
+puaasUploadProtocol
+  = lens _puaasUploadProtocol
+      (\ s a -> s{_puaasUploadProtocol = a})
+
+-- | OAuth access token.
+puaasAccessToken :: Lens' ProjectsUpdateAccessApprovalSettings (Maybe Text)
+puaasAccessToken
+  = lens _puaasAccessToken
+      (\ s a -> s{_puaasAccessToken = a})
+
+-- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
+puaasUploadType :: Lens' ProjectsUpdateAccessApprovalSettings (Maybe Text)
+puaasUploadType
+  = lens _puaasUploadType
+      (\ s a -> s{_puaasUploadType = a})
+
+-- | Multipart request metadata.
+puaasPayload :: Lens' ProjectsUpdateAccessApprovalSettings AccessApprovalSettings
+puaasPayload
+  = lens _puaasPayload (\ s a -> s{_puaasPayload = a})
+
+-- | The resource name of the settings. Format is one of:
+-- \"projects\/{project_id}\/accessApprovalSettings\"
+-- \"folders\/{folder_id}\/accessApprovalSettings\"
+-- \"organizations\/{organization_id}\/accessApprovalSettings\"
+puaasName :: Lens' ProjectsUpdateAccessApprovalSettings Text
+puaasName
+  = lens _puaasName (\ s a -> s{_puaasName = a})
+
+-- | JSONP
+puaasCallback :: Lens' ProjectsUpdateAccessApprovalSettings (Maybe Text)
+puaasCallback
+  = lens _puaasCallback
+      (\ s a -> s{_puaasCallback = a})
+
+instance GoogleRequest
+           ProjectsUpdateAccessApprovalSettings
+         where
+        type Rs ProjectsUpdateAccessApprovalSettings =
+             AccessApprovalSettings
+        type Scopes ProjectsUpdateAccessApprovalSettings =
+             '["https://www.googleapis.com/auth/cloud-platform"]
+        requestClient
+          ProjectsUpdateAccessApprovalSettings'{..}
+          = go _puaasName _puaasXgafv _puaasUploadProtocol
+              _puaasAccessToken
+              _puaasUploadType
+              _puaasCallback
+              (Just AltJSON)
+              _puaasPayload
+              accessApprovalService
+          where go
+                  = buildClient
+                      (Proxy ::
+                         Proxy ProjectsUpdateAccessApprovalSettingsResource)
+                      mempty
diff --git a/gogol-accessapproval.cabal b/gogol-accessapproval.cabal
new file mode 100644
--- /dev/null
+++ b/gogol-accessapproval.cabal
@@ -0,0 +1,63 @@
+name:                  gogol-accessapproval
+version:               0.5.0
+synopsis:              Google Access Approval SDK.
+homepage:              https://github.com/brendanhay/gogol
+bug-reports:           https://github.com/brendanhay/gogol/issues
+license:               OtherLicense
+license-file:          LICENSE
+author:                Brendan Hay
+maintainer:            Brendan Hay <brendan.g.hay@gmail.com>
+copyright:             Copyright (c) 2015-2016 Brendan Hay
+category:              Network, Google, Cloud
+build-type:            Simple
+cabal-version:         >= 1.10
+extra-source-files:    README.md src/.gitkeep
+
+description:
+    An API for controlling access to data by Google personnel.
+    .
+    /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 @v1beta1@
+    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.AccessApproval
+        , Network.Google.AccessApproval.Types
+        , Network.Google.Resource.AccessApproval.Folders.ApprovalRequests.Approve
+        , Network.Google.Resource.AccessApproval.Folders.ApprovalRequests.Dismiss
+        , Network.Google.Resource.AccessApproval.Folders.ApprovalRequests.Get
+        , Network.Google.Resource.AccessApproval.Folders.ApprovalRequests.List
+        , Network.Google.Resource.AccessApproval.Folders.GetAccessApprovalSettings
+        , Network.Google.Resource.AccessApproval.Folders.UpdateAccessApprovalSettings
+        , Network.Google.Resource.AccessApproval.Organizations.ApprovalRequests.Approve
+        , Network.Google.Resource.AccessApproval.Organizations.ApprovalRequests.Dismiss
+        , Network.Google.Resource.AccessApproval.Organizations.ApprovalRequests.Get
+        , Network.Google.Resource.AccessApproval.Organizations.ApprovalRequests.List
+        , Network.Google.Resource.AccessApproval.Organizations.GetAccessApprovalSettings
+        , Network.Google.Resource.AccessApproval.Organizations.UpdateAccessApprovalSettings
+        , Network.Google.Resource.AccessApproval.Projects.ApprovalRequests.Approve
+        , Network.Google.Resource.AccessApproval.Projects.ApprovalRequests.Dismiss
+        , Network.Google.Resource.AccessApproval.Projects.ApprovalRequests.Get
+        , Network.Google.Resource.AccessApproval.Projects.ApprovalRequests.List
+        , Network.Google.Resource.AccessApproval.Projects.GetAccessApprovalSettings
+        , Network.Google.Resource.AccessApproval.Projects.UpdateAccessApprovalSettings
+
+    other-modules:
+          Network.Google.AccessApproval.Types.Product
+        , Network.Google.AccessApproval.Types.Sum
+
+    build-depends:
+          gogol-core == 0.5.0.*
+        , base       >= 4.7 && < 5
diff --git a/src/.gitkeep b/src/.gitkeep
new file mode 100644
--- /dev/null
+++ b/src/.gitkeep
