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-analytics
+
+* [Version](#version)
+* [Description](#description)
+* [Contribute](#contribute)
+* [Licence](#licence)
+
+
+## Version
+
+`0.0.1`
+
+
+## Description
+
+A client library for the Google Analytics.
+
+
+## Contribute
+
+For any problems, comments, or feedback please create an issue [here on GitHub](https://github.com/brendanhay/amazonka/issues).
+
+> _Note:_ this library is an auto-generated Haskell package. Please see `amazonka-gen` for more information.
+
+
+## Licence
+
+`gogol-analytics` 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/Analytics.hs b/gen/Network/Google/Analytics.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Analytics.hs
@@ -0,0 +1,1415 @@
+{-# LANGUAGE DataKinds         #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# LANGUAGE TypeOperators     #-}
+
+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+
+-- |
+-- Module      : Network.Google.Analytics
+-- Copyright   : (c) 2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- View and manage your Google Analytics data
+--
+-- /See:/ <https://developers.google.com/analytics/ Google Analytics API Reference>
+module Network.Google.Analytics
+    (
+    -- * Service Configuration
+      analyticsService
+
+    -- * API Declaration
+    , AnalyticsAPI
+
+    -- * Resources
+
+    -- ** analytics.data.ga.get
+    , module Network.Google.Resource.Analytics.Data.Ga.Get
+
+    -- ** analytics.data.mcf.get
+    , module Network.Google.Resource.Analytics.Data.Mcf.Get
+
+    -- ** analytics.data.realtime.get
+    , module Network.Google.Resource.Analytics.Data.Realtime.Get
+
+    -- ** analytics.management.accountSummaries.list
+    , module Network.Google.Resource.Analytics.Management.AccountSummaries.List
+
+    -- ** analytics.management.accountUserLinks.delete
+    , module Network.Google.Resource.Analytics.Management.AccountUserLinks.Delete
+
+    -- ** analytics.management.accountUserLinks.insert
+    , module Network.Google.Resource.Analytics.Management.AccountUserLinks.Insert
+
+    -- ** analytics.management.accountUserLinks.list
+    , module Network.Google.Resource.Analytics.Management.AccountUserLinks.List
+
+    -- ** analytics.management.accountUserLinks.update
+    , module Network.Google.Resource.Analytics.Management.AccountUserLinks.Update
+
+    -- ** analytics.management.accounts.list
+    , module Network.Google.Resource.Analytics.Management.Accounts.List
+
+    -- ** analytics.management.customDataSources.list
+    , module Network.Google.Resource.Analytics.Management.CustomDataSources.List
+
+    -- ** analytics.management.customDimensions.get
+    , module Network.Google.Resource.Analytics.Management.CustomDimensions.Get
+
+    -- ** analytics.management.customDimensions.insert
+    , module Network.Google.Resource.Analytics.Management.CustomDimensions.Insert
+
+    -- ** analytics.management.customDimensions.list
+    , module Network.Google.Resource.Analytics.Management.CustomDimensions.List
+
+    -- ** analytics.management.customDimensions.patch
+    , module Network.Google.Resource.Analytics.Management.CustomDimensions.Patch
+
+    -- ** analytics.management.customDimensions.update
+    , module Network.Google.Resource.Analytics.Management.CustomDimensions.Update
+
+    -- ** analytics.management.customMetrics.get
+    , module Network.Google.Resource.Analytics.Management.CustomMetrics.Get
+
+    -- ** analytics.management.customMetrics.insert
+    , module Network.Google.Resource.Analytics.Management.CustomMetrics.Insert
+
+    -- ** analytics.management.customMetrics.list
+    , module Network.Google.Resource.Analytics.Management.CustomMetrics.List
+
+    -- ** analytics.management.customMetrics.patch
+    , module Network.Google.Resource.Analytics.Management.CustomMetrics.Patch
+
+    -- ** analytics.management.customMetrics.update
+    , module Network.Google.Resource.Analytics.Management.CustomMetrics.Update
+
+    -- ** analytics.management.experiments.delete
+    , module Network.Google.Resource.Analytics.Management.Experiments.Delete
+
+    -- ** analytics.management.experiments.get
+    , module Network.Google.Resource.Analytics.Management.Experiments.Get
+
+    -- ** analytics.management.experiments.insert
+    , module Network.Google.Resource.Analytics.Management.Experiments.Insert
+
+    -- ** analytics.management.experiments.list
+    , module Network.Google.Resource.Analytics.Management.Experiments.List
+
+    -- ** analytics.management.experiments.patch
+    , module Network.Google.Resource.Analytics.Management.Experiments.Patch
+
+    -- ** analytics.management.experiments.update
+    , module Network.Google.Resource.Analytics.Management.Experiments.Update
+
+    -- ** analytics.management.filters.delete
+    , module Network.Google.Resource.Analytics.Management.Filters.Delete
+
+    -- ** analytics.management.filters.get
+    , module Network.Google.Resource.Analytics.Management.Filters.Get
+
+    -- ** analytics.management.filters.insert
+    , module Network.Google.Resource.Analytics.Management.Filters.Insert
+
+    -- ** analytics.management.filters.list
+    , module Network.Google.Resource.Analytics.Management.Filters.List
+
+    -- ** analytics.management.filters.patch
+    , module Network.Google.Resource.Analytics.Management.Filters.Patch
+
+    -- ** analytics.management.filters.update
+    , module Network.Google.Resource.Analytics.Management.Filters.Update
+
+    -- ** analytics.management.goals.get
+    , module Network.Google.Resource.Analytics.Management.Goals.Get
+
+    -- ** analytics.management.goals.insert
+    , module Network.Google.Resource.Analytics.Management.Goals.Insert
+
+    -- ** analytics.management.goals.list
+    , module Network.Google.Resource.Analytics.Management.Goals.List
+
+    -- ** analytics.management.goals.patch
+    , module Network.Google.Resource.Analytics.Management.Goals.Patch
+
+    -- ** analytics.management.goals.update
+    , module Network.Google.Resource.Analytics.Management.Goals.Update
+
+    -- ** analytics.management.profileFilterLinks.delete
+    , module Network.Google.Resource.Analytics.Management.ProFileFilterLinks.Delete
+
+    -- ** analytics.management.profileFilterLinks.get
+    , module Network.Google.Resource.Analytics.Management.ProFileFilterLinks.Get
+
+    -- ** analytics.management.profileFilterLinks.insert
+    , module Network.Google.Resource.Analytics.Management.ProFileFilterLinks.Insert
+
+    -- ** analytics.management.profileFilterLinks.list
+    , module Network.Google.Resource.Analytics.Management.ProFileFilterLinks.List
+
+    -- ** analytics.management.profileFilterLinks.patch
+    , module Network.Google.Resource.Analytics.Management.ProFileFilterLinks.Patch
+
+    -- ** analytics.management.profileFilterLinks.update
+    , module Network.Google.Resource.Analytics.Management.ProFileFilterLinks.Update
+
+    -- ** analytics.management.profileUserLinks.delete
+    , module Network.Google.Resource.Analytics.Management.ProFileUserLinks.Delete
+
+    -- ** analytics.management.profileUserLinks.insert
+    , module Network.Google.Resource.Analytics.Management.ProFileUserLinks.Insert
+
+    -- ** analytics.management.profileUserLinks.list
+    , module Network.Google.Resource.Analytics.Management.ProFileUserLinks.List
+
+    -- ** analytics.management.profileUserLinks.update
+    , module Network.Google.Resource.Analytics.Management.ProFileUserLinks.Update
+
+    -- ** analytics.management.profiles.delete
+    , module Network.Google.Resource.Analytics.Management.ProFiles.Delete
+
+    -- ** analytics.management.profiles.get
+    , module Network.Google.Resource.Analytics.Management.ProFiles.Get
+
+    -- ** analytics.management.profiles.insert
+    , module Network.Google.Resource.Analytics.Management.ProFiles.Insert
+
+    -- ** analytics.management.profiles.list
+    , module Network.Google.Resource.Analytics.Management.ProFiles.List
+
+    -- ** analytics.management.profiles.patch
+    , module Network.Google.Resource.Analytics.Management.ProFiles.Patch
+
+    -- ** analytics.management.profiles.update
+    , module Network.Google.Resource.Analytics.Management.ProFiles.Update
+
+    -- ** analytics.management.segments.list
+    , module Network.Google.Resource.Analytics.Management.Segments.List
+
+    -- ** analytics.management.unsampledReports.get
+    , module Network.Google.Resource.Analytics.Management.UnSampledReports.Get
+
+    -- ** analytics.management.unsampledReports.insert
+    , module Network.Google.Resource.Analytics.Management.UnSampledReports.Insert
+
+    -- ** analytics.management.unsampledReports.list
+    , module Network.Google.Resource.Analytics.Management.UnSampledReports.List
+
+    -- ** analytics.management.uploads.deleteUploadData
+    , module Network.Google.Resource.Analytics.Management.Uploads.DeleteUploadData
+
+    -- ** analytics.management.uploads.get
+    , module Network.Google.Resource.Analytics.Management.Uploads.Get
+
+    -- ** analytics.management.uploads.list
+    , module Network.Google.Resource.Analytics.Management.Uploads.List
+
+    -- ** analytics.management.uploads.uploadData
+    , module Network.Google.Resource.Analytics.Management.Uploads.UploadData
+
+    -- ** analytics.management.webPropertyAdWordsLinks.delete
+    , module Network.Google.Resource.Analytics.Management.WebPropertyAdWordsLinks.Delete
+
+    -- ** analytics.management.webPropertyAdWordsLinks.get
+    , module Network.Google.Resource.Analytics.Management.WebPropertyAdWordsLinks.Get
+
+    -- ** analytics.management.webPropertyAdWordsLinks.insert
+    , module Network.Google.Resource.Analytics.Management.WebPropertyAdWordsLinks.Insert
+
+    -- ** analytics.management.webPropertyAdWordsLinks.list
+    , module Network.Google.Resource.Analytics.Management.WebPropertyAdWordsLinks.List
+
+    -- ** analytics.management.webPropertyAdWordsLinks.patch
+    , module Network.Google.Resource.Analytics.Management.WebPropertyAdWordsLinks.Patch
+
+    -- ** analytics.management.webPropertyAdWordsLinks.update
+    , module Network.Google.Resource.Analytics.Management.WebPropertyAdWordsLinks.Update
+
+    -- ** analytics.management.webproperties.get
+    , module Network.Google.Resource.Analytics.Management.WebProperties.Get
+
+    -- ** analytics.management.webproperties.insert
+    , module Network.Google.Resource.Analytics.Management.WebProperties.Insert
+
+    -- ** analytics.management.webproperties.list
+    , module Network.Google.Resource.Analytics.Management.WebProperties.List
+
+    -- ** analytics.management.webproperties.patch
+    , module Network.Google.Resource.Analytics.Management.WebProperties.Patch
+
+    -- ** analytics.management.webproperties.update
+    , module Network.Google.Resource.Analytics.Management.WebProperties.Update
+
+    -- ** analytics.management.webpropertyUserLinks.delete
+    , module Network.Google.Resource.Analytics.Management.WebPropertyUserLinks.Delete
+
+    -- ** analytics.management.webpropertyUserLinks.insert
+    , module Network.Google.Resource.Analytics.Management.WebPropertyUserLinks.Insert
+
+    -- ** analytics.management.webpropertyUserLinks.list
+    , module Network.Google.Resource.Analytics.Management.WebPropertyUserLinks.List
+
+    -- ** analytics.management.webpropertyUserLinks.update
+    , module Network.Google.Resource.Analytics.Management.WebPropertyUserLinks.Update
+
+    -- ** analytics.metadata.columns.list
+    , module Network.Google.Resource.Analytics.Metadata.Columns.List
+
+    -- ** analytics.provisioning.createAccountTicket
+    , module Network.Google.Resource.Analytics.Provisioning.CreateAccountTicket
+
+    -- * Types
+
+    -- ** UnSampledReports
+    , UnSampledReports
+    , unSampledReports
+    , usrNextLink
+    , usrItemsPerPage
+    , usrKind
+    , usrUsername
+    , usrItems
+    , usrTotalResults
+    , usrStartIndex
+    , usrPreviousLink
+
+    -- ** GoalURLDestinationDetailsStepsItem
+    , GoalURLDestinationDetailsStepsItem
+    , goalURLDestinationDetailsStepsItem
+    , guddsiURL
+    , guddsiName
+    , guddsiNumber
+
+    -- ** GaDataQuery
+    , GaDataQuery
+    , gaDataQuery
+    , gdqMetrics
+    , gdqSamplingLevel
+    , gdqFilters
+    , gdqIds
+    , gdqEndDate
+    , gdqSort
+    , gdqDimensions
+    , gdqStartIndex
+    , gdqMaxResults
+    , gdqSegment
+    , gdqStartDate
+
+    -- ** GaDataDataTableRowsItem
+    , GaDataDataTableRowsItem
+    , gaDataDataTableRowsItem
+    , gddtriC
+
+    -- ** UnSampledReport
+    , UnSampledReport
+    , unSampledReport
+    , uDownloadType
+    , uStatus
+    , uMetrics
+    , uDriveDownloadDetails
+    , uWebPropertyId
+    , uKind
+    , uCreated
+    , uFilters
+    , uProFileId
+    , uEndDate
+    , uSelfLink
+    , uAccountId
+    , uId
+    , uUpdated
+    , uTitle
+    , uDimensions
+    , uSegment
+    , uCloudStorageDownloadDetails
+    , uStartDate
+
+    -- ** McfDataColumnHeadersItem
+    , McfDataColumnHeadersItem
+    , mcfDataColumnHeadersItem
+    , mdchiColumnType
+    , mdchiName
+    , mdchiDataType
+
+    -- ** GaDataTotalsForAllResults
+    , GaDataTotalsForAllResults
+    , gaDataTotalsForAllResults
+    , gdtfarAddtional
+
+    -- ** ProFileParentLink
+    , ProFileParentLink
+    , proFileParentLink
+    , pfplHref
+    , pfplType
+
+    -- ** GaDataDataTableRowsItemCItem
+    , GaDataDataTableRowsItemCItem
+    , gaDataDataTableRowsItemCItem
+    , gddtriciV
+
+    -- ** EntityUserLinkPermissions
+    , EntityUserLinkPermissions
+    , entityUserLinkPermissions
+    , eulpLocal
+    , eulpEffective
+
+    -- ** RealtimeDataProFileInfo
+    , RealtimeDataProFileInfo
+    , realtimeDataProFileInfo
+    , rdpfiWebPropertyId
+    , rdpfiProFileId
+    , rdpfiProFileName
+    , rdpfiAccountId
+    , rdpfiInternalWebPropertyId
+    , rdpfiTableId
+
+    -- ** McfDataRowsItemItemConversionPathValueItem
+    , McfDataRowsItemItemConversionPathValueItem
+    , mcfDataRowsItemItemConversionPathValueItem
+    , mdriicpviInteractionType
+    , mdriicpviNodeValue
+
+    -- ** FilterExpression
+    , FilterExpression
+    , filterExpression
+    , feFieldIndex
+    , feField
+    , feKind
+    , feMatchType
+    , feCaseSensitive
+    , feExpressionValue
+
+    -- ** ProFileRef
+    , ProFileRef
+    , proFileRef
+    , pfrWebPropertyId
+    , pfrKind
+    , pfrHref
+    , pfrAccountId
+    , pfrName
+    , pfrInternalWebPropertyId
+    , pfrId
+
+    -- ** Accounts
+    , Accounts
+    , accounts
+    , aNextLink
+    , aItemsPerPage
+    , aKind
+    , aUsername
+    , aItems
+    , aTotalResults
+    , aStartIndex
+    , aPreviousLink
+
+    -- ** Experiments
+    , Experiments
+    , experiments
+    , eNextLink
+    , eItemsPerPage
+    , eKind
+    , eUsername
+    , eItems
+    , eTotalResults
+    , eStartIndex
+    , ePreviousLink
+
+    -- ** ExperimentParentLink
+    , ExperimentParentLink
+    , experimentParentLink
+    , eplHref
+    , eplType
+
+    -- ** UnSampledReportDriveDownloadDetails
+    , UnSampledReportDriveDownloadDetails
+    , unSampledReportDriveDownloadDetails
+    , usrdddDocumentId
+
+    -- ** McfDataProFileInfo
+    , McfDataProFileInfo
+    , mcfDataProFileInfo
+    , mdpfiWebPropertyId
+    , mdpfiProFileId
+    , mdpfiProFileName
+    , mdpfiAccountId
+    , mdpfiInternalWebPropertyId
+    , mdpfiTableId
+
+    -- ** CustomDataSources
+    , CustomDataSources
+    , customDataSources
+    , cdsNextLink
+    , cdsItemsPerPage
+    , cdsKind
+    , cdsUsername
+    , cdsItems
+    , cdsTotalResults
+    , cdsStartIndex
+    , cdsPreviousLink
+
+    -- ** WebPropertyChildLink
+    , WebPropertyChildLink
+    , webPropertyChildLink
+    , wpclHref
+    , wpclType
+
+    -- ** DataGaGetSamplingLevel
+    , DataGaGetSamplingLevel (..)
+
+    -- ** McfData
+    , McfData
+    , mcfData
+    , mdNextLink
+    , mdSampleSpace
+    , mdItemsPerPage
+    , mdProFileInfo
+    , mdKind
+    , mdSampleSize
+    , mdRows
+    , mdSelfLink
+    , mdQuery
+    , mdColumnHeaders
+    , mdId
+    , mdTotalResults
+    , mdContainsSampledData
+    , mdTotalsForAllResults
+    , mdPreviousLink
+
+    -- ** UserRef
+    , UserRef
+    , userRef
+    , urEmail
+    , urKind
+    , urId
+
+    -- ** GoalVisitNumPagesDetails
+    , GoalVisitNumPagesDetails
+    , goalVisitNumPagesDetails
+    , gvnpdComparisonValue
+    , gvnpdComparisonType
+
+    -- ** RealtimeDataColumnHeadersItem
+    , RealtimeDataColumnHeadersItem
+    , realtimeDataColumnHeadersItem
+    , rdchiColumnType
+    , rdchiName
+    , rdchiDataType
+
+    -- ** AccountRef
+    , AccountRef
+    , accountRef
+    , arKind
+    , arHref
+    , arName
+    , arId
+
+    -- ** EntityAdWordsLinks
+    , EntityAdWordsLinks
+    , entityAdWordsLinks
+    , eawlNextLink
+    , eawlItemsPerPage
+    , eawlKind
+    , eawlItems
+    , eawlTotalResults
+    , eawlStartIndex
+    , eawlPreviousLink
+
+    -- ** ProFiles
+    , ProFiles
+    , proFiles
+    , pfNextLink
+    , pfItemsPerPage
+    , pfKind
+    , pfUsername
+    , pfItems
+    , pfTotalResults
+    , pfStartIndex
+    , pfPreviousLink
+
+    -- ** AnalyticsDataimportDeleteUploadDataRequest
+    , AnalyticsDataimportDeleteUploadDataRequest
+    , analyticsDataimportDeleteUploadDataRequest
+    , addudrCustomDataImportUids
+
+    -- ** EntityAdWordsLink
+    , EntityAdWordsLink
+    , entityAdWordsLink
+    , entAdWordsAccounts
+    , entProFileIds
+    , entKind
+    , entSelfLink
+    , entName
+    , entId
+    , entEntity
+
+    -- ** FilterSearchAndReplaceDetails
+    , FilterSearchAndReplaceDetails
+    , filterSearchAndReplaceDetails
+    , fsardFieldIndex
+    , fsardField
+    , fsardSearchString
+    , fsardReplaceString
+    , fsardCaseSensitive
+
+    -- ** ProFilePermissions
+    , ProFilePermissions
+    , proFilePermissions
+    , pfpEffective
+
+    -- ** ProFile
+    , ProFile
+    , proFile
+    , pParentLink
+    , pECommerceTracking
+    , pSiteSearchCategoryParameters
+    , pWebPropertyId
+    , pChildLink
+    , pSiteSearchQueryParameters
+    , pKind
+    , pDefaultPage
+    , pCreated
+    , pSelfLink
+    , pAccountId
+    , pName
+    , pCurrency
+    , pInternalWebPropertyId
+    , pId
+    , pUpdated
+    , pPermissions
+    , pWebsiteURL
+    , pType
+    , pStripSiteSearchCategoryParameters
+    , pTimezone
+    , pExcludeQueryParameters
+    , pEnhancedECommerceTracking
+    , pStripSiteSearchQueryParameters
+
+    -- ** AccountSummaries
+    , AccountSummaries
+    , accountSummaries
+    , asNextLink
+    , asItemsPerPage
+    , asKind
+    , asUsername
+    , asItems
+    , asTotalResults
+    , asStartIndex
+    , asPreviousLink
+
+    -- ** GoalEventDetails
+    , GoalEventDetails
+    , goalEventDetails
+    , gedUseEventValue
+    , gedEventConditions
+
+    -- ** WebPropertySummary
+    , WebPropertySummary
+    , webPropertySummary
+    , wpsKind
+    , wpsProFiles
+    , wpsName
+    , wpsInternalWebPropertyId
+    , wpsId
+    , wpsWebsiteURL
+    , wpsLevel
+
+    -- ** Filters
+    , Filters
+    , filters
+    , fNextLink
+    , fItemsPerPage
+    , fKind
+    , fUsername
+    , fItems
+    , fTotalResults
+    , fStartIndex
+    , fPreviousLink
+
+    -- ** GaData
+    , GaData
+    , gaData
+    , gdNextLink
+    , gdSampleSpace
+    , gdItemsPerPage
+    , gdProFileInfo
+    , gdKind
+    , gdSampleSize
+    , gdRows
+    , gdSelfLink
+    , gdQuery
+    , gdColumnHeaders
+    , gdId
+    , gdTotalResults
+    , gdDataTable
+    , gdContainsSampledData
+    , gdTotalsForAllResults
+    , gdPreviousLink
+
+    -- ** RealtimeDataTotalsForAllResults
+    , RealtimeDataTotalsForAllResults
+    , realtimeDataTotalsForAllResults
+    , rdtfarAddtional
+
+    -- ** CustomDataSource
+    , CustomDataSource
+    , customDataSource
+    , cParentLink
+    , cWebPropertyId
+    , cChildLink
+    , cKind
+    , cCreated
+    , cUploadType
+    , cImportBehavior
+    , cSelfLink
+    , cAccountId
+    , cName
+    , cId
+    , cUpdated
+    , cType
+    , cDescription
+    , cProFilesLinked
+
+    -- ** WebPropertyRef
+    , WebPropertyRef
+    , webPropertyRef
+    , wprKind
+    , wprHref
+    , wprAccountId
+    , wprName
+    , wprInternalWebPropertyId
+    , wprId
+
+    -- ** Goals
+    , Goals
+    , goals
+    , gNextLink
+    , gItemsPerPage
+    , gKind
+    , gUsername
+    , gItems
+    , gTotalResults
+    , gStartIndex
+    , gPreviousLink
+
+    -- ** McfDataRowsItemItem
+    , McfDataRowsItemItem
+    , mcfDataRowsItemItem
+    , mdriiPrimitiveValue
+    , mdriiConversionPathValue
+
+    -- ** AccountPermissions
+    , AccountPermissions
+    , accountPermissions
+    , apEffective
+
+    -- ** EntityUserLinkEntity
+    , EntityUserLinkEntity
+    , entityUserLinkEntity
+    , euleProFileRef
+    , euleAccountRef
+    , euleWebPropertyRef
+
+    -- ** Account
+    , Account
+    , account
+    , accChildLink
+    , accKind
+    , accCreated
+    , accSelfLink
+    , accName
+    , accId
+    , accUpdated
+    , accPermissions
+
+    -- ** Experiment
+    , Experiment
+    , experiment
+    , expParentLink
+    , expEqualWeighting
+    , expStatus
+    , expWebPropertyId
+    , expStartTime
+    , expSnippet
+    , expKind
+    , expCreated
+    , expReasonExperimentEnded
+    , expTrafficCoverage
+    , expEditableInGaUi
+    , expMinimumExperimentLengthInDays
+    , expProFileId
+    , expOptimizationType
+    , expSelfLink
+    , expAccountId
+    , expName
+    , expWinnerFound
+    , expEndTime
+    , expVariations
+    , expInternalWebPropertyId
+    , expId
+    , expUpdated
+    , expRewriteVariationURLsAsOriginal
+    , expObjectiveMetric
+    , expWinnerConfidenceLevel
+    , expServingFramework
+    , expDescription
+
+    -- ** EntityUserLinks
+    , EntityUserLinks
+    , entityUserLinks
+    , eulNextLink
+    , eulItemsPerPage
+    , eulKind
+    , eulItems
+    , eulTotalResults
+    , eulStartIndex
+    , eulPreviousLink
+
+    -- ** AdWordsAccount
+    , AdWordsAccount
+    , adWordsAccount
+    , awaAutoTaggingEnabled
+    , awaKind
+    , awaCustomerId
+
+    -- ** FilterRef
+    , FilterRef
+    , filterRef
+    , frKind
+    , frHref
+    , frAccountId
+    , frName
+    , frId
+
+    -- ** GoalVisitTimeOnSiteDetails
+    , GoalVisitTimeOnSiteDetails
+    , goalVisitTimeOnSiteDetails
+    , gvtosdComparisonValue
+    , gvtosdComparisonType
+
+    -- ** WebProperties
+    , WebProperties
+    , webProperties
+    , wpNextLink
+    , wpItemsPerPage
+    , wpKind
+    , wpUsername
+    , wpItems
+    , wpTotalResults
+    , wpStartIndex
+    , wpPreviousLink
+
+    -- ** CustomMetrics
+    , CustomMetrics
+    , customMetrics
+    , cmNextLink
+    , cmItemsPerPage
+    , cmKind
+    , cmUsername
+    , cmItems
+    , cmTotalResults
+    , cmStartIndex
+    , cmPreviousLink
+
+    -- ** FilterAdvancedDetails
+    , FilterAdvancedDetails
+    , filterAdvancedDetails
+    , fadExtractA
+    , fadFieldARequired
+    , fadFieldA
+    , fadFieldBIndex
+    , fadOutputToField
+    , fadOutputConstructor
+    , fadExtractB
+    , fadFieldAIndex
+    , fadCaseSensitive
+    , fadOutputToFieldIndex
+    , fadFieldB
+    , fadFieldBRequired
+    , fadOverrideOutputField
+
+    -- ** FilterUppercaseDetails
+    , FilterUppercaseDetails
+    , filterUppercaseDetails
+    , fudFieldIndex
+    , fudField
+
+    -- ** CustomDataSourceChildLink
+    , CustomDataSourceChildLink
+    , customDataSourceChildLink
+    , cdsclHref
+    , cdsclType
+
+    -- ** FilterParentLink
+    , FilterParentLink
+    , filterParentLink
+    , fplHref
+    , fplType
+
+    -- ** DataGaGetOutput
+    , DataGaGetOutput (..)
+
+    -- ** RealtimeData
+    , RealtimeData
+    , realtimeData
+    , rdProFileInfo
+    , rdKind
+    , rdRows
+    , rdSelfLink
+    , rdQuery
+    , rdColumnHeaders
+    , rdId
+    , rdTotalResults
+    , rdTotalsForAllResults
+
+    -- ** CustomMetric
+    , CustomMetric
+    , customMetric
+    , cusParentLink
+    , cusWebPropertyId
+    , cusKind
+    , cusMaxValue
+    , cusCreated
+    , cusMinValue
+    , cusActive
+    , cusSelfLink
+    , cusAccountId
+    , cusName
+    , cusScope
+    , cusId
+    , cusUpdated
+    , cusType
+    , cusIndex
+
+    -- ** ProFileSummary
+    , ProFileSummary
+    , proFileSummary
+    , pfsKind
+    , pfsName
+    , pfsId
+    , pfsType
+
+    -- ** CustomDimensionParentLink
+    , CustomDimensionParentLink
+    , customDimensionParentLink
+    , cdplHref
+    , cdplType
+
+    -- ** WebProperty
+    , WebProperty
+    , webProperty
+    , wParentLink
+    , wChildLink
+    , wDefaultProFileId
+    , wKind
+    , wCreated
+    , wSelfLink
+    , wAccountId
+    , wName
+    , wInternalWebPropertyId
+    , wId
+    , wUpdated
+    , wProFileCount
+    , wPermissions
+    , wWebsiteURL
+    , wIndustryVertical
+    , wLevel
+
+    -- ** WebPropertyPermissions
+    , WebPropertyPermissions
+    , webPropertyPermissions
+    , wppEffective
+
+    -- ** EntityUserLink
+    , EntityUserLink
+    , entityUserLink
+    , euluKind
+    , euluUserRef
+    , euluSelfLink
+    , euluId
+    , euluPermissions
+    , euluEntity
+
+    -- ** CustomDataSourceParentLink
+    , CustomDataSourceParentLink
+    , customDataSourceParentLink
+    , cdsplHref
+    , cdsplType
+
+    -- ** GoalEventDetailsEventConditionsItem
+    , GoalEventDetailsEventConditionsItem
+    , goalEventDetailsEventConditionsItem
+    , gedeciMatchType
+    , gedeciExpression
+    , gedeciComparisonValue
+    , gedeciType
+    , gedeciComparisonType
+
+    -- ** McfDataQuery
+    , McfDataQuery
+    , mcfDataQuery
+    , mdqMetrics
+    , mdqSamplingLevel
+    , mdqFilters
+    , mdqIds
+    , mdqEndDate
+    , mdqSort
+    , mdqDimensions
+    , mdqStartIndex
+    , mdqMaxResults
+    , mdqSegment
+    , mdqStartDate
+
+    -- ** Goal
+    , Goal
+    , goal
+    , goaParentLink
+    , goaWebPropertyId
+    , goaKind
+    , goaCreated
+    , goaValue
+    , goaProFileId
+    , goaEventDetails
+    , goaActive
+    , goaSelfLink
+    , goaVisitTimeOnSiteDetails
+    , goaAccountId
+    , goaName
+    , goaInternalWebPropertyId
+    , goaId
+    , goaURLDestinationDetails
+    , goaVisitNumPagesDetails
+    , goaUpdated
+    , goaType
+
+    -- ** AccountTicket
+    , AccountTicket
+    , accountTicket
+    , atRedirectURI
+    , atKind
+    , atProFile
+    , atAccount
+    , atWebProperty
+    , atId
+
+    -- ** AccountSummary
+    , AccountSummary
+    , accountSummary
+    , assKind
+    , assWebProperties
+    , assName
+    , assId
+
+    -- ** RealtimeDataQuery
+    , RealtimeDataQuery
+    , realtimeDataQuery
+    , rdqMetrics
+    , rdqFilters
+    , rdqIds
+    , rdqSort
+    , rdqDimensions
+    , rdqMaxResults
+
+    -- ** Columns
+    , Columns
+    , columns
+    , colEtag
+    , colKind
+    , colItems
+    , colTotalResults
+    , colAttributeNames
+
+    -- ** FilterLowercaseDetails
+    , FilterLowercaseDetails
+    , filterLowercaseDetails
+    , fldFieldIndex
+    , fldField
+
+    -- ** Filter
+    , Filter
+    , filter'
+    , filParentLink
+    , filAdvancedDetails
+    , filUppercaseDetails
+    , filLowercaseDetails
+    , filKind
+    , filCreated
+    , filIncludeDetails
+    , filExcludeDetails
+    , filSelfLink
+    , filAccountId
+    , filName
+    , filId
+    , filUpdated
+    , filType
+    , filSearchAndReplaceDetails
+
+    -- ** Uploads
+    , Uploads
+    , uploads
+    , uplNextLink
+    , uplItemsPerPage
+    , uplKind
+    , uplItems
+    , uplTotalResults
+    , uplStartIndex
+    , uplPreviousLink
+
+    -- ** CustomDimensions
+    , CustomDimensions
+    , customDimensions
+    , cdNextLink
+    , cdItemsPerPage
+    , cdKind
+    , cdUsername
+    , cdItems
+    , cdTotalResults
+    , cdStartIndex
+    , cdPreviousLink
+
+    -- ** Segments
+    , Segments
+    , segments
+    , sNextLink
+    , sItemsPerPage
+    , sKind
+    , sUsername
+    , sItems
+    , sTotalResults
+    , sStartIndex
+    , sPreviousLink
+
+    -- ** GaDataDataTable
+    , GaDataDataTable
+    , gaDataDataTable
+    , gddtCols
+    , gddtRows
+
+    -- ** EntityAdWordsLinkEntity
+    , EntityAdWordsLinkEntity
+    , entityAdWordsLinkEntity
+    , eawleWebPropertyRef
+
+    -- ** GoalURLDestinationDetails
+    , GoalURLDestinationDetails
+    , goalURLDestinationDetails
+    , guddURL
+    , guddMatchType
+    , guddSteps
+    , guddCaseSensitive
+    , guddFirstStepRequired
+
+    -- ** ProFileFilterLinks
+    , ProFileFilterLinks
+    , proFileFilterLinks
+    , pfflNextLink
+    , pfflItemsPerPage
+    , pfflKind
+    , pfflUsername
+    , pfflItems
+    , pfflTotalResults
+    , pfflStartIndex
+    , pfflPreviousLink
+
+    -- ** WebPropertyParentLink
+    , WebPropertyParentLink
+    , webPropertyParentLink
+    , wpplHref
+    , wpplType
+
+    -- ** GaDataProFileInfo
+    , GaDataProFileInfo
+    , gaDataProFileInfo
+    , gdpfiWebPropertyId
+    , gdpfiProFileId
+    , gdpfiProFileName
+    , gdpfiAccountId
+    , gdpfiInternalWebPropertyId
+    , gdpfiTableId
+
+    -- ** Upload
+    , Upload
+    , upload
+    , uuStatus
+    , uuKind
+    , uuCustomDataSourceId
+    , uuAccountId
+    , uuId
+    , uuErrors
+
+    -- ** DataMcfGetSamplingLevel
+    , DataMcfGetSamplingLevel (..)
+
+    -- ** CustomDimension
+    , CustomDimension
+    , customDimension
+    , cddParentLink
+    , cddWebPropertyId
+    , cddKind
+    , cddCreated
+    , cddActive
+    , cddSelfLink
+    , cddAccountId
+    , cddName
+    , cddScope
+    , cddId
+    , cddUpdated
+    , cddIndex
+
+    -- ** Segment
+    , Segment
+    , segment
+    , segDefinition
+    , segKind
+    , segCreated
+    , segSelfLink
+    , segName
+    , segId
+    , segUpdated
+    , segType
+    , segSegmentId
+
+    -- ** AccountChildLink
+    , AccountChildLink
+    , accountChildLink
+    , aclHref
+    , aclType
+
+    -- ** ProFileFilterLink
+    , ProFileFilterLink
+    , proFileFilterLink
+    , proProFileRef
+    , proKind
+    , proFilterRef
+    , proSelfLink
+    , proId
+    , proRank
+
+    -- ** CustomMetricParentLink
+    , CustomMetricParentLink
+    , customMetricParentLink
+    , cmplHref
+    , cmplType
+
+    -- ** Column
+    , Column
+    , column
+    , ccKind
+    , ccAttributes
+    , ccId
+
+    -- ** GaDataDataTableColsItem
+    , GaDataDataTableColsItem
+    , gaDataDataTableColsItem
+    , gddtciId
+    , gddtciType
+    , gddtciLabel
+
+    -- ** ExperimentVariationsItem
+    , ExperimentVariationsItem
+    , experimentVariationsItem
+    , eviStatus
+    , eviWeight
+    , eviURL
+    , eviWon
+    , eviName
+
+    -- ** McfDataTotalsForAllResults
+    , McfDataTotalsForAllResults
+    , mcfDataTotalsForAllResults
+    , mdtfarAddtional
+
+    -- ** UnSampledReportCloudStorageDownloadDetails
+    , UnSampledReportCloudStorageDownloadDetails
+    , unSampledReportCloudStorageDownloadDetails
+    , usrcsddObjectId
+    , usrcsddBucketId
+
+    -- ** ProFileChildLink
+    , ProFileChildLink
+    , proFileChildLink
+    , pfclHref
+    , pfclType
+
+    -- ** GaDataColumnHeadersItem
+    , GaDataColumnHeadersItem
+    , gaDataColumnHeadersItem
+    , gdchiColumnType
+    , gdchiName
+    , gdchiDataType
+
+    -- ** GoalParentLink
+    , GoalParentLink
+    , goalParentLink
+    , gplHref
+    , gplType
+
+    -- ** ColumnAttributes
+    , ColumnAttributes
+    , columnAttributes
+    , caAddtional
+    ) where
+
+import           Network.Google.Analytics.Types
+import           Network.Google.Prelude
+import           Network.Google.Resource.Analytics.Data.Ga.Get
+import           Network.Google.Resource.Analytics.Data.Mcf.Get
+import           Network.Google.Resource.Analytics.Data.Realtime.Get
+import           Network.Google.Resource.Analytics.Management.Accounts.List
+import           Network.Google.Resource.Analytics.Management.AccountSummaries.List
+import           Network.Google.Resource.Analytics.Management.AccountUserLinks.Delete
+import           Network.Google.Resource.Analytics.Management.AccountUserLinks.Insert
+import           Network.Google.Resource.Analytics.Management.AccountUserLinks.List
+import           Network.Google.Resource.Analytics.Management.AccountUserLinks.Update
+import           Network.Google.Resource.Analytics.Management.CustomDataSources.List
+import           Network.Google.Resource.Analytics.Management.CustomDimensions.Get
+import           Network.Google.Resource.Analytics.Management.CustomDimensions.Insert
+import           Network.Google.Resource.Analytics.Management.CustomDimensions.List
+import           Network.Google.Resource.Analytics.Management.CustomDimensions.Patch
+import           Network.Google.Resource.Analytics.Management.CustomDimensions.Update
+import           Network.Google.Resource.Analytics.Management.CustomMetrics.Get
+import           Network.Google.Resource.Analytics.Management.CustomMetrics.Insert
+import           Network.Google.Resource.Analytics.Management.CustomMetrics.List
+import           Network.Google.Resource.Analytics.Management.CustomMetrics.Patch
+import           Network.Google.Resource.Analytics.Management.CustomMetrics.Update
+import           Network.Google.Resource.Analytics.Management.Experiments.Delete
+import           Network.Google.Resource.Analytics.Management.Experiments.Get
+import           Network.Google.Resource.Analytics.Management.Experiments.Insert
+import           Network.Google.Resource.Analytics.Management.Experiments.List
+import           Network.Google.Resource.Analytics.Management.Experiments.Patch
+import           Network.Google.Resource.Analytics.Management.Experiments.Update
+import           Network.Google.Resource.Analytics.Management.Filters.Delete
+import           Network.Google.Resource.Analytics.Management.Filters.Get
+import           Network.Google.Resource.Analytics.Management.Filters.Insert
+import           Network.Google.Resource.Analytics.Management.Filters.List
+import           Network.Google.Resource.Analytics.Management.Filters.Patch
+import           Network.Google.Resource.Analytics.Management.Filters.Update
+import           Network.Google.Resource.Analytics.Management.Goals.Get
+import           Network.Google.Resource.Analytics.Management.Goals.Insert
+import           Network.Google.Resource.Analytics.Management.Goals.List
+import           Network.Google.Resource.Analytics.Management.Goals.Patch
+import           Network.Google.Resource.Analytics.Management.Goals.Update
+import           Network.Google.Resource.Analytics.Management.ProFileFilterLinks.Delete
+import           Network.Google.Resource.Analytics.Management.ProFileFilterLinks.Get
+import           Network.Google.Resource.Analytics.Management.ProFileFilterLinks.Insert
+import           Network.Google.Resource.Analytics.Management.ProFileFilterLinks.List
+import           Network.Google.Resource.Analytics.Management.ProFileFilterLinks.Patch
+import           Network.Google.Resource.Analytics.Management.ProFileFilterLinks.Update
+import           Network.Google.Resource.Analytics.Management.ProFiles.Delete
+import           Network.Google.Resource.Analytics.Management.ProFiles.Get
+import           Network.Google.Resource.Analytics.Management.ProFiles.Insert
+import           Network.Google.Resource.Analytics.Management.ProFiles.List
+import           Network.Google.Resource.Analytics.Management.ProFiles.Patch
+import           Network.Google.Resource.Analytics.Management.ProFiles.Update
+import           Network.Google.Resource.Analytics.Management.ProFileUserLinks.Delete
+import           Network.Google.Resource.Analytics.Management.ProFileUserLinks.Insert
+import           Network.Google.Resource.Analytics.Management.ProFileUserLinks.List
+import           Network.Google.Resource.Analytics.Management.ProFileUserLinks.Update
+import           Network.Google.Resource.Analytics.Management.Segments.List
+import           Network.Google.Resource.Analytics.Management.UnSampledReports.Get
+import           Network.Google.Resource.Analytics.Management.UnSampledReports.Insert
+import           Network.Google.Resource.Analytics.Management.UnSampledReports.List
+import           Network.Google.Resource.Analytics.Management.Uploads.DeleteUploadData
+import           Network.Google.Resource.Analytics.Management.Uploads.Get
+import           Network.Google.Resource.Analytics.Management.Uploads.List
+import           Network.Google.Resource.Analytics.Management.Uploads.UploadData
+import           Network.Google.Resource.Analytics.Management.WebProperties.Get
+import           Network.Google.Resource.Analytics.Management.WebProperties.Insert
+import           Network.Google.Resource.Analytics.Management.WebProperties.List
+import           Network.Google.Resource.Analytics.Management.WebProperties.Patch
+import           Network.Google.Resource.Analytics.Management.WebProperties.Update
+import           Network.Google.Resource.Analytics.Management.WebPropertyAdWordsLinks.Delete
+import           Network.Google.Resource.Analytics.Management.WebPropertyAdWordsLinks.Get
+import           Network.Google.Resource.Analytics.Management.WebPropertyAdWordsLinks.Insert
+import           Network.Google.Resource.Analytics.Management.WebPropertyAdWordsLinks.List
+import           Network.Google.Resource.Analytics.Management.WebPropertyAdWordsLinks.Patch
+import           Network.Google.Resource.Analytics.Management.WebPropertyAdWordsLinks.Update
+import           Network.Google.Resource.Analytics.Management.WebPropertyUserLinks.Delete
+import           Network.Google.Resource.Analytics.Management.WebPropertyUserLinks.Insert
+import           Network.Google.Resource.Analytics.Management.WebPropertyUserLinks.List
+import           Network.Google.Resource.Analytics.Management.WebPropertyUserLinks.Update
+import           Network.Google.Resource.Analytics.Metadata.Columns.List
+import           Network.Google.Resource.Analytics.Provisioning.CreateAccountTicket
+
+{- $resources
+TODO
+-}
+
+-- | Represents the entirety of the methods and resources available for the Google Analytics API service.
+type AnalyticsAPI =
+     DataMcfGetResource :<|> DataGaGetResource :<|>
+       DataRealtimeGetResource
+       :<|> ManagementWebPropertyAdWordsLinksInsertResource
+       :<|> ManagementWebPropertyAdWordsLinksListResource
+       :<|> ManagementWebPropertyAdWordsLinksPatchResource
+       :<|> ManagementWebPropertyAdWordsLinksGetResource
+       :<|> ManagementWebPropertyAdWordsLinksDeleteResource
+       :<|> ManagementWebPropertyAdWordsLinksUpdateResource
+       :<|> ManagementUnSampledReportsInsertResource
+       :<|> ManagementUnSampledReportsListResource
+       :<|> ManagementUnSampledReportsGetResource
+       :<|> ManagementAccountsListResource
+       :<|> ManagementExperimentsInsertResource
+       :<|> ManagementExperimentsListResource
+       :<|> ManagementExperimentsPatchResource
+       :<|> ManagementExperimentsGetResource
+       :<|> ManagementExperimentsDeleteResource
+       :<|> ManagementExperimentsUpdateResource
+       :<|> ManagementCustomDataSourcesListResource
+       :<|> ManagementWebPropertyUserLinksInsertResource
+       :<|> ManagementWebPropertyUserLinksListResource
+       :<|> ManagementWebPropertyUserLinksDeleteResource
+       :<|> ManagementWebPropertyUserLinksUpdateResource
+       :<|> ManagementProFilesInsertResource
+       :<|> ManagementProFilesListResource
+       :<|> ManagementProFilesPatchResource
+       :<|> ManagementProFilesGetResource
+       :<|> ManagementProFilesDeleteResource
+       :<|> ManagementProFilesUpdateResource
+       :<|> ManagementFiltersInsertResource
+       :<|> ManagementFiltersListResource
+       :<|> ManagementFiltersPatchResource
+       :<|> ManagementFiltersGetResource
+       :<|> ManagementFiltersDeleteResource
+       :<|> ManagementFiltersUpdateResource
+       :<|> ManagementAccountSummariesListResource
+       :<|> ManagementGoalsInsertResource
+       :<|> ManagementGoalsListResource
+       :<|> ManagementGoalsPatchResource
+       :<|> ManagementGoalsGetResource
+       :<|> ManagementGoalsUpdateResource
+       :<|> ManagementWebPropertiesInsertResource
+       :<|> ManagementWebPropertiesListResource
+       :<|> ManagementWebPropertiesPatchResource
+       :<|> ManagementWebPropertiesGetResource
+       :<|> ManagementWebPropertiesUpdateResource
+       :<|> ManagementCustomMetricsInsertResource
+       :<|> ManagementCustomMetricsListResource
+       :<|> ManagementCustomMetricsPatchResource
+       :<|> ManagementCustomMetricsGetResource
+       :<|> ManagementCustomMetricsUpdateResource
+       :<|> ManagementUploadsListResource
+       :<|> ManagementUploadsDeleteUploadDataResource
+       :<|> ManagementUploadsGetResource
+       :<|> ManagementUploadsUploadDataResource
+       :<|> ManagementSegmentsListResource
+       :<|> ManagementProFileFilterLinksInsertResource
+       :<|> ManagementProFileFilterLinksListResource
+       :<|> ManagementProFileFilterLinksPatchResource
+       :<|> ManagementProFileFilterLinksGetResource
+       :<|> ManagementProFileFilterLinksDeleteResource
+       :<|> ManagementProFileFilterLinksUpdateResource
+       :<|> ManagementCustomDimensionsInsertResource
+       :<|> ManagementCustomDimensionsListResource
+       :<|> ManagementCustomDimensionsPatchResource
+       :<|> ManagementCustomDimensionsGetResource
+       :<|> ManagementCustomDimensionsUpdateResource
+       :<|> ManagementAccountUserLinksInsertResource
+       :<|> ManagementAccountUserLinksListResource
+       :<|> ManagementAccountUserLinksDeleteResource
+       :<|> ManagementAccountUserLinksUpdateResource
+       :<|> ManagementProFileUserLinksInsertResource
+       :<|> ManagementProFileUserLinksListResource
+       :<|> ManagementProFileUserLinksDeleteResource
+       :<|> ManagementProFileUserLinksUpdateResource
+       :<|> ProvisioningCreateAccountTicketResource
+       :<|> MetadataColumnsListResource
diff --git a/gen/Network/Google/Analytics/Types.hs b/gen/Network/Google/Analytics/Types.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Analytics/Types.hs
@@ -0,0 +1,1049 @@
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- |
+-- Module      : Network.Google.Analytics.Types
+-- Copyright   : (c) 2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+module Network.Google.Analytics.Types
+    (
+    -- * Service Configuration
+      analyticsService
+
+    -- * OAuth Scopes
+    , analyticsManageUsersScope
+    , analyticsProvisionScope
+    , analyticsManageUsersReadonlyScope
+    , analyticsScope
+    , analyticsReadonlyScope
+    , analyticsEditScope
+
+    -- * UnSampledReports
+    , UnSampledReports
+    , unSampledReports
+    , usrNextLink
+    , usrItemsPerPage
+    , usrKind
+    , usrUsername
+    , usrItems
+    , usrTotalResults
+    , usrStartIndex
+    , usrPreviousLink
+
+    -- * GoalURLDestinationDetailsStepsItem
+    , GoalURLDestinationDetailsStepsItem
+    , goalURLDestinationDetailsStepsItem
+    , guddsiURL
+    , guddsiName
+    , guddsiNumber
+
+    -- * GaDataQuery
+    , GaDataQuery
+    , gaDataQuery
+    , gdqMetrics
+    , gdqSamplingLevel
+    , gdqFilters
+    , gdqIds
+    , gdqEndDate
+    , gdqSort
+    , gdqDimensions
+    , gdqStartIndex
+    , gdqMaxResults
+    , gdqSegment
+    , gdqStartDate
+
+    -- * GaDataDataTableRowsItem
+    , GaDataDataTableRowsItem
+    , gaDataDataTableRowsItem
+    , gddtriC
+
+    -- * UnSampledReport
+    , UnSampledReport
+    , unSampledReport
+    , uDownloadType
+    , uStatus
+    , uMetrics
+    , uDriveDownloadDetails
+    , uWebPropertyId
+    , uKind
+    , uCreated
+    , uFilters
+    , uProFileId
+    , uEndDate
+    , uSelfLink
+    , uAccountId
+    , uId
+    , uUpdated
+    , uTitle
+    , uDimensions
+    , uSegment
+    , uCloudStorageDownloadDetails
+    , uStartDate
+
+    -- * McfDataColumnHeadersItem
+    , McfDataColumnHeadersItem
+    , mcfDataColumnHeadersItem
+    , mdchiColumnType
+    , mdchiName
+    , mdchiDataType
+
+    -- * GaDataTotalsForAllResults
+    , GaDataTotalsForAllResults
+    , gaDataTotalsForAllResults
+    , gdtfarAddtional
+
+    -- * ProFileParentLink
+    , ProFileParentLink
+    , proFileParentLink
+    , pfplHref
+    , pfplType
+
+    -- * GaDataDataTableRowsItemCItem
+    , GaDataDataTableRowsItemCItem
+    , gaDataDataTableRowsItemCItem
+    , gddtriciV
+
+    -- * EntityUserLinkPermissions
+    , EntityUserLinkPermissions
+    , entityUserLinkPermissions
+    , eulpLocal
+    , eulpEffective
+
+    -- * RealtimeDataProFileInfo
+    , RealtimeDataProFileInfo
+    , realtimeDataProFileInfo
+    , rdpfiWebPropertyId
+    , rdpfiProFileId
+    , rdpfiProFileName
+    , rdpfiAccountId
+    , rdpfiInternalWebPropertyId
+    , rdpfiTableId
+
+    -- * McfDataRowsItemItemConversionPathValueItem
+    , McfDataRowsItemItemConversionPathValueItem
+    , mcfDataRowsItemItemConversionPathValueItem
+    , mdriicpviInteractionType
+    , mdriicpviNodeValue
+
+    -- * FilterExpression
+    , FilterExpression
+    , filterExpression
+    , feFieldIndex
+    , feField
+    , feKind
+    , feMatchType
+    , feCaseSensitive
+    , feExpressionValue
+
+    -- * ProFileRef
+    , ProFileRef
+    , proFileRef
+    , pfrWebPropertyId
+    , pfrKind
+    , pfrHref
+    , pfrAccountId
+    , pfrName
+    , pfrInternalWebPropertyId
+    , pfrId
+
+    -- * Accounts
+    , Accounts
+    , accounts
+    , aNextLink
+    , aItemsPerPage
+    , aKind
+    , aUsername
+    , aItems
+    , aTotalResults
+    , aStartIndex
+    , aPreviousLink
+
+    -- * Experiments
+    , Experiments
+    , experiments
+    , eNextLink
+    , eItemsPerPage
+    , eKind
+    , eUsername
+    , eItems
+    , eTotalResults
+    , eStartIndex
+    , ePreviousLink
+
+    -- * ExperimentParentLink
+    , ExperimentParentLink
+    , experimentParentLink
+    , eplHref
+    , eplType
+
+    -- * UnSampledReportDriveDownloadDetails
+    , UnSampledReportDriveDownloadDetails
+    , unSampledReportDriveDownloadDetails
+    , usrdddDocumentId
+
+    -- * McfDataProFileInfo
+    , McfDataProFileInfo
+    , mcfDataProFileInfo
+    , mdpfiWebPropertyId
+    , mdpfiProFileId
+    , mdpfiProFileName
+    , mdpfiAccountId
+    , mdpfiInternalWebPropertyId
+    , mdpfiTableId
+
+    -- * CustomDataSources
+    , CustomDataSources
+    , customDataSources
+    , cdsNextLink
+    , cdsItemsPerPage
+    , cdsKind
+    , cdsUsername
+    , cdsItems
+    , cdsTotalResults
+    , cdsStartIndex
+    , cdsPreviousLink
+
+    -- * WebPropertyChildLink
+    , WebPropertyChildLink
+    , webPropertyChildLink
+    , wpclHref
+    , wpclType
+
+    -- * DataGaGetSamplingLevel
+    , DataGaGetSamplingLevel (..)
+
+    -- * McfData
+    , McfData
+    , mcfData
+    , mdNextLink
+    , mdSampleSpace
+    , mdItemsPerPage
+    , mdProFileInfo
+    , mdKind
+    , mdSampleSize
+    , mdRows
+    , mdSelfLink
+    , mdQuery
+    , mdColumnHeaders
+    , mdId
+    , mdTotalResults
+    , mdContainsSampledData
+    , mdTotalsForAllResults
+    , mdPreviousLink
+
+    -- * UserRef
+    , UserRef
+    , userRef
+    , urEmail
+    , urKind
+    , urId
+
+    -- * GoalVisitNumPagesDetails
+    , GoalVisitNumPagesDetails
+    , goalVisitNumPagesDetails
+    , gvnpdComparisonValue
+    , gvnpdComparisonType
+
+    -- * RealtimeDataColumnHeadersItem
+    , RealtimeDataColumnHeadersItem
+    , realtimeDataColumnHeadersItem
+    , rdchiColumnType
+    , rdchiName
+    , rdchiDataType
+
+    -- * AccountRef
+    , AccountRef
+    , accountRef
+    , arKind
+    , arHref
+    , arName
+    , arId
+
+    -- * EntityAdWordsLinks
+    , EntityAdWordsLinks
+    , entityAdWordsLinks
+    , eawlNextLink
+    , eawlItemsPerPage
+    , eawlKind
+    , eawlItems
+    , eawlTotalResults
+    , eawlStartIndex
+    , eawlPreviousLink
+
+    -- * ProFiles
+    , ProFiles
+    , proFiles
+    , pfNextLink
+    , pfItemsPerPage
+    , pfKind
+    , pfUsername
+    , pfItems
+    , pfTotalResults
+    , pfStartIndex
+    , pfPreviousLink
+
+    -- * AnalyticsDataimportDeleteUploadDataRequest
+    , AnalyticsDataimportDeleteUploadDataRequest
+    , analyticsDataimportDeleteUploadDataRequest
+    , addudrCustomDataImportUids
+
+    -- * EntityAdWordsLink
+    , EntityAdWordsLink
+    , entityAdWordsLink
+    , entAdWordsAccounts
+    , entProFileIds
+    , entKind
+    , entSelfLink
+    , entName
+    , entId
+    , entEntity
+
+    -- * FilterSearchAndReplaceDetails
+    , FilterSearchAndReplaceDetails
+    , filterSearchAndReplaceDetails
+    , fsardFieldIndex
+    , fsardField
+    , fsardSearchString
+    , fsardReplaceString
+    , fsardCaseSensitive
+
+    -- * ProFilePermissions
+    , ProFilePermissions
+    , proFilePermissions
+    , pfpEffective
+
+    -- * ProFile
+    , ProFile
+    , proFile
+    , pParentLink
+    , pECommerceTracking
+    , pSiteSearchCategoryParameters
+    , pWebPropertyId
+    , pChildLink
+    , pSiteSearchQueryParameters
+    , pKind
+    , pDefaultPage
+    , pCreated
+    , pSelfLink
+    , pAccountId
+    , pName
+    , pCurrency
+    , pInternalWebPropertyId
+    , pId
+    , pUpdated
+    , pPermissions
+    , pWebsiteURL
+    , pType
+    , pStripSiteSearchCategoryParameters
+    , pTimezone
+    , pExcludeQueryParameters
+    , pEnhancedECommerceTracking
+    , pStripSiteSearchQueryParameters
+
+    -- * AccountSummaries
+    , AccountSummaries
+    , accountSummaries
+    , asNextLink
+    , asItemsPerPage
+    , asKind
+    , asUsername
+    , asItems
+    , asTotalResults
+    , asStartIndex
+    , asPreviousLink
+
+    -- * GoalEventDetails
+    , GoalEventDetails
+    , goalEventDetails
+    , gedUseEventValue
+    , gedEventConditions
+
+    -- * WebPropertySummary
+    , WebPropertySummary
+    , webPropertySummary
+    , wpsKind
+    , wpsProFiles
+    , wpsName
+    , wpsInternalWebPropertyId
+    , wpsId
+    , wpsWebsiteURL
+    , wpsLevel
+
+    -- * Filters
+    , Filters
+    , filters
+    , fNextLink
+    , fItemsPerPage
+    , fKind
+    , fUsername
+    , fItems
+    , fTotalResults
+    , fStartIndex
+    , fPreviousLink
+
+    -- * GaData
+    , GaData
+    , gaData
+    , gdNextLink
+    , gdSampleSpace
+    , gdItemsPerPage
+    , gdProFileInfo
+    , gdKind
+    , gdSampleSize
+    , gdRows
+    , gdSelfLink
+    , gdQuery
+    , gdColumnHeaders
+    , gdId
+    , gdTotalResults
+    , gdDataTable
+    , gdContainsSampledData
+    , gdTotalsForAllResults
+    , gdPreviousLink
+
+    -- * RealtimeDataTotalsForAllResults
+    , RealtimeDataTotalsForAllResults
+    , realtimeDataTotalsForAllResults
+    , rdtfarAddtional
+
+    -- * CustomDataSource
+    , CustomDataSource
+    , customDataSource
+    , cParentLink
+    , cWebPropertyId
+    , cChildLink
+    , cKind
+    , cCreated
+    , cUploadType
+    , cImportBehavior
+    , cSelfLink
+    , cAccountId
+    , cName
+    , cId
+    , cUpdated
+    , cType
+    , cDescription
+    , cProFilesLinked
+
+    -- * WebPropertyRef
+    , WebPropertyRef
+    , webPropertyRef
+    , wprKind
+    , wprHref
+    , wprAccountId
+    , wprName
+    , wprInternalWebPropertyId
+    , wprId
+
+    -- * Goals
+    , Goals
+    , goals
+    , gNextLink
+    , gItemsPerPage
+    , gKind
+    , gUsername
+    , gItems
+    , gTotalResults
+    , gStartIndex
+    , gPreviousLink
+
+    -- * McfDataRowsItemItem
+    , McfDataRowsItemItem
+    , mcfDataRowsItemItem
+    , mdriiPrimitiveValue
+    , mdriiConversionPathValue
+
+    -- * AccountPermissions
+    , AccountPermissions
+    , accountPermissions
+    , apEffective
+
+    -- * EntityUserLinkEntity
+    , EntityUserLinkEntity
+    , entityUserLinkEntity
+    , euleProFileRef
+    , euleAccountRef
+    , euleWebPropertyRef
+
+    -- * Account
+    , Account
+    , account
+    , accChildLink
+    , accKind
+    , accCreated
+    , accSelfLink
+    , accName
+    , accId
+    , accUpdated
+    , accPermissions
+
+    -- * Experiment
+    , Experiment
+    , experiment
+    , expParentLink
+    , expEqualWeighting
+    , expStatus
+    , expWebPropertyId
+    , expStartTime
+    , expSnippet
+    , expKind
+    , expCreated
+    , expReasonExperimentEnded
+    , expTrafficCoverage
+    , expEditableInGaUi
+    , expMinimumExperimentLengthInDays
+    , expProFileId
+    , expOptimizationType
+    , expSelfLink
+    , expAccountId
+    , expName
+    , expWinnerFound
+    , expEndTime
+    , expVariations
+    , expInternalWebPropertyId
+    , expId
+    , expUpdated
+    , expRewriteVariationURLsAsOriginal
+    , expObjectiveMetric
+    , expWinnerConfidenceLevel
+    , expServingFramework
+    , expDescription
+
+    -- * EntityUserLinks
+    , EntityUserLinks
+    , entityUserLinks
+    , eulNextLink
+    , eulItemsPerPage
+    , eulKind
+    , eulItems
+    , eulTotalResults
+    , eulStartIndex
+    , eulPreviousLink
+
+    -- * AdWordsAccount
+    , AdWordsAccount
+    , adWordsAccount
+    , awaAutoTaggingEnabled
+    , awaKind
+    , awaCustomerId
+
+    -- * FilterRef
+    , FilterRef
+    , filterRef
+    , frKind
+    , frHref
+    , frAccountId
+    , frName
+    , frId
+
+    -- * GoalVisitTimeOnSiteDetails
+    , GoalVisitTimeOnSiteDetails
+    , goalVisitTimeOnSiteDetails
+    , gvtosdComparisonValue
+    , gvtosdComparisonType
+
+    -- * WebProperties
+    , WebProperties
+    , webProperties
+    , wpNextLink
+    , wpItemsPerPage
+    , wpKind
+    , wpUsername
+    , wpItems
+    , wpTotalResults
+    , wpStartIndex
+    , wpPreviousLink
+
+    -- * CustomMetrics
+    , CustomMetrics
+    , customMetrics
+    , cmNextLink
+    , cmItemsPerPage
+    , cmKind
+    , cmUsername
+    , cmItems
+    , cmTotalResults
+    , cmStartIndex
+    , cmPreviousLink
+
+    -- * FilterAdvancedDetails
+    , FilterAdvancedDetails
+    , filterAdvancedDetails
+    , fadExtractA
+    , fadFieldARequired
+    , fadFieldA
+    , fadFieldBIndex
+    , fadOutputToField
+    , fadOutputConstructor
+    , fadExtractB
+    , fadFieldAIndex
+    , fadCaseSensitive
+    , fadOutputToFieldIndex
+    , fadFieldB
+    , fadFieldBRequired
+    , fadOverrideOutputField
+
+    -- * FilterUppercaseDetails
+    , FilterUppercaseDetails
+    , filterUppercaseDetails
+    , fudFieldIndex
+    , fudField
+
+    -- * CustomDataSourceChildLink
+    , CustomDataSourceChildLink
+    , customDataSourceChildLink
+    , cdsclHref
+    , cdsclType
+
+    -- * FilterParentLink
+    , FilterParentLink
+    , filterParentLink
+    , fplHref
+    , fplType
+
+    -- * DataGaGetOutput
+    , DataGaGetOutput (..)
+
+    -- * RealtimeData
+    , RealtimeData
+    , realtimeData
+    , rdProFileInfo
+    , rdKind
+    , rdRows
+    , rdSelfLink
+    , rdQuery
+    , rdColumnHeaders
+    , rdId
+    , rdTotalResults
+    , rdTotalsForAllResults
+
+    -- * CustomMetric
+    , CustomMetric
+    , customMetric
+    , cusParentLink
+    , cusWebPropertyId
+    , cusKind
+    , cusMaxValue
+    , cusCreated
+    , cusMinValue
+    , cusActive
+    , cusSelfLink
+    , cusAccountId
+    , cusName
+    , cusScope
+    , cusId
+    , cusUpdated
+    , cusType
+    , cusIndex
+
+    -- * ProFileSummary
+    , ProFileSummary
+    , proFileSummary
+    , pfsKind
+    , pfsName
+    , pfsId
+    , pfsType
+
+    -- * CustomDimensionParentLink
+    , CustomDimensionParentLink
+    , customDimensionParentLink
+    , cdplHref
+    , cdplType
+
+    -- * WebProperty
+    , WebProperty
+    , webProperty
+    , wParentLink
+    , wChildLink
+    , wDefaultProFileId
+    , wKind
+    , wCreated
+    , wSelfLink
+    , wAccountId
+    , wName
+    , wInternalWebPropertyId
+    , wId
+    , wUpdated
+    , wProFileCount
+    , wPermissions
+    , wWebsiteURL
+    , wIndustryVertical
+    , wLevel
+
+    -- * WebPropertyPermissions
+    , WebPropertyPermissions
+    , webPropertyPermissions
+    , wppEffective
+
+    -- * EntityUserLink
+    , EntityUserLink
+    , entityUserLink
+    , euluKind
+    , euluUserRef
+    , euluSelfLink
+    , euluId
+    , euluPermissions
+    , euluEntity
+
+    -- * CustomDataSourceParentLink
+    , CustomDataSourceParentLink
+    , customDataSourceParentLink
+    , cdsplHref
+    , cdsplType
+
+    -- * GoalEventDetailsEventConditionsItem
+    , GoalEventDetailsEventConditionsItem
+    , goalEventDetailsEventConditionsItem
+    , gedeciMatchType
+    , gedeciExpression
+    , gedeciComparisonValue
+    , gedeciType
+    , gedeciComparisonType
+
+    -- * McfDataQuery
+    , McfDataQuery
+    , mcfDataQuery
+    , mdqMetrics
+    , mdqSamplingLevel
+    , mdqFilters
+    , mdqIds
+    , mdqEndDate
+    , mdqSort
+    , mdqDimensions
+    , mdqStartIndex
+    , mdqMaxResults
+    , mdqSegment
+    , mdqStartDate
+
+    -- * Goal
+    , Goal
+    , goal
+    , goaParentLink
+    , goaWebPropertyId
+    , goaKind
+    , goaCreated
+    , goaValue
+    , goaProFileId
+    , goaEventDetails
+    , goaActive
+    , goaSelfLink
+    , goaVisitTimeOnSiteDetails
+    , goaAccountId
+    , goaName
+    , goaInternalWebPropertyId
+    , goaId
+    , goaURLDestinationDetails
+    , goaVisitNumPagesDetails
+    , goaUpdated
+    , goaType
+
+    -- * AccountTicket
+    , AccountTicket
+    , accountTicket
+    , atRedirectURI
+    , atKind
+    , atProFile
+    , atAccount
+    , atWebProperty
+    , atId
+
+    -- * AccountSummary
+    , AccountSummary
+    , accountSummary
+    , assKind
+    , assWebProperties
+    , assName
+    , assId
+
+    -- * RealtimeDataQuery
+    , RealtimeDataQuery
+    , realtimeDataQuery
+    , rdqMetrics
+    , rdqFilters
+    , rdqIds
+    , rdqSort
+    , rdqDimensions
+    , rdqMaxResults
+
+    -- * Columns
+    , Columns
+    , columns
+    , colEtag
+    , colKind
+    , colItems
+    , colTotalResults
+    , colAttributeNames
+
+    -- * FilterLowercaseDetails
+    , FilterLowercaseDetails
+    , filterLowercaseDetails
+    , fldFieldIndex
+    , fldField
+
+    -- * Filter
+    , Filter
+    , filter'
+    , filParentLink
+    , filAdvancedDetails
+    , filUppercaseDetails
+    , filLowercaseDetails
+    , filKind
+    , filCreated
+    , filIncludeDetails
+    , filExcludeDetails
+    , filSelfLink
+    , filAccountId
+    , filName
+    , filId
+    , filUpdated
+    , filType
+    , filSearchAndReplaceDetails
+
+    -- * Uploads
+    , Uploads
+    , uploads
+    , uplNextLink
+    , uplItemsPerPage
+    , uplKind
+    , uplItems
+    , uplTotalResults
+    , uplStartIndex
+    , uplPreviousLink
+
+    -- * CustomDimensions
+    , CustomDimensions
+    , customDimensions
+    , cdNextLink
+    , cdItemsPerPage
+    , cdKind
+    , cdUsername
+    , cdItems
+    , cdTotalResults
+    , cdStartIndex
+    , cdPreviousLink
+
+    -- * Segments
+    , Segments
+    , segments
+    , sNextLink
+    , sItemsPerPage
+    , sKind
+    , sUsername
+    , sItems
+    , sTotalResults
+    , sStartIndex
+    , sPreviousLink
+
+    -- * GaDataDataTable
+    , GaDataDataTable
+    , gaDataDataTable
+    , gddtCols
+    , gddtRows
+
+    -- * EntityAdWordsLinkEntity
+    , EntityAdWordsLinkEntity
+    , entityAdWordsLinkEntity
+    , eawleWebPropertyRef
+
+    -- * GoalURLDestinationDetails
+    , GoalURLDestinationDetails
+    , goalURLDestinationDetails
+    , guddURL
+    , guddMatchType
+    , guddSteps
+    , guddCaseSensitive
+    , guddFirstStepRequired
+
+    -- * ProFileFilterLinks
+    , ProFileFilterLinks
+    , proFileFilterLinks
+    , pfflNextLink
+    , pfflItemsPerPage
+    , pfflKind
+    , pfflUsername
+    , pfflItems
+    , pfflTotalResults
+    , pfflStartIndex
+    , pfflPreviousLink
+
+    -- * WebPropertyParentLink
+    , WebPropertyParentLink
+    , webPropertyParentLink
+    , wpplHref
+    , wpplType
+
+    -- * GaDataProFileInfo
+    , GaDataProFileInfo
+    , gaDataProFileInfo
+    , gdpfiWebPropertyId
+    , gdpfiProFileId
+    , gdpfiProFileName
+    , gdpfiAccountId
+    , gdpfiInternalWebPropertyId
+    , gdpfiTableId
+
+    -- * Upload
+    , Upload
+    , upload
+    , uuStatus
+    , uuKind
+    , uuCustomDataSourceId
+    , uuAccountId
+    , uuId
+    , uuErrors
+
+    -- * DataMcfGetSamplingLevel
+    , DataMcfGetSamplingLevel (..)
+
+    -- * CustomDimension
+    , CustomDimension
+    , customDimension
+    , cddParentLink
+    , cddWebPropertyId
+    , cddKind
+    , cddCreated
+    , cddActive
+    , cddSelfLink
+    , cddAccountId
+    , cddName
+    , cddScope
+    , cddId
+    , cddUpdated
+    , cddIndex
+
+    -- * Segment
+    , Segment
+    , segment
+    , segDefinition
+    , segKind
+    , segCreated
+    , segSelfLink
+    , segName
+    , segId
+    , segUpdated
+    , segType
+    , segSegmentId
+
+    -- * AccountChildLink
+    , AccountChildLink
+    , accountChildLink
+    , aclHref
+    , aclType
+
+    -- * ProFileFilterLink
+    , ProFileFilterLink
+    , proFileFilterLink
+    , proProFileRef
+    , proKind
+    , proFilterRef
+    , proSelfLink
+    , proId
+    , proRank
+
+    -- * CustomMetricParentLink
+    , CustomMetricParentLink
+    , customMetricParentLink
+    , cmplHref
+    , cmplType
+
+    -- * Column
+    , Column
+    , column
+    , ccKind
+    , ccAttributes
+    , ccId
+
+    -- * GaDataDataTableColsItem
+    , GaDataDataTableColsItem
+    , gaDataDataTableColsItem
+    , gddtciId
+    , gddtciType
+    , gddtciLabel
+
+    -- * ExperimentVariationsItem
+    , ExperimentVariationsItem
+    , experimentVariationsItem
+    , eviStatus
+    , eviWeight
+    , eviURL
+    , eviWon
+    , eviName
+
+    -- * McfDataTotalsForAllResults
+    , McfDataTotalsForAllResults
+    , mcfDataTotalsForAllResults
+    , mdtfarAddtional
+
+    -- * UnSampledReportCloudStorageDownloadDetails
+    , UnSampledReportCloudStorageDownloadDetails
+    , unSampledReportCloudStorageDownloadDetails
+    , usrcsddObjectId
+    , usrcsddBucketId
+
+    -- * ProFileChildLink
+    , ProFileChildLink
+    , proFileChildLink
+    , pfclHref
+    , pfclType
+
+    -- * GaDataColumnHeadersItem
+    , GaDataColumnHeadersItem
+    , gaDataColumnHeadersItem
+    , gdchiColumnType
+    , gdchiName
+    , gdchiDataType
+
+    -- * GoalParentLink
+    , GoalParentLink
+    , goalParentLink
+    , gplHref
+    , gplType
+
+    -- * ColumnAttributes
+    , ColumnAttributes
+    , columnAttributes
+    , caAddtional
+    ) where
+
+import           Network.Google.Analytics.Types.Product
+import           Network.Google.Analytics.Types.Sum
+import           Network.Google.Prelude
+
+-- | Default request referring to version 'v3' of the Google Analytics API. This contains the host and root path used as a starting point for constructing service requests.
+analyticsService :: Service
+analyticsService
+  = defaultService (ServiceId "analytics:v3")
+      "www.googleapis.com"
+
+-- | Manage Google Analytics Account users by email address
+analyticsManageUsersScope :: OAuthScope
+analyticsManageUsersScope = "https://www.googleapis.com/auth/analytics.manage.users";
+
+-- | Create a new Google Analytics account along with its default property
+-- and view
+analyticsProvisionScope :: OAuthScope
+analyticsProvisionScope = "https://www.googleapis.com/auth/analytics.provision";
+
+-- | View Google Analytics user permissions
+analyticsManageUsersReadonlyScope :: OAuthScope
+analyticsManageUsersReadonlyScope = "https://www.googleapis.com/auth/analytics.manage.users.readonly";
+
+-- | View and manage your Google Analytics data
+analyticsScope :: OAuthScope
+analyticsScope = "https://www.googleapis.com/auth/analytics";
+
+-- | View your Google Analytics data
+analyticsReadonlyScope :: OAuthScope
+analyticsReadonlyScope = "https://www.googleapis.com/auth/analytics.readonly";
+
+-- | Edit Google Analytics management entities
+analyticsEditScope :: OAuthScope
+analyticsEditScope = "https://www.googleapis.com/auth/analytics.edit";
diff --git a/gen/Network/Google/Analytics/Types/Product.hs b/gen/Network/Google/Analytics/Types/Product.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Analytics/Types/Product.hs
@@ -0,0 +1,9533 @@
+{-# 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.Analytics.Types.Product
+-- Copyright   : (c) 2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+module Network.Google.Analytics.Types.Product where
+
+import           Network.Google.Analytics.Types.Sum
+import           Network.Google.Prelude
+
+-- | An unsampled report collection lists Analytics unsampled reports to
+-- which the user has access. Each view (profile) can have a set of
+-- unsampled reports. Each resource in the unsampled report collection
+-- corresponds to a single Analytics unsampled report.
+--
+-- /See:/ 'unSampledReports' smart constructor.
+data UnSampledReports = UnSampledReports
+    { _usrNextLink     :: !(Maybe Text)
+    , _usrItemsPerPage :: !(Maybe (Textual Int32))
+    , _usrKind         :: !Text
+    , _usrUsername     :: !(Maybe Text)
+    , _usrItems        :: !(Maybe [UnSampledReport])
+    , _usrTotalResults :: !(Maybe (Textual Int32))
+    , _usrStartIndex   :: !(Maybe (Textual Int32))
+    , _usrPreviousLink :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'UnSampledReports' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'usrNextLink'
+--
+-- * 'usrItemsPerPage'
+--
+-- * 'usrKind'
+--
+-- * 'usrUsername'
+--
+-- * 'usrItems'
+--
+-- * 'usrTotalResults'
+--
+-- * 'usrStartIndex'
+--
+-- * 'usrPreviousLink'
+unSampledReports
+    :: UnSampledReports
+unSampledReports =
+    UnSampledReports
+    { _usrNextLink = Nothing
+    , _usrItemsPerPage = Nothing
+    , _usrKind = "analytics#unsampledReports"
+    , _usrUsername = Nothing
+    , _usrItems = Nothing
+    , _usrTotalResults = Nothing
+    , _usrStartIndex = Nothing
+    , _usrPreviousLink = Nothing
+    }
+
+-- | Link to next page for this unsampled report collection.
+usrNextLink :: Lens' UnSampledReports (Maybe Text)
+usrNextLink
+  = lens _usrNextLink (\ s a -> s{_usrNextLink = a})
+
+-- | The maximum number of resources the response can contain, regardless of
+-- the actual number of resources returned. Its value ranges from 1 to 1000
+-- with a value of 1000 by default, or otherwise specified by the
+-- max-results query parameter.
+usrItemsPerPage :: Lens' UnSampledReports (Maybe Int32)
+usrItemsPerPage
+  = lens _usrItemsPerPage
+      (\ s a -> s{_usrItemsPerPage = a})
+      . mapping _Coerce
+
+-- | Collection type.
+usrKind :: Lens' UnSampledReports Text
+usrKind = lens _usrKind (\ s a -> s{_usrKind = a})
+
+-- | Email ID of the authenticated user
+usrUsername :: Lens' UnSampledReports (Maybe Text)
+usrUsername
+  = lens _usrUsername (\ s a -> s{_usrUsername = a})
+
+-- | A list of unsampled reports.
+usrItems :: Lens' UnSampledReports [UnSampledReport]
+usrItems
+  = lens _usrItems (\ s a -> s{_usrItems = a}) .
+      _Default
+      . _Coerce
+
+-- | The total number of results for the query, regardless of the number of
+-- resources in the result.
+usrTotalResults :: Lens' UnSampledReports (Maybe Int32)
+usrTotalResults
+  = lens _usrTotalResults
+      (\ s a -> s{_usrTotalResults = a})
+      . mapping _Coerce
+
+-- | The starting index of the resources, which is 1 by default or otherwise
+-- specified by the start-index query parameter.
+usrStartIndex :: Lens' UnSampledReports (Maybe Int32)
+usrStartIndex
+  = lens _usrStartIndex
+      (\ s a -> s{_usrStartIndex = a})
+      . mapping _Coerce
+
+-- | Link to previous page for this unsampled report collection.
+usrPreviousLink :: Lens' UnSampledReports (Maybe Text)
+usrPreviousLink
+  = lens _usrPreviousLink
+      (\ s a -> s{_usrPreviousLink = a})
+
+instance FromJSON UnSampledReports where
+        parseJSON
+          = withObject "UnSampledReports"
+              (\ o ->
+                 UnSampledReports <$>
+                   (o .:? "nextLink") <*> (o .:? "itemsPerPage") <*>
+                     (o .:? "kind" .!= "analytics#unsampledReports")
+                     <*> (o .:? "username")
+                     <*> (o .:? "items" .!= mempty)
+                     <*> (o .:? "totalResults")
+                     <*> (o .:? "startIndex")
+                     <*> (o .:? "previousLink"))
+
+instance ToJSON UnSampledReports where
+        toJSON UnSampledReports{..}
+          = object
+              (catMaybes
+                 [("nextLink" .=) <$> _usrNextLink,
+                  ("itemsPerPage" .=) <$> _usrItemsPerPage,
+                  Just ("kind" .= _usrKind),
+                  ("username" .=) <$> _usrUsername,
+                  ("items" .=) <$> _usrItems,
+                  ("totalResults" .=) <$> _usrTotalResults,
+                  ("startIndex" .=) <$> _usrStartIndex,
+                  ("previousLink" .=) <$> _usrPreviousLink])
+
+--
+-- /See:/ 'goalURLDestinationDetailsStepsItem' smart constructor.
+data GoalURLDestinationDetailsStepsItem = GoalURLDestinationDetailsStepsItem
+    { _guddsiURL    :: !(Maybe Text)
+    , _guddsiName   :: !(Maybe Text)
+    , _guddsiNumber :: !(Maybe (Textual Int32))
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'GoalURLDestinationDetailsStepsItem' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'guddsiURL'
+--
+-- * 'guddsiName'
+--
+-- * 'guddsiNumber'
+goalURLDestinationDetailsStepsItem
+    :: GoalURLDestinationDetailsStepsItem
+goalURLDestinationDetailsStepsItem =
+    GoalURLDestinationDetailsStepsItem
+    { _guddsiURL = Nothing
+    , _guddsiName = Nothing
+    , _guddsiNumber = Nothing
+    }
+
+-- | URL for this step.
+guddsiURL :: Lens' GoalURLDestinationDetailsStepsItem (Maybe Text)
+guddsiURL
+  = lens _guddsiURL (\ s a -> s{_guddsiURL = a})
+
+-- | Step name.
+guddsiName :: Lens' GoalURLDestinationDetailsStepsItem (Maybe Text)
+guddsiName
+  = lens _guddsiName (\ s a -> s{_guddsiName = a})
+
+-- | Step number.
+guddsiNumber :: Lens' GoalURLDestinationDetailsStepsItem (Maybe Int32)
+guddsiNumber
+  = lens _guddsiNumber (\ s a -> s{_guddsiNumber = a})
+      . mapping _Coerce
+
+instance FromJSON GoalURLDestinationDetailsStepsItem
+         where
+        parseJSON
+          = withObject "GoalURLDestinationDetailsStepsItem"
+              (\ o ->
+                 GoalURLDestinationDetailsStepsItem <$>
+                   (o .:? "url") <*> (o .:? "name") <*>
+                     (o .:? "number"))
+
+instance ToJSON GoalURLDestinationDetailsStepsItem
+         where
+        toJSON GoalURLDestinationDetailsStepsItem{..}
+          = object
+              (catMaybes
+                 [("url" .=) <$> _guddsiURL,
+                  ("name" .=) <$> _guddsiName,
+                  ("number" .=) <$> _guddsiNumber])
+
+-- | Analytics data request query parameters.
+--
+-- /See:/ 'gaDataQuery' smart constructor.
+data GaDataQuery = GaDataQuery
+    { _gdqMetrics       :: !(Maybe [Text])
+    , _gdqSamplingLevel :: !(Maybe Text)
+    , _gdqFilters       :: !(Maybe Text)
+    , _gdqIds           :: !(Maybe Text)
+    , _gdqEndDate       :: !(Maybe Text)
+    , _gdqSort          :: !(Maybe [Text])
+    , _gdqDimensions    :: !(Maybe Text)
+    , _gdqStartIndex    :: !(Maybe (Textual Int32))
+    , _gdqMaxResults    :: !(Maybe (Textual Int32))
+    , _gdqSegment       :: !(Maybe Text)
+    , _gdqStartDate     :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'GaDataQuery' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'gdqMetrics'
+--
+-- * 'gdqSamplingLevel'
+--
+-- * 'gdqFilters'
+--
+-- * 'gdqIds'
+--
+-- * 'gdqEndDate'
+--
+-- * 'gdqSort'
+--
+-- * 'gdqDimensions'
+--
+-- * 'gdqStartIndex'
+--
+-- * 'gdqMaxResults'
+--
+-- * 'gdqSegment'
+--
+-- * 'gdqStartDate'
+gaDataQuery
+    :: GaDataQuery
+gaDataQuery =
+    GaDataQuery
+    { _gdqMetrics = Nothing
+    , _gdqSamplingLevel = Nothing
+    , _gdqFilters = Nothing
+    , _gdqIds = Nothing
+    , _gdqEndDate = Nothing
+    , _gdqSort = Nothing
+    , _gdqDimensions = Nothing
+    , _gdqStartIndex = Nothing
+    , _gdqMaxResults = Nothing
+    , _gdqSegment = Nothing
+    , _gdqStartDate = Nothing
+    }
+
+-- | List of analytics metrics.
+gdqMetrics :: Lens' GaDataQuery [Text]
+gdqMetrics
+  = lens _gdqMetrics (\ s a -> s{_gdqMetrics = a}) .
+      _Default
+      . _Coerce
+
+-- | Desired sampling level
+gdqSamplingLevel :: Lens' GaDataQuery (Maybe Text)
+gdqSamplingLevel
+  = lens _gdqSamplingLevel
+      (\ s a -> s{_gdqSamplingLevel = a})
+
+-- | Comma-separated list of dimension or metric filters.
+gdqFilters :: Lens' GaDataQuery (Maybe Text)
+gdqFilters
+  = lens _gdqFilters (\ s a -> s{_gdqFilters = a})
+
+-- | Unique table ID.
+gdqIds :: Lens' GaDataQuery (Maybe Text)
+gdqIds = lens _gdqIds (\ s a -> s{_gdqIds = a})
+
+-- | End date.
+gdqEndDate :: Lens' GaDataQuery (Maybe Text)
+gdqEndDate
+  = lens _gdqEndDate (\ s a -> s{_gdqEndDate = a})
+
+-- | List of dimensions or metrics based on which Analytics data is sorted.
+gdqSort :: Lens' GaDataQuery [Text]
+gdqSort
+  = lens _gdqSort (\ s a -> s{_gdqSort = a}) . _Default
+      . _Coerce
+
+-- | List of analytics dimensions.
+gdqDimensions :: Lens' GaDataQuery (Maybe Text)
+gdqDimensions
+  = lens _gdqDimensions
+      (\ s a -> s{_gdqDimensions = a})
+
+-- | Start index.
+gdqStartIndex :: Lens' GaDataQuery (Maybe Int32)
+gdqStartIndex
+  = lens _gdqStartIndex
+      (\ s a -> s{_gdqStartIndex = a})
+      . mapping _Coerce
+
+-- | Maximum results per page.
+gdqMaxResults :: Lens' GaDataQuery (Maybe Int32)
+gdqMaxResults
+  = lens _gdqMaxResults
+      (\ s a -> s{_gdqMaxResults = a})
+      . mapping _Coerce
+
+-- | Analytics advanced segment.
+gdqSegment :: Lens' GaDataQuery (Maybe Text)
+gdqSegment
+  = lens _gdqSegment (\ s a -> s{_gdqSegment = a})
+
+-- | Start date.
+gdqStartDate :: Lens' GaDataQuery (Maybe Text)
+gdqStartDate
+  = lens _gdqStartDate (\ s a -> s{_gdqStartDate = a})
+
+instance FromJSON GaDataQuery where
+        parseJSON
+          = withObject "GaDataQuery"
+              (\ o ->
+                 GaDataQuery <$>
+                   (o .:? "metrics" .!= mempty) <*>
+                     (o .:? "samplingLevel")
+                     <*> (o .:? "filters")
+                     <*> (o .:? "ids")
+                     <*> (o .:? "end-date")
+                     <*> (o .:? "sort" .!= mempty)
+                     <*> (o .:? "dimensions")
+                     <*> (o .:? "start-index")
+                     <*> (o .:? "max-results")
+                     <*> (o .:? "segment")
+                     <*> (o .:? "start-date"))
+
+instance ToJSON GaDataQuery where
+        toJSON GaDataQuery{..}
+          = object
+              (catMaybes
+                 [("metrics" .=) <$> _gdqMetrics,
+                  ("samplingLevel" .=) <$> _gdqSamplingLevel,
+                  ("filters" .=) <$> _gdqFilters,
+                  ("ids" .=) <$> _gdqIds,
+                  ("end-date" .=) <$> _gdqEndDate,
+                  ("sort" .=) <$> _gdqSort,
+                  ("dimensions" .=) <$> _gdqDimensions,
+                  ("start-index" .=) <$> _gdqStartIndex,
+                  ("max-results" .=) <$> _gdqMaxResults,
+                  ("segment" .=) <$> _gdqSegment,
+                  ("start-date" .=) <$> _gdqStartDate])
+
+--
+-- /See:/ 'gaDataDataTableRowsItem' smart constructor.
+newtype GaDataDataTableRowsItem = GaDataDataTableRowsItem
+    { _gddtriC :: Maybe [GaDataDataTableRowsItemCItem]
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'GaDataDataTableRowsItem' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'gddtriC'
+gaDataDataTableRowsItem
+    :: GaDataDataTableRowsItem
+gaDataDataTableRowsItem =
+    GaDataDataTableRowsItem
+    { _gddtriC = Nothing
+    }
+
+gddtriC :: Lens' GaDataDataTableRowsItem [GaDataDataTableRowsItemCItem]
+gddtriC
+  = lens _gddtriC (\ s a -> s{_gddtriC = a}) . _Default
+      . _Coerce
+
+instance FromJSON GaDataDataTableRowsItem where
+        parseJSON
+          = withObject "GaDataDataTableRowsItem"
+              (\ o ->
+                 GaDataDataTableRowsItem <$> (o .:? "c" .!= mempty))
+
+instance ToJSON GaDataDataTableRowsItem where
+        toJSON GaDataDataTableRowsItem{..}
+          = object (catMaybes [("c" .=) <$> _gddtriC])
+
+-- | JSON template for Analytics unsampled report resource.
+--
+-- /See:/ 'unSampledReport' smart constructor.
+data UnSampledReport = UnSampledReport
+    { _uDownloadType                :: !(Maybe Text)
+    , _uStatus                      :: !(Maybe Text)
+    , _uMetrics                     :: !(Maybe Text)
+    , _uDriveDownloadDetails        :: !(Maybe UnSampledReportDriveDownloadDetails)
+    , _uWebPropertyId               :: !(Maybe Text)
+    , _uKind                        :: !Text
+    , _uCreated                     :: !(Maybe DateTime')
+    , _uFilters                     :: !(Maybe Text)
+    , _uProFileId                   :: !(Maybe Text)
+    , _uEndDate                     :: !(Maybe Text)
+    , _uSelfLink                    :: !(Maybe Text)
+    , _uAccountId                   :: !(Maybe Text)
+    , _uId                          :: !(Maybe Text)
+    , _uUpdated                     :: !(Maybe DateTime')
+    , _uTitle                       :: !(Maybe Text)
+    , _uDimensions                  :: !(Maybe Text)
+    , _uSegment                     :: !(Maybe Text)
+    , _uCloudStorageDownloadDetails :: !(Maybe UnSampledReportCloudStorageDownloadDetails)
+    , _uStartDate                   :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'UnSampledReport' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'uDownloadType'
+--
+-- * 'uStatus'
+--
+-- * 'uMetrics'
+--
+-- * 'uDriveDownloadDetails'
+--
+-- * 'uWebPropertyId'
+--
+-- * 'uKind'
+--
+-- * 'uCreated'
+--
+-- * 'uFilters'
+--
+-- * 'uProFileId'
+--
+-- * 'uEndDate'
+--
+-- * 'uSelfLink'
+--
+-- * 'uAccountId'
+--
+-- * 'uId'
+--
+-- * 'uUpdated'
+--
+-- * 'uTitle'
+--
+-- * 'uDimensions'
+--
+-- * 'uSegment'
+--
+-- * 'uCloudStorageDownloadDetails'
+--
+-- * 'uStartDate'
+unSampledReport
+    :: UnSampledReport
+unSampledReport =
+    UnSampledReport
+    { _uDownloadType = Nothing
+    , _uStatus = Nothing
+    , _uMetrics = Nothing
+    , _uDriveDownloadDetails = Nothing
+    , _uWebPropertyId = Nothing
+    , _uKind = "analytics#unsampledReport"
+    , _uCreated = Nothing
+    , _uFilters = Nothing
+    , _uProFileId = Nothing
+    , _uEndDate = Nothing
+    , _uSelfLink = Nothing
+    , _uAccountId = Nothing
+    , _uId = Nothing
+    , _uUpdated = Nothing
+    , _uTitle = Nothing
+    , _uDimensions = Nothing
+    , _uSegment = Nothing
+    , _uCloudStorageDownloadDetails = Nothing
+    , _uStartDate = Nothing
+    }
+
+-- | The type of download you need to use for the report data file.
+uDownloadType :: Lens' UnSampledReport (Maybe Text)
+uDownloadType
+  = lens _uDownloadType
+      (\ s a -> s{_uDownloadType = a})
+
+-- | Status of this unsampled report. Possible values are PENDING, COMPLETED,
+-- or FAILED.
+uStatus :: Lens' UnSampledReport (Maybe Text)
+uStatus = lens _uStatus (\ s a -> s{_uStatus = a})
+
+-- | The metrics for the unsampled report.
+uMetrics :: Lens' UnSampledReport (Maybe Text)
+uMetrics = lens _uMetrics (\ s a -> s{_uMetrics = a})
+
+-- | Download details for a file stored in Google Drive.
+uDriveDownloadDetails :: Lens' UnSampledReport (Maybe UnSampledReportDriveDownloadDetails)
+uDriveDownloadDetails
+  = lens _uDriveDownloadDetails
+      (\ s a -> s{_uDriveDownloadDetails = a})
+
+-- | Web property ID to which this unsampled report belongs. The web property
+-- ID is of the form UA-XXXXX-YY.
+uWebPropertyId :: Lens' UnSampledReport (Maybe Text)
+uWebPropertyId
+  = lens _uWebPropertyId
+      (\ s a -> s{_uWebPropertyId = a})
+
+-- | Resource type for an Analytics unsampled report.
+uKind :: Lens' UnSampledReport Text
+uKind = lens _uKind (\ s a -> s{_uKind = a})
+
+-- | Time this unsampled report was created.
+uCreated :: Lens' UnSampledReport (Maybe UTCTime)
+uCreated
+  = lens _uCreated (\ s a -> s{_uCreated = a}) .
+      mapping _DateTime
+
+-- | The filters for the unsampled report.
+uFilters :: Lens' UnSampledReport (Maybe Text)
+uFilters = lens _uFilters (\ s a -> s{_uFilters = a})
+
+-- | View (Profile) ID to which this unsampled report belongs.
+uProFileId :: Lens' UnSampledReport (Maybe Text)
+uProFileId
+  = lens _uProFileId (\ s a -> s{_uProFileId = a})
+
+-- | The end date for the unsampled report.
+uEndDate :: Lens' UnSampledReport (Maybe Text)
+uEndDate = lens _uEndDate (\ s a -> s{_uEndDate = a})
+
+-- | Link for this unsampled report.
+uSelfLink :: Lens' UnSampledReport (Maybe Text)
+uSelfLink
+  = lens _uSelfLink (\ s a -> s{_uSelfLink = a})
+
+-- | Account ID to which this unsampled report belongs.
+uAccountId :: Lens' UnSampledReport (Maybe Text)
+uAccountId
+  = lens _uAccountId (\ s a -> s{_uAccountId = a})
+
+-- | Unsampled report ID.
+uId :: Lens' UnSampledReport (Maybe Text)
+uId = lens _uId (\ s a -> s{_uId = a})
+
+-- | Time this unsampled report was last modified.
+uUpdated :: Lens' UnSampledReport (Maybe UTCTime)
+uUpdated
+  = lens _uUpdated (\ s a -> s{_uUpdated = a}) .
+      mapping _DateTime
+
+-- | Title of the unsampled report.
+uTitle :: Lens' UnSampledReport (Maybe Text)
+uTitle = lens _uTitle (\ s a -> s{_uTitle = a})
+
+-- | The dimensions for the unsampled report.
+uDimensions :: Lens' UnSampledReport (Maybe Text)
+uDimensions
+  = lens _uDimensions (\ s a -> s{_uDimensions = a})
+
+-- | The segment for the unsampled report.
+uSegment :: Lens' UnSampledReport (Maybe Text)
+uSegment = lens _uSegment (\ s a -> s{_uSegment = a})
+
+-- | Download details for a file stored in Google Cloud Storage.
+uCloudStorageDownloadDetails :: Lens' UnSampledReport (Maybe UnSampledReportCloudStorageDownloadDetails)
+uCloudStorageDownloadDetails
+  = lens _uCloudStorageDownloadDetails
+      (\ s a -> s{_uCloudStorageDownloadDetails = a})
+
+-- | The start date for the unsampled report.
+uStartDate :: Lens' UnSampledReport (Maybe Text)
+uStartDate
+  = lens _uStartDate (\ s a -> s{_uStartDate = a})
+
+instance FromJSON UnSampledReport where
+        parseJSON
+          = withObject "UnSampledReport"
+              (\ o ->
+                 UnSampledReport <$>
+                   (o .:? "downloadType") <*> (o .:? "status") <*>
+                     (o .:? "metrics")
+                     <*> (o .:? "driveDownloadDetails")
+                     <*> (o .:? "webPropertyId")
+                     <*> (o .:? "kind" .!= "analytics#unsampledReport")
+                     <*> (o .:? "created")
+                     <*> (o .:? "filters")
+                     <*> (o .:? "profileId")
+                     <*> (o .:? "end-date")
+                     <*> (o .:? "selfLink")
+                     <*> (o .:? "accountId")
+                     <*> (o .:? "id")
+                     <*> (o .:? "updated")
+                     <*> (o .:? "title")
+                     <*> (o .:? "dimensions")
+                     <*> (o .:? "segment")
+                     <*> (o .:? "cloudStorageDownloadDetails")
+                     <*> (o .:? "start-date"))
+
+instance ToJSON UnSampledReport where
+        toJSON UnSampledReport{..}
+          = object
+              (catMaybes
+                 [("downloadType" .=) <$> _uDownloadType,
+                  ("status" .=) <$> _uStatus,
+                  ("metrics" .=) <$> _uMetrics,
+                  ("driveDownloadDetails" .=) <$>
+                    _uDriveDownloadDetails,
+                  ("webPropertyId" .=) <$> _uWebPropertyId,
+                  Just ("kind" .= _uKind),
+                  ("created" .=) <$> _uCreated,
+                  ("filters" .=) <$> _uFilters,
+                  ("profileId" .=) <$> _uProFileId,
+                  ("end-date" .=) <$> _uEndDate,
+                  ("selfLink" .=) <$> _uSelfLink,
+                  ("accountId" .=) <$> _uAccountId, ("id" .=) <$> _uId,
+                  ("updated" .=) <$> _uUpdated,
+                  ("title" .=) <$> _uTitle,
+                  ("dimensions" .=) <$> _uDimensions,
+                  ("segment" .=) <$> _uSegment,
+                  ("cloudStorageDownloadDetails" .=) <$>
+                    _uCloudStorageDownloadDetails,
+                  ("start-date" .=) <$> _uStartDate])
+
+--
+-- /See:/ 'mcfDataColumnHeadersItem' smart constructor.
+data McfDataColumnHeadersItem = McfDataColumnHeadersItem
+    { _mdchiColumnType :: !(Maybe Text)
+    , _mdchiName       :: !(Maybe Text)
+    , _mdchiDataType   :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'McfDataColumnHeadersItem' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'mdchiColumnType'
+--
+-- * 'mdchiName'
+--
+-- * 'mdchiDataType'
+mcfDataColumnHeadersItem
+    :: McfDataColumnHeadersItem
+mcfDataColumnHeadersItem =
+    McfDataColumnHeadersItem
+    { _mdchiColumnType = Nothing
+    , _mdchiName = Nothing
+    , _mdchiDataType = Nothing
+    }
+
+-- | Column Type. Either DIMENSION or METRIC.
+mdchiColumnType :: Lens' McfDataColumnHeadersItem (Maybe Text)
+mdchiColumnType
+  = lens _mdchiColumnType
+      (\ s a -> s{_mdchiColumnType = a})
+
+-- | Column name.
+mdchiName :: Lens' McfDataColumnHeadersItem (Maybe Text)
+mdchiName
+  = lens _mdchiName (\ s a -> s{_mdchiName = a})
+
+-- | Data type. Dimension and metric values data types such as INTEGER,
+-- DOUBLE, CURRENCY, MCF_SEQUENCE etc.
+mdchiDataType :: Lens' McfDataColumnHeadersItem (Maybe Text)
+mdchiDataType
+  = lens _mdchiDataType
+      (\ s a -> s{_mdchiDataType = a})
+
+instance FromJSON McfDataColumnHeadersItem where
+        parseJSON
+          = withObject "McfDataColumnHeadersItem"
+              (\ o ->
+                 McfDataColumnHeadersItem <$>
+                   (o .:? "columnType") <*> (o .:? "name") <*>
+                     (o .:? "dataType"))
+
+instance ToJSON McfDataColumnHeadersItem where
+        toJSON McfDataColumnHeadersItem{..}
+          = object
+              (catMaybes
+                 [("columnType" .=) <$> _mdchiColumnType,
+                  ("name" .=) <$> _mdchiName,
+                  ("dataType" .=) <$> _mdchiDataType])
+
+-- | Total values for the requested metrics over all the results, not just
+-- the results returned in this response. The order of the metric totals is
+-- same as the metric order specified in the request.
+--
+-- /See:/ 'gaDataTotalsForAllResults' smart constructor.
+newtype GaDataTotalsForAllResults = GaDataTotalsForAllResults
+    { _gdtfarAddtional :: HashMap Text Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'GaDataTotalsForAllResults' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'gdtfarAddtional'
+gaDataTotalsForAllResults
+    :: HashMap Text Text -- ^ 'gdtfarAddtional'
+    -> GaDataTotalsForAllResults
+gaDataTotalsForAllResults pGdtfarAddtional_ =
+    GaDataTotalsForAllResults
+    { _gdtfarAddtional = _Coerce # pGdtfarAddtional_
+    }
+
+-- | Key-value pair for the total value of a metric. Key is the metric name
+-- and the value is the total value for that metric.
+gdtfarAddtional :: Lens' GaDataTotalsForAllResults (HashMap Text Text)
+gdtfarAddtional
+  = lens _gdtfarAddtional
+      (\ s a -> s{_gdtfarAddtional = a})
+      . _Coerce
+
+instance FromJSON GaDataTotalsForAllResults where
+        parseJSON
+          = withObject "GaDataTotalsForAllResults"
+              (\ o ->
+                 GaDataTotalsForAllResults <$> (parseJSONObject o))
+
+instance ToJSON GaDataTotalsForAllResults where
+        toJSON = toJSON . _gdtfarAddtional
+
+-- | Parent link for this view (profile). Points to the web property to which
+-- this view (profile) belongs.
+--
+-- /See:/ 'proFileParentLink' smart constructor.
+data ProFileParentLink = ProFileParentLink
+    { _pfplHref :: !(Maybe Text)
+    , _pfplType :: !Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ProFileParentLink' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'pfplHref'
+--
+-- * 'pfplType'
+proFileParentLink
+    :: ProFileParentLink
+proFileParentLink =
+    ProFileParentLink
+    { _pfplHref = Nothing
+    , _pfplType = "analytics#webproperty"
+    }
+
+-- | Link to the web property to which this view (profile) belongs.
+pfplHref :: Lens' ProFileParentLink (Maybe Text)
+pfplHref = lens _pfplHref (\ s a -> s{_pfplHref = a})
+
+-- | Value is \"analytics#webproperty\".
+pfplType :: Lens' ProFileParentLink Text
+pfplType = lens _pfplType (\ s a -> s{_pfplType = a})
+
+instance FromJSON ProFileParentLink where
+        parseJSON
+          = withObject "ProFileParentLink"
+              (\ o ->
+                 ProFileParentLink <$>
+                   (o .:? "href") <*>
+                     (o .:? "type" .!= "analytics#webproperty"))
+
+instance ToJSON ProFileParentLink where
+        toJSON ProFileParentLink{..}
+          = object
+              (catMaybes
+                 [("href" .=) <$> _pfplHref,
+                  Just ("type" .= _pfplType)])
+
+--
+-- /See:/ 'gaDataDataTableRowsItemCItem' smart constructor.
+newtype GaDataDataTableRowsItemCItem = GaDataDataTableRowsItemCItem
+    { _gddtriciV :: Maybe Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'GaDataDataTableRowsItemCItem' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'gddtriciV'
+gaDataDataTableRowsItemCItem
+    :: GaDataDataTableRowsItemCItem
+gaDataDataTableRowsItemCItem =
+    GaDataDataTableRowsItemCItem
+    { _gddtriciV = Nothing
+    }
+
+gddtriciV :: Lens' GaDataDataTableRowsItemCItem (Maybe Text)
+gddtriciV
+  = lens _gddtriciV (\ s a -> s{_gddtriciV = a})
+
+instance FromJSON GaDataDataTableRowsItemCItem where
+        parseJSON
+          = withObject "GaDataDataTableRowsItemCItem"
+              (\ o -> GaDataDataTableRowsItemCItem <$> (o .:? "v"))
+
+instance ToJSON GaDataDataTableRowsItemCItem where
+        toJSON GaDataDataTableRowsItemCItem{..}
+          = object (catMaybes [("v" .=) <$> _gddtriciV])
+
+-- | Permissions the user has for this entity.
+--
+-- /See:/ 'entityUserLinkPermissions' smart constructor.
+data EntityUserLinkPermissions = EntityUserLinkPermissions
+    { _eulpLocal     :: !(Maybe [Text])
+    , _eulpEffective :: !(Maybe [Text])
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'EntityUserLinkPermissions' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'eulpLocal'
+--
+-- * 'eulpEffective'
+entityUserLinkPermissions
+    :: EntityUserLinkPermissions
+entityUserLinkPermissions =
+    EntityUserLinkPermissions
+    { _eulpLocal = Nothing
+    , _eulpEffective = Nothing
+    }
+
+-- | Permissions that a user has been assigned at this very level. Does not
+-- include any implied or inherited permissions. Local permissions are
+-- modifiable.
+eulpLocal :: Lens' EntityUserLinkPermissions [Text]
+eulpLocal
+  = lens _eulpLocal (\ s a -> s{_eulpLocal = a}) .
+      _Default
+      . _Coerce
+
+-- | Effective permissions represent all the permissions that a user has for
+-- this entity. These include any implied permissions (e.g., EDIT implies
+-- VIEW) or inherited permissions from the parent entity. Effective
+-- permissions are read-only.
+eulpEffective :: Lens' EntityUserLinkPermissions [Text]
+eulpEffective
+  = lens _eulpEffective
+      (\ s a -> s{_eulpEffective = a})
+      . _Default
+      . _Coerce
+
+instance FromJSON EntityUserLinkPermissions where
+        parseJSON
+          = withObject "EntityUserLinkPermissions"
+              (\ o ->
+                 EntityUserLinkPermissions <$>
+                   (o .:? "local" .!= mempty) <*>
+                     (o .:? "effective" .!= mempty))
+
+instance ToJSON EntityUserLinkPermissions where
+        toJSON EntityUserLinkPermissions{..}
+          = object
+              (catMaybes
+                 [("local" .=) <$> _eulpLocal,
+                  ("effective" .=) <$> _eulpEffective])
+
+-- | Information for the view (profile), for which the real time data was
+-- requested.
+--
+-- /See:/ 'realtimeDataProFileInfo' smart constructor.
+data RealtimeDataProFileInfo = RealtimeDataProFileInfo
+    { _rdpfiWebPropertyId         :: !(Maybe Text)
+    , _rdpfiProFileId             :: !(Maybe Text)
+    , _rdpfiProFileName           :: !(Maybe Text)
+    , _rdpfiAccountId             :: !(Maybe Text)
+    , _rdpfiInternalWebPropertyId :: !(Maybe Text)
+    , _rdpfiTableId               :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'RealtimeDataProFileInfo' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'rdpfiWebPropertyId'
+--
+-- * 'rdpfiProFileId'
+--
+-- * 'rdpfiProFileName'
+--
+-- * 'rdpfiAccountId'
+--
+-- * 'rdpfiInternalWebPropertyId'
+--
+-- * 'rdpfiTableId'
+realtimeDataProFileInfo
+    :: RealtimeDataProFileInfo
+realtimeDataProFileInfo =
+    RealtimeDataProFileInfo
+    { _rdpfiWebPropertyId = Nothing
+    , _rdpfiProFileId = Nothing
+    , _rdpfiProFileName = Nothing
+    , _rdpfiAccountId = Nothing
+    , _rdpfiInternalWebPropertyId = Nothing
+    , _rdpfiTableId = Nothing
+    }
+
+-- | Web Property ID to which this view (profile) belongs.
+rdpfiWebPropertyId :: Lens' RealtimeDataProFileInfo (Maybe Text)
+rdpfiWebPropertyId
+  = lens _rdpfiWebPropertyId
+      (\ s a -> s{_rdpfiWebPropertyId = a})
+
+-- | View (Profile) ID.
+rdpfiProFileId :: Lens' RealtimeDataProFileInfo (Maybe Text)
+rdpfiProFileId
+  = lens _rdpfiProFileId
+      (\ s a -> s{_rdpfiProFileId = a})
+
+-- | View (Profile) name.
+rdpfiProFileName :: Lens' RealtimeDataProFileInfo (Maybe Text)
+rdpfiProFileName
+  = lens _rdpfiProFileName
+      (\ s a -> s{_rdpfiProFileName = a})
+
+-- | Account ID to which this view (profile) belongs.
+rdpfiAccountId :: Lens' RealtimeDataProFileInfo (Maybe Text)
+rdpfiAccountId
+  = lens _rdpfiAccountId
+      (\ s a -> s{_rdpfiAccountId = a})
+
+-- | Internal ID for the web property to which this view (profile) belongs.
+rdpfiInternalWebPropertyId :: Lens' RealtimeDataProFileInfo (Maybe Text)
+rdpfiInternalWebPropertyId
+  = lens _rdpfiInternalWebPropertyId
+      (\ s a -> s{_rdpfiInternalWebPropertyId = a})
+
+-- | Table ID for view (profile).
+rdpfiTableId :: Lens' RealtimeDataProFileInfo (Maybe Text)
+rdpfiTableId
+  = lens _rdpfiTableId (\ s a -> s{_rdpfiTableId = a})
+
+instance FromJSON RealtimeDataProFileInfo where
+        parseJSON
+          = withObject "RealtimeDataProFileInfo"
+              (\ o ->
+                 RealtimeDataProFileInfo <$>
+                   (o .:? "webPropertyId") <*> (o .:? "profileId") <*>
+                     (o .:? "profileName")
+                     <*> (o .:? "accountId")
+                     <*> (o .:? "internalWebPropertyId")
+                     <*> (o .:? "tableId"))
+
+instance ToJSON RealtimeDataProFileInfo where
+        toJSON RealtimeDataProFileInfo{..}
+          = object
+              (catMaybes
+                 [("webPropertyId" .=) <$> _rdpfiWebPropertyId,
+                  ("profileId" .=) <$> _rdpfiProFileId,
+                  ("profileName" .=) <$> _rdpfiProFileName,
+                  ("accountId" .=) <$> _rdpfiAccountId,
+                  ("internalWebPropertyId" .=) <$>
+                    _rdpfiInternalWebPropertyId,
+                  ("tableId" .=) <$> _rdpfiTableId])
+
+--
+-- /See:/ 'mcfDataRowsItemItemConversionPathValueItem' smart constructor.
+data McfDataRowsItemItemConversionPathValueItem = McfDataRowsItemItemConversionPathValueItem
+    { _mdriicpviInteractionType :: !(Maybe Text)
+    , _mdriicpviNodeValue       :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'McfDataRowsItemItemConversionPathValueItem' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'mdriicpviInteractionType'
+--
+-- * 'mdriicpviNodeValue'
+mcfDataRowsItemItemConversionPathValueItem
+    :: McfDataRowsItemItemConversionPathValueItem
+mcfDataRowsItemItemConversionPathValueItem =
+    McfDataRowsItemItemConversionPathValueItem
+    { _mdriicpviInteractionType = Nothing
+    , _mdriicpviNodeValue = Nothing
+    }
+
+-- | Type of an interaction on conversion path. Such as CLICK, IMPRESSION
+-- etc.
+mdriicpviInteractionType :: Lens' McfDataRowsItemItemConversionPathValueItem (Maybe Text)
+mdriicpviInteractionType
+  = lens _mdriicpviInteractionType
+      (\ s a -> s{_mdriicpviInteractionType = a})
+
+-- | Node value of an interaction on conversion path. Such as source, medium
+-- etc.
+mdriicpviNodeValue :: Lens' McfDataRowsItemItemConversionPathValueItem (Maybe Text)
+mdriicpviNodeValue
+  = lens _mdriicpviNodeValue
+      (\ s a -> s{_mdriicpviNodeValue = a})
+
+instance FromJSON
+         McfDataRowsItemItemConversionPathValueItem where
+        parseJSON
+          = withObject
+              "McfDataRowsItemItemConversionPathValueItem"
+              (\ o ->
+                 McfDataRowsItemItemConversionPathValueItem <$>
+                   (o .:? "interactionType") <*> (o .:? "nodeValue"))
+
+instance ToJSON
+         McfDataRowsItemItemConversionPathValueItem where
+        toJSON McfDataRowsItemItemConversionPathValueItem{..}
+          = object
+              (catMaybes
+                 [("interactionType" .=) <$>
+                    _mdriicpviInteractionType,
+                  ("nodeValue" .=) <$> _mdriicpviNodeValue])
+
+-- | JSON template for an Analytics filter expression.
+--
+-- /See:/ 'filterExpression' smart constructor.
+data FilterExpression = FilterExpression
+    { _feFieldIndex      :: !(Maybe (Textual Int32))
+    , _feField           :: !(Maybe Text)
+    , _feKind            :: !Text
+    , _feMatchType       :: !(Maybe Text)
+    , _feCaseSensitive   :: !(Maybe Bool)
+    , _feExpressionValue :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'FilterExpression' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'feFieldIndex'
+--
+-- * 'feField'
+--
+-- * 'feKind'
+--
+-- * 'feMatchType'
+--
+-- * 'feCaseSensitive'
+--
+-- * 'feExpressionValue'
+filterExpression
+    :: FilterExpression
+filterExpression =
+    FilterExpression
+    { _feFieldIndex = Nothing
+    , _feField = Nothing
+    , _feKind = "analytics#filterExpression"
+    , _feMatchType = Nothing
+    , _feCaseSensitive = Nothing
+    , _feExpressionValue = Nothing
+    }
+
+-- | The Index of the custom dimension. Set only if the field is a is
+-- CUSTOM_DIMENSION.
+feFieldIndex :: Lens' FilterExpression (Maybe Int32)
+feFieldIndex
+  = lens _feFieldIndex (\ s a -> s{_feFieldIndex = a})
+      . mapping _Coerce
+
+-- | Field to filter. Possible values: - Content and Traffic -
+-- PAGE_REQUEST_URI, - PAGE_HOSTNAME, - PAGE_TITLE, - REFERRAL, -
+-- COST_DATA_URI (Campaign target URL), - HIT_TYPE, - INTERNAL_SEARCH_TERM,
+-- - INTERNAL_SEARCH_TYPE, - SOURCE_PROPERTY_TRACKING_ID, - Campaign or
+-- AdGroup - CAMPAIGN_SOURCE, - CAMPAIGN_MEDIUM, - CAMPAIGN_NAME, -
+-- CAMPAIGN_AD_GROUP, - CAMPAIGN_TERM, - CAMPAIGN_CONTENT, - CAMPAIGN_CODE,
+-- - CAMPAIGN_REFERRAL_PATH, - E-Commerce - TRANSACTION_COUNTRY, -
+-- TRANSACTION_REGION, - TRANSACTION_CITY, - TRANSACTION_AFFILIATION (Store
+-- or order location), - ITEM_NAME, - ITEM_CODE, - ITEM_VARIATION, -
+-- TRANSACTION_ID, - TRANSACTION_CURRENCY_CODE, - PRODUCT_ACTION_TYPE, -
+-- Audience\/Users - BROWSER, - BROWSER_VERSION, - BROWSER_SIZE, -
+-- PLATFORM, - PLATFORM_VERSION, - LANGUAGE, - SCREEN_RESOLUTION, -
+-- SCREEN_COLORS, - JAVA_ENABLED (Boolean Field), - FLASH_VERSION, -
+-- GEO_SPEED (Connection speed), - VISITOR_TYPE, - GEO_ORGANIZATION (ISP
+-- organization), - GEO_DOMAIN, - GEO_IP_ADDRESS, - GEO_IP_VERSION, -
+-- Location - GEO_COUNTRY, - GEO_REGION, - GEO_CITY, - Event -
+-- EVENT_CATEGORY, - EVENT_ACTION, - EVENT_LABEL, - Other - CUSTOM_FIELD_1,
+-- - CUSTOM_FIELD_2, - USER_DEFINED_VALUE, - Application - APP_ID, -
+-- APP_INSTALLER_ID, - APP_NAME, - APP_VERSION, - SCREEN, - IS_APP (Boolean
+-- Field), - IS_FATAL_EXCEPTION (Boolean Field), - EXCEPTION_DESCRIPTION, -
+-- Mobile device - IS_MOBILE (Boolean Field, Deprecated. Use
+-- DEVICE_CATEGORY=mobile), - IS_TABLET (Boolean Field, Deprecated. Use
+-- DEVICE_CATEGORY=tablet), - DEVICE_CATEGORY, - MOBILE_HAS_QWERTY_KEYBOARD
+-- (Boolean Field), - MOBILE_HAS_NFC_SUPPORT (Boolean Field), -
+-- MOBILE_HAS_CELLULAR_RADIO (Boolean Field), - MOBILE_HAS_WIFI_SUPPORT
+-- (Boolean Field), - MOBILE_BRAND_NAME, - MOBILE_MODEL_NAME, -
+-- MOBILE_MARKETING_NAME, - MOBILE_POINTING_METHOD, - Social -
+-- SOCIAL_NETWORK, - SOCIAL_ACTION, - SOCIAL_ACTION_TARGET, - Custom
+-- dimension - CUSTOM_DIMENSION (See accompanying field index),
+feField :: Lens' FilterExpression (Maybe Text)
+feField = lens _feField (\ s a -> s{_feField = a})
+
+-- | Kind value for filter expression
+feKind :: Lens' FilterExpression Text
+feKind = lens _feKind (\ s a -> s{_feKind = a})
+
+-- | Match type for this filter. Possible values are BEGINS_WITH, EQUAL,
+-- ENDS_WITH, CONTAINS, or MATCHES. GEO_DOMAIN, GEO_IP_ADDRESS,
+-- PAGE_REQUEST_URI, or PAGE_HOSTNAME filters can use any match type; all
+-- other filters must use MATCHES.
+feMatchType :: Lens' FilterExpression (Maybe Text)
+feMatchType
+  = lens _feMatchType (\ s a -> s{_feMatchType = a})
+
+-- | Determines if the filter is case sensitive.
+feCaseSensitive :: Lens' FilterExpression (Maybe Bool)
+feCaseSensitive
+  = lens _feCaseSensitive
+      (\ s a -> s{_feCaseSensitive = a})
+
+-- | Filter expression value
+feExpressionValue :: Lens' FilterExpression (Maybe Text)
+feExpressionValue
+  = lens _feExpressionValue
+      (\ s a -> s{_feExpressionValue = a})
+
+instance FromJSON FilterExpression where
+        parseJSON
+          = withObject "FilterExpression"
+              (\ o ->
+                 FilterExpression <$>
+                   (o .:? "fieldIndex") <*> (o .:? "field") <*>
+                     (o .:? "kind" .!= "analytics#filterExpression")
+                     <*> (o .:? "matchType")
+                     <*> (o .:? "caseSensitive")
+                     <*> (o .:? "expressionValue"))
+
+instance ToJSON FilterExpression where
+        toJSON FilterExpression{..}
+          = object
+              (catMaybes
+                 [("fieldIndex" .=) <$> _feFieldIndex,
+                  ("field" .=) <$> _feField, Just ("kind" .= _feKind),
+                  ("matchType" .=) <$> _feMatchType,
+                  ("caseSensitive" .=) <$> _feCaseSensitive,
+                  ("expressionValue" .=) <$> _feExpressionValue])
+
+-- | JSON template for a linked view (profile).
+--
+-- /See:/ 'proFileRef' smart constructor.
+data ProFileRef = ProFileRef
+    { _pfrWebPropertyId         :: !(Maybe Text)
+    , _pfrKind                  :: !Text
+    , _pfrHref                  :: !(Maybe Text)
+    , _pfrAccountId             :: !(Maybe Text)
+    , _pfrName                  :: !(Maybe Text)
+    , _pfrInternalWebPropertyId :: !(Maybe Text)
+    , _pfrId                    :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ProFileRef' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'pfrWebPropertyId'
+--
+-- * 'pfrKind'
+--
+-- * 'pfrHref'
+--
+-- * 'pfrAccountId'
+--
+-- * 'pfrName'
+--
+-- * 'pfrInternalWebPropertyId'
+--
+-- * 'pfrId'
+proFileRef
+    :: ProFileRef
+proFileRef =
+    ProFileRef
+    { _pfrWebPropertyId = Nothing
+    , _pfrKind = "analytics#profileRef"
+    , _pfrHref = Nothing
+    , _pfrAccountId = Nothing
+    , _pfrName = Nothing
+    , _pfrInternalWebPropertyId = Nothing
+    , _pfrId = Nothing
+    }
+
+-- | Web property ID of the form UA-XXXXX-YY to which this view (profile)
+-- belongs.
+pfrWebPropertyId :: Lens' ProFileRef (Maybe Text)
+pfrWebPropertyId
+  = lens _pfrWebPropertyId
+      (\ s a -> s{_pfrWebPropertyId = a})
+
+-- | Analytics view (profile) reference.
+pfrKind :: Lens' ProFileRef Text
+pfrKind = lens _pfrKind (\ s a -> s{_pfrKind = a})
+
+-- | Link for this view (profile).
+pfrHref :: Lens' ProFileRef (Maybe Text)
+pfrHref = lens _pfrHref (\ s a -> s{_pfrHref = a})
+
+-- | Account ID to which this view (profile) belongs.
+pfrAccountId :: Lens' ProFileRef (Maybe Text)
+pfrAccountId
+  = lens _pfrAccountId (\ s a -> s{_pfrAccountId = a})
+
+-- | Name of this view (profile).
+pfrName :: Lens' ProFileRef (Maybe Text)
+pfrName = lens _pfrName (\ s a -> s{_pfrName = a})
+
+-- | Internal ID for the web property to which this view (profile) belongs.
+pfrInternalWebPropertyId :: Lens' ProFileRef (Maybe Text)
+pfrInternalWebPropertyId
+  = lens _pfrInternalWebPropertyId
+      (\ s a -> s{_pfrInternalWebPropertyId = a})
+
+-- | View (Profile) ID.
+pfrId :: Lens' ProFileRef (Maybe Text)
+pfrId = lens _pfrId (\ s a -> s{_pfrId = a})
+
+instance FromJSON ProFileRef where
+        parseJSON
+          = withObject "ProFileRef"
+              (\ o ->
+                 ProFileRef <$>
+                   (o .:? "webPropertyId") <*>
+                     (o .:? "kind" .!= "analytics#profileRef")
+                     <*> (o .:? "href")
+                     <*> (o .:? "accountId")
+                     <*> (o .:? "name")
+                     <*> (o .:? "internalWebPropertyId")
+                     <*> (o .:? "id"))
+
+instance ToJSON ProFileRef where
+        toJSON ProFileRef{..}
+          = object
+              (catMaybes
+                 [("webPropertyId" .=) <$> _pfrWebPropertyId,
+                  Just ("kind" .= _pfrKind), ("href" .=) <$> _pfrHref,
+                  ("accountId" .=) <$> _pfrAccountId,
+                  ("name" .=) <$> _pfrName,
+                  ("internalWebPropertyId" .=) <$>
+                    _pfrInternalWebPropertyId,
+                  ("id" .=) <$> _pfrId])
+
+-- | An account collection provides a list of Analytics accounts to which a
+-- user has access. The account collection is the entry point to all
+-- management information. Each resource in the collection corresponds to a
+-- single Analytics account.
+--
+-- /See:/ 'accounts' smart constructor.
+data Accounts = Accounts
+    { _aNextLink     :: !(Maybe Text)
+    , _aItemsPerPage :: !(Maybe (Textual Int32))
+    , _aKind         :: !Text
+    , _aUsername     :: !(Maybe Text)
+    , _aItems        :: !(Maybe [Account])
+    , _aTotalResults :: !(Maybe (Textual Int32))
+    , _aStartIndex   :: !(Maybe (Textual Int32))
+    , _aPreviousLink :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'Accounts' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'aNextLink'
+--
+-- * 'aItemsPerPage'
+--
+-- * 'aKind'
+--
+-- * 'aUsername'
+--
+-- * 'aItems'
+--
+-- * 'aTotalResults'
+--
+-- * 'aStartIndex'
+--
+-- * 'aPreviousLink'
+accounts
+    :: Accounts
+accounts =
+    Accounts
+    { _aNextLink = Nothing
+    , _aItemsPerPage = Nothing
+    , _aKind = "analytics#accounts"
+    , _aUsername = Nothing
+    , _aItems = Nothing
+    , _aTotalResults = Nothing
+    , _aStartIndex = Nothing
+    , _aPreviousLink = Nothing
+    }
+
+-- | Next link for this account collection.
+aNextLink :: Lens' Accounts (Maybe Text)
+aNextLink
+  = lens _aNextLink (\ s a -> s{_aNextLink = a})
+
+-- | The maximum number of entries the response can contain, regardless of
+-- the actual number of entries returned. Its value ranges from 1 to 1000
+-- with a value of 1000 by default, or otherwise specified by the
+-- max-results query parameter.
+aItemsPerPage :: Lens' Accounts (Maybe Int32)
+aItemsPerPage
+  = lens _aItemsPerPage
+      (\ s a -> s{_aItemsPerPage = a})
+      . mapping _Coerce
+
+-- | Collection type.
+aKind :: Lens' Accounts Text
+aKind = lens _aKind (\ s a -> s{_aKind = a})
+
+-- | Email ID of the authenticated user
+aUsername :: Lens' Accounts (Maybe Text)
+aUsername
+  = lens _aUsername (\ s a -> s{_aUsername = a})
+
+-- | A list of accounts.
+aItems :: Lens' Accounts [Account]
+aItems
+  = lens _aItems (\ s a -> s{_aItems = a}) . _Default .
+      _Coerce
+
+-- | The total number of results for the query, regardless of the number of
+-- results in the response.
+aTotalResults :: Lens' Accounts (Maybe Int32)
+aTotalResults
+  = lens _aTotalResults
+      (\ s a -> s{_aTotalResults = a})
+      . mapping _Coerce
+
+-- | The starting index of the entries, which is 1 by default or otherwise
+-- specified by the start-index query parameter.
+aStartIndex :: Lens' Accounts (Maybe Int32)
+aStartIndex
+  = lens _aStartIndex (\ s a -> s{_aStartIndex = a}) .
+      mapping _Coerce
+
+-- | Previous link for this account collection.
+aPreviousLink :: Lens' Accounts (Maybe Text)
+aPreviousLink
+  = lens _aPreviousLink
+      (\ s a -> s{_aPreviousLink = a})
+
+instance FromJSON Accounts where
+        parseJSON
+          = withObject "Accounts"
+              (\ o ->
+                 Accounts <$>
+                   (o .:? "nextLink") <*> (o .:? "itemsPerPage") <*>
+                     (o .:? "kind" .!= "analytics#accounts")
+                     <*> (o .:? "username")
+                     <*> (o .:? "items" .!= mempty)
+                     <*> (o .:? "totalResults")
+                     <*> (o .:? "startIndex")
+                     <*> (o .:? "previousLink"))
+
+instance ToJSON Accounts where
+        toJSON Accounts{..}
+          = object
+              (catMaybes
+                 [("nextLink" .=) <$> _aNextLink,
+                  ("itemsPerPage" .=) <$> _aItemsPerPage,
+                  Just ("kind" .= _aKind),
+                  ("username" .=) <$> _aUsername,
+                  ("items" .=) <$> _aItems,
+                  ("totalResults" .=) <$> _aTotalResults,
+                  ("startIndex" .=) <$> _aStartIndex,
+                  ("previousLink" .=) <$> _aPreviousLink])
+
+-- | An experiment collection lists Analytics experiments to which the user
+-- has access. Each view (profile) can have a set of experiments. Each
+-- resource in the Experiment collection corresponds to a single Analytics
+-- experiment.
+--
+-- /See:/ 'experiments' smart constructor.
+data Experiments = Experiments
+    { _eNextLink     :: !(Maybe Text)
+    , _eItemsPerPage :: !(Maybe (Textual Int32))
+    , _eKind         :: !Text
+    , _eUsername     :: !(Maybe Text)
+    , _eItems        :: !(Maybe [Experiment])
+    , _eTotalResults :: !(Maybe (Textual Int32))
+    , _eStartIndex   :: !(Maybe (Textual Int32))
+    , _ePreviousLink :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'Experiments' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'eNextLink'
+--
+-- * 'eItemsPerPage'
+--
+-- * 'eKind'
+--
+-- * 'eUsername'
+--
+-- * 'eItems'
+--
+-- * 'eTotalResults'
+--
+-- * 'eStartIndex'
+--
+-- * 'ePreviousLink'
+experiments
+    :: Experiments
+experiments =
+    Experiments
+    { _eNextLink = Nothing
+    , _eItemsPerPage = Nothing
+    , _eKind = "analytics#experiments"
+    , _eUsername = Nothing
+    , _eItems = Nothing
+    , _eTotalResults = Nothing
+    , _eStartIndex = Nothing
+    , _ePreviousLink = Nothing
+    }
+
+-- | Link to next page for this experiment collection.
+eNextLink :: Lens' Experiments (Maybe Text)
+eNextLink
+  = lens _eNextLink (\ s a -> s{_eNextLink = a})
+
+-- | The maximum number of resources the response can contain, regardless of
+-- the actual number of resources returned. Its value ranges from 1 to 1000
+-- with a value of 1000 by default, or otherwise specified by the
+-- max-results query parameter.
+eItemsPerPage :: Lens' Experiments (Maybe Int32)
+eItemsPerPage
+  = lens _eItemsPerPage
+      (\ s a -> s{_eItemsPerPage = a})
+      . mapping _Coerce
+
+-- | Collection type.
+eKind :: Lens' Experiments Text
+eKind = lens _eKind (\ s a -> s{_eKind = a})
+
+-- | Email ID of the authenticated user
+eUsername :: Lens' Experiments (Maybe Text)
+eUsername
+  = lens _eUsername (\ s a -> s{_eUsername = a})
+
+-- | A list of experiments.
+eItems :: Lens' Experiments [Experiment]
+eItems
+  = lens _eItems (\ s a -> s{_eItems = a}) . _Default .
+      _Coerce
+
+-- | The total number of results for the query, regardless of the number of
+-- resources in the result.
+eTotalResults :: Lens' Experiments (Maybe Int32)
+eTotalResults
+  = lens _eTotalResults
+      (\ s a -> s{_eTotalResults = a})
+      . mapping _Coerce
+
+-- | The starting index of the resources, which is 1 by default or otherwise
+-- specified by the start-index query parameter.
+eStartIndex :: Lens' Experiments (Maybe Int32)
+eStartIndex
+  = lens _eStartIndex (\ s a -> s{_eStartIndex = a}) .
+      mapping _Coerce
+
+-- | Link to previous page for this experiment collection.
+ePreviousLink :: Lens' Experiments (Maybe Text)
+ePreviousLink
+  = lens _ePreviousLink
+      (\ s a -> s{_ePreviousLink = a})
+
+instance FromJSON Experiments where
+        parseJSON
+          = withObject "Experiments"
+              (\ o ->
+                 Experiments <$>
+                   (o .:? "nextLink") <*> (o .:? "itemsPerPage") <*>
+                     (o .:? "kind" .!= "analytics#experiments")
+                     <*> (o .:? "username")
+                     <*> (o .:? "items" .!= mempty)
+                     <*> (o .:? "totalResults")
+                     <*> (o .:? "startIndex")
+                     <*> (o .:? "previousLink"))
+
+instance ToJSON Experiments where
+        toJSON Experiments{..}
+          = object
+              (catMaybes
+                 [("nextLink" .=) <$> _eNextLink,
+                  ("itemsPerPage" .=) <$> _eItemsPerPage,
+                  Just ("kind" .= _eKind),
+                  ("username" .=) <$> _eUsername,
+                  ("items" .=) <$> _eItems,
+                  ("totalResults" .=) <$> _eTotalResults,
+                  ("startIndex" .=) <$> _eStartIndex,
+                  ("previousLink" .=) <$> _ePreviousLink])
+
+-- | Parent link for an experiment. Points to the view (profile) to which
+-- this experiment belongs.
+--
+-- /See:/ 'experimentParentLink' smart constructor.
+data ExperimentParentLink = ExperimentParentLink
+    { _eplHref :: !(Maybe Text)
+    , _eplType :: !Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ExperimentParentLink' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'eplHref'
+--
+-- * 'eplType'
+experimentParentLink
+    :: ExperimentParentLink
+experimentParentLink =
+    ExperimentParentLink
+    { _eplHref = Nothing
+    , _eplType = "analytics#profile"
+    }
+
+-- | Link to the view (profile) to which this experiment belongs. This field
+-- is read-only.
+eplHref :: Lens' ExperimentParentLink (Maybe Text)
+eplHref = lens _eplHref (\ s a -> s{_eplHref = a})
+
+-- | Value is \"analytics#profile\". This field is read-only.
+eplType :: Lens' ExperimentParentLink Text
+eplType = lens _eplType (\ s a -> s{_eplType = a})
+
+instance FromJSON ExperimentParentLink where
+        parseJSON
+          = withObject "ExperimentParentLink"
+              (\ o ->
+                 ExperimentParentLink <$>
+                   (o .:? "href") <*>
+                     (o .:? "type" .!= "analytics#profile"))
+
+instance ToJSON ExperimentParentLink where
+        toJSON ExperimentParentLink{..}
+          = object
+              (catMaybes
+                 [("href" .=) <$> _eplHref,
+                  Just ("type" .= _eplType)])
+
+-- | Download details for a file stored in Google Drive.
+--
+-- /See:/ 'unSampledReportDriveDownloadDetails' smart constructor.
+newtype UnSampledReportDriveDownloadDetails = UnSampledReportDriveDownloadDetails
+    { _usrdddDocumentId :: Maybe Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'UnSampledReportDriveDownloadDetails' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'usrdddDocumentId'
+unSampledReportDriveDownloadDetails
+    :: UnSampledReportDriveDownloadDetails
+unSampledReportDriveDownloadDetails =
+    UnSampledReportDriveDownloadDetails
+    { _usrdddDocumentId = Nothing
+    }
+
+-- | Id of the document\/file containing the report data.
+usrdddDocumentId :: Lens' UnSampledReportDriveDownloadDetails (Maybe Text)
+usrdddDocumentId
+  = lens _usrdddDocumentId
+      (\ s a -> s{_usrdddDocumentId = a})
+
+instance FromJSON UnSampledReportDriveDownloadDetails
+         where
+        parseJSON
+          = withObject "UnSampledReportDriveDownloadDetails"
+              (\ o ->
+                 UnSampledReportDriveDownloadDetails <$>
+                   (o .:? "documentId"))
+
+instance ToJSON UnSampledReportDriveDownloadDetails
+         where
+        toJSON UnSampledReportDriveDownloadDetails{..}
+          = object
+              (catMaybes [("documentId" .=) <$> _usrdddDocumentId])
+
+-- | Information for the view (profile), for which the Analytics data was
+-- requested.
+--
+-- /See:/ 'mcfDataProFileInfo' smart constructor.
+data McfDataProFileInfo = McfDataProFileInfo
+    { _mdpfiWebPropertyId         :: !(Maybe Text)
+    , _mdpfiProFileId             :: !(Maybe Text)
+    , _mdpfiProFileName           :: !(Maybe Text)
+    , _mdpfiAccountId             :: !(Maybe Text)
+    , _mdpfiInternalWebPropertyId :: !(Maybe Text)
+    , _mdpfiTableId               :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'McfDataProFileInfo' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'mdpfiWebPropertyId'
+--
+-- * 'mdpfiProFileId'
+--
+-- * 'mdpfiProFileName'
+--
+-- * 'mdpfiAccountId'
+--
+-- * 'mdpfiInternalWebPropertyId'
+--
+-- * 'mdpfiTableId'
+mcfDataProFileInfo
+    :: McfDataProFileInfo
+mcfDataProFileInfo =
+    McfDataProFileInfo
+    { _mdpfiWebPropertyId = Nothing
+    , _mdpfiProFileId = Nothing
+    , _mdpfiProFileName = Nothing
+    , _mdpfiAccountId = Nothing
+    , _mdpfiInternalWebPropertyId = Nothing
+    , _mdpfiTableId = Nothing
+    }
+
+-- | Web Property ID to which this view (profile) belongs.
+mdpfiWebPropertyId :: Lens' McfDataProFileInfo (Maybe Text)
+mdpfiWebPropertyId
+  = lens _mdpfiWebPropertyId
+      (\ s a -> s{_mdpfiWebPropertyId = a})
+
+-- | View (Profile) ID.
+mdpfiProFileId :: Lens' McfDataProFileInfo (Maybe Text)
+mdpfiProFileId
+  = lens _mdpfiProFileId
+      (\ s a -> s{_mdpfiProFileId = a})
+
+-- | View (Profile) name.
+mdpfiProFileName :: Lens' McfDataProFileInfo (Maybe Text)
+mdpfiProFileName
+  = lens _mdpfiProFileName
+      (\ s a -> s{_mdpfiProFileName = a})
+
+-- | Account ID to which this view (profile) belongs.
+mdpfiAccountId :: Lens' McfDataProFileInfo (Maybe Text)
+mdpfiAccountId
+  = lens _mdpfiAccountId
+      (\ s a -> s{_mdpfiAccountId = a})
+
+-- | Internal ID for the web property to which this view (profile) belongs.
+mdpfiInternalWebPropertyId :: Lens' McfDataProFileInfo (Maybe Text)
+mdpfiInternalWebPropertyId
+  = lens _mdpfiInternalWebPropertyId
+      (\ s a -> s{_mdpfiInternalWebPropertyId = a})
+
+-- | Table ID for view (profile).
+mdpfiTableId :: Lens' McfDataProFileInfo (Maybe Text)
+mdpfiTableId
+  = lens _mdpfiTableId (\ s a -> s{_mdpfiTableId = a})
+
+instance FromJSON McfDataProFileInfo where
+        parseJSON
+          = withObject "McfDataProFileInfo"
+              (\ o ->
+                 McfDataProFileInfo <$>
+                   (o .:? "webPropertyId") <*> (o .:? "profileId") <*>
+                     (o .:? "profileName")
+                     <*> (o .:? "accountId")
+                     <*> (o .:? "internalWebPropertyId")
+                     <*> (o .:? "tableId"))
+
+instance ToJSON McfDataProFileInfo where
+        toJSON McfDataProFileInfo{..}
+          = object
+              (catMaybes
+                 [("webPropertyId" .=) <$> _mdpfiWebPropertyId,
+                  ("profileId" .=) <$> _mdpfiProFileId,
+                  ("profileName" .=) <$> _mdpfiProFileName,
+                  ("accountId" .=) <$> _mdpfiAccountId,
+                  ("internalWebPropertyId" .=) <$>
+                    _mdpfiInternalWebPropertyId,
+                  ("tableId" .=) <$> _mdpfiTableId])
+
+-- | Lists Analytics custom data sources to which the user has access. Each
+-- resource in the collection corresponds to a single Analytics custom data
+-- source.
+--
+-- /See:/ 'customDataSources' smart constructor.
+data CustomDataSources = CustomDataSources
+    { _cdsNextLink     :: !(Maybe Text)
+    , _cdsItemsPerPage :: !(Maybe (Textual Int32))
+    , _cdsKind         :: !Text
+    , _cdsUsername     :: !(Maybe Text)
+    , _cdsItems        :: !(Maybe [CustomDataSource])
+    , _cdsTotalResults :: !(Maybe (Textual Int32))
+    , _cdsStartIndex   :: !(Maybe (Textual Int32))
+    , _cdsPreviousLink :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'CustomDataSources' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'cdsNextLink'
+--
+-- * 'cdsItemsPerPage'
+--
+-- * 'cdsKind'
+--
+-- * 'cdsUsername'
+--
+-- * 'cdsItems'
+--
+-- * 'cdsTotalResults'
+--
+-- * 'cdsStartIndex'
+--
+-- * 'cdsPreviousLink'
+customDataSources
+    :: CustomDataSources
+customDataSources =
+    CustomDataSources
+    { _cdsNextLink = Nothing
+    , _cdsItemsPerPage = Nothing
+    , _cdsKind = "analytics#customDataSources"
+    , _cdsUsername = Nothing
+    , _cdsItems = Nothing
+    , _cdsTotalResults = Nothing
+    , _cdsStartIndex = Nothing
+    , _cdsPreviousLink = Nothing
+    }
+
+-- | Link to next page for this custom data source collection.
+cdsNextLink :: Lens' CustomDataSources (Maybe Text)
+cdsNextLink
+  = lens _cdsNextLink (\ s a -> s{_cdsNextLink = a})
+
+-- | The maximum number of resources the response can contain, regardless of
+-- the actual number of resources returned. Its value ranges from 1 to 1000
+-- with a value of 1000 by default, or otherwise specified by the
+-- max-results query parameter.
+cdsItemsPerPage :: Lens' CustomDataSources (Maybe Int32)
+cdsItemsPerPage
+  = lens _cdsItemsPerPage
+      (\ s a -> s{_cdsItemsPerPage = a})
+      . mapping _Coerce
+
+-- | Collection type.
+cdsKind :: Lens' CustomDataSources Text
+cdsKind = lens _cdsKind (\ s a -> s{_cdsKind = a})
+
+-- | Email ID of the authenticated user
+cdsUsername :: Lens' CustomDataSources (Maybe Text)
+cdsUsername
+  = lens _cdsUsername (\ s a -> s{_cdsUsername = a})
+
+-- | Collection of custom data sources.
+cdsItems :: Lens' CustomDataSources [CustomDataSource]
+cdsItems
+  = lens _cdsItems (\ s a -> s{_cdsItems = a}) .
+      _Default
+      . _Coerce
+
+-- | The total number of results for the query, regardless of the number of
+-- results in the response.
+cdsTotalResults :: Lens' CustomDataSources (Maybe Int32)
+cdsTotalResults
+  = lens _cdsTotalResults
+      (\ s a -> s{_cdsTotalResults = a})
+      . mapping _Coerce
+
+-- | The starting index of the resources, which is 1 by default or otherwise
+-- specified by the start-index query parameter.
+cdsStartIndex :: Lens' CustomDataSources (Maybe Int32)
+cdsStartIndex
+  = lens _cdsStartIndex
+      (\ s a -> s{_cdsStartIndex = a})
+      . mapping _Coerce
+
+-- | Link to previous page for this custom data source collection.
+cdsPreviousLink :: Lens' CustomDataSources (Maybe Text)
+cdsPreviousLink
+  = lens _cdsPreviousLink
+      (\ s a -> s{_cdsPreviousLink = a})
+
+instance FromJSON CustomDataSources where
+        parseJSON
+          = withObject "CustomDataSources"
+              (\ o ->
+                 CustomDataSources <$>
+                   (o .:? "nextLink") <*> (o .:? "itemsPerPage") <*>
+                     (o .:? "kind" .!= "analytics#customDataSources")
+                     <*> (o .:? "username")
+                     <*> (o .:? "items" .!= mempty)
+                     <*> (o .:? "totalResults")
+                     <*> (o .:? "startIndex")
+                     <*> (o .:? "previousLink"))
+
+instance ToJSON CustomDataSources where
+        toJSON CustomDataSources{..}
+          = object
+              (catMaybes
+                 [("nextLink" .=) <$> _cdsNextLink,
+                  ("itemsPerPage" .=) <$> _cdsItemsPerPage,
+                  Just ("kind" .= _cdsKind),
+                  ("username" .=) <$> _cdsUsername,
+                  ("items" .=) <$> _cdsItems,
+                  ("totalResults" .=) <$> _cdsTotalResults,
+                  ("startIndex" .=) <$> _cdsStartIndex,
+                  ("previousLink" .=) <$> _cdsPreviousLink])
+
+-- | Child link for this web property. Points to the list of views (profiles)
+-- for this web property.
+--
+-- /See:/ 'webPropertyChildLink' smart constructor.
+data WebPropertyChildLink = WebPropertyChildLink
+    { _wpclHref :: !(Maybe Text)
+    , _wpclType :: !Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'WebPropertyChildLink' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'wpclHref'
+--
+-- * 'wpclType'
+webPropertyChildLink
+    :: WebPropertyChildLink
+webPropertyChildLink =
+    WebPropertyChildLink
+    { _wpclHref = Nothing
+    , _wpclType = "analytics#profiles"
+    }
+
+-- | Link to the list of views (profiles) for this web property.
+wpclHref :: Lens' WebPropertyChildLink (Maybe Text)
+wpclHref = lens _wpclHref (\ s a -> s{_wpclHref = a})
+
+-- | Type of the parent link. Its value is \"analytics#profiles\".
+wpclType :: Lens' WebPropertyChildLink Text
+wpclType = lens _wpclType (\ s a -> s{_wpclType = a})
+
+instance FromJSON WebPropertyChildLink where
+        parseJSON
+          = withObject "WebPropertyChildLink"
+              (\ o ->
+                 WebPropertyChildLink <$>
+                   (o .:? "href") <*>
+                     (o .:? "type" .!= "analytics#profiles"))
+
+instance ToJSON WebPropertyChildLink where
+        toJSON WebPropertyChildLink{..}
+          = object
+              (catMaybes
+                 [("href" .=) <$> _wpclHref,
+                  Just ("type" .= _wpclType)])
+
+-- | Multi-Channel Funnels data for a given view (profile).
+--
+-- /See:/ 'mcfData' smart constructor.
+data McfData = McfData
+    { _mdNextLink            :: !(Maybe Text)
+    , _mdSampleSpace         :: !(Maybe (Textual Int64))
+    , _mdItemsPerPage        :: !(Maybe (Textual Int32))
+    , _mdProFileInfo         :: !(Maybe McfDataProFileInfo)
+    , _mdKind                :: !Text
+    , _mdSampleSize          :: !(Maybe (Textual Int64))
+    , _mdRows                :: !(Maybe [[McfDataRowsItemItem]])
+    , _mdSelfLink            :: !(Maybe Text)
+    , _mdQuery               :: !(Maybe McfDataQuery)
+    , _mdColumnHeaders       :: !(Maybe [McfDataColumnHeadersItem])
+    , _mdId                  :: !(Maybe Text)
+    , _mdTotalResults        :: !(Maybe (Textual Int32))
+    , _mdContainsSampledData :: !(Maybe Bool)
+    , _mdTotalsForAllResults :: !(Maybe McfDataTotalsForAllResults)
+    , _mdPreviousLink        :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'McfData' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'mdNextLink'
+--
+-- * 'mdSampleSpace'
+--
+-- * 'mdItemsPerPage'
+--
+-- * 'mdProFileInfo'
+--
+-- * 'mdKind'
+--
+-- * 'mdSampleSize'
+--
+-- * 'mdRows'
+--
+-- * 'mdSelfLink'
+--
+-- * 'mdQuery'
+--
+-- * 'mdColumnHeaders'
+--
+-- * 'mdId'
+--
+-- * 'mdTotalResults'
+--
+-- * 'mdContainsSampledData'
+--
+-- * 'mdTotalsForAllResults'
+--
+-- * 'mdPreviousLink'
+mcfData
+    :: McfData
+mcfData =
+    McfData
+    { _mdNextLink = Nothing
+    , _mdSampleSpace = Nothing
+    , _mdItemsPerPage = Nothing
+    , _mdProFileInfo = Nothing
+    , _mdKind = "analytics#mcfData"
+    , _mdSampleSize = Nothing
+    , _mdRows = Nothing
+    , _mdSelfLink = Nothing
+    , _mdQuery = Nothing
+    , _mdColumnHeaders = Nothing
+    , _mdId = Nothing
+    , _mdTotalResults = Nothing
+    , _mdContainsSampledData = Nothing
+    , _mdTotalsForAllResults = Nothing
+    , _mdPreviousLink = Nothing
+    }
+
+-- | Link to next page for this Analytics data query.
+mdNextLink :: Lens' McfData (Maybe Text)
+mdNextLink
+  = lens _mdNextLink (\ s a -> s{_mdNextLink = a})
+
+-- | Total size of the sample space from which the samples were selected.
+mdSampleSpace :: Lens' McfData (Maybe Int64)
+mdSampleSpace
+  = lens _mdSampleSpace
+      (\ s a -> s{_mdSampleSpace = a})
+      . mapping _Coerce
+
+-- | The maximum number of rows the response can contain, regardless of the
+-- actual number of rows returned. Its value ranges from 1 to 10,000 with a
+-- value of 1000 by default, or otherwise specified by the max-results
+-- query parameter.
+mdItemsPerPage :: Lens' McfData (Maybe Int32)
+mdItemsPerPage
+  = lens _mdItemsPerPage
+      (\ s a -> s{_mdItemsPerPage = a})
+      . mapping _Coerce
+
+-- | Information for the view (profile), for which the Analytics data was
+-- requested.
+mdProFileInfo :: Lens' McfData (Maybe McfDataProFileInfo)
+mdProFileInfo
+  = lens _mdProFileInfo
+      (\ s a -> s{_mdProFileInfo = a})
+
+-- | Resource type.
+mdKind :: Lens' McfData Text
+mdKind = lens _mdKind (\ s a -> s{_mdKind = a})
+
+-- | The number of samples used to calculate the result.
+mdSampleSize :: Lens' McfData (Maybe Int64)
+mdSampleSize
+  = lens _mdSampleSize (\ s a -> s{_mdSampleSize = a})
+      . mapping _Coerce
+
+-- | Analytics data rows, where each row contains a list of dimension values
+-- followed by the metric values. The order of dimensions and metrics is
+-- same as specified in the request.
+mdRows :: Lens' McfData [[McfDataRowsItemItem]]
+mdRows
+  = lens _mdRows (\ s a -> s{_mdRows = a}) . _Default .
+      _Coerce
+
+-- | Link to this page.
+mdSelfLink :: Lens' McfData (Maybe Text)
+mdSelfLink
+  = lens _mdSelfLink (\ s a -> s{_mdSelfLink = a})
+
+-- | Analytics data request query parameters.
+mdQuery :: Lens' McfData (Maybe McfDataQuery)
+mdQuery = lens _mdQuery (\ s a -> s{_mdQuery = a})
+
+-- | Column headers that list dimension names followed by the metric names.
+-- The order of dimensions and metrics is same as specified in the request.
+mdColumnHeaders :: Lens' McfData [McfDataColumnHeadersItem]
+mdColumnHeaders
+  = lens _mdColumnHeaders
+      (\ s a -> s{_mdColumnHeaders = a})
+      . _Default
+      . _Coerce
+
+-- | Unique ID for this data response.
+mdId :: Lens' McfData (Maybe Text)
+mdId = lens _mdId (\ s a -> s{_mdId = a})
+
+-- | The total number of rows for the query, regardless of the number of rows
+-- in the response.
+mdTotalResults :: Lens' McfData (Maybe Int32)
+mdTotalResults
+  = lens _mdTotalResults
+      (\ s a -> s{_mdTotalResults = a})
+      . mapping _Coerce
+
+-- | Determines if the Analytics data contains sampled data.
+mdContainsSampledData :: Lens' McfData (Maybe Bool)
+mdContainsSampledData
+  = lens _mdContainsSampledData
+      (\ s a -> s{_mdContainsSampledData = a})
+
+-- | Total values for the requested metrics over all the results, not just
+-- the results returned in this response. The order of the metric totals is
+-- same as the metric order specified in the request.
+mdTotalsForAllResults :: Lens' McfData (Maybe McfDataTotalsForAllResults)
+mdTotalsForAllResults
+  = lens _mdTotalsForAllResults
+      (\ s a -> s{_mdTotalsForAllResults = a})
+
+-- | Link to previous page for this Analytics data query.
+mdPreviousLink :: Lens' McfData (Maybe Text)
+mdPreviousLink
+  = lens _mdPreviousLink
+      (\ s a -> s{_mdPreviousLink = a})
+
+instance FromJSON McfData where
+        parseJSON
+          = withObject "McfData"
+              (\ o ->
+                 McfData <$>
+                   (o .:? "nextLink") <*> (o .:? "sampleSpace") <*>
+                     (o .:? "itemsPerPage")
+                     <*> (o .:? "profileInfo")
+                     <*> (o .:? "kind" .!= "analytics#mcfData")
+                     <*> (o .:? "sampleSize")
+                     <*> (o .:? "rows" .!= mempty)
+                     <*> (o .:? "selfLink")
+                     <*> (o .:? "query")
+                     <*> (o .:? "columnHeaders" .!= mempty)
+                     <*> (o .:? "id")
+                     <*> (o .:? "totalResults")
+                     <*> (o .:? "containsSampledData")
+                     <*> (o .:? "totalsForAllResults")
+                     <*> (o .:? "previousLink"))
+
+instance ToJSON McfData where
+        toJSON McfData{..}
+          = object
+              (catMaybes
+                 [("nextLink" .=) <$> _mdNextLink,
+                  ("sampleSpace" .=) <$> _mdSampleSpace,
+                  ("itemsPerPage" .=) <$> _mdItemsPerPage,
+                  ("profileInfo" .=) <$> _mdProFileInfo,
+                  Just ("kind" .= _mdKind),
+                  ("sampleSize" .=) <$> _mdSampleSize,
+                  ("rows" .=) <$> _mdRows,
+                  ("selfLink" .=) <$> _mdSelfLink,
+                  ("query" .=) <$> _mdQuery,
+                  ("columnHeaders" .=) <$> _mdColumnHeaders,
+                  ("id" .=) <$> _mdId,
+                  ("totalResults" .=) <$> _mdTotalResults,
+                  ("containsSampledData" .=) <$>
+                    _mdContainsSampledData,
+                  ("totalsForAllResults" .=) <$>
+                    _mdTotalsForAllResults,
+                  ("previousLink" .=) <$> _mdPreviousLink])
+
+-- | JSON template for a user reference.
+--
+-- /See:/ 'userRef' smart constructor.
+data UserRef = UserRef
+    { _urEmail :: !(Maybe Text)
+    , _urKind  :: !Text
+    , _urId    :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'UserRef' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'urEmail'
+--
+-- * 'urKind'
+--
+-- * 'urId'
+userRef
+    :: UserRef
+userRef =
+    UserRef
+    { _urEmail = Nothing
+    , _urKind = "analytics#userRef"
+    , _urId = Nothing
+    }
+
+-- | Email ID of this user.
+urEmail :: Lens' UserRef (Maybe Text)
+urEmail = lens _urEmail (\ s a -> s{_urEmail = a})
+
+urKind :: Lens' UserRef Text
+urKind = lens _urKind (\ s a -> s{_urKind = a})
+
+-- | User ID.
+urId :: Lens' UserRef (Maybe Text)
+urId = lens _urId (\ s a -> s{_urId = a})
+
+instance FromJSON UserRef where
+        parseJSON
+          = withObject "UserRef"
+              (\ o ->
+                 UserRef <$>
+                   (o .:? "email") <*>
+                     (o .:? "kind" .!= "analytics#userRef")
+                     <*> (o .:? "id"))
+
+instance ToJSON UserRef where
+        toJSON UserRef{..}
+          = object
+              (catMaybes
+                 [("email" .=) <$> _urEmail, Just ("kind" .= _urKind),
+                  ("id" .=) <$> _urId])
+
+-- | Details for the goal of the type VISIT_NUM_PAGES.
+--
+-- /See:/ 'goalVisitNumPagesDetails' smart constructor.
+data GoalVisitNumPagesDetails = GoalVisitNumPagesDetails
+    { _gvnpdComparisonValue :: !(Maybe (Textual Int64))
+    , _gvnpdComparisonType  :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'GoalVisitNumPagesDetails' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'gvnpdComparisonValue'
+--
+-- * 'gvnpdComparisonType'
+goalVisitNumPagesDetails
+    :: GoalVisitNumPagesDetails
+goalVisitNumPagesDetails =
+    GoalVisitNumPagesDetails
+    { _gvnpdComparisonValue = Nothing
+    , _gvnpdComparisonType = Nothing
+    }
+
+-- | Value used for this comparison.
+gvnpdComparisonValue :: Lens' GoalVisitNumPagesDetails (Maybe Int64)
+gvnpdComparisonValue
+  = lens _gvnpdComparisonValue
+      (\ s a -> s{_gvnpdComparisonValue = a})
+      . mapping _Coerce
+
+-- | Type of comparison. Possible values are LESS_THAN, GREATER_THAN, or
+-- EQUAL.
+gvnpdComparisonType :: Lens' GoalVisitNumPagesDetails (Maybe Text)
+gvnpdComparisonType
+  = lens _gvnpdComparisonType
+      (\ s a -> s{_gvnpdComparisonType = a})
+
+instance FromJSON GoalVisitNumPagesDetails where
+        parseJSON
+          = withObject "GoalVisitNumPagesDetails"
+              (\ o ->
+                 GoalVisitNumPagesDetails <$>
+                   (o .:? "comparisonValue") <*>
+                     (o .:? "comparisonType"))
+
+instance ToJSON GoalVisitNumPagesDetails where
+        toJSON GoalVisitNumPagesDetails{..}
+          = object
+              (catMaybes
+                 [("comparisonValue" .=) <$> _gvnpdComparisonValue,
+                  ("comparisonType" .=) <$> _gvnpdComparisonType])
+
+--
+-- /See:/ 'realtimeDataColumnHeadersItem' smart constructor.
+data RealtimeDataColumnHeadersItem = RealtimeDataColumnHeadersItem
+    { _rdchiColumnType :: !(Maybe Text)
+    , _rdchiName       :: !(Maybe Text)
+    , _rdchiDataType   :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'RealtimeDataColumnHeadersItem' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'rdchiColumnType'
+--
+-- * 'rdchiName'
+--
+-- * 'rdchiDataType'
+realtimeDataColumnHeadersItem
+    :: RealtimeDataColumnHeadersItem
+realtimeDataColumnHeadersItem =
+    RealtimeDataColumnHeadersItem
+    { _rdchiColumnType = Nothing
+    , _rdchiName = Nothing
+    , _rdchiDataType = Nothing
+    }
+
+-- | Column Type. Either DIMENSION or METRIC.
+rdchiColumnType :: Lens' RealtimeDataColumnHeadersItem (Maybe Text)
+rdchiColumnType
+  = lens _rdchiColumnType
+      (\ s a -> s{_rdchiColumnType = a})
+
+-- | Column name.
+rdchiName :: Lens' RealtimeDataColumnHeadersItem (Maybe Text)
+rdchiName
+  = lens _rdchiName (\ s a -> s{_rdchiName = a})
+
+-- | Data type. Dimension column headers have only STRING as the data type.
+-- Metric column headers have data types for metric values such as INTEGER,
+-- DOUBLE, CURRENCY etc.
+rdchiDataType :: Lens' RealtimeDataColumnHeadersItem (Maybe Text)
+rdchiDataType
+  = lens _rdchiDataType
+      (\ s a -> s{_rdchiDataType = a})
+
+instance FromJSON RealtimeDataColumnHeadersItem where
+        parseJSON
+          = withObject "RealtimeDataColumnHeadersItem"
+              (\ o ->
+                 RealtimeDataColumnHeadersItem <$>
+                   (o .:? "columnType") <*> (o .:? "name") <*>
+                     (o .:? "dataType"))
+
+instance ToJSON RealtimeDataColumnHeadersItem where
+        toJSON RealtimeDataColumnHeadersItem{..}
+          = object
+              (catMaybes
+                 [("columnType" .=) <$> _rdchiColumnType,
+                  ("name" .=) <$> _rdchiName,
+                  ("dataType" .=) <$> _rdchiDataType])
+
+-- | JSON template for a linked account.
+--
+-- /See:/ 'accountRef' smart constructor.
+data AccountRef = AccountRef
+    { _arKind :: !Text
+    , _arHref :: !(Maybe Text)
+    , _arName :: !(Maybe Text)
+    , _arId   :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'AccountRef' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'arKind'
+--
+-- * 'arHref'
+--
+-- * 'arName'
+--
+-- * 'arId'
+accountRef
+    :: AccountRef
+accountRef =
+    AccountRef
+    { _arKind = "analytics#accountRef"
+    , _arHref = Nothing
+    , _arName = Nothing
+    , _arId = Nothing
+    }
+
+-- | Analytics account reference.
+arKind :: Lens' AccountRef Text
+arKind = lens _arKind (\ s a -> s{_arKind = a})
+
+-- | Link for this account.
+arHref :: Lens' AccountRef (Maybe Text)
+arHref = lens _arHref (\ s a -> s{_arHref = a})
+
+-- | Account name.
+arName :: Lens' AccountRef (Maybe Text)
+arName = lens _arName (\ s a -> s{_arName = a})
+
+-- | Account ID.
+arId :: Lens' AccountRef (Maybe Text)
+arId = lens _arId (\ s a -> s{_arId = a})
+
+instance FromJSON AccountRef where
+        parseJSON
+          = withObject "AccountRef"
+              (\ o ->
+                 AccountRef <$>
+                   (o .:? "kind" .!= "analytics#accountRef") <*>
+                     (o .:? "href")
+                     <*> (o .:? "name")
+                     <*> (o .:? "id"))
+
+instance ToJSON AccountRef where
+        toJSON AccountRef{..}
+          = object
+              (catMaybes
+                 [Just ("kind" .= _arKind), ("href" .=) <$> _arHref,
+                  ("name" .=) <$> _arName, ("id" .=) <$> _arId])
+
+-- | An entity AdWords link collection provides a list of GA-AdWords links
+-- Each resource in this collection corresponds to a single link.
+--
+-- /See:/ 'entityAdWordsLinks' smart constructor.
+data EntityAdWordsLinks = EntityAdWordsLinks
+    { _eawlNextLink     :: !(Maybe Text)
+    , _eawlItemsPerPage :: !(Maybe (Textual Int32))
+    , _eawlKind         :: !Text
+    , _eawlItems        :: !(Maybe [EntityAdWordsLink])
+    , _eawlTotalResults :: !(Maybe (Textual Int32))
+    , _eawlStartIndex   :: !(Maybe (Textual Int32))
+    , _eawlPreviousLink :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'EntityAdWordsLinks' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'eawlNextLink'
+--
+-- * 'eawlItemsPerPage'
+--
+-- * 'eawlKind'
+--
+-- * 'eawlItems'
+--
+-- * 'eawlTotalResults'
+--
+-- * 'eawlStartIndex'
+--
+-- * 'eawlPreviousLink'
+entityAdWordsLinks
+    :: EntityAdWordsLinks
+entityAdWordsLinks =
+    EntityAdWordsLinks
+    { _eawlNextLink = Nothing
+    , _eawlItemsPerPage = Nothing
+    , _eawlKind = "analytics#entityAdWordsLinks"
+    , _eawlItems = Nothing
+    , _eawlTotalResults = Nothing
+    , _eawlStartIndex = Nothing
+    , _eawlPreviousLink = Nothing
+    }
+
+-- | Next link for this AdWords link collection.
+eawlNextLink :: Lens' EntityAdWordsLinks (Maybe Text)
+eawlNextLink
+  = lens _eawlNextLink (\ s a -> s{_eawlNextLink = a})
+
+-- | The maximum number of entries the response can contain, regardless of
+-- the actual number of entries returned. Its value ranges from 1 to 1000
+-- with a value of 1000 by default, or otherwise specified by the
+-- max-results query parameter.
+eawlItemsPerPage :: Lens' EntityAdWordsLinks (Maybe Int32)
+eawlItemsPerPage
+  = lens _eawlItemsPerPage
+      (\ s a -> s{_eawlItemsPerPage = a})
+      . mapping _Coerce
+
+-- | Collection type.
+eawlKind :: Lens' EntityAdWordsLinks Text
+eawlKind = lens _eawlKind (\ s a -> s{_eawlKind = a})
+
+-- | A list of entity AdWords links.
+eawlItems :: Lens' EntityAdWordsLinks [EntityAdWordsLink]
+eawlItems
+  = lens _eawlItems (\ s a -> s{_eawlItems = a}) .
+      _Default
+      . _Coerce
+
+-- | The total number of results for the query, regardless of the number of
+-- results in the response.
+eawlTotalResults :: Lens' EntityAdWordsLinks (Maybe Int32)
+eawlTotalResults
+  = lens _eawlTotalResults
+      (\ s a -> s{_eawlTotalResults = a})
+      . mapping _Coerce
+
+-- | The starting index of the entries, which is 1 by default or otherwise
+-- specified by the start-index query parameter.
+eawlStartIndex :: Lens' EntityAdWordsLinks (Maybe Int32)
+eawlStartIndex
+  = lens _eawlStartIndex
+      (\ s a -> s{_eawlStartIndex = a})
+      . mapping _Coerce
+
+-- | Previous link for this AdWords link collection.
+eawlPreviousLink :: Lens' EntityAdWordsLinks (Maybe Text)
+eawlPreviousLink
+  = lens _eawlPreviousLink
+      (\ s a -> s{_eawlPreviousLink = a})
+
+instance FromJSON EntityAdWordsLinks where
+        parseJSON
+          = withObject "EntityAdWordsLinks"
+              (\ o ->
+                 EntityAdWordsLinks <$>
+                   (o .:? "nextLink") <*> (o .:? "itemsPerPage") <*>
+                     (o .:? "kind" .!= "analytics#entityAdWordsLinks")
+                     <*> (o .:? "items" .!= mempty)
+                     <*> (o .:? "totalResults")
+                     <*> (o .:? "startIndex")
+                     <*> (o .:? "previousLink"))
+
+instance ToJSON EntityAdWordsLinks where
+        toJSON EntityAdWordsLinks{..}
+          = object
+              (catMaybes
+                 [("nextLink" .=) <$> _eawlNextLink,
+                  ("itemsPerPage" .=) <$> _eawlItemsPerPage,
+                  Just ("kind" .= _eawlKind),
+                  ("items" .=) <$> _eawlItems,
+                  ("totalResults" .=) <$> _eawlTotalResults,
+                  ("startIndex" .=) <$> _eawlStartIndex,
+                  ("previousLink" .=) <$> _eawlPreviousLink])
+
+-- | A view (profile) collection lists Analytics views (profiles) to which
+-- the user has access. Each resource in the collection corresponds to a
+-- single Analytics view (profile).
+--
+-- /See:/ 'proFiles' smart constructor.
+data ProFiles = ProFiles
+    { _pfNextLink     :: !(Maybe Text)
+    , _pfItemsPerPage :: !(Maybe (Textual Int32))
+    , _pfKind         :: !Text
+    , _pfUsername     :: !(Maybe Text)
+    , _pfItems        :: !(Maybe [ProFile])
+    , _pfTotalResults :: !(Maybe (Textual Int32))
+    , _pfStartIndex   :: !(Maybe (Textual Int32))
+    , _pfPreviousLink :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ProFiles' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'pfNextLink'
+--
+-- * 'pfItemsPerPage'
+--
+-- * 'pfKind'
+--
+-- * 'pfUsername'
+--
+-- * 'pfItems'
+--
+-- * 'pfTotalResults'
+--
+-- * 'pfStartIndex'
+--
+-- * 'pfPreviousLink'
+proFiles
+    :: ProFiles
+proFiles =
+    ProFiles
+    { _pfNextLink = Nothing
+    , _pfItemsPerPage = Nothing
+    , _pfKind = "analytics#profiles"
+    , _pfUsername = Nothing
+    , _pfItems = Nothing
+    , _pfTotalResults = Nothing
+    , _pfStartIndex = Nothing
+    , _pfPreviousLink = Nothing
+    }
+
+-- | Link to next page for this view (profile) collection.
+pfNextLink :: Lens' ProFiles (Maybe Text)
+pfNextLink
+  = lens _pfNextLink (\ s a -> s{_pfNextLink = a})
+
+-- | The maximum number of resources the response can contain, regardless of
+-- the actual number of resources returned. Its value ranges from 1 to 1000
+-- with a value of 1000 by default, or otherwise specified by the
+-- max-results query parameter.
+pfItemsPerPage :: Lens' ProFiles (Maybe Int32)
+pfItemsPerPage
+  = lens _pfItemsPerPage
+      (\ s a -> s{_pfItemsPerPage = a})
+      . mapping _Coerce
+
+-- | Collection type.
+pfKind :: Lens' ProFiles Text
+pfKind = lens _pfKind (\ s a -> s{_pfKind = a})
+
+-- | Email ID of the authenticated user
+pfUsername :: Lens' ProFiles (Maybe Text)
+pfUsername
+  = lens _pfUsername (\ s a -> s{_pfUsername = a})
+
+-- | A list of views (profiles).
+pfItems :: Lens' ProFiles [ProFile]
+pfItems
+  = lens _pfItems (\ s a -> s{_pfItems = a}) . _Default
+      . _Coerce
+
+-- | The total number of results for the query, regardless of the number of
+-- results in the response.
+pfTotalResults :: Lens' ProFiles (Maybe Int32)
+pfTotalResults
+  = lens _pfTotalResults
+      (\ s a -> s{_pfTotalResults = a})
+      . mapping _Coerce
+
+-- | The starting index of the resources, which is 1 by default or otherwise
+-- specified by the start-index query parameter.
+pfStartIndex :: Lens' ProFiles (Maybe Int32)
+pfStartIndex
+  = lens _pfStartIndex (\ s a -> s{_pfStartIndex = a})
+      . mapping _Coerce
+
+-- | Link to previous page for this view (profile) collection.
+pfPreviousLink :: Lens' ProFiles (Maybe Text)
+pfPreviousLink
+  = lens _pfPreviousLink
+      (\ s a -> s{_pfPreviousLink = a})
+
+instance FromJSON ProFiles where
+        parseJSON
+          = withObject "ProFiles"
+              (\ o ->
+                 ProFiles <$>
+                   (o .:? "nextLink") <*> (o .:? "itemsPerPage") <*>
+                     (o .:? "kind" .!= "analytics#profiles")
+                     <*> (o .:? "username")
+                     <*> (o .:? "items" .!= mempty)
+                     <*> (o .:? "totalResults")
+                     <*> (o .:? "startIndex")
+                     <*> (o .:? "previousLink"))
+
+instance ToJSON ProFiles where
+        toJSON ProFiles{..}
+          = object
+              (catMaybes
+                 [("nextLink" .=) <$> _pfNextLink,
+                  ("itemsPerPage" .=) <$> _pfItemsPerPage,
+                  Just ("kind" .= _pfKind),
+                  ("username" .=) <$> _pfUsername,
+                  ("items" .=) <$> _pfItems,
+                  ("totalResults" .=) <$> _pfTotalResults,
+                  ("startIndex" .=) <$> _pfStartIndex,
+                  ("previousLink" .=) <$> _pfPreviousLink])
+
+-- | Request template for the delete upload data request.
+--
+-- /See:/ 'analyticsDataimportDeleteUploadDataRequest' smart constructor.
+newtype AnalyticsDataimportDeleteUploadDataRequest = AnalyticsDataimportDeleteUploadDataRequest
+    { _addudrCustomDataImportUids :: Maybe [Text]
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'AnalyticsDataimportDeleteUploadDataRequest' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'addudrCustomDataImportUids'
+analyticsDataimportDeleteUploadDataRequest
+    :: AnalyticsDataimportDeleteUploadDataRequest
+analyticsDataimportDeleteUploadDataRequest =
+    AnalyticsDataimportDeleteUploadDataRequest
+    { _addudrCustomDataImportUids = Nothing
+    }
+
+-- | A list of upload UIDs.
+addudrCustomDataImportUids :: Lens' AnalyticsDataimportDeleteUploadDataRequest [Text]
+addudrCustomDataImportUids
+  = lens _addudrCustomDataImportUids
+      (\ s a -> s{_addudrCustomDataImportUids = a})
+      . _Default
+      . _Coerce
+
+instance FromJSON
+         AnalyticsDataimportDeleteUploadDataRequest where
+        parseJSON
+          = withObject
+              "AnalyticsDataimportDeleteUploadDataRequest"
+              (\ o ->
+                 AnalyticsDataimportDeleteUploadDataRequest <$>
+                   (o .:? "customDataImportUids" .!= mempty))
+
+instance ToJSON
+         AnalyticsDataimportDeleteUploadDataRequest where
+        toJSON AnalyticsDataimportDeleteUploadDataRequest{..}
+          = object
+              (catMaybes
+                 [("customDataImportUids" .=) <$>
+                    _addudrCustomDataImportUids])
+
+-- | JSON template for Analytics Entity AdWords Link.
+--
+-- /See:/ 'entityAdWordsLink' smart constructor.
+data EntityAdWordsLink = EntityAdWordsLink
+    { _entAdWordsAccounts :: !(Maybe [AdWordsAccount])
+    , _entProFileIds      :: !(Maybe [Text])
+    , _entKind            :: !Text
+    , _entSelfLink        :: !(Maybe Text)
+    , _entName            :: !(Maybe Text)
+    , _entId              :: !(Maybe Text)
+    , _entEntity          :: !(Maybe EntityAdWordsLinkEntity)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'EntityAdWordsLink' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'entAdWordsAccounts'
+--
+-- * 'entProFileIds'
+--
+-- * 'entKind'
+--
+-- * 'entSelfLink'
+--
+-- * 'entName'
+--
+-- * 'entId'
+--
+-- * 'entEntity'
+entityAdWordsLink
+    :: EntityAdWordsLink
+entityAdWordsLink =
+    EntityAdWordsLink
+    { _entAdWordsAccounts = Nothing
+    , _entProFileIds = Nothing
+    , _entKind = "analytics#entityAdWordsLink"
+    , _entSelfLink = Nothing
+    , _entName = Nothing
+    , _entId = Nothing
+    , _entEntity = Nothing
+    }
+
+-- | A list of AdWords client accounts. These cannot be MCC accounts. This
+-- field is required when creating an AdWords link. It cannot be empty.
+entAdWordsAccounts :: Lens' EntityAdWordsLink [AdWordsAccount]
+entAdWordsAccounts
+  = lens _entAdWordsAccounts
+      (\ s a -> s{_entAdWordsAccounts = a})
+      . _Default
+      . _Coerce
+
+-- | IDs of linked Views (Profiles) represented as strings.
+entProFileIds :: Lens' EntityAdWordsLink [Text]
+entProFileIds
+  = lens _entProFileIds
+      (\ s a -> s{_entProFileIds = a})
+      . _Default
+      . _Coerce
+
+-- | Resource type for entity AdWords link.
+entKind :: Lens' EntityAdWordsLink Text
+entKind = lens _entKind (\ s a -> s{_entKind = a})
+
+-- | URL link for this Google Analytics - Google AdWords link.
+entSelfLink :: Lens' EntityAdWordsLink (Maybe Text)
+entSelfLink
+  = lens _entSelfLink (\ s a -> s{_entSelfLink = a})
+
+-- | Name of the link. This field is required when creating an AdWords link.
+entName :: Lens' EntityAdWordsLink (Maybe Text)
+entName = lens _entName (\ s a -> s{_entName = a})
+
+-- | Entity AdWords link ID
+entId :: Lens' EntityAdWordsLink (Maybe Text)
+entId = lens _entId (\ s a -> s{_entId = a})
+
+-- | Web property being linked.
+entEntity :: Lens' EntityAdWordsLink (Maybe EntityAdWordsLinkEntity)
+entEntity
+  = lens _entEntity (\ s a -> s{_entEntity = a})
+
+instance FromJSON EntityAdWordsLink where
+        parseJSON
+          = withObject "EntityAdWordsLink"
+              (\ o ->
+                 EntityAdWordsLink <$>
+                   (o .:? "adWordsAccounts" .!= mempty) <*>
+                     (o .:? "profileIds" .!= mempty)
+                     <*> (o .:? "kind" .!= "analytics#entityAdWordsLink")
+                     <*> (o .:? "selfLink")
+                     <*> (o .:? "name")
+                     <*> (o .:? "id")
+                     <*> (o .:? "entity"))
+
+instance ToJSON EntityAdWordsLink where
+        toJSON EntityAdWordsLink{..}
+          = object
+              (catMaybes
+                 [("adWordsAccounts" .=) <$> _entAdWordsAccounts,
+                  ("profileIds" .=) <$> _entProFileIds,
+                  Just ("kind" .= _entKind),
+                  ("selfLink" .=) <$> _entSelfLink,
+                  ("name" .=) <$> _entName, ("id" .=) <$> _entId,
+                  ("entity" .=) <$> _entEntity])
+
+-- | Details for the filter of the type SEARCH_AND_REPLACE.
+--
+-- /See:/ 'filterSearchAndReplaceDetails' smart constructor.
+data FilterSearchAndReplaceDetails = FilterSearchAndReplaceDetails
+    { _fsardFieldIndex    :: !(Maybe (Textual Int32))
+    , _fsardField         :: !(Maybe Text)
+    , _fsardSearchString  :: !(Maybe Text)
+    , _fsardReplaceString :: !(Maybe Text)
+    , _fsardCaseSensitive :: !(Maybe Bool)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'FilterSearchAndReplaceDetails' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'fsardFieldIndex'
+--
+-- * 'fsardField'
+--
+-- * 'fsardSearchString'
+--
+-- * 'fsardReplaceString'
+--
+-- * 'fsardCaseSensitive'
+filterSearchAndReplaceDetails
+    :: FilterSearchAndReplaceDetails
+filterSearchAndReplaceDetails =
+    FilterSearchAndReplaceDetails
+    { _fsardFieldIndex = Nothing
+    , _fsardField = Nothing
+    , _fsardSearchString = Nothing
+    , _fsardReplaceString = Nothing
+    , _fsardCaseSensitive = Nothing
+    }
+
+-- | The Index of the custom dimension. Required if field is a
+-- CUSTOM_DIMENSION.
+fsardFieldIndex :: Lens' FilterSearchAndReplaceDetails (Maybe Int32)
+fsardFieldIndex
+  = lens _fsardFieldIndex
+      (\ s a -> s{_fsardFieldIndex = a})
+      . mapping _Coerce
+
+-- | Field to use in the filter.
+fsardField :: Lens' FilterSearchAndReplaceDetails (Maybe Text)
+fsardField
+  = lens _fsardField (\ s a -> s{_fsardField = a})
+
+-- | Term to search.
+fsardSearchString :: Lens' FilterSearchAndReplaceDetails (Maybe Text)
+fsardSearchString
+  = lens _fsardSearchString
+      (\ s a -> s{_fsardSearchString = a})
+
+-- | Term to replace the search term with.
+fsardReplaceString :: Lens' FilterSearchAndReplaceDetails (Maybe Text)
+fsardReplaceString
+  = lens _fsardReplaceString
+      (\ s a -> s{_fsardReplaceString = a})
+
+-- | Determines if the filter is case sensitive.
+fsardCaseSensitive :: Lens' FilterSearchAndReplaceDetails (Maybe Bool)
+fsardCaseSensitive
+  = lens _fsardCaseSensitive
+      (\ s a -> s{_fsardCaseSensitive = a})
+
+instance FromJSON FilterSearchAndReplaceDetails where
+        parseJSON
+          = withObject "FilterSearchAndReplaceDetails"
+              (\ o ->
+                 FilterSearchAndReplaceDetails <$>
+                   (o .:? "fieldIndex") <*> (o .:? "field") <*>
+                     (o .:? "searchString")
+                     <*> (o .:? "replaceString")
+                     <*> (o .:? "caseSensitive"))
+
+instance ToJSON FilterSearchAndReplaceDetails where
+        toJSON FilterSearchAndReplaceDetails{..}
+          = object
+              (catMaybes
+                 [("fieldIndex" .=) <$> _fsardFieldIndex,
+                  ("field" .=) <$> _fsardField,
+                  ("searchString" .=) <$> _fsardSearchString,
+                  ("replaceString" .=) <$> _fsardReplaceString,
+                  ("caseSensitive" .=) <$> _fsardCaseSensitive])
+
+-- | Permissions the user has for this view (profile).
+--
+-- /See:/ 'proFilePermissions' smart constructor.
+newtype ProFilePermissions = ProFilePermissions
+    { _pfpEffective :: Maybe [Text]
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ProFilePermissions' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'pfpEffective'
+proFilePermissions
+    :: ProFilePermissions
+proFilePermissions =
+    ProFilePermissions
+    { _pfpEffective = Nothing
+    }
+
+-- | All the permissions that the user has for this view (profile). These
+-- include any implied permissions (e.g., EDIT implies VIEW) or inherited
+-- permissions from the parent web property.
+pfpEffective :: Lens' ProFilePermissions [Text]
+pfpEffective
+  = lens _pfpEffective (\ s a -> s{_pfpEffective = a})
+      . _Default
+      . _Coerce
+
+instance FromJSON ProFilePermissions where
+        parseJSON
+          = withObject "ProFilePermissions"
+              (\ o ->
+                 ProFilePermissions <$>
+                   (o .:? "effective" .!= mempty))
+
+instance ToJSON ProFilePermissions where
+        toJSON ProFilePermissions{..}
+          = object
+              (catMaybes [("effective" .=) <$> _pfpEffective])
+
+-- | JSON template for an Analytics view (profile).
+--
+-- /See:/ 'proFile' smart constructor.
+data ProFile = ProFile
+    { _pParentLink                        :: !(Maybe ProFileParentLink)
+    , _pECommerceTracking                 :: !(Maybe Bool)
+    , _pSiteSearchCategoryParameters      :: !(Maybe Text)
+    , _pWebPropertyId                     :: !(Maybe Text)
+    , _pChildLink                         :: !(Maybe ProFileChildLink)
+    , _pSiteSearchQueryParameters         :: !(Maybe Text)
+    , _pKind                              :: !Text
+    , _pDefaultPage                       :: !(Maybe Text)
+    , _pCreated                           :: !(Maybe DateTime')
+    , _pSelfLink                          :: !(Maybe Text)
+    , _pAccountId                         :: !(Maybe Text)
+    , _pName                              :: !(Maybe Text)
+    , _pCurrency                          :: !(Maybe Text)
+    , _pInternalWebPropertyId             :: !(Maybe Text)
+    , _pId                                :: !(Maybe Text)
+    , _pUpdated                           :: !(Maybe DateTime')
+    , _pPermissions                       :: !(Maybe ProFilePermissions)
+    , _pWebsiteURL                        :: !(Maybe Text)
+    , _pType                              :: !(Maybe Text)
+    , _pStripSiteSearchCategoryParameters :: !(Maybe Bool)
+    , _pTimezone                          :: !(Maybe Text)
+    , _pExcludeQueryParameters            :: !(Maybe Text)
+    , _pEnhancedECommerceTracking         :: !(Maybe Bool)
+    , _pStripSiteSearchQueryParameters    :: !(Maybe Bool)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ProFile' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'pParentLink'
+--
+-- * 'pECommerceTracking'
+--
+-- * 'pSiteSearchCategoryParameters'
+--
+-- * 'pWebPropertyId'
+--
+-- * 'pChildLink'
+--
+-- * 'pSiteSearchQueryParameters'
+--
+-- * 'pKind'
+--
+-- * 'pDefaultPage'
+--
+-- * 'pCreated'
+--
+-- * 'pSelfLink'
+--
+-- * 'pAccountId'
+--
+-- * 'pName'
+--
+-- * 'pCurrency'
+--
+-- * 'pInternalWebPropertyId'
+--
+-- * 'pId'
+--
+-- * 'pUpdated'
+--
+-- * 'pPermissions'
+--
+-- * 'pWebsiteURL'
+--
+-- * 'pType'
+--
+-- * 'pStripSiteSearchCategoryParameters'
+--
+-- * 'pTimezone'
+--
+-- * 'pExcludeQueryParameters'
+--
+-- * 'pEnhancedECommerceTracking'
+--
+-- * 'pStripSiteSearchQueryParameters'
+proFile
+    :: ProFile
+proFile =
+    ProFile
+    { _pParentLink = Nothing
+    , _pECommerceTracking = Nothing
+    , _pSiteSearchCategoryParameters = Nothing
+    , _pWebPropertyId = Nothing
+    , _pChildLink = Nothing
+    , _pSiteSearchQueryParameters = Nothing
+    , _pKind = "analytics#profile"
+    , _pDefaultPage = Nothing
+    , _pCreated = Nothing
+    , _pSelfLink = Nothing
+    , _pAccountId = Nothing
+    , _pName = Nothing
+    , _pCurrency = Nothing
+    , _pInternalWebPropertyId = Nothing
+    , _pId = Nothing
+    , _pUpdated = Nothing
+    , _pPermissions = Nothing
+    , _pWebsiteURL = Nothing
+    , _pType = Nothing
+    , _pStripSiteSearchCategoryParameters = Nothing
+    , _pTimezone = Nothing
+    , _pExcludeQueryParameters = Nothing
+    , _pEnhancedECommerceTracking = Nothing
+    , _pStripSiteSearchQueryParameters = Nothing
+    }
+
+-- | Parent link for this view (profile). Points to the web property to which
+-- this view (profile) belongs.
+pParentLink :: Lens' ProFile (Maybe ProFileParentLink)
+pParentLink
+  = lens _pParentLink (\ s a -> s{_pParentLink = a})
+
+-- | Indicates whether ecommerce tracking is enabled for this view (profile).
+pECommerceTracking :: Lens' ProFile (Maybe Bool)
+pECommerceTracking
+  = lens _pECommerceTracking
+      (\ s a -> s{_pECommerceTracking = a})
+
+-- | Site search category parameters for this view (profile).
+pSiteSearchCategoryParameters :: Lens' ProFile (Maybe Text)
+pSiteSearchCategoryParameters
+  = lens _pSiteSearchCategoryParameters
+      (\ s a -> s{_pSiteSearchCategoryParameters = a})
+
+-- | Web property ID of the form UA-XXXXX-YY to which this view (profile)
+-- belongs.
+pWebPropertyId :: Lens' ProFile (Maybe Text)
+pWebPropertyId
+  = lens _pWebPropertyId
+      (\ s a -> s{_pWebPropertyId = a})
+
+-- | Child link for this view (profile). Points to the list of goals for this
+-- view (profile).
+pChildLink :: Lens' ProFile (Maybe ProFileChildLink)
+pChildLink
+  = lens _pChildLink (\ s a -> s{_pChildLink = a})
+
+-- | The site search query parameters for this view (profile).
+pSiteSearchQueryParameters :: Lens' ProFile (Maybe Text)
+pSiteSearchQueryParameters
+  = lens _pSiteSearchQueryParameters
+      (\ s a -> s{_pSiteSearchQueryParameters = a})
+
+-- | Resource type for Analytics view (profile).
+pKind :: Lens' ProFile Text
+pKind = lens _pKind (\ s a -> s{_pKind = a})
+
+-- | Default page for this view (profile).
+pDefaultPage :: Lens' ProFile (Maybe Text)
+pDefaultPage
+  = lens _pDefaultPage (\ s a -> s{_pDefaultPage = a})
+
+-- | Time this view (profile) was created.
+pCreated :: Lens' ProFile (Maybe UTCTime)
+pCreated
+  = lens _pCreated (\ s a -> s{_pCreated = a}) .
+      mapping _DateTime
+
+-- | Link for this view (profile).
+pSelfLink :: Lens' ProFile (Maybe Text)
+pSelfLink
+  = lens _pSelfLink (\ s a -> s{_pSelfLink = a})
+
+-- | Account ID to which this view (profile) belongs.
+pAccountId :: Lens' ProFile (Maybe Text)
+pAccountId
+  = lens _pAccountId (\ s a -> s{_pAccountId = a})
+
+-- | Name of this view (profile).
+pName :: Lens' ProFile (Maybe Text)
+pName = lens _pName (\ s a -> s{_pName = a})
+
+-- | The currency type associated with this view (profile), defaults to USD.
+-- The supported values are: ARS, AUD, BGN, BRL, CAD, CHF, CNY, CZK, DKK,
+-- EUR, GBP, HKD, HUF, IDR, INR, JPY, KRW, LTL, MXN, NOK, NZD, PHP, PLN,
+-- RUB, SEK, THB, TRY, TWD, USD, VND, ZAR
+pCurrency :: Lens' ProFile (Maybe Text)
+pCurrency
+  = lens _pCurrency (\ s a -> s{_pCurrency = a})
+
+-- | Internal ID for the web property to which this view (profile) belongs.
+pInternalWebPropertyId :: Lens' ProFile (Maybe Text)
+pInternalWebPropertyId
+  = lens _pInternalWebPropertyId
+      (\ s a -> s{_pInternalWebPropertyId = a})
+
+-- | View (Profile) ID.
+pId :: Lens' ProFile (Maybe Text)
+pId = lens _pId (\ s a -> s{_pId = a})
+
+-- | Time this view (profile) was last modified.
+pUpdated :: Lens' ProFile (Maybe UTCTime)
+pUpdated
+  = lens _pUpdated (\ s a -> s{_pUpdated = a}) .
+      mapping _DateTime
+
+-- | Permissions the user has for this view (profile).
+pPermissions :: Lens' ProFile (Maybe ProFilePermissions)
+pPermissions
+  = lens _pPermissions (\ s a -> s{_pPermissions = a})
+
+-- | Website URL for this view (profile).
+pWebsiteURL :: Lens' ProFile (Maybe Text)
+pWebsiteURL
+  = lens _pWebsiteURL (\ s a -> s{_pWebsiteURL = a})
+
+-- | View (Profile) type. Supported types: WEB or APP.
+pType :: Lens' ProFile (Maybe Text)
+pType = lens _pType (\ s a -> s{_pType = a})
+
+-- | Whether or not Analytics will strip search category parameters from the
+-- URLs in your reports.
+pStripSiteSearchCategoryParameters :: Lens' ProFile (Maybe Bool)
+pStripSiteSearchCategoryParameters
+  = lens _pStripSiteSearchCategoryParameters
+      (\ s a -> s{_pStripSiteSearchCategoryParameters = a})
+
+-- | Time zone for which this view (profile) has been configured. Time zones
+-- are identified by strings from the TZ database.
+pTimezone :: Lens' ProFile (Maybe Text)
+pTimezone
+  = lens _pTimezone (\ s a -> s{_pTimezone = a})
+
+-- | The query parameters that are excluded from this view (profile).
+pExcludeQueryParameters :: Lens' ProFile (Maybe Text)
+pExcludeQueryParameters
+  = lens _pExcludeQueryParameters
+      (\ s a -> s{_pExcludeQueryParameters = a})
+
+-- | Indicates whether enhanced ecommerce tracking is enabled for this view
+-- (profile). This property can only be enabled if ecommerce tracking is
+-- enabled.
+pEnhancedECommerceTracking :: Lens' ProFile (Maybe Bool)
+pEnhancedECommerceTracking
+  = lens _pEnhancedECommerceTracking
+      (\ s a -> s{_pEnhancedECommerceTracking = a})
+
+-- | Whether or not Analytics will strip search query parameters from the
+-- URLs in your reports.
+pStripSiteSearchQueryParameters :: Lens' ProFile (Maybe Bool)
+pStripSiteSearchQueryParameters
+  = lens _pStripSiteSearchQueryParameters
+      (\ s a -> s{_pStripSiteSearchQueryParameters = a})
+
+instance FromJSON ProFile where
+        parseJSON
+          = withObject "ProFile"
+              (\ o ->
+                 ProFile <$>
+                   (o .:? "parentLink") <*> (o .:? "eCommerceTracking")
+                     <*> (o .:? "siteSearchCategoryParameters")
+                     <*> (o .:? "webPropertyId")
+                     <*> (o .:? "childLink")
+                     <*> (o .:? "siteSearchQueryParameters")
+                     <*> (o .:? "kind" .!= "analytics#profile")
+                     <*> (o .:? "defaultPage")
+                     <*> (o .:? "created")
+                     <*> (o .:? "selfLink")
+                     <*> (o .:? "accountId")
+                     <*> (o .:? "name")
+                     <*> (o .:? "currency")
+                     <*> (o .:? "internalWebPropertyId")
+                     <*> (o .:? "id")
+                     <*> (o .:? "updated")
+                     <*> (o .:? "permissions")
+                     <*> (o .:? "websiteUrl")
+                     <*> (o .:? "type")
+                     <*> (o .:? "stripSiteSearchCategoryParameters")
+                     <*> (o .:? "timezone")
+                     <*> (o .:? "excludeQueryParameters")
+                     <*> (o .:? "enhancedECommerceTracking")
+                     <*> (o .:? "stripSiteSearchQueryParameters"))
+
+instance ToJSON ProFile where
+        toJSON ProFile{..}
+          = object
+              (catMaybes
+                 [("parentLink" .=) <$> _pParentLink,
+                  ("eCommerceTracking" .=) <$> _pECommerceTracking,
+                  ("siteSearchCategoryParameters" .=) <$>
+                    _pSiteSearchCategoryParameters,
+                  ("webPropertyId" .=) <$> _pWebPropertyId,
+                  ("childLink" .=) <$> _pChildLink,
+                  ("siteSearchQueryParameters" .=) <$>
+                    _pSiteSearchQueryParameters,
+                  Just ("kind" .= _pKind),
+                  ("defaultPage" .=) <$> _pDefaultPage,
+                  ("created" .=) <$> _pCreated,
+                  ("selfLink" .=) <$> _pSelfLink,
+                  ("accountId" .=) <$> _pAccountId,
+                  ("name" .=) <$> _pName,
+                  ("currency" .=) <$> _pCurrency,
+                  ("internalWebPropertyId" .=) <$>
+                    _pInternalWebPropertyId,
+                  ("id" .=) <$> _pId, ("updated" .=) <$> _pUpdated,
+                  ("permissions" .=) <$> _pPermissions,
+                  ("websiteUrl" .=) <$> _pWebsiteURL,
+                  ("type" .=) <$> _pType,
+                  ("stripSiteSearchCategoryParameters" .=) <$>
+                    _pStripSiteSearchCategoryParameters,
+                  ("timezone" .=) <$> _pTimezone,
+                  ("excludeQueryParameters" .=) <$>
+                    _pExcludeQueryParameters,
+                  ("enhancedECommerceTracking" .=) <$>
+                    _pEnhancedECommerceTracking,
+                  ("stripSiteSearchQueryParameters" .=) <$>
+                    _pStripSiteSearchQueryParameters])
+
+-- | An AccountSummary collection lists a summary of accounts, properties and
+-- views (profiles) to which the user has access. Each resource in the
+-- collection corresponds to a single AccountSummary.
+--
+-- /See:/ 'accountSummaries' smart constructor.
+data AccountSummaries = AccountSummaries
+    { _asNextLink     :: !(Maybe Text)
+    , _asItemsPerPage :: !(Maybe (Textual Int32))
+    , _asKind         :: !Text
+    , _asUsername     :: !(Maybe Text)
+    , _asItems        :: !(Maybe [AccountSummary])
+    , _asTotalResults :: !(Maybe (Textual Int32))
+    , _asStartIndex   :: !(Maybe (Textual Int32))
+    , _asPreviousLink :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'AccountSummaries' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'asNextLink'
+--
+-- * 'asItemsPerPage'
+--
+-- * 'asKind'
+--
+-- * 'asUsername'
+--
+-- * 'asItems'
+--
+-- * 'asTotalResults'
+--
+-- * 'asStartIndex'
+--
+-- * 'asPreviousLink'
+accountSummaries
+    :: AccountSummaries
+accountSummaries =
+    AccountSummaries
+    { _asNextLink = Nothing
+    , _asItemsPerPage = Nothing
+    , _asKind = "analytics#accountSummaries"
+    , _asUsername = Nothing
+    , _asItems = Nothing
+    , _asTotalResults = Nothing
+    , _asStartIndex = Nothing
+    , _asPreviousLink = Nothing
+    }
+
+-- | Link to next page for this AccountSummary collection.
+asNextLink :: Lens' AccountSummaries (Maybe Text)
+asNextLink
+  = lens _asNextLink (\ s a -> s{_asNextLink = a})
+
+-- | The maximum number of resources the response can contain, regardless of
+-- the actual number of resources returned. Its value ranges from 1 to 1000
+-- with a value of 1000 by default, or otherwise specified by the
+-- max-results query parameter.
+asItemsPerPage :: Lens' AccountSummaries (Maybe Int32)
+asItemsPerPage
+  = lens _asItemsPerPage
+      (\ s a -> s{_asItemsPerPage = a})
+      . mapping _Coerce
+
+-- | Collection type.
+asKind :: Lens' AccountSummaries Text
+asKind = lens _asKind (\ s a -> s{_asKind = a})
+
+-- | Email ID of the authenticated user
+asUsername :: Lens' AccountSummaries (Maybe Text)
+asUsername
+  = lens _asUsername (\ s a -> s{_asUsername = a})
+
+-- | A list of AccountSummaries.
+asItems :: Lens' AccountSummaries [AccountSummary]
+asItems
+  = lens _asItems (\ s a -> s{_asItems = a}) . _Default
+      . _Coerce
+
+-- | The total number of results for the query, regardless of the number of
+-- results in the response.
+asTotalResults :: Lens' AccountSummaries (Maybe Int32)
+asTotalResults
+  = lens _asTotalResults
+      (\ s a -> s{_asTotalResults = a})
+      . mapping _Coerce
+
+-- | The starting index of the resources, which is 1 by default or otherwise
+-- specified by the start-index query parameter.
+asStartIndex :: Lens' AccountSummaries (Maybe Int32)
+asStartIndex
+  = lens _asStartIndex (\ s a -> s{_asStartIndex = a})
+      . mapping _Coerce
+
+-- | Link to previous page for this AccountSummary collection.
+asPreviousLink :: Lens' AccountSummaries (Maybe Text)
+asPreviousLink
+  = lens _asPreviousLink
+      (\ s a -> s{_asPreviousLink = a})
+
+instance FromJSON AccountSummaries where
+        parseJSON
+          = withObject "AccountSummaries"
+              (\ o ->
+                 AccountSummaries <$>
+                   (o .:? "nextLink") <*> (o .:? "itemsPerPage") <*>
+                     (o .:? "kind" .!= "analytics#accountSummaries")
+                     <*> (o .:? "username")
+                     <*> (o .:? "items" .!= mempty)
+                     <*> (o .:? "totalResults")
+                     <*> (o .:? "startIndex")
+                     <*> (o .:? "previousLink"))
+
+instance ToJSON AccountSummaries where
+        toJSON AccountSummaries{..}
+          = object
+              (catMaybes
+                 [("nextLink" .=) <$> _asNextLink,
+                  ("itemsPerPage" .=) <$> _asItemsPerPage,
+                  Just ("kind" .= _asKind),
+                  ("username" .=) <$> _asUsername,
+                  ("items" .=) <$> _asItems,
+                  ("totalResults" .=) <$> _asTotalResults,
+                  ("startIndex" .=) <$> _asStartIndex,
+                  ("previousLink" .=) <$> _asPreviousLink])
+
+-- | Details for the goal of the type EVENT.
+--
+-- /See:/ 'goalEventDetails' smart constructor.
+data GoalEventDetails = GoalEventDetails
+    { _gedUseEventValue   :: !(Maybe Bool)
+    , _gedEventConditions :: !(Maybe [GoalEventDetailsEventConditionsItem])
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'GoalEventDetails' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'gedUseEventValue'
+--
+-- * 'gedEventConditions'
+goalEventDetails
+    :: GoalEventDetails
+goalEventDetails =
+    GoalEventDetails
+    { _gedUseEventValue = Nothing
+    , _gedEventConditions = Nothing
+    }
+
+-- | Determines if the event value should be used as the value for this goal.
+gedUseEventValue :: Lens' GoalEventDetails (Maybe Bool)
+gedUseEventValue
+  = lens _gedUseEventValue
+      (\ s a -> s{_gedUseEventValue = a})
+
+-- | List of event conditions.
+gedEventConditions :: Lens' GoalEventDetails [GoalEventDetailsEventConditionsItem]
+gedEventConditions
+  = lens _gedEventConditions
+      (\ s a -> s{_gedEventConditions = a})
+      . _Default
+      . _Coerce
+
+instance FromJSON GoalEventDetails where
+        parseJSON
+          = withObject "GoalEventDetails"
+              (\ o ->
+                 GoalEventDetails <$>
+                   (o .:? "useEventValue") <*>
+                     (o .:? "eventConditions" .!= mempty))
+
+instance ToJSON GoalEventDetails where
+        toJSON GoalEventDetails{..}
+          = object
+              (catMaybes
+                 [("useEventValue" .=) <$> _gedUseEventValue,
+                  ("eventConditions" .=) <$> _gedEventConditions])
+
+-- | JSON template for an Analytics WebPropertySummary. WebPropertySummary
+-- returns basic information (i.e., summary) for a web property.
+--
+-- /See:/ 'webPropertySummary' smart constructor.
+data WebPropertySummary = WebPropertySummary
+    { _wpsKind                  :: !Text
+    , _wpsProFiles              :: !(Maybe [ProFileSummary])
+    , _wpsName                  :: !(Maybe Text)
+    , _wpsInternalWebPropertyId :: !(Maybe Text)
+    , _wpsId                    :: !(Maybe Text)
+    , _wpsWebsiteURL            :: !(Maybe Text)
+    , _wpsLevel                 :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'WebPropertySummary' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'wpsKind'
+--
+-- * 'wpsProFiles'
+--
+-- * 'wpsName'
+--
+-- * 'wpsInternalWebPropertyId'
+--
+-- * 'wpsId'
+--
+-- * 'wpsWebsiteURL'
+--
+-- * 'wpsLevel'
+webPropertySummary
+    :: WebPropertySummary
+webPropertySummary =
+    WebPropertySummary
+    { _wpsKind = "analytics#webPropertySummary"
+    , _wpsProFiles = Nothing
+    , _wpsName = Nothing
+    , _wpsInternalWebPropertyId = Nothing
+    , _wpsId = Nothing
+    , _wpsWebsiteURL = Nothing
+    , _wpsLevel = Nothing
+    }
+
+-- | Resource type for Analytics WebPropertySummary.
+wpsKind :: Lens' WebPropertySummary Text
+wpsKind = lens _wpsKind (\ s a -> s{_wpsKind = a})
+
+-- | List of profiles under this web property.
+wpsProFiles :: Lens' WebPropertySummary [ProFileSummary]
+wpsProFiles
+  = lens _wpsProFiles (\ s a -> s{_wpsProFiles = a}) .
+      _Default
+      . _Coerce
+
+-- | Web property name.
+wpsName :: Lens' WebPropertySummary (Maybe Text)
+wpsName = lens _wpsName (\ s a -> s{_wpsName = a})
+
+-- | Internal ID for this web property.
+wpsInternalWebPropertyId :: Lens' WebPropertySummary (Maybe Text)
+wpsInternalWebPropertyId
+  = lens _wpsInternalWebPropertyId
+      (\ s a -> s{_wpsInternalWebPropertyId = a})
+
+-- | Web property ID of the form UA-XXXXX-YY.
+wpsId :: Lens' WebPropertySummary (Maybe Text)
+wpsId = lens _wpsId (\ s a -> s{_wpsId = a})
+
+-- | Website url for this web property.
+wpsWebsiteURL :: Lens' WebPropertySummary (Maybe Text)
+wpsWebsiteURL
+  = lens _wpsWebsiteURL
+      (\ s a -> s{_wpsWebsiteURL = a})
+
+-- | Level for this web property. Possible values are STANDARD or PREMIUM.
+wpsLevel :: Lens' WebPropertySummary (Maybe Text)
+wpsLevel = lens _wpsLevel (\ s a -> s{_wpsLevel = a})
+
+instance FromJSON WebPropertySummary where
+        parseJSON
+          = withObject "WebPropertySummary"
+              (\ o ->
+                 WebPropertySummary <$>
+                   (o .:? "kind" .!= "analytics#webPropertySummary") <*>
+                     (o .:? "profiles" .!= mempty)
+                     <*> (o .:? "name")
+                     <*> (o .:? "internalWebPropertyId")
+                     <*> (o .:? "id")
+                     <*> (o .:? "websiteUrl")
+                     <*> (o .:? "level"))
+
+instance ToJSON WebPropertySummary where
+        toJSON WebPropertySummary{..}
+          = object
+              (catMaybes
+                 [Just ("kind" .= _wpsKind),
+                  ("profiles" .=) <$> _wpsProFiles,
+                  ("name" .=) <$> _wpsName,
+                  ("internalWebPropertyId" .=) <$>
+                    _wpsInternalWebPropertyId,
+                  ("id" .=) <$> _wpsId,
+                  ("websiteUrl" .=) <$> _wpsWebsiteURL,
+                  ("level" .=) <$> _wpsLevel])
+
+-- | A filter collection lists filters created by users in an Analytics
+-- account. Each resource in the collection corresponds to a filter.
+--
+-- /See:/ 'filters' smart constructor.
+data Filters = Filters
+    { _fNextLink     :: !(Maybe Text)
+    , _fItemsPerPage :: !(Maybe (Textual Int32))
+    , _fKind         :: !Text
+    , _fUsername     :: !(Maybe Text)
+    , _fItems        :: !(Maybe [Filter])
+    , _fTotalResults :: !(Maybe (Textual Int32))
+    , _fStartIndex   :: !(Maybe (Textual Int32))
+    , _fPreviousLink :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'Filters' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'fNextLink'
+--
+-- * 'fItemsPerPage'
+--
+-- * 'fKind'
+--
+-- * 'fUsername'
+--
+-- * 'fItems'
+--
+-- * 'fTotalResults'
+--
+-- * 'fStartIndex'
+--
+-- * 'fPreviousLink'
+filters
+    :: Filters
+filters =
+    Filters
+    { _fNextLink = Nothing
+    , _fItemsPerPage = Nothing
+    , _fKind = "analytics#filters"
+    , _fUsername = Nothing
+    , _fItems = Nothing
+    , _fTotalResults = Nothing
+    , _fStartIndex = Nothing
+    , _fPreviousLink = Nothing
+    }
+
+-- | Link to next page for this filter collection.
+fNextLink :: Lens' Filters (Maybe Text)
+fNextLink
+  = lens _fNextLink (\ s a -> s{_fNextLink = a})
+
+-- | The maximum number of resources the response can contain, regardless of
+-- the actual number of resources returned. Its value ranges from 1 to
+-- 1,000 with a value of 1000 by default, or otherwise specified by the
+-- max-results query parameter.
+fItemsPerPage :: Lens' Filters (Maybe Int32)
+fItemsPerPage
+  = lens _fItemsPerPage
+      (\ s a -> s{_fItemsPerPage = a})
+      . mapping _Coerce
+
+-- | Collection type.
+fKind :: Lens' Filters Text
+fKind = lens _fKind (\ s a -> s{_fKind = a})
+
+-- | Email ID of the authenticated user
+fUsername :: Lens' Filters (Maybe Text)
+fUsername
+  = lens _fUsername (\ s a -> s{_fUsername = a})
+
+-- | A list of filters.
+fItems :: Lens' Filters [Filter]
+fItems
+  = lens _fItems (\ s a -> s{_fItems = a}) . _Default .
+      _Coerce
+
+-- | The total number of results for the query, regardless of the number of
+-- results in the response.
+fTotalResults :: Lens' Filters (Maybe Int32)
+fTotalResults
+  = lens _fTotalResults
+      (\ s a -> s{_fTotalResults = a})
+      . mapping _Coerce
+
+-- | The starting index of the resources, which is 1 by default or otherwise
+-- specified by the start-index query parameter.
+fStartIndex :: Lens' Filters (Maybe Int32)
+fStartIndex
+  = lens _fStartIndex (\ s a -> s{_fStartIndex = a}) .
+      mapping _Coerce
+
+-- | Link to previous page for this filter collection.
+fPreviousLink :: Lens' Filters (Maybe Text)
+fPreviousLink
+  = lens _fPreviousLink
+      (\ s a -> s{_fPreviousLink = a})
+
+instance FromJSON Filters where
+        parseJSON
+          = withObject "Filters"
+              (\ o ->
+                 Filters <$>
+                   (o .:? "nextLink") <*> (o .:? "itemsPerPage") <*>
+                     (o .:? "kind" .!= "analytics#filters")
+                     <*> (o .:? "username")
+                     <*> (o .:? "items" .!= mempty)
+                     <*> (o .:? "totalResults")
+                     <*> (o .:? "startIndex")
+                     <*> (o .:? "previousLink"))
+
+instance ToJSON Filters where
+        toJSON Filters{..}
+          = object
+              (catMaybes
+                 [("nextLink" .=) <$> _fNextLink,
+                  ("itemsPerPage" .=) <$> _fItemsPerPage,
+                  Just ("kind" .= _fKind),
+                  ("username" .=) <$> _fUsername,
+                  ("items" .=) <$> _fItems,
+                  ("totalResults" .=) <$> _fTotalResults,
+                  ("startIndex" .=) <$> _fStartIndex,
+                  ("previousLink" .=) <$> _fPreviousLink])
+
+-- | Analytics data for a given view (profile).
+--
+-- /See:/ 'gaData' smart constructor.
+data GaData = GaData
+    { _gdNextLink            :: !(Maybe Text)
+    , _gdSampleSpace         :: !(Maybe (Textual Int64))
+    , _gdItemsPerPage        :: !(Maybe (Textual Int32))
+    , _gdProFileInfo         :: !(Maybe GaDataProFileInfo)
+    , _gdKind                :: !Text
+    , _gdSampleSize          :: !(Maybe (Textual Int64))
+    , _gdRows                :: !(Maybe [[Text]])
+    , _gdSelfLink            :: !(Maybe Text)
+    , _gdQuery               :: !(Maybe GaDataQuery)
+    , _gdColumnHeaders       :: !(Maybe [GaDataColumnHeadersItem])
+    , _gdId                  :: !(Maybe Text)
+    , _gdTotalResults        :: !(Maybe (Textual Int32))
+    , _gdDataTable           :: !(Maybe GaDataDataTable)
+    , _gdContainsSampledData :: !(Maybe Bool)
+    , _gdTotalsForAllResults :: !(Maybe GaDataTotalsForAllResults)
+    , _gdPreviousLink        :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'GaData' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'gdNextLink'
+--
+-- * 'gdSampleSpace'
+--
+-- * 'gdItemsPerPage'
+--
+-- * 'gdProFileInfo'
+--
+-- * 'gdKind'
+--
+-- * 'gdSampleSize'
+--
+-- * 'gdRows'
+--
+-- * 'gdSelfLink'
+--
+-- * 'gdQuery'
+--
+-- * 'gdColumnHeaders'
+--
+-- * 'gdId'
+--
+-- * 'gdTotalResults'
+--
+-- * 'gdDataTable'
+--
+-- * 'gdContainsSampledData'
+--
+-- * 'gdTotalsForAllResults'
+--
+-- * 'gdPreviousLink'
+gaData
+    :: GaData
+gaData =
+    GaData
+    { _gdNextLink = Nothing
+    , _gdSampleSpace = Nothing
+    , _gdItemsPerPage = Nothing
+    , _gdProFileInfo = Nothing
+    , _gdKind = "analytics#gaData"
+    , _gdSampleSize = Nothing
+    , _gdRows = Nothing
+    , _gdSelfLink = Nothing
+    , _gdQuery = Nothing
+    , _gdColumnHeaders = Nothing
+    , _gdId = Nothing
+    , _gdTotalResults = Nothing
+    , _gdDataTable = Nothing
+    , _gdContainsSampledData = Nothing
+    , _gdTotalsForAllResults = Nothing
+    , _gdPreviousLink = Nothing
+    }
+
+-- | Link to next page for this Analytics data query.
+gdNextLink :: Lens' GaData (Maybe Text)
+gdNextLink
+  = lens _gdNextLink (\ s a -> s{_gdNextLink = a})
+
+-- | Total size of the sample space from which the samples were selected.
+gdSampleSpace :: Lens' GaData (Maybe Int64)
+gdSampleSpace
+  = lens _gdSampleSpace
+      (\ s a -> s{_gdSampleSpace = a})
+      . mapping _Coerce
+
+-- | The maximum number of rows the response can contain, regardless of the
+-- actual number of rows returned. Its value ranges from 1 to 10,000 with a
+-- value of 1000 by default, or otherwise specified by the max-results
+-- query parameter.
+gdItemsPerPage :: Lens' GaData (Maybe Int32)
+gdItemsPerPage
+  = lens _gdItemsPerPage
+      (\ s a -> s{_gdItemsPerPage = a})
+      . mapping _Coerce
+
+-- | Information for the view (profile), for which the Analytics data was
+-- requested.
+gdProFileInfo :: Lens' GaData (Maybe GaDataProFileInfo)
+gdProFileInfo
+  = lens _gdProFileInfo
+      (\ s a -> s{_gdProFileInfo = a})
+
+-- | Resource type.
+gdKind :: Lens' GaData Text
+gdKind = lens _gdKind (\ s a -> s{_gdKind = a})
+
+-- | The number of samples used to calculate the result.
+gdSampleSize :: Lens' GaData (Maybe Int64)
+gdSampleSize
+  = lens _gdSampleSize (\ s a -> s{_gdSampleSize = a})
+      . mapping _Coerce
+
+-- | Analytics data rows, where each row contains a list of dimension values
+-- followed by the metric values. The order of dimensions and metrics is
+-- same as specified in the request.
+gdRows :: Lens' GaData [[Text]]
+gdRows
+  = lens _gdRows (\ s a -> s{_gdRows = a}) . _Default .
+      _Coerce
+
+-- | Link to this page.
+gdSelfLink :: Lens' GaData (Maybe Text)
+gdSelfLink
+  = lens _gdSelfLink (\ s a -> s{_gdSelfLink = a})
+
+-- | Analytics data request query parameters.
+gdQuery :: Lens' GaData (Maybe GaDataQuery)
+gdQuery = lens _gdQuery (\ s a -> s{_gdQuery = a})
+
+-- | Column headers that list dimension names followed by the metric names.
+-- The order of dimensions and metrics is same as specified in the request.
+gdColumnHeaders :: Lens' GaData [GaDataColumnHeadersItem]
+gdColumnHeaders
+  = lens _gdColumnHeaders
+      (\ s a -> s{_gdColumnHeaders = a})
+      . _Default
+      . _Coerce
+
+-- | Unique ID for this data response.
+gdId :: Lens' GaData (Maybe Text)
+gdId = lens _gdId (\ s a -> s{_gdId = a})
+
+-- | The total number of rows for the query, regardless of the number of rows
+-- in the response.
+gdTotalResults :: Lens' GaData (Maybe Int32)
+gdTotalResults
+  = lens _gdTotalResults
+      (\ s a -> s{_gdTotalResults = a})
+      . mapping _Coerce
+
+gdDataTable :: Lens' GaData (Maybe GaDataDataTable)
+gdDataTable
+  = lens _gdDataTable (\ s a -> s{_gdDataTable = a})
+
+-- | Determines if Analytics data contains samples.
+gdContainsSampledData :: Lens' GaData (Maybe Bool)
+gdContainsSampledData
+  = lens _gdContainsSampledData
+      (\ s a -> s{_gdContainsSampledData = a})
+
+-- | Total values for the requested metrics over all the results, not just
+-- the results returned in this response. The order of the metric totals is
+-- same as the metric order specified in the request.
+gdTotalsForAllResults :: Lens' GaData (Maybe GaDataTotalsForAllResults)
+gdTotalsForAllResults
+  = lens _gdTotalsForAllResults
+      (\ s a -> s{_gdTotalsForAllResults = a})
+
+-- | Link to previous page for this Analytics data query.
+gdPreviousLink :: Lens' GaData (Maybe Text)
+gdPreviousLink
+  = lens _gdPreviousLink
+      (\ s a -> s{_gdPreviousLink = a})
+
+instance FromJSON GaData where
+        parseJSON
+          = withObject "GaData"
+              (\ o ->
+                 GaData <$>
+                   (o .:? "nextLink") <*> (o .:? "sampleSpace") <*>
+                     (o .:? "itemsPerPage")
+                     <*> (o .:? "profileInfo")
+                     <*> (o .:? "kind" .!= "analytics#gaData")
+                     <*> (o .:? "sampleSize")
+                     <*> (o .:? "rows" .!= mempty)
+                     <*> (o .:? "selfLink")
+                     <*> (o .:? "query")
+                     <*> (o .:? "columnHeaders" .!= mempty)
+                     <*> (o .:? "id")
+                     <*> (o .:? "totalResults")
+                     <*> (o .:? "dataTable")
+                     <*> (o .:? "containsSampledData")
+                     <*> (o .:? "totalsForAllResults")
+                     <*> (o .:? "previousLink"))
+
+instance ToJSON GaData where
+        toJSON GaData{..}
+          = object
+              (catMaybes
+                 [("nextLink" .=) <$> _gdNextLink,
+                  ("sampleSpace" .=) <$> _gdSampleSpace,
+                  ("itemsPerPage" .=) <$> _gdItemsPerPage,
+                  ("profileInfo" .=) <$> _gdProFileInfo,
+                  Just ("kind" .= _gdKind),
+                  ("sampleSize" .=) <$> _gdSampleSize,
+                  ("rows" .=) <$> _gdRows,
+                  ("selfLink" .=) <$> _gdSelfLink,
+                  ("query" .=) <$> _gdQuery,
+                  ("columnHeaders" .=) <$> _gdColumnHeaders,
+                  ("id" .=) <$> _gdId,
+                  ("totalResults" .=) <$> _gdTotalResults,
+                  ("dataTable" .=) <$> _gdDataTable,
+                  ("containsSampledData" .=) <$>
+                    _gdContainsSampledData,
+                  ("totalsForAllResults" .=) <$>
+                    _gdTotalsForAllResults,
+                  ("previousLink" .=) <$> _gdPreviousLink])
+
+-- | Total values for the requested metrics over all the results, not just
+-- the results returned in this response. The order of the metric totals is
+-- same as the metric order specified in the request.
+--
+-- /See:/ 'realtimeDataTotalsForAllResults' smart constructor.
+newtype RealtimeDataTotalsForAllResults = RealtimeDataTotalsForAllResults
+    { _rdtfarAddtional :: HashMap Text Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'RealtimeDataTotalsForAllResults' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'rdtfarAddtional'
+realtimeDataTotalsForAllResults
+    :: HashMap Text Text -- ^ 'rdtfarAddtional'
+    -> RealtimeDataTotalsForAllResults
+realtimeDataTotalsForAllResults pRdtfarAddtional_ =
+    RealtimeDataTotalsForAllResults
+    { _rdtfarAddtional = _Coerce # pRdtfarAddtional_
+    }
+
+-- | Key-value pair for the total value of a metric. Key is the metric name
+-- and the value is the total value for that metric.
+rdtfarAddtional :: Lens' RealtimeDataTotalsForAllResults (HashMap Text Text)
+rdtfarAddtional
+  = lens _rdtfarAddtional
+      (\ s a -> s{_rdtfarAddtional = a})
+      . _Coerce
+
+instance FromJSON RealtimeDataTotalsForAllResults
+         where
+        parseJSON
+          = withObject "RealtimeDataTotalsForAllResults"
+              (\ o ->
+                 RealtimeDataTotalsForAllResults <$>
+                   (parseJSONObject o))
+
+instance ToJSON RealtimeDataTotalsForAllResults where
+        toJSON = toJSON . _rdtfarAddtional
+
+-- | JSON template for an Analytics custom data source.
+--
+-- /See:/ 'customDataSource' smart constructor.
+data CustomDataSource = CustomDataSource
+    { _cParentLink     :: !(Maybe CustomDataSourceParentLink)
+    , _cWebPropertyId  :: !(Maybe Text)
+    , _cChildLink      :: !(Maybe CustomDataSourceChildLink)
+    , _cKind           :: !Text
+    , _cCreated        :: !(Maybe DateTime')
+    , _cUploadType     :: !(Maybe Text)
+    , _cImportBehavior :: !(Maybe Text)
+    , _cSelfLink       :: !(Maybe Text)
+    , _cAccountId      :: !(Maybe Text)
+    , _cName           :: !(Maybe Text)
+    , _cId             :: !(Maybe Text)
+    , _cUpdated        :: !(Maybe DateTime')
+    , _cType           :: !(Maybe Text)
+    , _cDescription    :: !(Maybe Text)
+    , _cProFilesLinked :: !(Maybe [Text])
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'CustomDataSource' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'cParentLink'
+--
+-- * 'cWebPropertyId'
+--
+-- * 'cChildLink'
+--
+-- * 'cKind'
+--
+-- * 'cCreated'
+--
+-- * 'cUploadType'
+--
+-- * 'cImportBehavior'
+--
+-- * 'cSelfLink'
+--
+-- * 'cAccountId'
+--
+-- * 'cName'
+--
+-- * 'cId'
+--
+-- * 'cUpdated'
+--
+-- * 'cType'
+--
+-- * 'cDescription'
+--
+-- * 'cProFilesLinked'
+customDataSource
+    :: CustomDataSource
+customDataSource =
+    CustomDataSource
+    { _cParentLink = Nothing
+    , _cWebPropertyId = Nothing
+    , _cChildLink = Nothing
+    , _cKind = "analytics#customDataSource"
+    , _cCreated = Nothing
+    , _cUploadType = Nothing
+    , _cImportBehavior = Nothing
+    , _cSelfLink = Nothing
+    , _cAccountId = Nothing
+    , _cName = Nothing
+    , _cId = Nothing
+    , _cUpdated = Nothing
+    , _cType = Nothing
+    , _cDescription = Nothing
+    , _cProFilesLinked = Nothing
+    }
+
+-- | Parent link for this custom data source. Points to the web property to
+-- which this custom data source belongs.
+cParentLink :: Lens' CustomDataSource (Maybe CustomDataSourceParentLink)
+cParentLink
+  = lens _cParentLink (\ s a -> s{_cParentLink = a})
+
+-- | Web property ID of the form UA-XXXXX-YY to which this custom data source
+-- belongs.
+cWebPropertyId :: Lens' CustomDataSource (Maybe Text)
+cWebPropertyId
+  = lens _cWebPropertyId
+      (\ s a -> s{_cWebPropertyId = a})
+
+cChildLink :: Lens' CustomDataSource (Maybe CustomDataSourceChildLink)
+cChildLink
+  = lens _cChildLink (\ s a -> s{_cChildLink = a})
+
+-- | Resource type for Analytics custom data source.
+cKind :: Lens' CustomDataSource Text
+cKind = lens _cKind (\ s a -> s{_cKind = a})
+
+-- | Time this custom data source was created.
+cCreated :: Lens' CustomDataSource (Maybe UTCTime)
+cCreated
+  = lens _cCreated (\ s a -> s{_cCreated = a}) .
+      mapping _DateTime
+
+cUploadType :: Lens' CustomDataSource (Maybe Text)
+cUploadType
+  = lens _cUploadType (\ s a -> s{_cUploadType = a})
+
+cImportBehavior :: Lens' CustomDataSource (Maybe Text)
+cImportBehavior
+  = lens _cImportBehavior
+      (\ s a -> s{_cImportBehavior = a})
+
+-- | Link for this Analytics custom data source.
+cSelfLink :: Lens' CustomDataSource (Maybe Text)
+cSelfLink
+  = lens _cSelfLink (\ s a -> s{_cSelfLink = a})
+
+-- | Account ID to which this custom data source belongs.
+cAccountId :: Lens' CustomDataSource (Maybe Text)
+cAccountId
+  = lens _cAccountId (\ s a -> s{_cAccountId = a})
+
+-- | Name of this custom data source.
+cName :: Lens' CustomDataSource (Maybe Text)
+cName = lens _cName (\ s a -> s{_cName = a})
+
+-- | Custom data source ID.
+cId :: Lens' CustomDataSource (Maybe Text)
+cId = lens _cId (\ s a -> s{_cId = a})
+
+-- | Time this custom data source was last modified.
+cUpdated :: Lens' CustomDataSource (Maybe UTCTime)
+cUpdated
+  = lens _cUpdated (\ s a -> s{_cUpdated = a}) .
+      mapping _DateTime
+
+-- | Type of the custom data source.
+cType :: Lens' CustomDataSource (Maybe Text)
+cType = lens _cType (\ s a -> s{_cType = a})
+
+-- | Description of custom data source.
+cDescription :: Lens' CustomDataSource (Maybe Text)
+cDescription
+  = lens _cDescription (\ s a -> s{_cDescription = a})
+
+-- | IDs of views (profiles) linked to the custom data source.
+cProFilesLinked :: Lens' CustomDataSource [Text]
+cProFilesLinked
+  = lens _cProFilesLinked
+      (\ s a -> s{_cProFilesLinked = a})
+      . _Default
+      . _Coerce
+
+instance FromJSON CustomDataSource where
+        parseJSON
+          = withObject "CustomDataSource"
+              (\ o ->
+                 CustomDataSource <$>
+                   (o .:? "parentLink") <*> (o .:? "webPropertyId") <*>
+                     (o .:? "childLink")
+                     <*> (o .:? "kind" .!= "analytics#customDataSource")
+                     <*> (o .:? "created")
+                     <*> (o .:? "uploadType")
+                     <*> (o .:? "importBehavior")
+                     <*> (o .:? "selfLink")
+                     <*> (o .:? "accountId")
+                     <*> (o .:? "name")
+                     <*> (o .:? "id")
+                     <*> (o .:? "updated")
+                     <*> (o .:? "type")
+                     <*> (o .:? "description")
+                     <*> (o .:? "profilesLinked" .!= mempty))
+
+instance ToJSON CustomDataSource where
+        toJSON CustomDataSource{..}
+          = object
+              (catMaybes
+                 [("parentLink" .=) <$> _cParentLink,
+                  ("webPropertyId" .=) <$> _cWebPropertyId,
+                  ("childLink" .=) <$> _cChildLink,
+                  Just ("kind" .= _cKind),
+                  ("created" .=) <$> _cCreated,
+                  ("uploadType" .=) <$> _cUploadType,
+                  ("importBehavior" .=) <$> _cImportBehavior,
+                  ("selfLink" .=) <$> _cSelfLink,
+                  ("accountId" .=) <$> _cAccountId,
+                  ("name" .=) <$> _cName, ("id" .=) <$> _cId,
+                  ("updated" .=) <$> _cUpdated, ("type" .=) <$> _cType,
+                  ("description" .=) <$> _cDescription,
+                  ("profilesLinked" .=) <$> _cProFilesLinked])
+
+-- | JSON template for a web property reference.
+--
+-- /See:/ 'webPropertyRef' smart constructor.
+data WebPropertyRef = WebPropertyRef
+    { _wprKind                  :: !Text
+    , _wprHref                  :: !(Maybe Text)
+    , _wprAccountId             :: !(Maybe Text)
+    , _wprName                  :: !(Maybe Text)
+    , _wprInternalWebPropertyId :: !(Maybe Text)
+    , _wprId                    :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'WebPropertyRef' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'wprKind'
+--
+-- * 'wprHref'
+--
+-- * 'wprAccountId'
+--
+-- * 'wprName'
+--
+-- * 'wprInternalWebPropertyId'
+--
+-- * 'wprId'
+webPropertyRef
+    :: WebPropertyRef
+webPropertyRef =
+    WebPropertyRef
+    { _wprKind = "analytics#webPropertyRef"
+    , _wprHref = Nothing
+    , _wprAccountId = Nothing
+    , _wprName = Nothing
+    , _wprInternalWebPropertyId = Nothing
+    , _wprId = Nothing
+    }
+
+-- | Analytics web property reference.
+wprKind :: Lens' WebPropertyRef Text
+wprKind = lens _wprKind (\ s a -> s{_wprKind = a})
+
+-- | Link for this web property.
+wprHref :: Lens' WebPropertyRef (Maybe Text)
+wprHref = lens _wprHref (\ s a -> s{_wprHref = a})
+
+-- | Account ID to which this web property belongs.
+wprAccountId :: Lens' WebPropertyRef (Maybe Text)
+wprAccountId
+  = lens _wprAccountId (\ s a -> s{_wprAccountId = a})
+
+-- | Name of this web property.
+wprName :: Lens' WebPropertyRef (Maybe Text)
+wprName = lens _wprName (\ s a -> s{_wprName = a})
+
+-- | Internal ID for this web property.
+wprInternalWebPropertyId :: Lens' WebPropertyRef (Maybe Text)
+wprInternalWebPropertyId
+  = lens _wprInternalWebPropertyId
+      (\ s a -> s{_wprInternalWebPropertyId = a})
+
+-- | Web property ID of the form UA-XXXXX-YY.
+wprId :: Lens' WebPropertyRef (Maybe Text)
+wprId = lens _wprId (\ s a -> s{_wprId = a})
+
+instance FromJSON WebPropertyRef where
+        parseJSON
+          = withObject "WebPropertyRef"
+              (\ o ->
+                 WebPropertyRef <$>
+                   (o .:? "kind" .!= "analytics#webPropertyRef") <*>
+                     (o .:? "href")
+                     <*> (o .:? "accountId")
+                     <*> (o .:? "name")
+                     <*> (o .:? "internalWebPropertyId")
+                     <*> (o .:? "id"))
+
+instance ToJSON WebPropertyRef where
+        toJSON WebPropertyRef{..}
+          = object
+              (catMaybes
+                 [Just ("kind" .= _wprKind), ("href" .=) <$> _wprHref,
+                  ("accountId" .=) <$> _wprAccountId,
+                  ("name" .=) <$> _wprName,
+                  ("internalWebPropertyId" .=) <$>
+                    _wprInternalWebPropertyId,
+                  ("id" .=) <$> _wprId])
+
+-- | A goal collection lists Analytics goals to which the user has access.
+-- Each view (profile) can have a set of goals. Each resource in the Goal
+-- collection corresponds to a single Analytics goal.
+--
+-- /See:/ 'goals' smart constructor.
+data Goals = Goals
+    { _gNextLink     :: !(Maybe Text)
+    , _gItemsPerPage :: !(Maybe (Textual Int32))
+    , _gKind         :: !Text
+    , _gUsername     :: !(Maybe Text)
+    , _gItems        :: !(Maybe [Goal])
+    , _gTotalResults :: !(Maybe (Textual Int32))
+    , _gStartIndex   :: !(Maybe (Textual Int32))
+    , _gPreviousLink :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'Goals' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'gNextLink'
+--
+-- * 'gItemsPerPage'
+--
+-- * 'gKind'
+--
+-- * 'gUsername'
+--
+-- * 'gItems'
+--
+-- * 'gTotalResults'
+--
+-- * 'gStartIndex'
+--
+-- * 'gPreviousLink'
+goals
+    :: Goals
+goals =
+    Goals
+    { _gNextLink = Nothing
+    , _gItemsPerPage = Nothing
+    , _gKind = "analytics#goals"
+    , _gUsername = Nothing
+    , _gItems = Nothing
+    , _gTotalResults = Nothing
+    , _gStartIndex = Nothing
+    , _gPreviousLink = Nothing
+    }
+
+-- | Link to next page for this goal collection.
+gNextLink :: Lens' Goals (Maybe Text)
+gNextLink
+  = lens _gNextLink (\ s a -> s{_gNextLink = a})
+
+-- | The maximum number of resources the response can contain, regardless of
+-- the actual number of resources returned. Its value ranges from 1 to 1000
+-- with a value of 1000 by default, or otherwise specified by the
+-- max-results query parameter.
+gItemsPerPage :: Lens' Goals (Maybe Int32)
+gItemsPerPage
+  = lens _gItemsPerPage
+      (\ s a -> s{_gItemsPerPage = a})
+      . mapping _Coerce
+
+-- | Collection type.
+gKind :: Lens' Goals Text
+gKind = lens _gKind (\ s a -> s{_gKind = a})
+
+-- | Email ID of the authenticated user
+gUsername :: Lens' Goals (Maybe Text)
+gUsername
+  = lens _gUsername (\ s a -> s{_gUsername = a})
+
+-- | A list of goals.
+gItems :: Lens' Goals [Goal]
+gItems
+  = lens _gItems (\ s a -> s{_gItems = a}) . _Default .
+      _Coerce
+
+-- | The total number of results for the query, regardless of the number of
+-- resources in the result.
+gTotalResults :: Lens' Goals (Maybe Int32)
+gTotalResults
+  = lens _gTotalResults
+      (\ s a -> s{_gTotalResults = a})
+      . mapping _Coerce
+
+-- | The starting index of the resources, which is 1 by default or otherwise
+-- specified by the start-index query parameter.
+gStartIndex :: Lens' Goals (Maybe Int32)
+gStartIndex
+  = lens _gStartIndex (\ s a -> s{_gStartIndex = a}) .
+      mapping _Coerce
+
+-- | Link to previous page for this goal collection.
+gPreviousLink :: Lens' Goals (Maybe Text)
+gPreviousLink
+  = lens _gPreviousLink
+      (\ s a -> s{_gPreviousLink = a})
+
+instance FromJSON Goals where
+        parseJSON
+          = withObject "Goals"
+              (\ o ->
+                 Goals <$>
+                   (o .:? "nextLink") <*> (o .:? "itemsPerPage") <*>
+                     (o .:? "kind" .!= "analytics#goals")
+                     <*> (o .:? "username")
+                     <*> (o .:? "items" .!= mempty)
+                     <*> (o .:? "totalResults")
+                     <*> (o .:? "startIndex")
+                     <*> (o .:? "previousLink"))
+
+instance ToJSON Goals where
+        toJSON Goals{..}
+          = object
+              (catMaybes
+                 [("nextLink" .=) <$> _gNextLink,
+                  ("itemsPerPage" .=) <$> _gItemsPerPage,
+                  Just ("kind" .= _gKind),
+                  ("username" .=) <$> _gUsername,
+                  ("items" .=) <$> _gItems,
+                  ("totalResults" .=) <$> _gTotalResults,
+                  ("startIndex" .=) <$> _gStartIndex,
+                  ("previousLink" .=) <$> _gPreviousLink])
+
+-- | A union object representing a dimension or metric value. Only one of
+-- \"primitiveValue\" or \"conversionPathValue\" attribute will be
+-- populated.
+--
+-- /See:/ 'mcfDataRowsItemItem' smart constructor.
+data McfDataRowsItemItem = McfDataRowsItemItem
+    { _mdriiPrimitiveValue      :: !(Maybe Text)
+    , _mdriiConversionPathValue :: !(Maybe [McfDataRowsItemItemConversionPathValueItem])
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'McfDataRowsItemItem' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'mdriiPrimitiveValue'
+--
+-- * 'mdriiConversionPathValue'
+mcfDataRowsItemItem
+    :: McfDataRowsItemItem
+mcfDataRowsItemItem =
+    McfDataRowsItemItem
+    { _mdriiPrimitiveValue = Nothing
+    , _mdriiConversionPathValue = Nothing
+    }
+
+-- | A primitive dimension value. A primitive metric value.
+mdriiPrimitiveValue :: Lens' McfDataRowsItemItem (Maybe Text)
+mdriiPrimitiveValue
+  = lens _mdriiPrimitiveValue
+      (\ s a -> s{_mdriiPrimitiveValue = a})
+
+-- | A conversion path dimension value, containing a list of interactions
+-- with their attributes.
+mdriiConversionPathValue :: Lens' McfDataRowsItemItem [McfDataRowsItemItemConversionPathValueItem]
+mdriiConversionPathValue
+  = lens _mdriiConversionPathValue
+      (\ s a -> s{_mdriiConversionPathValue = a})
+      . _Default
+      . _Coerce
+
+instance FromJSON McfDataRowsItemItem where
+        parseJSON
+          = withObject "McfDataRowsItemItem"
+              (\ o ->
+                 McfDataRowsItemItem <$>
+                   (o .:? "primitiveValue") <*>
+                     (o .:? "conversionPathValue" .!= mempty))
+
+instance ToJSON McfDataRowsItemItem where
+        toJSON McfDataRowsItemItem{..}
+          = object
+              (catMaybes
+                 [("primitiveValue" .=) <$> _mdriiPrimitiveValue,
+                  ("conversionPathValue" .=) <$>
+                    _mdriiConversionPathValue])
+
+-- | Permissions the user has for this account.
+--
+-- /See:/ 'accountPermissions' smart constructor.
+newtype AccountPermissions = AccountPermissions
+    { _apEffective :: Maybe [Text]
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'AccountPermissions' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'apEffective'
+accountPermissions
+    :: AccountPermissions
+accountPermissions =
+    AccountPermissions
+    { _apEffective = Nothing
+    }
+
+-- | All the permissions that the user has for this account. These include
+-- any implied permissions (e.g., EDIT implies VIEW).
+apEffective :: Lens' AccountPermissions [Text]
+apEffective
+  = lens _apEffective (\ s a -> s{_apEffective = a}) .
+      _Default
+      . _Coerce
+
+instance FromJSON AccountPermissions where
+        parseJSON
+          = withObject "AccountPermissions"
+              (\ o ->
+                 AccountPermissions <$>
+                   (o .:? "effective" .!= mempty))
+
+instance ToJSON AccountPermissions where
+        toJSON AccountPermissions{..}
+          = object
+              (catMaybes [("effective" .=) <$> _apEffective])
+
+-- | Entity for this link. It can be an account, a web property, or a view
+-- (profile).
+--
+-- /See:/ 'entityUserLinkEntity' smart constructor.
+data EntityUserLinkEntity = EntityUserLinkEntity
+    { _euleProFileRef     :: !(Maybe ProFileRef)
+    , _euleAccountRef     :: !(Maybe AccountRef)
+    , _euleWebPropertyRef :: !(Maybe WebPropertyRef)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'EntityUserLinkEntity' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'euleProFileRef'
+--
+-- * 'euleAccountRef'
+--
+-- * 'euleWebPropertyRef'
+entityUserLinkEntity
+    :: EntityUserLinkEntity
+entityUserLinkEntity =
+    EntityUserLinkEntity
+    { _euleProFileRef = Nothing
+    , _euleAccountRef = Nothing
+    , _euleWebPropertyRef = Nothing
+    }
+
+-- | View (Profile) for this link.
+euleProFileRef :: Lens' EntityUserLinkEntity (Maybe ProFileRef)
+euleProFileRef
+  = lens _euleProFileRef
+      (\ s a -> s{_euleProFileRef = a})
+
+-- | Account for this link.
+euleAccountRef :: Lens' EntityUserLinkEntity (Maybe AccountRef)
+euleAccountRef
+  = lens _euleAccountRef
+      (\ s a -> s{_euleAccountRef = a})
+
+-- | Web property for this link.
+euleWebPropertyRef :: Lens' EntityUserLinkEntity (Maybe WebPropertyRef)
+euleWebPropertyRef
+  = lens _euleWebPropertyRef
+      (\ s a -> s{_euleWebPropertyRef = a})
+
+instance FromJSON EntityUserLinkEntity where
+        parseJSON
+          = withObject "EntityUserLinkEntity"
+              (\ o ->
+                 EntityUserLinkEntity <$>
+                   (o .:? "profileRef") <*> (o .:? "accountRef") <*>
+                     (o .:? "webPropertyRef"))
+
+instance ToJSON EntityUserLinkEntity where
+        toJSON EntityUserLinkEntity{..}
+          = object
+              (catMaybes
+                 [("profileRef" .=) <$> _euleProFileRef,
+                  ("accountRef" .=) <$> _euleAccountRef,
+                  ("webPropertyRef" .=) <$> _euleWebPropertyRef])
+
+-- | JSON template for Analytics account entry.
+--
+-- /See:/ 'account' smart constructor.
+data Account = Account
+    { _accChildLink   :: !(Maybe AccountChildLink)
+    , _accKind        :: !Text
+    , _accCreated     :: !(Maybe DateTime')
+    , _accSelfLink    :: !(Maybe Text)
+    , _accName        :: !(Maybe Text)
+    , _accId          :: !(Maybe Text)
+    , _accUpdated     :: !(Maybe DateTime')
+    , _accPermissions :: !(Maybe AccountPermissions)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'Account' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'accChildLink'
+--
+-- * 'accKind'
+--
+-- * 'accCreated'
+--
+-- * 'accSelfLink'
+--
+-- * 'accName'
+--
+-- * 'accId'
+--
+-- * 'accUpdated'
+--
+-- * 'accPermissions'
+account
+    :: Account
+account =
+    Account
+    { _accChildLink = Nothing
+    , _accKind = "analytics#account"
+    , _accCreated = Nothing
+    , _accSelfLink = Nothing
+    , _accName = Nothing
+    , _accId = Nothing
+    , _accUpdated = Nothing
+    , _accPermissions = Nothing
+    }
+
+-- | Child link for an account entry. Points to the list of web properties
+-- for this account.
+accChildLink :: Lens' Account (Maybe AccountChildLink)
+accChildLink
+  = lens _accChildLink (\ s a -> s{_accChildLink = a})
+
+-- | Resource type for Analytics account.
+accKind :: Lens' Account Text
+accKind = lens _accKind (\ s a -> s{_accKind = a})
+
+-- | Time the account was created.
+accCreated :: Lens' Account (Maybe UTCTime)
+accCreated
+  = lens _accCreated (\ s a -> s{_accCreated = a}) .
+      mapping _DateTime
+
+-- | Link for this account.
+accSelfLink :: Lens' Account (Maybe Text)
+accSelfLink
+  = lens _accSelfLink (\ s a -> s{_accSelfLink = a})
+
+-- | Account name.
+accName :: Lens' Account (Maybe Text)
+accName = lens _accName (\ s a -> s{_accName = a})
+
+-- | Account ID.
+accId :: Lens' Account (Maybe Text)
+accId = lens _accId (\ s a -> s{_accId = a})
+
+-- | Time the account was last modified.
+accUpdated :: Lens' Account (Maybe UTCTime)
+accUpdated
+  = lens _accUpdated (\ s a -> s{_accUpdated = a}) .
+      mapping _DateTime
+
+-- | Permissions the user has for this account.
+accPermissions :: Lens' Account (Maybe AccountPermissions)
+accPermissions
+  = lens _accPermissions
+      (\ s a -> s{_accPermissions = a})
+
+instance FromJSON Account where
+        parseJSON
+          = withObject "Account"
+              (\ o ->
+                 Account <$>
+                   (o .:? "childLink") <*>
+                     (o .:? "kind" .!= "analytics#account")
+                     <*> (o .:? "created")
+                     <*> (o .:? "selfLink")
+                     <*> (o .:? "name")
+                     <*> (o .:? "id")
+                     <*> (o .:? "updated")
+                     <*> (o .:? "permissions"))
+
+instance ToJSON Account where
+        toJSON Account{..}
+          = object
+              (catMaybes
+                 [("childLink" .=) <$> _accChildLink,
+                  Just ("kind" .= _accKind),
+                  ("created" .=) <$> _accCreated,
+                  ("selfLink" .=) <$> _accSelfLink,
+                  ("name" .=) <$> _accName, ("id" .=) <$> _accId,
+                  ("updated" .=) <$> _accUpdated,
+                  ("permissions" .=) <$> _accPermissions])
+
+-- | JSON template for Analytics experiment resource.
+--
+-- /See:/ 'experiment' smart constructor.
+data Experiment = Experiment
+    { _expParentLink                     :: !(Maybe ExperimentParentLink)
+    , _expEqualWeighting                 :: !(Maybe Bool)
+    , _expStatus                         :: !(Maybe Text)
+    , _expWebPropertyId                  :: !(Maybe Text)
+    , _expStartTime                      :: !(Maybe DateTime')
+    , _expSnippet                        :: !(Maybe Text)
+    , _expKind                           :: !Text
+    , _expCreated                        :: !(Maybe DateTime')
+    , _expReasonExperimentEnded          :: !(Maybe Text)
+    , _expTrafficCoverage                :: !(Maybe (Textual Double))
+    , _expEditableInGaUi                 :: !(Maybe Bool)
+    , _expMinimumExperimentLengthInDays  :: !(Maybe (Textual Int32))
+    , _expProFileId                      :: !(Maybe Text)
+    , _expOptimizationType               :: !(Maybe Text)
+    , _expSelfLink                       :: !(Maybe Text)
+    , _expAccountId                      :: !(Maybe Text)
+    , _expName                           :: !(Maybe Text)
+    , _expWinnerFound                    :: !(Maybe Bool)
+    , _expEndTime                        :: !(Maybe DateTime')
+    , _expVariations                     :: !(Maybe [ExperimentVariationsItem])
+    , _expInternalWebPropertyId          :: !(Maybe Text)
+    , _expId                             :: !(Maybe Text)
+    , _expUpdated                        :: !(Maybe DateTime')
+    , _expRewriteVariationURLsAsOriginal :: !(Maybe Bool)
+    , _expObjectiveMetric                :: !(Maybe Text)
+    , _expWinnerConfidenceLevel          :: !(Maybe (Textual Double))
+    , _expServingFramework               :: !(Maybe Text)
+    , _expDescription                    :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'Experiment' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'expParentLink'
+--
+-- * 'expEqualWeighting'
+--
+-- * 'expStatus'
+--
+-- * 'expWebPropertyId'
+--
+-- * 'expStartTime'
+--
+-- * 'expSnippet'
+--
+-- * 'expKind'
+--
+-- * 'expCreated'
+--
+-- * 'expReasonExperimentEnded'
+--
+-- * 'expTrafficCoverage'
+--
+-- * 'expEditableInGaUi'
+--
+-- * 'expMinimumExperimentLengthInDays'
+--
+-- * 'expProFileId'
+--
+-- * 'expOptimizationType'
+--
+-- * 'expSelfLink'
+--
+-- * 'expAccountId'
+--
+-- * 'expName'
+--
+-- * 'expWinnerFound'
+--
+-- * 'expEndTime'
+--
+-- * 'expVariations'
+--
+-- * 'expInternalWebPropertyId'
+--
+-- * 'expId'
+--
+-- * 'expUpdated'
+--
+-- * 'expRewriteVariationURLsAsOriginal'
+--
+-- * 'expObjectiveMetric'
+--
+-- * 'expWinnerConfidenceLevel'
+--
+-- * 'expServingFramework'
+--
+-- * 'expDescription'
+experiment
+    :: Experiment
+experiment =
+    Experiment
+    { _expParentLink = Nothing
+    , _expEqualWeighting = Nothing
+    , _expStatus = Nothing
+    , _expWebPropertyId = Nothing
+    , _expStartTime = Nothing
+    , _expSnippet = Nothing
+    , _expKind = "analytics#experiment"
+    , _expCreated = Nothing
+    , _expReasonExperimentEnded = Nothing
+    , _expTrafficCoverage = Nothing
+    , _expEditableInGaUi = Nothing
+    , _expMinimumExperimentLengthInDays = Nothing
+    , _expProFileId = Nothing
+    , _expOptimizationType = Nothing
+    , _expSelfLink = Nothing
+    , _expAccountId = Nothing
+    , _expName = Nothing
+    , _expWinnerFound = Nothing
+    , _expEndTime = Nothing
+    , _expVariations = Nothing
+    , _expInternalWebPropertyId = Nothing
+    , _expId = Nothing
+    , _expUpdated = Nothing
+    , _expRewriteVariationURLsAsOriginal = Nothing
+    , _expObjectiveMetric = Nothing
+    , _expWinnerConfidenceLevel = Nothing
+    , _expServingFramework = Nothing
+    , _expDescription = Nothing
+    }
+
+-- | Parent link for an experiment. Points to the view (profile) to which
+-- this experiment belongs.
+expParentLink :: Lens' Experiment (Maybe ExperimentParentLink)
+expParentLink
+  = lens _expParentLink
+      (\ s a -> s{_expParentLink = a})
+
+-- | Boolean specifying whether to distribute traffic evenly across all
+-- variations. If the value is False, content experiments follows the
+-- default behavior of adjusting traffic dynamically based on variation
+-- performance. Optional -- defaults to False. This field may not be
+-- changed for an experiment whose status is ENDED.
+expEqualWeighting :: Lens' Experiment (Maybe Bool)
+expEqualWeighting
+  = lens _expEqualWeighting
+      (\ s a -> s{_expEqualWeighting = a})
+
+-- | Experiment status. Possible values: \"DRAFT\", \"READY_TO_RUN\",
+-- \"RUNNING\", \"ENDED\". Experiments can be created in the \"DRAFT\",
+-- \"READY_TO_RUN\" or \"RUNNING\" state. This field is required when
+-- creating an experiment.
+expStatus :: Lens' Experiment (Maybe Text)
+expStatus
+  = lens _expStatus (\ s a -> s{_expStatus = a})
+
+-- | Web property ID to which this experiment belongs. The web property ID is
+-- of the form UA-XXXXX-YY. This field is read-only.
+expWebPropertyId :: Lens' Experiment (Maybe Text)
+expWebPropertyId
+  = lens _expWebPropertyId
+      (\ s a -> s{_expWebPropertyId = a})
+
+-- | The starting time of the experiment (the time the status changed from
+-- READY_TO_RUN to RUNNING). This field is present only if the experiment
+-- has started. This field is read-only.
+expStartTime :: Lens' Experiment (Maybe UTCTime)
+expStartTime
+  = lens _expStartTime (\ s a -> s{_expStartTime = a})
+      . mapping _DateTime
+
+-- | The snippet of code to include on the control page(s). This field is
+-- read-only.
+expSnippet :: Lens' Experiment (Maybe Text)
+expSnippet
+  = lens _expSnippet (\ s a -> s{_expSnippet = a})
+
+-- | Resource type for an Analytics experiment. This field is read-only.
+expKind :: Lens' Experiment Text
+expKind = lens _expKind (\ s a -> s{_expKind = a})
+
+-- | Time the experiment was created. This field is read-only.
+expCreated :: Lens' Experiment (Maybe UTCTime)
+expCreated
+  = lens _expCreated (\ s a -> s{_expCreated = a}) .
+      mapping _DateTime
+
+-- | Why the experiment ended. Possible values: \"STOPPED_BY_USER\",
+-- \"WINNER_FOUND\", \"EXPERIMENT_EXPIRED\", \"ENDED_WITH_NO_WINNER\",
+-- \"GOAL_OBJECTIVE_CHANGED\". \"ENDED_WITH_NO_WINNER\" means that the
+-- experiment didn\'t expire but no winner was projected to be found. If
+-- the experiment status is changed via the API to ENDED this field is set
+-- to STOPPED_BY_USER. This field is read-only.
+expReasonExperimentEnded :: Lens' Experiment (Maybe Text)
+expReasonExperimentEnded
+  = lens _expReasonExperimentEnded
+      (\ s a -> s{_expReasonExperimentEnded = a})
+
+-- | A floating-point number in (0, 1]. Specifies the fraction of the traffic
+-- that participates in the experiment. Can be changed for a running
+-- experiment. This field may not be changed for an experiments whose
+-- status is ENDED.
+expTrafficCoverage :: Lens' Experiment (Maybe Double)
+expTrafficCoverage
+  = lens _expTrafficCoverage
+      (\ s a -> s{_expTrafficCoverage = a})
+      . mapping _Coerce
+
+-- | If true, the end user will be able to edit the experiment via the Google
+-- Analytics user interface.
+expEditableInGaUi :: Lens' Experiment (Maybe Bool)
+expEditableInGaUi
+  = lens _expEditableInGaUi
+      (\ s a -> s{_expEditableInGaUi = a})
+
+-- | An integer number in [3, 90]. Specifies the minimum length of the
+-- experiment. Can be changed for a running experiment. This field may not
+-- be changed for an experiments whose status is ENDED.
+expMinimumExperimentLengthInDays :: Lens' Experiment (Maybe Int32)
+expMinimumExperimentLengthInDays
+  = lens _expMinimumExperimentLengthInDays
+      (\ s a -> s{_expMinimumExperimentLengthInDays = a})
+      . mapping _Coerce
+
+-- | View (Profile) ID to which this experiment belongs. This field is
+-- read-only.
+expProFileId :: Lens' Experiment (Maybe Text)
+expProFileId
+  = lens _expProFileId (\ s a -> s{_expProFileId = a})
+
+-- | Whether the objectiveMetric should be minimized or maximized. Possible
+-- values: \"MAXIMUM\", \"MINIMUM\". Optional--defaults to \"MAXIMUM\".
+-- Cannot be specified without objectiveMetric. Cannot be modified when
+-- status is \"RUNNING\" or \"ENDED\".
+expOptimizationType :: Lens' Experiment (Maybe Text)
+expOptimizationType
+  = lens _expOptimizationType
+      (\ s a -> s{_expOptimizationType = a})
+
+-- | Link for this experiment. This field is read-only.
+expSelfLink :: Lens' Experiment (Maybe Text)
+expSelfLink
+  = lens _expSelfLink (\ s a -> s{_expSelfLink = a})
+
+-- | Account ID to which this experiment belongs. This field is read-only.
+expAccountId :: Lens' Experiment (Maybe Text)
+expAccountId
+  = lens _expAccountId (\ s a -> s{_expAccountId = a})
+
+-- | Experiment name. This field may not be changed for an experiment whose
+-- status is ENDED. This field is required when creating an experiment.
+expName :: Lens' Experiment (Maybe Text)
+expName = lens _expName (\ s a -> s{_expName = a})
+
+-- | Boolean specifying whether a winner has been found for this experiment.
+-- This field is read-only.
+expWinnerFound :: Lens' Experiment (Maybe Bool)
+expWinnerFound
+  = lens _expWinnerFound
+      (\ s a -> s{_expWinnerFound = a})
+
+-- | The ending time of the experiment (the time the status changed from
+-- RUNNING to ENDED). This field is present only if the experiment has
+-- ended. This field is read-only.
+expEndTime :: Lens' Experiment (Maybe UTCTime)
+expEndTime
+  = lens _expEndTime (\ s a -> s{_expEndTime = a}) .
+      mapping _DateTime
+
+-- | Array of variations. The first variation in the array is the original.
+-- The number of variations may not change once an experiment is in the
+-- RUNNING state. At least two variations are required before status can be
+-- set to RUNNING.
+expVariations :: Lens' Experiment [ExperimentVariationsItem]
+expVariations
+  = lens _expVariations
+      (\ s a -> s{_expVariations = a})
+      . _Default
+      . _Coerce
+
+-- | Internal ID for the web property to which this experiment belongs. This
+-- field is read-only.
+expInternalWebPropertyId :: Lens' Experiment (Maybe Text)
+expInternalWebPropertyId
+  = lens _expInternalWebPropertyId
+      (\ s a -> s{_expInternalWebPropertyId = a})
+
+-- | Experiment ID. Required for patch and update. Disallowed for create.
+expId :: Lens' Experiment (Maybe Text)
+expId = lens _expId (\ s a -> s{_expId = a})
+
+-- | Time the experiment was last modified. This field is read-only.
+expUpdated :: Lens' Experiment (Maybe UTCTime)
+expUpdated
+  = lens _expUpdated (\ s a -> s{_expUpdated = a}) .
+      mapping _DateTime
+
+-- | Boolean specifying whether variations URLS are rewritten to match those
+-- of the original. This field may not be changed for an experiments whose
+-- status is ENDED.
+expRewriteVariationURLsAsOriginal :: Lens' Experiment (Maybe Bool)
+expRewriteVariationURLsAsOriginal
+  = lens _expRewriteVariationURLsAsOriginal
+      (\ s a -> s{_expRewriteVariationURLsAsOriginal = a})
+
+-- | The metric that the experiment is optimizing. Valid values:
+-- \"ga:goal(n)Completions\", \"ga:adsenseAdsClicks\",
+-- \"ga:adsenseAdsViewed\", \"ga:adsenseRevenue\", \"ga:bounces\",
+-- \"ga:pageviews\", \"ga:sessionDuration\", \"ga:transactions\",
+-- \"ga:transactionRevenue\". This field is required if status is
+-- \"RUNNING\" and servingFramework is one of \"REDIRECT\" or \"API\".
+expObjectiveMetric :: Lens' Experiment (Maybe Text)
+expObjectiveMetric
+  = lens _expObjectiveMetric
+      (\ s a -> s{_expObjectiveMetric = a})
+
+-- | A floating-point number in (0, 1). Specifies the necessary confidence
+-- level to choose a winner. This field may not be changed for an
+-- experiments whose status is ENDED.
+expWinnerConfidenceLevel :: Lens' Experiment (Maybe Double)
+expWinnerConfidenceLevel
+  = lens _expWinnerConfidenceLevel
+      (\ s a -> s{_expWinnerConfidenceLevel = a})
+      . mapping _Coerce
+
+-- | The framework used to serve the experiment variations and evaluate the
+-- results. One of: - REDIRECT: Google Analytics redirects traffic to
+-- different variation pages, reports the chosen variation and evaluates
+-- the results. - API: Google Analytics chooses and reports the variation
+-- to serve and evaluates the results; the caller is responsible for
+-- serving the selected variation. - EXTERNAL: The variations will be
+-- served externally and the chosen variation reported to Google Analytics.
+-- The caller is responsible for serving the selected variation and
+-- evaluating the results.
+expServingFramework :: Lens' Experiment (Maybe Text)
+expServingFramework
+  = lens _expServingFramework
+      (\ s a -> s{_expServingFramework = a})
+
+-- | Notes about this experiment.
+expDescription :: Lens' Experiment (Maybe Text)
+expDescription
+  = lens _expDescription
+      (\ s a -> s{_expDescription = a})
+
+instance FromJSON Experiment where
+        parseJSON
+          = withObject "Experiment"
+              (\ o ->
+                 Experiment <$>
+                   (o .:? "parentLink") <*> (o .:? "equalWeighting") <*>
+                     (o .:? "status")
+                     <*> (o .:? "webPropertyId")
+                     <*> (o .:? "startTime")
+                     <*> (o .:? "snippet")
+                     <*> (o .:? "kind" .!= "analytics#experiment")
+                     <*> (o .:? "created")
+                     <*> (o .:? "reasonExperimentEnded")
+                     <*> (o .:? "trafficCoverage")
+                     <*> (o .:? "editableInGaUi")
+                     <*> (o .:? "minimumExperimentLengthInDays")
+                     <*> (o .:? "profileId")
+                     <*> (o .:? "optimizationType")
+                     <*> (o .:? "selfLink")
+                     <*> (o .:? "accountId")
+                     <*> (o .:? "name")
+                     <*> (o .:? "winnerFound")
+                     <*> (o .:? "endTime")
+                     <*> (o .:? "variations" .!= mempty)
+                     <*> (o .:? "internalWebPropertyId")
+                     <*> (o .:? "id")
+                     <*> (o .:? "updated")
+                     <*> (o .:? "rewriteVariationUrlsAsOriginal")
+                     <*> (o .:? "objectiveMetric")
+                     <*> (o .:? "winnerConfidenceLevel")
+                     <*> (o .:? "servingFramework")
+                     <*> (o .:? "description"))
+
+instance ToJSON Experiment where
+        toJSON Experiment{..}
+          = object
+              (catMaybes
+                 [("parentLink" .=) <$> _expParentLink,
+                  ("equalWeighting" .=) <$> _expEqualWeighting,
+                  ("status" .=) <$> _expStatus,
+                  ("webPropertyId" .=) <$> _expWebPropertyId,
+                  ("startTime" .=) <$> _expStartTime,
+                  ("snippet" .=) <$> _expSnippet,
+                  Just ("kind" .= _expKind),
+                  ("created" .=) <$> _expCreated,
+                  ("reasonExperimentEnded" .=) <$>
+                    _expReasonExperimentEnded,
+                  ("trafficCoverage" .=) <$> _expTrafficCoverage,
+                  ("editableInGaUi" .=) <$> _expEditableInGaUi,
+                  ("minimumExperimentLengthInDays" .=) <$>
+                    _expMinimumExperimentLengthInDays,
+                  ("profileId" .=) <$> _expProFileId,
+                  ("optimizationType" .=) <$> _expOptimizationType,
+                  ("selfLink" .=) <$> _expSelfLink,
+                  ("accountId" .=) <$> _expAccountId,
+                  ("name" .=) <$> _expName,
+                  ("winnerFound" .=) <$> _expWinnerFound,
+                  ("endTime" .=) <$> _expEndTime,
+                  ("variations" .=) <$> _expVariations,
+                  ("internalWebPropertyId" .=) <$>
+                    _expInternalWebPropertyId,
+                  ("id" .=) <$> _expId, ("updated" .=) <$> _expUpdated,
+                  ("rewriteVariationUrlsAsOriginal" .=) <$>
+                    _expRewriteVariationURLsAsOriginal,
+                  ("objectiveMetric" .=) <$> _expObjectiveMetric,
+                  ("winnerConfidenceLevel" .=) <$>
+                    _expWinnerConfidenceLevel,
+                  ("servingFramework" .=) <$> _expServingFramework,
+                  ("description" .=) <$> _expDescription])
+
+-- | An entity user link collection provides a list of Analytics ACL links
+-- Each resource in this collection corresponds to a single link.
+--
+-- /See:/ 'entityUserLinks' smart constructor.
+data EntityUserLinks = EntityUserLinks
+    { _eulNextLink     :: !(Maybe Text)
+    , _eulItemsPerPage :: !(Maybe (Textual Int32))
+    , _eulKind         :: !Text
+    , _eulItems        :: !(Maybe [EntityUserLink])
+    , _eulTotalResults :: !(Maybe (Textual Int32))
+    , _eulStartIndex   :: !(Maybe (Textual Int32))
+    , _eulPreviousLink :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'EntityUserLinks' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'eulNextLink'
+--
+-- * 'eulItemsPerPage'
+--
+-- * 'eulKind'
+--
+-- * 'eulItems'
+--
+-- * 'eulTotalResults'
+--
+-- * 'eulStartIndex'
+--
+-- * 'eulPreviousLink'
+entityUserLinks
+    :: EntityUserLinks
+entityUserLinks =
+    EntityUserLinks
+    { _eulNextLink = Nothing
+    , _eulItemsPerPage = Nothing
+    , _eulKind = "analytics#entityUserLinks"
+    , _eulItems = Nothing
+    , _eulTotalResults = Nothing
+    , _eulStartIndex = Nothing
+    , _eulPreviousLink = Nothing
+    }
+
+-- | Next link for this account collection.
+eulNextLink :: Lens' EntityUserLinks (Maybe Text)
+eulNextLink
+  = lens _eulNextLink (\ s a -> s{_eulNextLink = a})
+
+-- | The maximum number of entries the response can contain, regardless of
+-- the actual number of entries returned. Its value ranges from 1 to 1000
+-- with a value of 1000 by default, or otherwise specified by the
+-- max-results query parameter.
+eulItemsPerPage :: Lens' EntityUserLinks (Maybe Int32)
+eulItemsPerPage
+  = lens _eulItemsPerPage
+      (\ s a -> s{_eulItemsPerPage = a})
+      . mapping _Coerce
+
+-- | Collection type.
+eulKind :: Lens' EntityUserLinks Text
+eulKind = lens _eulKind (\ s a -> s{_eulKind = a})
+
+-- | A list of entity user links.
+eulItems :: Lens' EntityUserLinks [EntityUserLink]
+eulItems
+  = lens _eulItems (\ s a -> s{_eulItems = a}) .
+      _Default
+      . _Coerce
+
+-- | The total number of results for the query, regardless of the number of
+-- results in the response.
+eulTotalResults :: Lens' EntityUserLinks (Maybe Int32)
+eulTotalResults
+  = lens _eulTotalResults
+      (\ s a -> s{_eulTotalResults = a})
+      . mapping _Coerce
+
+-- | The starting index of the entries, which is 1 by default or otherwise
+-- specified by the start-index query parameter.
+eulStartIndex :: Lens' EntityUserLinks (Maybe Int32)
+eulStartIndex
+  = lens _eulStartIndex
+      (\ s a -> s{_eulStartIndex = a})
+      . mapping _Coerce
+
+-- | Previous link for this account collection.
+eulPreviousLink :: Lens' EntityUserLinks (Maybe Text)
+eulPreviousLink
+  = lens _eulPreviousLink
+      (\ s a -> s{_eulPreviousLink = a})
+
+instance FromJSON EntityUserLinks where
+        parseJSON
+          = withObject "EntityUserLinks"
+              (\ o ->
+                 EntityUserLinks <$>
+                   (o .:? "nextLink") <*> (o .:? "itemsPerPage") <*>
+                     (o .:? "kind" .!= "analytics#entityUserLinks")
+                     <*> (o .:? "items" .!= mempty)
+                     <*> (o .:? "totalResults")
+                     <*> (o .:? "startIndex")
+                     <*> (o .:? "previousLink"))
+
+instance ToJSON EntityUserLinks where
+        toJSON EntityUserLinks{..}
+          = object
+              (catMaybes
+                 [("nextLink" .=) <$> _eulNextLink,
+                  ("itemsPerPage" .=) <$> _eulItemsPerPage,
+                  Just ("kind" .= _eulKind),
+                  ("items" .=) <$> _eulItems,
+                  ("totalResults" .=) <$> _eulTotalResults,
+                  ("startIndex" .=) <$> _eulStartIndex,
+                  ("previousLink" .=) <$> _eulPreviousLink])
+
+-- | JSON template for an AdWords account.
+--
+-- /See:/ 'adWordsAccount' smart constructor.
+data AdWordsAccount = AdWordsAccount
+    { _awaAutoTaggingEnabled :: !(Maybe Bool)
+    , _awaKind               :: !Text
+    , _awaCustomerId         :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'AdWordsAccount' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'awaAutoTaggingEnabled'
+--
+-- * 'awaKind'
+--
+-- * 'awaCustomerId'
+adWordsAccount
+    :: AdWordsAccount
+adWordsAccount =
+    AdWordsAccount
+    { _awaAutoTaggingEnabled = Nothing
+    , _awaKind = "analytics#adWordsAccount"
+    , _awaCustomerId = Nothing
+    }
+
+-- | True if auto-tagging is enabled on the AdWords account. Read-only after
+-- the insert operation.
+awaAutoTaggingEnabled :: Lens' AdWordsAccount (Maybe Bool)
+awaAutoTaggingEnabled
+  = lens _awaAutoTaggingEnabled
+      (\ s a -> s{_awaAutoTaggingEnabled = a})
+
+-- | Resource type for AdWords account.
+awaKind :: Lens' AdWordsAccount Text
+awaKind = lens _awaKind (\ s a -> s{_awaKind = a})
+
+-- | Customer ID. This field is required when creating an AdWords link.
+awaCustomerId :: Lens' AdWordsAccount (Maybe Text)
+awaCustomerId
+  = lens _awaCustomerId
+      (\ s a -> s{_awaCustomerId = a})
+
+instance FromJSON AdWordsAccount where
+        parseJSON
+          = withObject "AdWordsAccount"
+              (\ o ->
+                 AdWordsAccount <$>
+                   (o .:? "autoTaggingEnabled") <*>
+                     (o .:? "kind" .!= "analytics#adWordsAccount")
+                     <*> (o .:? "customerId"))
+
+instance ToJSON AdWordsAccount where
+        toJSON AdWordsAccount{..}
+          = object
+              (catMaybes
+                 [("autoTaggingEnabled" .=) <$>
+                    _awaAutoTaggingEnabled,
+                  Just ("kind" .= _awaKind),
+                  ("customerId" .=) <$> _awaCustomerId])
+
+-- | JSON template for a profile filter link.
+--
+-- /See:/ 'filterRef' smart constructor.
+data FilterRef = FilterRef
+    { _frKind      :: !Text
+    , _frHref      :: !(Maybe Text)
+    , _frAccountId :: !(Maybe Text)
+    , _frName      :: !(Maybe Text)
+    , _frId        :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'FilterRef' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'frKind'
+--
+-- * 'frHref'
+--
+-- * 'frAccountId'
+--
+-- * 'frName'
+--
+-- * 'frId'
+filterRef
+    :: FilterRef
+filterRef =
+    FilterRef
+    { _frKind = "analytics#filterRef"
+    , _frHref = Nothing
+    , _frAccountId = Nothing
+    , _frName = Nothing
+    , _frId = Nothing
+    }
+
+-- | Kind value for filter reference.
+frKind :: Lens' FilterRef Text
+frKind = lens _frKind (\ s a -> s{_frKind = a})
+
+-- | Link for this filter.
+frHref :: Lens' FilterRef (Maybe Text)
+frHref = lens _frHref (\ s a -> s{_frHref = a})
+
+-- | Account ID to which this filter belongs.
+frAccountId :: Lens' FilterRef (Maybe Text)
+frAccountId
+  = lens _frAccountId (\ s a -> s{_frAccountId = a})
+
+-- | Name of this filter.
+frName :: Lens' FilterRef (Maybe Text)
+frName = lens _frName (\ s a -> s{_frName = a})
+
+-- | Filter ID.
+frId :: Lens' FilterRef (Maybe Text)
+frId = lens _frId (\ s a -> s{_frId = a})
+
+instance FromJSON FilterRef where
+        parseJSON
+          = withObject "FilterRef"
+              (\ o ->
+                 FilterRef <$>
+                   (o .:? "kind" .!= "analytics#filterRef") <*>
+                     (o .:? "href")
+                     <*> (o .:? "accountId")
+                     <*> (o .:? "name")
+                     <*> (o .:? "id"))
+
+instance ToJSON FilterRef where
+        toJSON FilterRef{..}
+          = object
+              (catMaybes
+                 [Just ("kind" .= _frKind), ("href" .=) <$> _frHref,
+                  ("accountId" .=) <$> _frAccountId,
+                  ("name" .=) <$> _frName, ("id" .=) <$> _frId])
+
+-- | Details for the goal of the type VISIT_TIME_ON_SITE.
+--
+-- /See:/ 'goalVisitTimeOnSiteDetails' smart constructor.
+data GoalVisitTimeOnSiteDetails = GoalVisitTimeOnSiteDetails
+    { _gvtosdComparisonValue :: !(Maybe (Textual Int64))
+    , _gvtosdComparisonType  :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'GoalVisitTimeOnSiteDetails' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'gvtosdComparisonValue'
+--
+-- * 'gvtosdComparisonType'
+goalVisitTimeOnSiteDetails
+    :: GoalVisitTimeOnSiteDetails
+goalVisitTimeOnSiteDetails =
+    GoalVisitTimeOnSiteDetails
+    { _gvtosdComparisonValue = Nothing
+    , _gvtosdComparisonType = Nothing
+    }
+
+-- | Value used for this comparison.
+gvtosdComparisonValue :: Lens' GoalVisitTimeOnSiteDetails (Maybe Int64)
+gvtosdComparisonValue
+  = lens _gvtosdComparisonValue
+      (\ s a -> s{_gvtosdComparisonValue = a})
+      . mapping _Coerce
+
+-- | Type of comparison. Possible values are LESS_THAN or GREATER_THAN.
+gvtosdComparisonType :: Lens' GoalVisitTimeOnSiteDetails (Maybe Text)
+gvtosdComparisonType
+  = lens _gvtosdComparisonType
+      (\ s a -> s{_gvtosdComparisonType = a})
+
+instance FromJSON GoalVisitTimeOnSiteDetails where
+        parseJSON
+          = withObject "GoalVisitTimeOnSiteDetails"
+              (\ o ->
+                 GoalVisitTimeOnSiteDetails <$>
+                   (o .:? "comparisonValue") <*>
+                     (o .:? "comparisonType"))
+
+instance ToJSON GoalVisitTimeOnSiteDetails where
+        toJSON GoalVisitTimeOnSiteDetails{..}
+          = object
+              (catMaybes
+                 [("comparisonValue" .=) <$> _gvtosdComparisonValue,
+                  ("comparisonType" .=) <$> _gvtosdComparisonType])
+
+-- | A web property collection lists Analytics web properties to which the
+-- user has access. Each resource in the collection corresponds to a single
+-- Analytics web property.
+--
+-- /See:/ 'webProperties' smart constructor.
+data WebProperties = WebProperties
+    { _wpNextLink     :: !(Maybe Text)
+    , _wpItemsPerPage :: !(Maybe (Textual Int32))
+    , _wpKind         :: !Text
+    , _wpUsername     :: !(Maybe Text)
+    , _wpItems        :: !(Maybe [WebProperty])
+    , _wpTotalResults :: !(Maybe (Textual Int32))
+    , _wpStartIndex   :: !(Maybe (Textual Int32))
+    , _wpPreviousLink :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'WebProperties' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'wpNextLink'
+--
+-- * 'wpItemsPerPage'
+--
+-- * 'wpKind'
+--
+-- * 'wpUsername'
+--
+-- * 'wpItems'
+--
+-- * 'wpTotalResults'
+--
+-- * 'wpStartIndex'
+--
+-- * 'wpPreviousLink'
+webProperties
+    :: WebProperties
+webProperties =
+    WebProperties
+    { _wpNextLink = Nothing
+    , _wpItemsPerPage = Nothing
+    , _wpKind = "analytics#webproperties"
+    , _wpUsername = Nothing
+    , _wpItems = Nothing
+    , _wpTotalResults = Nothing
+    , _wpStartIndex = Nothing
+    , _wpPreviousLink = Nothing
+    }
+
+-- | Link to next page for this web property collection.
+wpNextLink :: Lens' WebProperties (Maybe Text)
+wpNextLink
+  = lens _wpNextLink (\ s a -> s{_wpNextLink = a})
+
+-- | The maximum number of resources the response can contain, regardless of
+-- the actual number of resources returned. Its value ranges from 1 to 1000
+-- with a value of 1000 by default, or otherwise specified by the
+-- max-results query parameter.
+wpItemsPerPage :: Lens' WebProperties (Maybe Int32)
+wpItemsPerPage
+  = lens _wpItemsPerPage
+      (\ s a -> s{_wpItemsPerPage = a})
+      . mapping _Coerce
+
+-- | Collection type.
+wpKind :: Lens' WebProperties Text
+wpKind = lens _wpKind (\ s a -> s{_wpKind = a})
+
+-- | Email ID of the authenticated user
+wpUsername :: Lens' WebProperties (Maybe Text)
+wpUsername
+  = lens _wpUsername (\ s a -> s{_wpUsername = a})
+
+-- | A list of web properties.
+wpItems :: Lens' WebProperties [WebProperty]
+wpItems
+  = lens _wpItems (\ s a -> s{_wpItems = a}) . _Default
+      . _Coerce
+
+-- | The total number of results for the query, regardless of the number of
+-- results in the response.
+wpTotalResults :: Lens' WebProperties (Maybe Int32)
+wpTotalResults
+  = lens _wpTotalResults
+      (\ s a -> s{_wpTotalResults = a})
+      . mapping _Coerce
+
+-- | The starting index of the resources, which is 1 by default or otherwise
+-- specified by the start-index query parameter.
+wpStartIndex :: Lens' WebProperties (Maybe Int32)
+wpStartIndex
+  = lens _wpStartIndex (\ s a -> s{_wpStartIndex = a})
+      . mapping _Coerce
+
+-- | Link to previous page for this web property collection.
+wpPreviousLink :: Lens' WebProperties (Maybe Text)
+wpPreviousLink
+  = lens _wpPreviousLink
+      (\ s a -> s{_wpPreviousLink = a})
+
+instance FromJSON WebProperties where
+        parseJSON
+          = withObject "WebProperties"
+              (\ o ->
+                 WebProperties <$>
+                   (o .:? "nextLink") <*> (o .:? "itemsPerPage") <*>
+                     (o .:? "kind" .!= "analytics#webproperties")
+                     <*> (o .:? "username")
+                     <*> (o .:? "items" .!= mempty)
+                     <*> (o .:? "totalResults")
+                     <*> (o .:? "startIndex")
+                     <*> (o .:? "previousLink"))
+
+instance ToJSON WebProperties where
+        toJSON WebProperties{..}
+          = object
+              (catMaybes
+                 [("nextLink" .=) <$> _wpNextLink,
+                  ("itemsPerPage" .=) <$> _wpItemsPerPage,
+                  Just ("kind" .= _wpKind),
+                  ("username" .=) <$> _wpUsername,
+                  ("items" .=) <$> _wpItems,
+                  ("totalResults" .=) <$> _wpTotalResults,
+                  ("startIndex" .=) <$> _wpStartIndex,
+                  ("previousLink" .=) <$> _wpPreviousLink])
+
+-- | A custom metric collection lists Analytics custom metrics to which the
+-- user has access. Each resource in the collection corresponds to a single
+-- Analytics custom metric.
+--
+-- /See:/ 'customMetrics' smart constructor.
+data CustomMetrics = CustomMetrics
+    { _cmNextLink     :: !(Maybe Text)
+    , _cmItemsPerPage :: !(Maybe (Textual Int32))
+    , _cmKind         :: !Text
+    , _cmUsername     :: !(Maybe Text)
+    , _cmItems        :: !(Maybe [CustomMetric])
+    , _cmTotalResults :: !(Maybe (Textual Int32))
+    , _cmStartIndex   :: !(Maybe (Textual Int32))
+    , _cmPreviousLink :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'CustomMetrics' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'cmNextLink'
+--
+-- * 'cmItemsPerPage'
+--
+-- * 'cmKind'
+--
+-- * 'cmUsername'
+--
+-- * 'cmItems'
+--
+-- * 'cmTotalResults'
+--
+-- * 'cmStartIndex'
+--
+-- * 'cmPreviousLink'
+customMetrics
+    :: CustomMetrics
+customMetrics =
+    CustomMetrics
+    { _cmNextLink = Nothing
+    , _cmItemsPerPage = Nothing
+    , _cmKind = "analytics#customMetrics"
+    , _cmUsername = Nothing
+    , _cmItems = Nothing
+    , _cmTotalResults = Nothing
+    , _cmStartIndex = Nothing
+    , _cmPreviousLink = Nothing
+    }
+
+-- | Link to next page for this custom metric collection.
+cmNextLink :: Lens' CustomMetrics (Maybe Text)
+cmNextLink
+  = lens _cmNextLink (\ s a -> s{_cmNextLink = a})
+
+-- | The maximum number of resources the response can contain, regardless of
+-- the actual number of resources returned. Its value ranges from 1 to 1000
+-- with a value of 1000 by default, or otherwise specified by the
+-- max-results query parameter.
+cmItemsPerPage :: Lens' CustomMetrics (Maybe Int32)
+cmItemsPerPage
+  = lens _cmItemsPerPage
+      (\ s a -> s{_cmItemsPerPage = a})
+      . mapping _Coerce
+
+-- | Collection type.
+cmKind :: Lens' CustomMetrics Text
+cmKind = lens _cmKind (\ s a -> s{_cmKind = a})
+
+-- | Email ID of the authenticated user
+cmUsername :: Lens' CustomMetrics (Maybe Text)
+cmUsername
+  = lens _cmUsername (\ s a -> s{_cmUsername = a})
+
+-- | Collection of custom metrics.
+cmItems :: Lens' CustomMetrics [CustomMetric]
+cmItems
+  = lens _cmItems (\ s a -> s{_cmItems = a}) . _Default
+      . _Coerce
+
+-- | The total number of results for the query, regardless of the number of
+-- results in the response.
+cmTotalResults :: Lens' CustomMetrics (Maybe Int32)
+cmTotalResults
+  = lens _cmTotalResults
+      (\ s a -> s{_cmTotalResults = a})
+      . mapping _Coerce
+
+-- | The starting index of the resources, which is 1 by default or otherwise
+-- specified by the start-index query parameter.
+cmStartIndex :: Lens' CustomMetrics (Maybe Int32)
+cmStartIndex
+  = lens _cmStartIndex (\ s a -> s{_cmStartIndex = a})
+      . mapping _Coerce
+
+-- | Link to previous page for this custom metric collection.
+cmPreviousLink :: Lens' CustomMetrics (Maybe Text)
+cmPreviousLink
+  = lens _cmPreviousLink
+      (\ s a -> s{_cmPreviousLink = a})
+
+instance FromJSON CustomMetrics where
+        parseJSON
+          = withObject "CustomMetrics"
+              (\ o ->
+                 CustomMetrics <$>
+                   (o .:? "nextLink") <*> (o .:? "itemsPerPage") <*>
+                     (o .:? "kind" .!= "analytics#customMetrics")
+                     <*> (o .:? "username")
+                     <*> (o .:? "items" .!= mempty)
+                     <*> (o .:? "totalResults")
+                     <*> (o .:? "startIndex")
+                     <*> (o .:? "previousLink"))
+
+instance ToJSON CustomMetrics where
+        toJSON CustomMetrics{..}
+          = object
+              (catMaybes
+                 [("nextLink" .=) <$> _cmNextLink,
+                  ("itemsPerPage" .=) <$> _cmItemsPerPage,
+                  Just ("kind" .= _cmKind),
+                  ("username" .=) <$> _cmUsername,
+                  ("items" .=) <$> _cmItems,
+                  ("totalResults" .=) <$> _cmTotalResults,
+                  ("startIndex" .=) <$> _cmStartIndex,
+                  ("previousLink" .=) <$> _cmPreviousLink])
+
+-- | Details for the filter of the type ADVANCED.
+--
+-- /See:/ 'filterAdvancedDetails' smart constructor.
+data FilterAdvancedDetails = FilterAdvancedDetails
+    { _fadExtractA            :: !(Maybe Text)
+    , _fadFieldARequired      :: !(Maybe Bool)
+    , _fadFieldA              :: !(Maybe Text)
+    , _fadFieldBIndex         :: !(Maybe (Textual Int32))
+    , _fadOutputToField       :: !(Maybe Text)
+    , _fadOutputConstructor   :: !(Maybe Text)
+    , _fadExtractB            :: !(Maybe Text)
+    , _fadFieldAIndex         :: !(Maybe (Textual Int32))
+    , _fadCaseSensitive       :: !(Maybe Bool)
+    , _fadOutputToFieldIndex  :: !(Maybe (Textual Int32))
+    , _fadFieldB              :: !(Maybe Text)
+    , _fadFieldBRequired      :: !(Maybe Bool)
+    , _fadOverrideOutputField :: !(Maybe Bool)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'FilterAdvancedDetails' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'fadExtractA'
+--
+-- * 'fadFieldARequired'
+--
+-- * 'fadFieldA'
+--
+-- * 'fadFieldBIndex'
+--
+-- * 'fadOutputToField'
+--
+-- * 'fadOutputConstructor'
+--
+-- * 'fadExtractB'
+--
+-- * 'fadFieldAIndex'
+--
+-- * 'fadCaseSensitive'
+--
+-- * 'fadOutputToFieldIndex'
+--
+-- * 'fadFieldB'
+--
+-- * 'fadFieldBRequired'
+--
+-- * 'fadOverrideOutputField'
+filterAdvancedDetails
+    :: FilterAdvancedDetails
+filterAdvancedDetails =
+    FilterAdvancedDetails
+    { _fadExtractA = Nothing
+    , _fadFieldARequired = Nothing
+    , _fadFieldA = Nothing
+    , _fadFieldBIndex = Nothing
+    , _fadOutputToField = Nothing
+    , _fadOutputConstructor = Nothing
+    , _fadExtractB = Nothing
+    , _fadFieldAIndex = Nothing
+    , _fadCaseSensitive = Nothing
+    , _fadOutputToFieldIndex = Nothing
+    , _fadFieldB = Nothing
+    , _fadFieldBRequired = Nothing
+    , _fadOverrideOutputField = Nothing
+    }
+
+-- | Expression to extract from field A.
+fadExtractA :: Lens' FilterAdvancedDetails (Maybe Text)
+fadExtractA
+  = lens _fadExtractA (\ s a -> s{_fadExtractA = a})
+
+-- | Indicates if field A is required to match.
+fadFieldARequired :: Lens' FilterAdvancedDetails (Maybe Bool)
+fadFieldARequired
+  = lens _fadFieldARequired
+      (\ s a -> s{_fadFieldARequired = a})
+
+-- | Field A.
+fadFieldA :: Lens' FilterAdvancedDetails (Maybe Text)
+fadFieldA
+  = lens _fadFieldA (\ s a -> s{_fadFieldA = a})
+
+-- | The Index of the custom dimension. Required if field is a
+-- CUSTOM_DIMENSION.
+fadFieldBIndex :: Lens' FilterAdvancedDetails (Maybe Int32)
+fadFieldBIndex
+  = lens _fadFieldBIndex
+      (\ s a -> s{_fadFieldBIndex = a})
+      . mapping _Coerce
+
+-- | Output field.
+fadOutputToField :: Lens' FilterAdvancedDetails (Maybe Text)
+fadOutputToField
+  = lens _fadOutputToField
+      (\ s a -> s{_fadOutputToField = a})
+
+-- | Expression used to construct the output value.
+fadOutputConstructor :: Lens' FilterAdvancedDetails (Maybe Text)
+fadOutputConstructor
+  = lens _fadOutputConstructor
+      (\ s a -> s{_fadOutputConstructor = a})
+
+-- | Expression to extract from field B.
+fadExtractB :: Lens' FilterAdvancedDetails (Maybe Text)
+fadExtractB
+  = lens _fadExtractB (\ s a -> s{_fadExtractB = a})
+
+-- | The Index of the custom dimension. Required if field is a
+-- CUSTOM_DIMENSION.
+fadFieldAIndex :: Lens' FilterAdvancedDetails (Maybe Int32)
+fadFieldAIndex
+  = lens _fadFieldAIndex
+      (\ s a -> s{_fadFieldAIndex = a})
+      . mapping _Coerce
+
+-- | Indicates if the filter expressions are case sensitive.
+fadCaseSensitive :: Lens' FilterAdvancedDetails (Maybe Bool)
+fadCaseSensitive
+  = lens _fadCaseSensitive
+      (\ s a -> s{_fadCaseSensitive = a})
+
+-- | The Index of the custom dimension. Required if field is a
+-- CUSTOM_DIMENSION.
+fadOutputToFieldIndex :: Lens' FilterAdvancedDetails (Maybe Int32)
+fadOutputToFieldIndex
+  = lens _fadOutputToFieldIndex
+      (\ s a -> s{_fadOutputToFieldIndex = a})
+      . mapping _Coerce
+
+-- | Field B.
+fadFieldB :: Lens' FilterAdvancedDetails (Maybe Text)
+fadFieldB
+  = lens _fadFieldB (\ s a -> s{_fadFieldB = a})
+
+-- | Indicates if field B is required to match.
+fadFieldBRequired :: Lens' FilterAdvancedDetails (Maybe Bool)
+fadFieldBRequired
+  = lens _fadFieldBRequired
+      (\ s a -> s{_fadFieldBRequired = a})
+
+-- | Indicates if the existing value of the output field, if any, should be
+-- overridden by the output expression.
+fadOverrideOutputField :: Lens' FilterAdvancedDetails (Maybe Bool)
+fadOverrideOutputField
+  = lens _fadOverrideOutputField
+      (\ s a -> s{_fadOverrideOutputField = a})
+
+instance FromJSON FilterAdvancedDetails where
+        parseJSON
+          = withObject "FilterAdvancedDetails"
+              (\ o ->
+                 FilterAdvancedDetails <$>
+                   (o .:? "extractA") <*> (o .:? "fieldARequired") <*>
+                     (o .:? "fieldA")
+                     <*> (o .:? "fieldBIndex")
+                     <*> (o .:? "outputToField")
+                     <*> (o .:? "outputConstructor")
+                     <*> (o .:? "extractB")
+                     <*> (o .:? "fieldAIndex")
+                     <*> (o .:? "caseSensitive")
+                     <*> (o .:? "outputToFieldIndex")
+                     <*> (o .:? "fieldB")
+                     <*> (o .:? "fieldBRequired")
+                     <*> (o .:? "overrideOutputField"))
+
+instance ToJSON FilterAdvancedDetails where
+        toJSON FilterAdvancedDetails{..}
+          = object
+              (catMaybes
+                 [("extractA" .=) <$> _fadExtractA,
+                  ("fieldARequired" .=) <$> _fadFieldARequired,
+                  ("fieldA" .=) <$> _fadFieldA,
+                  ("fieldBIndex" .=) <$> _fadFieldBIndex,
+                  ("outputToField" .=) <$> _fadOutputToField,
+                  ("outputConstructor" .=) <$> _fadOutputConstructor,
+                  ("extractB" .=) <$> _fadExtractB,
+                  ("fieldAIndex" .=) <$> _fadFieldAIndex,
+                  ("caseSensitive" .=) <$> _fadCaseSensitive,
+                  ("outputToFieldIndex" .=) <$> _fadOutputToFieldIndex,
+                  ("fieldB" .=) <$> _fadFieldB,
+                  ("fieldBRequired" .=) <$> _fadFieldBRequired,
+                  ("overrideOutputField" .=) <$>
+                    _fadOverrideOutputField])
+
+-- | Details for the filter of the type UPPER.
+--
+-- /See:/ 'filterUppercaseDetails' smart constructor.
+data FilterUppercaseDetails = FilterUppercaseDetails
+    { _fudFieldIndex :: !(Maybe (Textual Int32))
+    , _fudField      :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'FilterUppercaseDetails' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'fudFieldIndex'
+--
+-- * 'fudField'
+filterUppercaseDetails
+    :: FilterUppercaseDetails
+filterUppercaseDetails =
+    FilterUppercaseDetails
+    { _fudFieldIndex = Nothing
+    , _fudField = Nothing
+    }
+
+-- | The Index of the custom dimension. Required if field is a
+-- CUSTOM_DIMENSION.
+fudFieldIndex :: Lens' FilterUppercaseDetails (Maybe Int32)
+fudFieldIndex
+  = lens _fudFieldIndex
+      (\ s a -> s{_fudFieldIndex = a})
+      . mapping _Coerce
+
+-- | Field to use in the filter.
+fudField :: Lens' FilterUppercaseDetails (Maybe Text)
+fudField = lens _fudField (\ s a -> s{_fudField = a})
+
+instance FromJSON FilterUppercaseDetails where
+        parseJSON
+          = withObject "FilterUppercaseDetails"
+              (\ o ->
+                 FilterUppercaseDetails <$>
+                   (o .:? "fieldIndex") <*> (o .:? "field"))
+
+instance ToJSON FilterUppercaseDetails where
+        toJSON FilterUppercaseDetails{..}
+          = object
+              (catMaybes
+                 [("fieldIndex" .=) <$> _fudFieldIndex,
+                  ("field" .=) <$> _fudField])
+
+--
+-- /See:/ 'customDataSourceChildLink' smart constructor.
+data CustomDataSourceChildLink = CustomDataSourceChildLink
+    { _cdsclHref :: !(Maybe Text)
+    , _cdsclType :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'CustomDataSourceChildLink' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'cdsclHref'
+--
+-- * 'cdsclType'
+customDataSourceChildLink
+    :: CustomDataSourceChildLink
+customDataSourceChildLink =
+    CustomDataSourceChildLink
+    { _cdsclHref = Nothing
+    , _cdsclType = Nothing
+    }
+
+-- | Link to the list of daily uploads for this custom data source. Link to
+-- the list of uploads for this custom data source.
+cdsclHref :: Lens' CustomDataSourceChildLink (Maybe Text)
+cdsclHref
+  = lens _cdsclHref (\ s a -> s{_cdsclHref = a})
+
+-- | Value is \"analytics#dailyUploads\". Value is \"analytics#uploads\".
+cdsclType :: Lens' CustomDataSourceChildLink (Maybe Text)
+cdsclType
+  = lens _cdsclType (\ s a -> s{_cdsclType = a})
+
+instance FromJSON CustomDataSourceChildLink where
+        parseJSON
+          = withObject "CustomDataSourceChildLink"
+              (\ o ->
+                 CustomDataSourceChildLink <$>
+                   (o .:? "href") <*> (o .:? "type"))
+
+instance ToJSON CustomDataSourceChildLink where
+        toJSON CustomDataSourceChildLink{..}
+          = object
+              (catMaybes
+                 [("href" .=) <$> _cdsclHref,
+                  ("type" .=) <$> _cdsclType])
+
+-- | Parent link for this filter. Points to the account to which this filter
+-- belongs.
+--
+-- /See:/ 'filterParentLink' smart constructor.
+data FilterParentLink = FilterParentLink
+    { _fplHref :: !(Maybe Text)
+    , _fplType :: !Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'FilterParentLink' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'fplHref'
+--
+-- * 'fplType'
+filterParentLink
+    :: FilterParentLink
+filterParentLink =
+    FilterParentLink
+    { _fplHref = Nothing
+    , _fplType = "analytics#account"
+    }
+
+-- | Link to the account to which this filter belongs.
+fplHref :: Lens' FilterParentLink (Maybe Text)
+fplHref = lens _fplHref (\ s a -> s{_fplHref = a})
+
+-- | Value is \"analytics#account\".
+fplType :: Lens' FilterParentLink Text
+fplType = lens _fplType (\ s a -> s{_fplType = a})
+
+instance FromJSON FilterParentLink where
+        parseJSON
+          = withObject "FilterParentLink"
+              (\ o ->
+                 FilterParentLink <$>
+                   (o .:? "href") <*>
+                     (o .:? "type" .!= "analytics#account"))
+
+instance ToJSON FilterParentLink where
+        toJSON FilterParentLink{..}
+          = object
+              (catMaybes
+                 [("href" .=) <$> _fplHref,
+                  Just ("type" .= _fplType)])
+
+-- | Real time data for a given view (profile).
+--
+-- /See:/ 'realtimeData' smart constructor.
+data RealtimeData = RealtimeData
+    { _rdProFileInfo         :: !(Maybe RealtimeDataProFileInfo)
+    , _rdKind                :: !Text
+    , _rdRows                :: !(Maybe [[Text]])
+    , _rdSelfLink            :: !(Maybe Text)
+    , _rdQuery               :: !(Maybe RealtimeDataQuery)
+    , _rdColumnHeaders       :: !(Maybe [RealtimeDataColumnHeadersItem])
+    , _rdId                  :: !(Maybe Text)
+    , _rdTotalResults        :: !(Maybe (Textual Int32))
+    , _rdTotalsForAllResults :: !(Maybe RealtimeDataTotalsForAllResults)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'RealtimeData' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'rdProFileInfo'
+--
+-- * 'rdKind'
+--
+-- * 'rdRows'
+--
+-- * 'rdSelfLink'
+--
+-- * 'rdQuery'
+--
+-- * 'rdColumnHeaders'
+--
+-- * 'rdId'
+--
+-- * 'rdTotalResults'
+--
+-- * 'rdTotalsForAllResults'
+realtimeData
+    :: RealtimeData
+realtimeData =
+    RealtimeData
+    { _rdProFileInfo = Nothing
+    , _rdKind = "analytics#realtimeData"
+    , _rdRows = Nothing
+    , _rdSelfLink = Nothing
+    , _rdQuery = Nothing
+    , _rdColumnHeaders = Nothing
+    , _rdId = Nothing
+    , _rdTotalResults = Nothing
+    , _rdTotalsForAllResults = Nothing
+    }
+
+-- | Information for the view (profile), for which the real time data was
+-- requested.
+rdProFileInfo :: Lens' RealtimeData (Maybe RealtimeDataProFileInfo)
+rdProFileInfo
+  = lens _rdProFileInfo
+      (\ s a -> s{_rdProFileInfo = a})
+
+-- | Resource type.
+rdKind :: Lens' RealtimeData Text
+rdKind = lens _rdKind (\ s a -> s{_rdKind = a})
+
+-- | Real time data rows, where each row contains a list of dimension values
+-- followed by the metric values. The order of dimensions and metrics is
+-- same as specified in the request.
+rdRows :: Lens' RealtimeData [[Text]]
+rdRows
+  = lens _rdRows (\ s a -> s{_rdRows = a}) . _Default .
+      _Coerce
+
+-- | Link to this page.
+rdSelfLink :: Lens' RealtimeData (Maybe Text)
+rdSelfLink
+  = lens _rdSelfLink (\ s a -> s{_rdSelfLink = a})
+
+-- | Real time data request query parameters.
+rdQuery :: Lens' RealtimeData (Maybe RealtimeDataQuery)
+rdQuery = lens _rdQuery (\ s a -> s{_rdQuery = a})
+
+-- | Column headers that list dimension names followed by the metric names.
+-- The order of dimensions and metrics is same as specified in the request.
+rdColumnHeaders :: Lens' RealtimeData [RealtimeDataColumnHeadersItem]
+rdColumnHeaders
+  = lens _rdColumnHeaders
+      (\ s a -> s{_rdColumnHeaders = a})
+      . _Default
+      . _Coerce
+
+-- | Unique ID for this data response.
+rdId :: Lens' RealtimeData (Maybe Text)
+rdId = lens _rdId (\ s a -> s{_rdId = a})
+
+-- | The total number of rows for the query, regardless of the number of rows
+-- in the response.
+rdTotalResults :: Lens' RealtimeData (Maybe Int32)
+rdTotalResults
+  = lens _rdTotalResults
+      (\ s a -> s{_rdTotalResults = a})
+      . mapping _Coerce
+
+-- | Total values for the requested metrics over all the results, not just
+-- the results returned in this response. The order of the metric totals is
+-- same as the metric order specified in the request.
+rdTotalsForAllResults :: Lens' RealtimeData (Maybe RealtimeDataTotalsForAllResults)
+rdTotalsForAllResults
+  = lens _rdTotalsForAllResults
+      (\ s a -> s{_rdTotalsForAllResults = a})
+
+instance FromJSON RealtimeData where
+        parseJSON
+          = withObject "RealtimeData"
+              (\ o ->
+                 RealtimeData <$>
+                   (o .:? "profileInfo") <*>
+                     (o .:? "kind" .!= "analytics#realtimeData")
+                     <*> (o .:? "rows" .!= mempty)
+                     <*> (o .:? "selfLink")
+                     <*> (o .:? "query")
+                     <*> (o .:? "columnHeaders" .!= mempty)
+                     <*> (o .:? "id")
+                     <*> (o .:? "totalResults")
+                     <*> (o .:? "totalsForAllResults"))
+
+instance ToJSON RealtimeData where
+        toJSON RealtimeData{..}
+          = object
+              (catMaybes
+                 [("profileInfo" .=) <$> _rdProFileInfo,
+                  Just ("kind" .= _rdKind), ("rows" .=) <$> _rdRows,
+                  ("selfLink" .=) <$> _rdSelfLink,
+                  ("query" .=) <$> _rdQuery,
+                  ("columnHeaders" .=) <$> _rdColumnHeaders,
+                  ("id" .=) <$> _rdId,
+                  ("totalResults" .=) <$> _rdTotalResults,
+                  ("totalsForAllResults" .=) <$>
+                    _rdTotalsForAllResults])
+
+-- | JSON template for Analytics Custom Metric.
+--
+-- /See:/ 'customMetric' smart constructor.
+data CustomMetric = CustomMetric
+    { _cusParentLink    :: !(Maybe CustomMetricParentLink)
+    , _cusWebPropertyId :: !(Maybe Text)
+    , _cusKind          :: !Text
+    , _cusMaxValue      :: !(Maybe Text)
+    , _cusCreated       :: !(Maybe DateTime')
+    , _cusMinValue      :: !(Maybe Text)
+    , _cusActive        :: !(Maybe Bool)
+    , _cusSelfLink      :: !(Maybe Text)
+    , _cusAccountId     :: !(Maybe Text)
+    , _cusName          :: !(Maybe Text)
+    , _cusScope         :: !(Maybe Text)
+    , _cusId            :: !(Maybe Text)
+    , _cusUpdated       :: !(Maybe DateTime')
+    , _cusType          :: !(Maybe Text)
+    , _cusIndex         :: !(Maybe (Textual Int32))
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'CustomMetric' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'cusParentLink'
+--
+-- * 'cusWebPropertyId'
+--
+-- * 'cusKind'
+--
+-- * 'cusMaxValue'
+--
+-- * 'cusCreated'
+--
+-- * 'cusMinValue'
+--
+-- * 'cusActive'
+--
+-- * 'cusSelfLink'
+--
+-- * 'cusAccountId'
+--
+-- * 'cusName'
+--
+-- * 'cusScope'
+--
+-- * 'cusId'
+--
+-- * 'cusUpdated'
+--
+-- * 'cusType'
+--
+-- * 'cusIndex'
+customMetric
+    :: CustomMetric
+customMetric =
+    CustomMetric
+    { _cusParentLink = Nothing
+    , _cusWebPropertyId = Nothing
+    , _cusKind = "analytics#customMetric"
+    , _cusMaxValue = Nothing
+    , _cusCreated = Nothing
+    , _cusMinValue = Nothing
+    , _cusActive = Nothing
+    , _cusSelfLink = Nothing
+    , _cusAccountId = Nothing
+    , _cusName = Nothing
+    , _cusScope = Nothing
+    , _cusId = Nothing
+    , _cusUpdated = Nothing
+    , _cusType = Nothing
+    , _cusIndex = Nothing
+    }
+
+-- | Parent link for the custom metric. Points to the property to which the
+-- custom metric belongs.
+cusParentLink :: Lens' CustomMetric (Maybe CustomMetricParentLink)
+cusParentLink
+  = lens _cusParentLink
+      (\ s a -> s{_cusParentLink = a})
+
+-- | Property ID.
+cusWebPropertyId :: Lens' CustomMetric (Maybe Text)
+cusWebPropertyId
+  = lens _cusWebPropertyId
+      (\ s a -> s{_cusWebPropertyId = a})
+
+-- | Kind value for a custom metric. Set to \"analytics#customMetric\". It is
+-- a read-only field.
+cusKind :: Lens' CustomMetric Text
+cusKind = lens _cusKind (\ s a -> s{_cusKind = a})
+
+-- | Max value of custom metric.
+cusMaxValue :: Lens' CustomMetric (Maybe Text)
+cusMaxValue
+  = lens _cusMaxValue (\ s a -> s{_cusMaxValue = a})
+
+-- | Time the custom metric was created.
+cusCreated :: Lens' CustomMetric (Maybe UTCTime)
+cusCreated
+  = lens _cusCreated (\ s a -> s{_cusCreated = a}) .
+      mapping _DateTime
+
+-- | Min value of custom metric.
+cusMinValue :: Lens' CustomMetric (Maybe Text)
+cusMinValue
+  = lens _cusMinValue (\ s a -> s{_cusMinValue = a})
+
+-- | Boolean indicating whether the custom metric is active.
+cusActive :: Lens' CustomMetric (Maybe Bool)
+cusActive
+  = lens _cusActive (\ s a -> s{_cusActive = a})
+
+-- | Link for the custom metric
+cusSelfLink :: Lens' CustomMetric (Maybe Text)
+cusSelfLink
+  = lens _cusSelfLink (\ s a -> s{_cusSelfLink = a})
+
+-- | Account ID.
+cusAccountId :: Lens' CustomMetric (Maybe Text)
+cusAccountId
+  = lens _cusAccountId (\ s a -> s{_cusAccountId = a})
+
+-- | Name of the custom metric.
+cusName :: Lens' CustomMetric (Maybe Text)
+cusName = lens _cusName (\ s a -> s{_cusName = a})
+
+-- | Scope of the custom metric: HIT or PRODUCT.
+cusScope :: Lens' CustomMetric (Maybe Text)
+cusScope = lens _cusScope (\ s a -> s{_cusScope = a})
+
+-- | Custom metric ID.
+cusId :: Lens' CustomMetric (Maybe Text)
+cusId = lens _cusId (\ s a -> s{_cusId = a})
+
+-- | Time the custom metric was last modified.
+cusUpdated :: Lens' CustomMetric (Maybe UTCTime)
+cusUpdated
+  = lens _cusUpdated (\ s a -> s{_cusUpdated = a}) .
+      mapping _DateTime
+
+-- | Data type of custom metric.
+cusType :: Lens' CustomMetric (Maybe Text)
+cusType = lens _cusType (\ s a -> s{_cusType = a})
+
+-- | Index of the custom metric.
+cusIndex :: Lens' CustomMetric (Maybe Int32)
+cusIndex
+  = lens _cusIndex (\ s a -> s{_cusIndex = a}) .
+      mapping _Coerce
+
+instance FromJSON CustomMetric where
+        parseJSON
+          = withObject "CustomMetric"
+              (\ o ->
+                 CustomMetric <$>
+                   (o .:? "parentLink") <*> (o .:? "webPropertyId") <*>
+                     (o .:? "kind" .!= "analytics#customMetric")
+                     <*> (o .:? "max_value")
+                     <*> (o .:? "created")
+                     <*> (o .:? "min_value")
+                     <*> (o .:? "active")
+                     <*> (o .:? "selfLink")
+                     <*> (o .:? "accountId")
+                     <*> (o .:? "name")
+                     <*> (o .:? "scope")
+                     <*> (o .:? "id")
+                     <*> (o .:? "updated")
+                     <*> (o .:? "type")
+                     <*> (o .:? "index"))
+
+instance ToJSON CustomMetric where
+        toJSON CustomMetric{..}
+          = object
+              (catMaybes
+                 [("parentLink" .=) <$> _cusParentLink,
+                  ("webPropertyId" .=) <$> _cusWebPropertyId,
+                  Just ("kind" .= _cusKind),
+                  ("max_value" .=) <$> _cusMaxValue,
+                  ("created" .=) <$> _cusCreated,
+                  ("min_value" .=) <$> _cusMinValue,
+                  ("active" .=) <$> _cusActive,
+                  ("selfLink" .=) <$> _cusSelfLink,
+                  ("accountId" .=) <$> _cusAccountId,
+                  ("name" .=) <$> _cusName, ("scope" .=) <$> _cusScope,
+                  ("id" .=) <$> _cusId, ("updated" .=) <$> _cusUpdated,
+                  ("type" .=) <$> _cusType,
+                  ("index" .=) <$> _cusIndex])
+
+-- | JSON template for an Analytics ProfileSummary. ProfileSummary returns
+-- basic information (i.e., summary) for a profile.
+--
+-- /See:/ 'proFileSummary' smart constructor.
+data ProFileSummary = ProFileSummary
+    { _pfsKind :: !Text
+    , _pfsName :: !(Maybe Text)
+    , _pfsId   :: !(Maybe Text)
+    , _pfsType :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ProFileSummary' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'pfsKind'
+--
+-- * 'pfsName'
+--
+-- * 'pfsId'
+--
+-- * 'pfsType'
+proFileSummary
+    :: ProFileSummary
+proFileSummary =
+    ProFileSummary
+    { _pfsKind = "analytics#profileSummary"
+    , _pfsName = Nothing
+    , _pfsId = Nothing
+    , _pfsType = Nothing
+    }
+
+-- | Resource type for Analytics ProfileSummary.
+pfsKind :: Lens' ProFileSummary Text
+pfsKind = lens _pfsKind (\ s a -> s{_pfsKind = a})
+
+-- | View (profile) name.
+pfsName :: Lens' ProFileSummary (Maybe Text)
+pfsName = lens _pfsName (\ s a -> s{_pfsName = a})
+
+-- | View (profile) ID.
+pfsId :: Lens' ProFileSummary (Maybe Text)
+pfsId = lens _pfsId (\ s a -> s{_pfsId = a})
+
+-- | View (Profile) type. Supported types: WEB or APP.
+pfsType :: Lens' ProFileSummary (Maybe Text)
+pfsType = lens _pfsType (\ s a -> s{_pfsType = a})
+
+instance FromJSON ProFileSummary where
+        parseJSON
+          = withObject "ProFileSummary"
+              (\ o ->
+                 ProFileSummary <$>
+                   (o .:? "kind" .!= "analytics#profileSummary") <*>
+                     (o .:? "name")
+                     <*> (o .:? "id")
+                     <*> (o .:? "type"))
+
+instance ToJSON ProFileSummary where
+        toJSON ProFileSummary{..}
+          = object
+              (catMaybes
+                 [Just ("kind" .= _pfsKind), ("name" .=) <$> _pfsName,
+                  ("id" .=) <$> _pfsId, ("type" .=) <$> _pfsType])
+
+-- | Parent link for the custom dimension. Points to the property to which
+-- the custom dimension belongs.
+--
+-- /See:/ 'customDimensionParentLink' smart constructor.
+data CustomDimensionParentLink = CustomDimensionParentLink
+    { _cdplHref :: !(Maybe Text)
+    , _cdplType :: !Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'CustomDimensionParentLink' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'cdplHref'
+--
+-- * 'cdplType'
+customDimensionParentLink
+    :: CustomDimensionParentLink
+customDimensionParentLink =
+    CustomDimensionParentLink
+    { _cdplHref = Nothing
+    , _cdplType = "analytics#webproperty"
+    }
+
+-- | Link to the property to which the custom dimension belongs.
+cdplHref :: Lens' CustomDimensionParentLink (Maybe Text)
+cdplHref = lens _cdplHref (\ s a -> s{_cdplHref = a})
+
+-- | Type of the parent link. Set to \"analytics#webproperty\".
+cdplType :: Lens' CustomDimensionParentLink Text
+cdplType = lens _cdplType (\ s a -> s{_cdplType = a})
+
+instance FromJSON CustomDimensionParentLink where
+        parseJSON
+          = withObject "CustomDimensionParentLink"
+              (\ o ->
+                 CustomDimensionParentLink <$>
+                   (o .:? "href") <*>
+                     (o .:? "type" .!= "analytics#webproperty"))
+
+instance ToJSON CustomDimensionParentLink where
+        toJSON CustomDimensionParentLink{..}
+          = object
+              (catMaybes
+                 [("href" .=) <$> _cdplHref,
+                  Just ("type" .= _cdplType)])
+
+-- | JSON template for an Analytics web property.
+--
+-- /See:/ 'webProperty' smart constructor.
+data WebProperty = WebProperty
+    { _wParentLink            :: !(Maybe WebPropertyParentLink)
+    , _wChildLink             :: !(Maybe WebPropertyChildLink)
+    , _wDefaultProFileId      :: !(Maybe (Textual Int64))
+    , _wKind                  :: !Text
+    , _wCreated               :: !(Maybe DateTime')
+    , _wSelfLink              :: !(Maybe Text)
+    , _wAccountId             :: !(Maybe Text)
+    , _wName                  :: !(Maybe Text)
+    , _wInternalWebPropertyId :: !(Maybe Text)
+    , _wId                    :: !(Maybe Text)
+    , _wUpdated               :: !(Maybe DateTime')
+    , _wProFileCount          :: !(Maybe (Textual Int32))
+    , _wPermissions           :: !(Maybe WebPropertyPermissions)
+    , _wWebsiteURL            :: !(Maybe Text)
+    , _wIndustryVertical      :: !(Maybe Text)
+    , _wLevel                 :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'WebProperty' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'wParentLink'
+--
+-- * 'wChildLink'
+--
+-- * 'wDefaultProFileId'
+--
+-- * 'wKind'
+--
+-- * 'wCreated'
+--
+-- * 'wSelfLink'
+--
+-- * 'wAccountId'
+--
+-- * 'wName'
+--
+-- * 'wInternalWebPropertyId'
+--
+-- * 'wId'
+--
+-- * 'wUpdated'
+--
+-- * 'wProFileCount'
+--
+-- * 'wPermissions'
+--
+-- * 'wWebsiteURL'
+--
+-- * 'wIndustryVertical'
+--
+-- * 'wLevel'
+webProperty
+    :: WebProperty
+webProperty =
+    WebProperty
+    { _wParentLink = Nothing
+    , _wChildLink = Nothing
+    , _wDefaultProFileId = Nothing
+    , _wKind = "analytics#webproperty"
+    , _wCreated = Nothing
+    , _wSelfLink = Nothing
+    , _wAccountId = Nothing
+    , _wName = Nothing
+    , _wInternalWebPropertyId = Nothing
+    , _wId = Nothing
+    , _wUpdated = Nothing
+    , _wProFileCount = Nothing
+    , _wPermissions = Nothing
+    , _wWebsiteURL = Nothing
+    , _wIndustryVertical = Nothing
+    , _wLevel = Nothing
+    }
+
+-- | Parent link for this web property. Points to the account to which this
+-- web property belongs.
+wParentLink :: Lens' WebProperty (Maybe WebPropertyParentLink)
+wParentLink
+  = lens _wParentLink (\ s a -> s{_wParentLink = a})
+
+-- | Child link for this web property. Points to the list of views (profiles)
+-- for this web property.
+wChildLink :: Lens' WebProperty (Maybe WebPropertyChildLink)
+wChildLink
+  = lens _wChildLink (\ s a -> s{_wChildLink = a})
+
+-- | Default view (profile) ID.
+wDefaultProFileId :: Lens' WebProperty (Maybe Int64)
+wDefaultProFileId
+  = lens _wDefaultProFileId
+      (\ s a -> s{_wDefaultProFileId = a})
+      . mapping _Coerce
+
+-- | Resource type for Analytics WebProperty.
+wKind :: Lens' WebProperty Text
+wKind = lens _wKind (\ s a -> s{_wKind = a})
+
+-- | Time this web property was created.
+wCreated :: Lens' WebProperty (Maybe UTCTime)
+wCreated
+  = lens _wCreated (\ s a -> s{_wCreated = a}) .
+      mapping _DateTime
+
+-- | Link for this web property.
+wSelfLink :: Lens' WebProperty (Maybe Text)
+wSelfLink
+  = lens _wSelfLink (\ s a -> s{_wSelfLink = a})
+
+-- | Account ID to which this web property belongs.
+wAccountId :: Lens' WebProperty (Maybe Text)
+wAccountId
+  = lens _wAccountId (\ s a -> s{_wAccountId = a})
+
+-- | Name of this web property.
+wName :: Lens' WebProperty (Maybe Text)
+wName = lens _wName (\ s a -> s{_wName = a})
+
+-- | Internal ID for this web property.
+wInternalWebPropertyId :: Lens' WebProperty (Maybe Text)
+wInternalWebPropertyId
+  = lens _wInternalWebPropertyId
+      (\ s a -> s{_wInternalWebPropertyId = a})
+
+-- | Web property ID of the form UA-XXXXX-YY.
+wId :: Lens' WebProperty (Maybe Text)
+wId = lens _wId (\ s a -> s{_wId = a})
+
+-- | Time this web property was last modified.
+wUpdated :: Lens' WebProperty (Maybe UTCTime)
+wUpdated
+  = lens _wUpdated (\ s a -> s{_wUpdated = a}) .
+      mapping _DateTime
+
+-- | View (Profile) count for this web property.
+wProFileCount :: Lens' WebProperty (Maybe Int32)
+wProFileCount
+  = lens _wProFileCount
+      (\ s a -> s{_wProFileCount = a})
+      . mapping _Coerce
+
+-- | Permissions the user has for this web property.
+wPermissions :: Lens' WebProperty (Maybe WebPropertyPermissions)
+wPermissions
+  = lens _wPermissions (\ s a -> s{_wPermissions = a})
+
+-- | Website url for this web property.
+wWebsiteURL :: Lens' WebProperty (Maybe Text)
+wWebsiteURL
+  = lens _wWebsiteURL (\ s a -> s{_wWebsiteURL = a})
+
+-- | The industry vertical\/category selected for this web property.
+wIndustryVertical :: Lens' WebProperty (Maybe Text)
+wIndustryVertical
+  = lens _wIndustryVertical
+      (\ s a -> s{_wIndustryVertical = a})
+
+-- | Level for this web property. Possible values are STANDARD or PREMIUM.
+wLevel :: Lens' WebProperty (Maybe Text)
+wLevel = lens _wLevel (\ s a -> s{_wLevel = a})
+
+instance FromJSON WebProperty where
+        parseJSON
+          = withObject "WebProperty"
+              (\ o ->
+                 WebProperty <$>
+                   (o .:? "parentLink") <*> (o .:? "childLink") <*>
+                     (o .:? "defaultProfileId")
+                     <*> (o .:? "kind" .!= "analytics#webproperty")
+                     <*> (o .:? "created")
+                     <*> (o .:? "selfLink")
+                     <*> (o .:? "accountId")
+                     <*> (o .:? "name")
+                     <*> (o .:? "internalWebPropertyId")
+                     <*> (o .:? "id")
+                     <*> (o .:? "updated")
+                     <*> (o .:? "profileCount")
+                     <*> (o .:? "permissions")
+                     <*> (o .:? "websiteUrl")
+                     <*> (o .:? "industryVertical")
+                     <*> (o .:? "level"))
+
+instance ToJSON WebProperty where
+        toJSON WebProperty{..}
+          = object
+              (catMaybes
+                 [("parentLink" .=) <$> _wParentLink,
+                  ("childLink" .=) <$> _wChildLink,
+                  ("defaultProfileId" .=) <$> _wDefaultProFileId,
+                  Just ("kind" .= _wKind),
+                  ("created" .=) <$> _wCreated,
+                  ("selfLink" .=) <$> _wSelfLink,
+                  ("accountId" .=) <$> _wAccountId,
+                  ("name" .=) <$> _wName,
+                  ("internalWebPropertyId" .=) <$>
+                    _wInternalWebPropertyId,
+                  ("id" .=) <$> _wId, ("updated" .=) <$> _wUpdated,
+                  ("profileCount" .=) <$> _wProFileCount,
+                  ("permissions" .=) <$> _wPermissions,
+                  ("websiteUrl" .=) <$> _wWebsiteURL,
+                  ("industryVertical" .=) <$> _wIndustryVertical,
+                  ("level" .=) <$> _wLevel])
+
+-- | Permissions the user has for this web property.
+--
+-- /See:/ 'webPropertyPermissions' smart constructor.
+newtype WebPropertyPermissions = WebPropertyPermissions
+    { _wppEffective :: Maybe [Text]
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'WebPropertyPermissions' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'wppEffective'
+webPropertyPermissions
+    :: WebPropertyPermissions
+webPropertyPermissions =
+    WebPropertyPermissions
+    { _wppEffective = Nothing
+    }
+
+-- | All the permissions that the user has for this web property. These
+-- include any implied permissions (e.g., EDIT implies VIEW) or inherited
+-- permissions from the parent account.
+wppEffective :: Lens' WebPropertyPermissions [Text]
+wppEffective
+  = lens _wppEffective (\ s a -> s{_wppEffective = a})
+      . _Default
+      . _Coerce
+
+instance FromJSON WebPropertyPermissions where
+        parseJSON
+          = withObject "WebPropertyPermissions"
+              (\ o ->
+                 WebPropertyPermissions <$>
+                   (o .:? "effective" .!= mempty))
+
+instance ToJSON WebPropertyPermissions where
+        toJSON WebPropertyPermissions{..}
+          = object
+              (catMaybes [("effective" .=) <$> _wppEffective])
+
+-- | JSON template for an Analytics Entity-User Link. Returns permissions
+-- that a user has for an entity.
+--
+-- /See:/ 'entityUserLink' smart constructor.
+data EntityUserLink = EntityUserLink
+    { _euluKind        :: !Text
+    , _euluUserRef     :: !(Maybe UserRef)
+    , _euluSelfLink    :: !(Maybe Text)
+    , _euluId          :: !(Maybe Text)
+    , _euluPermissions :: !(Maybe EntityUserLinkPermissions)
+    , _euluEntity      :: !(Maybe EntityUserLinkEntity)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'EntityUserLink' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'euluKind'
+--
+-- * 'euluUserRef'
+--
+-- * 'euluSelfLink'
+--
+-- * 'euluId'
+--
+-- * 'euluPermissions'
+--
+-- * 'euluEntity'
+entityUserLink
+    :: EntityUserLink
+entityUserLink =
+    EntityUserLink
+    { _euluKind = "analytics#entityUserLink"
+    , _euluUserRef = Nothing
+    , _euluSelfLink = Nothing
+    , _euluId = Nothing
+    , _euluPermissions = Nothing
+    , _euluEntity = Nothing
+    }
+
+-- | Resource type for entity user link.
+euluKind :: Lens' EntityUserLink Text
+euluKind = lens _euluKind (\ s a -> s{_euluKind = a})
+
+-- | User reference.
+euluUserRef :: Lens' EntityUserLink (Maybe UserRef)
+euluUserRef
+  = lens _euluUserRef (\ s a -> s{_euluUserRef = a})
+
+-- | Self link for this resource.
+euluSelfLink :: Lens' EntityUserLink (Maybe Text)
+euluSelfLink
+  = lens _euluSelfLink (\ s a -> s{_euluSelfLink = a})
+
+-- | Entity user link ID
+euluId :: Lens' EntityUserLink (Maybe Text)
+euluId = lens _euluId (\ s a -> s{_euluId = a})
+
+-- | Permissions the user has for this entity.
+euluPermissions :: Lens' EntityUserLink (Maybe EntityUserLinkPermissions)
+euluPermissions
+  = lens _euluPermissions
+      (\ s a -> s{_euluPermissions = a})
+
+-- | Entity for this link. It can be an account, a web property, or a view
+-- (profile).
+euluEntity :: Lens' EntityUserLink (Maybe EntityUserLinkEntity)
+euluEntity
+  = lens _euluEntity (\ s a -> s{_euluEntity = a})
+
+instance FromJSON EntityUserLink where
+        parseJSON
+          = withObject "EntityUserLink"
+              (\ o ->
+                 EntityUserLink <$>
+                   (o .:? "kind" .!= "analytics#entityUserLink") <*>
+                     (o .:? "userRef")
+                     <*> (o .:? "selfLink")
+                     <*> (o .:? "id")
+                     <*> (o .:? "permissions")
+                     <*> (o .:? "entity"))
+
+instance ToJSON EntityUserLink where
+        toJSON EntityUserLink{..}
+          = object
+              (catMaybes
+                 [Just ("kind" .= _euluKind),
+                  ("userRef" .=) <$> _euluUserRef,
+                  ("selfLink" .=) <$> _euluSelfLink,
+                  ("id" .=) <$> _euluId,
+                  ("permissions" .=) <$> _euluPermissions,
+                  ("entity" .=) <$> _euluEntity])
+
+-- | Parent link for this custom data source. Points to the web property to
+-- which this custom data source belongs.
+--
+-- /See:/ 'customDataSourceParentLink' smart constructor.
+data CustomDataSourceParentLink = CustomDataSourceParentLink
+    { _cdsplHref :: !(Maybe Text)
+    , _cdsplType :: !Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'CustomDataSourceParentLink' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'cdsplHref'
+--
+-- * 'cdsplType'
+customDataSourceParentLink
+    :: CustomDataSourceParentLink
+customDataSourceParentLink =
+    CustomDataSourceParentLink
+    { _cdsplHref = Nothing
+    , _cdsplType = "analytics#webproperty"
+    }
+
+-- | Link to the web property to which this custom data source belongs.
+cdsplHref :: Lens' CustomDataSourceParentLink (Maybe Text)
+cdsplHref
+  = lens _cdsplHref (\ s a -> s{_cdsplHref = a})
+
+-- | Value is \"analytics#webproperty\".
+cdsplType :: Lens' CustomDataSourceParentLink Text
+cdsplType
+  = lens _cdsplType (\ s a -> s{_cdsplType = a})
+
+instance FromJSON CustomDataSourceParentLink where
+        parseJSON
+          = withObject "CustomDataSourceParentLink"
+              (\ o ->
+                 CustomDataSourceParentLink <$>
+                   (o .:? "href") <*>
+                     (o .:? "type" .!= "analytics#webproperty"))
+
+instance ToJSON CustomDataSourceParentLink where
+        toJSON CustomDataSourceParentLink{..}
+          = object
+              (catMaybes
+                 [("href" .=) <$> _cdsplHref,
+                  Just ("type" .= _cdsplType)])
+
+--
+-- /See:/ 'goalEventDetailsEventConditionsItem' smart constructor.
+data GoalEventDetailsEventConditionsItem = GoalEventDetailsEventConditionsItem
+    { _gedeciMatchType       :: !(Maybe Text)
+    , _gedeciExpression      :: !(Maybe Text)
+    , _gedeciComparisonValue :: !(Maybe (Textual Int64))
+    , _gedeciType            :: !(Maybe Text)
+    , _gedeciComparisonType  :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'GoalEventDetailsEventConditionsItem' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'gedeciMatchType'
+--
+-- * 'gedeciExpression'
+--
+-- * 'gedeciComparisonValue'
+--
+-- * 'gedeciType'
+--
+-- * 'gedeciComparisonType'
+goalEventDetailsEventConditionsItem
+    :: GoalEventDetailsEventConditionsItem
+goalEventDetailsEventConditionsItem =
+    GoalEventDetailsEventConditionsItem
+    { _gedeciMatchType = Nothing
+    , _gedeciExpression = Nothing
+    , _gedeciComparisonValue = Nothing
+    , _gedeciType = Nothing
+    , _gedeciComparisonType = Nothing
+    }
+
+-- | Type of the match to be performed. Possible values are REGEXP,
+-- BEGINS_WITH, or EXACT.
+gedeciMatchType :: Lens' GoalEventDetailsEventConditionsItem (Maybe Text)
+gedeciMatchType
+  = lens _gedeciMatchType
+      (\ s a -> s{_gedeciMatchType = a})
+
+-- | Expression used for this match.
+gedeciExpression :: Lens' GoalEventDetailsEventConditionsItem (Maybe Text)
+gedeciExpression
+  = lens _gedeciExpression
+      (\ s a -> s{_gedeciExpression = a})
+
+-- | Value used for this comparison.
+gedeciComparisonValue :: Lens' GoalEventDetailsEventConditionsItem (Maybe Int64)
+gedeciComparisonValue
+  = lens _gedeciComparisonValue
+      (\ s a -> s{_gedeciComparisonValue = a})
+      . mapping _Coerce
+
+-- | Type of this event condition. Possible values are CATEGORY, ACTION,
+-- LABEL, or VALUE.
+gedeciType :: Lens' GoalEventDetailsEventConditionsItem (Maybe Text)
+gedeciType
+  = lens _gedeciType (\ s a -> s{_gedeciType = a})
+
+-- | Type of comparison. Possible values are LESS_THAN, GREATER_THAN or
+-- EQUAL.
+gedeciComparisonType :: Lens' GoalEventDetailsEventConditionsItem (Maybe Text)
+gedeciComparisonType
+  = lens _gedeciComparisonType
+      (\ s a -> s{_gedeciComparisonType = a})
+
+instance FromJSON GoalEventDetailsEventConditionsItem
+         where
+        parseJSON
+          = withObject "GoalEventDetailsEventConditionsItem"
+              (\ o ->
+                 GoalEventDetailsEventConditionsItem <$>
+                   (o .:? "matchType") <*> (o .:? "expression") <*>
+                     (o .:? "comparisonValue")
+                     <*> (o .:? "type")
+                     <*> (o .:? "comparisonType"))
+
+instance ToJSON GoalEventDetailsEventConditionsItem
+         where
+        toJSON GoalEventDetailsEventConditionsItem{..}
+          = object
+              (catMaybes
+                 [("matchType" .=) <$> _gedeciMatchType,
+                  ("expression" .=) <$> _gedeciExpression,
+                  ("comparisonValue" .=) <$> _gedeciComparisonValue,
+                  ("type" .=) <$> _gedeciType,
+                  ("comparisonType" .=) <$> _gedeciComparisonType])
+
+-- | Analytics data request query parameters.
+--
+-- /See:/ 'mcfDataQuery' smart constructor.
+data McfDataQuery = McfDataQuery
+    { _mdqMetrics       :: !(Maybe [Text])
+    , _mdqSamplingLevel :: !(Maybe Text)
+    , _mdqFilters       :: !(Maybe Text)
+    , _mdqIds           :: !(Maybe Text)
+    , _mdqEndDate       :: !(Maybe Text)
+    , _mdqSort          :: !(Maybe [Text])
+    , _mdqDimensions    :: !(Maybe Text)
+    , _mdqStartIndex    :: !(Maybe (Textual Int32))
+    , _mdqMaxResults    :: !(Maybe (Textual Int32))
+    , _mdqSegment       :: !(Maybe Text)
+    , _mdqStartDate     :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'McfDataQuery' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'mdqMetrics'
+--
+-- * 'mdqSamplingLevel'
+--
+-- * 'mdqFilters'
+--
+-- * 'mdqIds'
+--
+-- * 'mdqEndDate'
+--
+-- * 'mdqSort'
+--
+-- * 'mdqDimensions'
+--
+-- * 'mdqStartIndex'
+--
+-- * 'mdqMaxResults'
+--
+-- * 'mdqSegment'
+--
+-- * 'mdqStartDate'
+mcfDataQuery
+    :: McfDataQuery
+mcfDataQuery =
+    McfDataQuery
+    { _mdqMetrics = Nothing
+    , _mdqSamplingLevel = Nothing
+    , _mdqFilters = Nothing
+    , _mdqIds = Nothing
+    , _mdqEndDate = Nothing
+    , _mdqSort = Nothing
+    , _mdqDimensions = Nothing
+    , _mdqStartIndex = Nothing
+    , _mdqMaxResults = Nothing
+    , _mdqSegment = Nothing
+    , _mdqStartDate = Nothing
+    }
+
+-- | List of analytics metrics.
+mdqMetrics :: Lens' McfDataQuery [Text]
+mdqMetrics
+  = lens _mdqMetrics (\ s a -> s{_mdqMetrics = a}) .
+      _Default
+      . _Coerce
+
+-- | Desired sampling level
+mdqSamplingLevel :: Lens' McfDataQuery (Maybe Text)
+mdqSamplingLevel
+  = lens _mdqSamplingLevel
+      (\ s a -> s{_mdqSamplingLevel = a})
+
+-- | Comma-separated list of dimension or metric filters.
+mdqFilters :: Lens' McfDataQuery (Maybe Text)
+mdqFilters
+  = lens _mdqFilters (\ s a -> s{_mdqFilters = a})
+
+-- | Unique table ID.
+mdqIds :: Lens' McfDataQuery (Maybe Text)
+mdqIds = lens _mdqIds (\ s a -> s{_mdqIds = a})
+
+-- | End date.
+mdqEndDate :: Lens' McfDataQuery (Maybe Text)
+mdqEndDate
+  = lens _mdqEndDate (\ s a -> s{_mdqEndDate = a})
+
+-- | List of dimensions or metrics based on which Analytics data is sorted.
+mdqSort :: Lens' McfDataQuery [Text]
+mdqSort
+  = lens _mdqSort (\ s a -> s{_mdqSort = a}) . _Default
+      . _Coerce
+
+-- | List of analytics dimensions.
+mdqDimensions :: Lens' McfDataQuery (Maybe Text)
+mdqDimensions
+  = lens _mdqDimensions
+      (\ s a -> s{_mdqDimensions = a})
+
+-- | Start index.
+mdqStartIndex :: Lens' McfDataQuery (Maybe Int32)
+mdqStartIndex
+  = lens _mdqStartIndex
+      (\ s a -> s{_mdqStartIndex = a})
+      . mapping _Coerce
+
+-- | Maximum results per page.
+mdqMaxResults :: Lens' McfDataQuery (Maybe Int32)
+mdqMaxResults
+  = lens _mdqMaxResults
+      (\ s a -> s{_mdqMaxResults = a})
+      . mapping _Coerce
+
+-- | Analytics advanced segment.
+mdqSegment :: Lens' McfDataQuery (Maybe Text)
+mdqSegment
+  = lens _mdqSegment (\ s a -> s{_mdqSegment = a})
+
+-- | Start date.
+mdqStartDate :: Lens' McfDataQuery (Maybe Text)
+mdqStartDate
+  = lens _mdqStartDate (\ s a -> s{_mdqStartDate = a})
+
+instance FromJSON McfDataQuery where
+        parseJSON
+          = withObject "McfDataQuery"
+              (\ o ->
+                 McfDataQuery <$>
+                   (o .:? "metrics" .!= mempty) <*>
+                     (o .:? "samplingLevel")
+                     <*> (o .:? "filters")
+                     <*> (o .:? "ids")
+                     <*> (o .:? "end-date")
+                     <*> (o .:? "sort" .!= mempty)
+                     <*> (o .:? "dimensions")
+                     <*> (o .:? "start-index")
+                     <*> (o .:? "max-results")
+                     <*> (o .:? "segment")
+                     <*> (o .:? "start-date"))
+
+instance ToJSON McfDataQuery where
+        toJSON McfDataQuery{..}
+          = object
+              (catMaybes
+                 [("metrics" .=) <$> _mdqMetrics,
+                  ("samplingLevel" .=) <$> _mdqSamplingLevel,
+                  ("filters" .=) <$> _mdqFilters,
+                  ("ids" .=) <$> _mdqIds,
+                  ("end-date" .=) <$> _mdqEndDate,
+                  ("sort" .=) <$> _mdqSort,
+                  ("dimensions" .=) <$> _mdqDimensions,
+                  ("start-index" .=) <$> _mdqStartIndex,
+                  ("max-results" .=) <$> _mdqMaxResults,
+                  ("segment" .=) <$> _mdqSegment,
+                  ("start-date" .=) <$> _mdqStartDate])
+
+-- | JSON template for Analytics goal resource.
+--
+-- /See:/ 'goal' smart constructor.
+data Goal = Goal
+    { _goaParentLink             :: !(Maybe GoalParentLink)
+    , _goaWebPropertyId          :: !(Maybe Text)
+    , _goaKind                   :: !Text
+    , _goaCreated                :: !(Maybe DateTime')
+    , _goaValue                  :: !(Maybe (Textual Double))
+    , _goaProFileId              :: !(Maybe Text)
+    , _goaEventDetails           :: !(Maybe GoalEventDetails)
+    , _goaActive                 :: !(Maybe Bool)
+    , _goaSelfLink               :: !(Maybe Text)
+    , _goaVisitTimeOnSiteDetails :: !(Maybe GoalVisitTimeOnSiteDetails)
+    , _goaAccountId              :: !(Maybe Text)
+    , _goaName                   :: !(Maybe Text)
+    , _goaInternalWebPropertyId  :: !(Maybe Text)
+    , _goaId                     :: !(Maybe Text)
+    , _goaURLDestinationDetails  :: !(Maybe GoalURLDestinationDetails)
+    , _goaVisitNumPagesDetails   :: !(Maybe GoalVisitNumPagesDetails)
+    , _goaUpdated                :: !(Maybe DateTime')
+    , _goaType                   :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'Goal' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'goaParentLink'
+--
+-- * 'goaWebPropertyId'
+--
+-- * 'goaKind'
+--
+-- * 'goaCreated'
+--
+-- * 'goaValue'
+--
+-- * 'goaProFileId'
+--
+-- * 'goaEventDetails'
+--
+-- * 'goaActive'
+--
+-- * 'goaSelfLink'
+--
+-- * 'goaVisitTimeOnSiteDetails'
+--
+-- * 'goaAccountId'
+--
+-- * 'goaName'
+--
+-- * 'goaInternalWebPropertyId'
+--
+-- * 'goaId'
+--
+-- * 'goaURLDestinationDetails'
+--
+-- * 'goaVisitNumPagesDetails'
+--
+-- * 'goaUpdated'
+--
+-- * 'goaType'
+goal
+    :: Goal
+goal =
+    Goal
+    { _goaParentLink = Nothing
+    , _goaWebPropertyId = Nothing
+    , _goaKind = "analytics#goal"
+    , _goaCreated = Nothing
+    , _goaValue = Nothing
+    , _goaProFileId = Nothing
+    , _goaEventDetails = Nothing
+    , _goaActive = Nothing
+    , _goaSelfLink = Nothing
+    , _goaVisitTimeOnSiteDetails = Nothing
+    , _goaAccountId = Nothing
+    , _goaName = Nothing
+    , _goaInternalWebPropertyId = Nothing
+    , _goaId = Nothing
+    , _goaURLDestinationDetails = Nothing
+    , _goaVisitNumPagesDetails = Nothing
+    , _goaUpdated = Nothing
+    , _goaType = Nothing
+    }
+
+-- | Parent link for a goal. Points to the view (profile) to which this goal
+-- belongs.
+goaParentLink :: Lens' Goal (Maybe GoalParentLink)
+goaParentLink
+  = lens _goaParentLink
+      (\ s a -> s{_goaParentLink = a})
+
+-- | Web property ID to which this goal belongs. The web property ID is of
+-- the form UA-XXXXX-YY.
+goaWebPropertyId :: Lens' Goal (Maybe Text)
+goaWebPropertyId
+  = lens _goaWebPropertyId
+      (\ s a -> s{_goaWebPropertyId = a})
+
+-- | Resource type for an Analytics goal.
+goaKind :: Lens' Goal Text
+goaKind = lens _goaKind (\ s a -> s{_goaKind = a})
+
+-- | Time this goal was created.
+goaCreated :: Lens' Goal (Maybe UTCTime)
+goaCreated
+  = lens _goaCreated (\ s a -> s{_goaCreated = a}) .
+      mapping _DateTime
+
+-- | Goal value.
+goaValue :: Lens' Goal (Maybe Double)
+goaValue
+  = lens _goaValue (\ s a -> s{_goaValue = a}) .
+      mapping _Coerce
+
+-- | View (Profile) ID to which this goal belongs.
+goaProFileId :: Lens' Goal (Maybe Text)
+goaProFileId
+  = lens _goaProFileId (\ s a -> s{_goaProFileId = a})
+
+-- | Details for the goal of the type EVENT.
+goaEventDetails :: Lens' Goal (Maybe GoalEventDetails)
+goaEventDetails
+  = lens _goaEventDetails
+      (\ s a -> s{_goaEventDetails = a})
+
+-- | Determines whether this goal is active.
+goaActive :: Lens' Goal (Maybe Bool)
+goaActive
+  = lens _goaActive (\ s a -> s{_goaActive = a})
+
+-- | Link for this goal.
+goaSelfLink :: Lens' Goal (Maybe Text)
+goaSelfLink
+  = lens _goaSelfLink (\ s a -> s{_goaSelfLink = a})
+
+-- | Details for the goal of the type VISIT_TIME_ON_SITE.
+goaVisitTimeOnSiteDetails :: Lens' Goal (Maybe GoalVisitTimeOnSiteDetails)
+goaVisitTimeOnSiteDetails
+  = lens _goaVisitTimeOnSiteDetails
+      (\ s a -> s{_goaVisitTimeOnSiteDetails = a})
+
+-- | Account ID to which this goal belongs.
+goaAccountId :: Lens' Goal (Maybe Text)
+goaAccountId
+  = lens _goaAccountId (\ s a -> s{_goaAccountId = a})
+
+-- | Goal name.
+goaName :: Lens' Goal (Maybe Text)
+goaName = lens _goaName (\ s a -> s{_goaName = a})
+
+-- | Internal ID for the web property to which this goal belongs.
+goaInternalWebPropertyId :: Lens' Goal (Maybe Text)
+goaInternalWebPropertyId
+  = lens _goaInternalWebPropertyId
+      (\ s a -> s{_goaInternalWebPropertyId = a})
+
+-- | Goal ID.
+goaId :: Lens' Goal (Maybe Text)
+goaId = lens _goaId (\ s a -> s{_goaId = a})
+
+-- | Details for the goal of the type URL_DESTINATION.
+goaURLDestinationDetails :: Lens' Goal (Maybe GoalURLDestinationDetails)
+goaURLDestinationDetails
+  = lens _goaURLDestinationDetails
+      (\ s a -> s{_goaURLDestinationDetails = a})
+
+-- | Details for the goal of the type VISIT_NUM_PAGES.
+goaVisitNumPagesDetails :: Lens' Goal (Maybe GoalVisitNumPagesDetails)
+goaVisitNumPagesDetails
+  = lens _goaVisitNumPagesDetails
+      (\ s a -> s{_goaVisitNumPagesDetails = a})
+
+-- | Time this goal was last modified.
+goaUpdated :: Lens' Goal (Maybe UTCTime)
+goaUpdated
+  = lens _goaUpdated (\ s a -> s{_goaUpdated = a}) .
+      mapping _DateTime
+
+-- | Goal type. Possible values are URL_DESTINATION, VISIT_TIME_ON_SITE,
+-- VISIT_NUM_PAGES, AND EVENT.
+goaType :: Lens' Goal (Maybe Text)
+goaType = lens _goaType (\ s a -> s{_goaType = a})
+
+instance FromJSON Goal where
+        parseJSON
+          = withObject "Goal"
+              (\ o ->
+                 Goal <$>
+                   (o .:? "parentLink") <*> (o .:? "webPropertyId") <*>
+                     (o .:? "kind" .!= "analytics#goal")
+                     <*> (o .:? "created")
+                     <*> (o .:? "value")
+                     <*> (o .:? "profileId")
+                     <*> (o .:? "eventDetails")
+                     <*> (o .:? "active")
+                     <*> (o .:? "selfLink")
+                     <*> (o .:? "visitTimeOnSiteDetails")
+                     <*> (o .:? "accountId")
+                     <*> (o .:? "name")
+                     <*> (o .:? "internalWebPropertyId")
+                     <*> (o .:? "id")
+                     <*> (o .:? "urlDestinationDetails")
+                     <*> (o .:? "visitNumPagesDetails")
+                     <*> (o .:? "updated")
+                     <*> (o .:? "type"))
+
+instance ToJSON Goal where
+        toJSON Goal{..}
+          = object
+              (catMaybes
+                 [("parentLink" .=) <$> _goaParentLink,
+                  ("webPropertyId" .=) <$> _goaWebPropertyId,
+                  Just ("kind" .= _goaKind),
+                  ("created" .=) <$> _goaCreated,
+                  ("value" .=) <$> _goaValue,
+                  ("profileId" .=) <$> _goaProFileId,
+                  ("eventDetails" .=) <$> _goaEventDetails,
+                  ("active" .=) <$> _goaActive,
+                  ("selfLink" .=) <$> _goaSelfLink,
+                  ("visitTimeOnSiteDetails" .=) <$>
+                    _goaVisitTimeOnSiteDetails,
+                  ("accountId" .=) <$> _goaAccountId,
+                  ("name" .=) <$> _goaName,
+                  ("internalWebPropertyId" .=) <$>
+                    _goaInternalWebPropertyId,
+                  ("id" .=) <$> _goaId,
+                  ("urlDestinationDetails" .=) <$>
+                    _goaURLDestinationDetails,
+                  ("visitNumPagesDetails" .=) <$>
+                    _goaVisitNumPagesDetails,
+                  ("updated" .=) <$> _goaUpdated,
+                  ("type" .=) <$> _goaType])
+
+-- | JSON template for an Analytics account ticket. The account ticket
+-- consists of the ticket ID and the basic information for the account,
+-- property and profile.
+--
+-- /See:/ 'accountTicket' smart constructor.
+data AccountTicket = AccountTicket
+    { _atRedirectURI :: !(Maybe Text)
+    , _atKind        :: !Text
+    , _atProFile     :: !(Maybe ProFile)
+    , _atAccount     :: !(Maybe Account)
+    , _atWebProperty :: !(Maybe WebProperty)
+    , _atId          :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'AccountTicket' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'atRedirectURI'
+--
+-- * 'atKind'
+--
+-- * 'atProFile'
+--
+-- * 'atAccount'
+--
+-- * 'atWebProperty'
+--
+-- * 'atId'
+accountTicket
+    :: AccountTicket
+accountTicket =
+    AccountTicket
+    { _atRedirectURI = Nothing
+    , _atKind = "analytics#accountTicket"
+    , _atProFile = Nothing
+    , _atAccount = Nothing
+    , _atWebProperty = Nothing
+    , _atId = Nothing
+    }
+
+-- | Redirect URI where the user will be sent after accepting Terms of
+-- Service. Must be configured in APIs console as a callback URL.
+atRedirectURI :: Lens' AccountTicket (Maybe Text)
+atRedirectURI
+  = lens _atRedirectURI
+      (\ s a -> s{_atRedirectURI = a})
+
+-- | Resource type for account ticket.
+atKind :: Lens' AccountTicket Text
+atKind = lens _atKind (\ s a -> s{_atKind = a})
+
+-- | View (Profile) for the account.
+atProFile :: Lens' AccountTicket (Maybe ProFile)
+atProFile
+  = lens _atProFile (\ s a -> s{_atProFile = a})
+
+-- | Account for this ticket.
+atAccount :: Lens' AccountTicket (Maybe Account)
+atAccount
+  = lens _atAccount (\ s a -> s{_atAccount = a})
+
+-- | Web property for the account.
+atWebProperty :: Lens' AccountTicket (Maybe WebProperty)
+atWebProperty
+  = lens _atWebProperty
+      (\ s a -> s{_atWebProperty = a})
+
+-- | Account ticket ID used to access the account ticket.
+atId :: Lens' AccountTicket (Maybe Text)
+atId = lens _atId (\ s a -> s{_atId = a})
+
+instance FromJSON AccountTicket where
+        parseJSON
+          = withObject "AccountTicket"
+              (\ o ->
+                 AccountTicket <$>
+                   (o .:? "redirectUri") <*>
+                     (o .:? "kind" .!= "analytics#accountTicket")
+                     <*> (o .:? "profile")
+                     <*> (o .:? "account")
+                     <*> (o .:? "webproperty")
+                     <*> (o .:? "id"))
+
+instance ToJSON AccountTicket where
+        toJSON AccountTicket{..}
+          = object
+              (catMaybes
+                 [("redirectUri" .=) <$> _atRedirectURI,
+                  Just ("kind" .= _atKind),
+                  ("profile" .=) <$> _atProFile,
+                  ("account" .=) <$> _atAccount,
+                  ("webproperty" .=) <$> _atWebProperty,
+                  ("id" .=) <$> _atId])
+
+-- | JSON template for an Analytics AccountSummary. An AccountSummary is a
+-- lightweight tree comprised of properties\/profiles.
+--
+-- /See:/ 'accountSummary' smart constructor.
+data AccountSummary = AccountSummary
+    { _assKind          :: !Text
+    , _assWebProperties :: !(Maybe [WebPropertySummary])
+    , _assName          :: !(Maybe Text)
+    , _assId            :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'AccountSummary' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'assKind'
+--
+-- * 'assWebProperties'
+--
+-- * 'assName'
+--
+-- * 'assId'
+accountSummary
+    :: AccountSummary
+accountSummary =
+    AccountSummary
+    { _assKind = "analytics#accountSummary"
+    , _assWebProperties = Nothing
+    , _assName = Nothing
+    , _assId = Nothing
+    }
+
+-- | Resource type for Analytics AccountSummary.
+assKind :: Lens' AccountSummary Text
+assKind = lens _assKind (\ s a -> s{_assKind = a})
+
+-- | List of web properties under this account.
+assWebProperties :: Lens' AccountSummary [WebPropertySummary]
+assWebProperties
+  = lens _assWebProperties
+      (\ s a -> s{_assWebProperties = a})
+      . _Default
+      . _Coerce
+
+-- | Account name.
+assName :: Lens' AccountSummary (Maybe Text)
+assName = lens _assName (\ s a -> s{_assName = a})
+
+-- | Account ID.
+assId :: Lens' AccountSummary (Maybe Text)
+assId = lens _assId (\ s a -> s{_assId = a})
+
+instance FromJSON AccountSummary where
+        parseJSON
+          = withObject "AccountSummary"
+              (\ o ->
+                 AccountSummary <$>
+                   (o .:? "kind" .!= "analytics#accountSummary") <*>
+                     (o .:? "webProperties" .!= mempty)
+                     <*> (o .:? "name")
+                     <*> (o .:? "id"))
+
+instance ToJSON AccountSummary where
+        toJSON AccountSummary{..}
+          = object
+              (catMaybes
+                 [Just ("kind" .= _assKind),
+                  ("webProperties" .=) <$> _assWebProperties,
+                  ("name" .=) <$> _assName, ("id" .=) <$> _assId])
+
+-- | Real time data request query parameters.
+--
+-- /See:/ 'realtimeDataQuery' smart constructor.
+data RealtimeDataQuery = RealtimeDataQuery
+    { _rdqMetrics    :: !(Maybe [Text])
+    , _rdqFilters    :: !(Maybe Text)
+    , _rdqIds        :: !(Maybe Text)
+    , _rdqSort       :: !(Maybe [Text])
+    , _rdqDimensions :: !(Maybe Text)
+    , _rdqMaxResults :: !(Maybe (Textual Int32))
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'RealtimeDataQuery' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'rdqMetrics'
+--
+-- * 'rdqFilters'
+--
+-- * 'rdqIds'
+--
+-- * 'rdqSort'
+--
+-- * 'rdqDimensions'
+--
+-- * 'rdqMaxResults'
+realtimeDataQuery
+    :: RealtimeDataQuery
+realtimeDataQuery =
+    RealtimeDataQuery
+    { _rdqMetrics = Nothing
+    , _rdqFilters = Nothing
+    , _rdqIds = Nothing
+    , _rdqSort = Nothing
+    , _rdqDimensions = Nothing
+    , _rdqMaxResults = Nothing
+    }
+
+-- | List of real time metrics.
+rdqMetrics :: Lens' RealtimeDataQuery [Text]
+rdqMetrics
+  = lens _rdqMetrics (\ s a -> s{_rdqMetrics = a}) .
+      _Default
+      . _Coerce
+
+-- | Comma-separated list of dimension or metric filters.
+rdqFilters :: Lens' RealtimeDataQuery (Maybe Text)
+rdqFilters
+  = lens _rdqFilters (\ s a -> s{_rdqFilters = a})
+
+-- | Unique table ID.
+rdqIds :: Lens' RealtimeDataQuery (Maybe Text)
+rdqIds = lens _rdqIds (\ s a -> s{_rdqIds = a})
+
+-- | List of dimensions or metrics based on which real time data is sorted.
+rdqSort :: Lens' RealtimeDataQuery [Text]
+rdqSort
+  = lens _rdqSort (\ s a -> s{_rdqSort = a}) . _Default
+      . _Coerce
+
+-- | List of real time dimensions.
+rdqDimensions :: Lens' RealtimeDataQuery (Maybe Text)
+rdqDimensions
+  = lens _rdqDimensions
+      (\ s a -> s{_rdqDimensions = a})
+
+-- | Maximum results per page.
+rdqMaxResults :: Lens' RealtimeDataQuery (Maybe Int32)
+rdqMaxResults
+  = lens _rdqMaxResults
+      (\ s a -> s{_rdqMaxResults = a})
+      . mapping _Coerce
+
+instance FromJSON RealtimeDataQuery where
+        parseJSON
+          = withObject "RealtimeDataQuery"
+              (\ o ->
+                 RealtimeDataQuery <$>
+                   (o .:? "metrics" .!= mempty) <*> (o .:? "filters")
+                     <*> (o .:? "ids")
+                     <*> (o .:? "sort" .!= mempty)
+                     <*> (o .:? "dimensions")
+                     <*> (o .:? "max-results"))
+
+instance ToJSON RealtimeDataQuery where
+        toJSON RealtimeDataQuery{..}
+          = object
+              (catMaybes
+                 [("metrics" .=) <$> _rdqMetrics,
+                  ("filters" .=) <$> _rdqFilters,
+                  ("ids" .=) <$> _rdqIds, ("sort" .=) <$> _rdqSort,
+                  ("dimensions" .=) <$> _rdqDimensions,
+                  ("max-results" .=) <$> _rdqMaxResults])
+
+-- | Lists columns (dimensions and metrics) for a particular report type.
+--
+-- /See:/ 'columns' smart constructor.
+data Columns = Columns
+    { _colEtag           :: !(Maybe Text)
+    , _colKind           :: !Text
+    , _colItems          :: !(Maybe [Column])
+    , _colTotalResults   :: !(Maybe (Textual Int32))
+    , _colAttributeNames :: !(Maybe [Text])
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'Columns' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'colEtag'
+--
+-- * 'colKind'
+--
+-- * 'colItems'
+--
+-- * 'colTotalResults'
+--
+-- * 'colAttributeNames'
+columns
+    :: Columns
+columns =
+    Columns
+    { _colEtag = Nothing
+    , _colKind = "analytics#columns"
+    , _colItems = Nothing
+    , _colTotalResults = Nothing
+    , _colAttributeNames = Nothing
+    }
+
+-- | Etag of collection. This etag can be compared with the last response
+-- etag to check if response has changed.
+colEtag :: Lens' Columns (Maybe Text)
+colEtag = lens _colEtag (\ s a -> s{_colEtag = a})
+
+-- | Collection type.
+colKind :: Lens' Columns Text
+colKind = lens _colKind (\ s a -> s{_colKind = a})
+
+-- | List of columns for a report type.
+colItems :: Lens' Columns [Column]
+colItems
+  = lens _colItems (\ s a -> s{_colItems = a}) .
+      _Default
+      . _Coerce
+
+-- | Total number of columns returned in the response.
+colTotalResults :: Lens' Columns (Maybe Int32)
+colTotalResults
+  = lens _colTotalResults
+      (\ s a -> s{_colTotalResults = a})
+      . mapping _Coerce
+
+-- | List of attributes names returned by columns.
+colAttributeNames :: Lens' Columns [Text]
+colAttributeNames
+  = lens _colAttributeNames
+      (\ s a -> s{_colAttributeNames = a})
+      . _Default
+      . _Coerce
+
+instance FromJSON Columns where
+        parseJSON
+          = withObject "Columns"
+              (\ o ->
+                 Columns <$>
+                   (o .:? "etag") <*>
+                     (o .:? "kind" .!= "analytics#columns")
+                     <*> (o .:? "items" .!= mempty)
+                     <*> (o .:? "totalResults")
+                     <*> (o .:? "attributeNames" .!= mempty))
+
+instance ToJSON Columns where
+        toJSON Columns{..}
+          = object
+              (catMaybes
+                 [("etag" .=) <$> _colEtag, Just ("kind" .= _colKind),
+                  ("items" .=) <$> _colItems,
+                  ("totalResults" .=) <$> _colTotalResults,
+                  ("attributeNames" .=) <$> _colAttributeNames])
+
+-- | Details for the filter of the type LOWER.
+--
+-- /See:/ 'filterLowercaseDetails' smart constructor.
+data FilterLowercaseDetails = FilterLowercaseDetails
+    { _fldFieldIndex :: !(Maybe (Textual Int32))
+    , _fldField      :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'FilterLowercaseDetails' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'fldFieldIndex'
+--
+-- * 'fldField'
+filterLowercaseDetails
+    :: FilterLowercaseDetails
+filterLowercaseDetails =
+    FilterLowercaseDetails
+    { _fldFieldIndex = Nothing
+    , _fldField = Nothing
+    }
+
+-- | The Index of the custom dimension. Required if field is a
+-- CUSTOM_DIMENSION.
+fldFieldIndex :: Lens' FilterLowercaseDetails (Maybe Int32)
+fldFieldIndex
+  = lens _fldFieldIndex
+      (\ s a -> s{_fldFieldIndex = a})
+      . mapping _Coerce
+
+-- | Field to use in the filter.
+fldField :: Lens' FilterLowercaseDetails (Maybe Text)
+fldField = lens _fldField (\ s a -> s{_fldField = a})
+
+instance FromJSON FilterLowercaseDetails where
+        parseJSON
+          = withObject "FilterLowercaseDetails"
+              (\ o ->
+                 FilterLowercaseDetails <$>
+                   (o .:? "fieldIndex") <*> (o .:? "field"))
+
+instance ToJSON FilterLowercaseDetails where
+        toJSON FilterLowercaseDetails{..}
+          = object
+              (catMaybes
+                 [("fieldIndex" .=) <$> _fldFieldIndex,
+                  ("field" .=) <$> _fldField])
+
+-- | JSON template for an Analytics account filter.
+--
+-- /See:/ 'filter'' smart constructor.
+data Filter = Filter
+    { _filParentLink              :: !(Maybe FilterParentLink)
+    , _filAdvancedDetails         :: !(Maybe FilterAdvancedDetails)
+    , _filUppercaseDetails        :: !(Maybe FilterUppercaseDetails)
+    , _filLowercaseDetails        :: !(Maybe FilterLowercaseDetails)
+    , _filKind                    :: !Text
+    , _filCreated                 :: !(Maybe DateTime')
+    , _filIncludeDetails          :: !(Maybe FilterExpression)
+    , _filExcludeDetails          :: !(Maybe FilterExpression)
+    , _filSelfLink                :: !(Maybe Text)
+    , _filAccountId               :: !(Maybe Text)
+    , _filName                    :: !(Maybe Text)
+    , _filId                      :: !(Maybe Text)
+    , _filUpdated                 :: !(Maybe DateTime')
+    , _filType                    :: !(Maybe Text)
+    , _filSearchAndReplaceDetails :: !(Maybe FilterSearchAndReplaceDetails)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'Filter' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'filParentLink'
+--
+-- * 'filAdvancedDetails'
+--
+-- * 'filUppercaseDetails'
+--
+-- * 'filLowercaseDetails'
+--
+-- * 'filKind'
+--
+-- * 'filCreated'
+--
+-- * 'filIncludeDetails'
+--
+-- * 'filExcludeDetails'
+--
+-- * 'filSelfLink'
+--
+-- * 'filAccountId'
+--
+-- * 'filName'
+--
+-- * 'filId'
+--
+-- * 'filUpdated'
+--
+-- * 'filType'
+--
+-- * 'filSearchAndReplaceDetails'
+filter'
+    :: Filter
+filter' =
+    Filter
+    { _filParentLink = Nothing
+    , _filAdvancedDetails = Nothing
+    , _filUppercaseDetails = Nothing
+    , _filLowercaseDetails = Nothing
+    , _filKind = "analytics#filter"
+    , _filCreated = Nothing
+    , _filIncludeDetails = Nothing
+    , _filExcludeDetails = Nothing
+    , _filSelfLink = Nothing
+    , _filAccountId = Nothing
+    , _filName = Nothing
+    , _filId = Nothing
+    , _filUpdated = Nothing
+    , _filType = Nothing
+    , _filSearchAndReplaceDetails = Nothing
+    }
+
+-- | Parent link for this filter. Points to the account to which this filter
+-- belongs.
+filParentLink :: Lens' Filter (Maybe FilterParentLink)
+filParentLink
+  = lens _filParentLink
+      (\ s a -> s{_filParentLink = a})
+
+-- | Details for the filter of the type ADVANCED.
+filAdvancedDetails :: Lens' Filter (Maybe FilterAdvancedDetails)
+filAdvancedDetails
+  = lens _filAdvancedDetails
+      (\ s a -> s{_filAdvancedDetails = a})
+
+-- | Details for the filter of the type UPPER.
+filUppercaseDetails :: Lens' Filter (Maybe FilterUppercaseDetails)
+filUppercaseDetails
+  = lens _filUppercaseDetails
+      (\ s a -> s{_filUppercaseDetails = a})
+
+-- | Details for the filter of the type LOWER.
+filLowercaseDetails :: Lens' Filter (Maybe FilterLowercaseDetails)
+filLowercaseDetails
+  = lens _filLowercaseDetails
+      (\ s a -> s{_filLowercaseDetails = a})
+
+-- | Resource type for Analytics filter.
+filKind :: Lens' Filter Text
+filKind = lens _filKind (\ s a -> s{_filKind = a})
+
+-- | Time this filter was created.
+filCreated :: Lens' Filter (Maybe UTCTime)
+filCreated
+  = lens _filCreated (\ s a -> s{_filCreated = a}) .
+      mapping _DateTime
+
+-- | Details for the filter of the type INCLUDE.
+filIncludeDetails :: Lens' Filter (Maybe FilterExpression)
+filIncludeDetails
+  = lens _filIncludeDetails
+      (\ s a -> s{_filIncludeDetails = a})
+
+-- | Details for the filter of the type EXCLUDE.
+filExcludeDetails :: Lens' Filter (Maybe FilterExpression)
+filExcludeDetails
+  = lens _filExcludeDetails
+      (\ s a -> s{_filExcludeDetails = a})
+
+-- | Link for this filter.
+filSelfLink :: Lens' Filter (Maybe Text)
+filSelfLink
+  = lens _filSelfLink (\ s a -> s{_filSelfLink = a})
+
+-- | Account ID to which this filter belongs.
+filAccountId :: Lens' Filter (Maybe Text)
+filAccountId
+  = lens _filAccountId (\ s a -> s{_filAccountId = a})
+
+-- | Name of this filter.
+filName :: Lens' Filter (Maybe Text)
+filName = lens _filName (\ s a -> s{_filName = a})
+
+-- | Filter ID.
+filId :: Lens' Filter (Maybe Text)
+filId = lens _filId (\ s a -> s{_filId = a})
+
+-- | Time this filter was last modified.
+filUpdated :: Lens' Filter (Maybe UTCTime)
+filUpdated
+  = lens _filUpdated (\ s a -> s{_filUpdated = a}) .
+      mapping _DateTime
+
+-- | Type of this filter. Possible values are INCLUDE, EXCLUDE, LOWERCASE,
+-- UPPERCASE, SEARCH_AND_REPLACE and ADVANCED.
+filType :: Lens' Filter (Maybe Text)
+filType = lens _filType (\ s a -> s{_filType = a})
+
+-- | Details for the filter of the type SEARCH_AND_REPLACE.
+filSearchAndReplaceDetails :: Lens' Filter (Maybe FilterSearchAndReplaceDetails)
+filSearchAndReplaceDetails
+  = lens _filSearchAndReplaceDetails
+      (\ s a -> s{_filSearchAndReplaceDetails = a})
+
+instance FromJSON Filter where
+        parseJSON
+          = withObject "Filter"
+              (\ o ->
+                 Filter <$>
+                   (o .:? "parentLink") <*> (o .:? "advancedDetails")
+                     <*> (o .:? "uppercaseDetails")
+                     <*> (o .:? "lowercaseDetails")
+                     <*> (o .:? "kind" .!= "analytics#filter")
+                     <*> (o .:? "created")
+                     <*> (o .:? "includeDetails")
+                     <*> (o .:? "excludeDetails")
+                     <*> (o .:? "selfLink")
+                     <*> (o .:? "accountId")
+                     <*> (o .:? "name")
+                     <*> (o .:? "id")
+                     <*> (o .:? "updated")
+                     <*> (o .:? "type")
+                     <*> (o .:? "searchAndReplaceDetails"))
+
+instance ToJSON Filter where
+        toJSON Filter{..}
+          = object
+              (catMaybes
+                 [("parentLink" .=) <$> _filParentLink,
+                  ("advancedDetails" .=) <$> _filAdvancedDetails,
+                  ("uppercaseDetails" .=) <$> _filUppercaseDetails,
+                  ("lowercaseDetails" .=) <$> _filLowercaseDetails,
+                  Just ("kind" .= _filKind),
+                  ("created" .=) <$> _filCreated,
+                  ("includeDetails" .=) <$> _filIncludeDetails,
+                  ("excludeDetails" .=) <$> _filExcludeDetails,
+                  ("selfLink" .=) <$> _filSelfLink,
+                  ("accountId" .=) <$> _filAccountId,
+                  ("name" .=) <$> _filName, ("id" .=) <$> _filId,
+                  ("updated" .=) <$> _filUpdated,
+                  ("type" .=) <$> _filType,
+                  ("searchAndReplaceDetails" .=) <$>
+                    _filSearchAndReplaceDetails])
+
+-- | Upload collection lists Analytics uploads to which the user has access.
+-- Each custom data source can have a set of uploads. Each resource in the
+-- upload collection corresponds to a single Analytics data upload.
+--
+-- /See:/ 'uploads' smart constructor.
+data Uploads = Uploads
+    { _uplNextLink     :: !(Maybe Text)
+    , _uplItemsPerPage :: !(Maybe (Textual Int32))
+    , _uplKind         :: !Text
+    , _uplItems        :: !(Maybe [Upload])
+    , _uplTotalResults :: !(Maybe (Textual Int32))
+    , _uplStartIndex   :: !(Maybe (Textual Int32))
+    , _uplPreviousLink :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'Uploads' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'uplNextLink'
+--
+-- * 'uplItemsPerPage'
+--
+-- * 'uplKind'
+--
+-- * 'uplItems'
+--
+-- * 'uplTotalResults'
+--
+-- * 'uplStartIndex'
+--
+-- * 'uplPreviousLink'
+uploads
+    :: Uploads
+uploads =
+    Uploads
+    { _uplNextLink = Nothing
+    , _uplItemsPerPage = Nothing
+    , _uplKind = "analytics#uploads"
+    , _uplItems = Nothing
+    , _uplTotalResults = Nothing
+    , _uplStartIndex = Nothing
+    , _uplPreviousLink = Nothing
+    }
+
+-- | Link to next page for this upload collection.
+uplNextLink :: Lens' Uploads (Maybe Text)
+uplNextLink
+  = lens _uplNextLink (\ s a -> s{_uplNextLink = a})
+
+-- | The maximum number of resources the response can contain, regardless of
+-- the actual number of resources returned. Its value ranges from 1 to 1000
+-- with a value of 1000 by default, or otherwise specified by the
+-- max-results query parameter.
+uplItemsPerPage :: Lens' Uploads (Maybe Int32)
+uplItemsPerPage
+  = lens _uplItemsPerPage
+      (\ s a -> s{_uplItemsPerPage = a})
+      . mapping _Coerce
+
+-- | Collection type.
+uplKind :: Lens' Uploads Text
+uplKind = lens _uplKind (\ s a -> s{_uplKind = a})
+
+-- | A list of uploads.
+uplItems :: Lens' Uploads [Upload]
+uplItems
+  = lens _uplItems (\ s a -> s{_uplItems = a}) .
+      _Default
+      . _Coerce
+
+-- | The total number of results for the query, regardless of the number of
+-- resources in the result.
+uplTotalResults :: Lens' Uploads (Maybe Int32)
+uplTotalResults
+  = lens _uplTotalResults
+      (\ s a -> s{_uplTotalResults = a})
+      . mapping _Coerce
+
+-- | The starting index of the resources, which is 1 by default or otherwise
+-- specified by the start-index query parameter.
+uplStartIndex :: Lens' Uploads (Maybe Int32)
+uplStartIndex
+  = lens _uplStartIndex
+      (\ s a -> s{_uplStartIndex = a})
+      . mapping _Coerce
+
+-- | Link to previous page for this upload collection.
+uplPreviousLink :: Lens' Uploads (Maybe Text)
+uplPreviousLink
+  = lens _uplPreviousLink
+      (\ s a -> s{_uplPreviousLink = a})
+
+instance FromJSON Uploads where
+        parseJSON
+          = withObject "Uploads"
+              (\ o ->
+                 Uploads <$>
+                   (o .:? "nextLink") <*> (o .:? "itemsPerPage") <*>
+                     (o .:? "kind" .!= "analytics#uploads")
+                     <*> (o .:? "items" .!= mempty)
+                     <*> (o .:? "totalResults")
+                     <*> (o .:? "startIndex")
+                     <*> (o .:? "previousLink"))
+
+instance ToJSON Uploads where
+        toJSON Uploads{..}
+          = object
+              (catMaybes
+                 [("nextLink" .=) <$> _uplNextLink,
+                  ("itemsPerPage" .=) <$> _uplItemsPerPage,
+                  Just ("kind" .= _uplKind),
+                  ("items" .=) <$> _uplItems,
+                  ("totalResults" .=) <$> _uplTotalResults,
+                  ("startIndex" .=) <$> _uplStartIndex,
+                  ("previousLink" .=) <$> _uplPreviousLink])
+
+-- | A custom dimension collection lists Analytics custom dimensions to which
+-- the user has access. Each resource in the collection corresponds to a
+-- single Analytics custom dimension.
+--
+-- /See:/ 'customDimensions' smart constructor.
+data CustomDimensions = CustomDimensions
+    { _cdNextLink     :: !(Maybe Text)
+    , _cdItemsPerPage :: !(Maybe (Textual Int32))
+    , _cdKind         :: !Text
+    , _cdUsername     :: !(Maybe Text)
+    , _cdItems        :: !(Maybe [CustomDimension])
+    , _cdTotalResults :: !(Maybe (Textual Int32))
+    , _cdStartIndex   :: !(Maybe (Textual Int32))
+    , _cdPreviousLink :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'CustomDimensions' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'cdNextLink'
+--
+-- * 'cdItemsPerPage'
+--
+-- * 'cdKind'
+--
+-- * 'cdUsername'
+--
+-- * 'cdItems'
+--
+-- * 'cdTotalResults'
+--
+-- * 'cdStartIndex'
+--
+-- * 'cdPreviousLink'
+customDimensions
+    :: CustomDimensions
+customDimensions =
+    CustomDimensions
+    { _cdNextLink = Nothing
+    , _cdItemsPerPage = Nothing
+    , _cdKind = "analytics#customDimensions"
+    , _cdUsername = Nothing
+    , _cdItems = Nothing
+    , _cdTotalResults = Nothing
+    , _cdStartIndex = Nothing
+    , _cdPreviousLink = Nothing
+    }
+
+-- | Link to next page for this custom dimension collection.
+cdNextLink :: Lens' CustomDimensions (Maybe Text)
+cdNextLink
+  = lens _cdNextLink (\ s a -> s{_cdNextLink = a})
+
+-- | The maximum number of resources the response can contain, regardless of
+-- the actual number of resources returned. Its value ranges from 1 to 1000
+-- with a value of 1000 by default, or otherwise specified by the
+-- max-results query parameter.
+cdItemsPerPage :: Lens' CustomDimensions (Maybe Int32)
+cdItemsPerPage
+  = lens _cdItemsPerPage
+      (\ s a -> s{_cdItemsPerPage = a})
+      . mapping _Coerce
+
+-- | Collection type.
+cdKind :: Lens' CustomDimensions Text
+cdKind = lens _cdKind (\ s a -> s{_cdKind = a})
+
+-- | Email ID of the authenticated user
+cdUsername :: Lens' CustomDimensions (Maybe Text)
+cdUsername
+  = lens _cdUsername (\ s a -> s{_cdUsername = a})
+
+-- | Collection of custom dimensions.
+cdItems :: Lens' CustomDimensions [CustomDimension]
+cdItems
+  = lens _cdItems (\ s a -> s{_cdItems = a}) . _Default
+      . _Coerce
+
+-- | The total number of results for the query, regardless of the number of
+-- results in the response.
+cdTotalResults :: Lens' CustomDimensions (Maybe Int32)
+cdTotalResults
+  = lens _cdTotalResults
+      (\ s a -> s{_cdTotalResults = a})
+      . mapping _Coerce
+
+-- | The starting index of the resources, which is 1 by default or otherwise
+-- specified by the start-index query parameter.
+cdStartIndex :: Lens' CustomDimensions (Maybe Int32)
+cdStartIndex
+  = lens _cdStartIndex (\ s a -> s{_cdStartIndex = a})
+      . mapping _Coerce
+
+-- | Link to previous page for this custom dimension collection.
+cdPreviousLink :: Lens' CustomDimensions (Maybe Text)
+cdPreviousLink
+  = lens _cdPreviousLink
+      (\ s a -> s{_cdPreviousLink = a})
+
+instance FromJSON CustomDimensions where
+        parseJSON
+          = withObject "CustomDimensions"
+              (\ o ->
+                 CustomDimensions <$>
+                   (o .:? "nextLink") <*> (o .:? "itemsPerPage") <*>
+                     (o .:? "kind" .!= "analytics#customDimensions")
+                     <*> (o .:? "username")
+                     <*> (o .:? "items" .!= mempty)
+                     <*> (o .:? "totalResults")
+                     <*> (o .:? "startIndex")
+                     <*> (o .:? "previousLink"))
+
+instance ToJSON CustomDimensions where
+        toJSON CustomDimensions{..}
+          = object
+              (catMaybes
+                 [("nextLink" .=) <$> _cdNextLink,
+                  ("itemsPerPage" .=) <$> _cdItemsPerPage,
+                  Just ("kind" .= _cdKind),
+                  ("username" .=) <$> _cdUsername,
+                  ("items" .=) <$> _cdItems,
+                  ("totalResults" .=) <$> _cdTotalResults,
+                  ("startIndex" .=) <$> _cdStartIndex,
+                  ("previousLink" .=) <$> _cdPreviousLink])
+
+-- | An segment collection lists Analytics segments that the user has access
+-- to. Each resource in the collection corresponds to a single Analytics
+-- segment.
+--
+-- /See:/ 'segments' smart constructor.
+data Segments = Segments
+    { _sNextLink     :: !(Maybe Text)
+    , _sItemsPerPage :: !(Maybe (Textual Int32))
+    , _sKind         :: !Text
+    , _sUsername     :: !(Maybe Text)
+    , _sItems        :: !(Maybe [Segment])
+    , _sTotalResults :: !(Maybe (Textual Int32))
+    , _sStartIndex   :: !(Maybe (Textual Int32))
+    , _sPreviousLink :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'Segments' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'sNextLink'
+--
+-- * 'sItemsPerPage'
+--
+-- * 'sKind'
+--
+-- * 'sUsername'
+--
+-- * 'sItems'
+--
+-- * 'sTotalResults'
+--
+-- * 'sStartIndex'
+--
+-- * 'sPreviousLink'
+segments
+    :: Segments
+segments =
+    Segments
+    { _sNextLink = Nothing
+    , _sItemsPerPage = Nothing
+    , _sKind = "analytics#segments"
+    , _sUsername = Nothing
+    , _sItems = Nothing
+    , _sTotalResults = Nothing
+    , _sStartIndex = Nothing
+    , _sPreviousLink = Nothing
+    }
+
+-- | Link to next page for this segment collection.
+sNextLink :: Lens' Segments (Maybe Text)
+sNextLink
+  = lens _sNextLink (\ s a -> s{_sNextLink = a})
+
+-- | The maximum number of resources the response can contain, regardless of
+-- the actual number of resources returned. Its value ranges from 1 to 1000
+-- with a value of 1000 by default, or otherwise specified by the
+-- max-results query parameter.
+sItemsPerPage :: Lens' Segments (Maybe Int32)
+sItemsPerPage
+  = lens _sItemsPerPage
+      (\ s a -> s{_sItemsPerPage = a})
+      . mapping _Coerce
+
+-- | Collection type for segments.
+sKind :: Lens' Segments Text
+sKind = lens _sKind (\ s a -> s{_sKind = a})
+
+-- | Email ID of the authenticated user
+sUsername :: Lens' Segments (Maybe Text)
+sUsername
+  = lens _sUsername (\ s a -> s{_sUsername = a})
+
+-- | A list of segments.
+sItems :: Lens' Segments [Segment]
+sItems
+  = lens _sItems (\ s a -> s{_sItems = a}) . _Default .
+      _Coerce
+
+-- | The total number of results for the query, regardless of the number of
+-- results in the response.
+sTotalResults :: Lens' Segments (Maybe Int32)
+sTotalResults
+  = lens _sTotalResults
+      (\ s a -> s{_sTotalResults = a})
+      . mapping _Coerce
+
+-- | The starting index of the resources, which is 1 by default or otherwise
+-- specified by the start-index query parameter.
+sStartIndex :: Lens' Segments (Maybe Int32)
+sStartIndex
+  = lens _sStartIndex (\ s a -> s{_sStartIndex = a}) .
+      mapping _Coerce
+
+-- | Link to previous page for this segment collection.
+sPreviousLink :: Lens' Segments (Maybe Text)
+sPreviousLink
+  = lens _sPreviousLink
+      (\ s a -> s{_sPreviousLink = a})
+
+instance FromJSON Segments where
+        parseJSON
+          = withObject "Segments"
+              (\ o ->
+                 Segments <$>
+                   (o .:? "nextLink") <*> (o .:? "itemsPerPage") <*>
+                     (o .:? "kind" .!= "analytics#segments")
+                     <*> (o .:? "username")
+                     <*> (o .:? "items" .!= mempty)
+                     <*> (o .:? "totalResults")
+                     <*> (o .:? "startIndex")
+                     <*> (o .:? "previousLink"))
+
+instance ToJSON Segments where
+        toJSON Segments{..}
+          = object
+              (catMaybes
+                 [("nextLink" .=) <$> _sNextLink,
+                  ("itemsPerPage" .=) <$> _sItemsPerPage,
+                  Just ("kind" .= _sKind),
+                  ("username" .=) <$> _sUsername,
+                  ("items" .=) <$> _sItems,
+                  ("totalResults" .=) <$> _sTotalResults,
+                  ("startIndex" .=) <$> _sStartIndex,
+                  ("previousLink" .=) <$> _sPreviousLink])
+
+--
+-- /See:/ 'gaDataDataTable' smart constructor.
+data GaDataDataTable = GaDataDataTable
+    { _gddtCols :: !(Maybe [GaDataDataTableColsItem])
+    , _gddtRows :: !(Maybe [GaDataDataTableRowsItem])
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'GaDataDataTable' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'gddtCols'
+--
+-- * 'gddtRows'
+gaDataDataTable
+    :: GaDataDataTable
+gaDataDataTable =
+    GaDataDataTable
+    { _gddtCols = Nothing
+    , _gddtRows = Nothing
+    }
+
+gddtCols :: Lens' GaDataDataTable [GaDataDataTableColsItem]
+gddtCols
+  = lens _gddtCols (\ s a -> s{_gddtCols = a}) .
+      _Default
+      . _Coerce
+
+gddtRows :: Lens' GaDataDataTable [GaDataDataTableRowsItem]
+gddtRows
+  = lens _gddtRows (\ s a -> s{_gddtRows = a}) .
+      _Default
+      . _Coerce
+
+instance FromJSON GaDataDataTable where
+        parseJSON
+          = withObject "GaDataDataTable"
+              (\ o ->
+                 GaDataDataTable <$>
+                   (o .:? "cols" .!= mempty) <*>
+                     (o .:? "rows" .!= mempty))
+
+instance ToJSON GaDataDataTable where
+        toJSON GaDataDataTable{..}
+          = object
+              (catMaybes
+                 [("cols" .=) <$> _gddtCols,
+                  ("rows" .=) <$> _gddtRows])
+
+-- | Web property being linked.
+--
+-- /See:/ 'entityAdWordsLinkEntity' smart constructor.
+newtype EntityAdWordsLinkEntity = EntityAdWordsLinkEntity
+    { _eawleWebPropertyRef :: Maybe WebPropertyRef
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'EntityAdWordsLinkEntity' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'eawleWebPropertyRef'
+entityAdWordsLinkEntity
+    :: EntityAdWordsLinkEntity
+entityAdWordsLinkEntity =
+    EntityAdWordsLinkEntity
+    { _eawleWebPropertyRef = Nothing
+    }
+
+eawleWebPropertyRef :: Lens' EntityAdWordsLinkEntity (Maybe WebPropertyRef)
+eawleWebPropertyRef
+  = lens _eawleWebPropertyRef
+      (\ s a -> s{_eawleWebPropertyRef = a})
+
+instance FromJSON EntityAdWordsLinkEntity where
+        parseJSON
+          = withObject "EntityAdWordsLinkEntity"
+              (\ o ->
+                 EntityAdWordsLinkEntity <$> (o .:? "webPropertyRef"))
+
+instance ToJSON EntityAdWordsLinkEntity where
+        toJSON EntityAdWordsLinkEntity{..}
+          = object
+              (catMaybes
+                 [("webPropertyRef" .=) <$> _eawleWebPropertyRef])
+
+-- | Details for the goal of the type URL_DESTINATION.
+--
+-- /See:/ 'goalURLDestinationDetails' smart constructor.
+data GoalURLDestinationDetails = GoalURLDestinationDetails
+    { _guddURL               :: !(Maybe Text)
+    , _guddMatchType         :: !(Maybe Text)
+    , _guddSteps             :: !(Maybe [GoalURLDestinationDetailsStepsItem])
+    , _guddCaseSensitive     :: !(Maybe Bool)
+    , _guddFirstStepRequired :: !(Maybe Bool)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'GoalURLDestinationDetails' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'guddURL'
+--
+-- * 'guddMatchType'
+--
+-- * 'guddSteps'
+--
+-- * 'guddCaseSensitive'
+--
+-- * 'guddFirstStepRequired'
+goalURLDestinationDetails
+    :: GoalURLDestinationDetails
+goalURLDestinationDetails =
+    GoalURLDestinationDetails
+    { _guddURL = Nothing
+    , _guddMatchType = Nothing
+    , _guddSteps = Nothing
+    , _guddCaseSensitive = Nothing
+    , _guddFirstStepRequired = Nothing
+    }
+
+-- | URL for this goal.
+guddURL :: Lens' GoalURLDestinationDetails (Maybe Text)
+guddURL = lens _guddURL (\ s a -> s{_guddURL = a})
+
+-- | Match type for the goal URL. Possible values are HEAD, EXACT, or REGEX.
+guddMatchType :: Lens' GoalURLDestinationDetails (Maybe Text)
+guddMatchType
+  = lens _guddMatchType
+      (\ s a -> s{_guddMatchType = a})
+
+-- | List of steps configured for this goal funnel.
+guddSteps :: Lens' GoalURLDestinationDetails [GoalURLDestinationDetailsStepsItem]
+guddSteps
+  = lens _guddSteps (\ s a -> s{_guddSteps = a}) .
+      _Default
+      . _Coerce
+
+-- | Determines if the goal URL must exactly match the capitalization of
+-- visited URLs.
+guddCaseSensitive :: Lens' GoalURLDestinationDetails (Maybe Bool)
+guddCaseSensitive
+  = lens _guddCaseSensitive
+      (\ s a -> s{_guddCaseSensitive = a})
+
+-- | Determines if the first step in this goal is required.
+guddFirstStepRequired :: Lens' GoalURLDestinationDetails (Maybe Bool)
+guddFirstStepRequired
+  = lens _guddFirstStepRequired
+      (\ s a -> s{_guddFirstStepRequired = a})
+
+instance FromJSON GoalURLDestinationDetails where
+        parseJSON
+          = withObject "GoalURLDestinationDetails"
+              (\ o ->
+                 GoalURLDestinationDetails <$>
+                   (o .:? "url") <*> (o .:? "matchType") <*>
+                     (o .:? "steps" .!= mempty)
+                     <*> (o .:? "caseSensitive")
+                     <*> (o .:? "firstStepRequired"))
+
+instance ToJSON GoalURLDestinationDetails where
+        toJSON GoalURLDestinationDetails{..}
+          = object
+              (catMaybes
+                 [("url" .=) <$> _guddURL,
+                  ("matchType" .=) <$> _guddMatchType,
+                  ("steps" .=) <$> _guddSteps,
+                  ("caseSensitive" .=) <$> _guddCaseSensitive,
+                  ("firstStepRequired" .=) <$> _guddFirstStepRequired])
+
+-- | A profile filter link collection lists profile filter links between
+-- profiles and filters. Each resource in the collection corresponds to a
+-- profile filter link.
+--
+-- /See:/ 'proFileFilterLinks' smart constructor.
+data ProFileFilterLinks = ProFileFilterLinks
+    { _pfflNextLink     :: !(Maybe Text)
+    , _pfflItemsPerPage :: !(Maybe (Textual Int32))
+    , _pfflKind         :: !Text
+    , _pfflUsername     :: !(Maybe Text)
+    , _pfflItems        :: !(Maybe [ProFileFilterLink])
+    , _pfflTotalResults :: !(Maybe (Textual Int32))
+    , _pfflStartIndex   :: !(Maybe (Textual Int32))
+    , _pfflPreviousLink :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ProFileFilterLinks' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'pfflNextLink'
+--
+-- * 'pfflItemsPerPage'
+--
+-- * 'pfflKind'
+--
+-- * 'pfflUsername'
+--
+-- * 'pfflItems'
+--
+-- * 'pfflTotalResults'
+--
+-- * 'pfflStartIndex'
+--
+-- * 'pfflPreviousLink'
+proFileFilterLinks
+    :: ProFileFilterLinks
+proFileFilterLinks =
+    ProFileFilterLinks
+    { _pfflNextLink = Nothing
+    , _pfflItemsPerPage = Nothing
+    , _pfflKind = "analytics#profileFilterLinks"
+    , _pfflUsername = Nothing
+    , _pfflItems = Nothing
+    , _pfflTotalResults = Nothing
+    , _pfflStartIndex = Nothing
+    , _pfflPreviousLink = Nothing
+    }
+
+-- | Link to next page for this profile filter link collection.
+pfflNextLink :: Lens' ProFileFilterLinks (Maybe Text)
+pfflNextLink
+  = lens _pfflNextLink (\ s a -> s{_pfflNextLink = a})
+
+-- | The maximum number of resources the response can contain, regardless of
+-- the actual number of resources returned. Its value ranges from 1 to
+-- 1,000 with a value of 1000 by default, or otherwise specified by the
+-- max-results query parameter.
+pfflItemsPerPage :: Lens' ProFileFilterLinks (Maybe Int32)
+pfflItemsPerPage
+  = lens _pfflItemsPerPage
+      (\ s a -> s{_pfflItemsPerPage = a})
+      . mapping _Coerce
+
+-- | Collection type.
+pfflKind :: Lens' ProFileFilterLinks Text
+pfflKind = lens _pfflKind (\ s a -> s{_pfflKind = a})
+
+-- | Email ID of the authenticated user
+pfflUsername :: Lens' ProFileFilterLinks (Maybe Text)
+pfflUsername
+  = lens _pfflUsername (\ s a -> s{_pfflUsername = a})
+
+-- | A list of profile filter links.
+pfflItems :: Lens' ProFileFilterLinks [ProFileFilterLink]
+pfflItems
+  = lens _pfflItems (\ s a -> s{_pfflItems = a}) .
+      _Default
+      . _Coerce
+
+-- | The total number of results for the query, regardless of the number of
+-- results in the response.
+pfflTotalResults :: Lens' ProFileFilterLinks (Maybe Int32)
+pfflTotalResults
+  = lens _pfflTotalResults
+      (\ s a -> s{_pfflTotalResults = a})
+      . mapping _Coerce
+
+-- | The starting index of the resources, which is 1 by default or otherwise
+-- specified by the start-index query parameter.
+pfflStartIndex :: Lens' ProFileFilterLinks (Maybe Int32)
+pfflStartIndex
+  = lens _pfflStartIndex
+      (\ s a -> s{_pfflStartIndex = a})
+      . mapping _Coerce
+
+-- | Link to previous page for this profile filter link collection.
+pfflPreviousLink :: Lens' ProFileFilterLinks (Maybe Text)
+pfflPreviousLink
+  = lens _pfflPreviousLink
+      (\ s a -> s{_pfflPreviousLink = a})
+
+instance FromJSON ProFileFilterLinks where
+        parseJSON
+          = withObject "ProFileFilterLinks"
+              (\ o ->
+                 ProFileFilterLinks <$>
+                   (o .:? "nextLink") <*> (o .:? "itemsPerPage") <*>
+                     (o .:? "kind" .!= "analytics#profileFilterLinks")
+                     <*> (o .:? "username")
+                     <*> (o .:? "items" .!= mempty)
+                     <*> (o .:? "totalResults")
+                     <*> (o .:? "startIndex")
+                     <*> (o .:? "previousLink"))
+
+instance ToJSON ProFileFilterLinks where
+        toJSON ProFileFilterLinks{..}
+          = object
+              (catMaybes
+                 [("nextLink" .=) <$> _pfflNextLink,
+                  ("itemsPerPage" .=) <$> _pfflItemsPerPage,
+                  Just ("kind" .= _pfflKind),
+                  ("username" .=) <$> _pfflUsername,
+                  ("items" .=) <$> _pfflItems,
+                  ("totalResults" .=) <$> _pfflTotalResults,
+                  ("startIndex" .=) <$> _pfflStartIndex,
+                  ("previousLink" .=) <$> _pfflPreviousLink])
+
+-- | Parent link for this web property. Points to the account to which this
+-- web property belongs.
+--
+-- /See:/ 'webPropertyParentLink' smart constructor.
+data WebPropertyParentLink = WebPropertyParentLink
+    { _wpplHref :: !(Maybe Text)
+    , _wpplType :: !Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'WebPropertyParentLink' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'wpplHref'
+--
+-- * 'wpplType'
+webPropertyParentLink
+    :: WebPropertyParentLink
+webPropertyParentLink =
+    WebPropertyParentLink
+    { _wpplHref = Nothing
+    , _wpplType = "analytics#account"
+    }
+
+-- | Link to the account for this web property.
+wpplHref :: Lens' WebPropertyParentLink (Maybe Text)
+wpplHref = lens _wpplHref (\ s a -> s{_wpplHref = a})
+
+-- | Type of the parent link. Its value is \"analytics#account\".
+wpplType :: Lens' WebPropertyParentLink Text
+wpplType = lens _wpplType (\ s a -> s{_wpplType = a})
+
+instance FromJSON WebPropertyParentLink where
+        parseJSON
+          = withObject "WebPropertyParentLink"
+              (\ o ->
+                 WebPropertyParentLink <$>
+                   (o .:? "href") <*>
+                     (o .:? "type" .!= "analytics#account"))
+
+instance ToJSON WebPropertyParentLink where
+        toJSON WebPropertyParentLink{..}
+          = object
+              (catMaybes
+                 [("href" .=) <$> _wpplHref,
+                  Just ("type" .= _wpplType)])
+
+-- | Information for the view (profile), for which the Analytics data was
+-- requested.
+--
+-- /See:/ 'gaDataProFileInfo' smart constructor.
+data GaDataProFileInfo = GaDataProFileInfo
+    { _gdpfiWebPropertyId         :: !(Maybe Text)
+    , _gdpfiProFileId             :: !(Maybe Text)
+    , _gdpfiProFileName           :: !(Maybe Text)
+    , _gdpfiAccountId             :: !(Maybe Text)
+    , _gdpfiInternalWebPropertyId :: !(Maybe Text)
+    , _gdpfiTableId               :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'GaDataProFileInfo' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'gdpfiWebPropertyId'
+--
+-- * 'gdpfiProFileId'
+--
+-- * 'gdpfiProFileName'
+--
+-- * 'gdpfiAccountId'
+--
+-- * 'gdpfiInternalWebPropertyId'
+--
+-- * 'gdpfiTableId'
+gaDataProFileInfo
+    :: GaDataProFileInfo
+gaDataProFileInfo =
+    GaDataProFileInfo
+    { _gdpfiWebPropertyId = Nothing
+    , _gdpfiProFileId = Nothing
+    , _gdpfiProFileName = Nothing
+    , _gdpfiAccountId = Nothing
+    , _gdpfiInternalWebPropertyId = Nothing
+    , _gdpfiTableId = Nothing
+    }
+
+-- | Web Property ID to which this view (profile) belongs.
+gdpfiWebPropertyId :: Lens' GaDataProFileInfo (Maybe Text)
+gdpfiWebPropertyId
+  = lens _gdpfiWebPropertyId
+      (\ s a -> s{_gdpfiWebPropertyId = a})
+
+-- | View (Profile) ID.
+gdpfiProFileId :: Lens' GaDataProFileInfo (Maybe Text)
+gdpfiProFileId
+  = lens _gdpfiProFileId
+      (\ s a -> s{_gdpfiProFileId = a})
+
+-- | View (Profile) name.
+gdpfiProFileName :: Lens' GaDataProFileInfo (Maybe Text)
+gdpfiProFileName
+  = lens _gdpfiProFileName
+      (\ s a -> s{_gdpfiProFileName = a})
+
+-- | Account ID to which this view (profile) belongs.
+gdpfiAccountId :: Lens' GaDataProFileInfo (Maybe Text)
+gdpfiAccountId
+  = lens _gdpfiAccountId
+      (\ s a -> s{_gdpfiAccountId = a})
+
+-- | Internal ID for the web property to which this view (profile) belongs.
+gdpfiInternalWebPropertyId :: Lens' GaDataProFileInfo (Maybe Text)
+gdpfiInternalWebPropertyId
+  = lens _gdpfiInternalWebPropertyId
+      (\ s a -> s{_gdpfiInternalWebPropertyId = a})
+
+-- | Table ID for view (profile).
+gdpfiTableId :: Lens' GaDataProFileInfo (Maybe Text)
+gdpfiTableId
+  = lens _gdpfiTableId (\ s a -> s{_gdpfiTableId = a})
+
+instance FromJSON GaDataProFileInfo where
+        parseJSON
+          = withObject "GaDataProFileInfo"
+              (\ o ->
+                 GaDataProFileInfo <$>
+                   (o .:? "webPropertyId") <*> (o .:? "profileId") <*>
+                     (o .:? "profileName")
+                     <*> (o .:? "accountId")
+                     <*> (o .:? "internalWebPropertyId")
+                     <*> (o .:? "tableId"))
+
+instance ToJSON GaDataProFileInfo where
+        toJSON GaDataProFileInfo{..}
+          = object
+              (catMaybes
+                 [("webPropertyId" .=) <$> _gdpfiWebPropertyId,
+                  ("profileId" .=) <$> _gdpfiProFileId,
+                  ("profileName" .=) <$> _gdpfiProFileName,
+                  ("accountId" .=) <$> _gdpfiAccountId,
+                  ("internalWebPropertyId" .=) <$>
+                    _gdpfiInternalWebPropertyId,
+                  ("tableId" .=) <$> _gdpfiTableId])
+
+-- | Metadata returned for an upload operation.
+--
+-- /See:/ 'upload' smart constructor.
+data Upload = Upload
+    { _uuStatus             :: !(Maybe Text)
+    , _uuKind               :: !Text
+    , _uuCustomDataSourceId :: !(Maybe Text)
+    , _uuAccountId          :: !(Maybe (Textual Int64))
+    , _uuId                 :: !(Maybe Text)
+    , _uuErrors             :: !(Maybe [Text])
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'Upload' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'uuStatus'
+--
+-- * 'uuKind'
+--
+-- * 'uuCustomDataSourceId'
+--
+-- * 'uuAccountId'
+--
+-- * 'uuId'
+--
+-- * 'uuErrors'
+upload
+    :: Upload
+upload =
+    Upload
+    { _uuStatus = Nothing
+    , _uuKind = "analytics#upload"
+    , _uuCustomDataSourceId = Nothing
+    , _uuAccountId = Nothing
+    , _uuId = Nothing
+    , _uuErrors = Nothing
+    }
+
+-- | Upload status. Possible values: PENDING, COMPLETED, FAILED, DELETING,
+-- DELETED.
+uuStatus :: Lens' Upload (Maybe Text)
+uuStatus = lens _uuStatus (\ s a -> s{_uuStatus = a})
+
+-- | Resource type for Analytics upload.
+uuKind :: Lens' Upload Text
+uuKind = lens _uuKind (\ s a -> s{_uuKind = a})
+
+-- | Custom data source Id to which this data import belongs.
+uuCustomDataSourceId :: Lens' Upload (Maybe Text)
+uuCustomDataSourceId
+  = lens _uuCustomDataSourceId
+      (\ s a -> s{_uuCustomDataSourceId = a})
+
+-- | Account Id to which this upload belongs.
+uuAccountId :: Lens' Upload (Maybe Int64)
+uuAccountId
+  = lens _uuAccountId (\ s a -> s{_uuAccountId = a}) .
+      mapping _Coerce
+
+-- | A unique ID for this upload.
+uuId :: Lens' Upload (Maybe Text)
+uuId = lens _uuId (\ s a -> s{_uuId = a})
+
+-- | Data import errors collection.
+uuErrors :: Lens' Upload [Text]
+uuErrors
+  = lens _uuErrors (\ s a -> s{_uuErrors = a}) .
+      _Default
+      . _Coerce
+
+instance FromJSON Upload where
+        parseJSON
+          = withObject "Upload"
+              (\ o ->
+                 Upload <$>
+                   (o .:? "status") <*>
+                     (o .:? "kind" .!= "analytics#upload")
+                     <*> (o .:? "customDataSourceId")
+                     <*> (o .:? "accountId")
+                     <*> (o .:? "id")
+                     <*> (o .:? "errors" .!= mempty))
+
+instance ToJSON Upload where
+        toJSON Upload{..}
+          = object
+              (catMaybes
+                 [("status" .=) <$> _uuStatus,
+                  Just ("kind" .= _uuKind),
+                  ("customDataSourceId" .=) <$> _uuCustomDataSourceId,
+                  ("accountId" .=) <$> _uuAccountId,
+                  ("id" .=) <$> _uuId, ("errors" .=) <$> _uuErrors])
+
+-- | JSON template for Analytics Custom Dimension.
+--
+-- /See:/ 'customDimension' smart constructor.
+data CustomDimension = CustomDimension
+    { _cddParentLink    :: !(Maybe CustomDimensionParentLink)
+    , _cddWebPropertyId :: !(Maybe Text)
+    , _cddKind          :: !Text
+    , _cddCreated       :: !(Maybe DateTime')
+    , _cddActive        :: !(Maybe Bool)
+    , _cddSelfLink      :: !(Maybe Text)
+    , _cddAccountId     :: !(Maybe Text)
+    , _cddName          :: !(Maybe Text)
+    , _cddScope         :: !(Maybe Text)
+    , _cddId            :: !(Maybe Text)
+    , _cddUpdated       :: !(Maybe DateTime')
+    , _cddIndex         :: !(Maybe (Textual Int32))
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'CustomDimension' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'cddParentLink'
+--
+-- * 'cddWebPropertyId'
+--
+-- * 'cddKind'
+--
+-- * 'cddCreated'
+--
+-- * 'cddActive'
+--
+-- * 'cddSelfLink'
+--
+-- * 'cddAccountId'
+--
+-- * 'cddName'
+--
+-- * 'cddScope'
+--
+-- * 'cddId'
+--
+-- * 'cddUpdated'
+--
+-- * 'cddIndex'
+customDimension
+    :: CustomDimension
+customDimension =
+    CustomDimension
+    { _cddParentLink = Nothing
+    , _cddWebPropertyId = Nothing
+    , _cddKind = "analytics#customDimension"
+    , _cddCreated = Nothing
+    , _cddActive = Nothing
+    , _cddSelfLink = Nothing
+    , _cddAccountId = Nothing
+    , _cddName = Nothing
+    , _cddScope = Nothing
+    , _cddId = Nothing
+    , _cddUpdated = Nothing
+    , _cddIndex = Nothing
+    }
+
+-- | Parent link for the custom dimension. Points to the property to which
+-- the custom dimension belongs.
+cddParentLink :: Lens' CustomDimension (Maybe CustomDimensionParentLink)
+cddParentLink
+  = lens _cddParentLink
+      (\ s a -> s{_cddParentLink = a})
+
+-- | Property ID.
+cddWebPropertyId :: Lens' CustomDimension (Maybe Text)
+cddWebPropertyId
+  = lens _cddWebPropertyId
+      (\ s a -> s{_cddWebPropertyId = a})
+
+-- | Kind value for a custom dimension. Set to \"analytics#customDimension\".
+-- It is a read-only field.
+cddKind :: Lens' CustomDimension Text
+cddKind = lens _cddKind (\ s a -> s{_cddKind = a})
+
+-- | Time the custom dimension was created.
+cddCreated :: Lens' CustomDimension (Maybe UTCTime)
+cddCreated
+  = lens _cddCreated (\ s a -> s{_cddCreated = a}) .
+      mapping _DateTime
+
+-- | Boolean indicating whether the custom dimension is active.
+cddActive :: Lens' CustomDimension (Maybe Bool)
+cddActive
+  = lens _cddActive (\ s a -> s{_cddActive = a})
+
+-- | Link for the custom dimension
+cddSelfLink :: Lens' CustomDimension (Maybe Text)
+cddSelfLink
+  = lens _cddSelfLink (\ s a -> s{_cddSelfLink = a})
+
+-- | Account ID.
+cddAccountId :: Lens' CustomDimension (Maybe Text)
+cddAccountId
+  = lens _cddAccountId (\ s a -> s{_cddAccountId = a})
+
+-- | Name of the custom dimension.
+cddName :: Lens' CustomDimension (Maybe Text)
+cddName = lens _cddName (\ s a -> s{_cddName = a})
+
+-- | Scope of the custom dimension: HIT, SESSION, USER or PRODUCT.
+cddScope :: Lens' CustomDimension (Maybe Text)
+cddScope = lens _cddScope (\ s a -> s{_cddScope = a})
+
+-- | Custom dimension ID.
+cddId :: Lens' CustomDimension (Maybe Text)
+cddId = lens _cddId (\ s a -> s{_cddId = a})
+
+-- | Time the custom dimension was last modified.
+cddUpdated :: Lens' CustomDimension (Maybe UTCTime)
+cddUpdated
+  = lens _cddUpdated (\ s a -> s{_cddUpdated = a}) .
+      mapping _DateTime
+
+-- | Index of the custom dimension.
+cddIndex :: Lens' CustomDimension (Maybe Int32)
+cddIndex
+  = lens _cddIndex (\ s a -> s{_cddIndex = a}) .
+      mapping _Coerce
+
+instance FromJSON CustomDimension where
+        parseJSON
+          = withObject "CustomDimension"
+              (\ o ->
+                 CustomDimension <$>
+                   (o .:? "parentLink") <*> (o .:? "webPropertyId") <*>
+                     (o .:? "kind" .!= "analytics#customDimension")
+                     <*> (o .:? "created")
+                     <*> (o .:? "active")
+                     <*> (o .:? "selfLink")
+                     <*> (o .:? "accountId")
+                     <*> (o .:? "name")
+                     <*> (o .:? "scope")
+                     <*> (o .:? "id")
+                     <*> (o .:? "updated")
+                     <*> (o .:? "index"))
+
+instance ToJSON CustomDimension where
+        toJSON CustomDimension{..}
+          = object
+              (catMaybes
+                 [("parentLink" .=) <$> _cddParentLink,
+                  ("webPropertyId" .=) <$> _cddWebPropertyId,
+                  Just ("kind" .= _cddKind),
+                  ("created" .=) <$> _cddCreated,
+                  ("active" .=) <$> _cddActive,
+                  ("selfLink" .=) <$> _cddSelfLink,
+                  ("accountId" .=) <$> _cddAccountId,
+                  ("name" .=) <$> _cddName, ("scope" .=) <$> _cddScope,
+                  ("id" .=) <$> _cddId, ("updated" .=) <$> _cddUpdated,
+                  ("index" .=) <$> _cddIndex])
+
+-- | JSON template for an Analytics segment.
+--
+-- /See:/ 'segment' smart constructor.
+data Segment = Segment
+    { _segDefinition :: !(Maybe Text)
+    , _segKind       :: !Text
+    , _segCreated    :: !(Maybe DateTime')
+    , _segSelfLink   :: !(Maybe Text)
+    , _segName       :: !(Maybe Text)
+    , _segId         :: !(Maybe Text)
+    , _segUpdated    :: !(Maybe DateTime')
+    , _segType       :: !(Maybe Text)
+    , _segSegmentId  :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'Segment' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'segDefinition'
+--
+-- * 'segKind'
+--
+-- * 'segCreated'
+--
+-- * 'segSelfLink'
+--
+-- * 'segName'
+--
+-- * 'segId'
+--
+-- * 'segUpdated'
+--
+-- * 'segType'
+--
+-- * 'segSegmentId'
+segment
+    :: Segment
+segment =
+    Segment
+    { _segDefinition = Nothing
+    , _segKind = "analytics#segment"
+    , _segCreated = Nothing
+    , _segSelfLink = Nothing
+    , _segName = Nothing
+    , _segId = Nothing
+    , _segUpdated = Nothing
+    , _segType = Nothing
+    , _segSegmentId = Nothing
+    }
+
+-- | Segment definition.
+segDefinition :: Lens' Segment (Maybe Text)
+segDefinition
+  = lens _segDefinition
+      (\ s a -> s{_segDefinition = a})
+
+-- | Resource type for Analytics segment.
+segKind :: Lens' Segment Text
+segKind = lens _segKind (\ s a -> s{_segKind = a})
+
+-- | Time the segment was created.
+segCreated :: Lens' Segment (Maybe UTCTime)
+segCreated
+  = lens _segCreated (\ s a -> s{_segCreated = a}) .
+      mapping _DateTime
+
+-- | Link for this segment.
+segSelfLink :: Lens' Segment (Maybe Text)
+segSelfLink
+  = lens _segSelfLink (\ s a -> s{_segSelfLink = a})
+
+-- | Segment name.
+segName :: Lens' Segment (Maybe Text)
+segName = lens _segName (\ s a -> s{_segName = a})
+
+-- | Segment ID.
+segId :: Lens' Segment (Maybe Text)
+segId = lens _segId (\ s a -> s{_segId = a})
+
+-- | Time the segment was last modified.
+segUpdated :: Lens' Segment (Maybe UTCTime)
+segUpdated
+  = lens _segUpdated (\ s a -> s{_segUpdated = a}) .
+      mapping _DateTime
+
+-- | Type for a segment. Possible values are \"BUILT_IN\" or \"CUSTOM\".
+segType :: Lens' Segment (Maybe Text)
+segType = lens _segType (\ s a -> s{_segType = a})
+
+-- | Segment ID. Can be used with the \'segment\' parameter in Core Reporting
+-- API.
+segSegmentId :: Lens' Segment (Maybe Text)
+segSegmentId
+  = lens _segSegmentId (\ s a -> s{_segSegmentId = a})
+
+instance FromJSON Segment where
+        parseJSON
+          = withObject "Segment"
+              (\ o ->
+                 Segment <$>
+                   (o .:? "definition") <*>
+                     (o .:? "kind" .!= "analytics#segment")
+                     <*> (o .:? "created")
+                     <*> (o .:? "selfLink")
+                     <*> (o .:? "name")
+                     <*> (o .:? "id")
+                     <*> (o .:? "updated")
+                     <*> (o .:? "type")
+                     <*> (o .:? "segmentId"))
+
+instance ToJSON Segment where
+        toJSON Segment{..}
+          = object
+              (catMaybes
+                 [("definition" .=) <$> _segDefinition,
+                  Just ("kind" .= _segKind),
+                  ("created" .=) <$> _segCreated,
+                  ("selfLink" .=) <$> _segSelfLink,
+                  ("name" .=) <$> _segName, ("id" .=) <$> _segId,
+                  ("updated" .=) <$> _segUpdated,
+                  ("type" .=) <$> _segType,
+                  ("segmentId" .=) <$> _segSegmentId])
+
+-- | Child link for an account entry. Points to the list of web properties
+-- for this account.
+--
+-- /See:/ 'accountChildLink' smart constructor.
+data AccountChildLink = AccountChildLink
+    { _aclHref :: !(Maybe Text)
+    , _aclType :: !Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'AccountChildLink' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'aclHref'
+--
+-- * 'aclType'
+accountChildLink
+    :: AccountChildLink
+accountChildLink =
+    AccountChildLink
+    { _aclHref = Nothing
+    , _aclType = "analytics#webproperties"
+    }
+
+-- | Link to the list of web properties for this account.
+aclHref :: Lens' AccountChildLink (Maybe Text)
+aclHref = lens _aclHref (\ s a -> s{_aclHref = a})
+
+-- | Type of the child link. Its value is \"analytics#webproperties\".
+aclType :: Lens' AccountChildLink Text
+aclType = lens _aclType (\ s a -> s{_aclType = a})
+
+instance FromJSON AccountChildLink where
+        parseJSON
+          = withObject "AccountChildLink"
+              (\ o ->
+                 AccountChildLink <$>
+                   (o .:? "href") <*>
+                     (o .:? "type" .!= "analytics#webproperties"))
+
+instance ToJSON AccountChildLink where
+        toJSON AccountChildLink{..}
+          = object
+              (catMaybes
+                 [("href" .=) <$> _aclHref,
+                  Just ("type" .= _aclType)])
+
+-- | JSON template for an Analytics profile filter link.
+--
+-- /See:/ 'proFileFilterLink' smart constructor.
+data ProFileFilterLink = ProFileFilterLink
+    { _proProFileRef :: !(Maybe ProFileRef)
+    , _proKind       :: !Text
+    , _proFilterRef  :: !(Maybe FilterRef)
+    , _proSelfLink   :: !(Maybe Text)
+    , _proId         :: !(Maybe Text)
+    , _proRank       :: !(Maybe (Textual Int32))
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ProFileFilterLink' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'proProFileRef'
+--
+-- * 'proKind'
+--
+-- * 'proFilterRef'
+--
+-- * 'proSelfLink'
+--
+-- * 'proId'
+--
+-- * 'proRank'
+proFileFilterLink
+    :: ProFileFilterLink
+proFileFilterLink =
+    ProFileFilterLink
+    { _proProFileRef = Nothing
+    , _proKind = "analytics#profileFilterLink"
+    , _proFilterRef = Nothing
+    , _proSelfLink = Nothing
+    , _proId = Nothing
+    , _proRank = Nothing
+    }
+
+-- | View (Profile) for this link.
+proProFileRef :: Lens' ProFileFilterLink (Maybe ProFileRef)
+proProFileRef
+  = lens _proProFileRef
+      (\ s a -> s{_proProFileRef = a})
+
+-- | Resource type for Analytics filter.
+proKind :: Lens' ProFileFilterLink Text
+proKind = lens _proKind (\ s a -> s{_proKind = a})
+
+-- | Filter for this link.
+proFilterRef :: Lens' ProFileFilterLink (Maybe FilterRef)
+proFilterRef
+  = lens _proFilterRef (\ s a -> s{_proFilterRef = a})
+
+-- | Link for this profile filter link.
+proSelfLink :: Lens' ProFileFilterLink (Maybe Text)
+proSelfLink
+  = lens _proSelfLink (\ s a -> s{_proSelfLink = a})
+
+-- | Profile filter link ID.
+proId :: Lens' ProFileFilterLink (Maybe Text)
+proId = lens _proId (\ s a -> s{_proId = a})
+
+-- | The rank of this profile filter link relative to the other filters
+-- linked to the same profile. For readonly (i.e., list and get)
+-- operations, the rank always starts at 1. For write (i.e., create,
+-- update, or delete) operations, you may specify a value between 0 and 255
+-- inclusively, [0, 255]. In order to insert a link at the end of the list,
+-- either don\'t specify a rank or set a rank to a number greater than the
+-- largest rank in the list. In order to insert a link to the beginning of
+-- the list specify a rank that is less than or equal to 1. The new link
+-- will move all existing filters with the same or lower rank down the
+-- list. After the link is inserted\/updated\/deleted all profile filter
+-- links will be renumbered starting at 1.
+proRank :: Lens' ProFileFilterLink (Maybe Int32)
+proRank
+  = lens _proRank (\ s a -> s{_proRank = a}) .
+      mapping _Coerce
+
+instance FromJSON ProFileFilterLink where
+        parseJSON
+          = withObject "ProFileFilterLink"
+              (\ o ->
+                 ProFileFilterLink <$>
+                   (o .:? "profileRef") <*>
+                     (o .:? "kind" .!= "analytics#profileFilterLink")
+                     <*> (o .:? "filterRef")
+                     <*> (o .:? "selfLink")
+                     <*> (o .:? "id")
+                     <*> (o .:? "rank"))
+
+instance ToJSON ProFileFilterLink where
+        toJSON ProFileFilterLink{..}
+          = object
+              (catMaybes
+                 [("profileRef" .=) <$> _proProFileRef,
+                  Just ("kind" .= _proKind),
+                  ("filterRef" .=) <$> _proFilterRef,
+                  ("selfLink" .=) <$> _proSelfLink,
+                  ("id" .=) <$> _proId, ("rank" .=) <$> _proRank])
+
+-- | Parent link for the custom metric. Points to the property to which the
+-- custom metric belongs.
+--
+-- /See:/ 'customMetricParentLink' smart constructor.
+data CustomMetricParentLink = CustomMetricParentLink
+    { _cmplHref :: !(Maybe Text)
+    , _cmplType :: !Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'CustomMetricParentLink' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'cmplHref'
+--
+-- * 'cmplType'
+customMetricParentLink
+    :: CustomMetricParentLink
+customMetricParentLink =
+    CustomMetricParentLink
+    { _cmplHref = Nothing
+    , _cmplType = "analytics#webproperty"
+    }
+
+-- | Link to the property to which the custom metric belongs.
+cmplHref :: Lens' CustomMetricParentLink (Maybe Text)
+cmplHref = lens _cmplHref (\ s a -> s{_cmplHref = a})
+
+-- | Type of the parent link. Set to \"analytics#webproperty\".
+cmplType :: Lens' CustomMetricParentLink Text
+cmplType = lens _cmplType (\ s a -> s{_cmplType = a})
+
+instance FromJSON CustomMetricParentLink where
+        parseJSON
+          = withObject "CustomMetricParentLink"
+              (\ o ->
+                 CustomMetricParentLink <$>
+                   (o .:? "href") <*>
+                     (o .:? "type" .!= "analytics#webproperty"))
+
+instance ToJSON CustomMetricParentLink where
+        toJSON CustomMetricParentLink{..}
+          = object
+              (catMaybes
+                 [("href" .=) <$> _cmplHref,
+                  Just ("type" .= _cmplType)])
+
+-- | JSON template for a metadata column.
+--
+-- /See:/ 'column' smart constructor.
+data Column = Column
+    { _ccKind       :: !Text
+    , _ccAttributes :: !(Maybe ColumnAttributes)
+    , _ccId         :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'Column' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'ccKind'
+--
+-- * 'ccAttributes'
+--
+-- * 'ccId'
+column
+    :: Column
+column =
+    Column
+    { _ccKind = "analytics#column"
+    , _ccAttributes = Nothing
+    , _ccId = Nothing
+    }
+
+-- | Resource type for Analytics column.
+ccKind :: Lens' Column Text
+ccKind = lens _ccKind (\ s a -> s{_ccKind = a})
+
+-- | Map of attribute name and value for this column.
+ccAttributes :: Lens' Column (Maybe ColumnAttributes)
+ccAttributes
+  = lens _ccAttributes (\ s a -> s{_ccAttributes = a})
+
+-- | Column id.
+ccId :: Lens' Column (Maybe Text)
+ccId = lens _ccId (\ s a -> s{_ccId = a})
+
+instance FromJSON Column where
+        parseJSON
+          = withObject "Column"
+              (\ o ->
+                 Column <$>
+                   (o .:? "kind" .!= "analytics#column") <*>
+                     (o .:? "attributes")
+                     <*> (o .:? "id"))
+
+instance ToJSON Column where
+        toJSON Column{..}
+          = object
+              (catMaybes
+                 [Just ("kind" .= _ccKind),
+                  ("attributes" .=) <$> _ccAttributes,
+                  ("id" .=) <$> _ccId])
+
+--
+-- /See:/ 'gaDataDataTableColsItem' smart constructor.
+data GaDataDataTableColsItem = GaDataDataTableColsItem
+    { _gddtciId    :: !(Maybe Text)
+    , _gddtciType  :: !(Maybe Text)
+    , _gddtciLabel :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'GaDataDataTableColsItem' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'gddtciId'
+--
+-- * 'gddtciType'
+--
+-- * 'gddtciLabel'
+gaDataDataTableColsItem
+    :: GaDataDataTableColsItem
+gaDataDataTableColsItem =
+    GaDataDataTableColsItem
+    { _gddtciId = Nothing
+    , _gddtciType = Nothing
+    , _gddtciLabel = Nothing
+    }
+
+gddtciId :: Lens' GaDataDataTableColsItem (Maybe Text)
+gddtciId = lens _gddtciId (\ s a -> s{_gddtciId = a})
+
+gddtciType :: Lens' GaDataDataTableColsItem (Maybe Text)
+gddtciType
+  = lens _gddtciType (\ s a -> s{_gddtciType = a})
+
+gddtciLabel :: Lens' GaDataDataTableColsItem (Maybe Text)
+gddtciLabel
+  = lens _gddtciLabel (\ s a -> s{_gddtciLabel = a})
+
+instance FromJSON GaDataDataTableColsItem where
+        parseJSON
+          = withObject "GaDataDataTableColsItem"
+              (\ o ->
+                 GaDataDataTableColsItem <$>
+                   (o .:? "id") <*> (o .:? "type") <*> (o .:? "label"))
+
+instance ToJSON GaDataDataTableColsItem where
+        toJSON GaDataDataTableColsItem{..}
+          = object
+              (catMaybes
+                 [("id" .=) <$> _gddtciId,
+                  ("type" .=) <$> _gddtciType,
+                  ("label" .=) <$> _gddtciLabel])
+
+--
+-- /See:/ 'experimentVariationsItem' smart constructor.
+data ExperimentVariationsItem = ExperimentVariationsItem
+    { _eviStatus :: !(Maybe Text)
+    , _eviWeight :: !(Maybe (Textual Double))
+    , _eviURL    :: !(Maybe Text)
+    , _eviWon    :: !(Maybe Bool)
+    , _eviName   :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ExperimentVariationsItem' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'eviStatus'
+--
+-- * 'eviWeight'
+--
+-- * 'eviURL'
+--
+-- * 'eviWon'
+--
+-- * 'eviName'
+experimentVariationsItem
+    :: ExperimentVariationsItem
+experimentVariationsItem =
+    ExperimentVariationsItem
+    { _eviStatus = Nothing
+    , _eviWeight = Nothing
+    , _eviURL = Nothing
+    , _eviWon = Nothing
+    , _eviName = Nothing
+    }
+
+-- | Status of the variation. Possible values: \"ACTIVE\", \"INACTIVE\".
+-- INACTIVE variations are not served. This field may not be changed for an
+-- experiment whose status is ENDED.
+eviStatus :: Lens' ExperimentVariationsItem (Maybe Text)
+eviStatus
+  = lens _eviStatus (\ s a -> s{_eviStatus = a})
+
+-- | Weight that this variation should receive. Only present if the
+-- experiment is running. This field is read-only.
+eviWeight :: Lens' ExperimentVariationsItem (Maybe Double)
+eviWeight
+  = lens _eviWeight (\ s a -> s{_eviWeight = a}) .
+      mapping _Coerce
+
+-- | The URL of the variation. This field may not be changed for an
+-- experiment whose status is RUNNING or ENDED.
+eviURL :: Lens' ExperimentVariationsItem (Maybe Text)
+eviURL = lens _eviURL (\ s a -> s{_eviURL = a})
+
+-- | True if the experiment has ended and this variation performed
+-- (statistically) significantly better than the original. This field is
+-- read-only.
+eviWon :: Lens' ExperimentVariationsItem (Maybe Bool)
+eviWon = lens _eviWon (\ s a -> s{_eviWon = a})
+
+-- | The name of the variation. This field is required when creating an
+-- experiment. This field may not be changed for an experiment whose status
+-- is ENDED.
+eviName :: Lens' ExperimentVariationsItem (Maybe Text)
+eviName = lens _eviName (\ s a -> s{_eviName = a})
+
+instance FromJSON ExperimentVariationsItem where
+        parseJSON
+          = withObject "ExperimentVariationsItem"
+              (\ o ->
+                 ExperimentVariationsItem <$>
+                   (o .:? "status") <*> (o .:? "weight") <*>
+                     (o .:? "url")
+                     <*> (o .:? "won")
+                     <*> (o .:? "name"))
+
+instance ToJSON ExperimentVariationsItem where
+        toJSON ExperimentVariationsItem{..}
+          = object
+              (catMaybes
+                 [("status" .=) <$> _eviStatus,
+                  ("weight" .=) <$> _eviWeight, ("url" .=) <$> _eviURL,
+                  ("won" .=) <$> _eviWon, ("name" .=) <$> _eviName])
+
+-- | Total values for the requested metrics over all the results, not just
+-- the results returned in this response. The order of the metric totals is
+-- same as the metric order specified in the request.
+--
+-- /See:/ 'mcfDataTotalsForAllResults' smart constructor.
+newtype McfDataTotalsForAllResults = McfDataTotalsForAllResults
+    { _mdtfarAddtional :: HashMap Text Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'McfDataTotalsForAllResults' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'mdtfarAddtional'
+mcfDataTotalsForAllResults
+    :: HashMap Text Text -- ^ 'mdtfarAddtional'
+    -> McfDataTotalsForAllResults
+mcfDataTotalsForAllResults pMdtfarAddtional_ =
+    McfDataTotalsForAllResults
+    { _mdtfarAddtional = _Coerce # pMdtfarAddtional_
+    }
+
+-- | Key-value pair for the total value of a metric. Key is the metric name
+-- and the value is the total value for that metric.
+mdtfarAddtional :: Lens' McfDataTotalsForAllResults (HashMap Text Text)
+mdtfarAddtional
+  = lens _mdtfarAddtional
+      (\ s a -> s{_mdtfarAddtional = a})
+      . _Coerce
+
+instance FromJSON McfDataTotalsForAllResults where
+        parseJSON
+          = withObject "McfDataTotalsForAllResults"
+              (\ o ->
+                 McfDataTotalsForAllResults <$> (parseJSONObject o))
+
+instance ToJSON McfDataTotalsForAllResults where
+        toJSON = toJSON . _mdtfarAddtional
+
+-- | Download details for a file stored in Google Cloud Storage.
+--
+-- /See:/ 'unSampledReportCloudStorageDownloadDetails' smart constructor.
+data UnSampledReportCloudStorageDownloadDetails = UnSampledReportCloudStorageDownloadDetails
+    { _usrcsddObjectId :: !(Maybe Text)
+    , _usrcsddBucketId :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'UnSampledReportCloudStorageDownloadDetails' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'usrcsddObjectId'
+--
+-- * 'usrcsddBucketId'
+unSampledReportCloudStorageDownloadDetails
+    :: UnSampledReportCloudStorageDownloadDetails
+unSampledReportCloudStorageDownloadDetails =
+    UnSampledReportCloudStorageDownloadDetails
+    { _usrcsddObjectId = Nothing
+    , _usrcsddBucketId = Nothing
+    }
+
+-- | Id of the file object containing the report data.
+usrcsddObjectId :: Lens' UnSampledReportCloudStorageDownloadDetails (Maybe Text)
+usrcsddObjectId
+  = lens _usrcsddObjectId
+      (\ s a -> s{_usrcsddObjectId = a})
+
+-- | Id of the bucket the file object is stored in.
+usrcsddBucketId :: Lens' UnSampledReportCloudStorageDownloadDetails (Maybe Text)
+usrcsddBucketId
+  = lens _usrcsddBucketId
+      (\ s a -> s{_usrcsddBucketId = a})
+
+instance FromJSON
+         UnSampledReportCloudStorageDownloadDetails where
+        parseJSON
+          = withObject
+              "UnSampledReportCloudStorageDownloadDetails"
+              (\ o ->
+                 UnSampledReportCloudStorageDownloadDetails <$>
+                   (o .:? "objectId") <*> (o .:? "bucketId"))
+
+instance ToJSON
+         UnSampledReportCloudStorageDownloadDetails where
+        toJSON UnSampledReportCloudStorageDownloadDetails{..}
+          = object
+              (catMaybes
+                 [("objectId" .=) <$> _usrcsddObjectId,
+                  ("bucketId" .=) <$> _usrcsddBucketId])
+
+-- | Child link for this view (profile). Points to the list of goals for this
+-- view (profile).
+--
+-- /See:/ 'proFileChildLink' smart constructor.
+data ProFileChildLink = ProFileChildLink
+    { _pfclHref :: !(Maybe Text)
+    , _pfclType :: !Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ProFileChildLink' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'pfclHref'
+--
+-- * 'pfclType'
+proFileChildLink
+    :: ProFileChildLink
+proFileChildLink =
+    ProFileChildLink
+    { _pfclHref = Nothing
+    , _pfclType = "analytics#goals"
+    }
+
+-- | Link to the list of goals for this view (profile).
+pfclHref :: Lens' ProFileChildLink (Maybe Text)
+pfclHref = lens _pfclHref (\ s a -> s{_pfclHref = a})
+
+-- | Value is \"analytics#goals\".
+pfclType :: Lens' ProFileChildLink Text
+pfclType = lens _pfclType (\ s a -> s{_pfclType = a})
+
+instance FromJSON ProFileChildLink where
+        parseJSON
+          = withObject "ProFileChildLink"
+              (\ o ->
+                 ProFileChildLink <$>
+                   (o .:? "href") <*>
+                     (o .:? "type" .!= "analytics#goals"))
+
+instance ToJSON ProFileChildLink where
+        toJSON ProFileChildLink{..}
+          = object
+              (catMaybes
+                 [("href" .=) <$> _pfclHref,
+                  Just ("type" .= _pfclType)])
+
+--
+-- /See:/ 'gaDataColumnHeadersItem' smart constructor.
+data GaDataColumnHeadersItem = GaDataColumnHeadersItem
+    { _gdchiColumnType :: !(Maybe Text)
+    , _gdchiName       :: !(Maybe Text)
+    , _gdchiDataType   :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'GaDataColumnHeadersItem' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'gdchiColumnType'
+--
+-- * 'gdchiName'
+--
+-- * 'gdchiDataType'
+gaDataColumnHeadersItem
+    :: GaDataColumnHeadersItem
+gaDataColumnHeadersItem =
+    GaDataColumnHeadersItem
+    { _gdchiColumnType = Nothing
+    , _gdchiName = Nothing
+    , _gdchiDataType = Nothing
+    }
+
+-- | Column Type. Either DIMENSION or METRIC.
+gdchiColumnType :: Lens' GaDataColumnHeadersItem (Maybe Text)
+gdchiColumnType
+  = lens _gdchiColumnType
+      (\ s a -> s{_gdchiColumnType = a})
+
+-- | Column name.
+gdchiName :: Lens' GaDataColumnHeadersItem (Maybe Text)
+gdchiName
+  = lens _gdchiName (\ s a -> s{_gdchiName = a})
+
+-- | Data type. Dimension column headers have only STRING as the data type.
+-- Metric column headers have data types for metric values such as INTEGER,
+-- DOUBLE, CURRENCY etc.
+gdchiDataType :: Lens' GaDataColumnHeadersItem (Maybe Text)
+gdchiDataType
+  = lens _gdchiDataType
+      (\ s a -> s{_gdchiDataType = a})
+
+instance FromJSON GaDataColumnHeadersItem where
+        parseJSON
+          = withObject "GaDataColumnHeadersItem"
+              (\ o ->
+                 GaDataColumnHeadersItem <$>
+                   (o .:? "columnType") <*> (o .:? "name") <*>
+                     (o .:? "dataType"))
+
+instance ToJSON GaDataColumnHeadersItem where
+        toJSON GaDataColumnHeadersItem{..}
+          = object
+              (catMaybes
+                 [("columnType" .=) <$> _gdchiColumnType,
+                  ("name" .=) <$> _gdchiName,
+                  ("dataType" .=) <$> _gdchiDataType])
+
+-- | Parent link for a goal. Points to the view (profile) to which this goal
+-- belongs.
+--
+-- /See:/ 'goalParentLink' smart constructor.
+data GoalParentLink = GoalParentLink
+    { _gplHref :: !(Maybe Text)
+    , _gplType :: !Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'GoalParentLink' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'gplHref'
+--
+-- * 'gplType'
+goalParentLink
+    :: GoalParentLink
+goalParentLink =
+    GoalParentLink
+    { _gplHref = Nothing
+    , _gplType = "analytics#profile"
+    }
+
+-- | Link to the view (profile) to which this goal belongs.
+gplHref :: Lens' GoalParentLink (Maybe Text)
+gplHref = lens _gplHref (\ s a -> s{_gplHref = a})
+
+-- | Value is \"analytics#profile\".
+gplType :: Lens' GoalParentLink Text
+gplType = lens _gplType (\ s a -> s{_gplType = a})
+
+instance FromJSON GoalParentLink where
+        parseJSON
+          = withObject "GoalParentLink"
+              (\ o ->
+                 GoalParentLink <$>
+                   (o .:? "href") <*>
+                     (o .:? "type" .!= "analytics#profile"))
+
+instance ToJSON GoalParentLink where
+        toJSON GoalParentLink{..}
+          = object
+              (catMaybes
+                 [("href" .=) <$> _gplHref,
+                  Just ("type" .= _gplType)])
+
+-- | Map of attribute name and value for this column.
+--
+-- /See:/ 'columnAttributes' smart constructor.
+newtype ColumnAttributes = ColumnAttributes
+    { _caAddtional :: HashMap Text Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ColumnAttributes' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'caAddtional'
+columnAttributes
+    :: HashMap Text Text -- ^ 'caAddtional'
+    -> ColumnAttributes
+columnAttributes pCaAddtional_ =
+    ColumnAttributes
+    { _caAddtional = _Coerce # pCaAddtional_
+    }
+
+-- | The name of the attribute.
+caAddtional :: Lens' ColumnAttributes (HashMap Text Text)
+caAddtional
+  = lens _caAddtional (\ s a -> s{_caAddtional = a}) .
+      _Coerce
+
+instance FromJSON ColumnAttributes where
+        parseJSON
+          = withObject "ColumnAttributes"
+              (\ o -> ColumnAttributes <$> (parseJSONObject o))
+
+instance ToJSON ColumnAttributes where
+        toJSON = toJSON . _caAddtional
diff --git a/gen/Network/Google/Analytics/Types/Sum.hs b/gen/Network/Google/Analytics/Types/Sum.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Analytics/Types/Sum.hs
@@ -0,0 +1,119 @@
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE LambdaCase         #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- |
+-- Module      : Network.Google.Analytics.Types.Sum
+-- Copyright   : (c) 2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+module Network.Google.Analytics.Types.Sum where
+
+import           Network.Google.Prelude
+
+-- | The desired sampling level.
+data DataGaGetSamplingLevel
+    = Default
+      -- ^ @DEFAULT@
+      -- Returns response with a sample size that balances speed and accuracy.
+    | Faster
+      -- ^ @FASTER@
+      -- Returns a fast response with a smaller sample size.
+    | HigherPrecision
+      -- ^ @HIGHER_PRECISION@
+      -- Returns a more accurate response using a large sample size, but this may
+      -- result in the response being slower.
+      deriving (Eq,Ord,Enum,Read,Show,Data,Typeable,Generic)
+
+instance Hashable DataGaGetSamplingLevel
+
+instance FromText DataGaGetSamplingLevel where
+    fromText = \case
+        "DEFAULT" -> Just Default
+        "FASTER" -> Just Faster
+        "HIGHER_PRECISION" -> Just HigherPrecision
+        _ -> Nothing
+
+instance ToText DataGaGetSamplingLevel where
+    toText = \case
+        Default -> "DEFAULT"
+        Faster -> "FASTER"
+        HigherPrecision -> "HIGHER_PRECISION"
+
+instance FromJSON DataGaGetSamplingLevel where
+    parseJSON = parseJSONText "DataGaGetSamplingLevel"
+
+instance ToJSON DataGaGetSamplingLevel where
+    toJSON = toJSONText
+
+-- | The selected format for the response. Default format is JSON.
+data DataGaGetOutput
+    = DataTable
+      -- ^ @dataTable@
+      -- Returns the response in Google Charts Data Table format. This is useful
+      -- in creating visualization using Google Charts.
+    | JSON
+      -- ^ @json@
+      -- Returns the response in standard JSON format.
+      deriving (Eq,Ord,Enum,Read,Show,Data,Typeable,Generic)
+
+instance Hashable DataGaGetOutput
+
+instance FromText DataGaGetOutput where
+    fromText = \case
+        "dataTable" -> Just DataTable
+        "json" -> Just JSON
+        _ -> Nothing
+
+instance ToText DataGaGetOutput where
+    toText = \case
+        DataTable -> "dataTable"
+        JSON -> "json"
+
+instance FromJSON DataGaGetOutput where
+    parseJSON = parseJSONText "DataGaGetOutput"
+
+instance ToJSON DataGaGetOutput where
+    toJSON = toJSONText
+
+-- | The desired sampling level.
+data DataMcfGetSamplingLevel
+    = DMGSLDefault
+      -- ^ @DEFAULT@
+      -- Returns response with a sample size that balances speed and accuracy.
+    | DMGSLFaster
+      -- ^ @FASTER@
+      -- Returns a fast response with a smaller sample size.
+    | DMGSLHigherPrecision
+      -- ^ @HIGHER_PRECISION@
+      -- Returns a more accurate response using a large sample size, but this may
+      -- result in the response being slower.
+      deriving (Eq,Ord,Enum,Read,Show,Data,Typeable,Generic)
+
+instance Hashable DataMcfGetSamplingLevel
+
+instance FromText DataMcfGetSamplingLevel where
+    fromText = \case
+        "DEFAULT" -> Just DMGSLDefault
+        "FASTER" -> Just DMGSLFaster
+        "HIGHER_PRECISION" -> Just DMGSLHigherPrecision
+        _ -> Nothing
+
+instance ToText DataMcfGetSamplingLevel where
+    toText = \case
+        DMGSLDefault -> "DEFAULT"
+        DMGSLFaster -> "FASTER"
+        DMGSLHigherPrecision -> "HIGHER_PRECISION"
+
+instance FromJSON DataMcfGetSamplingLevel where
+    parseJSON = parseJSONText "DataMcfGetSamplingLevel"
+
+instance ToJSON DataMcfGetSamplingLevel where
+    toJSON = toJSONText
diff --git a/gen/Network/Google/Resource/Analytics/Data/Ga/Get.hs b/gen/Network/Google/Resource/Analytics/Data/Ga/Get.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Analytics/Data/Ga/Get.hs
@@ -0,0 +1,234 @@
+{-# 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.Analytics.Data.Ga.Get
+-- Copyright   : (c) 2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Returns Analytics data for a view (profile).
+--
+-- /See:/ <https://developers.google.com/analytics/ Google Analytics API Reference> for @analytics.data.ga.get@.
+module Network.Google.Resource.Analytics.Data.Ga.Get
+    (
+    -- * REST Resource
+      DataGaGetResource
+
+    -- * Creating a Request
+    , dataGaGet
+    , DataGaGet
+
+    -- * Request Lenses
+    , dggMetrics
+    , dggSamplingLevel
+    , dggFilters
+    , dggIds
+    , dggEndDate
+    , dggOutput
+    , dggSort
+    , dggDimensions
+    , dggStartIndex
+    , dggMaxResults
+    , dggSegment
+    , dggStartDate
+    ) where
+
+import           Network.Google.Analytics.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @analytics.data.ga.get@ method which the
+-- 'DataGaGet' request conforms to.
+type DataGaGetResource =
+     "analytics" :>
+       "v3" :>
+         "data" :>
+           "ga" :>
+             QueryParam "ids" Text :>
+               QueryParam "start-date" Text :>
+                 QueryParam "end-date" Text :>
+                   QueryParam "metrics" Text :>
+                     QueryParam "samplingLevel" DataGaGetSamplingLevel :>
+                       QueryParam "filters" Text :>
+                         QueryParam "output" DataGaGetOutput :>
+                           QueryParam "sort" Text :>
+                             QueryParam "dimensions" Text :>
+                               QueryParam "start-index" (Textual Int32) :>
+                                 QueryParam "max-results" (Textual Int32) :>
+                                   QueryParam "segment" Text :>
+                                     QueryParam "alt" AltJSON :>
+                                       Get '[JSON] GaData
+
+-- | Returns Analytics data for a view (profile).
+--
+-- /See:/ 'dataGaGet' smart constructor.
+data DataGaGet = DataGaGet
+    { _dggMetrics       :: !Text
+    , _dggSamplingLevel :: !(Maybe DataGaGetSamplingLevel)
+    , _dggFilters       :: !(Maybe Text)
+    , _dggIds           :: !Text
+    , _dggEndDate       :: !Text
+    , _dggOutput        :: !(Maybe DataGaGetOutput)
+    , _dggSort          :: !(Maybe Text)
+    , _dggDimensions    :: !(Maybe Text)
+    , _dggStartIndex    :: !(Maybe (Textual Int32))
+    , _dggMaxResults    :: !(Maybe (Textual Int32))
+    , _dggSegment       :: !(Maybe Text)
+    , _dggStartDate     :: !Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'DataGaGet' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'dggMetrics'
+--
+-- * 'dggSamplingLevel'
+--
+-- * 'dggFilters'
+--
+-- * 'dggIds'
+--
+-- * 'dggEndDate'
+--
+-- * 'dggOutput'
+--
+-- * 'dggSort'
+--
+-- * 'dggDimensions'
+--
+-- * 'dggStartIndex'
+--
+-- * 'dggMaxResults'
+--
+-- * 'dggSegment'
+--
+-- * 'dggStartDate'
+dataGaGet
+    :: Text -- ^ 'dggMetrics'
+    -> Text -- ^ 'dggIds'
+    -> Text -- ^ 'dggEndDate'
+    -> Text -- ^ 'dggStartDate'
+    -> DataGaGet
+dataGaGet pDggMetrics_ pDggIds_ pDggEndDate_ pDggStartDate_ =
+    DataGaGet
+    { _dggMetrics = pDggMetrics_
+    , _dggSamplingLevel = Nothing
+    , _dggFilters = Nothing
+    , _dggIds = pDggIds_
+    , _dggEndDate = pDggEndDate_
+    , _dggOutput = Nothing
+    , _dggSort = Nothing
+    , _dggDimensions = Nothing
+    , _dggStartIndex = Nothing
+    , _dggMaxResults = Nothing
+    , _dggSegment = Nothing
+    , _dggStartDate = pDggStartDate_
+    }
+
+-- | A comma-separated list of Analytics metrics. E.g.,
+-- \'ga:sessions,ga:pageviews\'. At least one metric must be specified.
+dggMetrics :: Lens' DataGaGet Text
+dggMetrics
+  = lens _dggMetrics (\ s a -> s{_dggMetrics = a})
+
+-- | The desired sampling level.
+dggSamplingLevel :: Lens' DataGaGet (Maybe DataGaGetSamplingLevel)
+dggSamplingLevel
+  = lens _dggSamplingLevel
+      (\ s a -> s{_dggSamplingLevel = a})
+
+-- | A comma-separated list of dimension or metric filters to be applied to
+-- Analytics data.
+dggFilters :: Lens' DataGaGet (Maybe Text)
+dggFilters
+  = lens _dggFilters (\ s a -> s{_dggFilters = a})
+
+-- | Unique table ID for retrieving Analytics data. Table ID is of the form
+-- ga:XXXX, where XXXX is the Analytics view (profile) ID.
+dggIds :: Lens' DataGaGet Text
+dggIds = lens _dggIds (\ s a -> s{_dggIds = a})
+
+-- | End date for fetching Analytics data. Request can should specify an end
+-- date formatted as YYYY-MM-DD, or as a relative date (e.g., today,
+-- yesterday, or 7daysAgo). The default value is yesterday.
+dggEndDate :: Lens' DataGaGet Text
+dggEndDate
+  = lens _dggEndDate (\ s a -> s{_dggEndDate = a})
+
+-- | The selected format for the response. Default format is JSON.
+dggOutput :: Lens' DataGaGet (Maybe DataGaGetOutput)
+dggOutput
+  = lens _dggOutput (\ s a -> s{_dggOutput = a})
+
+-- | A comma-separated list of dimensions or metrics that determine the sort
+-- order for Analytics data.
+dggSort :: Lens' DataGaGet (Maybe Text)
+dggSort = lens _dggSort (\ s a -> s{_dggSort = a})
+
+-- | A comma-separated list of Analytics dimensions. E.g.,
+-- \'ga:browser,ga:city\'.
+dggDimensions :: Lens' DataGaGet (Maybe Text)
+dggDimensions
+  = lens _dggDimensions
+      (\ s a -> s{_dggDimensions = a})
+
+-- | An index of the first entity to retrieve. Use this parameter as a
+-- pagination mechanism along with the max-results parameter.
+dggStartIndex :: Lens' DataGaGet (Maybe Int32)
+dggStartIndex
+  = lens _dggStartIndex
+      (\ s a -> s{_dggStartIndex = a})
+      . mapping _Coerce
+
+-- | The maximum number of entries to include in this feed.
+dggMaxResults :: Lens' DataGaGet (Maybe Int32)
+dggMaxResults
+  = lens _dggMaxResults
+      (\ s a -> s{_dggMaxResults = a})
+      . mapping _Coerce
+
+-- | An Analytics segment to be applied to data.
+dggSegment :: Lens' DataGaGet (Maybe Text)
+dggSegment
+  = lens _dggSegment (\ s a -> s{_dggSegment = a})
+
+-- | Start date for fetching Analytics data. Requests can specify a start
+-- date formatted as YYYY-MM-DD, or as a relative date (e.g., today,
+-- yesterday, or 7daysAgo). The default value is 7daysAgo.
+dggStartDate :: Lens' DataGaGet Text
+dggStartDate
+  = lens _dggStartDate (\ s a -> s{_dggStartDate = a})
+
+instance GoogleRequest DataGaGet where
+        type Rs DataGaGet = GaData
+        requestClient DataGaGet{..}
+          = go (Just _dggIds) (Just _dggStartDate)
+              (Just _dggEndDate)
+              (Just _dggMetrics)
+              _dggSamplingLevel
+              _dggFilters
+              _dggOutput
+              _dggSort
+              _dggDimensions
+              _dggStartIndex
+              _dggMaxResults
+              _dggSegment
+              (Just AltJSON)
+              analyticsService
+          where go
+                  = buildClient (Proxy :: Proxy DataGaGetResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Analytics/Data/Mcf/Get.hs b/gen/Network/Google/Resource/Analytics/Data/Mcf/Get.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Analytics/Data/Mcf/Get.hs
@@ -0,0 +1,210 @@
+{-# 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.Analytics.Data.Mcf.Get
+-- Copyright   : (c) 2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Returns Analytics Multi-Channel Funnels data for a view (profile).
+--
+-- /See:/ <https://developers.google.com/analytics/ Google Analytics API Reference> for @analytics.data.mcf.get@.
+module Network.Google.Resource.Analytics.Data.Mcf.Get
+    (
+    -- * REST Resource
+      DataMcfGetResource
+
+    -- * Creating a Request
+    , dataMcfGet
+    , DataMcfGet
+
+    -- * Request Lenses
+    , dmgMetrics
+    , dmgSamplingLevel
+    , dmgFilters
+    , dmgIds
+    , dmgEndDate
+    , dmgSort
+    , dmgDimensions
+    , dmgStartIndex
+    , dmgMaxResults
+    , dmgStartDate
+    ) where
+
+import           Network.Google.Analytics.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @analytics.data.mcf.get@ method which the
+-- 'DataMcfGet' request conforms to.
+type DataMcfGetResource =
+     "analytics" :>
+       "v3" :>
+         "data" :>
+           "mcf" :>
+             QueryParam "ids" Text :>
+               QueryParam "start-date" Text :>
+                 QueryParam "end-date" Text :>
+                   QueryParam "metrics" Text :>
+                     QueryParam "samplingLevel" DataMcfGetSamplingLevel :>
+                       QueryParam "filters" Text :>
+                         QueryParam "sort" Text :>
+                           QueryParam "dimensions" Text :>
+                             QueryParam "start-index" (Textual Int32) :>
+                               QueryParam "max-results" (Textual Int32) :>
+                                 QueryParam "alt" AltJSON :> Get '[JSON] McfData
+
+-- | Returns Analytics Multi-Channel Funnels data for a view (profile).
+--
+-- /See:/ 'dataMcfGet' smart constructor.
+data DataMcfGet = DataMcfGet
+    { _dmgMetrics       :: !Text
+    , _dmgSamplingLevel :: !(Maybe DataMcfGetSamplingLevel)
+    , _dmgFilters       :: !(Maybe Text)
+    , _dmgIds           :: !Text
+    , _dmgEndDate       :: !Text
+    , _dmgSort          :: !(Maybe Text)
+    , _dmgDimensions    :: !(Maybe Text)
+    , _dmgStartIndex    :: !(Maybe (Textual Int32))
+    , _dmgMaxResults    :: !(Maybe (Textual Int32))
+    , _dmgStartDate     :: !Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'DataMcfGet' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'dmgMetrics'
+--
+-- * 'dmgSamplingLevel'
+--
+-- * 'dmgFilters'
+--
+-- * 'dmgIds'
+--
+-- * 'dmgEndDate'
+--
+-- * 'dmgSort'
+--
+-- * 'dmgDimensions'
+--
+-- * 'dmgStartIndex'
+--
+-- * 'dmgMaxResults'
+--
+-- * 'dmgStartDate'
+dataMcfGet
+    :: Text -- ^ 'dmgMetrics'
+    -> Text -- ^ 'dmgIds'
+    -> Text -- ^ 'dmgEndDate'
+    -> Text -- ^ 'dmgStartDate'
+    -> DataMcfGet
+dataMcfGet pDmgMetrics_ pDmgIds_ pDmgEndDate_ pDmgStartDate_ =
+    DataMcfGet
+    { _dmgMetrics = pDmgMetrics_
+    , _dmgSamplingLevel = Nothing
+    , _dmgFilters = Nothing
+    , _dmgIds = pDmgIds_
+    , _dmgEndDate = pDmgEndDate_
+    , _dmgSort = Nothing
+    , _dmgDimensions = Nothing
+    , _dmgStartIndex = Nothing
+    , _dmgMaxResults = Nothing
+    , _dmgStartDate = pDmgStartDate_
+    }
+
+-- | A comma-separated list of Multi-Channel Funnels metrics. E.g.,
+-- \'mcf:totalConversions,mcf:totalConversionValue\'. At least one metric
+-- must be specified.
+dmgMetrics :: Lens' DataMcfGet Text
+dmgMetrics
+  = lens _dmgMetrics (\ s a -> s{_dmgMetrics = a})
+
+-- | The desired sampling level.
+dmgSamplingLevel :: Lens' DataMcfGet (Maybe DataMcfGetSamplingLevel)
+dmgSamplingLevel
+  = lens _dmgSamplingLevel
+      (\ s a -> s{_dmgSamplingLevel = a})
+
+-- | A comma-separated list of dimension or metric filters to be applied to
+-- the Analytics data.
+dmgFilters :: Lens' DataMcfGet (Maybe Text)
+dmgFilters
+  = lens _dmgFilters (\ s a -> s{_dmgFilters = a})
+
+-- | Unique table ID for retrieving Analytics data. Table ID is of the form
+-- ga:XXXX, where XXXX is the Analytics view (profile) ID.
+dmgIds :: Lens' DataMcfGet Text
+dmgIds = lens _dmgIds (\ s a -> s{_dmgIds = a})
+
+-- | End date for fetching Analytics data. Requests can specify a start date
+-- formatted as YYYY-MM-DD, or as a relative date (e.g., today, yesterday,
+-- or 7daysAgo). The default value is 7daysAgo.
+dmgEndDate :: Lens' DataMcfGet Text
+dmgEndDate
+  = lens _dmgEndDate (\ s a -> s{_dmgEndDate = a})
+
+-- | A comma-separated list of dimensions or metrics that determine the sort
+-- order for the Analytics data.
+dmgSort :: Lens' DataMcfGet (Maybe Text)
+dmgSort = lens _dmgSort (\ s a -> s{_dmgSort = a})
+
+-- | A comma-separated list of Multi-Channel Funnels dimensions. E.g.,
+-- \'mcf:source,mcf:medium\'.
+dmgDimensions :: Lens' DataMcfGet (Maybe Text)
+dmgDimensions
+  = lens _dmgDimensions
+      (\ s a -> s{_dmgDimensions = a})
+
+-- | An index of the first entity to retrieve. Use this parameter as a
+-- pagination mechanism along with the max-results parameter.
+dmgStartIndex :: Lens' DataMcfGet (Maybe Int32)
+dmgStartIndex
+  = lens _dmgStartIndex
+      (\ s a -> s{_dmgStartIndex = a})
+      . mapping _Coerce
+
+-- | The maximum number of entries to include in this feed.
+dmgMaxResults :: Lens' DataMcfGet (Maybe Int32)
+dmgMaxResults
+  = lens _dmgMaxResults
+      (\ s a -> s{_dmgMaxResults = a})
+      . mapping _Coerce
+
+-- | Start date for fetching Analytics data. Requests can specify a start
+-- date formatted as YYYY-MM-DD, or as a relative date (e.g., today,
+-- yesterday, or 7daysAgo). The default value is 7daysAgo.
+dmgStartDate :: Lens' DataMcfGet Text
+dmgStartDate
+  = lens _dmgStartDate (\ s a -> s{_dmgStartDate = a})
+
+instance GoogleRequest DataMcfGet where
+        type Rs DataMcfGet = McfData
+        requestClient DataMcfGet{..}
+          = go (Just _dmgIds) (Just _dmgStartDate)
+              (Just _dmgEndDate)
+              (Just _dmgMetrics)
+              _dmgSamplingLevel
+              _dmgFilters
+              _dmgSort
+              _dmgDimensions
+              _dmgStartIndex
+              _dmgMaxResults
+              (Just AltJSON)
+              analyticsService
+          where go
+                  = buildClient (Proxy :: Proxy DataMcfGetResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Analytics/Data/Realtime/Get.hs b/gen/Network/Google/Resource/Analytics/Data/Realtime/Get.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Analytics/Data/Realtime/Get.hs
@@ -0,0 +1,151 @@
+{-# 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.Analytics.Data.Realtime.Get
+-- Copyright   : (c) 2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Returns real time data for a view (profile).
+--
+-- /See:/ <https://developers.google.com/analytics/ Google Analytics API Reference> for @analytics.data.realtime.get@.
+module Network.Google.Resource.Analytics.Data.Realtime.Get
+    (
+    -- * REST Resource
+      DataRealtimeGetResource
+
+    -- * Creating a Request
+    , dataRealtimeGet
+    , DataRealtimeGet
+
+    -- * Request Lenses
+    , drgMetrics
+    , drgFilters
+    , drgIds
+    , drgSort
+    , drgDimensions
+    , drgMaxResults
+    ) where
+
+import           Network.Google.Analytics.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @analytics.data.realtime.get@ method which the
+-- 'DataRealtimeGet' request conforms to.
+type DataRealtimeGetResource =
+     "analytics" :>
+       "v3" :>
+         "data" :>
+           "realtime" :>
+             QueryParam "ids" Text :>
+               QueryParam "metrics" Text :>
+                 QueryParam "filters" Text :>
+                   QueryParam "sort" Text :>
+                     QueryParam "dimensions" Text :>
+                       QueryParam "max-results" (Textual Int32) :>
+                         QueryParam "alt" AltJSON :> Get '[JSON] RealtimeData
+
+-- | Returns real time data for a view (profile).
+--
+-- /See:/ 'dataRealtimeGet' smart constructor.
+data DataRealtimeGet = DataRealtimeGet
+    { _drgMetrics    :: !Text
+    , _drgFilters    :: !(Maybe Text)
+    , _drgIds        :: !Text
+    , _drgSort       :: !(Maybe Text)
+    , _drgDimensions :: !(Maybe Text)
+    , _drgMaxResults :: !(Maybe (Textual Int32))
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'DataRealtimeGet' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'drgMetrics'
+--
+-- * 'drgFilters'
+--
+-- * 'drgIds'
+--
+-- * 'drgSort'
+--
+-- * 'drgDimensions'
+--
+-- * 'drgMaxResults'
+dataRealtimeGet
+    :: Text -- ^ 'drgMetrics'
+    -> Text -- ^ 'drgIds'
+    -> DataRealtimeGet
+dataRealtimeGet pDrgMetrics_ pDrgIds_ =
+    DataRealtimeGet
+    { _drgMetrics = pDrgMetrics_
+    , _drgFilters = Nothing
+    , _drgIds = pDrgIds_
+    , _drgSort = Nothing
+    , _drgDimensions = Nothing
+    , _drgMaxResults = Nothing
+    }
+
+-- | A comma-separated list of real time metrics. E.g., \'rt:activeUsers\'.
+-- At least one metric must be specified.
+drgMetrics :: Lens' DataRealtimeGet Text
+drgMetrics
+  = lens _drgMetrics (\ s a -> s{_drgMetrics = a})
+
+-- | A comma-separated list of dimension or metric filters to be applied to
+-- real time data.
+drgFilters :: Lens' DataRealtimeGet (Maybe Text)
+drgFilters
+  = lens _drgFilters (\ s a -> s{_drgFilters = a})
+
+-- | Unique table ID for retrieving real time data. Table ID is of the form
+-- ga:XXXX, where XXXX is the Analytics view (profile) ID.
+drgIds :: Lens' DataRealtimeGet Text
+drgIds = lens _drgIds (\ s a -> s{_drgIds = a})
+
+-- | A comma-separated list of dimensions or metrics that determine the sort
+-- order for real time data.
+drgSort :: Lens' DataRealtimeGet (Maybe Text)
+drgSort = lens _drgSort (\ s a -> s{_drgSort = a})
+
+-- | A comma-separated list of real time dimensions. E.g.,
+-- \'rt:medium,rt:city\'.
+drgDimensions :: Lens' DataRealtimeGet (Maybe Text)
+drgDimensions
+  = lens _drgDimensions
+      (\ s a -> s{_drgDimensions = a})
+
+-- | The maximum number of entries to include in this feed.
+drgMaxResults :: Lens' DataRealtimeGet (Maybe Int32)
+drgMaxResults
+  = lens _drgMaxResults
+      (\ s a -> s{_drgMaxResults = a})
+      . mapping _Coerce
+
+instance GoogleRequest DataRealtimeGet where
+        type Rs DataRealtimeGet = RealtimeData
+        requestClient DataRealtimeGet{..}
+          = go (Just _drgIds) (Just _drgMetrics) _drgFilters
+              _drgSort
+              _drgDimensions
+              _drgMaxResults
+              (Just AltJSON)
+              analyticsService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy DataRealtimeGetResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Analytics/Management/AccountSummaries/List.hs b/gen/Network/Google/Resource/Analytics/Management/AccountSummaries/List.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Analytics/Management/AccountSummaries/List.hs
@@ -0,0 +1,107 @@
+{-# 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.Analytics.Management.AccountSummaries.List
+-- Copyright   : (c) 2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Lists account summaries (lightweight tree comprised of
+-- accounts\/properties\/profiles) to which the user has access.
+--
+-- /See:/ <https://developers.google.com/analytics/ Google Analytics API Reference> for @analytics.management.accountSummaries.list@.
+module Network.Google.Resource.Analytics.Management.AccountSummaries.List
+    (
+    -- * REST Resource
+      ManagementAccountSummariesListResource
+
+    -- * Creating a Request
+    , managementAccountSummariesList
+    , ManagementAccountSummariesList
+
+    -- * Request Lenses
+    , maslStartIndex
+    , maslMaxResults
+    ) where
+
+import           Network.Google.Analytics.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @analytics.management.accountSummaries.list@ method which the
+-- 'ManagementAccountSummariesList' request conforms to.
+type ManagementAccountSummariesListResource =
+     "analytics" :>
+       "v3" :>
+         "management" :>
+           "accountSummaries" :>
+             QueryParam "start-index" (Textual Int32) :>
+               QueryParam "max-results" (Textual Int32) :>
+                 QueryParam "alt" AltJSON :>
+                   Get '[JSON] AccountSummaries
+
+-- | Lists account summaries (lightweight tree comprised of
+-- accounts\/properties\/profiles) to which the user has access.
+--
+-- /See:/ 'managementAccountSummariesList' smart constructor.
+data ManagementAccountSummariesList = ManagementAccountSummariesList
+    { _maslStartIndex :: !(Maybe (Textual Int32))
+    , _maslMaxResults :: !(Maybe (Textual Int32))
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ManagementAccountSummariesList' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'maslStartIndex'
+--
+-- * 'maslMaxResults'
+managementAccountSummariesList
+    :: ManagementAccountSummariesList
+managementAccountSummariesList =
+    ManagementAccountSummariesList
+    { _maslStartIndex = Nothing
+    , _maslMaxResults = Nothing
+    }
+
+-- | An index of the first entity to retrieve. Use this parameter as a
+-- pagination mechanism along with the max-results parameter.
+maslStartIndex :: Lens' ManagementAccountSummariesList (Maybe Int32)
+maslStartIndex
+  = lens _maslStartIndex
+      (\ s a -> s{_maslStartIndex = a})
+      . mapping _Coerce
+
+-- | The maximum number of account summaries to include in this response,
+-- where the largest acceptable value is 1000.
+maslMaxResults :: Lens' ManagementAccountSummariesList (Maybe Int32)
+maslMaxResults
+  = lens _maslMaxResults
+      (\ s a -> s{_maslMaxResults = a})
+      . mapping _Coerce
+
+instance GoogleRequest ManagementAccountSummariesList
+         where
+        type Rs ManagementAccountSummariesList =
+             AccountSummaries
+        requestClient ManagementAccountSummariesList{..}
+          = go _maslStartIndex _maslMaxResults (Just AltJSON)
+              analyticsService
+          where go
+                  = buildClient
+                      (Proxy ::
+                         Proxy ManagementAccountSummariesListResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Analytics/Management/AccountUserLinks/Delete.hs b/gen/Network/Google/Resource/Analytics/Management/AccountUserLinks/Delete.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Analytics/Management/AccountUserLinks/Delete.hs
@@ -0,0 +1,101 @@
+{-# LANGUAGE DataKinds          #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE FlexibleInstances  #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+{-# LANGUAGE TypeOperators      #-}
+
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
+
+-- |
+-- Module      : Network.Google.Resource.Analytics.Management.AccountUserLinks.Delete
+-- Copyright   : (c) 2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Removes a user from the given account.
+--
+-- /See:/ <https://developers.google.com/analytics/ Google Analytics API Reference> for @analytics.management.accountUserLinks.delete@.
+module Network.Google.Resource.Analytics.Management.AccountUserLinks.Delete
+    (
+    -- * REST Resource
+      ManagementAccountUserLinksDeleteResource
+
+    -- * Creating a Request
+    , managementAccountUserLinksDelete
+    , ManagementAccountUserLinksDelete
+
+    -- * Request Lenses
+    , mauldAccountId
+    , mauldLinkId
+    ) where
+
+import           Network.Google.Analytics.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @analytics.management.accountUserLinks.delete@ method which the
+-- 'ManagementAccountUserLinksDelete' request conforms to.
+type ManagementAccountUserLinksDeleteResource =
+     "analytics" :>
+       "v3" :>
+         "management" :>
+           "accounts" :>
+             Capture "accountId" Text :>
+               "entityUserLinks" :>
+                 Capture "linkId" Text :>
+                   QueryParam "alt" AltJSON :> Delete '[JSON] ()
+
+-- | Removes a user from the given account.
+--
+-- /See:/ 'managementAccountUserLinksDelete' smart constructor.
+data ManagementAccountUserLinksDelete = ManagementAccountUserLinksDelete
+    { _mauldAccountId :: !Text
+    , _mauldLinkId    :: !Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ManagementAccountUserLinksDelete' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'mauldAccountId'
+--
+-- * 'mauldLinkId'
+managementAccountUserLinksDelete
+    :: Text -- ^ 'mauldAccountId'
+    -> Text -- ^ 'mauldLinkId'
+    -> ManagementAccountUserLinksDelete
+managementAccountUserLinksDelete pMauldAccountId_ pMauldLinkId_ =
+    ManagementAccountUserLinksDelete
+    { _mauldAccountId = pMauldAccountId_
+    , _mauldLinkId = pMauldLinkId_
+    }
+
+-- | Account ID to delete the user link for.
+mauldAccountId :: Lens' ManagementAccountUserLinksDelete Text
+mauldAccountId
+  = lens _mauldAccountId
+      (\ s a -> s{_mauldAccountId = a})
+
+-- | Link ID to delete the user link for.
+mauldLinkId :: Lens' ManagementAccountUserLinksDelete Text
+mauldLinkId
+  = lens _mauldLinkId (\ s a -> s{_mauldLinkId = a})
+
+instance GoogleRequest
+         ManagementAccountUserLinksDelete where
+        type Rs ManagementAccountUserLinksDelete = ()
+        requestClient ManagementAccountUserLinksDelete{..}
+          = go _mauldAccountId _mauldLinkId (Just AltJSON)
+              analyticsService
+          where go
+                  = buildClient
+                      (Proxy ::
+                         Proxy ManagementAccountUserLinksDeleteResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Analytics/Management/AccountUserLinks/Insert.hs b/gen/Network/Google/Resource/Analytics/Management/AccountUserLinks/Insert.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Analytics/Management/AccountUserLinks/Insert.hs
@@ -0,0 +1,103 @@
+{-# 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.Analytics.Management.AccountUserLinks.Insert
+-- Copyright   : (c) 2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Adds a new user to the given account.
+--
+-- /See:/ <https://developers.google.com/analytics/ Google Analytics API Reference> for @analytics.management.accountUserLinks.insert@.
+module Network.Google.Resource.Analytics.Management.AccountUserLinks.Insert
+    (
+    -- * REST Resource
+      ManagementAccountUserLinksInsertResource
+
+    -- * Creating a Request
+    , managementAccountUserLinksInsert
+    , ManagementAccountUserLinksInsert
+
+    -- * Request Lenses
+    , mauliPayload
+    , mauliAccountId
+    ) where
+
+import           Network.Google.Analytics.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @analytics.management.accountUserLinks.insert@ method which the
+-- 'ManagementAccountUserLinksInsert' request conforms to.
+type ManagementAccountUserLinksInsertResource =
+     "analytics" :>
+       "v3" :>
+         "management" :>
+           "accounts" :>
+             Capture "accountId" Text :>
+               "entityUserLinks" :>
+                 QueryParam "alt" AltJSON :>
+                   ReqBody '[JSON] EntityUserLink :>
+                     Post '[JSON] EntityUserLink
+
+-- | Adds a new user to the given account.
+--
+-- /See:/ 'managementAccountUserLinksInsert' smart constructor.
+data ManagementAccountUserLinksInsert = ManagementAccountUserLinksInsert
+    { _mauliPayload   :: !EntityUserLink
+    , _mauliAccountId :: !Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ManagementAccountUserLinksInsert' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'mauliPayload'
+--
+-- * 'mauliAccountId'
+managementAccountUserLinksInsert
+    :: EntityUserLink -- ^ 'mauliPayload'
+    -> Text -- ^ 'mauliAccountId'
+    -> ManagementAccountUserLinksInsert
+managementAccountUserLinksInsert pMauliPayload_ pMauliAccountId_ =
+    ManagementAccountUserLinksInsert
+    { _mauliPayload = pMauliPayload_
+    , _mauliAccountId = pMauliAccountId_
+    }
+
+-- | Multipart request metadata.
+mauliPayload :: Lens' ManagementAccountUserLinksInsert EntityUserLink
+mauliPayload
+  = lens _mauliPayload (\ s a -> s{_mauliPayload = a})
+
+-- | Account ID to create the user link for.
+mauliAccountId :: Lens' ManagementAccountUserLinksInsert Text
+mauliAccountId
+  = lens _mauliAccountId
+      (\ s a -> s{_mauliAccountId = a})
+
+instance GoogleRequest
+         ManagementAccountUserLinksInsert where
+        type Rs ManagementAccountUserLinksInsert =
+             EntityUserLink
+        requestClient ManagementAccountUserLinksInsert{..}
+          = go _mauliAccountId (Just AltJSON) _mauliPayload
+              analyticsService
+          where go
+                  = buildClient
+                      (Proxy ::
+                         Proxy ManagementAccountUserLinksInsertResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Analytics/Management/AccountUserLinks/List.hs b/gen/Network/Google/Resource/Analytics/Management/AccountUserLinks/List.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Analytics/Management/AccountUserLinks/List.hs
@@ -0,0 +1,120 @@
+{-# LANGUAGE DataKinds          #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE FlexibleInstances  #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+{-# LANGUAGE TypeOperators      #-}
+
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
+
+-- |
+-- Module      : Network.Google.Resource.Analytics.Management.AccountUserLinks.List
+-- Copyright   : (c) 2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Lists account-user links for a given account.
+--
+-- /See:/ <https://developers.google.com/analytics/ Google Analytics API Reference> for @analytics.management.accountUserLinks.list@.
+module Network.Google.Resource.Analytics.Management.AccountUserLinks.List
+    (
+    -- * REST Resource
+      ManagementAccountUserLinksListResource
+
+    -- * Creating a Request
+    , managementAccountUserLinksList
+    , ManagementAccountUserLinksList
+
+    -- * Request Lenses
+    , maullAccountId
+    , maullStartIndex
+    , maullMaxResults
+    ) where
+
+import           Network.Google.Analytics.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @analytics.management.accountUserLinks.list@ method which the
+-- 'ManagementAccountUserLinksList' request conforms to.
+type ManagementAccountUserLinksListResource =
+     "analytics" :>
+       "v3" :>
+         "management" :>
+           "accounts" :>
+             Capture "accountId" Text :>
+               "entityUserLinks" :>
+                 QueryParam "start-index" (Textual Int32) :>
+                   QueryParam "max-results" (Textual Int32) :>
+                     QueryParam "alt" AltJSON :>
+                       Get '[JSON] EntityUserLinks
+
+-- | Lists account-user links for a given account.
+--
+-- /See:/ 'managementAccountUserLinksList' smart constructor.
+data ManagementAccountUserLinksList = ManagementAccountUserLinksList
+    { _maullAccountId  :: !Text
+    , _maullStartIndex :: !(Maybe (Textual Int32))
+    , _maullMaxResults :: !(Maybe (Textual Int32))
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ManagementAccountUserLinksList' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'maullAccountId'
+--
+-- * 'maullStartIndex'
+--
+-- * 'maullMaxResults'
+managementAccountUserLinksList
+    :: Text -- ^ 'maullAccountId'
+    -> ManagementAccountUserLinksList
+managementAccountUserLinksList pMaullAccountId_ =
+    ManagementAccountUserLinksList
+    { _maullAccountId = pMaullAccountId_
+    , _maullStartIndex = Nothing
+    , _maullMaxResults = Nothing
+    }
+
+-- | Account ID to retrieve the user links for.
+maullAccountId :: Lens' ManagementAccountUserLinksList Text
+maullAccountId
+  = lens _maullAccountId
+      (\ s a -> s{_maullAccountId = a})
+
+-- | An index of the first account-user link to retrieve. Use this parameter
+-- as a pagination mechanism along with the max-results parameter.
+maullStartIndex :: Lens' ManagementAccountUserLinksList (Maybe Int32)
+maullStartIndex
+  = lens _maullStartIndex
+      (\ s a -> s{_maullStartIndex = a})
+      . mapping _Coerce
+
+-- | The maximum number of account-user links to include in this response.
+maullMaxResults :: Lens' ManagementAccountUserLinksList (Maybe Int32)
+maullMaxResults
+  = lens _maullMaxResults
+      (\ s a -> s{_maullMaxResults = a})
+      . mapping _Coerce
+
+instance GoogleRequest ManagementAccountUserLinksList
+         where
+        type Rs ManagementAccountUserLinksList =
+             EntityUserLinks
+        requestClient ManagementAccountUserLinksList{..}
+          = go _maullAccountId _maullStartIndex
+              _maullMaxResults
+              (Just AltJSON)
+              analyticsService
+          where go
+                  = buildClient
+                      (Proxy ::
+                         Proxy ManagementAccountUserLinksListResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Analytics/Management/AccountUserLinks/Update.hs b/gen/Network/Google/Resource/Analytics/Management/AccountUserLinks/Update.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Analytics/Management/AccountUserLinks/Update.hs
@@ -0,0 +1,116 @@
+{-# LANGUAGE DataKinds          #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE FlexibleInstances  #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+{-# LANGUAGE TypeOperators      #-}
+
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
+
+-- |
+-- Module      : Network.Google.Resource.Analytics.Management.AccountUserLinks.Update
+-- Copyright   : (c) 2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Updates permissions for an existing user on the given account.
+--
+-- /See:/ <https://developers.google.com/analytics/ Google Analytics API Reference> for @analytics.management.accountUserLinks.update@.
+module Network.Google.Resource.Analytics.Management.AccountUserLinks.Update
+    (
+    -- * REST Resource
+      ManagementAccountUserLinksUpdateResource
+
+    -- * Creating a Request
+    , managementAccountUserLinksUpdate
+    , ManagementAccountUserLinksUpdate
+
+    -- * Request Lenses
+    , mauluPayload
+    , mauluAccountId
+    , mauluLinkId
+    ) where
+
+import           Network.Google.Analytics.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @analytics.management.accountUserLinks.update@ method which the
+-- 'ManagementAccountUserLinksUpdate' request conforms to.
+type ManagementAccountUserLinksUpdateResource =
+     "analytics" :>
+       "v3" :>
+         "management" :>
+           "accounts" :>
+             Capture "accountId" Text :>
+               "entityUserLinks" :>
+                 Capture "linkId" Text :>
+                   QueryParam "alt" AltJSON :>
+                     ReqBody '[JSON] EntityUserLink :>
+                       Put '[JSON] EntityUserLink
+
+-- | Updates permissions for an existing user on the given account.
+--
+-- /See:/ 'managementAccountUserLinksUpdate' smart constructor.
+data ManagementAccountUserLinksUpdate = ManagementAccountUserLinksUpdate
+    { _mauluPayload   :: !EntityUserLink
+    , _mauluAccountId :: !Text
+    , _mauluLinkId    :: !Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ManagementAccountUserLinksUpdate' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'mauluPayload'
+--
+-- * 'mauluAccountId'
+--
+-- * 'mauluLinkId'
+managementAccountUserLinksUpdate
+    :: EntityUserLink -- ^ 'mauluPayload'
+    -> Text -- ^ 'mauluAccountId'
+    -> Text -- ^ 'mauluLinkId'
+    -> ManagementAccountUserLinksUpdate
+managementAccountUserLinksUpdate pMauluPayload_ pMauluAccountId_ pMauluLinkId_ =
+    ManagementAccountUserLinksUpdate
+    { _mauluPayload = pMauluPayload_
+    , _mauluAccountId = pMauluAccountId_
+    , _mauluLinkId = pMauluLinkId_
+    }
+
+-- | Multipart request metadata.
+mauluPayload :: Lens' ManagementAccountUserLinksUpdate EntityUserLink
+mauluPayload
+  = lens _mauluPayload (\ s a -> s{_mauluPayload = a})
+
+-- | Account ID to update the account-user link for.
+mauluAccountId :: Lens' ManagementAccountUserLinksUpdate Text
+mauluAccountId
+  = lens _mauluAccountId
+      (\ s a -> s{_mauluAccountId = a})
+
+-- | Link ID to update the account-user link for.
+mauluLinkId :: Lens' ManagementAccountUserLinksUpdate Text
+mauluLinkId
+  = lens _mauluLinkId (\ s a -> s{_mauluLinkId = a})
+
+instance GoogleRequest
+         ManagementAccountUserLinksUpdate where
+        type Rs ManagementAccountUserLinksUpdate =
+             EntityUserLink
+        requestClient ManagementAccountUserLinksUpdate{..}
+          = go _mauluAccountId _mauluLinkId (Just AltJSON)
+              _mauluPayload
+              analyticsService
+          where go
+                  = buildClient
+                      (Proxy ::
+                         Proxy ManagementAccountUserLinksUpdateResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Analytics/Management/Accounts/List.hs b/gen/Network/Google/Resource/Analytics/Management/Accounts/List.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Analytics/Management/Accounts/List.hs
@@ -0,0 +1,100 @@
+{-# LANGUAGE DataKinds          #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE FlexibleInstances  #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+{-# LANGUAGE TypeOperators      #-}
+
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
+
+-- |
+-- Module      : Network.Google.Resource.Analytics.Management.Accounts.List
+-- Copyright   : (c) 2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Lists all accounts to which the user has access.
+--
+-- /See:/ <https://developers.google.com/analytics/ Google Analytics API Reference> for @analytics.management.accounts.list@.
+module Network.Google.Resource.Analytics.Management.Accounts.List
+    (
+    -- * REST Resource
+      ManagementAccountsListResource
+
+    -- * Creating a Request
+    , managementAccountsList
+    , ManagementAccountsList
+
+    -- * Request Lenses
+    , malStartIndex
+    , malMaxResults
+    ) where
+
+import           Network.Google.Analytics.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @analytics.management.accounts.list@ method which the
+-- 'ManagementAccountsList' request conforms to.
+type ManagementAccountsListResource =
+     "analytics" :>
+       "v3" :>
+         "management" :>
+           "accounts" :>
+             QueryParam "start-index" (Textual Int32) :>
+               QueryParam "max-results" (Textual Int32) :>
+                 QueryParam "alt" AltJSON :> Get '[JSON] Accounts
+
+-- | Lists all accounts to which the user has access.
+--
+-- /See:/ 'managementAccountsList' smart constructor.
+data ManagementAccountsList = ManagementAccountsList
+    { _malStartIndex :: !(Maybe (Textual Int32))
+    , _malMaxResults :: !(Maybe (Textual Int32))
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ManagementAccountsList' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'malStartIndex'
+--
+-- * 'malMaxResults'
+managementAccountsList
+    :: ManagementAccountsList
+managementAccountsList =
+    ManagementAccountsList
+    { _malStartIndex = Nothing
+    , _malMaxResults = Nothing
+    }
+
+-- | An index of the first account to retrieve. Use this parameter as a
+-- pagination mechanism along with the max-results parameter.
+malStartIndex :: Lens' ManagementAccountsList (Maybe Int32)
+malStartIndex
+  = lens _malStartIndex
+      (\ s a -> s{_malStartIndex = a})
+      . mapping _Coerce
+
+-- | The maximum number of accounts to include in this response.
+malMaxResults :: Lens' ManagementAccountsList (Maybe Int32)
+malMaxResults
+  = lens _malMaxResults
+      (\ s a -> s{_malMaxResults = a})
+      . mapping _Coerce
+
+instance GoogleRequest ManagementAccountsList where
+        type Rs ManagementAccountsList = Accounts
+        requestClient ManagementAccountsList{..}
+          = go _malStartIndex _malMaxResults (Just AltJSON)
+              analyticsService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy ManagementAccountsListResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Analytics/Management/CustomDataSources/List.hs b/gen/Network/Google/Resource/Analytics/Management/CustomDataSources/List.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Analytics/Management/CustomDataSources/List.hs
@@ -0,0 +1,136 @@
+{-# 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.Analytics.Management.CustomDataSources.List
+-- Copyright   : (c) 2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- List custom data sources to which the user has access.
+--
+-- /See:/ <https://developers.google.com/analytics/ Google Analytics API Reference> for @analytics.management.customDataSources.list@.
+module Network.Google.Resource.Analytics.Management.CustomDataSources.List
+    (
+    -- * REST Resource
+      ManagementCustomDataSourcesListResource
+
+    -- * Creating a Request
+    , managementCustomDataSourcesList
+    , ManagementCustomDataSourcesList
+
+    -- * Request Lenses
+    , mcdslWebPropertyId
+    , mcdslAccountId
+    , mcdslStartIndex
+    , mcdslMaxResults
+    ) where
+
+import           Network.Google.Analytics.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @analytics.management.customDataSources.list@ method which the
+-- 'ManagementCustomDataSourcesList' request conforms to.
+type ManagementCustomDataSourcesListResource =
+     "analytics" :>
+       "v3" :>
+         "management" :>
+           "accounts" :>
+             Capture "accountId" Text :>
+               "webproperties" :>
+                 Capture "webPropertyId" Text :>
+                   "customDataSources" :>
+                     QueryParam "start-index" (Textual Int32) :>
+                       QueryParam "max-results" (Textual Int32) :>
+                         QueryParam "alt" AltJSON :>
+                           Get '[JSON] CustomDataSources
+
+-- | List custom data sources to which the user has access.
+--
+-- /See:/ 'managementCustomDataSourcesList' smart constructor.
+data ManagementCustomDataSourcesList = ManagementCustomDataSourcesList
+    { _mcdslWebPropertyId :: !Text
+    , _mcdslAccountId     :: !Text
+    , _mcdslStartIndex    :: !(Maybe (Textual Int32))
+    , _mcdslMaxResults    :: !(Maybe (Textual Int32))
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ManagementCustomDataSourcesList' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'mcdslWebPropertyId'
+--
+-- * 'mcdslAccountId'
+--
+-- * 'mcdslStartIndex'
+--
+-- * 'mcdslMaxResults'
+managementCustomDataSourcesList
+    :: Text -- ^ 'mcdslWebPropertyId'
+    -> Text -- ^ 'mcdslAccountId'
+    -> ManagementCustomDataSourcesList
+managementCustomDataSourcesList pMcdslWebPropertyId_ pMcdslAccountId_ =
+    ManagementCustomDataSourcesList
+    { _mcdslWebPropertyId = pMcdslWebPropertyId_
+    , _mcdslAccountId = pMcdslAccountId_
+    , _mcdslStartIndex = Nothing
+    , _mcdslMaxResults = Nothing
+    }
+
+-- | Web property Id for the custom data sources to retrieve.
+mcdslWebPropertyId :: Lens' ManagementCustomDataSourcesList Text
+mcdslWebPropertyId
+  = lens _mcdslWebPropertyId
+      (\ s a -> s{_mcdslWebPropertyId = a})
+
+-- | Account Id for the custom data sources to retrieve.
+mcdslAccountId :: Lens' ManagementCustomDataSourcesList Text
+mcdslAccountId
+  = lens _mcdslAccountId
+      (\ s a -> s{_mcdslAccountId = a})
+
+-- | A 1-based index of the first custom data source to retrieve. Use this
+-- parameter as a pagination mechanism along with the max-results
+-- parameter.
+mcdslStartIndex :: Lens' ManagementCustomDataSourcesList (Maybe Int32)
+mcdslStartIndex
+  = lens _mcdslStartIndex
+      (\ s a -> s{_mcdslStartIndex = a})
+      . mapping _Coerce
+
+-- | The maximum number of custom data sources to include in this response.
+mcdslMaxResults :: Lens' ManagementCustomDataSourcesList (Maybe Int32)
+mcdslMaxResults
+  = lens _mcdslMaxResults
+      (\ s a -> s{_mcdslMaxResults = a})
+      . mapping _Coerce
+
+instance GoogleRequest
+         ManagementCustomDataSourcesList where
+        type Rs ManagementCustomDataSourcesList =
+             CustomDataSources
+        requestClient ManagementCustomDataSourcesList{..}
+          = go _mcdslAccountId _mcdslWebPropertyId
+              _mcdslStartIndex
+              _mcdslMaxResults
+              (Just AltJSON)
+              analyticsService
+          where go
+                  = buildClient
+                      (Proxy ::
+                         Proxy ManagementCustomDataSourcesListResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Analytics/Management/CustomDimensions/Get.hs b/gen/Network/Google/Resource/Analytics/Management/CustomDimensions/Get.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Analytics/Management/CustomDimensions/Get.hs
@@ -0,0 +1,120 @@
+{-# LANGUAGE DataKinds          #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE FlexibleInstances  #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+{-# LANGUAGE TypeOperators      #-}
+
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
+
+-- |
+-- Module      : Network.Google.Resource.Analytics.Management.CustomDimensions.Get
+-- Copyright   : (c) 2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Get a custom dimension to which the user has access.
+--
+-- /See:/ <https://developers.google.com/analytics/ Google Analytics API Reference> for @analytics.management.customDimensions.get@.
+module Network.Google.Resource.Analytics.Management.CustomDimensions.Get
+    (
+    -- * REST Resource
+      ManagementCustomDimensionsGetResource
+
+    -- * Creating a Request
+    , managementCustomDimensionsGet
+    , ManagementCustomDimensionsGet
+
+    -- * Request Lenses
+    , mcdgWebPropertyId
+    , mcdgAccountId
+    , mcdgCustomDimensionId
+    ) where
+
+import           Network.Google.Analytics.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @analytics.management.customDimensions.get@ method which the
+-- 'ManagementCustomDimensionsGet' request conforms to.
+type ManagementCustomDimensionsGetResource =
+     "analytics" :>
+       "v3" :>
+         "management" :>
+           "accounts" :>
+             Capture "accountId" Text :>
+               "webproperties" :>
+                 Capture "webPropertyId" Text :>
+                   "customDimensions" :>
+                     Capture "customDimensionId" Text :>
+                       QueryParam "alt" AltJSON :>
+                         Get '[JSON] CustomDimension
+
+-- | Get a custom dimension to which the user has access.
+--
+-- /See:/ 'managementCustomDimensionsGet' smart constructor.
+data ManagementCustomDimensionsGet = ManagementCustomDimensionsGet
+    { _mcdgWebPropertyId     :: !Text
+    , _mcdgAccountId         :: !Text
+    , _mcdgCustomDimensionId :: !Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ManagementCustomDimensionsGet' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'mcdgWebPropertyId'
+--
+-- * 'mcdgAccountId'
+--
+-- * 'mcdgCustomDimensionId'
+managementCustomDimensionsGet
+    :: Text -- ^ 'mcdgWebPropertyId'
+    -> Text -- ^ 'mcdgAccountId'
+    -> Text -- ^ 'mcdgCustomDimensionId'
+    -> ManagementCustomDimensionsGet
+managementCustomDimensionsGet pMcdgWebPropertyId_ pMcdgAccountId_ pMcdgCustomDimensionId_ =
+    ManagementCustomDimensionsGet
+    { _mcdgWebPropertyId = pMcdgWebPropertyId_
+    , _mcdgAccountId = pMcdgAccountId_
+    , _mcdgCustomDimensionId = pMcdgCustomDimensionId_
+    }
+
+-- | Web property ID for the custom dimension to retrieve.
+mcdgWebPropertyId :: Lens' ManagementCustomDimensionsGet Text
+mcdgWebPropertyId
+  = lens _mcdgWebPropertyId
+      (\ s a -> s{_mcdgWebPropertyId = a})
+
+-- | Account ID for the custom dimension to retrieve.
+mcdgAccountId :: Lens' ManagementCustomDimensionsGet Text
+mcdgAccountId
+  = lens _mcdgAccountId
+      (\ s a -> s{_mcdgAccountId = a})
+
+-- | The ID of the custom dimension to retrieve.
+mcdgCustomDimensionId :: Lens' ManagementCustomDimensionsGet Text
+mcdgCustomDimensionId
+  = lens _mcdgCustomDimensionId
+      (\ s a -> s{_mcdgCustomDimensionId = a})
+
+instance GoogleRequest ManagementCustomDimensionsGet
+         where
+        type Rs ManagementCustomDimensionsGet =
+             CustomDimension
+        requestClient ManagementCustomDimensionsGet{..}
+          = go _mcdgAccountId _mcdgWebPropertyId
+              _mcdgCustomDimensionId
+              (Just AltJSON)
+              analyticsService
+          where go
+                  = buildClient
+                      (Proxy ::
+                         Proxy ManagementCustomDimensionsGetResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Analytics/Management/CustomDimensions/Insert.hs b/gen/Network/Google/Resource/Analytics/Management/CustomDimensions/Insert.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Analytics/Management/CustomDimensions/Insert.hs
@@ -0,0 +1,118 @@
+{-# 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.Analytics.Management.CustomDimensions.Insert
+-- Copyright   : (c) 2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Create a new custom dimension.
+--
+-- /See:/ <https://developers.google.com/analytics/ Google Analytics API Reference> for @analytics.management.customDimensions.insert@.
+module Network.Google.Resource.Analytics.Management.CustomDimensions.Insert
+    (
+    -- * REST Resource
+      ManagementCustomDimensionsInsertResource
+
+    -- * Creating a Request
+    , managementCustomDimensionsInsert
+    , ManagementCustomDimensionsInsert
+
+    -- * Request Lenses
+    , mcdiWebPropertyId
+    , mcdiPayload
+    , mcdiAccountId
+    ) where
+
+import           Network.Google.Analytics.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @analytics.management.customDimensions.insert@ method which the
+-- 'ManagementCustomDimensionsInsert' request conforms to.
+type ManagementCustomDimensionsInsertResource =
+     "analytics" :>
+       "v3" :>
+         "management" :>
+           "accounts" :>
+             Capture "accountId" Text :>
+               "webproperties" :>
+                 Capture "webPropertyId" Text :>
+                   "customDimensions" :>
+                     QueryParam "alt" AltJSON :>
+                       ReqBody '[JSON] CustomDimension :>
+                         Post '[JSON] CustomDimension
+
+-- | Create a new custom dimension.
+--
+-- /See:/ 'managementCustomDimensionsInsert' smart constructor.
+data ManagementCustomDimensionsInsert = ManagementCustomDimensionsInsert
+    { _mcdiWebPropertyId :: !Text
+    , _mcdiPayload       :: !CustomDimension
+    , _mcdiAccountId     :: !Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ManagementCustomDimensionsInsert' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'mcdiWebPropertyId'
+--
+-- * 'mcdiPayload'
+--
+-- * 'mcdiAccountId'
+managementCustomDimensionsInsert
+    :: Text -- ^ 'mcdiWebPropertyId'
+    -> CustomDimension -- ^ 'mcdiPayload'
+    -> Text -- ^ 'mcdiAccountId'
+    -> ManagementCustomDimensionsInsert
+managementCustomDimensionsInsert pMcdiWebPropertyId_ pMcdiPayload_ pMcdiAccountId_ =
+    ManagementCustomDimensionsInsert
+    { _mcdiWebPropertyId = pMcdiWebPropertyId_
+    , _mcdiPayload = pMcdiPayload_
+    , _mcdiAccountId = pMcdiAccountId_
+    }
+
+-- | Web property ID for the custom dimension to create.
+mcdiWebPropertyId :: Lens' ManagementCustomDimensionsInsert Text
+mcdiWebPropertyId
+  = lens _mcdiWebPropertyId
+      (\ s a -> s{_mcdiWebPropertyId = a})
+
+-- | Multipart request metadata.
+mcdiPayload :: Lens' ManagementCustomDimensionsInsert CustomDimension
+mcdiPayload
+  = lens _mcdiPayload (\ s a -> s{_mcdiPayload = a})
+
+-- | Account ID for the custom dimension to create.
+mcdiAccountId :: Lens' ManagementCustomDimensionsInsert Text
+mcdiAccountId
+  = lens _mcdiAccountId
+      (\ s a -> s{_mcdiAccountId = a})
+
+instance GoogleRequest
+         ManagementCustomDimensionsInsert where
+        type Rs ManagementCustomDimensionsInsert =
+             CustomDimension
+        requestClient ManagementCustomDimensionsInsert{..}
+          = go _mcdiAccountId _mcdiWebPropertyId (Just AltJSON)
+              _mcdiPayload
+              analyticsService
+          where go
+                  = buildClient
+                      (Proxy ::
+                         Proxy ManagementCustomDimensionsInsertResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Analytics/Management/CustomDimensions/List.hs b/gen/Network/Google/Resource/Analytics/Management/CustomDimensions/List.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Analytics/Management/CustomDimensions/List.hs
@@ -0,0 +1,135 @@
+{-# LANGUAGE DataKinds          #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE FlexibleInstances  #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+{-# LANGUAGE TypeOperators      #-}
+
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
+
+-- |
+-- Module      : Network.Google.Resource.Analytics.Management.CustomDimensions.List
+-- Copyright   : (c) 2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Lists custom dimensions to which the user has access.
+--
+-- /See:/ <https://developers.google.com/analytics/ Google Analytics API Reference> for @analytics.management.customDimensions.list@.
+module Network.Google.Resource.Analytics.Management.CustomDimensions.List
+    (
+    -- * REST Resource
+      ManagementCustomDimensionsListResource
+
+    -- * Creating a Request
+    , managementCustomDimensionsList
+    , ManagementCustomDimensionsList
+
+    -- * Request Lenses
+    , mcdlWebPropertyId
+    , mcdlAccountId
+    , mcdlStartIndex
+    , mcdlMaxResults
+    ) where
+
+import           Network.Google.Analytics.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @analytics.management.customDimensions.list@ method which the
+-- 'ManagementCustomDimensionsList' request conforms to.
+type ManagementCustomDimensionsListResource =
+     "analytics" :>
+       "v3" :>
+         "management" :>
+           "accounts" :>
+             Capture "accountId" Text :>
+               "webproperties" :>
+                 Capture "webPropertyId" Text :>
+                   "customDimensions" :>
+                     QueryParam "start-index" (Textual Int32) :>
+                       QueryParam "max-results" (Textual Int32) :>
+                         QueryParam "alt" AltJSON :>
+                           Get '[JSON] CustomDimensions
+
+-- | Lists custom dimensions to which the user has access.
+--
+-- /See:/ 'managementCustomDimensionsList' smart constructor.
+data ManagementCustomDimensionsList = ManagementCustomDimensionsList
+    { _mcdlWebPropertyId :: !Text
+    , _mcdlAccountId     :: !Text
+    , _mcdlStartIndex    :: !(Maybe (Textual Int32))
+    , _mcdlMaxResults    :: !(Maybe (Textual Int32))
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ManagementCustomDimensionsList' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'mcdlWebPropertyId'
+--
+-- * 'mcdlAccountId'
+--
+-- * 'mcdlStartIndex'
+--
+-- * 'mcdlMaxResults'
+managementCustomDimensionsList
+    :: Text -- ^ 'mcdlWebPropertyId'
+    -> Text -- ^ 'mcdlAccountId'
+    -> ManagementCustomDimensionsList
+managementCustomDimensionsList pMcdlWebPropertyId_ pMcdlAccountId_ =
+    ManagementCustomDimensionsList
+    { _mcdlWebPropertyId = pMcdlWebPropertyId_
+    , _mcdlAccountId = pMcdlAccountId_
+    , _mcdlStartIndex = Nothing
+    , _mcdlMaxResults = Nothing
+    }
+
+-- | Web property ID for the custom dimensions to retrieve.
+mcdlWebPropertyId :: Lens' ManagementCustomDimensionsList Text
+mcdlWebPropertyId
+  = lens _mcdlWebPropertyId
+      (\ s a -> s{_mcdlWebPropertyId = a})
+
+-- | Account ID for the custom dimensions to retrieve.
+mcdlAccountId :: Lens' ManagementCustomDimensionsList Text
+mcdlAccountId
+  = lens _mcdlAccountId
+      (\ s a -> s{_mcdlAccountId = a})
+
+-- | An index of the first entity to retrieve. Use this parameter as a
+-- pagination mechanism along with the max-results parameter.
+mcdlStartIndex :: Lens' ManagementCustomDimensionsList (Maybe Int32)
+mcdlStartIndex
+  = lens _mcdlStartIndex
+      (\ s a -> s{_mcdlStartIndex = a})
+      . mapping _Coerce
+
+-- | The maximum number of custom dimensions to include in this response.
+mcdlMaxResults :: Lens' ManagementCustomDimensionsList (Maybe Int32)
+mcdlMaxResults
+  = lens _mcdlMaxResults
+      (\ s a -> s{_mcdlMaxResults = a})
+      . mapping _Coerce
+
+instance GoogleRequest ManagementCustomDimensionsList
+         where
+        type Rs ManagementCustomDimensionsList =
+             CustomDimensions
+        requestClient ManagementCustomDimensionsList{..}
+          = go _mcdlAccountId _mcdlWebPropertyId
+              _mcdlStartIndex
+              _mcdlMaxResults
+              (Just AltJSON)
+              analyticsService
+          where go
+                  = buildClient
+                      (Proxy ::
+                         Proxy ManagementCustomDimensionsListResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Analytics/Management/CustomDimensions/Patch.hs b/gen/Network/Google/Resource/Analytics/Management/CustomDimensions/Patch.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Analytics/Management/CustomDimensions/Patch.hs
@@ -0,0 +1,149 @@
+{-# 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.Analytics.Management.CustomDimensions.Patch
+-- Copyright   : (c) 2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Updates an existing custom dimension. This method supports patch
+-- semantics.
+--
+-- /See:/ <https://developers.google.com/analytics/ Google Analytics API Reference> for @analytics.management.customDimensions.patch@.
+module Network.Google.Resource.Analytics.Management.CustomDimensions.Patch
+    (
+    -- * REST Resource
+      ManagementCustomDimensionsPatchResource
+
+    -- * Creating a Request
+    , managementCustomDimensionsPatch
+    , ManagementCustomDimensionsPatch
+
+    -- * Request Lenses
+    , mcdpWebPropertyId
+    , mcdpIgnoreCustomDataSourceLinks
+    , mcdpPayload
+    , mcdpAccountId
+    , mcdpCustomDimensionId
+    ) where
+
+import           Network.Google.Analytics.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @analytics.management.customDimensions.patch@ method which the
+-- 'ManagementCustomDimensionsPatch' request conforms to.
+type ManagementCustomDimensionsPatchResource =
+     "analytics" :>
+       "v3" :>
+         "management" :>
+           "accounts" :>
+             Capture "accountId" Text :>
+               "webproperties" :>
+                 Capture "webPropertyId" Text :>
+                   "customDimensions" :>
+                     Capture "customDimensionId" Text :>
+                       QueryParam "ignoreCustomDataSourceLinks" Bool :>
+                         QueryParam "alt" AltJSON :>
+                           ReqBody '[JSON] CustomDimension :>
+                             Patch '[JSON] CustomDimension
+
+-- | Updates an existing custom dimension. This method supports patch
+-- semantics.
+--
+-- /See:/ 'managementCustomDimensionsPatch' smart constructor.
+data ManagementCustomDimensionsPatch = ManagementCustomDimensionsPatch
+    { _mcdpWebPropertyId               :: !Text
+    , _mcdpIgnoreCustomDataSourceLinks :: !Bool
+    , _mcdpPayload                     :: !CustomDimension
+    , _mcdpAccountId                   :: !Text
+    , _mcdpCustomDimensionId           :: !Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ManagementCustomDimensionsPatch' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'mcdpWebPropertyId'
+--
+-- * 'mcdpIgnoreCustomDataSourceLinks'
+--
+-- * 'mcdpPayload'
+--
+-- * 'mcdpAccountId'
+--
+-- * 'mcdpCustomDimensionId'
+managementCustomDimensionsPatch
+    :: Text -- ^ 'mcdpWebPropertyId'
+    -> CustomDimension -- ^ 'mcdpPayload'
+    -> Text -- ^ 'mcdpAccountId'
+    -> Text -- ^ 'mcdpCustomDimensionId'
+    -> ManagementCustomDimensionsPatch
+managementCustomDimensionsPatch pMcdpWebPropertyId_ pMcdpPayload_ pMcdpAccountId_ pMcdpCustomDimensionId_ =
+    ManagementCustomDimensionsPatch
+    { _mcdpWebPropertyId = pMcdpWebPropertyId_
+    , _mcdpIgnoreCustomDataSourceLinks = False
+    , _mcdpPayload = pMcdpPayload_
+    , _mcdpAccountId = pMcdpAccountId_
+    , _mcdpCustomDimensionId = pMcdpCustomDimensionId_
+    }
+
+-- | Web property ID for the custom dimension to update.
+mcdpWebPropertyId :: Lens' ManagementCustomDimensionsPatch Text
+mcdpWebPropertyId
+  = lens _mcdpWebPropertyId
+      (\ s a -> s{_mcdpWebPropertyId = a})
+
+-- | Force the update and ignore any warnings related to the custom dimension
+-- being linked to a custom data source \/ data set.
+mcdpIgnoreCustomDataSourceLinks :: Lens' ManagementCustomDimensionsPatch Bool
+mcdpIgnoreCustomDataSourceLinks
+  = lens _mcdpIgnoreCustomDataSourceLinks
+      (\ s a -> s{_mcdpIgnoreCustomDataSourceLinks = a})
+
+-- | Multipart request metadata.
+mcdpPayload :: Lens' ManagementCustomDimensionsPatch CustomDimension
+mcdpPayload
+  = lens _mcdpPayload (\ s a -> s{_mcdpPayload = a})
+
+-- | Account ID for the custom dimension to update.
+mcdpAccountId :: Lens' ManagementCustomDimensionsPatch Text
+mcdpAccountId
+  = lens _mcdpAccountId
+      (\ s a -> s{_mcdpAccountId = a})
+
+-- | Custom dimension ID for the custom dimension to update.
+mcdpCustomDimensionId :: Lens' ManagementCustomDimensionsPatch Text
+mcdpCustomDimensionId
+  = lens _mcdpCustomDimensionId
+      (\ s a -> s{_mcdpCustomDimensionId = a})
+
+instance GoogleRequest
+         ManagementCustomDimensionsPatch where
+        type Rs ManagementCustomDimensionsPatch =
+             CustomDimension
+        requestClient ManagementCustomDimensionsPatch{..}
+          = go _mcdpAccountId _mcdpWebPropertyId
+              _mcdpCustomDimensionId
+              (Just _mcdpIgnoreCustomDataSourceLinks)
+              (Just AltJSON)
+              _mcdpPayload
+              analyticsService
+          where go
+                  = buildClient
+                      (Proxy ::
+                         Proxy ManagementCustomDimensionsPatchResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Analytics/Management/CustomDimensions/Update.hs b/gen/Network/Google/Resource/Analytics/Management/CustomDimensions/Update.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Analytics/Management/CustomDimensions/Update.hs
@@ -0,0 +1,147 @@
+{-# LANGUAGE DataKinds          #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE FlexibleInstances  #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+{-# LANGUAGE TypeOperators      #-}
+
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
+
+-- |
+-- Module      : Network.Google.Resource.Analytics.Management.CustomDimensions.Update
+-- Copyright   : (c) 2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Updates an existing custom dimension.
+--
+-- /See:/ <https://developers.google.com/analytics/ Google Analytics API Reference> for @analytics.management.customDimensions.update@.
+module Network.Google.Resource.Analytics.Management.CustomDimensions.Update
+    (
+    -- * REST Resource
+      ManagementCustomDimensionsUpdateResource
+
+    -- * Creating a Request
+    , managementCustomDimensionsUpdate
+    , ManagementCustomDimensionsUpdate
+
+    -- * Request Lenses
+    , mcduWebPropertyId
+    , mcduIgnoreCustomDataSourceLinks
+    , mcduPayload
+    , mcduAccountId
+    , mcduCustomDimensionId
+    ) where
+
+import           Network.Google.Analytics.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @analytics.management.customDimensions.update@ method which the
+-- 'ManagementCustomDimensionsUpdate' request conforms to.
+type ManagementCustomDimensionsUpdateResource =
+     "analytics" :>
+       "v3" :>
+         "management" :>
+           "accounts" :>
+             Capture "accountId" Text :>
+               "webproperties" :>
+                 Capture "webPropertyId" Text :>
+                   "customDimensions" :>
+                     Capture "customDimensionId" Text :>
+                       QueryParam "ignoreCustomDataSourceLinks" Bool :>
+                         QueryParam "alt" AltJSON :>
+                           ReqBody '[JSON] CustomDimension :>
+                             Put '[JSON] CustomDimension
+
+-- | Updates an existing custom dimension.
+--
+-- /See:/ 'managementCustomDimensionsUpdate' smart constructor.
+data ManagementCustomDimensionsUpdate = ManagementCustomDimensionsUpdate
+    { _mcduWebPropertyId               :: !Text
+    , _mcduIgnoreCustomDataSourceLinks :: !Bool
+    , _mcduPayload                     :: !CustomDimension
+    , _mcduAccountId                   :: !Text
+    , _mcduCustomDimensionId           :: !Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ManagementCustomDimensionsUpdate' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'mcduWebPropertyId'
+--
+-- * 'mcduIgnoreCustomDataSourceLinks'
+--
+-- * 'mcduPayload'
+--
+-- * 'mcduAccountId'
+--
+-- * 'mcduCustomDimensionId'
+managementCustomDimensionsUpdate
+    :: Text -- ^ 'mcduWebPropertyId'
+    -> CustomDimension -- ^ 'mcduPayload'
+    -> Text -- ^ 'mcduAccountId'
+    -> Text -- ^ 'mcduCustomDimensionId'
+    -> ManagementCustomDimensionsUpdate
+managementCustomDimensionsUpdate pMcduWebPropertyId_ pMcduPayload_ pMcduAccountId_ pMcduCustomDimensionId_ =
+    ManagementCustomDimensionsUpdate
+    { _mcduWebPropertyId = pMcduWebPropertyId_
+    , _mcduIgnoreCustomDataSourceLinks = False
+    , _mcduPayload = pMcduPayload_
+    , _mcduAccountId = pMcduAccountId_
+    , _mcduCustomDimensionId = pMcduCustomDimensionId_
+    }
+
+-- | Web property ID for the custom dimension to update.
+mcduWebPropertyId :: Lens' ManagementCustomDimensionsUpdate Text
+mcduWebPropertyId
+  = lens _mcduWebPropertyId
+      (\ s a -> s{_mcduWebPropertyId = a})
+
+-- | Force the update and ignore any warnings related to the custom dimension
+-- being linked to a custom data source \/ data set.
+mcduIgnoreCustomDataSourceLinks :: Lens' ManagementCustomDimensionsUpdate Bool
+mcduIgnoreCustomDataSourceLinks
+  = lens _mcduIgnoreCustomDataSourceLinks
+      (\ s a -> s{_mcduIgnoreCustomDataSourceLinks = a})
+
+-- | Multipart request metadata.
+mcduPayload :: Lens' ManagementCustomDimensionsUpdate CustomDimension
+mcduPayload
+  = lens _mcduPayload (\ s a -> s{_mcduPayload = a})
+
+-- | Account ID for the custom dimension to update.
+mcduAccountId :: Lens' ManagementCustomDimensionsUpdate Text
+mcduAccountId
+  = lens _mcduAccountId
+      (\ s a -> s{_mcduAccountId = a})
+
+-- | Custom dimension ID for the custom dimension to update.
+mcduCustomDimensionId :: Lens' ManagementCustomDimensionsUpdate Text
+mcduCustomDimensionId
+  = lens _mcduCustomDimensionId
+      (\ s a -> s{_mcduCustomDimensionId = a})
+
+instance GoogleRequest
+         ManagementCustomDimensionsUpdate where
+        type Rs ManagementCustomDimensionsUpdate =
+             CustomDimension
+        requestClient ManagementCustomDimensionsUpdate{..}
+          = go _mcduAccountId _mcduWebPropertyId
+              _mcduCustomDimensionId
+              (Just _mcduIgnoreCustomDataSourceLinks)
+              (Just AltJSON)
+              _mcduPayload
+              analyticsService
+          where go
+                  = buildClient
+                      (Proxy ::
+                         Proxy ManagementCustomDimensionsUpdateResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Analytics/Management/CustomMetrics/Get.hs b/gen/Network/Google/Resource/Analytics/Management/CustomMetrics/Get.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Analytics/Management/CustomMetrics/Get.hs
@@ -0,0 +1,117 @@
+{-# LANGUAGE DataKinds          #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE FlexibleInstances  #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+{-# LANGUAGE TypeOperators      #-}
+
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
+
+-- |
+-- Module      : Network.Google.Resource.Analytics.Management.CustomMetrics.Get
+-- Copyright   : (c) 2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Get a custom metric to which the user has access.
+--
+-- /See:/ <https://developers.google.com/analytics/ Google Analytics API Reference> for @analytics.management.customMetrics.get@.
+module Network.Google.Resource.Analytics.Management.CustomMetrics.Get
+    (
+    -- * REST Resource
+      ManagementCustomMetricsGetResource
+
+    -- * Creating a Request
+    , managementCustomMetricsGet
+    , ManagementCustomMetricsGet
+
+    -- * Request Lenses
+    , mcmgCustomMetricId
+    , mcmgWebPropertyId
+    , mcmgAccountId
+    ) where
+
+import           Network.Google.Analytics.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @analytics.management.customMetrics.get@ method which the
+-- 'ManagementCustomMetricsGet' request conforms to.
+type ManagementCustomMetricsGetResource =
+     "analytics" :>
+       "v3" :>
+         "management" :>
+           "accounts" :>
+             Capture "accountId" Text :>
+               "webproperties" :>
+                 Capture "webPropertyId" Text :>
+                   "customMetrics" :>
+                     Capture "customMetricId" Text :>
+                       QueryParam "alt" AltJSON :> Get '[JSON] CustomMetric
+
+-- | Get a custom metric to which the user has access.
+--
+-- /See:/ 'managementCustomMetricsGet' smart constructor.
+data ManagementCustomMetricsGet = ManagementCustomMetricsGet
+    { _mcmgCustomMetricId :: !Text
+    , _mcmgWebPropertyId  :: !Text
+    , _mcmgAccountId      :: !Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ManagementCustomMetricsGet' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'mcmgCustomMetricId'
+--
+-- * 'mcmgWebPropertyId'
+--
+-- * 'mcmgAccountId'
+managementCustomMetricsGet
+    :: Text -- ^ 'mcmgCustomMetricId'
+    -> Text -- ^ 'mcmgWebPropertyId'
+    -> Text -- ^ 'mcmgAccountId'
+    -> ManagementCustomMetricsGet
+managementCustomMetricsGet pMcmgCustomMetricId_ pMcmgWebPropertyId_ pMcmgAccountId_ =
+    ManagementCustomMetricsGet
+    { _mcmgCustomMetricId = pMcmgCustomMetricId_
+    , _mcmgWebPropertyId = pMcmgWebPropertyId_
+    , _mcmgAccountId = pMcmgAccountId_
+    }
+
+-- | The ID of the custom metric to retrieve.
+mcmgCustomMetricId :: Lens' ManagementCustomMetricsGet Text
+mcmgCustomMetricId
+  = lens _mcmgCustomMetricId
+      (\ s a -> s{_mcmgCustomMetricId = a})
+
+-- | Web property ID for the custom metric to retrieve.
+mcmgWebPropertyId :: Lens' ManagementCustomMetricsGet Text
+mcmgWebPropertyId
+  = lens _mcmgWebPropertyId
+      (\ s a -> s{_mcmgWebPropertyId = a})
+
+-- | Account ID for the custom metric to retrieve.
+mcmgAccountId :: Lens' ManagementCustomMetricsGet Text
+mcmgAccountId
+  = lens _mcmgAccountId
+      (\ s a -> s{_mcmgAccountId = a})
+
+instance GoogleRequest ManagementCustomMetricsGet
+         where
+        type Rs ManagementCustomMetricsGet = CustomMetric
+        requestClient ManagementCustomMetricsGet{..}
+          = go _mcmgAccountId _mcmgWebPropertyId
+              _mcmgCustomMetricId
+              (Just AltJSON)
+              analyticsService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy ManagementCustomMetricsGetResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Analytics/Management/CustomMetrics/Insert.hs b/gen/Network/Google/Resource/Analytics/Management/CustomMetrics/Insert.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Analytics/Management/CustomMetrics/Insert.hs
@@ -0,0 +1,117 @@
+{-# LANGUAGE DataKinds          #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE FlexibleInstances  #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+{-# LANGUAGE TypeOperators      #-}
+
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
+
+-- |
+-- Module      : Network.Google.Resource.Analytics.Management.CustomMetrics.Insert
+-- Copyright   : (c) 2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Create a new custom metric.
+--
+-- /See:/ <https://developers.google.com/analytics/ Google Analytics API Reference> for @analytics.management.customMetrics.insert@.
+module Network.Google.Resource.Analytics.Management.CustomMetrics.Insert
+    (
+    -- * REST Resource
+      ManagementCustomMetricsInsertResource
+
+    -- * Creating a Request
+    , managementCustomMetricsInsert
+    , ManagementCustomMetricsInsert
+
+    -- * Request Lenses
+    , mcmiWebPropertyId
+    , mcmiPayload
+    , mcmiAccountId
+    ) where
+
+import           Network.Google.Analytics.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @analytics.management.customMetrics.insert@ method which the
+-- 'ManagementCustomMetricsInsert' request conforms to.
+type ManagementCustomMetricsInsertResource =
+     "analytics" :>
+       "v3" :>
+         "management" :>
+           "accounts" :>
+             Capture "accountId" Text :>
+               "webproperties" :>
+                 Capture "webPropertyId" Text :>
+                   "customMetrics" :>
+                     QueryParam "alt" AltJSON :>
+                       ReqBody '[JSON] CustomMetric :>
+                         Post '[JSON] CustomMetric
+
+-- | Create a new custom metric.
+--
+-- /See:/ 'managementCustomMetricsInsert' smart constructor.
+data ManagementCustomMetricsInsert = ManagementCustomMetricsInsert
+    { _mcmiWebPropertyId :: !Text
+    , _mcmiPayload       :: !CustomMetric
+    , _mcmiAccountId     :: !Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ManagementCustomMetricsInsert' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'mcmiWebPropertyId'
+--
+-- * 'mcmiPayload'
+--
+-- * 'mcmiAccountId'
+managementCustomMetricsInsert
+    :: Text -- ^ 'mcmiWebPropertyId'
+    -> CustomMetric -- ^ 'mcmiPayload'
+    -> Text -- ^ 'mcmiAccountId'
+    -> ManagementCustomMetricsInsert
+managementCustomMetricsInsert pMcmiWebPropertyId_ pMcmiPayload_ pMcmiAccountId_ =
+    ManagementCustomMetricsInsert
+    { _mcmiWebPropertyId = pMcmiWebPropertyId_
+    , _mcmiPayload = pMcmiPayload_
+    , _mcmiAccountId = pMcmiAccountId_
+    }
+
+-- | Web property ID for the custom dimension to create.
+mcmiWebPropertyId :: Lens' ManagementCustomMetricsInsert Text
+mcmiWebPropertyId
+  = lens _mcmiWebPropertyId
+      (\ s a -> s{_mcmiWebPropertyId = a})
+
+-- | Multipart request metadata.
+mcmiPayload :: Lens' ManagementCustomMetricsInsert CustomMetric
+mcmiPayload
+  = lens _mcmiPayload (\ s a -> s{_mcmiPayload = a})
+
+-- | Account ID for the custom metric to create.
+mcmiAccountId :: Lens' ManagementCustomMetricsInsert Text
+mcmiAccountId
+  = lens _mcmiAccountId
+      (\ s a -> s{_mcmiAccountId = a})
+
+instance GoogleRequest ManagementCustomMetricsInsert
+         where
+        type Rs ManagementCustomMetricsInsert = CustomMetric
+        requestClient ManagementCustomMetricsInsert{..}
+          = go _mcmiAccountId _mcmiWebPropertyId (Just AltJSON)
+              _mcmiPayload
+              analyticsService
+          where go
+                  = buildClient
+                      (Proxy ::
+                         Proxy ManagementCustomMetricsInsertResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Analytics/Management/CustomMetrics/List.hs b/gen/Network/Google/Resource/Analytics/Management/CustomMetrics/List.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Analytics/Management/CustomMetrics/List.hs
@@ -0,0 +1,132 @@
+{-# 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.Analytics.Management.CustomMetrics.List
+-- Copyright   : (c) 2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Lists custom metrics to which the user has access.
+--
+-- /See:/ <https://developers.google.com/analytics/ Google Analytics API Reference> for @analytics.management.customMetrics.list@.
+module Network.Google.Resource.Analytics.Management.CustomMetrics.List
+    (
+    -- * REST Resource
+      ManagementCustomMetricsListResource
+
+    -- * Creating a Request
+    , managementCustomMetricsList
+    , ManagementCustomMetricsList
+
+    -- * Request Lenses
+    , mcmlWebPropertyId
+    , mcmlAccountId
+    , mcmlStartIndex
+    , mcmlMaxResults
+    ) where
+
+import           Network.Google.Analytics.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @analytics.management.customMetrics.list@ method which the
+-- 'ManagementCustomMetricsList' request conforms to.
+type ManagementCustomMetricsListResource =
+     "analytics" :>
+       "v3" :>
+         "management" :>
+           "accounts" :>
+             Capture "accountId" Text :>
+               "webproperties" :>
+                 Capture "webPropertyId" Text :>
+                   "customMetrics" :>
+                     QueryParam "start-index" (Textual Int32) :>
+                       QueryParam "max-results" (Textual Int32) :>
+                         QueryParam "alt" AltJSON :> Get '[JSON] CustomMetrics
+
+-- | Lists custom metrics to which the user has access.
+--
+-- /See:/ 'managementCustomMetricsList' smart constructor.
+data ManagementCustomMetricsList = ManagementCustomMetricsList
+    { _mcmlWebPropertyId :: !Text
+    , _mcmlAccountId     :: !Text
+    , _mcmlStartIndex    :: !(Maybe (Textual Int32))
+    , _mcmlMaxResults    :: !(Maybe (Textual Int32))
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ManagementCustomMetricsList' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'mcmlWebPropertyId'
+--
+-- * 'mcmlAccountId'
+--
+-- * 'mcmlStartIndex'
+--
+-- * 'mcmlMaxResults'
+managementCustomMetricsList
+    :: Text -- ^ 'mcmlWebPropertyId'
+    -> Text -- ^ 'mcmlAccountId'
+    -> ManagementCustomMetricsList
+managementCustomMetricsList pMcmlWebPropertyId_ pMcmlAccountId_ =
+    ManagementCustomMetricsList
+    { _mcmlWebPropertyId = pMcmlWebPropertyId_
+    , _mcmlAccountId = pMcmlAccountId_
+    , _mcmlStartIndex = Nothing
+    , _mcmlMaxResults = Nothing
+    }
+
+-- | Web property ID for the custom metrics to retrieve.
+mcmlWebPropertyId :: Lens' ManagementCustomMetricsList Text
+mcmlWebPropertyId
+  = lens _mcmlWebPropertyId
+      (\ s a -> s{_mcmlWebPropertyId = a})
+
+-- | Account ID for the custom metrics to retrieve.
+mcmlAccountId :: Lens' ManagementCustomMetricsList Text
+mcmlAccountId
+  = lens _mcmlAccountId
+      (\ s a -> s{_mcmlAccountId = a})
+
+-- | An index of the first entity to retrieve. Use this parameter as a
+-- pagination mechanism along with the max-results parameter.
+mcmlStartIndex :: Lens' ManagementCustomMetricsList (Maybe Int32)
+mcmlStartIndex
+  = lens _mcmlStartIndex
+      (\ s a -> s{_mcmlStartIndex = a})
+      . mapping _Coerce
+
+-- | The maximum number of custom metrics to include in this response.
+mcmlMaxResults :: Lens' ManagementCustomMetricsList (Maybe Int32)
+mcmlMaxResults
+  = lens _mcmlMaxResults
+      (\ s a -> s{_mcmlMaxResults = a})
+      . mapping _Coerce
+
+instance GoogleRequest ManagementCustomMetricsList
+         where
+        type Rs ManagementCustomMetricsList = CustomMetrics
+        requestClient ManagementCustomMetricsList{..}
+          = go _mcmlAccountId _mcmlWebPropertyId
+              _mcmlStartIndex
+              _mcmlMaxResults
+              (Just AltJSON)
+              analyticsService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy ManagementCustomMetricsListResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Analytics/Management/CustomMetrics/Patch.hs b/gen/Network/Google/Resource/Analytics/Management/CustomMetrics/Patch.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Analytics/Management/CustomMetrics/Patch.hs
@@ -0,0 +1,145 @@
+{-# 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.Analytics.Management.CustomMetrics.Patch
+-- Copyright   : (c) 2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Updates an existing custom metric. This method supports patch semantics.
+--
+-- /See:/ <https://developers.google.com/analytics/ Google Analytics API Reference> for @analytics.management.customMetrics.patch@.
+module Network.Google.Resource.Analytics.Management.CustomMetrics.Patch
+    (
+    -- * REST Resource
+      ManagementCustomMetricsPatchResource
+
+    -- * Creating a Request
+    , managementCustomMetricsPatch
+    , ManagementCustomMetricsPatch
+
+    -- * Request Lenses
+    , mcmpCustomMetricId
+    , mcmpWebPropertyId
+    , mcmpIgnoreCustomDataSourceLinks
+    , mcmpPayload
+    , mcmpAccountId
+    ) where
+
+import           Network.Google.Analytics.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @analytics.management.customMetrics.patch@ method which the
+-- 'ManagementCustomMetricsPatch' request conforms to.
+type ManagementCustomMetricsPatchResource =
+     "analytics" :>
+       "v3" :>
+         "management" :>
+           "accounts" :>
+             Capture "accountId" Text :>
+               "webproperties" :>
+                 Capture "webPropertyId" Text :>
+                   "customMetrics" :>
+                     Capture "customMetricId" Text :>
+                       QueryParam "ignoreCustomDataSourceLinks" Bool :>
+                         QueryParam "alt" AltJSON :>
+                           ReqBody '[JSON] CustomMetric :>
+                             Patch '[JSON] CustomMetric
+
+-- | Updates an existing custom metric. This method supports patch semantics.
+--
+-- /See:/ 'managementCustomMetricsPatch' smart constructor.
+data ManagementCustomMetricsPatch = ManagementCustomMetricsPatch
+    { _mcmpCustomMetricId              :: !Text
+    , _mcmpWebPropertyId               :: !Text
+    , _mcmpIgnoreCustomDataSourceLinks :: !Bool
+    , _mcmpPayload                     :: !CustomMetric
+    , _mcmpAccountId                   :: !Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ManagementCustomMetricsPatch' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'mcmpCustomMetricId'
+--
+-- * 'mcmpWebPropertyId'
+--
+-- * 'mcmpIgnoreCustomDataSourceLinks'
+--
+-- * 'mcmpPayload'
+--
+-- * 'mcmpAccountId'
+managementCustomMetricsPatch
+    :: Text -- ^ 'mcmpCustomMetricId'
+    -> Text -- ^ 'mcmpWebPropertyId'
+    -> CustomMetric -- ^ 'mcmpPayload'
+    -> Text -- ^ 'mcmpAccountId'
+    -> ManagementCustomMetricsPatch
+managementCustomMetricsPatch pMcmpCustomMetricId_ pMcmpWebPropertyId_ pMcmpPayload_ pMcmpAccountId_ =
+    ManagementCustomMetricsPatch
+    { _mcmpCustomMetricId = pMcmpCustomMetricId_
+    , _mcmpWebPropertyId = pMcmpWebPropertyId_
+    , _mcmpIgnoreCustomDataSourceLinks = False
+    , _mcmpPayload = pMcmpPayload_
+    , _mcmpAccountId = pMcmpAccountId_
+    }
+
+-- | Custom metric ID for the custom metric to update.
+mcmpCustomMetricId :: Lens' ManagementCustomMetricsPatch Text
+mcmpCustomMetricId
+  = lens _mcmpCustomMetricId
+      (\ s a -> s{_mcmpCustomMetricId = a})
+
+-- | Web property ID for the custom metric to update.
+mcmpWebPropertyId :: Lens' ManagementCustomMetricsPatch Text
+mcmpWebPropertyId
+  = lens _mcmpWebPropertyId
+      (\ s a -> s{_mcmpWebPropertyId = a})
+
+-- | Force the update and ignore any warnings related to the custom metric
+-- being linked to a custom data source \/ data set.
+mcmpIgnoreCustomDataSourceLinks :: Lens' ManagementCustomMetricsPatch Bool
+mcmpIgnoreCustomDataSourceLinks
+  = lens _mcmpIgnoreCustomDataSourceLinks
+      (\ s a -> s{_mcmpIgnoreCustomDataSourceLinks = a})
+
+-- | Multipart request metadata.
+mcmpPayload :: Lens' ManagementCustomMetricsPatch CustomMetric
+mcmpPayload
+  = lens _mcmpPayload (\ s a -> s{_mcmpPayload = a})
+
+-- | Account ID for the custom metric to update.
+mcmpAccountId :: Lens' ManagementCustomMetricsPatch Text
+mcmpAccountId
+  = lens _mcmpAccountId
+      (\ s a -> s{_mcmpAccountId = a})
+
+instance GoogleRequest ManagementCustomMetricsPatch
+         where
+        type Rs ManagementCustomMetricsPatch = CustomMetric
+        requestClient ManagementCustomMetricsPatch{..}
+          = go _mcmpAccountId _mcmpWebPropertyId
+              _mcmpCustomMetricId
+              (Just _mcmpIgnoreCustomDataSourceLinks)
+              (Just AltJSON)
+              _mcmpPayload
+              analyticsService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy ManagementCustomMetricsPatchResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Analytics/Management/CustomMetrics/Update.hs b/gen/Network/Google/Resource/Analytics/Management/CustomMetrics/Update.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Analytics/Management/CustomMetrics/Update.hs
@@ -0,0 +1,146 @@
+{-# 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.Analytics.Management.CustomMetrics.Update
+-- Copyright   : (c) 2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Updates an existing custom metric.
+--
+-- /See:/ <https://developers.google.com/analytics/ Google Analytics API Reference> for @analytics.management.customMetrics.update@.
+module Network.Google.Resource.Analytics.Management.CustomMetrics.Update
+    (
+    -- * REST Resource
+      ManagementCustomMetricsUpdateResource
+
+    -- * Creating a Request
+    , managementCustomMetricsUpdate
+    , ManagementCustomMetricsUpdate
+
+    -- * Request Lenses
+    , mcmuCustomMetricId
+    , mcmuWebPropertyId
+    , mcmuIgnoreCustomDataSourceLinks
+    , mcmuPayload
+    , mcmuAccountId
+    ) where
+
+import           Network.Google.Analytics.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @analytics.management.customMetrics.update@ method which the
+-- 'ManagementCustomMetricsUpdate' request conforms to.
+type ManagementCustomMetricsUpdateResource =
+     "analytics" :>
+       "v3" :>
+         "management" :>
+           "accounts" :>
+             Capture "accountId" Text :>
+               "webproperties" :>
+                 Capture "webPropertyId" Text :>
+                   "customMetrics" :>
+                     Capture "customMetricId" Text :>
+                       QueryParam "ignoreCustomDataSourceLinks" Bool :>
+                         QueryParam "alt" AltJSON :>
+                           ReqBody '[JSON] CustomMetric :>
+                             Put '[JSON] CustomMetric
+
+-- | Updates an existing custom metric.
+--
+-- /See:/ 'managementCustomMetricsUpdate' smart constructor.
+data ManagementCustomMetricsUpdate = ManagementCustomMetricsUpdate
+    { _mcmuCustomMetricId              :: !Text
+    , _mcmuWebPropertyId               :: !Text
+    , _mcmuIgnoreCustomDataSourceLinks :: !Bool
+    , _mcmuPayload                     :: !CustomMetric
+    , _mcmuAccountId                   :: !Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ManagementCustomMetricsUpdate' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'mcmuCustomMetricId'
+--
+-- * 'mcmuWebPropertyId'
+--
+-- * 'mcmuIgnoreCustomDataSourceLinks'
+--
+-- * 'mcmuPayload'
+--
+-- * 'mcmuAccountId'
+managementCustomMetricsUpdate
+    :: Text -- ^ 'mcmuCustomMetricId'
+    -> Text -- ^ 'mcmuWebPropertyId'
+    -> CustomMetric -- ^ 'mcmuPayload'
+    -> Text -- ^ 'mcmuAccountId'
+    -> ManagementCustomMetricsUpdate
+managementCustomMetricsUpdate pMcmuCustomMetricId_ pMcmuWebPropertyId_ pMcmuPayload_ pMcmuAccountId_ =
+    ManagementCustomMetricsUpdate
+    { _mcmuCustomMetricId = pMcmuCustomMetricId_
+    , _mcmuWebPropertyId = pMcmuWebPropertyId_
+    , _mcmuIgnoreCustomDataSourceLinks = False
+    , _mcmuPayload = pMcmuPayload_
+    , _mcmuAccountId = pMcmuAccountId_
+    }
+
+-- | Custom metric ID for the custom metric to update.
+mcmuCustomMetricId :: Lens' ManagementCustomMetricsUpdate Text
+mcmuCustomMetricId
+  = lens _mcmuCustomMetricId
+      (\ s a -> s{_mcmuCustomMetricId = a})
+
+-- | Web property ID for the custom metric to update.
+mcmuWebPropertyId :: Lens' ManagementCustomMetricsUpdate Text
+mcmuWebPropertyId
+  = lens _mcmuWebPropertyId
+      (\ s a -> s{_mcmuWebPropertyId = a})
+
+-- | Force the update and ignore any warnings related to the custom metric
+-- being linked to a custom data source \/ data set.
+mcmuIgnoreCustomDataSourceLinks :: Lens' ManagementCustomMetricsUpdate Bool
+mcmuIgnoreCustomDataSourceLinks
+  = lens _mcmuIgnoreCustomDataSourceLinks
+      (\ s a -> s{_mcmuIgnoreCustomDataSourceLinks = a})
+
+-- | Multipart request metadata.
+mcmuPayload :: Lens' ManagementCustomMetricsUpdate CustomMetric
+mcmuPayload
+  = lens _mcmuPayload (\ s a -> s{_mcmuPayload = a})
+
+-- | Account ID for the custom metric to update.
+mcmuAccountId :: Lens' ManagementCustomMetricsUpdate Text
+mcmuAccountId
+  = lens _mcmuAccountId
+      (\ s a -> s{_mcmuAccountId = a})
+
+instance GoogleRequest ManagementCustomMetricsUpdate
+         where
+        type Rs ManagementCustomMetricsUpdate = CustomMetric
+        requestClient ManagementCustomMetricsUpdate{..}
+          = go _mcmuAccountId _mcmuWebPropertyId
+              _mcmuCustomMetricId
+              (Just _mcmuIgnoreCustomDataSourceLinks)
+              (Just AltJSON)
+              _mcmuPayload
+              analyticsService
+          where go
+                  = buildClient
+                      (Proxy ::
+                         Proxy ManagementCustomMetricsUpdateResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Analytics/Management/Experiments/Delete.hs b/gen/Network/Google/Resource/Analytics/Management/Experiments/Delete.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Analytics/Management/Experiments/Delete.hs
@@ -0,0 +1,129 @@
+{-# 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.Analytics.Management.Experiments.Delete
+-- Copyright   : (c) 2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Delete an experiment.
+--
+-- /See:/ <https://developers.google.com/analytics/ Google Analytics API Reference> for @analytics.management.experiments.delete@.
+module Network.Google.Resource.Analytics.Management.Experiments.Delete
+    (
+    -- * REST Resource
+      ManagementExperimentsDeleteResource
+
+    -- * Creating a Request
+    , managementExperimentsDelete
+    , ManagementExperimentsDelete
+
+    -- * Request Lenses
+    , medWebPropertyId
+    , medProFileId
+    , medAccountId
+    , medExperimentId
+    ) where
+
+import           Network.Google.Analytics.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @analytics.management.experiments.delete@ method which the
+-- 'ManagementExperimentsDelete' request conforms to.
+type ManagementExperimentsDeleteResource =
+     "analytics" :>
+       "v3" :>
+         "management" :>
+           "accounts" :>
+             Capture "accountId" Text :>
+               "webproperties" :>
+                 Capture "webPropertyId" Text :>
+                   "profiles" :>
+                     Capture "profileId" Text :>
+                       "experiments" :>
+                         Capture "experimentId" Text :>
+                           QueryParam "alt" AltJSON :> Delete '[JSON] ()
+
+-- | Delete an experiment.
+--
+-- /See:/ 'managementExperimentsDelete' smart constructor.
+data ManagementExperimentsDelete = ManagementExperimentsDelete
+    { _medWebPropertyId :: !Text
+    , _medProFileId     :: !Text
+    , _medAccountId     :: !Text
+    , _medExperimentId  :: !Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ManagementExperimentsDelete' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'medWebPropertyId'
+--
+-- * 'medProFileId'
+--
+-- * 'medAccountId'
+--
+-- * 'medExperimentId'
+managementExperimentsDelete
+    :: Text -- ^ 'medWebPropertyId'
+    -> Text -- ^ 'medProFileId'
+    -> Text -- ^ 'medAccountId'
+    -> Text -- ^ 'medExperimentId'
+    -> ManagementExperimentsDelete
+managementExperimentsDelete pMedWebPropertyId_ pMedProFileId_ pMedAccountId_ pMedExperimentId_ =
+    ManagementExperimentsDelete
+    { _medWebPropertyId = pMedWebPropertyId_
+    , _medProFileId = pMedProFileId_
+    , _medAccountId = pMedAccountId_
+    , _medExperimentId = pMedExperimentId_
+    }
+
+-- | Web property ID to which the experiment belongs
+medWebPropertyId :: Lens' ManagementExperimentsDelete Text
+medWebPropertyId
+  = lens _medWebPropertyId
+      (\ s a -> s{_medWebPropertyId = a})
+
+-- | View (Profile) ID to which the experiment belongs
+medProFileId :: Lens' ManagementExperimentsDelete Text
+medProFileId
+  = lens _medProFileId (\ s a -> s{_medProFileId = a})
+
+-- | Account ID to which the experiment belongs
+medAccountId :: Lens' ManagementExperimentsDelete Text
+medAccountId
+  = lens _medAccountId (\ s a -> s{_medAccountId = a})
+
+-- | ID of the experiment to delete
+medExperimentId :: Lens' ManagementExperimentsDelete Text
+medExperimentId
+  = lens _medExperimentId
+      (\ s a -> s{_medExperimentId = a})
+
+instance GoogleRequest ManagementExperimentsDelete
+         where
+        type Rs ManagementExperimentsDelete = ()
+        requestClient ManagementExperimentsDelete{..}
+          = go _medAccountId _medWebPropertyId _medProFileId
+              _medExperimentId
+              (Just AltJSON)
+              analyticsService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy ManagementExperimentsDeleteResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Analytics/Management/Experiments/Get.hs b/gen/Network/Google/Resource/Analytics/Management/Experiments/Get.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Analytics/Management/Experiments/Get.hs
@@ -0,0 +1,128 @@
+{-# 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.Analytics.Management.Experiments.Get
+-- Copyright   : (c) 2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Returns an experiment to which the user has access.
+--
+-- /See:/ <https://developers.google.com/analytics/ Google Analytics API Reference> for @analytics.management.experiments.get@.
+module Network.Google.Resource.Analytics.Management.Experiments.Get
+    (
+    -- * REST Resource
+      ManagementExperimentsGetResource
+
+    -- * Creating a Request
+    , managementExperimentsGet
+    , ManagementExperimentsGet
+
+    -- * Request Lenses
+    , megWebPropertyId
+    , megProFileId
+    , megAccountId
+    , megExperimentId
+    ) where
+
+import           Network.Google.Analytics.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @analytics.management.experiments.get@ method which the
+-- 'ManagementExperimentsGet' request conforms to.
+type ManagementExperimentsGetResource =
+     "analytics" :>
+       "v3" :>
+         "management" :>
+           "accounts" :>
+             Capture "accountId" Text :>
+               "webproperties" :>
+                 Capture "webPropertyId" Text :>
+                   "profiles" :>
+                     Capture "profileId" Text :>
+                       "experiments" :>
+                         Capture "experimentId" Text :>
+                           QueryParam "alt" AltJSON :> Get '[JSON] Experiment
+
+-- | Returns an experiment to which the user has access.
+--
+-- /See:/ 'managementExperimentsGet' smart constructor.
+data ManagementExperimentsGet = ManagementExperimentsGet
+    { _megWebPropertyId :: !Text
+    , _megProFileId     :: !Text
+    , _megAccountId     :: !Text
+    , _megExperimentId  :: !Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ManagementExperimentsGet' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'megWebPropertyId'
+--
+-- * 'megProFileId'
+--
+-- * 'megAccountId'
+--
+-- * 'megExperimentId'
+managementExperimentsGet
+    :: Text -- ^ 'megWebPropertyId'
+    -> Text -- ^ 'megProFileId'
+    -> Text -- ^ 'megAccountId'
+    -> Text -- ^ 'megExperimentId'
+    -> ManagementExperimentsGet
+managementExperimentsGet pMegWebPropertyId_ pMegProFileId_ pMegAccountId_ pMegExperimentId_ =
+    ManagementExperimentsGet
+    { _megWebPropertyId = pMegWebPropertyId_
+    , _megProFileId = pMegProFileId_
+    , _megAccountId = pMegAccountId_
+    , _megExperimentId = pMegExperimentId_
+    }
+
+-- | Web property ID to retrieve the experiment for.
+megWebPropertyId :: Lens' ManagementExperimentsGet Text
+megWebPropertyId
+  = lens _megWebPropertyId
+      (\ s a -> s{_megWebPropertyId = a})
+
+-- | View (Profile) ID to retrieve the experiment for.
+megProFileId :: Lens' ManagementExperimentsGet Text
+megProFileId
+  = lens _megProFileId (\ s a -> s{_megProFileId = a})
+
+-- | Account ID to retrieve the experiment for.
+megAccountId :: Lens' ManagementExperimentsGet Text
+megAccountId
+  = lens _megAccountId (\ s a -> s{_megAccountId = a})
+
+-- | Experiment ID to retrieve the experiment for.
+megExperimentId :: Lens' ManagementExperimentsGet Text
+megExperimentId
+  = lens _megExperimentId
+      (\ s a -> s{_megExperimentId = a})
+
+instance GoogleRequest ManagementExperimentsGet where
+        type Rs ManagementExperimentsGet = Experiment
+        requestClient ManagementExperimentsGet{..}
+          = go _megAccountId _megWebPropertyId _megProFileId
+              _megExperimentId
+              (Just AltJSON)
+              analyticsService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy ManagementExperimentsGetResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Analytics/Management/Experiments/Insert.hs b/gen/Network/Google/Resource/Analytics/Management/Experiments/Insert.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Analytics/Management/Experiments/Insert.hs
@@ -0,0 +1,128 @@
+{-# 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.Analytics.Management.Experiments.Insert
+-- Copyright   : (c) 2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Create a new experiment.
+--
+-- /See:/ <https://developers.google.com/analytics/ Google Analytics API Reference> for @analytics.management.experiments.insert@.
+module Network.Google.Resource.Analytics.Management.Experiments.Insert
+    (
+    -- * REST Resource
+      ManagementExperimentsInsertResource
+
+    -- * Creating a Request
+    , managementExperimentsInsert
+    , ManagementExperimentsInsert
+
+    -- * Request Lenses
+    , meiWebPropertyId
+    , meiProFileId
+    , meiPayload
+    , meiAccountId
+    ) where
+
+import           Network.Google.Analytics.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @analytics.management.experiments.insert@ method which the
+-- 'ManagementExperimentsInsert' request conforms to.
+type ManagementExperimentsInsertResource =
+     "analytics" :>
+       "v3" :>
+         "management" :>
+           "accounts" :>
+             Capture "accountId" Text :>
+               "webproperties" :>
+                 Capture "webPropertyId" Text :>
+                   "profiles" :>
+                     Capture "profileId" Text :>
+                       "experiments" :>
+                         QueryParam "alt" AltJSON :>
+                           ReqBody '[JSON] Experiment :> Post '[JSON] Experiment
+
+-- | Create a new experiment.
+--
+-- /See:/ 'managementExperimentsInsert' smart constructor.
+data ManagementExperimentsInsert = ManagementExperimentsInsert
+    { _meiWebPropertyId :: !Text
+    , _meiProFileId     :: !Text
+    , _meiPayload       :: !Experiment
+    , _meiAccountId     :: !Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ManagementExperimentsInsert' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'meiWebPropertyId'
+--
+-- * 'meiProFileId'
+--
+-- * 'meiPayload'
+--
+-- * 'meiAccountId'
+managementExperimentsInsert
+    :: Text -- ^ 'meiWebPropertyId'
+    -> Text -- ^ 'meiProFileId'
+    -> Experiment -- ^ 'meiPayload'
+    -> Text -- ^ 'meiAccountId'
+    -> ManagementExperimentsInsert
+managementExperimentsInsert pMeiWebPropertyId_ pMeiProFileId_ pMeiPayload_ pMeiAccountId_ =
+    ManagementExperimentsInsert
+    { _meiWebPropertyId = pMeiWebPropertyId_
+    , _meiProFileId = pMeiProFileId_
+    , _meiPayload = pMeiPayload_
+    , _meiAccountId = pMeiAccountId_
+    }
+
+-- | Web property ID to create the experiment for.
+meiWebPropertyId :: Lens' ManagementExperimentsInsert Text
+meiWebPropertyId
+  = lens _meiWebPropertyId
+      (\ s a -> s{_meiWebPropertyId = a})
+
+-- | View (Profile) ID to create the experiment for.
+meiProFileId :: Lens' ManagementExperimentsInsert Text
+meiProFileId
+  = lens _meiProFileId (\ s a -> s{_meiProFileId = a})
+
+-- | Multipart request metadata.
+meiPayload :: Lens' ManagementExperimentsInsert Experiment
+meiPayload
+  = lens _meiPayload (\ s a -> s{_meiPayload = a})
+
+-- | Account ID to create the experiment for.
+meiAccountId :: Lens' ManagementExperimentsInsert Text
+meiAccountId
+  = lens _meiAccountId (\ s a -> s{_meiAccountId = a})
+
+instance GoogleRequest ManagementExperimentsInsert
+         where
+        type Rs ManagementExperimentsInsert = Experiment
+        requestClient ManagementExperimentsInsert{..}
+          = go _meiAccountId _meiWebPropertyId _meiProFileId
+              (Just AltJSON)
+              _meiPayload
+              analyticsService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy ManagementExperimentsInsertResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Analytics/Management/Experiments/List.hs b/gen/Network/Google/Resource/Analytics/Management/Experiments/List.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Analytics/Management/Experiments/List.hs
@@ -0,0 +1,144 @@
+{-# LANGUAGE DataKinds          #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE FlexibleInstances  #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+{-# LANGUAGE TypeOperators      #-}
+
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
+
+-- |
+-- Module      : Network.Google.Resource.Analytics.Management.Experiments.List
+-- Copyright   : (c) 2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Lists experiments to which the user has access.
+--
+-- /See:/ <https://developers.google.com/analytics/ Google Analytics API Reference> for @analytics.management.experiments.list@.
+module Network.Google.Resource.Analytics.Management.Experiments.List
+    (
+    -- * REST Resource
+      ManagementExperimentsListResource
+
+    -- * Creating a Request
+    , managementExperimentsList
+    , ManagementExperimentsList
+
+    -- * Request Lenses
+    , melWebPropertyId
+    , melProFileId
+    , melAccountId
+    , melStartIndex
+    , melMaxResults
+    ) where
+
+import           Network.Google.Analytics.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @analytics.management.experiments.list@ method which the
+-- 'ManagementExperimentsList' request conforms to.
+type ManagementExperimentsListResource =
+     "analytics" :>
+       "v3" :>
+         "management" :>
+           "accounts" :>
+             Capture "accountId" Text :>
+               "webproperties" :>
+                 Capture "webPropertyId" Text :>
+                   "profiles" :>
+                     Capture "profileId" Text :>
+                       "experiments" :>
+                         QueryParam "start-index" (Textual Int32) :>
+                           QueryParam "max-results" (Textual Int32) :>
+                             QueryParam "alt" AltJSON :> Get '[JSON] Experiments
+
+-- | Lists experiments to which the user has access.
+--
+-- /See:/ 'managementExperimentsList' smart constructor.
+data ManagementExperimentsList = ManagementExperimentsList
+    { _melWebPropertyId :: !Text
+    , _melProFileId     :: !Text
+    , _melAccountId     :: !Text
+    , _melStartIndex    :: !(Maybe (Textual Int32))
+    , _melMaxResults    :: !(Maybe (Textual Int32))
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ManagementExperimentsList' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'melWebPropertyId'
+--
+-- * 'melProFileId'
+--
+-- * 'melAccountId'
+--
+-- * 'melStartIndex'
+--
+-- * 'melMaxResults'
+managementExperimentsList
+    :: Text -- ^ 'melWebPropertyId'
+    -> Text -- ^ 'melProFileId'
+    -> Text -- ^ 'melAccountId'
+    -> ManagementExperimentsList
+managementExperimentsList pMelWebPropertyId_ pMelProFileId_ pMelAccountId_ =
+    ManagementExperimentsList
+    { _melWebPropertyId = pMelWebPropertyId_
+    , _melProFileId = pMelProFileId_
+    , _melAccountId = pMelAccountId_
+    , _melStartIndex = Nothing
+    , _melMaxResults = Nothing
+    }
+
+-- | Web property ID to retrieve experiments for.
+melWebPropertyId :: Lens' ManagementExperimentsList Text
+melWebPropertyId
+  = lens _melWebPropertyId
+      (\ s a -> s{_melWebPropertyId = a})
+
+-- | View (Profile) ID to retrieve experiments for.
+melProFileId :: Lens' ManagementExperimentsList Text
+melProFileId
+  = lens _melProFileId (\ s a -> s{_melProFileId = a})
+
+-- | Account ID to retrieve experiments for.
+melAccountId :: Lens' ManagementExperimentsList Text
+melAccountId
+  = lens _melAccountId (\ s a -> s{_melAccountId = a})
+
+-- | An index of the first experiment to retrieve. Use this parameter as a
+-- pagination mechanism along with the max-results parameter.
+melStartIndex :: Lens' ManagementExperimentsList (Maybe Int32)
+melStartIndex
+  = lens _melStartIndex
+      (\ s a -> s{_melStartIndex = a})
+      . mapping _Coerce
+
+-- | The maximum number of experiments to include in this response.
+melMaxResults :: Lens' ManagementExperimentsList (Maybe Int32)
+melMaxResults
+  = lens _melMaxResults
+      (\ s a -> s{_melMaxResults = a})
+      . mapping _Coerce
+
+instance GoogleRequest ManagementExperimentsList
+         where
+        type Rs ManagementExperimentsList = Experiments
+        requestClient ManagementExperimentsList{..}
+          = go _melAccountId _melWebPropertyId _melProFileId
+              _melStartIndex
+              _melMaxResults
+              (Just AltJSON)
+              analyticsService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy ManagementExperimentsListResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Analytics/Management/Experiments/Patch.hs b/gen/Network/Google/Resource/Analytics/Management/Experiments/Patch.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Analytics/Management/Experiments/Patch.hs
@@ -0,0 +1,143 @@
+{-# 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.Analytics.Management.Experiments.Patch
+-- Copyright   : (c) 2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Update an existing experiment. This method supports patch semantics.
+--
+-- /See:/ <https://developers.google.com/analytics/ Google Analytics API Reference> for @analytics.management.experiments.patch@.
+module Network.Google.Resource.Analytics.Management.Experiments.Patch
+    (
+    -- * REST Resource
+      ManagementExperimentsPatchResource
+
+    -- * Creating a Request
+    , managementExperimentsPatch
+    , ManagementExperimentsPatch
+
+    -- * Request Lenses
+    , mepWebPropertyId
+    , mepProFileId
+    , mepPayload
+    , mepAccountId
+    , mepExperimentId
+    ) where
+
+import           Network.Google.Analytics.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @analytics.management.experiments.patch@ method which the
+-- 'ManagementExperimentsPatch' request conforms to.
+type ManagementExperimentsPatchResource =
+     "analytics" :>
+       "v3" :>
+         "management" :>
+           "accounts" :>
+             Capture "accountId" Text :>
+               "webproperties" :>
+                 Capture "webPropertyId" Text :>
+                   "profiles" :>
+                     Capture "profileId" Text :>
+                       "experiments" :>
+                         Capture "experimentId" Text :>
+                           QueryParam "alt" AltJSON :>
+                             ReqBody '[JSON] Experiment :>
+                               Patch '[JSON] Experiment
+
+-- | Update an existing experiment. This method supports patch semantics.
+--
+-- /See:/ 'managementExperimentsPatch' smart constructor.
+data ManagementExperimentsPatch = ManagementExperimentsPatch
+    { _mepWebPropertyId :: !Text
+    , _mepProFileId     :: !Text
+    , _mepPayload       :: !Experiment
+    , _mepAccountId     :: !Text
+    , _mepExperimentId  :: !Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ManagementExperimentsPatch' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'mepWebPropertyId'
+--
+-- * 'mepProFileId'
+--
+-- * 'mepPayload'
+--
+-- * 'mepAccountId'
+--
+-- * 'mepExperimentId'
+managementExperimentsPatch
+    :: Text -- ^ 'mepWebPropertyId'
+    -> Text -- ^ 'mepProFileId'
+    -> Experiment -- ^ 'mepPayload'
+    -> Text -- ^ 'mepAccountId'
+    -> Text -- ^ 'mepExperimentId'
+    -> ManagementExperimentsPatch
+managementExperimentsPatch pMepWebPropertyId_ pMepProFileId_ pMepPayload_ pMepAccountId_ pMepExperimentId_ =
+    ManagementExperimentsPatch
+    { _mepWebPropertyId = pMepWebPropertyId_
+    , _mepProFileId = pMepProFileId_
+    , _mepPayload = pMepPayload_
+    , _mepAccountId = pMepAccountId_
+    , _mepExperimentId = pMepExperimentId_
+    }
+
+-- | Web property ID of the experiment to update.
+mepWebPropertyId :: Lens' ManagementExperimentsPatch Text
+mepWebPropertyId
+  = lens _mepWebPropertyId
+      (\ s a -> s{_mepWebPropertyId = a})
+
+-- | View (Profile) ID of the experiment to update.
+mepProFileId :: Lens' ManagementExperimentsPatch Text
+mepProFileId
+  = lens _mepProFileId (\ s a -> s{_mepProFileId = a})
+
+-- | Multipart request metadata.
+mepPayload :: Lens' ManagementExperimentsPatch Experiment
+mepPayload
+  = lens _mepPayload (\ s a -> s{_mepPayload = a})
+
+-- | Account ID of the experiment to update.
+mepAccountId :: Lens' ManagementExperimentsPatch Text
+mepAccountId
+  = lens _mepAccountId (\ s a -> s{_mepAccountId = a})
+
+-- | Experiment ID of the experiment to update.
+mepExperimentId :: Lens' ManagementExperimentsPatch Text
+mepExperimentId
+  = lens _mepExperimentId
+      (\ s a -> s{_mepExperimentId = a})
+
+instance GoogleRequest ManagementExperimentsPatch
+         where
+        type Rs ManagementExperimentsPatch = Experiment
+        requestClient ManagementExperimentsPatch{..}
+          = go _mepAccountId _mepWebPropertyId _mepProFileId
+              _mepExperimentId
+              (Just AltJSON)
+              _mepPayload
+              analyticsService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy ManagementExperimentsPatchResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Analytics/Management/Experiments/Update.hs b/gen/Network/Google/Resource/Analytics/Management/Experiments/Update.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Analytics/Management/Experiments/Update.hs
@@ -0,0 +1,143 @@
+{-# 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.Analytics.Management.Experiments.Update
+-- Copyright   : (c) 2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Update an existing experiment.
+--
+-- /See:/ <https://developers.google.com/analytics/ Google Analytics API Reference> for @analytics.management.experiments.update@.
+module Network.Google.Resource.Analytics.Management.Experiments.Update
+    (
+    -- * REST Resource
+      ManagementExperimentsUpdateResource
+
+    -- * Creating a Request
+    , managementExperimentsUpdate
+    , ManagementExperimentsUpdate
+
+    -- * Request Lenses
+    , meuWebPropertyId
+    , meuProFileId
+    , meuPayload
+    , meuAccountId
+    , meuExperimentId
+    ) where
+
+import           Network.Google.Analytics.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @analytics.management.experiments.update@ method which the
+-- 'ManagementExperimentsUpdate' request conforms to.
+type ManagementExperimentsUpdateResource =
+     "analytics" :>
+       "v3" :>
+         "management" :>
+           "accounts" :>
+             Capture "accountId" Text :>
+               "webproperties" :>
+                 Capture "webPropertyId" Text :>
+                   "profiles" :>
+                     Capture "profileId" Text :>
+                       "experiments" :>
+                         Capture "experimentId" Text :>
+                           QueryParam "alt" AltJSON :>
+                             ReqBody '[JSON] Experiment :>
+                               Put '[JSON] Experiment
+
+-- | Update an existing experiment.
+--
+-- /See:/ 'managementExperimentsUpdate' smart constructor.
+data ManagementExperimentsUpdate = ManagementExperimentsUpdate
+    { _meuWebPropertyId :: !Text
+    , _meuProFileId     :: !Text
+    , _meuPayload       :: !Experiment
+    , _meuAccountId     :: !Text
+    , _meuExperimentId  :: !Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ManagementExperimentsUpdate' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'meuWebPropertyId'
+--
+-- * 'meuProFileId'
+--
+-- * 'meuPayload'
+--
+-- * 'meuAccountId'
+--
+-- * 'meuExperimentId'
+managementExperimentsUpdate
+    :: Text -- ^ 'meuWebPropertyId'
+    -> Text -- ^ 'meuProFileId'
+    -> Experiment -- ^ 'meuPayload'
+    -> Text -- ^ 'meuAccountId'
+    -> Text -- ^ 'meuExperimentId'
+    -> ManagementExperimentsUpdate
+managementExperimentsUpdate pMeuWebPropertyId_ pMeuProFileId_ pMeuPayload_ pMeuAccountId_ pMeuExperimentId_ =
+    ManagementExperimentsUpdate
+    { _meuWebPropertyId = pMeuWebPropertyId_
+    , _meuProFileId = pMeuProFileId_
+    , _meuPayload = pMeuPayload_
+    , _meuAccountId = pMeuAccountId_
+    , _meuExperimentId = pMeuExperimentId_
+    }
+
+-- | Web property ID of the experiment to update.
+meuWebPropertyId :: Lens' ManagementExperimentsUpdate Text
+meuWebPropertyId
+  = lens _meuWebPropertyId
+      (\ s a -> s{_meuWebPropertyId = a})
+
+-- | View (Profile) ID of the experiment to update.
+meuProFileId :: Lens' ManagementExperimentsUpdate Text
+meuProFileId
+  = lens _meuProFileId (\ s a -> s{_meuProFileId = a})
+
+-- | Multipart request metadata.
+meuPayload :: Lens' ManagementExperimentsUpdate Experiment
+meuPayload
+  = lens _meuPayload (\ s a -> s{_meuPayload = a})
+
+-- | Account ID of the experiment to update.
+meuAccountId :: Lens' ManagementExperimentsUpdate Text
+meuAccountId
+  = lens _meuAccountId (\ s a -> s{_meuAccountId = a})
+
+-- | Experiment ID of the experiment to update.
+meuExperimentId :: Lens' ManagementExperimentsUpdate Text
+meuExperimentId
+  = lens _meuExperimentId
+      (\ s a -> s{_meuExperimentId = a})
+
+instance GoogleRequest ManagementExperimentsUpdate
+         where
+        type Rs ManagementExperimentsUpdate = Experiment
+        requestClient ManagementExperimentsUpdate{..}
+          = go _meuAccountId _meuWebPropertyId _meuProFileId
+              _meuExperimentId
+              (Just AltJSON)
+              _meuPayload
+              analyticsService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy ManagementExperimentsUpdateResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Analytics/Management/Filters/Delete.hs b/gen/Network/Google/Resource/Analytics/Management/Filters/Delete.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Analytics/Management/Filters/Delete.hs
@@ -0,0 +1,98 @@
+{-# 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.Analytics.Management.Filters.Delete
+-- Copyright   : (c) 2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Delete a filter.
+--
+-- /See:/ <https://developers.google.com/analytics/ Google Analytics API Reference> for @analytics.management.filters.delete@.
+module Network.Google.Resource.Analytics.Management.Filters.Delete
+    (
+    -- * REST Resource
+      ManagementFiltersDeleteResource
+
+    -- * Creating a Request
+    , managementFiltersDelete
+    , ManagementFiltersDelete
+
+    -- * Request Lenses
+    , mfdFilterId
+    , mfdAccountId
+    ) where
+
+import           Network.Google.Analytics.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @analytics.management.filters.delete@ method which the
+-- 'ManagementFiltersDelete' request conforms to.
+type ManagementFiltersDeleteResource =
+     "analytics" :>
+       "v3" :>
+         "management" :>
+           "accounts" :>
+             Capture "accountId" Text :>
+               "filters" :>
+                 Capture "filterId" Text :>
+                   QueryParam "alt" AltJSON :> Delete '[JSON] Filter
+
+-- | Delete a filter.
+--
+-- /See:/ 'managementFiltersDelete' smart constructor.
+data ManagementFiltersDelete = ManagementFiltersDelete
+    { _mfdFilterId  :: !Text
+    , _mfdAccountId :: !Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ManagementFiltersDelete' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'mfdFilterId'
+--
+-- * 'mfdAccountId'
+managementFiltersDelete
+    :: Text -- ^ 'mfdFilterId'
+    -> Text -- ^ 'mfdAccountId'
+    -> ManagementFiltersDelete
+managementFiltersDelete pMfdFilterId_ pMfdAccountId_ =
+    ManagementFiltersDelete
+    { _mfdFilterId = pMfdFilterId_
+    , _mfdAccountId = pMfdAccountId_
+    }
+
+-- | ID of the filter to be deleted.
+mfdFilterId :: Lens' ManagementFiltersDelete Text
+mfdFilterId
+  = lens _mfdFilterId (\ s a -> s{_mfdFilterId = a})
+
+-- | Account ID to delete the filter for.
+mfdAccountId :: Lens' ManagementFiltersDelete Text
+mfdAccountId
+  = lens _mfdAccountId (\ s a -> s{_mfdAccountId = a})
+
+instance GoogleRequest ManagementFiltersDelete where
+        type Rs ManagementFiltersDelete = Filter
+        requestClient ManagementFiltersDelete{..}
+          = go _mfdAccountId _mfdFilterId (Just AltJSON)
+              analyticsService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy ManagementFiltersDeleteResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Analytics/Management/Filters/Get.hs b/gen/Network/Google/Resource/Analytics/Management/Filters/Get.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Analytics/Management/Filters/Get.hs
@@ -0,0 +1,98 @@
+{-# 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.Analytics.Management.Filters.Get
+-- Copyright   : (c) 2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Returns a filters to which the user has access.
+--
+-- /See:/ <https://developers.google.com/analytics/ Google Analytics API Reference> for @analytics.management.filters.get@.
+module Network.Google.Resource.Analytics.Management.Filters.Get
+    (
+    -- * REST Resource
+      ManagementFiltersGetResource
+
+    -- * Creating a Request
+    , managementFiltersGet
+    , ManagementFiltersGet
+
+    -- * Request Lenses
+    , mfgFilterId
+    , mfgAccountId
+    ) where
+
+import           Network.Google.Analytics.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @analytics.management.filters.get@ method which the
+-- 'ManagementFiltersGet' request conforms to.
+type ManagementFiltersGetResource =
+     "analytics" :>
+       "v3" :>
+         "management" :>
+           "accounts" :>
+             Capture "accountId" Text :>
+               "filters" :>
+                 Capture "filterId" Text :>
+                   QueryParam "alt" AltJSON :> Get '[JSON] Filter
+
+-- | Returns a filters to which the user has access.
+--
+-- /See:/ 'managementFiltersGet' smart constructor.
+data ManagementFiltersGet = ManagementFiltersGet
+    { _mfgFilterId  :: !Text
+    , _mfgAccountId :: !Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ManagementFiltersGet' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'mfgFilterId'
+--
+-- * 'mfgAccountId'
+managementFiltersGet
+    :: Text -- ^ 'mfgFilterId'
+    -> Text -- ^ 'mfgAccountId'
+    -> ManagementFiltersGet
+managementFiltersGet pMfgFilterId_ pMfgAccountId_ =
+    ManagementFiltersGet
+    { _mfgFilterId = pMfgFilterId_
+    , _mfgAccountId = pMfgAccountId_
+    }
+
+-- | Filter ID to retrieve filters for.
+mfgFilterId :: Lens' ManagementFiltersGet Text
+mfgFilterId
+  = lens _mfgFilterId (\ s a -> s{_mfgFilterId = a})
+
+-- | Account ID to retrieve filters for.
+mfgAccountId :: Lens' ManagementFiltersGet Text
+mfgAccountId
+  = lens _mfgAccountId (\ s a -> s{_mfgAccountId = a})
+
+instance GoogleRequest ManagementFiltersGet where
+        type Rs ManagementFiltersGet = Filter
+        requestClient ManagementFiltersGet{..}
+          = go _mfgAccountId _mfgFilterId (Just AltJSON)
+              analyticsService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy ManagementFiltersGetResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Analytics/Management/Filters/Insert.hs b/gen/Network/Google/Resource/Analytics/Management/Filters/Insert.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Analytics/Management/Filters/Insert.hs
@@ -0,0 +1,98 @@
+{-# 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.Analytics.Management.Filters.Insert
+-- Copyright   : (c) 2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Create a new filter.
+--
+-- /See:/ <https://developers.google.com/analytics/ Google Analytics API Reference> for @analytics.management.filters.insert@.
+module Network.Google.Resource.Analytics.Management.Filters.Insert
+    (
+    -- * REST Resource
+      ManagementFiltersInsertResource
+
+    -- * Creating a Request
+    , managementFiltersInsert
+    , ManagementFiltersInsert
+
+    -- * Request Lenses
+    , mfiPayload
+    , mfiAccountId
+    ) where
+
+import           Network.Google.Analytics.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @analytics.management.filters.insert@ method which the
+-- 'ManagementFiltersInsert' request conforms to.
+type ManagementFiltersInsertResource =
+     "analytics" :>
+       "v3" :>
+         "management" :>
+           "accounts" :>
+             Capture "accountId" Text :>
+               "filters" :>
+                 QueryParam "alt" AltJSON :>
+                   ReqBody '[JSON] Filter :> Post '[JSON] Filter
+
+-- | Create a new filter.
+--
+-- /See:/ 'managementFiltersInsert' smart constructor.
+data ManagementFiltersInsert = ManagementFiltersInsert
+    { _mfiPayload   :: !Filter
+    , _mfiAccountId :: !Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ManagementFiltersInsert' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'mfiPayload'
+--
+-- * 'mfiAccountId'
+managementFiltersInsert
+    :: Filter -- ^ 'mfiPayload'
+    -> Text -- ^ 'mfiAccountId'
+    -> ManagementFiltersInsert
+managementFiltersInsert pMfiPayload_ pMfiAccountId_ =
+    ManagementFiltersInsert
+    { _mfiPayload = pMfiPayload_
+    , _mfiAccountId = pMfiAccountId_
+    }
+
+-- | Multipart request metadata.
+mfiPayload :: Lens' ManagementFiltersInsert Filter
+mfiPayload
+  = lens _mfiPayload (\ s a -> s{_mfiPayload = a})
+
+-- | Account ID to create filter for.
+mfiAccountId :: Lens' ManagementFiltersInsert Text
+mfiAccountId
+  = lens _mfiAccountId (\ s a -> s{_mfiAccountId = a})
+
+instance GoogleRequest ManagementFiltersInsert where
+        type Rs ManagementFiltersInsert = Filter
+        requestClient ManagementFiltersInsert{..}
+          = go _mfiAccountId (Just AltJSON) _mfiPayload
+              analyticsService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy ManagementFiltersInsertResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Analytics/Management/Filters/List.hs b/gen/Network/Google/Resource/Analytics/Management/Filters/List.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Analytics/Management/Filters/List.hs
@@ -0,0 +1,114 @@
+{-# LANGUAGE DataKinds          #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE FlexibleInstances  #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+{-# LANGUAGE TypeOperators      #-}
+
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
+
+-- |
+-- Module      : Network.Google.Resource.Analytics.Management.Filters.List
+-- Copyright   : (c) 2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Lists all filters for an account
+--
+-- /See:/ <https://developers.google.com/analytics/ Google Analytics API Reference> for @analytics.management.filters.list@.
+module Network.Google.Resource.Analytics.Management.Filters.List
+    (
+    -- * REST Resource
+      ManagementFiltersListResource
+
+    -- * Creating a Request
+    , managementFiltersList
+    , ManagementFiltersList
+
+    -- * Request Lenses
+    , mflAccountId
+    , mflStartIndex
+    , mflMaxResults
+    ) where
+
+import           Network.Google.Analytics.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @analytics.management.filters.list@ method which the
+-- 'ManagementFiltersList' request conforms to.
+type ManagementFiltersListResource =
+     "analytics" :>
+       "v3" :>
+         "management" :>
+           "accounts" :>
+             Capture "accountId" Text :>
+               "filters" :>
+                 QueryParam "start-index" (Textual Int32) :>
+                   QueryParam "max-results" (Textual Int32) :>
+                     QueryParam "alt" AltJSON :> Get '[JSON] Filters
+
+-- | Lists all filters for an account
+--
+-- /See:/ 'managementFiltersList' smart constructor.
+data ManagementFiltersList = ManagementFiltersList
+    { _mflAccountId  :: !Text
+    , _mflStartIndex :: !(Maybe (Textual Int32))
+    , _mflMaxResults :: !(Maybe (Textual Int32))
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ManagementFiltersList' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'mflAccountId'
+--
+-- * 'mflStartIndex'
+--
+-- * 'mflMaxResults'
+managementFiltersList
+    :: Text -- ^ 'mflAccountId'
+    -> ManagementFiltersList
+managementFiltersList pMflAccountId_ =
+    ManagementFiltersList
+    { _mflAccountId = pMflAccountId_
+    , _mflStartIndex = Nothing
+    , _mflMaxResults = Nothing
+    }
+
+-- | Account ID to retrieve filters for.
+mflAccountId :: Lens' ManagementFiltersList Text
+mflAccountId
+  = lens _mflAccountId (\ s a -> s{_mflAccountId = a})
+
+-- | An index of the first entity to retrieve. Use this parameter as a
+-- pagination mechanism along with the max-results parameter.
+mflStartIndex :: Lens' ManagementFiltersList (Maybe Int32)
+mflStartIndex
+  = lens _mflStartIndex
+      (\ s a -> s{_mflStartIndex = a})
+      . mapping _Coerce
+
+-- | The maximum number of filters to include in this response.
+mflMaxResults :: Lens' ManagementFiltersList (Maybe Int32)
+mflMaxResults
+  = lens _mflMaxResults
+      (\ s a -> s{_mflMaxResults = a})
+      . mapping _Coerce
+
+instance GoogleRequest ManagementFiltersList where
+        type Rs ManagementFiltersList = Filters
+        requestClient ManagementFiltersList{..}
+          = go _mflAccountId _mflStartIndex _mflMaxResults
+              (Just AltJSON)
+              analyticsService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy ManagementFiltersListResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Analytics/Management/Filters/Patch.hs b/gen/Network/Google/Resource/Analytics/Management/Filters/Patch.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Analytics/Management/Filters/Patch.hs
@@ -0,0 +1,111 @@
+{-# LANGUAGE DataKinds          #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE FlexibleInstances  #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+{-# LANGUAGE TypeOperators      #-}
+
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
+
+-- |
+-- Module      : Network.Google.Resource.Analytics.Management.Filters.Patch
+-- Copyright   : (c) 2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Updates an existing filter. This method supports patch semantics.
+--
+-- /See:/ <https://developers.google.com/analytics/ Google Analytics API Reference> for @analytics.management.filters.patch@.
+module Network.Google.Resource.Analytics.Management.Filters.Patch
+    (
+    -- * REST Resource
+      ManagementFiltersPatchResource
+
+    -- * Creating a Request
+    , managementFiltersPatch
+    , ManagementFiltersPatch
+
+    -- * Request Lenses
+    , mfpFilterId
+    , mfpPayload
+    , mfpAccountId
+    ) where
+
+import           Network.Google.Analytics.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @analytics.management.filters.patch@ method which the
+-- 'ManagementFiltersPatch' request conforms to.
+type ManagementFiltersPatchResource =
+     "analytics" :>
+       "v3" :>
+         "management" :>
+           "accounts" :>
+             Capture "accountId" Text :>
+               "filters" :>
+                 Capture "filterId" Text :>
+                   QueryParam "alt" AltJSON :>
+                     ReqBody '[JSON] Filter :> Patch '[JSON] Filter
+
+-- | Updates an existing filter. This method supports patch semantics.
+--
+-- /See:/ 'managementFiltersPatch' smart constructor.
+data ManagementFiltersPatch = ManagementFiltersPatch
+    { _mfpFilterId  :: !Text
+    , _mfpPayload   :: !Filter
+    , _mfpAccountId :: !Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ManagementFiltersPatch' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'mfpFilterId'
+--
+-- * 'mfpPayload'
+--
+-- * 'mfpAccountId'
+managementFiltersPatch
+    :: Text -- ^ 'mfpFilterId'
+    -> Filter -- ^ 'mfpPayload'
+    -> Text -- ^ 'mfpAccountId'
+    -> ManagementFiltersPatch
+managementFiltersPatch pMfpFilterId_ pMfpPayload_ pMfpAccountId_ =
+    ManagementFiltersPatch
+    { _mfpFilterId = pMfpFilterId_
+    , _mfpPayload = pMfpPayload_
+    , _mfpAccountId = pMfpAccountId_
+    }
+
+-- | ID of the filter to be updated.
+mfpFilterId :: Lens' ManagementFiltersPatch Text
+mfpFilterId
+  = lens _mfpFilterId (\ s a -> s{_mfpFilterId = a})
+
+-- | Multipart request metadata.
+mfpPayload :: Lens' ManagementFiltersPatch Filter
+mfpPayload
+  = lens _mfpPayload (\ s a -> s{_mfpPayload = a})
+
+-- | Account ID to which the filter belongs.
+mfpAccountId :: Lens' ManagementFiltersPatch Text
+mfpAccountId
+  = lens _mfpAccountId (\ s a -> s{_mfpAccountId = a})
+
+instance GoogleRequest ManagementFiltersPatch where
+        type Rs ManagementFiltersPatch = Filter
+        requestClient ManagementFiltersPatch{..}
+          = go _mfpAccountId _mfpFilterId (Just AltJSON)
+              _mfpPayload
+              analyticsService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy ManagementFiltersPatchResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Analytics/Management/Filters/Update.hs b/gen/Network/Google/Resource/Analytics/Management/Filters/Update.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Analytics/Management/Filters/Update.hs
@@ -0,0 +1,111 @@
+{-# LANGUAGE DataKinds          #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE FlexibleInstances  #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+{-# LANGUAGE TypeOperators      #-}
+
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
+
+-- |
+-- Module      : Network.Google.Resource.Analytics.Management.Filters.Update
+-- Copyright   : (c) 2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Updates an existing filter.
+--
+-- /See:/ <https://developers.google.com/analytics/ Google Analytics API Reference> for @analytics.management.filters.update@.
+module Network.Google.Resource.Analytics.Management.Filters.Update
+    (
+    -- * REST Resource
+      ManagementFiltersUpdateResource
+
+    -- * Creating a Request
+    , managementFiltersUpdate
+    , ManagementFiltersUpdate
+
+    -- * Request Lenses
+    , mfuFilterId
+    , mfuPayload
+    , mfuAccountId
+    ) where
+
+import           Network.Google.Analytics.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @analytics.management.filters.update@ method which the
+-- 'ManagementFiltersUpdate' request conforms to.
+type ManagementFiltersUpdateResource =
+     "analytics" :>
+       "v3" :>
+         "management" :>
+           "accounts" :>
+             Capture "accountId" Text :>
+               "filters" :>
+                 Capture "filterId" Text :>
+                   QueryParam "alt" AltJSON :>
+                     ReqBody '[JSON] Filter :> Put '[JSON] Filter
+
+-- | Updates an existing filter.
+--
+-- /See:/ 'managementFiltersUpdate' smart constructor.
+data ManagementFiltersUpdate = ManagementFiltersUpdate
+    { _mfuFilterId  :: !Text
+    , _mfuPayload   :: !Filter
+    , _mfuAccountId :: !Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ManagementFiltersUpdate' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'mfuFilterId'
+--
+-- * 'mfuPayload'
+--
+-- * 'mfuAccountId'
+managementFiltersUpdate
+    :: Text -- ^ 'mfuFilterId'
+    -> Filter -- ^ 'mfuPayload'
+    -> Text -- ^ 'mfuAccountId'
+    -> ManagementFiltersUpdate
+managementFiltersUpdate pMfuFilterId_ pMfuPayload_ pMfuAccountId_ =
+    ManagementFiltersUpdate
+    { _mfuFilterId = pMfuFilterId_
+    , _mfuPayload = pMfuPayload_
+    , _mfuAccountId = pMfuAccountId_
+    }
+
+-- | ID of the filter to be updated.
+mfuFilterId :: Lens' ManagementFiltersUpdate Text
+mfuFilterId
+  = lens _mfuFilterId (\ s a -> s{_mfuFilterId = a})
+
+-- | Multipart request metadata.
+mfuPayload :: Lens' ManagementFiltersUpdate Filter
+mfuPayload
+  = lens _mfuPayload (\ s a -> s{_mfuPayload = a})
+
+-- | Account ID to which the filter belongs.
+mfuAccountId :: Lens' ManagementFiltersUpdate Text
+mfuAccountId
+  = lens _mfuAccountId (\ s a -> s{_mfuAccountId = a})
+
+instance GoogleRequest ManagementFiltersUpdate where
+        type Rs ManagementFiltersUpdate = Filter
+        requestClient ManagementFiltersUpdate{..}
+          = go _mfuAccountId _mfuFilterId (Just AltJSON)
+              _mfuPayload
+              analyticsService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy ManagementFiltersUpdateResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Analytics/Management/Goals/Get.hs b/gen/Network/Google/Resource/Analytics/Management/Goals/Get.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Analytics/Management/Goals/Get.hs
@@ -0,0 +1,127 @@
+{-# LANGUAGE DataKinds          #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE FlexibleInstances  #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+{-# LANGUAGE TypeOperators      #-}
+
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
+
+-- |
+-- Module      : Network.Google.Resource.Analytics.Management.Goals.Get
+-- Copyright   : (c) 2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Gets a goal to which the user has access.
+--
+-- /See:/ <https://developers.google.com/analytics/ Google Analytics API Reference> for @analytics.management.goals.get@.
+module Network.Google.Resource.Analytics.Management.Goals.Get
+    (
+    -- * REST Resource
+      ManagementGoalsGetResource
+
+    -- * Creating a Request
+    , managementGoalsGet
+    , ManagementGoalsGet
+
+    -- * Request Lenses
+    , mggWebPropertyId
+    , mggGoalId
+    , mggProFileId
+    , mggAccountId
+    ) where
+
+import           Network.Google.Analytics.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @analytics.management.goals.get@ method which the
+-- 'ManagementGoalsGet' request conforms to.
+type ManagementGoalsGetResource =
+     "analytics" :>
+       "v3" :>
+         "management" :>
+           "accounts" :>
+             Capture "accountId" Text :>
+               "webproperties" :>
+                 Capture "webPropertyId" Text :>
+                   "profiles" :>
+                     Capture "profileId" Text :>
+                       "goals" :>
+                         Capture "goalId" Text :>
+                           QueryParam "alt" AltJSON :> Get '[JSON] Goal
+
+-- | Gets a goal to which the user has access.
+--
+-- /See:/ 'managementGoalsGet' smart constructor.
+data ManagementGoalsGet = ManagementGoalsGet
+    { _mggWebPropertyId :: !Text
+    , _mggGoalId        :: !Text
+    , _mggProFileId     :: !Text
+    , _mggAccountId     :: !Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ManagementGoalsGet' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'mggWebPropertyId'
+--
+-- * 'mggGoalId'
+--
+-- * 'mggProFileId'
+--
+-- * 'mggAccountId'
+managementGoalsGet
+    :: Text -- ^ 'mggWebPropertyId'
+    -> Text -- ^ 'mggGoalId'
+    -> Text -- ^ 'mggProFileId'
+    -> Text -- ^ 'mggAccountId'
+    -> ManagementGoalsGet
+managementGoalsGet pMggWebPropertyId_ pMggGoalId_ pMggProFileId_ pMggAccountId_ =
+    ManagementGoalsGet
+    { _mggWebPropertyId = pMggWebPropertyId_
+    , _mggGoalId = pMggGoalId_
+    , _mggProFileId = pMggProFileId_
+    , _mggAccountId = pMggAccountId_
+    }
+
+-- | Web property ID to retrieve the goal for.
+mggWebPropertyId :: Lens' ManagementGoalsGet Text
+mggWebPropertyId
+  = lens _mggWebPropertyId
+      (\ s a -> s{_mggWebPropertyId = a})
+
+-- | Goal ID to retrieve the goal for.
+mggGoalId :: Lens' ManagementGoalsGet Text
+mggGoalId
+  = lens _mggGoalId (\ s a -> s{_mggGoalId = a})
+
+-- | View (Profile) ID to retrieve the goal for.
+mggProFileId :: Lens' ManagementGoalsGet Text
+mggProFileId
+  = lens _mggProFileId (\ s a -> s{_mggProFileId = a})
+
+-- | Account ID to retrieve the goal for.
+mggAccountId :: Lens' ManagementGoalsGet Text
+mggAccountId
+  = lens _mggAccountId (\ s a -> s{_mggAccountId = a})
+
+instance GoogleRequest ManagementGoalsGet where
+        type Rs ManagementGoalsGet = Goal
+        requestClient ManagementGoalsGet{..}
+          = go _mggAccountId _mggWebPropertyId _mggProFileId
+              _mggGoalId
+              (Just AltJSON)
+              analyticsService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy ManagementGoalsGetResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Analytics/Management/Goals/Insert.hs b/gen/Network/Google/Resource/Analytics/Management/Goals/Insert.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Analytics/Management/Goals/Insert.hs
@@ -0,0 +1,127 @@
+{-# LANGUAGE DataKinds          #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE FlexibleInstances  #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+{-# LANGUAGE TypeOperators      #-}
+
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
+
+-- |
+-- Module      : Network.Google.Resource.Analytics.Management.Goals.Insert
+-- Copyright   : (c) 2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Create a new goal.
+--
+-- /See:/ <https://developers.google.com/analytics/ Google Analytics API Reference> for @analytics.management.goals.insert@.
+module Network.Google.Resource.Analytics.Management.Goals.Insert
+    (
+    -- * REST Resource
+      ManagementGoalsInsertResource
+
+    -- * Creating a Request
+    , managementGoalsInsert
+    , ManagementGoalsInsert
+
+    -- * Request Lenses
+    , mgiWebPropertyId
+    , mgiProFileId
+    , mgiPayload
+    , mgiAccountId
+    ) where
+
+import           Network.Google.Analytics.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @analytics.management.goals.insert@ method which the
+-- 'ManagementGoalsInsert' request conforms to.
+type ManagementGoalsInsertResource =
+     "analytics" :>
+       "v3" :>
+         "management" :>
+           "accounts" :>
+             Capture "accountId" Text :>
+               "webproperties" :>
+                 Capture "webPropertyId" Text :>
+                   "profiles" :>
+                     Capture "profileId" Text :>
+                       "goals" :>
+                         QueryParam "alt" AltJSON :>
+                           ReqBody '[JSON] Goal :> Post '[JSON] Goal
+
+-- | Create a new goal.
+--
+-- /See:/ 'managementGoalsInsert' smart constructor.
+data ManagementGoalsInsert = ManagementGoalsInsert
+    { _mgiWebPropertyId :: !Text
+    , _mgiProFileId     :: !Text
+    , _mgiPayload       :: !Goal
+    , _mgiAccountId     :: !Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ManagementGoalsInsert' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'mgiWebPropertyId'
+--
+-- * 'mgiProFileId'
+--
+-- * 'mgiPayload'
+--
+-- * 'mgiAccountId'
+managementGoalsInsert
+    :: Text -- ^ 'mgiWebPropertyId'
+    -> Text -- ^ 'mgiProFileId'
+    -> Goal -- ^ 'mgiPayload'
+    -> Text -- ^ 'mgiAccountId'
+    -> ManagementGoalsInsert
+managementGoalsInsert pMgiWebPropertyId_ pMgiProFileId_ pMgiPayload_ pMgiAccountId_ =
+    ManagementGoalsInsert
+    { _mgiWebPropertyId = pMgiWebPropertyId_
+    , _mgiProFileId = pMgiProFileId_
+    , _mgiPayload = pMgiPayload_
+    , _mgiAccountId = pMgiAccountId_
+    }
+
+-- | Web property ID to create the goal for.
+mgiWebPropertyId :: Lens' ManagementGoalsInsert Text
+mgiWebPropertyId
+  = lens _mgiWebPropertyId
+      (\ s a -> s{_mgiWebPropertyId = a})
+
+-- | View (Profile) ID to create the goal for.
+mgiProFileId :: Lens' ManagementGoalsInsert Text
+mgiProFileId
+  = lens _mgiProFileId (\ s a -> s{_mgiProFileId = a})
+
+-- | Multipart request metadata.
+mgiPayload :: Lens' ManagementGoalsInsert Goal
+mgiPayload
+  = lens _mgiPayload (\ s a -> s{_mgiPayload = a})
+
+-- | Account ID to create the goal for.
+mgiAccountId :: Lens' ManagementGoalsInsert Text
+mgiAccountId
+  = lens _mgiAccountId (\ s a -> s{_mgiAccountId = a})
+
+instance GoogleRequest ManagementGoalsInsert where
+        type Rs ManagementGoalsInsert = Goal
+        requestClient ManagementGoalsInsert{..}
+          = go _mgiAccountId _mgiWebPropertyId _mgiProFileId
+              (Just AltJSON)
+              _mgiPayload
+              analyticsService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy ManagementGoalsInsertResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Analytics/Management/Goals/List.hs b/gen/Network/Google/Resource/Analytics/Management/Goals/List.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Analytics/Management/Goals/List.hs
@@ -0,0 +1,148 @@
+{-# 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.Analytics.Management.Goals.List
+-- Copyright   : (c) 2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Lists goals to which the user has access.
+--
+-- /See:/ <https://developers.google.com/analytics/ Google Analytics API Reference> for @analytics.management.goals.list@.
+module Network.Google.Resource.Analytics.Management.Goals.List
+    (
+    -- * REST Resource
+      ManagementGoalsListResource
+
+    -- * Creating a Request
+    , managementGoalsList
+    , ManagementGoalsList
+
+    -- * Request Lenses
+    , mglWebPropertyId
+    , mglProFileId
+    , mglAccountId
+    , mglStartIndex
+    , mglMaxResults
+    ) where
+
+import           Network.Google.Analytics.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @analytics.management.goals.list@ method which the
+-- 'ManagementGoalsList' request conforms to.
+type ManagementGoalsListResource =
+     "analytics" :>
+       "v3" :>
+         "management" :>
+           "accounts" :>
+             Capture "accountId" Text :>
+               "webproperties" :>
+                 Capture "webPropertyId" Text :>
+                   "profiles" :>
+                     Capture "profileId" Text :>
+                       "goals" :>
+                         QueryParam "start-index" (Textual Int32) :>
+                           QueryParam "max-results" (Textual Int32) :>
+                             QueryParam "alt" AltJSON :> Get '[JSON] Goals
+
+-- | Lists goals to which the user has access.
+--
+-- /See:/ 'managementGoalsList' smart constructor.
+data ManagementGoalsList = ManagementGoalsList
+    { _mglWebPropertyId :: !Text
+    , _mglProFileId     :: !Text
+    , _mglAccountId     :: !Text
+    , _mglStartIndex    :: !(Maybe (Textual Int32))
+    , _mglMaxResults    :: !(Maybe (Textual Int32))
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ManagementGoalsList' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'mglWebPropertyId'
+--
+-- * 'mglProFileId'
+--
+-- * 'mglAccountId'
+--
+-- * 'mglStartIndex'
+--
+-- * 'mglMaxResults'
+managementGoalsList
+    :: Text -- ^ 'mglWebPropertyId'
+    -> Text -- ^ 'mglProFileId'
+    -> Text -- ^ 'mglAccountId'
+    -> ManagementGoalsList
+managementGoalsList pMglWebPropertyId_ pMglProFileId_ pMglAccountId_ =
+    ManagementGoalsList
+    { _mglWebPropertyId = pMglWebPropertyId_
+    , _mglProFileId = pMglProFileId_
+    , _mglAccountId = pMglAccountId_
+    , _mglStartIndex = Nothing
+    , _mglMaxResults = Nothing
+    }
+
+-- | Web property ID to retrieve goals for. Can either be a specific web
+-- property ID or \'~all\', which refers to all the web properties that
+-- user has access to.
+mglWebPropertyId :: Lens' ManagementGoalsList Text
+mglWebPropertyId
+  = lens _mglWebPropertyId
+      (\ s a -> s{_mglWebPropertyId = a})
+
+-- | View (Profile) ID to retrieve goals for. Can either be a specific view
+-- (profile) ID or \'~all\', which refers to all the views (profiles) that
+-- user has access to.
+mglProFileId :: Lens' ManagementGoalsList Text
+mglProFileId
+  = lens _mglProFileId (\ s a -> s{_mglProFileId = a})
+
+-- | Account ID to retrieve goals for. Can either be a specific account ID or
+-- \'~all\', which refers to all the accounts that user has access to.
+mglAccountId :: Lens' ManagementGoalsList Text
+mglAccountId
+  = lens _mglAccountId (\ s a -> s{_mglAccountId = a})
+
+-- | An index of the first goal to retrieve. Use this parameter as a
+-- pagination mechanism along with the max-results parameter.
+mglStartIndex :: Lens' ManagementGoalsList (Maybe Int32)
+mglStartIndex
+  = lens _mglStartIndex
+      (\ s a -> s{_mglStartIndex = a})
+      . mapping _Coerce
+
+-- | The maximum number of goals to include in this response.
+mglMaxResults :: Lens' ManagementGoalsList (Maybe Int32)
+mglMaxResults
+  = lens _mglMaxResults
+      (\ s a -> s{_mglMaxResults = a})
+      . mapping _Coerce
+
+instance GoogleRequest ManagementGoalsList where
+        type Rs ManagementGoalsList = Goals
+        requestClient ManagementGoalsList{..}
+          = go _mglAccountId _mglWebPropertyId _mglProFileId
+              _mglStartIndex
+              _mglMaxResults
+              (Just AltJSON)
+              analyticsService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy ManagementGoalsListResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Analytics/Management/Goals/Patch.hs b/gen/Network/Google/Resource/Analytics/Management/Goals/Patch.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Analytics/Management/Goals/Patch.hs
@@ -0,0 +1,142 @@
+{-# 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.Analytics.Management.Goals.Patch
+-- Copyright   : (c) 2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Updates an existing view (profile). This method supports patch
+-- semantics.
+--
+-- /See:/ <https://developers.google.com/analytics/ Google Analytics API Reference> for @analytics.management.goals.patch@.
+module Network.Google.Resource.Analytics.Management.Goals.Patch
+    (
+    -- * REST Resource
+      ManagementGoalsPatchResource
+
+    -- * Creating a Request
+    , managementGoalsPatch
+    , ManagementGoalsPatch
+
+    -- * Request Lenses
+    , mgpWebPropertyId
+    , mgpGoalId
+    , mgpProFileId
+    , mgpPayload
+    , mgpAccountId
+    ) where
+
+import           Network.Google.Analytics.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @analytics.management.goals.patch@ method which the
+-- 'ManagementGoalsPatch' request conforms to.
+type ManagementGoalsPatchResource =
+     "analytics" :>
+       "v3" :>
+         "management" :>
+           "accounts" :>
+             Capture "accountId" Text :>
+               "webproperties" :>
+                 Capture "webPropertyId" Text :>
+                   "profiles" :>
+                     Capture "profileId" Text :>
+                       "goals" :>
+                         Capture "goalId" Text :>
+                           QueryParam "alt" AltJSON :>
+                             ReqBody '[JSON] Goal :> Patch '[JSON] Goal
+
+-- | Updates an existing view (profile). This method supports patch
+-- semantics.
+--
+-- /See:/ 'managementGoalsPatch' smart constructor.
+data ManagementGoalsPatch = ManagementGoalsPatch
+    { _mgpWebPropertyId :: !Text
+    , _mgpGoalId        :: !Text
+    , _mgpProFileId     :: !Text
+    , _mgpPayload       :: !Goal
+    , _mgpAccountId     :: !Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ManagementGoalsPatch' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'mgpWebPropertyId'
+--
+-- * 'mgpGoalId'
+--
+-- * 'mgpProFileId'
+--
+-- * 'mgpPayload'
+--
+-- * 'mgpAccountId'
+managementGoalsPatch
+    :: Text -- ^ 'mgpWebPropertyId'
+    -> Text -- ^ 'mgpGoalId'
+    -> Text -- ^ 'mgpProFileId'
+    -> Goal -- ^ 'mgpPayload'
+    -> Text -- ^ 'mgpAccountId'
+    -> ManagementGoalsPatch
+managementGoalsPatch pMgpWebPropertyId_ pMgpGoalId_ pMgpProFileId_ pMgpPayload_ pMgpAccountId_ =
+    ManagementGoalsPatch
+    { _mgpWebPropertyId = pMgpWebPropertyId_
+    , _mgpGoalId = pMgpGoalId_
+    , _mgpProFileId = pMgpProFileId_
+    , _mgpPayload = pMgpPayload_
+    , _mgpAccountId = pMgpAccountId_
+    }
+
+-- | Web property ID to update the goal.
+mgpWebPropertyId :: Lens' ManagementGoalsPatch Text
+mgpWebPropertyId
+  = lens _mgpWebPropertyId
+      (\ s a -> s{_mgpWebPropertyId = a})
+
+-- | Index of the goal to be updated.
+mgpGoalId :: Lens' ManagementGoalsPatch Text
+mgpGoalId
+  = lens _mgpGoalId (\ s a -> s{_mgpGoalId = a})
+
+-- | View (Profile) ID to update the goal.
+mgpProFileId :: Lens' ManagementGoalsPatch Text
+mgpProFileId
+  = lens _mgpProFileId (\ s a -> s{_mgpProFileId = a})
+
+-- | Multipart request metadata.
+mgpPayload :: Lens' ManagementGoalsPatch Goal
+mgpPayload
+  = lens _mgpPayload (\ s a -> s{_mgpPayload = a})
+
+-- | Account ID to update the goal.
+mgpAccountId :: Lens' ManagementGoalsPatch Text
+mgpAccountId
+  = lens _mgpAccountId (\ s a -> s{_mgpAccountId = a})
+
+instance GoogleRequest ManagementGoalsPatch where
+        type Rs ManagementGoalsPatch = Goal
+        requestClient ManagementGoalsPatch{..}
+          = go _mgpAccountId _mgpWebPropertyId _mgpProFileId
+              _mgpGoalId
+              (Just AltJSON)
+              _mgpPayload
+              analyticsService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy ManagementGoalsPatchResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Analytics/Management/Goals/Update.hs b/gen/Network/Google/Resource/Analytics/Management/Goals/Update.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Analytics/Management/Goals/Update.hs
@@ -0,0 +1,140 @@
+{-# 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.Analytics.Management.Goals.Update
+-- Copyright   : (c) 2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Updates an existing view (profile).
+--
+-- /See:/ <https://developers.google.com/analytics/ Google Analytics API Reference> for @analytics.management.goals.update@.
+module Network.Google.Resource.Analytics.Management.Goals.Update
+    (
+    -- * REST Resource
+      ManagementGoalsUpdateResource
+
+    -- * Creating a Request
+    , managementGoalsUpdate
+    , ManagementGoalsUpdate
+
+    -- * Request Lenses
+    , mguWebPropertyId
+    , mguGoalId
+    , mguProFileId
+    , mguPayload
+    , mguAccountId
+    ) where
+
+import           Network.Google.Analytics.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @analytics.management.goals.update@ method which the
+-- 'ManagementGoalsUpdate' request conforms to.
+type ManagementGoalsUpdateResource =
+     "analytics" :>
+       "v3" :>
+         "management" :>
+           "accounts" :>
+             Capture "accountId" Text :>
+               "webproperties" :>
+                 Capture "webPropertyId" Text :>
+                   "profiles" :>
+                     Capture "profileId" Text :>
+                       "goals" :>
+                         Capture "goalId" Text :>
+                           QueryParam "alt" AltJSON :>
+                             ReqBody '[JSON] Goal :> Put '[JSON] Goal
+
+-- | Updates an existing view (profile).
+--
+-- /See:/ 'managementGoalsUpdate' smart constructor.
+data ManagementGoalsUpdate = ManagementGoalsUpdate
+    { _mguWebPropertyId :: !Text
+    , _mguGoalId        :: !Text
+    , _mguProFileId     :: !Text
+    , _mguPayload       :: !Goal
+    , _mguAccountId     :: !Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ManagementGoalsUpdate' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'mguWebPropertyId'
+--
+-- * 'mguGoalId'
+--
+-- * 'mguProFileId'
+--
+-- * 'mguPayload'
+--
+-- * 'mguAccountId'
+managementGoalsUpdate
+    :: Text -- ^ 'mguWebPropertyId'
+    -> Text -- ^ 'mguGoalId'
+    -> Text -- ^ 'mguProFileId'
+    -> Goal -- ^ 'mguPayload'
+    -> Text -- ^ 'mguAccountId'
+    -> ManagementGoalsUpdate
+managementGoalsUpdate pMguWebPropertyId_ pMguGoalId_ pMguProFileId_ pMguPayload_ pMguAccountId_ =
+    ManagementGoalsUpdate
+    { _mguWebPropertyId = pMguWebPropertyId_
+    , _mguGoalId = pMguGoalId_
+    , _mguProFileId = pMguProFileId_
+    , _mguPayload = pMguPayload_
+    , _mguAccountId = pMguAccountId_
+    }
+
+-- | Web property ID to update the goal.
+mguWebPropertyId :: Lens' ManagementGoalsUpdate Text
+mguWebPropertyId
+  = lens _mguWebPropertyId
+      (\ s a -> s{_mguWebPropertyId = a})
+
+-- | Index of the goal to be updated.
+mguGoalId :: Lens' ManagementGoalsUpdate Text
+mguGoalId
+  = lens _mguGoalId (\ s a -> s{_mguGoalId = a})
+
+-- | View (Profile) ID to update the goal.
+mguProFileId :: Lens' ManagementGoalsUpdate Text
+mguProFileId
+  = lens _mguProFileId (\ s a -> s{_mguProFileId = a})
+
+-- | Multipart request metadata.
+mguPayload :: Lens' ManagementGoalsUpdate Goal
+mguPayload
+  = lens _mguPayload (\ s a -> s{_mguPayload = a})
+
+-- | Account ID to update the goal.
+mguAccountId :: Lens' ManagementGoalsUpdate Text
+mguAccountId
+  = lens _mguAccountId (\ s a -> s{_mguAccountId = a})
+
+instance GoogleRequest ManagementGoalsUpdate where
+        type Rs ManagementGoalsUpdate = Goal
+        requestClient ManagementGoalsUpdate{..}
+          = go _mguAccountId _mguWebPropertyId _mguProFileId
+              _mguGoalId
+              (Just AltJSON)
+              _mguPayload
+              analyticsService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy ManagementGoalsUpdateResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Analytics/Management/ProFileFilterLinks/Delete.hs b/gen/Network/Google/Resource/Analytics/Management/ProFileFilterLinks/Delete.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Analytics/Management/ProFileFilterLinks/Delete.hs
@@ -0,0 +1,132 @@
+{-# 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.Analytics.Management.ProFileFilterLinks.Delete
+-- Copyright   : (c) 2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Delete a profile filter link.
+--
+-- /See:/ <https://developers.google.com/analytics/ Google Analytics API Reference> for @analytics.management.profileFilterLinks.delete@.
+module Network.Google.Resource.Analytics.Management.ProFileFilterLinks.Delete
+    (
+    -- * REST Resource
+      ManagementProFileFilterLinksDeleteResource
+
+    -- * Creating a Request
+    , managementProFileFilterLinksDelete
+    , ManagementProFileFilterLinksDelete
+
+    -- * Request Lenses
+    , mpffldWebPropertyId
+    , mpffldProFileId
+    , mpffldAccountId
+    , mpffldLinkId
+    ) where
+
+import           Network.Google.Analytics.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @analytics.management.profileFilterLinks.delete@ method which the
+-- 'ManagementProFileFilterLinksDelete' request conforms to.
+type ManagementProFileFilterLinksDeleteResource =
+     "analytics" :>
+       "v3" :>
+         "management" :>
+           "accounts" :>
+             Capture "accountId" Text :>
+               "webproperties" :>
+                 Capture "webPropertyId" Text :>
+                   "profiles" :>
+                     Capture "profileId" Text :>
+                       "profileFilterLinks" :>
+                         Capture "linkId" Text :>
+                           QueryParam "alt" AltJSON :> Delete '[JSON] ()
+
+-- | Delete a profile filter link.
+--
+-- /See:/ 'managementProFileFilterLinksDelete' smart constructor.
+data ManagementProFileFilterLinksDelete = ManagementProFileFilterLinksDelete
+    { _mpffldWebPropertyId :: !Text
+    , _mpffldProFileId     :: !Text
+    , _mpffldAccountId     :: !Text
+    , _mpffldLinkId        :: !Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ManagementProFileFilterLinksDelete' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'mpffldWebPropertyId'
+--
+-- * 'mpffldProFileId'
+--
+-- * 'mpffldAccountId'
+--
+-- * 'mpffldLinkId'
+managementProFileFilterLinksDelete
+    :: Text -- ^ 'mpffldWebPropertyId'
+    -> Text -- ^ 'mpffldProFileId'
+    -> Text -- ^ 'mpffldAccountId'
+    -> Text -- ^ 'mpffldLinkId'
+    -> ManagementProFileFilterLinksDelete
+managementProFileFilterLinksDelete pMpffldWebPropertyId_ pMpffldProFileId_ pMpffldAccountId_ pMpffldLinkId_ =
+    ManagementProFileFilterLinksDelete
+    { _mpffldWebPropertyId = pMpffldWebPropertyId_
+    , _mpffldProFileId = pMpffldProFileId_
+    , _mpffldAccountId = pMpffldAccountId_
+    , _mpffldLinkId = pMpffldLinkId_
+    }
+
+-- | Web property Id to which the profile filter link belongs.
+mpffldWebPropertyId :: Lens' ManagementProFileFilterLinksDelete Text
+mpffldWebPropertyId
+  = lens _mpffldWebPropertyId
+      (\ s a -> s{_mpffldWebPropertyId = a})
+
+-- | Profile ID to which the filter link belongs.
+mpffldProFileId :: Lens' ManagementProFileFilterLinksDelete Text
+mpffldProFileId
+  = lens _mpffldProFileId
+      (\ s a -> s{_mpffldProFileId = a})
+
+-- | Account ID to which the profile filter link belongs.
+mpffldAccountId :: Lens' ManagementProFileFilterLinksDelete Text
+mpffldAccountId
+  = lens _mpffldAccountId
+      (\ s a -> s{_mpffldAccountId = a})
+
+-- | ID of the profile filter link to delete.
+mpffldLinkId :: Lens' ManagementProFileFilterLinksDelete Text
+mpffldLinkId
+  = lens _mpffldLinkId (\ s a -> s{_mpffldLinkId = a})
+
+instance GoogleRequest
+         ManagementProFileFilterLinksDelete where
+        type Rs ManagementProFileFilterLinksDelete = ()
+        requestClient ManagementProFileFilterLinksDelete{..}
+          = go _mpffldAccountId _mpffldWebPropertyId
+              _mpffldProFileId
+              _mpffldLinkId
+              (Just AltJSON)
+              analyticsService
+          where go
+                  = buildClient
+                      (Proxy ::
+                         Proxy ManagementProFileFilterLinksDeleteResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Analytics/Management/ProFileFilterLinks/Get.hs b/gen/Network/Google/Resource/Analytics/Management/ProFileFilterLinks/Get.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Analytics/Management/ProFileFilterLinks/Get.hs
@@ -0,0 +1,134 @@
+{-# 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.Analytics.Management.ProFileFilterLinks.Get
+-- Copyright   : (c) 2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Returns a single profile filter link.
+--
+-- /See:/ <https://developers.google.com/analytics/ Google Analytics API Reference> for @analytics.management.profileFilterLinks.get@.
+module Network.Google.Resource.Analytics.Management.ProFileFilterLinks.Get
+    (
+    -- * REST Resource
+      ManagementProFileFilterLinksGetResource
+
+    -- * Creating a Request
+    , managementProFileFilterLinksGet
+    , ManagementProFileFilterLinksGet
+
+    -- * Request Lenses
+    , mpfflgWebPropertyId
+    , mpfflgProFileId
+    , mpfflgAccountId
+    , mpfflgLinkId
+    ) where
+
+import           Network.Google.Analytics.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @analytics.management.profileFilterLinks.get@ method which the
+-- 'ManagementProFileFilterLinksGet' request conforms to.
+type ManagementProFileFilterLinksGetResource =
+     "analytics" :>
+       "v3" :>
+         "management" :>
+           "accounts" :>
+             Capture "accountId" Text :>
+               "webproperties" :>
+                 Capture "webPropertyId" Text :>
+                   "profiles" :>
+                     Capture "profileId" Text :>
+                       "profileFilterLinks" :>
+                         Capture "linkId" Text :>
+                           QueryParam "alt" AltJSON :>
+                             Get '[JSON] ProFileFilterLink
+
+-- | Returns a single profile filter link.
+--
+-- /See:/ 'managementProFileFilterLinksGet' smart constructor.
+data ManagementProFileFilterLinksGet = ManagementProFileFilterLinksGet
+    { _mpfflgWebPropertyId :: !Text
+    , _mpfflgProFileId     :: !Text
+    , _mpfflgAccountId     :: !Text
+    , _mpfflgLinkId        :: !Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ManagementProFileFilterLinksGet' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'mpfflgWebPropertyId'
+--
+-- * 'mpfflgProFileId'
+--
+-- * 'mpfflgAccountId'
+--
+-- * 'mpfflgLinkId'
+managementProFileFilterLinksGet
+    :: Text -- ^ 'mpfflgWebPropertyId'
+    -> Text -- ^ 'mpfflgProFileId'
+    -> Text -- ^ 'mpfflgAccountId'
+    -> Text -- ^ 'mpfflgLinkId'
+    -> ManagementProFileFilterLinksGet
+managementProFileFilterLinksGet pMpfflgWebPropertyId_ pMpfflgProFileId_ pMpfflgAccountId_ pMpfflgLinkId_ =
+    ManagementProFileFilterLinksGet
+    { _mpfflgWebPropertyId = pMpfflgWebPropertyId_
+    , _mpfflgProFileId = pMpfflgProFileId_
+    , _mpfflgAccountId = pMpfflgAccountId_
+    , _mpfflgLinkId = pMpfflgLinkId_
+    }
+
+-- | Web property Id to retrieve profile filter link for.
+mpfflgWebPropertyId :: Lens' ManagementProFileFilterLinksGet Text
+mpfflgWebPropertyId
+  = lens _mpfflgWebPropertyId
+      (\ s a -> s{_mpfflgWebPropertyId = a})
+
+-- | Profile ID to retrieve filter link for.
+mpfflgProFileId :: Lens' ManagementProFileFilterLinksGet Text
+mpfflgProFileId
+  = lens _mpfflgProFileId
+      (\ s a -> s{_mpfflgProFileId = a})
+
+-- | Account ID to retrieve profile filter link for.
+mpfflgAccountId :: Lens' ManagementProFileFilterLinksGet Text
+mpfflgAccountId
+  = lens _mpfflgAccountId
+      (\ s a -> s{_mpfflgAccountId = a})
+
+-- | ID of the profile filter link.
+mpfflgLinkId :: Lens' ManagementProFileFilterLinksGet Text
+mpfflgLinkId
+  = lens _mpfflgLinkId (\ s a -> s{_mpfflgLinkId = a})
+
+instance GoogleRequest
+         ManagementProFileFilterLinksGet where
+        type Rs ManagementProFileFilterLinksGet =
+             ProFileFilterLink
+        requestClient ManagementProFileFilterLinksGet{..}
+          = go _mpfflgAccountId _mpfflgWebPropertyId
+              _mpfflgProFileId
+              _mpfflgLinkId
+              (Just AltJSON)
+              analyticsService
+          where go
+                  = buildClient
+                      (Proxy ::
+                         Proxy ManagementProFileFilterLinksGetResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Analytics/Management/ProFileFilterLinks/Insert.hs b/gen/Network/Google/Resource/Analytics/Management/ProFileFilterLinks/Insert.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Analytics/Management/ProFileFilterLinks/Insert.hs
@@ -0,0 +1,135 @@
+{-# LANGUAGE DataKinds          #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE FlexibleInstances  #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+{-# LANGUAGE TypeOperators      #-}
+
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
+
+-- |
+-- Module      : Network.Google.Resource.Analytics.Management.ProFileFilterLinks.Insert
+-- Copyright   : (c) 2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Create a new profile filter link.
+--
+-- /See:/ <https://developers.google.com/analytics/ Google Analytics API Reference> for @analytics.management.profileFilterLinks.insert@.
+module Network.Google.Resource.Analytics.Management.ProFileFilterLinks.Insert
+    (
+    -- * REST Resource
+      ManagementProFileFilterLinksInsertResource
+
+    -- * Creating a Request
+    , managementProFileFilterLinksInsert
+    , ManagementProFileFilterLinksInsert
+
+    -- * Request Lenses
+    , mpffliWebPropertyId
+    , mpffliProFileId
+    , mpffliPayload
+    , mpffliAccountId
+    ) where
+
+import           Network.Google.Analytics.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @analytics.management.profileFilterLinks.insert@ method which the
+-- 'ManagementProFileFilterLinksInsert' request conforms to.
+type ManagementProFileFilterLinksInsertResource =
+     "analytics" :>
+       "v3" :>
+         "management" :>
+           "accounts" :>
+             Capture "accountId" Text :>
+               "webproperties" :>
+                 Capture "webPropertyId" Text :>
+                   "profiles" :>
+                     Capture "profileId" Text :>
+                       "profileFilterLinks" :>
+                         QueryParam "alt" AltJSON :>
+                           ReqBody '[JSON] ProFileFilterLink :>
+                             Post '[JSON] ProFileFilterLink
+
+-- | Create a new profile filter link.
+--
+-- /See:/ 'managementProFileFilterLinksInsert' smart constructor.
+data ManagementProFileFilterLinksInsert = ManagementProFileFilterLinksInsert
+    { _mpffliWebPropertyId :: !Text
+    , _mpffliProFileId     :: !Text
+    , _mpffliPayload       :: !ProFileFilterLink
+    , _mpffliAccountId     :: !Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ManagementProFileFilterLinksInsert' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'mpffliWebPropertyId'
+--
+-- * 'mpffliProFileId'
+--
+-- * 'mpffliPayload'
+--
+-- * 'mpffliAccountId'
+managementProFileFilterLinksInsert
+    :: Text -- ^ 'mpffliWebPropertyId'
+    -> Text -- ^ 'mpffliProFileId'
+    -> ProFileFilterLink -- ^ 'mpffliPayload'
+    -> Text -- ^ 'mpffliAccountId'
+    -> ManagementProFileFilterLinksInsert
+managementProFileFilterLinksInsert pMpffliWebPropertyId_ pMpffliProFileId_ pMpffliPayload_ pMpffliAccountId_ =
+    ManagementProFileFilterLinksInsert
+    { _mpffliWebPropertyId = pMpffliWebPropertyId_
+    , _mpffliProFileId = pMpffliProFileId_
+    , _mpffliPayload = pMpffliPayload_
+    , _mpffliAccountId = pMpffliAccountId_
+    }
+
+-- | Web property Id to create profile filter link for.
+mpffliWebPropertyId :: Lens' ManagementProFileFilterLinksInsert Text
+mpffliWebPropertyId
+  = lens _mpffliWebPropertyId
+      (\ s a -> s{_mpffliWebPropertyId = a})
+
+-- | Profile ID to create filter link for.
+mpffliProFileId :: Lens' ManagementProFileFilterLinksInsert Text
+mpffliProFileId
+  = lens _mpffliProFileId
+      (\ s a -> s{_mpffliProFileId = a})
+
+-- | Multipart request metadata.
+mpffliPayload :: Lens' ManagementProFileFilterLinksInsert ProFileFilterLink
+mpffliPayload
+  = lens _mpffliPayload
+      (\ s a -> s{_mpffliPayload = a})
+
+-- | Account ID to create profile filter link for.
+mpffliAccountId :: Lens' ManagementProFileFilterLinksInsert Text
+mpffliAccountId
+  = lens _mpffliAccountId
+      (\ s a -> s{_mpffliAccountId = a})
+
+instance GoogleRequest
+         ManagementProFileFilterLinksInsert where
+        type Rs ManagementProFileFilterLinksInsert =
+             ProFileFilterLink
+        requestClient ManagementProFileFilterLinksInsert{..}
+          = go _mpffliAccountId _mpffliWebPropertyId
+              _mpffliProFileId
+              (Just AltJSON)
+              _mpffliPayload
+              analyticsService
+          where go
+                  = buildClient
+                      (Proxy ::
+                         Proxy ManagementProFileFilterLinksInsertResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Analytics/Management/ProFileFilterLinks/List.hs b/gen/Network/Google/Resource/Analytics/Management/ProFileFilterLinks/List.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Analytics/Management/ProFileFilterLinks/List.hs
@@ -0,0 +1,154 @@
+{-# LANGUAGE DataKinds          #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE FlexibleInstances  #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+{-# LANGUAGE TypeOperators      #-}
+
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
+
+-- |
+-- Module      : Network.Google.Resource.Analytics.Management.ProFileFilterLinks.List
+-- Copyright   : (c) 2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Lists all profile filter links for a profile.
+--
+-- /See:/ <https://developers.google.com/analytics/ Google Analytics API Reference> for @analytics.management.profileFilterLinks.list@.
+module Network.Google.Resource.Analytics.Management.ProFileFilterLinks.List
+    (
+    -- * REST Resource
+      ManagementProFileFilterLinksListResource
+
+    -- * Creating a Request
+    , managementProFileFilterLinksList
+    , ManagementProFileFilterLinksList
+
+    -- * Request Lenses
+    , mpffllWebPropertyId
+    , mpffllProFileId
+    , mpffllAccountId
+    , mpffllStartIndex
+    , mpffllMaxResults
+    ) where
+
+import           Network.Google.Analytics.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @analytics.management.profileFilterLinks.list@ method which the
+-- 'ManagementProFileFilterLinksList' request conforms to.
+type ManagementProFileFilterLinksListResource =
+     "analytics" :>
+       "v3" :>
+         "management" :>
+           "accounts" :>
+             Capture "accountId" Text :>
+               "webproperties" :>
+                 Capture "webPropertyId" Text :>
+                   "profiles" :>
+                     Capture "profileId" Text :>
+                       "profileFilterLinks" :>
+                         QueryParam "start-index" (Textual Int32) :>
+                           QueryParam "max-results" (Textual Int32) :>
+                             QueryParam "alt" AltJSON :>
+                               Get '[JSON] ProFileFilterLinks
+
+-- | Lists all profile filter links for a profile.
+--
+-- /See:/ 'managementProFileFilterLinksList' smart constructor.
+data ManagementProFileFilterLinksList = ManagementProFileFilterLinksList
+    { _mpffllWebPropertyId :: !Text
+    , _mpffllProFileId     :: !Text
+    , _mpffllAccountId     :: !Text
+    , _mpffllStartIndex    :: !(Maybe (Textual Int32))
+    , _mpffllMaxResults    :: !(Maybe (Textual Int32))
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ManagementProFileFilterLinksList' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'mpffllWebPropertyId'
+--
+-- * 'mpffllProFileId'
+--
+-- * 'mpffllAccountId'
+--
+-- * 'mpffllStartIndex'
+--
+-- * 'mpffllMaxResults'
+managementProFileFilterLinksList
+    :: Text -- ^ 'mpffllWebPropertyId'
+    -> Text -- ^ 'mpffllProFileId'
+    -> Text -- ^ 'mpffllAccountId'
+    -> ManagementProFileFilterLinksList
+managementProFileFilterLinksList pMpffllWebPropertyId_ pMpffllProFileId_ pMpffllAccountId_ =
+    ManagementProFileFilterLinksList
+    { _mpffllWebPropertyId = pMpffllWebPropertyId_
+    , _mpffllProFileId = pMpffllProFileId_
+    , _mpffllAccountId = pMpffllAccountId_
+    , _mpffllStartIndex = Nothing
+    , _mpffllMaxResults = Nothing
+    }
+
+-- | Web property Id for profile filter links for. Can either be a specific
+-- web property ID or \'~all\', which refers to all the web properties that
+-- user has access to.
+mpffllWebPropertyId :: Lens' ManagementProFileFilterLinksList Text
+mpffllWebPropertyId
+  = lens _mpffllWebPropertyId
+      (\ s a -> s{_mpffllWebPropertyId = a})
+
+-- | Profile ID to retrieve filter links for. Can either be a specific
+-- profile ID or \'~all\', which refers to all the profiles that user has
+-- access to.
+mpffllProFileId :: Lens' ManagementProFileFilterLinksList Text
+mpffllProFileId
+  = lens _mpffllProFileId
+      (\ s a -> s{_mpffllProFileId = a})
+
+-- | Account ID to retrieve profile filter links for.
+mpffllAccountId :: Lens' ManagementProFileFilterLinksList Text
+mpffllAccountId
+  = lens _mpffllAccountId
+      (\ s a -> s{_mpffllAccountId = a})
+
+-- | An index of the first entity to retrieve. Use this parameter as a
+-- pagination mechanism along with the max-results parameter.
+mpffllStartIndex :: Lens' ManagementProFileFilterLinksList (Maybe Int32)
+mpffllStartIndex
+  = lens _mpffllStartIndex
+      (\ s a -> s{_mpffllStartIndex = a})
+      . mapping _Coerce
+
+-- | The maximum number of profile filter links to include in this response.
+mpffllMaxResults :: Lens' ManagementProFileFilterLinksList (Maybe Int32)
+mpffllMaxResults
+  = lens _mpffllMaxResults
+      (\ s a -> s{_mpffllMaxResults = a})
+      . mapping _Coerce
+
+instance GoogleRequest
+         ManagementProFileFilterLinksList where
+        type Rs ManagementProFileFilterLinksList =
+             ProFileFilterLinks
+        requestClient ManagementProFileFilterLinksList{..}
+          = go _mpffllAccountId _mpffllWebPropertyId
+              _mpffllProFileId
+              _mpffllStartIndex
+              _mpffllMaxResults
+              (Just AltJSON)
+              analyticsService
+          where go
+                  = buildClient
+                      (Proxy ::
+                         Proxy ManagementProFileFilterLinksListResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Analytics/Management/ProFileFilterLinks/Patch.hs b/gen/Network/Google/Resource/Analytics/Management/ProFileFilterLinks/Patch.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Analytics/Management/ProFileFilterLinks/Patch.hs
@@ -0,0 +1,150 @@
+{-# LANGUAGE DataKinds          #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE FlexibleInstances  #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+{-# LANGUAGE TypeOperators      #-}
+
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
+
+-- |
+-- Module      : Network.Google.Resource.Analytics.Management.ProFileFilterLinks.Patch
+-- Copyright   : (c) 2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Update an existing profile filter link. This method supports patch
+-- semantics.
+--
+-- /See:/ <https://developers.google.com/analytics/ Google Analytics API Reference> for @analytics.management.profileFilterLinks.patch@.
+module Network.Google.Resource.Analytics.Management.ProFileFilterLinks.Patch
+    (
+    -- * REST Resource
+      ManagementProFileFilterLinksPatchResource
+
+    -- * Creating a Request
+    , managementProFileFilterLinksPatch
+    , ManagementProFileFilterLinksPatch
+
+    -- * Request Lenses
+    , mpfflpWebPropertyId
+    , mpfflpProFileId
+    , mpfflpPayload
+    , mpfflpAccountId
+    , mpfflpLinkId
+    ) where
+
+import           Network.Google.Analytics.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @analytics.management.profileFilterLinks.patch@ method which the
+-- 'ManagementProFileFilterLinksPatch' request conforms to.
+type ManagementProFileFilterLinksPatchResource =
+     "analytics" :>
+       "v3" :>
+         "management" :>
+           "accounts" :>
+             Capture "accountId" Text :>
+               "webproperties" :>
+                 Capture "webPropertyId" Text :>
+                   "profiles" :>
+                     Capture "profileId" Text :>
+                       "profileFilterLinks" :>
+                         Capture "linkId" Text :>
+                           QueryParam "alt" AltJSON :>
+                             ReqBody '[JSON] ProFileFilterLink :>
+                               Patch '[JSON] ProFileFilterLink
+
+-- | Update an existing profile filter link. This method supports patch
+-- semantics.
+--
+-- /See:/ 'managementProFileFilterLinksPatch' smart constructor.
+data ManagementProFileFilterLinksPatch = ManagementProFileFilterLinksPatch
+    { _mpfflpWebPropertyId :: !Text
+    , _mpfflpProFileId     :: !Text
+    , _mpfflpPayload       :: !ProFileFilterLink
+    , _mpfflpAccountId     :: !Text
+    , _mpfflpLinkId        :: !Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ManagementProFileFilterLinksPatch' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'mpfflpWebPropertyId'
+--
+-- * 'mpfflpProFileId'
+--
+-- * 'mpfflpPayload'
+--
+-- * 'mpfflpAccountId'
+--
+-- * 'mpfflpLinkId'
+managementProFileFilterLinksPatch
+    :: Text -- ^ 'mpfflpWebPropertyId'
+    -> Text -- ^ 'mpfflpProFileId'
+    -> ProFileFilterLink -- ^ 'mpfflpPayload'
+    -> Text -- ^ 'mpfflpAccountId'
+    -> Text -- ^ 'mpfflpLinkId'
+    -> ManagementProFileFilterLinksPatch
+managementProFileFilterLinksPatch pMpfflpWebPropertyId_ pMpfflpProFileId_ pMpfflpPayload_ pMpfflpAccountId_ pMpfflpLinkId_ =
+    ManagementProFileFilterLinksPatch
+    { _mpfflpWebPropertyId = pMpfflpWebPropertyId_
+    , _mpfflpProFileId = pMpfflpProFileId_
+    , _mpfflpPayload = pMpfflpPayload_
+    , _mpfflpAccountId = pMpfflpAccountId_
+    , _mpfflpLinkId = pMpfflpLinkId_
+    }
+
+-- | Web property Id to which profile filter link belongs
+mpfflpWebPropertyId :: Lens' ManagementProFileFilterLinksPatch Text
+mpfflpWebPropertyId
+  = lens _mpfflpWebPropertyId
+      (\ s a -> s{_mpfflpWebPropertyId = a})
+
+-- | Profile ID to which filter link belongs
+mpfflpProFileId :: Lens' ManagementProFileFilterLinksPatch Text
+mpfflpProFileId
+  = lens _mpfflpProFileId
+      (\ s a -> s{_mpfflpProFileId = a})
+
+-- | Multipart request metadata.
+mpfflpPayload :: Lens' ManagementProFileFilterLinksPatch ProFileFilterLink
+mpfflpPayload
+  = lens _mpfflpPayload
+      (\ s a -> s{_mpfflpPayload = a})
+
+-- | Account ID to which profile filter link belongs.
+mpfflpAccountId :: Lens' ManagementProFileFilterLinksPatch Text
+mpfflpAccountId
+  = lens _mpfflpAccountId
+      (\ s a -> s{_mpfflpAccountId = a})
+
+-- | ID of the profile filter link to be updated.
+mpfflpLinkId :: Lens' ManagementProFileFilterLinksPatch Text
+mpfflpLinkId
+  = lens _mpfflpLinkId (\ s a -> s{_mpfflpLinkId = a})
+
+instance GoogleRequest
+         ManagementProFileFilterLinksPatch where
+        type Rs ManagementProFileFilterLinksPatch =
+             ProFileFilterLink
+        requestClient ManagementProFileFilterLinksPatch{..}
+          = go _mpfflpAccountId _mpfflpWebPropertyId
+              _mpfflpProFileId
+              _mpfflpLinkId
+              (Just AltJSON)
+              _mpfflpPayload
+              analyticsService
+          where go
+                  = buildClient
+                      (Proxy ::
+                         Proxy ManagementProFileFilterLinksPatchResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Analytics/Management/ProFileFilterLinks/Update.hs b/gen/Network/Google/Resource/Analytics/Management/ProFileFilterLinks/Update.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Analytics/Management/ProFileFilterLinks/Update.hs
@@ -0,0 +1,148 @@
+{-# 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.Analytics.Management.ProFileFilterLinks.Update
+-- Copyright   : (c) 2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Update an existing profile filter link.
+--
+-- /See:/ <https://developers.google.com/analytics/ Google Analytics API Reference> for @analytics.management.profileFilterLinks.update@.
+module Network.Google.Resource.Analytics.Management.ProFileFilterLinks.Update
+    (
+    -- * REST Resource
+      ManagementProFileFilterLinksUpdateResource
+
+    -- * Creating a Request
+    , managementProFileFilterLinksUpdate
+    , ManagementProFileFilterLinksUpdate
+
+    -- * Request Lenses
+    , mpffluWebPropertyId
+    , mpffluProFileId
+    , mpffluPayload
+    , mpffluAccountId
+    , mpffluLinkId
+    ) where
+
+import           Network.Google.Analytics.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @analytics.management.profileFilterLinks.update@ method which the
+-- 'ManagementProFileFilterLinksUpdate' request conforms to.
+type ManagementProFileFilterLinksUpdateResource =
+     "analytics" :>
+       "v3" :>
+         "management" :>
+           "accounts" :>
+             Capture "accountId" Text :>
+               "webproperties" :>
+                 Capture "webPropertyId" Text :>
+                   "profiles" :>
+                     Capture "profileId" Text :>
+                       "profileFilterLinks" :>
+                         Capture "linkId" Text :>
+                           QueryParam "alt" AltJSON :>
+                             ReqBody '[JSON] ProFileFilterLink :>
+                               Put '[JSON] ProFileFilterLink
+
+-- | Update an existing profile filter link.
+--
+-- /See:/ 'managementProFileFilterLinksUpdate' smart constructor.
+data ManagementProFileFilterLinksUpdate = ManagementProFileFilterLinksUpdate
+    { _mpffluWebPropertyId :: !Text
+    , _mpffluProFileId     :: !Text
+    , _mpffluPayload       :: !ProFileFilterLink
+    , _mpffluAccountId     :: !Text
+    , _mpffluLinkId        :: !Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ManagementProFileFilterLinksUpdate' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'mpffluWebPropertyId'
+--
+-- * 'mpffluProFileId'
+--
+-- * 'mpffluPayload'
+--
+-- * 'mpffluAccountId'
+--
+-- * 'mpffluLinkId'
+managementProFileFilterLinksUpdate
+    :: Text -- ^ 'mpffluWebPropertyId'
+    -> Text -- ^ 'mpffluProFileId'
+    -> ProFileFilterLink -- ^ 'mpffluPayload'
+    -> Text -- ^ 'mpffluAccountId'
+    -> Text -- ^ 'mpffluLinkId'
+    -> ManagementProFileFilterLinksUpdate
+managementProFileFilterLinksUpdate pMpffluWebPropertyId_ pMpffluProFileId_ pMpffluPayload_ pMpffluAccountId_ pMpffluLinkId_ =
+    ManagementProFileFilterLinksUpdate
+    { _mpffluWebPropertyId = pMpffluWebPropertyId_
+    , _mpffluProFileId = pMpffluProFileId_
+    , _mpffluPayload = pMpffluPayload_
+    , _mpffluAccountId = pMpffluAccountId_
+    , _mpffluLinkId = pMpffluLinkId_
+    }
+
+-- | Web property Id to which profile filter link belongs
+mpffluWebPropertyId :: Lens' ManagementProFileFilterLinksUpdate Text
+mpffluWebPropertyId
+  = lens _mpffluWebPropertyId
+      (\ s a -> s{_mpffluWebPropertyId = a})
+
+-- | Profile ID to which filter link belongs
+mpffluProFileId :: Lens' ManagementProFileFilterLinksUpdate Text
+mpffluProFileId
+  = lens _mpffluProFileId
+      (\ s a -> s{_mpffluProFileId = a})
+
+-- | Multipart request metadata.
+mpffluPayload :: Lens' ManagementProFileFilterLinksUpdate ProFileFilterLink
+mpffluPayload
+  = lens _mpffluPayload
+      (\ s a -> s{_mpffluPayload = a})
+
+-- | Account ID to which profile filter link belongs.
+mpffluAccountId :: Lens' ManagementProFileFilterLinksUpdate Text
+mpffluAccountId
+  = lens _mpffluAccountId
+      (\ s a -> s{_mpffluAccountId = a})
+
+-- | ID of the profile filter link to be updated.
+mpffluLinkId :: Lens' ManagementProFileFilterLinksUpdate Text
+mpffluLinkId
+  = lens _mpffluLinkId (\ s a -> s{_mpffluLinkId = a})
+
+instance GoogleRequest
+         ManagementProFileFilterLinksUpdate where
+        type Rs ManagementProFileFilterLinksUpdate =
+             ProFileFilterLink
+        requestClient ManagementProFileFilterLinksUpdate{..}
+          = go _mpffluAccountId _mpffluWebPropertyId
+              _mpffluProFileId
+              _mpffluLinkId
+              (Just AltJSON)
+              _mpffluPayload
+              analyticsService
+          where go
+                  = buildClient
+                      (Proxy ::
+                         Proxy ManagementProFileFilterLinksUpdateResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Analytics/Management/ProFileUserLinks/Delete.hs b/gen/Network/Google/Resource/Analytics/Management/ProFileUserLinks/Delete.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Analytics/Management/ProFileUserLinks/Delete.hs
@@ -0,0 +1,132 @@
+{-# 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.Analytics.Management.ProFileUserLinks.Delete
+-- Copyright   : (c) 2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Removes a user from the given view (profile).
+--
+-- /See:/ <https://developers.google.com/analytics/ Google Analytics API Reference> for @analytics.management.profileUserLinks.delete@.
+module Network.Google.Resource.Analytics.Management.ProFileUserLinks.Delete
+    (
+    -- * REST Resource
+      ManagementProFileUserLinksDeleteResource
+
+    -- * Creating a Request
+    , managementProFileUserLinksDelete
+    , ManagementProFileUserLinksDelete
+
+    -- * Request Lenses
+    , mpfuldWebPropertyId
+    , mpfuldProFileId
+    , mpfuldAccountId
+    , mpfuldLinkId
+    ) where
+
+import           Network.Google.Analytics.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @analytics.management.profileUserLinks.delete@ method which the
+-- 'ManagementProFileUserLinksDelete' request conforms to.
+type ManagementProFileUserLinksDeleteResource =
+     "analytics" :>
+       "v3" :>
+         "management" :>
+           "accounts" :>
+             Capture "accountId" Text :>
+               "webproperties" :>
+                 Capture "webPropertyId" Text :>
+                   "profiles" :>
+                     Capture "profileId" Text :>
+                       "entityUserLinks" :>
+                         Capture "linkId" Text :>
+                           QueryParam "alt" AltJSON :> Delete '[JSON] ()
+
+-- | Removes a user from the given view (profile).
+--
+-- /See:/ 'managementProFileUserLinksDelete' smart constructor.
+data ManagementProFileUserLinksDelete = ManagementProFileUserLinksDelete
+    { _mpfuldWebPropertyId :: !Text
+    , _mpfuldProFileId     :: !Text
+    , _mpfuldAccountId     :: !Text
+    , _mpfuldLinkId        :: !Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ManagementProFileUserLinksDelete' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'mpfuldWebPropertyId'
+--
+-- * 'mpfuldProFileId'
+--
+-- * 'mpfuldAccountId'
+--
+-- * 'mpfuldLinkId'
+managementProFileUserLinksDelete
+    :: Text -- ^ 'mpfuldWebPropertyId'
+    -> Text -- ^ 'mpfuldProFileId'
+    -> Text -- ^ 'mpfuldAccountId'
+    -> Text -- ^ 'mpfuldLinkId'
+    -> ManagementProFileUserLinksDelete
+managementProFileUserLinksDelete pMpfuldWebPropertyId_ pMpfuldProFileId_ pMpfuldAccountId_ pMpfuldLinkId_ =
+    ManagementProFileUserLinksDelete
+    { _mpfuldWebPropertyId = pMpfuldWebPropertyId_
+    , _mpfuldProFileId = pMpfuldProFileId_
+    , _mpfuldAccountId = pMpfuldAccountId_
+    , _mpfuldLinkId = pMpfuldLinkId_
+    }
+
+-- | Web Property ID to delete the user link for.
+mpfuldWebPropertyId :: Lens' ManagementProFileUserLinksDelete Text
+mpfuldWebPropertyId
+  = lens _mpfuldWebPropertyId
+      (\ s a -> s{_mpfuldWebPropertyId = a})
+
+-- | View (Profile) ID to delete the user link for.
+mpfuldProFileId :: Lens' ManagementProFileUserLinksDelete Text
+mpfuldProFileId
+  = lens _mpfuldProFileId
+      (\ s a -> s{_mpfuldProFileId = a})
+
+-- | Account ID to delete the user link for.
+mpfuldAccountId :: Lens' ManagementProFileUserLinksDelete Text
+mpfuldAccountId
+  = lens _mpfuldAccountId
+      (\ s a -> s{_mpfuldAccountId = a})
+
+-- | Link ID to delete the user link for.
+mpfuldLinkId :: Lens' ManagementProFileUserLinksDelete Text
+mpfuldLinkId
+  = lens _mpfuldLinkId (\ s a -> s{_mpfuldLinkId = a})
+
+instance GoogleRequest
+         ManagementProFileUserLinksDelete where
+        type Rs ManagementProFileUserLinksDelete = ()
+        requestClient ManagementProFileUserLinksDelete{..}
+          = go _mpfuldAccountId _mpfuldWebPropertyId
+              _mpfuldProFileId
+              _mpfuldLinkId
+              (Just AltJSON)
+              analyticsService
+          where go
+                  = buildClient
+                      (Proxy ::
+                         Proxy ManagementProFileUserLinksDeleteResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Analytics/Management/ProFileUserLinks/Insert.hs b/gen/Network/Google/Resource/Analytics/Management/ProFileUserLinks/Insert.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Analytics/Management/ProFileUserLinks/Insert.hs
@@ -0,0 +1,135 @@
+{-# LANGUAGE DataKinds          #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE FlexibleInstances  #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+{-# LANGUAGE TypeOperators      #-}
+
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
+
+-- |
+-- Module      : Network.Google.Resource.Analytics.Management.ProFileUserLinks.Insert
+-- Copyright   : (c) 2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Adds a new user to the given view (profile).
+--
+-- /See:/ <https://developers.google.com/analytics/ Google Analytics API Reference> for @analytics.management.profileUserLinks.insert@.
+module Network.Google.Resource.Analytics.Management.ProFileUserLinks.Insert
+    (
+    -- * REST Resource
+      ManagementProFileUserLinksInsertResource
+
+    -- * Creating a Request
+    , managementProFileUserLinksInsert
+    , ManagementProFileUserLinksInsert
+
+    -- * Request Lenses
+    , mpfuliWebPropertyId
+    , mpfuliProFileId
+    , mpfuliPayload
+    , mpfuliAccountId
+    ) where
+
+import           Network.Google.Analytics.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @analytics.management.profileUserLinks.insert@ method which the
+-- 'ManagementProFileUserLinksInsert' request conforms to.
+type ManagementProFileUserLinksInsertResource =
+     "analytics" :>
+       "v3" :>
+         "management" :>
+           "accounts" :>
+             Capture "accountId" Text :>
+               "webproperties" :>
+                 Capture "webPropertyId" Text :>
+                   "profiles" :>
+                     Capture "profileId" Text :>
+                       "entityUserLinks" :>
+                         QueryParam "alt" AltJSON :>
+                           ReqBody '[JSON] EntityUserLink :>
+                             Post '[JSON] EntityUserLink
+
+-- | Adds a new user to the given view (profile).
+--
+-- /See:/ 'managementProFileUserLinksInsert' smart constructor.
+data ManagementProFileUserLinksInsert = ManagementProFileUserLinksInsert
+    { _mpfuliWebPropertyId :: !Text
+    , _mpfuliProFileId     :: !Text
+    , _mpfuliPayload       :: !EntityUserLink
+    , _mpfuliAccountId     :: !Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ManagementProFileUserLinksInsert' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'mpfuliWebPropertyId'
+--
+-- * 'mpfuliProFileId'
+--
+-- * 'mpfuliPayload'
+--
+-- * 'mpfuliAccountId'
+managementProFileUserLinksInsert
+    :: Text -- ^ 'mpfuliWebPropertyId'
+    -> Text -- ^ 'mpfuliProFileId'
+    -> EntityUserLink -- ^ 'mpfuliPayload'
+    -> Text -- ^ 'mpfuliAccountId'
+    -> ManagementProFileUserLinksInsert
+managementProFileUserLinksInsert pMpfuliWebPropertyId_ pMpfuliProFileId_ pMpfuliPayload_ pMpfuliAccountId_ =
+    ManagementProFileUserLinksInsert
+    { _mpfuliWebPropertyId = pMpfuliWebPropertyId_
+    , _mpfuliProFileId = pMpfuliProFileId_
+    , _mpfuliPayload = pMpfuliPayload_
+    , _mpfuliAccountId = pMpfuliAccountId_
+    }
+
+-- | Web Property ID to create the user link for.
+mpfuliWebPropertyId :: Lens' ManagementProFileUserLinksInsert Text
+mpfuliWebPropertyId
+  = lens _mpfuliWebPropertyId
+      (\ s a -> s{_mpfuliWebPropertyId = a})
+
+-- | View (Profile) ID to create the user link for.
+mpfuliProFileId :: Lens' ManagementProFileUserLinksInsert Text
+mpfuliProFileId
+  = lens _mpfuliProFileId
+      (\ s a -> s{_mpfuliProFileId = a})
+
+-- | Multipart request metadata.
+mpfuliPayload :: Lens' ManagementProFileUserLinksInsert EntityUserLink
+mpfuliPayload
+  = lens _mpfuliPayload
+      (\ s a -> s{_mpfuliPayload = a})
+
+-- | Account ID to create the user link for.
+mpfuliAccountId :: Lens' ManagementProFileUserLinksInsert Text
+mpfuliAccountId
+  = lens _mpfuliAccountId
+      (\ s a -> s{_mpfuliAccountId = a})
+
+instance GoogleRequest
+         ManagementProFileUserLinksInsert where
+        type Rs ManagementProFileUserLinksInsert =
+             EntityUserLink
+        requestClient ManagementProFileUserLinksInsert{..}
+          = go _mpfuliAccountId _mpfuliWebPropertyId
+              _mpfuliProFileId
+              (Just AltJSON)
+              _mpfuliPayload
+              analyticsService
+          where go
+                  = buildClient
+                      (Proxy ::
+                         Proxy ManagementProFileUserLinksInsertResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Analytics/Management/ProFileUserLinks/List.hs b/gen/Network/Google/Resource/Analytics/Management/ProFileUserLinks/List.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Analytics/Management/ProFileUserLinks/List.hs
@@ -0,0 +1,154 @@
+{-# LANGUAGE DataKinds          #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE FlexibleInstances  #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+{-# LANGUAGE TypeOperators      #-}
+
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
+
+-- |
+-- Module      : Network.Google.Resource.Analytics.Management.ProFileUserLinks.List
+-- Copyright   : (c) 2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Lists profile-user links for a given view (profile).
+--
+-- /See:/ <https://developers.google.com/analytics/ Google Analytics API Reference> for @analytics.management.profileUserLinks.list@.
+module Network.Google.Resource.Analytics.Management.ProFileUserLinks.List
+    (
+    -- * REST Resource
+      ManagementProFileUserLinksListResource
+
+    -- * Creating a Request
+    , managementProFileUserLinksList
+    , ManagementProFileUserLinksList
+
+    -- * Request Lenses
+    , mpfullWebPropertyId
+    , mpfullProFileId
+    , mpfullAccountId
+    , mpfullStartIndex
+    , mpfullMaxResults
+    ) where
+
+import           Network.Google.Analytics.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @analytics.management.profileUserLinks.list@ method which the
+-- 'ManagementProFileUserLinksList' request conforms to.
+type ManagementProFileUserLinksListResource =
+     "analytics" :>
+       "v3" :>
+         "management" :>
+           "accounts" :>
+             Capture "accountId" Text :>
+               "webproperties" :>
+                 Capture "webPropertyId" Text :>
+                   "profiles" :>
+                     Capture "profileId" Text :>
+                       "entityUserLinks" :>
+                         QueryParam "start-index" (Textual Int32) :>
+                           QueryParam "max-results" (Textual Int32) :>
+                             QueryParam "alt" AltJSON :>
+                               Get '[JSON] EntityUserLinks
+
+-- | Lists profile-user links for a given view (profile).
+--
+-- /See:/ 'managementProFileUserLinksList' smart constructor.
+data ManagementProFileUserLinksList = ManagementProFileUserLinksList
+    { _mpfullWebPropertyId :: !Text
+    , _mpfullProFileId     :: !Text
+    , _mpfullAccountId     :: !Text
+    , _mpfullStartIndex    :: !(Maybe (Textual Int32))
+    , _mpfullMaxResults    :: !(Maybe (Textual Int32))
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ManagementProFileUserLinksList' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'mpfullWebPropertyId'
+--
+-- * 'mpfullProFileId'
+--
+-- * 'mpfullAccountId'
+--
+-- * 'mpfullStartIndex'
+--
+-- * 'mpfullMaxResults'
+managementProFileUserLinksList
+    :: Text -- ^ 'mpfullWebPropertyId'
+    -> Text -- ^ 'mpfullProFileId'
+    -> Text -- ^ 'mpfullAccountId'
+    -> ManagementProFileUserLinksList
+managementProFileUserLinksList pMpfullWebPropertyId_ pMpfullProFileId_ pMpfullAccountId_ =
+    ManagementProFileUserLinksList
+    { _mpfullWebPropertyId = pMpfullWebPropertyId_
+    , _mpfullProFileId = pMpfullProFileId_
+    , _mpfullAccountId = pMpfullAccountId_
+    , _mpfullStartIndex = Nothing
+    , _mpfullMaxResults = Nothing
+    }
+
+-- | Web Property ID which the given view (profile) belongs to. Can either be
+-- a specific web property ID or \'~all\', which refers to all the web
+-- properties that user has access to.
+mpfullWebPropertyId :: Lens' ManagementProFileUserLinksList Text
+mpfullWebPropertyId
+  = lens _mpfullWebPropertyId
+      (\ s a -> s{_mpfullWebPropertyId = a})
+
+-- | View (Profile) ID to retrieve the profile-user links for. Can either be
+-- a specific profile ID or \'~all\', which refers to all the profiles that
+-- user has access to.
+mpfullProFileId :: Lens' ManagementProFileUserLinksList Text
+mpfullProFileId
+  = lens _mpfullProFileId
+      (\ s a -> s{_mpfullProFileId = a})
+
+-- | Account ID which the given view (profile) belongs to.
+mpfullAccountId :: Lens' ManagementProFileUserLinksList Text
+mpfullAccountId
+  = lens _mpfullAccountId
+      (\ s a -> s{_mpfullAccountId = a})
+
+-- | An index of the first profile-user link to retrieve. Use this parameter
+-- as a pagination mechanism along with the max-results parameter.
+mpfullStartIndex :: Lens' ManagementProFileUserLinksList (Maybe Int32)
+mpfullStartIndex
+  = lens _mpfullStartIndex
+      (\ s a -> s{_mpfullStartIndex = a})
+      . mapping _Coerce
+
+-- | The maximum number of profile-user links to include in this response.
+mpfullMaxResults :: Lens' ManagementProFileUserLinksList (Maybe Int32)
+mpfullMaxResults
+  = lens _mpfullMaxResults
+      (\ s a -> s{_mpfullMaxResults = a})
+      . mapping _Coerce
+
+instance GoogleRequest ManagementProFileUserLinksList
+         where
+        type Rs ManagementProFileUserLinksList =
+             EntityUserLinks
+        requestClient ManagementProFileUserLinksList{..}
+          = go _mpfullAccountId _mpfullWebPropertyId
+              _mpfullProFileId
+              _mpfullStartIndex
+              _mpfullMaxResults
+              (Just AltJSON)
+              analyticsService
+          where go
+                  = buildClient
+                      (Proxy ::
+                         Proxy ManagementProFileUserLinksListResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Analytics/Management/ProFileUserLinks/Update.hs b/gen/Network/Google/Resource/Analytics/Management/ProFileUserLinks/Update.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Analytics/Management/ProFileUserLinks/Update.hs
@@ -0,0 +1,148 @@
+{-# 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.Analytics.Management.ProFileUserLinks.Update
+-- Copyright   : (c) 2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Updates permissions for an existing user on the given view (profile).
+--
+-- /See:/ <https://developers.google.com/analytics/ Google Analytics API Reference> for @analytics.management.profileUserLinks.update@.
+module Network.Google.Resource.Analytics.Management.ProFileUserLinks.Update
+    (
+    -- * REST Resource
+      ManagementProFileUserLinksUpdateResource
+
+    -- * Creating a Request
+    , managementProFileUserLinksUpdate
+    , ManagementProFileUserLinksUpdate
+
+    -- * Request Lenses
+    , mpfuluWebPropertyId
+    , mpfuluProFileId
+    , mpfuluPayload
+    , mpfuluAccountId
+    , mpfuluLinkId
+    ) where
+
+import           Network.Google.Analytics.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @analytics.management.profileUserLinks.update@ method which the
+-- 'ManagementProFileUserLinksUpdate' request conforms to.
+type ManagementProFileUserLinksUpdateResource =
+     "analytics" :>
+       "v3" :>
+         "management" :>
+           "accounts" :>
+             Capture "accountId" Text :>
+               "webproperties" :>
+                 Capture "webPropertyId" Text :>
+                   "profiles" :>
+                     Capture "profileId" Text :>
+                       "entityUserLinks" :>
+                         Capture "linkId" Text :>
+                           QueryParam "alt" AltJSON :>
+                             ReqBody '[JSON] EntityUserLink :>
+                               Put '[JSON] EntityUserLink
+
+-- | Updates permissions for an existing user on the given view (profile).
+--
+-- /See:/ 'managementProFileUserLinksUpdate' smart constructor.
+data ManagementProFileUserLinksUpdate = ManagementProFileUserLinksUpdate
+    { _mpfuluWebPropertyId :: !Text
+    , _mpfuluProFileId     :: !Text
+    , _mpfuluPayload       :: !EntityUserLink
+    , _mpfuluAccountId     :: !Text
+    , _mpfuluLinkId        :: !Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ManagementProFileUserLinksUpdate' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'mpfuluWebPropertyId'
+--
+-- * 'mpfuluProFileId'
+--
+-- * 'mpfuluPayload'
+--
+-- * 'mpfuluAccountId'
+--
+-- * 'mpfuluLinkId'
+managementProFileUserLinksUpdate
+    :: Text -- ^ 'mpfuluWebPropertyId'
+    -> Text -- ^ 'mpfuluProFileId'
+    -> EntityUserLink -- ^ 'mpfuluPayload'
+    -> Text -- ^ 'mpfuluAccountId'
+    -> Text -- ^ 'mpfuluLinkId'
+    -> ManagementProFileUserLinksUpdate
+managementProFileUserLinksUpdate pMpfuluWebPropertyId_ pMpfuluProFileId_ pMpfuluPayload_ pMpfuluAccountId_ pMpfuluLinkId_ =
+    ManagementProFileUserLinksUpdate
+    { _mpfuluWebPropertyId = pMpfuluWebPropertyId_
+    , _mpfuluProFileId = pMpfuluProFileId_
+    , _mpfuluPayload = pMpfuluPayload_
+    , _mpfuluAccountId = pMpfuluAccountId_
+    , _mpfuluLinkId = pMpfuluLinkId_
+    }
+
+-- | Web Property ID to update the user link for.
+mpfuluWebPropertyId :: Lens' ManagementProFileUserLinksUpdate Text
+mpfuluWebPropertyId
+  = lens _mpfuluWebPropertyId
+      (\ s a -> s{_mpfuluWebPropertyId = a})
+
+-- | View (Profile ID) to update the user link for.
+mpfuluProFileId :: Lens' ManagementProFileUserLinksUpdate Text
+mpfuluProFileId
+  = lens _mpfuluProFileId
+      (\ s a -> s{_mpfuluProFileId = a})
+
+-- | Multipart request metadata.
+mpfuluPayload :: Lens' ManagementProFileUserLinksUpdate EntityUserLink
+mpfuluPayload
+  = lens _mpfuluPayload
+      (\ s a -> s{_mpfuluPayload = a})
+
+-- | Account ID to update the user link for.
+mpfuluAccountId :: Lens' ManagementProFileUserLinksUpdate Text
+mpfuluAccountId
+  = lens _mpfuluAccountId
+      (\ s a -> s{_mpfuluAccountId = a})
+
+-- | Link ID to update the user link for.
+mpfuluLinkId :: Lens' ManagementProFileUserLinksUpdate Text
+mpfuluLinkId
+  = lens _mpfuluLinkId (\ s a -> s{_mpfuluLinkId = a})
+
+instance GoogleRequest
+         ManagementProFileUserLinksUpdate where
+        type Rs ManagementProFileUserLinksUpdate =
+             EntityUserLink
+        requestClient ManagementProFileUserLinksUpdate{..}
+          = go _mpfuluAccountId _mpfuluWebPropertyId
+              _mpfuluProFileId
+              _mpfuluLinkId
+              (Just AltJSON)
+              _mpfuluPayload
+              analyticsService
+          where go
+                  = buildClient
+                      (Proxy ::
+                         Proxy ManagementProFileUserLinksUpdateResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Analytics/Management/ProFiles/Delete.hs b/gen/Network/Google/Resource/Analytics/Management/ProFiles/Delete.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Analytics/Management/ProFiles/Delete.hs
@@ -0,0 +1,115 @@
+{-# 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.Analytics.Management.ProFiles.Delete
+-- Copyright   : (c) 2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Deletes a view (profile).
+--
+-- /See:/ <https://developers.google.com/analytics/ Google Analytics API Reference> for @analytics.management.profiles.delete@.
+module Network.Google.Resource.Analytics.Management.ProFiles.Delete
+    (
+    -- * REST Resource
+      ManagementProFilesDeleteResource
+
+    -- * Creating a Request
+    , managementProFilesDelete
+    , ManagementProFilesDelete
+
+    -- * Request Lenses
+    , mpfdWebPropertyId
+    , mpfdProFileId
+    , mpfdAccountId
+    ) where
+
+import           Network.Google.Analytics.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @analytics.management.profiles.delete@ method which the
+-- 'ManagementProFilesDelete' request conforms to.
+type ManagementProFilesDeleteResource =
+     "analytics" :>
+       "v3" :>
+         "management" :>
+           "accounts" :>
+             Capture "accountId" Text :>
+               "webproperties" :>
+                 Capture "webPropertyId" Text :>
+                   "profiles" :>
+                     Capture "profileId" Text :>
+                       QueryParam "alt" AltJSON :> Delete '[JSON] ()
+
+-- | Deletes a view (profile).
+--
+-- /See:/ 'managementProFilesDelete' smart constructor.
+data ManagementProFilesDelete = ManagementProFilesDelete
+    { _mpfdWebPropertyId :: !Text
+    , _mpfdProFileId     :: !Text
+    , _mpfdAccountId     :: !Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ManagementProFilesDelete' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'mpfdWebPropertyId'
+--
+-- * 'mpfdProFileId'
+--
+-- * 'mpfdAccountId'
+managementProFilesDelete
+    :: Text -- ^ 'mpfdWebPropertyId'
+    -> Text -- ^ 'mpfdProFileId'
+    -> Text -- ^ 'mpfdAccountId'
+    -> ManagementProFilesDelete
+managementProFilesDelete pMpfdWebPropertyId_ pMpfdProFileId_ pMpfdAccountId_ =
+    ManagementProFilesDelete
+    { _mpfdWebPropertyId = pMpfdWebPropertyId_
+    , _mpfdProFileId = pMpfdProFileId_
+    , _mpfdAccountId = pMpfdAccountId_
+    }
+
+-- | Web property ID to delete the view (profile) for.
+mpfdWebPropertyId :: Lens' ManagementProFilesDelete Text
+mpfdWebPropertyId
+  = lens _mpfdWebPropertyId
+      (\ s a -> s{_mpfdWebPropertyId = a})
+
+-- | ID of the view (profile) to be deleted.
+mpfdProFileId :: Lens' ManagementProFilesDelete Text
+mpfdProFileId
+  = lens _mpfdProFileId
+      (\ s a -> s{_mpfdProFileId = a})
+
+-- | Account ID to delete the view (profile) for.
+mpfdAccountId :: Lens' ManagementProFilesDelete Text
+mpfdAccountId
+  = lens _mpfdAccountId
+      (\ s a -> s{_mpfdAccountId = a})
+
+instance GoogleRequest ManagementProFilesDelete where
+        type Rs ManagementProFilesDelete = ()
+        requestClient ManagementProFilesDelete{..}
+          = go _mpfdAccountId _mpfdWebPropertyId _mpfdProFileId
+              (Just AltJSON)
+              analyticsService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy ManagementProFilesDeleteResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Analytics/Management/ProFiles/Get.hs b/gen/Network/Google/Resource/Analytics/Management/ProFiles/Get.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Analytics/Management/ProFiles/Get.hs
@@ -0,0 +1,115 @@
+{-# 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.Analytics.Management.ProFiles.Get
+-- Copyright   : (c) 2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Gets a view (profile) to which the user has access.
+--
+-- /See:/ <https://developers.google.com/analytics/ Google Analytics API Reference> for @analytics.management.profiles.get@.
+module Network.Google.Resource.Analytics.Management.ProFiles.Get
+    (
+    -- * REST Resource
+      ManagementProFilesGetResource
+
+    -- * Creating a Request
+    , managementProFilesGet
+    , ManagementProFilesGet
+
+    -- * Request Lenses
+    , mpfgWebPropertyId
+    , mpfgProFileId
+    , mpfgAccountId
+    ) where
+
+import           Network.Google.Analytics.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @analytics.management.profiles.get@ method which the
+-- 'ManagementProFilesGet' request conforms to.
+type ManagementProFilesGetResource =
+     "analytics" :>
+       "v3" :>
+         "management" :>
+           "accounts" :>
+             Capture "accountId" Text :>
+               "webproperties" :>
+                 Capture "webPropertyId" Text :>
+                   "profiles" :>
+                     Capture "profileId" Text :>
+                       QueryParam "alt" AltJSON :> Get '[JSON] ProFile
+
+-- | Gets a view (profile) to which the user has access.
+--
+-- /See:/ 'managementProFilesGet' smart constructor.
+data ManagementProFilesGet = ManagementProFilesGet
+    { _mpfgWebPropertyId :: !Text
+    , _mpfgProFileId     :: !Text
+    , _mpfgAccountId     :: !Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ManagementProFilesGet' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'mpfgWebPropertyId'
+--
+-- * 'mpfgProFileId'
+--
+-- * 'mpfgAccountId'
+managementProFilesGet
+    :: Text -- ^ 'mpfgWebPropertyId'
+    -> Text -- ^ 'mpfgProFileId'
+    -> Text -- ^ 'mpfgAccountId'
+    -> ManagementProFilesGet
+managementProFilesGet pMpfgWebPropertyId_ pMpfgProFileId_ pMpfgAccountId_ =
+    ManagementProFilesGet
+    { _mpfgWebPropertyId = pMpfgWebPropertyId_
+    , _mpfgProFileId = pMpfgProFileId_
+    , _mpfgAccountId = pMpfgAccountId_
+    }
+
+-- | Web property ID to retrieve the goal for.
+mpfgWebPropertyId :: Lens' ManagementProFilesGet Text
+mpfgWebPropertyId
+  = lens _mpfgWebPropertyId
+      (\ s a -> s{_mpfgWebPropertyId = a})
+
+-- | View (Profile) ID to retrieve the goal for.
+mpfgProFileId :: Lens' ManagementProFilesGet Text
+mpfgProFileId
+  = lens _mpfgProFileId
+      (\ s a -> s{_mpfgProFileId = a})
+
+-- | Account ID to retrieve the goal for.
+mpfgAccountId :: Lens' ManagementProFilesGet Text
+mpfgAccountId
+  = lens _mpfgAccountId
+      (\ s a -> s{_mpfgAccountId = a})
+
+instance GoogleRequest ManagementProFilesGet where
+        type Rs ManagementProFilesGet = ProFile
+        requestClient ManagementProFilesGet{..}
+          = go _mpfgAccountId _mpfgWebPropertyId _mpfgProFileId
+              (Just AltJSON)
+              analyticsService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy ManagementProFilesGetResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Analytics/Management/ProFiles/Insert.hs b/gen/Network/Google/Resource/Analytics/Management/ProFiles/Insert.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Analytics/Management/ProFiles/Insert.hs
@@ -0,0 +1,114 @@
+{-# LANGUAGE DataKinds          #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE FlexibleInstances  #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+{-# LANGUAGE TypeOperators      #-}
+
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
+
+-- |
+-- Module      : Network.Google.Resource.Analytics.Management.ProFiles.Insert
+-- Copyright   : (c) 2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Create a new view (profile).
+--
+-- /See:/ <https://developers.google.com/analytics/ Google Analytics API Reference> for @analytics.management.profiles.insert@.
+module Network.Google.Resource.Analytics.Management.ProFiles.Insert
+    (
+    -- * REST Resource
+      ManagementProFilesInsertResource
+
+    -- * Creating a Request
+    , managementProFilesInsert
+    , ManagementProFilesInsert
+
+    -- * Request Lenses
+    , mpfiWebPropertyId
+    , mpfiPayload
+    , mpfiAccountId
+    ) where
+
+import           Network.Google.Analytics.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @analytics.management.profiles.insert@ method which the
+-- 'ManagementProFilesInsert' request conforms to.
+type ManagementProFilesInsertResource =
+     "analytics" :>
+       "v3" :>
+         "management" :>
+           "accounts" :>
+             Capture "accountId" Text :>
+               "webproperties" :>
+                 Capture "webPropertyId" Text :>
+                   "profiles" :>
+                     QueryParam "alt" AltJSON :>
+                       ReqBody '[JSON] ProFile :> Post '[JSON] ProFile
+
+-- | Create a new view (profile).
+--
+-- /See:/ 'managementProFilesInsert' smart constructor.
+data ManagementProFilesInsert = ManagementProFilesInsert
+    { _mpfiWebPropertyId :: !Text
+    , _mpfiPayload       :: !ProFile
+    , _mpfiAccountId     :: !Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ManagementProFilesInsert' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'mpfiWebPropertyId'
+--
+-- * 'mpfiPayload'
+--
+-- * 'mpfiAccountId'
+managementProFilesInsert
+    :: Text -- ^ 'mpfiWebPropertyId'
+    -> ProFile -- ^ 'mpfiPayload'
+    -> Text -- ^ 'mpfiAccountId'
+    -> ManagementProFilesInsert
+managementProFilesInsert pMpfiWebPropertyId_ pMpfiPayload_ pMpfiAccountId_ =
+    ManagementProFilesInsert
+    { _mpfiWebPropertyId = pMpfiWebPropertyId_
+    , _mpfiPayload = pMpfiPayload_
+    , _mpfiAccountId = pMpfiAccountId_
+    }
+
+-- | Web property ID to create the view (profile) for.
+mpfiWebPropertyId :: Lens' ManagementProFilesInsert Text
+mpfiWebPropertyId
+  = lens _mpfiWebPropertyId
+      (\ s a -> s{_mpfiWebPropertyId = a})
+
+-- | Multipart request metadata.
+mpfiPayload :: Lens' ManagementProFilesInsert ProFile
+mpfiPayload
+  = lens _mpfiPayload (\ s a -> s{_mpfiPayload = a})
+
+-- | Account ID to create the view (profile) for.
+mpfiAccountId :: Lens' ManagementProFilesInsert Text
+mpfiAccountId
+  = lens _mpfiAccountId
+      (\ s a -> s{_mpfiAccountId = a})
+
+instance GoogleRequest ManagementProFilesInsert where
+        type Rs ManagementProFilesInsert = ProFile
+        requestClient ManagementProFilesInsert{..}
+          = go _mpfiAccountId _mpfiWebPropertyId (Just AltJSON)
+              _mpfiPayload
+              analyticsService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy ManagementProFilesInsertResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Analytics/Management/ProFiles/List.hs b/gen/Network/Google/Resource/Analytics/Management/ProFiles/List.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Analytics/Management/ProFiles/List.hs
@@ -0,0 +1,135 @@
+{-# LANGUAGE DataKinds          #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE FlexibleInstances  #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+{-# LANGUAGE TypeOperators      #-}
+
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
+
+-- |
+-- Module      : Network.Google.Resource.Analytics.Management.ProFiles.List
+-- Copyright   : (c) 2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Lists views (profiles) to which the user has access.
+--
+-- /See:/ <https://developers.google.com/analytics/ Google Analytics API Reference> for @analytics.management.profiles.list@.
+module Network.Google.Resource.Analytics.Management.ProFiles.List
+    (
+    -- * REST Resource
+      ManagementProFilesListResource
+
+    -- * Creating a Request
+    , managementProFilesList
+    , ManagementProFilesList
+
+    -- * Request Lenses
+    , mpflWebPropertyId
+    , mpflAccountId
+    , mpflStartIndex
+    , mpflMaxResults
+    ) where
+
+import           Network.Google.Analytics.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @analytics.management.profiles.list@ method which the
+-- 'ManagementProFilesList' request conforms to.
+type ManagementProFilesListResource =
+     "analytics" :>
+       "v3" :>
+         "management" :>
+           "accounts" :>
+             Capture "accountId" Text :>
+               "webproperties" :>
+                 Capture "webPropertyId" Text :>
+                   "profiles" :>
+                     QueryParam "start-index" (Textual Int32) :>
+                       QueryParam "max-results" (Textual Int32) :>
+                         QueryParam "alt" AltJSON :> Get '[JSON] ProFiles
+
+-- | Lists views (profiles) to which the user has access.
+--
+-- /See:/ 'managementProFilesList' smart constructor.
+data ManagementProFilesList = ManagementProFilesList
+    { _mpflWebPropertyId :: !Text
+    , _mpflAccountId     :: !Text
+    , _mpflStartIndex    :: !(Maybe (Textual Int32))
+    , _mpflMaxResults    :: !(Maybe (Textual Int32))
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ManagementProFilesList' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'mpflWebPropertyId'
+--
+-- * 'mpflAccountId'
+--
+-- * 'mpflStartIndex'
+--
+-- * 'mpflMaxResults'
+managementProFilesList
+    :: Text -- ^ 'mpflWebPropertyId'
+    -> Text -- ^ 'mpflAccountId'
+    -> ManagementProFilesList
+managementProFilesList pMpflWebPropertyId_ pMpflAccountId_ =
+    ManagementProFilesList
+    { _mpflWebPropertyId = pMpflWebPropertyId_
+    , _mpflAccountId = pMpflAccountId_
+    , _mpflStartIndex = Nothing
+    , _mpflMaxResults = Nothing
+    }
+
+-- | Web property ID for the views (profiles) to retrieve. Can either be a
+-- specific web property ID or \'~all\', which refers to all the web
+-- properties to which the user has access.
+mpflWebPropertyId :: Lens' ManagementProFilesList Text
+mpflWebPropertyId
+  = lens _mpflWebPropertyId
+      (\ s a -> s{_mpflWebPropertyId = a})
+
+-- | Account ID for the view (profiles) to retrieve. Can either be a specific
+-- account ID or \'~all\', which refers to all the accounts to which the
+-- user has access.
+mpflAccountId :: Lens' ManagementProFilesList Text
+mpflAccountId
+  = lens _mpflAccountId
+      (\ s a -> s{_mpflAccountId = a})
+
+-- | An index of the first entity to retrieve. Use this parameter as a
+-- pagination mechanism along with the max-results parameter.
+mpflStartIndex :: Lens' ManagementProFilesList (Maybe Int32)
+mpflStartIndex
+  = lens _mpflStartIndex
+      (\ s a -> s{_mpflStartIndex = a})
+      . mapping _Coerce
+
+-- | The maximum number of views (profiles) to include in this response.
+mpflMaxResults :: Lens' ManagementProFilesList (Maybe Int32)
+mpflMaxResults
+  = lens _mpflMaxResults
+      (\ s a -> s{_mpflMaxResults = a})
+      . mapping _Coerce
+
+instance GoogleRequest ManagementProFilesList where
+        type Rs ManagementProFilesList = ProFiles
+        requestClient ManagementProFilesList{..}
+          = go _mpflAccountId _mpflWebPropertyId
+              _mpflStartIndex
+              _mpflMaxResults
+              (Just AltJSON)
+              analyticsService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy ManagementProFilesListResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Analytics/Management/ProFiles/Patch.hs b/gen/Network/Google/Resource/Analytics/Management/ProFiles/Patch.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Analytics/Management/ProFiles/Patch.hs
@@ -0,0 +1,130 @@
+{-# 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.Analytics.Management.ProFiles.Patch
+-- Copyright   : (c) 2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Updates an existing view (profile). This method supports patch
+-- semantics.
+--
+-- /See:/ <https://developers.google.com/analytics/ Google Analytics API Reference> for @analytics.management.profiles.patch@.
+module Network.Google.Resource.Analytics.Management.ProFiles.Patch
+    (
+    -- * REST Resource
+      ManagementProFilesPatchResource
+
+    -- * Creating a Request
+    , managementProFilesPatch
+    , ManagementProFilesPatch
+
+    -- * Request Lenses
+    , mpfpWebPropertyId
+    , mpfpProFileId
+    , mpfpPayload
+    , mpfpAccountId
+    ) where
+
+import           Network.Google.Analytics.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @analytics.management.profiles.patch@ method which the
+-- 'ManagementProFilesPatch' request conforms to.
+type ManagementProFilesPatchResource =
+     "analytics" :>
+       "v3" :>
+         "management" :>
+           "accounts" :>
+             Capture "accountId" Text :>
+               "webproperties" :>
+                 Capture "webPropertyId" Text :>
+                   "profiles" :>
+                     Capture "profileId" Text :>
+                       QueryParam "alt" AltJSON :>
+                         ReqBody '[JSON] ProFile :> Patch '[JSON] ProFile
+
+-- | Updates an existing view (profile). This method supports patch
+-- semantics.
+--
+-- /See:/ 'managementProFilesPatch' smart constructor.
+data ManagementProFilesPatch = ManagementProFilesPatch
+    { _mpfpWebPropertyId :: !Text
+    , _mpfpProFileId     :: !Text
+    , _mpfpPayload       :: !ProFile
+    , _mpfpAccountId     :: !Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ManagementProFilesPatch' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'mpfpWebPropertyId'
+--
+-- * 'mpfpProFileId'
+--
+-- * 'mpfpPayload'
+--
+-- * 'mpfpAccountId'
+managementProFilesPatch
+    :: Text -- ^ 'mpfpWebPropertyId'
+    -> Text -- ^ 'mpfpProFileId'
+    -> ProFile -- ^ 'mpfpPayload'
+    -> Text -- ^ 'mpfpAccountId'
+    -> ManagementProFilesPatch
+managementProFilesPatch pMpfpWebPropertyId_ pMpfpProFileId_ pMpfpPayload_ pMpfpAccountId_ =
+    ManagementProFilesPatch
+    { _mpfpWebPropertyId = pMpfpWebPropertyId_
+    , _mpfpProFileId = pMpfpProFileId_
+    , _mpfpPayload = pMpfpPayload_
+    , _mpfpAccountId = pMpfpAccountId_
+    }
+
+-- | Web property ID to which the view (profile) belongs
+mpfpWebPropertyId :: Lens' ManagementProFilesPatch Text
+mpfpWebPropertyId
+  = lens _mpfpWebPropertyId
+      (\ s a -> s{_mpfpWebPropertyId = a})
+
+-- | ID of the view (profile) to be updated.
+mpfpProFileId :: Lens' ManagementProFilesPatch Text
+mpfpProFileId
+  = lens _mpfpProFileId
+      (\ s a -> s{_mpfpProFileId = a})
+
+-- | Multipart request metadata.
+mpfpPayload :: Lens' ManagementProFilesPatch ProFile
+mpfpPayload
+  = lens _mpfpPayload (\ s a -> s{_mpfpPayload = a})
+
+-- | Account ID to which the view (profile) belongs
+mpfpAccountId :: Lens' ManagementProFilesPatch Text
+mpfpAccountId
+  = lens _mpfpAccountId
+      (\ s a -> s{_mpfpAccountId = a})
+
+instance GoogleRequest ManagementProFilesPatch where
+        type Rs ManagementProFilesPatch = ProFile
+        requestClient ManagementProFilesPatch{..}
+          = go _mpfpAccountId _mpfpWebPropertyId _mpfpProFileId
+              (Just AltJSON)
+              _mpfpPayload
+              analyticsService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy ManagementProFilesPatchResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Analytics/Management/ProFiles/Update.hs b/gen/Network/Google/Resource/Analytics/Management/ProFiles/Update.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Analytics/Management/ProFiles/Update.hs
@@ -0,0 +1,128 @@
+{-# 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.Analytics.Management.ProFiles.Update
+-- Copyright   : (c) 2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Updates an existing view (profile).
+--
+-- /See:/ <https://developers.google.com/analytics/ Google Analytics API Reference> for @analytics.management.profiles.update@.
+module Network.Google.Resource.Analytics.Management.ProFiles.Update
+    (
+    -- * REST Resource
+      ManagementProFilesUpdateResource
+
+    -- * Creating a Request
+    , managementProFilesUpdate
+    , ManagementProFilesUpdate
+
+    -- * Request Lenses
+    , mpfuWebPropertyId
+    , mpfuProFileId
+    , mpfuPayload
+    , mpfuAccountId
+    ) where
+
+import           Network.Google.Analytics.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @analytics.management.profiles.update@ method which the
+-- 'ManagementProFilesUpdate' request conforms to.
+type ManagementProFilesUpdateResource =
+     "analytics" :>
+       "v3" :>
+         "management" :>
+           "accounts" :>
+             Capture "accountId" Text :>
+               "webproperties" :>
+                 Capture "webPropertyId" Text :>
+                   "profiles" :>
+                     Capture "profileId" Text :>
+                       QueryParam "alt" AltJSON :>
+                         ReqBody '[JSON] ProFile :> Put '[JSON] ProFile
+
+-- | Updates an existing view (profile).
+--
+-- /See:/ 'managementProFilesUpdate' smart constructor.
+data ManagementProFilesUpdate = ManagementProFilesUpdate
+    { _mpfuWebPropertyId :: !Text
+    , _mpfuProFileId     :: !Text
+    , _mpfuPayload       :: !ProFile
+    , _mpfuAccountId     :: !Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ManagementProFilesUpdate' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'mpfuWebPropertyId'
+--
+-- * 'mpfuProFileId'
+--
+-- * 'mpfuPayload'
+--
+-- * 'mpfuAccountId'
+managementProFilesUpdate
+    :: Text -- ^ 'mpfuWebPropertyId'
+    -> Text -- ^ 'mpfuProFileId'
+    -> ProFile -- ^ 'mpfuPayload'
+    -> Text -- ^ 'mpfuAccountId'
+    -> ManagementProFilesUpdate
+managementProFilesUpdate pMpfuWebPropertyId_ pMpfuProFileId_ pMpfuPayload_ pMpfuAccountId_ =
+    ManagementProFilesUpdate
+    { _mpfuWebPropertyId = pMpfuWebPropertyId_
+    , _mpfuProFileId = pMpfuProFileId_
+    , _mpfuPayload = pMpfuPayload_
+    , _mpfuAccountId = pMpfuAccountId_
+    }
+
+-- | Web property ID to which the view (profile) belongs
+mpfuWebPropertyId :: Lens' ManagementProFilesUpdate Text
+mpfuWebPropertyId
+  = lens _mpfuWebPropertyId
+      (\ s a -> s{_mpfuWebPropertyId = a})
+
+-- | ID of the view (profile) to be updated.
+mpfuProFileId :: Lens' ManagementProFilesUpdate Text
+mpfuProFileId
+  = lens _mpfuProFileId
+      (\ s a -> s{_mpfuProFileId = a})
+
+-- | Multipart request metadata.
+mpfuPayload :: Lens' ManagementProFilesUpdate ProFile
+mpfuPayload
+  = lens _mpfuPayload (\ s a -> s{_mpfuPayload = a})
+
+-- | Account ID to which the view (profile) belongs
+mpfuAccountId :: Lens' ManagementProFilesUpdate Text
+mpfuAccountId
+  = lens _mpfuAccountId
+      (\ s a -> s{_mpfuAccountId = a})
+
+instance GoogleRequest ManagementProFilesUpdate where
+        type Rs ManagementProFilesUpdate = ProFile
+        requestClient ManagementProFilesUpdate{..}
+          = go _mpfuAccountId _mpfuWebPropertyId _mpfuProFileId
+              (Just AltJSON)
+              _mpfuPayload
+              analyticsService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy ManagementProFilesUpdateResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Analytics/Management/Segments/List.hs b/gen/Network/Google/Resource/Analytics/Management/Segments/List.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Analytics/Management/Segments/List.hs
@@ -0,0 +1,100 @@
+{-# LANGUAGE DataKinds          #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE FlexibleInstances  #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+{-# LANGUAGE TypeOperators      #-}
+
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
+
+-- |
+-- Module      : Network.Google.Resource.Analytics.Management.Segments.List
+-- Copyright   : (c) 2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Lists segments to which the user has access.
+--
+-- /See:/ <https://developers.google.com/analytics/ Google Analytics API Reference> for @analytics.management.segments.list@.
+module Network.Google.Resource.Analytics.Management.Segments.List
+    (
+    -- * REST Resource
+      ManagementSegmentsListResource
+
+    -- * Creating a Request
+    , managementSegmentsList
+    , ManagementSegmentsList
+
+    -- * Request Lenses
+    , mslStartIndex
+    , mslMaxResults
+    ) where
+
+import           Network.Google.Analytics.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @analytics.management.segments.list@ method which the
+-- 'ManagementSegmentsList' request conforms to.
+type ManagementSegmentsListResource =
+     "analytics" :>
+       "v3" :>
+         "management" :>
+           "segments" :>
+             QueryParam "start-index" (Textual Int32) :>
+               QueryParam "max-results" (Textual Int32) :>
+                 QueryParam "alt" AltJSON :> Get '[JSON] Segments
+
+-- | Lists segments to which the user has access.
+--
+-- /See:/ 'managementSegmentsList' smart constructor.
+data ManagementSegmentsList = ManagementSegmentsList
+    { _mslStartIndex :: !(Maybe (Textual Int32))
+    , _mslMaxResults :: !(Maybe (Textual Int32))
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ManagementSegmentsList' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'mslStartIndex'
+--
+-- * 'mslMaxResults'
+managementSegmentsList
+    :: ManagementSegmentsList
+managementSegmentsList =
+    ManagementSegmentsList
+    { _mslStartIndex = Nothing
+    , _mslMaxResults = Nothing
+    }
+
+-- | An index of the first segment to retrieve. Use this parameter as a
+-- pagination mechanism along with the max-results parameter.
+mslStartIndex :: Lens' ManagementSegmentsList (Maybe Int32)
+mslStartIndex
+  = lens _mslStartIndex
+      (\ s a -> s{_mslStartIndex = a})
+      . mapping _Coerce
+
+-- | The maximum number of segments to include in this response.
+mslMaxResults :: Lens' ManagementSegmentsList (Maybe Int32)
+mslMaxResults
+  = lens _mslMaxResults
+      (\ s a -> s{_mslMaxResults = a})
+      . mapping _Coerce
+
+instance GoogleRequest ManagementSegmentsList where
+        type Rs ManagementSegmentsList = Segments
+        requestClient ManagementSegmentsList{..}
+          = go _mslStartIndex _mslMaxResults (Just AltJSON)
+              analyticsService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy ManagementSegmentsListResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Analytics/Management/UnSampledReports/Get.hs b/gen/Network/Google/Resource/Analytics/Management/UnSampledReports/Get.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Analytics/Management/UnSampledReports/Get.hs
@@ -0,0 +1,135 @@
+{-# LANGUAGE DataKinds          #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE FlexibleInstances  #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+{-# LANGUAGE TypeOperators      #-}
+
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
+
+-- |
+-- Module      : Network.Google.Resource.Analytics.Management.UnSampledReports.Get
+-- Copyright   : (c) 2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Returns a single unsampled report.
+--
+-- /See:/ <https://developers.google.com/analytics/ Google Analytics API Reference> for @analytics.management.unsampledReports.get@.
+module Network.Google.Resource.Analytics.Management.UnSampledReports.Get
+    (
+    -- * REST Resource
+      ManagementUnSampledReportsGetResource
+
+    -- * Creating a Request
+    , managementUnSampledReportsGet
+    , ManagementUnSampledReportsGet
+
+    -- * Request Lenses
+    , musrgWebPropertyId
+    , musrgProFileId
+    , musrgAccountId
+    , musrgUnSampledReportId
+    ) where
+
+import           Network.Google.Analytics.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @analytics.management.unsampledReports.get@ method which the
+-- 'ManagementUnSampledReportsGet' request conforms to.
+type ManagementUnSampledReportsGetResource =
+     "analytics" :>
+       "v3" :>
+         "management" :>
+           "accounts" :>
+             Capture "accountId" Text :>
+               "webproperties" :>
+                 Capture "webPropertyId" Text :>
+                   "profiles" :>
+                     Capture "profileId" Text :>
+                       "unsampledReports" :>
+                         Capture "unsampledReportId" Text :>
+                           QueryParam "alt" AltJSON :>
+                             Get '[JSON] UnSampledReport
+
+-- | Returns a single unsampled report.
+--
+-- /See:/ 'managementUnSampledReportsGet' smart constructor.
+data ManagementUnSampledReportsGet = ManagementUnSampledReportsGet
+    { _musrgWebPropertyId     :: !Text
+    , _musrgProFileId         :: !Text
+    , _musrgAccountId         :: !Text
+    , _musrgUnSampledReportId :: !Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ManagementUnSampledReportsGet' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'musrgWebPropertyId'
+--
+-- * 'musrgProFileId'
+--
+-- * 'musrgAccountId'
+--
+-- * 'musrgUnSampledReportId'
+managementUnSampledReportsGet
+    :: Text -- ^ 'musrgWebPropertyId'
+    -> Text -- ^ 'musrgProFileId'
+    -> Text -- ^ 'musrgAccountId'
+    -> Text -- ^ 'musrgUnSampledReportId'
+    -> ManagementUnSampledReportsGet
+managementUnSampledReportsGet pMusrgWebPropertyId_ pMusrgProFileId_ pMusrgAccountId_ pMusrgUnSampledReportId_ =
+    ManagementUnSampledReportsGet
+    { _musrgWebPropertyId = pMusrgWebPropertyId_
+    , _musrgProFileId = pMusrgProFileId_
+    , _musrgAccountId = pMusrgAccountId_
+    , _musrgUnSampledReportId = pMusrgUnSampledReportId_
+    }
+
+-- | Web property ID to retrieve unsampled reports for.
+musrgWebPropertyId :: Lens' ManagementUnSampledReportsGet Text
+musrgWebPropertyId
+  = lens _musrgWebPropertyId
+      (\ s a -> s{_musrgWebPropertyId = a})
+
+-- | View (Profile) ID to retrieve unsampled report for.
+musrgProFileId :: Lens' ManagementUnSampledReportsGet Text
+musrgProFileId
+  = lens _musrgProFileId
+      (\ s a -> s{_musrgProFileId = a})
+
+-- | Account ID to retrieve unsampled report for.
+musrgAccountId :: Lens' ManagementUnSampledReportsGet Text
+musrgAccountId
+  = lens _musrgAccountId
+      (\ s a -> s{_musrgAccountId = a})
+
+-- | ID of the unsampled report to retrieve.
+musrgUnSampledReportId :: Lens' ManagementUnSampledReportsGet Text
+musrgUnSampledReportId
+  = lens _musrgUnSampledReportId
+      (\ s a -> s{_musrgUnSampledReportId = a})
+
+instance GoogleRequest ManagementUnSampledReportsGet
+         where
+        type Rs ManagementUnSampledReportsGet =
+             UnSampledReport
+        requestClient ManagementUnSampledReportsGet{..}
+          = go _musrgAccountId _musrgWebPropertyId
+              _musrgProFileId
+              _musrgUnSampledReportId
+              (Just AltJSON)
+              analyticsService
+          where go
+                  = buildClient
+                      (Proxy ::
+                         Proxy ManagementUnSampledReportsGetResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Analytics/Management/UnSampledReports/Insert.hs b/gen/Network/Google/Resource/Analytics/Management/UnSampledReports/Insert.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Analytics/Management/UnSampledReports/Insert.hs
@@ -0,0 +1,134 @@
+{-# 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.Analytics.Management.UnSampledReports.Insert
+-- Copyright   : (c) 2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Create a new unsampled report.
+--
+-- /See:/ <https://developers.google.com/analytics/ Google Analytics API Reference> for @analytics.management.unsampledReports.insert@.
+module Network.Google.Resource.Analytics.Management.UnSampledReports.Insert
+    (
+    -- * REST Resource
+      ManagementUnSampledReportsInsertResource
+
+    -- * Creating a Request
+    , managementUnSampledReportsInsert
+    , ManagementUnSampledReportsInsert
+
+    -- * Request Lenses
+    , musriWebPropertyId
+    , musriProFileId
+    , musriPayload
+    , musriAccountId
+    ) where
+
+import           Network.Google.Analytics.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @analytics.management.unsampledReports.insert@ method which the
+-- 'ManagementUnSampledReportsInsert' request conforms to.
+type ManagementUnSampledReportsInsertResource =
+     "analytics" :>
+       "v3" :>
+         "management" :>
+           "accounts" :>
+             Capture "accountId" Text :>
+               "webproperties" :>
+                 Capture "webPropertyId" Text :>
+                   "profiles" :>
+                     Capture "profileId" Text :>
+                       "unsampledReports" :>
+                         QueryParam "alt" AltJSON :>
+                           ReqBody '[JSON] UnSampledReport :>
+                             Post '[JSON] UnSampledReport
+
+-- | Create a new unsampled report.
+--
+-- /See:/ 'managementUnSampledReportsInsert' smart constructor.
+data ManagementUnSampledReportsInsert = ManagementUnSampledReportsInsert
+    { _musriWebPropertyId :: !Text
+    , _musriProFileId     :: !Text
+    , _musriPayload       :: !UnSampledReport
+    , _musriAccountId     :: !Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ManagementUnSampledReportsInsert' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'musriWebPropertyId'
+--
+-- * 'musriProFileId'
+--
+-- * 'musriPayload'
+--
+-- * 'musriAccountId'
+managementUnSampledReportsInsert
+    :: Text -- ^ 'musriWebPropertyId'
+    -> Text -- ^ 'musriProFileId'
+    -> UnSampledReport -- ^ 'musriPayload'
+    -> Text -- ^ 'musriAccountId'
+    -> ManagementUnSampledReportsInsert
+managementUnSampledReportsInsert pMusriWebPropertyId_ pMusriProFileId_ pMusriPayload_ pMusriAccountId_ =
+    ManagementUnSampledReportsInsert
+    { _musriWebPropertyId = pMusriWebPropertyId_
+    , _musriProFileId = pMusriProFileId_
+    , _musriPayload = pMusriPayload_
+    , _musriAccountId = pMusriAccountId_
+    }
+
+-- | Web property ID to create the unsampled report for.
+musriWebPropertyId :: Lens' ManagementUnSampledReportsInsert Text
+musriWebPropertyId
+  = lens _musriWebPropertyId
+      (\ s a -> s{_musriWebPropertyId = a})
+
+-- | View (Profile) ID to create the unsampled report for.
+musriProFileId :: Lens' ManagementUnSampledReportsInsert Text
+musriProFileId
+  = lens _musriProFileId
+      (\ s a -> s{_musriProFileId = a})
+
+-- | Multipart request metadata.
+musriPayload :: Lens' ManagementUnSampledReportsInsert UnSampledReport
+musriPayload
+  = lens _musriPayload (\ s a -> s{_musriPayload = a})
+
+-- | Account ID to create the unsampled report for.
+musriAccountId :: Lens' ManagementUnSampledReportsInsert Text
+musriAccountId
+  = lens _musriAccountId
+      (\ s a -> s{_musriAccountId = a})
+
+instance GoogleRequest
+         ManagementUnSampledReportsInsert where
+        type Rs ManagementUnSampledReportsInsert =
+             UnSampledReport
+        requestClient ManagementUnSampledReportsInsert{..}
+          = go _musriAccountId _musriWebPropertyId
+              _musriProFileId
+              (Just AltJSON)
+              _musriPayload
+              analyticsService
+          where go
+                  = buildClient
+                      (Proxy ::
+                         Proxy ManagementUnSampledReportsInsertResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Analytics/Management/UnSampledReports/List.hs b/gen/Network/Google/Resource/Analytics/Management/UnSampledReports/List.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Analytics/Management/UnSampledReports/List.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.Analytics.Management.UnSampledReports.List
+-- Copyright   : (c) 2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Lists unsampled reports to which the user has access.
+--
+-- /See:/ <https://developers.google.com/analytics/ Google Analytics API Reference> for @analytics.management.unsampledReports.list@.
+module Network.Google.Resource.Analytics.Management.UnSampledReports.List
+    (
+    -- * REST Resource
+      ManagementUnSampledReportsListResource
+
+    -- * Creating a Request
+    , managementUnSampledReportsList
+    , ManagementUnSampledReportsList
+
+    -- * Request Lenses
+    , musrlWebPropertyId
+    , musrlProFileId
+    , musrlAccountId
+    , musrlStartIndex
+    , musrlMaxResults
+    ) where
+
+import           Network.Google.Analytics.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @analytics.management.unsampledReports.list@ method which the
+-- 'ManagementUnSampledReportsList' request conforms to.
+type ManagementUnSampledReportsListResource =
+     "analytics" :>
+       "v3" :>
+         "management" :>
+           "accounts" :>
+             Capture "accountId" Text :>
+               "webproperties" :>
+                 Capture "webPropertyId" Text :>
+                   "profiles" :>
+                     Capture "profileId" Text :>
+                       "unsampledReports" :>
+                         QueryParam "start-index" (Textual Int32) :>
+                           QueryParam "max-results" (Textual Int32) :>
+                             QueryParam "alt" AltJSON :>
+                               Get '[JSON] UnSampledReports
+
+-- | Lists unsampled reports to which the user has access.
+--
+-- /See:/ 'managementUnSampledReportsList' smart constructor.
+data ManagementUnSampledReportsList = ManagementUnSampledReportsList
+    { _musrlWebPropertyId :: !Text
+    , _musrlProFileId     :: !Text
+    , _musrlAccountId     :: !Text
+    , _musrlStartIndex    :: !(Maybe (Textual Int32))
+    , _musrlMaxResults    :: !(Maybe (Textual Int32))
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ManagementUnSampledReportsList' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'musrlWebPropertyId'
+--
+-- * 'musrlProFileId'
+--
+-- * 'musrlAccountId'
+--
+-- * 'musrlStartIndex'
+--
+-- * 'musrlMaxResults'
+managementUnSampledReportsList
+    :: Text -- ^ 'musrlWebPropertyId'
+    -> Text -- ^ 'musrlProFileId'
+    -> Text -- ^ 'musrlAccountId'
+    -> ManagementUnSampledReportsList
+managementUnSampledReportsList pMusrlWebPropertyId_ pMusrlProFileId_ pMusrlAccountId_ =
+    ManagementUnSampledReportsList
+    { _musrlWebPropertyId = pMusrlWebPropertyId_
+    , _musrlProFileId = pMusrlProFileId_
+    , _musrlAccountId = pMusrlAccountId_
+    , _musrlStartIndex = Nothing
+    , _musrlMaxResults = Nothing
+    }
+
+-- | Web property ID to retrieve unsampled reports for. Must be a specific
+-- web property ID, ~all is not supported.
+musrlWebPropertyId :: Lens' ManagementUnSampledReportsList Text
+musrlWebPropertyId
+  = lens _musrlWebPropertyId
+      (\ s a -> s{_musrlWebPropertyId = a})
+
+-- | View (Profile) ID to retrieve unsampled reports for. Must be a specific
+-- view (profile) ID, ~all is not supported.
+musrlProFileId :: Lens' ManagementUnSampledReportsList Text
+musrlProFileId
+  = lens _musrlProFileId
+      (\ s a -> s{_musrlProFileId = a})
+
+-- | Account ID to retrieve unsampled reports for. Must be a specific account
+-- ID, ~all is not supported.
+musrlAccountId :: Lens' ManagementUnSampledReportsList Text
+musrlAccountId
+  = lens _musrlAccountId
+      (\ s a -> s{_musrlAccountId = a})
+
+-- | An index of the first unsampled report to retrieve. Use this parameter
+-- as a pagination mechanism along with the max-results parameter.
+musrlStartIndex :: Lens' ManagementUnSampledReportsList (Maybe Int32)
+musrlStartIndex
+  = lens _musrlStartIndex
+      (\ s a -> s{_musrlStartIndex = a})
+      . mapping _Coerce
+
+-- | The maximum number of unsampled reports to include in this response.
+musrlMaxResults :: Lens' ManagementUnSampledReportsList (Maybe Int32)
+musrlMaxResults
+  = lens _musrlMaxResults
+      (\ s a -> s{_musrlMaxResults = a})
+      . mapping _Coerce
+
+instance GoogleRequest ManagementUnSampledReportsList
+         where
+        type Rs ManagementUnSampledReportsList =
+             UnSampledReports
+        requestClient ManagementUnSampledReportsList{..}
+          = go _musrlAccountId _musrlWebPropertyId
+              _musrlProFileId
+              _musrlStartIndex
+              _musrlMaxResults
+              (Just AltJSON)
+              analyticsService
+          where go
+                  = buildClient
+                      (Proxy ::
+                         Proxy ManagementUnSampledReportsListResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Analytics/Management/Uploads/DeleteUploadData.hs b/gen/Network/Google/Resource/Analytics/Management/Uploads/DeleteUploadData.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Analytics/Management/Uploads/DeleteUploadData.hs
@@ -0,0 +1,134 @@
+{-# 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.Analytics.Management.Uploads.DeleteUploadData
+-- Copyright   : (c) 2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Delete data associated with a previous upload.
+--
+-- /See:/ <https://developers.google.com/analytics/ Google Analytics API Reference> for @analytics.management.uploads.deleteUploadData@.
+module Network.Google.Resource.Analytics.Management.Uploads.DeleteUploadData
+    (
+    -- * REST Resource
+      ManagementUploadsDeleteUploadDataResource
+
+    -- * Creating a Request
+    , managementUploadsDeleteUploadData
+    , ManagementUploadsDeleteUploadData
+
+    -- * Request Lenses
+    , mududWebPropertyId
+    , mududCustomDataSourceId
+    , mududPayload
+    , mududAccountId
+    ) where
+
+import           Network.Google.Analytics.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @analytics.management.uploads.deleteUploadData@ method which the
+-- 'ManagementUploadsDeleteUploadData' request conforms to.
+type ManagementUploadsDeleteUploadDataResource =
+     "analytics" :>
+       "v3" :>
+         "management" :>
+           "accounts" :>
+             Capture "accountId" Text :>
+               "webproperties" :>
+                 Capture "webPropertyId" Text :>
+                   "customDataSources" :>
+                     Capture "customDataSourceId" Text :>
+                       "deleteUploadData" :>
+                         QueryParam "alt" AltJSON :>
+                           ReqBody '[JSON]
+                             AnalyticsDataimportDeleteUploadDataRequest
+                             :> Post '[JSON] ()
+
+-- | Delete data associated with a previous upload.
+--
+-- /See:/ 'managementUploadsDeleteUploadData' smart constructor.
+data ManagementUploadsDeleteUploadData = ManagementUploadsDeleteUploadData
+    { _mududWebPropertyId      :: !Text
+    , _mududCustomDataSourceId :: !Text
+    , _mududPayload            :: !AnalyticsDataimportDeleteUploadDataRequest
+    , _mududAccountId          :: !Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ManagementUploadsDeleteUploadData' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'mududWebPropertyId'
+--
+-- * 'mududCustomDataSourceId'
+--
+-- * 'mududPayload'
+--
+-- * 'mududAccountId'
+managementUploadsDeleteUploadData
+    :: Text -- ^ 'mududWebPropertyId'
+    -> Text -- ^ 'mududCustomDataSourceId'
+    -> AnalyticsDataimportDeleteUploadDataRequest -- ^ 'mududPayload'
+    -> Text -- ^ 'mududAccountId'
+    -> ManagementUploadsDeleteUploadData
+managementUploadsDeleteUploadData pMududWebPropertyId_ pMududCustomDataSourceId_ pMududPayload_ pMududAccountId_ =
+    ManagementUploadsDeleteUploadData
+    { _mududWebPropertyId = pMududWebPropertyId_
+    , _mududCustomDataSourceId = pMududCustomDataSourceId_
+    , _mududPayload = pMududPayload_
+    , _mududAccountId = pMududAccountId_
+    }
+
+-- | Web property Id for the uploads to be deleted.
+mududWebPropertyId :: Lens' ManagementUploadsDeleteUploadData Text
+mududWebPropertyId
+  = lens _mududWebPropertyId
+      (\ s a -> s{_mududWebPropertyId = a})
+
+-- | Custom data source Id for the uploads to be deleted.
+mududCustomDataSourceId :: Lens' ManagementUploadsDeleteUploadData Text
+mududCustomDataSourceId
+  = lens _mududCustomDataSourceId
+      (\ s a -> s{_mududCustomDataSourceId = a})
+
+-- | Multipart request metadata.
+mududPayload :: Lens' ManagementUploadsDeleteUploadData AnalyticsDataimportDeleteUploadDataRequest
+mududPayload
+  = lens _mududPayload (\ s a -> s{_mududPayload = a})
+
+-- | Account Id for the uploads to be deleted.
+mududAccountId :: Lens' ManagementUploadsDeleteUploadData Text
+mududAccountId
+  = lens _mududAccountId
+      (\ s a -> s{_mududAccountId = a})
+
+instance GoogleRequest
+         ManagementUploadsDeleteUploadData where
+        type Rs ManagementUploadsDeleteUploadData = ()
+        requestClient ManagementUploadsDeleteUploadData{..}
+          = go _mududAccountId _mududWebPropertyId
+              _mududCustomDataSourceId
+              (Just AltJSON)
+              _mududPayload
+              analyticsService
+          where go
+                  = buildClient
+                      (Proxy ::
+                         Proxy ManagementUploadsDeleteUploadDataResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Analytics/Management/Uploads/Get.hs b/gen/Network/Google/Resource/Analytics/Management/Uploads/Get.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Analytics/Management/Uploads/Get.hs
@@ -0,0 +1,129 @@
+{-# 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.Analytics.Management.Uploads.Get
+-- Copyright   : (c) 2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- List uploads to which the user has access.
+--
+-- /See:/ <https://developers.google.com/analytics/ Google Analytics API Reference> for @analytics.management.uploads.get@.
+module Network.Google.Resource.Analytics.Management.Uploads.Get
+    (
+    -- * REST Resource
+      ManagementUploadsGetResource
+
+    -- * Creating a Request
+    , managementUploadsGet
+    , ManagementUploadsGet
+
+    -- * Request Lenses
+    , mugWebPropertyId
+    , mugCustomDataSourceId
+    , mugAccountId
+    , mugUploadId
+    ) where
+
+import           Network.Google.Analytics.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @analytics.management.uploads.get@ method which the
+-- 'ManagementUploadsGet' request conforms to.
+type ManagementUploadsGetResource =
+     "analytics" :>
+       "v3" :>
+         "management" :>
+           "accounts" :>
+             Capture "accountId" Text :>
+               "webproperties" :>
+                 Capture "webPropertyId" Text :>
+                   "customDataSources" :>
+                     Capture "customDataSourceId" Text :>
+                       "uploads" :>
+                         Capture "uploadId" Text :>
+                           QueryParam "alt" AltJSON :> Get '[JSON] Upload
+
+-- | List uploads to which the user has access.
+--
+-- /See:/ 'managementUploadsGet' smart constructor.
+data ManagementUploadsGet = ManagementUploadsGet
+    { _mugWebPropertyId      :: !Text
+    , _mugCustomDataSourceId :: !Text
+    , _mugAccountId          :: !Text
+    , _mugUploadId           :: !Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ManagementUploadsGet' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'mugWebPropertyId'
+--
+-- * 'mugCustomDataSourceId'
+--
+-- * 'mugAccountId'
+--
+-- * 'mugUploadId'
+managementUploadsGet
+    :: Text -- ^ 'mugWebPropertyId'
+    -> Text -- ^ 'mugCustomDataSourceId'
+    -> Text -- ^ 'mugAccountId'
+    -> Text -- ^ 'mugUploadId'
+    -> ManagementUploadsGet
+managementUploadsGet pMugWebPropertyId_ pMugCustomDataSourceId_ pMugAccountId_ pMugUploadId_ =
+    ManagementUploadsGet
+    { _mugWebPropertyId = pMugWebPropertyId_
+    , _mugCustomDataSourceId = pMugCustomDataSourceId_
+    , _mugAccountId = pMugAccountId_
+    , _mugUploadId = pMugUploadId_
+    }
+
+-- | Web property Id for the upload to retrieve.
+mugWebPropertyId :: Lens' ManagementUploadsGet Text
+mugWebPropertyId
+  = lens _mugWebPropertyId
+      (\ s a -> s{_mugWebPropertyId = a})
+
+-- | Custom data source Id for upload to retrieve.
+mugCustomDataSourceId :: Lens' ManagementUploadsGet Text
+mugCustomDataSourceId
+  = lens _mugCustomDataSourceId
+      (\ s a -> s{_mugCustomDataSourceId = a})
+
+-- | Account Id for the upload to retrieve.
+mugAccountId :: Lens' ManagementUploadsGet Text
+mugAccountId
+  = lens _mugAccountId (\ s a -> s{_mugAccountId = a})
+
+-- | Upload Id to retrieve.
+mugUploadId :: Lens' ManagementUploadsGet Text
+mugUploadId
+  = lens _mugUploadId (\ s a -> s{_mugUploadId = a})
+
+instance GoogleRequest ManagementUploadsGet where
+        type Rs ManagementUploadsGet = Upload
+        requestClient ManagementUploadsGet{..}
+          = go _mugAccountId _mugWebPropertyId
+              _mugCustomDataSourceId
+              _mugUploadId
+              (Just AltJSON)
+              analyticsService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy ManagementUploadsGetResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Analytics/Management/Uploads/List.hs b/gen/Network/Google/Resource/Analytics/Management/Uploads/List.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Analytics/Management/Uploads/List.hs
@@ -0,0 +1,145 @@
+{-# 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.Analytics.Management.Uploads.List
+-- Copyright   : (c) 2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- List uploads to which the user has access.
+--
+-- /See:/ <https://developers.google.com/analytics/ Google Analytics API Reference> for @analytics.management.uploads.list@.
+module Network.Google.Resource.Analytics.Management.Uploads.List
+    (
+    -- * REST Resource
+      ManagementUploadsListResource
+
+    -- * Creating a Request
+    , managementUploadsList
+    , ManagementUploadsList
+
+    -- * Request Lenses
+    , mulWebPropertyId
+    , mulCustomDataSourceId
+    , mulAccountId
+    , mulStartIndex
+    , mulMaxResults
+    ) where
+
+import           Network.Google.Analytics.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @analytics.management.uploads.list@ method which the
+-- 'ManagementUploadsList' request conforms to.
+type ManagementUploadsListResource =
+     "analytics" :>
+       "v3" :>
+         "management" :>
+           "accounts" :>
+             Capture "accountId" Text :>
+               "webproperties" :>
+                 Capture "webPropertyId" Text :>
+                   "customDataSources" :>
+                     Capture "customDataSourceId" Text :>
+                       "uploads" :>
+                         QueryParam "start-index" (Textual Int32) :>
+                           QueryParam "max-results" (Textual Int32) :>
+                             QueryParam "alt" AltJSON :> Get '[JSON] Uploads
+
+-- | List uploads to which the user has access.
+--
+-- /See:/ 'managementUploadsList' smart constructor.
+data ManagementUploadsList = ManagementUploadsList
+    { _mulWebPropertyId      :: !Text
+    , _mulCustomDataSourceId :: !Text
+    , _mulAccountId          :: !Text
+    , _mulStartIndex         :: !(Maybe (Textual Int32))
+    , _mulMaxResults         :: !(Maybe (Textual Int32))
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ManagementUploadsList' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'mulWebPropertyId'
+--
+-- * 'mulCustomDataSourceId'
+--
+-- * 'mulAccountId'
+--
+-- * 'mulStartIndex'
+--
+-- * 'mulMaxResults'
+managementUploadsList
+    :: Text -- ^ 'mulWebPropertyId'
+    -> Text -- ^ 'mulCustomDataSourceId'
+    -> Text -- ^ 'mulAccountId'
+    -> ManagementUploadsList
+managementUploadsList pMulWebPropertyId_ pMulCustomDataSourceId_ pMulAccountId_ =
+    ManagementUploadsList
+    { _mulWebPropertyId = pMulWebPropertyId_
+    , _mulCustomDataSourceId = pMulCustomDataSourceId_
+    , _mulAccountId = pMulAccountId_
+    , _mulStartIndex = Nothing
+    , _mulMaxResults = Nothing
+    }
+
+-- | Web property Id for the uploads to retrieve.
+mulWebPropertyId :: Lens' ManagementUploadsList Text
+mulWebPropertyId
+  = lens _mulWebPropertyId
+      (\ s a -> s{_mulWebPropertyId = a})
+
+-- | Custom data source Id for uploads to retrieve.
+mulCustomDataSourceId :: Lens' ManagementUploadsList Text
+mulCustomDataSourceId
+  = lens _mulCustomDataSourceId
+      (\ s a -> s{_mulCustomDataSourceId = a})
+
+-- | Account Id for the uploads to retrieve.
+mulAccountId :: Lens' ManagementUploadsList Text
+mulAccountId
+  = lens _mulAccountId (\ s a -> s{_mulAccountId = a})
+
+-- | A 1-based index of the first upload to retrieve. Use this parameter as a
+-- pagination mechanism along with the max-results parameter.
+mulStartIndex :: Lens' ManagementUploadsList (Maybe Int32)
+mulStartIndex
+  = lens _mulStartIndex
+      (\ s a -> s{_mulStartIndex = a})
+      . mapping _Coerce
+
+-- | The maximum number of uploads to include in this response.
+mulMaxResults :: Lens' ManagementUploadsList (Maybe Int32)
+mulMaxResults
+  = lens _mulMaxResults
+      (\ s a -> s{_mulMaxResults = a})
+      . mapping _Coerce
+
+instance GoogleRequest ManagementUploadsList where
+        type Rs ManagementUploadsList = Uploads
+        requestClient ManagementUploadsList{..}
+          = go _mulAccountId _mulWebPropertyId
+              _mulCustomDataSourceId
+              _mulStartIndex
+              _mulMaxResults
+              (Just AltJSON)
+              analyticsService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy ManagementUploadsListResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Analytics/Management/Uploads/UploadData.hs b/gen/Network/Google/Resource/Analytics/Management/Uploads/UploadData.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Analytics/Management/Uploads/UploadData.hs
@@ -0,0 +1,151 @@
+{-# 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.Analytics.Management.Uploads.UploadData
+-- Copyright   : (c) 2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Upload data for a custom data source.
+--
+-- /See:/ <https://developers.google.com/analytics/ Google Analytics API Reference> for @analytics.management.uploads.uploadData@.
+module Network.Google.Resource.Analytics.Management.Uploads.UploadData
+    (
+    -- * REST Resource
+      ManagementUploadsUploadDataResource
+
+    -- * Creating a Request
+    , managementUploadsUploadData
+    , ManagementUploadsUploadData
+
+    -- * Request Lenses
+    , muudWebPropertyId
+    , muudCustomDataSourceId
+    , muudAccountId
+    ) where
+
+import           Network.Google.Analytics.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @analytics.management.uploads.uploadData@ method which the
+-- 'ManagementUploadsUploadData' request conforms to.
+type ManagementUploadsUploadDataResource =
+     "analytics" :>
+       "v3" :>
+         "management" :>
+           "accounts" :>
+             Capture "accountId" Text :>
+               "webproperties" :>
+                 Capture "webPropertyId" Text :>
+                   "customDataSources" :>
+                     Capture "customDataSourceId" Text :>
+                       "uploads" :>
+                         QueryParam "alt" AltJSON :> Post '[JSON] Upload
+       :<|>
+       "upload" :>
+         "analytics" :>
+           "v3" :>
+             "management" :>
+               "accounts" :>
+                 Capture "accountId" Text :>
+                   "webproperties" :>
+                     Capture "webPropertyId" Text :>
+                       "customDataSources" :>
+                         Capture "customDataSourceId" Text :>
+                           "uploads" :>
+                             QueryParam "alt" AltJSON :>
+                               QueryParam "uploadType" AltMedia :>
+                                 ReqBody '[OctetStream] RequestBody :>
+                                   Post '[JSON] Upload
+
+-- | Upload data for a custom data source.
+--
+-- /See:/ 'managementUploadsUploadData' smart constructor.
+data ManagementUploadsUploadData = ManagementUploadsUploadData
+    { _muudWebPropertyId      :: !Text
+    , _muudCustomDataSourceId :: !Text
+    , _muudAccountId          :: !Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ManagementUploadsUploadData' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'muudWebPropertyId'
+--
+-- * 'muudCustomDataSourceId'
+--
+-- * 'muudAccountId'
+managementUploadsUploadData
+    :: Text -- ^ 'muudWebPropertyId'
+    -> Text -- ^ 'muudCustomDataSourceId'
+    -> Text -- ^ 'muudAccountId'
+    -> ManagementUploadsUploadData
+managementUploadsUploadData pMuudWebPropertyId_ pMuudCustomDataSourceId_ pMuudAccountId_ =
+    ManagementUploadsUploadData
+    { _muudWebPropertyId = pMuudWebPropertyId_
+    , _muudCustomDataSourceId = pMuudCustomDataSourceId_
+    , _muudAccountId = pMuudAccountId_
+    }
+
+-- | Web property UA-string associated with the upload.
+muudWebPropertyId :: Lens' ManagementUploadsUploadData Text
+muudWebPropertyId
+  = lens _muudWebPropertyId
+      (\ s a -> s{_muudWebPropertyId = a})
+
+-- | Custom data source Id to which the data being uploaded belongs.
+muudCustomDataSourceId :: Lens' ManagementUploadsUploadData Text
+muudCustomDataSourceId
+  = lens _muudCustomDataSourceId
+      (\ s a -> s{_muudCustomDataSourceId = a})
+
+-- | Account Id associated with the upload.
+muudAccountId :: Lens' ManagementUploadsUploadData Text
+muudAccountId
+  = lens _muudAccountId
+      (\ s a -> s{_muudAccountId = a})
+
+instance GoogleRequest ManagementUploadsUploadData
+         where
+        type Rs ManagementUploadsUploadData = Upload
+        requestClient ManagementUploadsUploadData{..}
+          = go _muudAccountId _muudWebPropertyId
+              _muudCustomDataSourceId
+              (Just AltJSON)
+              analyticsService
+          where go :<|> _
+                  = buildClient
+                      (Proxy :: Proxy ManagementUploadsUploadDataResource)
+                      mempty
+
+instance GoogleRequest
+         (MediaUpload ManagementUploadsUploadData) where
+        type Rs (MediaUpload ManagementUploadsUploadData) =
+             Upload
+        requestClient
+          (MediaUpload ManagementUploadsUploadData{..} body)
+          = go _muudAccountId _muudWebPropertyId
+              _muudCustomDataSourceId
+              (Just AltJSON)
+              (Just AltMedia)
+              body
+              analyticsService
+          where _ :<|> go
+                  = buildClient
+                      (Proxy :: Proxy ManagementUploadsUploadDataResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Analytics/Management/WebProperties/Get.hs b/gen/Network/Google/Resource/Analytics/Management/WebProperties/Get.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Analytics/Management/WebProperties/Get.hs
@@ -0,0 +1,101 @@
+{-# LANGUAGE DataKinds          #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE FlexibleInstances  #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+{-# LANGUAGE TypeOperators      #-}
+
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
+
+-- |
+-- Module      : Network.Google.Resource.Analytics.Management.WebProperties.Get
+-- Copyright   : (c) 2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Gets a web property to which the user has access.
+--
+-- /See:/ <https://developers.google.com/analytics/ Google Analytics API Reference> for @analytics.management.webproperties.get@.
+module Network.Google.Resource.Analytics.Management.WebProperties.Get
+    (
+    -- * REST Resource
+      ManagementWebPropertiesGetResource
+
+    -- * Creating a Request
+    , managementWebPropertiesGet
+    , ManagementWebPropertiesGet
+
+    -- * Request Lenses
+    , mwpgWebPropertyId
+    , mwpgAccountId
+    ) where
+
+import           Network.Google.Analytics.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @analytics.management.webproperties.get@ method which the
+-- 'ManagementWebPropertiesGet' request conforms to.
+type ManagementWebPropertiesGetResource =
+     "analytics" :>
+       "v3" :>
+         "management" :>
+           "accounts" :>
+             Capture "accountId" Text :>
+               "webproperties" :>
+                 Capture "webPropertyId" Text :>
+                   QueryParam "alt" AltJSON :> Get '[JSON] WebProperty
+
+-- | Gets a web property to which the user has access.
+--
+-- /See:/ 'managementWebPropertiesGet' smart constructor.
+data ManagementWebPropertiesGet = ManagementWebPropertiesGet
+    { _mwpgWebPropertyId :: !Text
+    , _mwpgAccountId     :: !Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ManagementWebPropertiesGet' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'mwpgWebPropertyId'
+--
+-- * 'mwpgAccountId'
+managementWebPropertiesGet
+    :: Text -- ^ 'mwpgWebPropertyId'
+    -> Text -- ^ 'mwpgAccountId'
+    -> ManagementWebPropertiesGet
+managementWebPropertiesGet pMwpgWebPropertyId_ pMwpgAccountId_ =
+    ManagementWebPropertiesGet
+    { _mwpgWebPropertyId = pMwpgWebPropertyId_
+    , _mwpgAccountId = pMwpgAccountId_
+    }
+
+-- | ID to retrieve the web property for.
+mwpgWebPropertyId :: Lens' ManagementWebPropertiesGet Text
+mwpgWebPropertyId
+  = lens _mwpgWebPropertyId
+      (\ s a -> s{_mwpgWebPropertyId = a})
+
+-- | Account ID to retrieve the web property for.
+mwpgAccountId :: Lens' ManagementWebPropertiesGet Text
+mwpgAccountId
+  = lens _mwpgAccountId
+      (\ s a -> s{_mwpgAccountId = a})
+
+instance GoogleRequest ManagementWebPropertiesGet
+         where
+        type Rs ManagementWebPropertiesGet = WebProperty
+        requestClient ManagementWebPropertiesGet{..}
+          = go _mwpgAccountId _mwpgWebPropertyId (Just AltJSON)
+              analyticsService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy ManagementWebPropertiesGetResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Analytics/Management/WebProperties/Insert.hs b/gen/Network/Google/Resource/Analytics/Management/WebProperties/Insert.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Analytics/Management/WebProperties/Insert.hs
@@ -0,0 +1,106 @@
+{-# 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.Analytics.Management.WebProperties.Insert
+-- Copyright   : (c) 2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Create a new property if the account has fewer than 20 properties. Web
+-- properties are visible in the Google Analytics interface only if they
+-- have at least one profile.
+--
+-- /See:/ <https://developers.google.com/analytics/ Google Analytics API Reference> for @analytics.management.webproperties.insert@.
+module Network.Google.Resource.Analytics.Management.WebProperties.Insert
+    (
+    -- * REST Resource
+      ManagementWebPropertiesInsertResource
+
+    -- * Creating a Request
+    , managementWebPropertiesInsert
+    , ManagementWebPropertiesInsert
+
+    -- * Request Lenses
+    , mwpiPayload
+    , mwpiAccountId
+    ) where
+
+import           Network.Google.Analytics.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @analytics.management.webproperties.insert@ method which the
+-- 'ManagementWebPropertiesInsert' request conforms to.
+type ManagementWebPropertiesInsertResource =
+     "analytics" :>
+       "v3" :>
+         "management" :>
+           "accounts" :>
+             Capture "accountId" Text :>
+               "webproperties" :>
+                 QueryParam "alt" AltJSON :>
+                   ReqBody '[JSON] WebProperty :>
+                     Post '[JSON] WebProperty
+
+-- | Create a new property if the account has fewer than 20 properties. Web
+-- properties are visible in the Google Analytics interface only if they
+-- have at least one profile.
+--
+-- /See:/ 'managementWebPropertiesInsert' smart constructor.
+data ManagementWebPropertiesInsert = ManagementWebPropertiesInsert
+    { _mwpiPayload   :: !WebProperty
+    , _mwpiAccountId :: !Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ManagementWebPropertiesInsert' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'mwpiPayload'
+--
+-- * 'mwpiAccountId'
+managementWebPropertiesInsert
+    :: WebProperty -- ^ 'mwpiPayload'
+    -> Text -- ^ 'mwpiAccountId'
+    -> ManagementWebPropertiesInsert
+managementWebPropertiesInsert pMwpiPayload_ pMwpiAccountId_ =
+    ManagementWebPropertiesInsert
+    { _mwpiPayload = pMwpiPayload_
+    , _mwpiAccountId = pMwpiAccountId_
+    }
+
+-- | Multipart request metadata.
+mwpiPayload :: Lens' ManagementWebPropertiesInsert WebProperty
+mwpiPayload
+  = lens _mwpiPayload (\ s a -> s{_mwpiPayload = a})
+
+-- | Account ID to create the web property for.
+mwpiAccountId :: Lens' ManagementWebPropertiesInsert Text
+mwpiAccountId
+  = lens _mwpiAccountId
+      (\ s a -> s{_mwpiAccountId = a})
+
+instance GoogleRequest ManagementWebPropertiesInsert
+         where
+        type Rs ManagementWebPropertiesInsert = WebProperty
+        requestClient ManagementWebPropertiesInsert{..}
+          = go _mwpiAccountId (Just AltJSON) _mwpiPayload
+              analyticsService
+          where go
+                  = buildClient
+                      (Proxy ::
+                         Proxy ManagementWebPropertiesInsertResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Analytics/Management/WebProperties/List.hs b/gen/Network/Google/Resource/Analytics/Management/WebProperties/List.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Analytics/Management/WebProperties/List.hs
@@ -0,0 +1,118 @@
+{-# 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.Analytics.Management.WebProperties.List
+-- Copyright   : (c) 2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Lists web properties to which the user has access.
+--
+-- /See:/ <https://developers.google.com/analytics/ Google Analytics API Reference> for @analytics.management.webproperties.list@.
+module Network.Google.Resource.Analytics.Management.WebProperties.List
+    (
+    -- * REST Resource
+      ManagementWebPropertiesListResource
+
+    -- * Creating a Request
+    , managementWebPropertiesList
+    , ManagementWebPropertiesList
+
+    -- * Request Lenses
+    , mwplAccountId
+    , mwplStartIndex
+    , mwplMaxResults
+    ) where
+
+import           Network.Google.Analytics.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @analytics.management.webproperties.list@ method which the
+-- 'ManagementWebPropertiesList' request conforms to.
+type ManagementWebPropertiesListResource =
+     "analytics" :>
+       "v3" :>
+         "management" :>
+           "accounts" :>
+             Capture "accountId" Text :>
+               "webproperties" :>
+                 QueryParam "start-index" (Textual Int32) :>
+                   QueryParam "max-results" (Textual Int32) :>
+                     QueryParam "alt" AltJSON :> Get '[JSON] WebProperties
+
+-- | Lists web properties to which the user has access.
+--
+-- /See:/ 'managementWebPropertiesList' smart constructor.
+data ManagementWebPropertiesList = ManagementWebPropertiesList
+    { _mwplAccountId  :: !Text
+    , _mwplStartIndex :: !(Maybe (Textual Int32))
+    , _mwplMaxResults :: !(Maybe (Textual Int32))
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ManagementWebPropertiesList' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'mwplAccountId'
+--
+-- * 'mwplStartIndex'
+--
+-- * 'mwplMaxResults'
+managementWebPropertiesList
+    :: Text -- ^ 'mwplAccountId'
+    -> ManagementWebPropertiesList
+managementWebPropertiesList pMwplAccountId_ =
+    ManagementWebPropertiesList
+    { _mwplAccountId = pMwplAccountId_
+    , _mwplStartIndex = Nothing
+    , _mwplMaxResults = Nothing
+    }
+
+-- | Account ID to retrieve web properties for. Can either be a specific
+-- account ID or \'~all\', which refers to all the accounts that user has
+-- access to.
+mwplAccountId :: Lens' ManagementWebPropertiesList Text
+mwplAccountId
+  = lens _mwplAccountId
+      (\ s a -> s{_mwplAccountId = a})
+
+-- | An index of the first entity to retrieve. Use this parameter as a
+-- pagination mechanism along with the max-results parameter.
+mwplStartIndex :: Lens' ManagementWebPropertiesList (Maybe Int32)
+mwplStartIndex
+  = lens _mwplStartIndex
+      (\ s a -> s{_mwplStartIndex = a})
+      . mapping _Coerce
+
+-- | The maximum number of web properties to include in this response.
+mwplMaxResults :: Lens' ManagementWebPropertiesList (Maybe Int32)
+mwplMaxResults
+  = lens _mwplMaxResults
+      (\ s a -> s{_mwplMaxResults = a})
+      . mapping _Coerce
+
+instance GoogleRequest ManagementWebPropertiesList
+         where
+        type Rs ManagementWebPropertiesList = WebProperties
+        requestClient ManagementWebPropertiesList{..}
+          = go _mwplAccountId _mwplStartIndex _mwplMaxResults
+              (Just AltJSON)
+              analyticsService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy ManagementWebPropertiesListResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Analytics/Management/WebProperties/Patch.hs b/gen/Network/Google/Resource/Analytics/Management/WebProperties/Patch.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Analytics/Management/WebProperties/Patch.hs
@@ -0,0 +1,115 @@
+{-# 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.Analytics.Management.WebProperties.Patch
+-- Copyright   : (c) 2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Updates an existing web property. This method supports patch semantics.
+--
+-- /See:/ <https://developers.google.com/analytics/ Google Analytics API Reference> for @analytics.management.webproperties.patch@.
+module Network.Google.Resource.Analytics.Management.WebProperties.Patch
+    (
+    -- * REST Resource
+      ManagementWebPropertiesPatchResource
+
+    -- * Creating a Request
+    , managementWebPropertiesPatch
+    , ManagementWebPropertiesPatch
+
+    -- * Request Lenses
+    , mwppWebPropertyId
+    , mwppPayload
+    , mwppAccountId
+    ) where
+
+import           Network.Google.Analytics.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @analytics.management.webproperties.patch@ method which the
+-- 'ManagementWebPropertiesPatch' request conforms to.
+type ManagementWebPropertiesPatchResource =
+     "analytics" :>
+       "v3" :>
+         "management" :>
+           "accounts" :>
+             Capture "accountId" Text :>
+               "webproperties" :>
+                 Capture "webPropertyId" Text :>
+                   QueryParam "alt" AltJSON :>
+                     ReqBody '[JSON] WebProperty :>
+                       Patch '[JSON] WebProperty
+
+-- | Updates an existing web property. This method supports patch semantics.
+--
+-- /See:/ 'managementWebPropertiesPatch' smart constructor.
+data ManagementWebPropertiesPatch = ManagementWebPropertiesPatch
+    { _mwppWebPropertyId :: !Text
+    , _mwppPayload       :: !WebProperty
+    , _mwppAccountId     :: !Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ManagementWebPropertiesPatch' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'mwppWebPropertyId'
+--
+-- * 'mwppPayload'
+--
+-- * 'mwppAccountId'
+managementWebPropertiesPatch
+    :: Text -- ^ 'mwppWebPropertyId'
+    -> WebProperty -- ^ 'mwppPayload'
+    -> Text -- ^ 'mwppAccountId'
+    -> ManagementWebPropertiesPatch
+managementWebPropertiesPatch pMwppWebPropertyId_ pMwppPayload_ pMwppAccountId_ =
+    ManagementWebPropertiesPatch
+    { _mwppWebPropertyId = pMwppWebPropertyId_
+    , _mwppPayload = pMwppPayload_
+    , _mwppAccountId = pMwppAccountId_
+    }
+
+-- | Web property ID
+mwppWebPropertyId :: Lens' ManagementWebPropertiesPatch Text
+mwppWebPropertyId
+  = lens _mwppWebPropertyId
+      (\ s a -> s{_mwppWebPropertyId = a})
+
+-- | Multipart request metadata.
+mwppPayload :: Lens' ManagementWebPropertiesPatch WebProperty
+mwppPayload
+  = lens _mwppPayload (\ s a -> s{_mwppPayload = a})
+
+-- | Account ID to which the web property belongs
+mwppAccountId :: Lens' ManagementWebPropertiesPatch Text
+mwppAccountId
+  = lens _mwppAccountId
+      (\ s a -> s{_mwppAccountId = a})
+
+instance GoogleRequest ManagementWebPropertiesPatch
+         where
+        type Rs ManagementWebPropertiesPatch = WebProperty
+        requestClient ManagementWebPropertiesPatch{..}
+          = go _mwppAccountId _mwppWebPropertyId (Just AltJSON)
+              _mwppPayload
+              analyticsService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy ManagementWebPropertiesPatchResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Analytics/Management/WebProperties/Update.hs b/gen/Network/Google/Resource/Analytics/Management/WebProperties/Update.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Analytics/Management/WebProperties/Update.hs
@@ -0,0 +1,116 @@
+{-# LANGUAGE DataKinds          #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE FlexibleInstances  #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+{-# LANGUAGE TypeOperators      #-}
+
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
+
+-- |
+-- Module      : Network.Google.Resource.Analytics.Management.WebProperties.Update
+-- Copyright   : (c) 2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Updates an existing web property.
+--
+-- /See:/ <https://developers.google.com/analytics/ Google Analytics API Reference> for @analytics.management.webproperties.update@.
+module Network.Google.Resource.Analytics.Management.WebProperties.Update
+    (
+    -- * REST Resource
+      ManagementWebPropertiesUpdateResource
+
+    -- * Creating a Request
+    , managementWebPropertiesUpdate
+    , ManagementWebPropertiesUpdate
+
+    -- * Request Lenses
+    , mwpuWebPropertyId
+    , mwpuPayload
+    , mwpuAccountId
+    ) where
+
+import           Network.Google.Analytics.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @analytics.management.webproperties.update@ method which the
+-- 'ManagementWebPropertiesUpdate' request conforms to.
+type ManagementWebPropertiesUpdateResource =
+     "analytics" :>
+       "v3" :>
+         "management" :>
+           "accounts" :>
+             Capture "accountId" Text :>
+               "webproperties" :>
+                 Capture "webPropertyId" Text :>
+                   QueryParam "alt" AltJSON :>
+                     ReqBody '[JSON] WebProperty :>
+                       Put '[JSON] WebProperty
+
+-- | Updates an existing web property.
+--
+-- /See:/ 'managementWebPropertiesUpdate' smart constructor.
+data ManagementWebPropertiesUpdate = ManagementWebPropertiesUpdate
+    { _mwpuWebPropertyId :: !Text
+    , _mwpuPayload       :: !WebProperty
+    , _mwpuAccountId     :: !Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ManagementWebPropertiesUpdate' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'mwpuWebPropertyId'
+--
+-- * 'mwpuPayload'
+--
+-- * 'mwpuAccountId'
+managementWebPropertiesUpdate
+    :: Text -- ^ 'mwpuWebPropertyId'
+    -> WebProperty -- ^ 'mwpuPayload'
+    -> Text -- ^ 'mwpuAccountId'
+    -> ManagementWebPropertiesUpdate
+managementWebPropertiesUpdate pMwpuWebPropertyId_ pMwpuPayload_ pMwpuAccountId_ =
+    ManagementWebPropertiesUpdate
+    { _mwpuWebPropertyId = pMwpuWebPropertyId_
+    , _mwpuPayload = pMwpuPayload_
+    , _mwpuAccountId = pMwpuAccountId_
+    }
+
+-- | Web property ID
+mwpuWebPropertyId :: Lens' ManagementWebPropertiesUpdate Text
+mwpuWebPropertyId
+  = lens _mwpuWebPropertyId
+      (\ s a -> s{_mwpuWebPropertyId = a})
+
+-- | Multipart request metadata.
+mwpuPayload :: Lens' ManagementWebPropertiesUpdate WebProperty
+mwpuPayload
+  = lens _mwpuPayload (\ s a -> s{_mwpuPayload = a})
+
+-- | Account ID to which the web property belongs
+mwpuAccountId :: Lens' ManagementWebPropertiesUpdate Text
+mwpuAccountId
+  = lens _mwpuAccountId
+      (\ s a -> s{_mwpuAccountId = a})
+
+instance GoogleRequest ManagementWebPropertiesUpdate
+         where
+        type Rs ManagementWebPropertiesUpdate = WebProperty
+        requestClient ManagementWebPropertiesUpdate{..}
+          = go _mwpuAccountId _mwpuWebPropertyId (Just AltJSON)
+              _mwpuPayload
+              analyticsService
+          where go
+                  = buildClient
+                      (Proxy ::
+                         Proxy ManagementWebPropertiesUpdateResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Analytics/Management/WebPropertyAdWordsLinks/Delete.hs b/gen/Network/Google/Resource/Analytics/Management/WebPropertyAdWordsLinks/Delete.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Analytics/Management/WebPropertyAdWordsLinks/Delete.hs
@@ -0,0 +1,121 @@
+{-# LANGUAGE DataKinds          #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE FlexibleInstances  #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+{-# LANGUAGE TypeOperators      #-}
+
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
+
+-- |
+-- Module      : Network.Google.Resource.Analytics.Management.WebPropertyAdWordsLinks.Delete
+-- Copyright   : (c) 2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Deletes a web property-AdWords link.
+--
+-- /See:/ <https://developers.google.com/analytics/ Google Analytics API Reference> for @analytics.management.webPropertyAdWordsLinks.delete@.
+module Network.Google.Resource.Analytics.Management.WebPropertyAdWordsLinks.Delete
+    (
+    -- * REST Resource
+      ManagementWebPropertyAdWordsLinksDeleteResource
+
+    -- * Creating a Request
+    , managementWebPropertyAdWordsLinksDelete
+    , ManagementWebPropertyAdWordsLinksDelete
+
+    -- * Request Lenses
+    , mwpawldWebPropertyId
+    , mwpawldAccountId
+    , mwpawldWebPropertyAdWordsLinkId
+    ) where
+
+import           Network.Google.Analytics.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @analytics.management.webPropertyAdWordsLinks.delete@ method which the
+-- 'ManagementWebPropertyAdWordsLinksDelete' request conforms to.
+type ManagementWebPropertyAdWordsLinksDeleteResource
+     =
+     "analytics" :>
+       "v3" :>
+         "management" :>
+           "accounts" :>
+             Capture "accountId" Text :>
+               "webproperties" :>
+                 Capture "webPropertyId" Text :>
+                   "entityAdWordsLinks" :>
+                     Capture "webPropertyAdWordsLinkId" Text :>
+                       QueryParam "alt" AltJSON :> Delete '[JSON] ()
+
+-- | Deletes a web property-AdWords link.
+--
+-- /See:/ 'managementWebPropertyAdWordsLinksDelete' smart constructor.
+data ManagementWebPropertyAdWordsLinksDelete = ManagementWebPropertyAdWordsLinksDelete
+    { _mwpawldWebPropertyId            :: !Text
+    , _mwpawldAccountId                :: !Text
+    , _mwpawldWebPropertyAdWordsLinkId :: !Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ManagementWebPropertyAdWordsLinksDelete' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'mwpawldWebPropertyId'
+--
+-- * 'mwpawldAccountId'
+--
+-- * 'mwpawldWebPropertyAdWordsLinkId'
+managementWebPropertyAdWordsLinksDelete
+    :: Text -- ^ 'mwpawldWebPropertyId'
+    -> Text -- ^ 'mwpawldAccountId'
+    -> Text -- ^ 'mwpawldWebPropertyAdWordsLinkId'
+    -> ManagementWebPropertyAdWordsLinksDelete
+managementWebPropertyAdWordsLinksDelete pMwpawldWebPropertyId_ pMwpawldAccountId_ pMwpawldWebPropertyAdWordsLinkId_ =
+    ManagementWebPropertyAdWordsLinksDelete
+    { _mwpawldWebPropertyId = pMwpawldWebPropertyId_
+    , _mwpawldAccountId = pMwpawldAccountId_
+    , _mwpawldWebPropertyAdWordsLinkId = pMwpawldWebPropertyAdWordsLinkId_
+    }
+
+-- | Web property ID to delete the AdWords link for.
+mwpawldWebPropertyId :: Lens' ManagementWebPropertyAdWordsLinksDelete Text
+mwpawldWebPropertyId
+  = lens _mwpawldWebPropertyId
+      (\ s a -> s{_mwpawldWebPropertyId = a})
+
+-- | ID of the account which the given web property belongs to.
+mwpawldAccountId :: Lens' ManagementWebPropertyAdWordsLinksDelete Text
+mwpawldAccountId
+  = lens _mwpawldAccountId
+      (\ s a -> s{_mwpawldAccountId = a})
+
+-- | Web property AdWords link ID.
+mwpawldWebPropertyAdWordsLinkId :: Lens' ManagementWebPropertyAdWordsLinksDelete Text
+mwpawldWebPropertyAdWordsLinkId
+  = lens _mwpawldWebPropertyAdWordsLinkId
+      (\ s a -> s{_mwpawldWebPropertyAdWordsLinkId = a})
+
+instance GoogleRequest
+         ManagementWebPropertyAdWordsLinksDelete where
+        type Rs ManagementWebPropertyAdWordsLinksDelete = ()
+        requestClient
+          ManagementWebPropertyAdWordsLinksDelete{..}
+          = go _mwpawldAccountId _mwpawldWebPropertyId
+              _mwpawldWebPropertyAdWordsLinkId
+              (Just AltJSON)
+              analyticsService
+          where go
+                  = buildClient
+                      (Proxy ::
+                         Proxy
+                           ManagementWebPropertyAdWordsLinksDeleteResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Analytics/Management/WebPropertyAdWordsLinks/Get.hs b/gen/Network/Google/Resource/Analytics/Management/WebPropertyAdWordsLinks/Get.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Analytics/Management/WebPropertyAdWordsLinks/Get.hs
@@ -0,0 +1,121 @@
+{-# LANGUAGE DataKinds          #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE FlexibleInstances  #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+{-# LANGUAGE TypeOperators      #-}
+
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
+
+-- |
+-- Module      : Network.Google.Resource.Analytics.Management.WebPropertyAdWordsLinks.Get
+-- Copyright   : (c) 2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Returns a web property-AdWords link to which the user has access.
+--
+-- /See:/ <https://developers.google.com/analytics/ Google Analytics API Reference> for @analytics.management.webPropertyAdWordsLinks.get@.
+module Network.Google.Resource.Analytics.Management.WebPropertyAdWordsLinks.Get
+    (
+    -- * REST Resource
+      ManagementWebPropertyAdWordsLinksGetResource
+
+    -- * Creating a Request
+    , managementWebPropertyAdWordsLinksGet
+    , ManagementWebPropertyAdWordsLinksGet
+
+    -- * Request Lenses
+    , mwpawlgWebPropertyId
+    , mwpawlgAccountId
+    , mwpawlgWebPropertyAdWordsLinkId
+    ) where
+
+import           Network.Google.Analytics.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @analytics.management.webPropertyAdWordsLinks.get@ method which the
+-- 'ManagementWebPropertyAdWordsLinksGet' request conforms to.
+type ManagementWebPropertyAdWordsLinksGetResource =
+     "analytics" :>
+       "v3" :>
+         "management" :>
+           "accounts" :>
+             Capture "accountId" Text :>
+               "webproperties" :>
+                 Capture "webPropertyId" Text :>
+                   "entityAdWordsLinks" :>
+                     Capture "webPropertyAdWordsLinkId" Text :>
+                       QueryParam "alt" AltJSON :>
+                         Get '[JSON] EntityAdWordsLink
+
+-- | Returns a web property-AdWords link to which the user has access.
+--
+-- /See:/ 'managementWebPropertyAdWordsLinksGet' smart constructor.
+data ManagementWebPropertyAdWordsLinksGet = ManagementWebPropertyAdWordsLinksGet
+    { _mwpawlgWebPropertyId            :: !Text
+    , _mwpawlgAccountId                :: !Text
+    , _mwpawlgWebPropertyAdWordsLinkId :: !Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ManagementWebPropertyAdWordsLinksGet' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'mwpawlgWebPropertyId'
+--
+-- * 'mwpawlgAccountId'
+--
+-- * 'mwpawlgWebPropertyAdWordsLinkId'
+managementWebPropertyAdWordsLinksGet
+    :: Text -- ^ 'mwpawlgWebPropertyId'
+    -> Text -- ^ 'mwpawlgAccountId'
+    -> Text -- ^ 'mwpawlgWebPropertyAdWordsLinkId'
+    -> ManagementWebPropertyAdWordsLinksGet
+managementWebPropertyAdWordsLinksGet pMwpawlgWebPropertyId_ pMwpawlgAccountId_ pMwpawlgWebPropertyAdWordsLinkId_ =
+    ManagementWebPropertyAdWordsLinksGet
+    { _mwpawlgWebPropertyId = pMwpawlgWebPropertyId_
+    , _mwpawlgAccountId = pMwpawlgAccountId_
+    , _mwpawlgWebPropertyAdWordsLinkId = pMwpawlgWebPropertyAdWordsLinkId_
+    }
+
+-- | Web property ID to retrieve the AdWords link for.
+mwpawlgWebPropertyId :: Lens' ManagementWebPropertyAdWordsLinksGet Text
+mwpawlgWebPropertyId
+  = lens _mwpawlgWebPropertyId
+      (\ s a -> s{_mwpawlgWebPropertyId = a})
+
+-- | ID of the account which the given web property belongs to.
+mwpawlgAccountId :: Lens' ManagementWebPropertyAdWordsLinksGet Text
+mwpawlgAccountId
+  = lens _mwpawlgAccountId
+      (\ s a -> s{_mwpawlgAccountId = a})
+
+-- | Web property-AdWords link ID.
+mwpawlgWebPropertyAdWordsLinkId :: Lens' ManagementWebPropertyAdWordsLinksGet Text
+mwpawlgWebPropertyAdWordsLinkId
+  = lens _mwpawlgWebPropertyAdWordsLinkId
+      (\ s a -> s{_mwpawlgWebPropertyAdWordsLinkId = a})
+
+instance GoogleRequest
+         ManagementWebPropertyAdWordsLinksGet where
+        type Rs ManagementWebPropertyAdWordsLinksGet =
+             EntityAdWordsLink
+        requestClient
+          ManagementWebPropertyAdWordsLinksGet{..}
+          = go _mwpawlgAccountId _mwpawlgWebPropertyId
+              _mwpawlgWebPropertyAdWordsLinkId
+              (Just AltJSON)
+              analyticsService
+          where go
+                  = buildClient
+                      (Proxy ::
+                         Proxy ManagementWebPropertyAdWordsLinksGetResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Analytics/Management/WebPropertyAdWordsLinks/Insert.hs b/gen/Network/Google/Resource/Analytics/Management/WebPropertyAdWordsLinks/Insert.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Analytics/Management/WebPropertyAdWordsLinks/Insert.hs
@@ -0,0 +1,123 @@
+{-# 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.Analytics.Management.WebPropertyAdWordsLinks.Insert
+-- Copyright   : (c) 2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Creates a webProperty-AdWords link.
+--
+-- /See:/ <https://developers.google.com/analytics/ Google Analytics API Reference> for @analytics.management.webPropertyAdWordsLinks.insert@.
+module Network.Google.Resource.Analytics.Management.WebPropertyAdWordsLinks.Insert
+    (
+    -- * REST Resource
+      ManagementWebPropertyAdWordsLinksInsertResource
+
+    -- * Creating a Request
+    , managementWebPropertyAdWordsLinksInsert
+    , ManagementWebPropertyAdWordsLinksInsert
+
+    -- * Request Lenses
+    , mwpawliWebPropertyId
+    , mwpawliPayload
+    , mwpawliAccountId
+    ) where
+
+import           Network.Google.Analytics.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @analytics.management.webPropertyAdWordsLinks.insert@ method which the
+-- 'ManagementWebPropertyAdWordsLinksInsert' request conforms to.
+type ManagementWebPropertyAdWordsLinksInsertResource
+     =
+     "analytics" :>
+       "v3" :>
+         "management" :>
+           "accounts" :>
+             Capture "accountId" Text :>
+               "webproperties" :>
+                 Capture "webPropertyId" Text :>
+                   "entityAdWordsLinks" :>
+                     QueryParam "alt" AltJSON :>
+                       ReqBody '[JSON] EntityAdWordsLink :>
+                         Post '[JSON] EntityAdWordsLink
+
+-- | Creates a webProperty-AdWords link.
+--
+-- /See:/ 'managementWebPropertyAdWordsLinksInsert' smart constructor.
+data ManagementWebPropertyAdWordsLinksInsert = ManagementWebPropertyAdWordsLinksInsert
+    { _mwpawliWebPropertyId :: !Text
+    , _mwpawliPayload       :: !EntityAdWordsLink
+    , _mwpawliAccountId     :: !Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ManagementWebPropertyAdWordsLinksInsert' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'mwpawliWebPropertyId'
+--
+-- * 'mwpawliPayload'
+--
+-- * 'mwpawliAccountId'
+managementWebPropertyAdWordsLinksInsert
+    :: Text -- ^ 'mwpawliWebPropertyId'
+    -> EntityAdWordsLink -- ^ 'mwpawliPayload'
+    -> Text -- ^ 'mwpawliAccountId'
+    -> ManagementWebPropertyAdWordsLinksInsert
+managementWebPropertyAdWordsLinksInsert pMwpawliWebPropertyId_ pMwpawliPayload_ pMwpawliAccountId_ =
+    ManagementWebPropertyAdWordsLinksInsert
+    { _mwpawliWebPropertyId = pMwpawliWebPropertyId_
+    , _mwpawliPayload = pMwpawliPayload_
+    , _mwpawliAccountId = pMwpawliAccountId_
+    }
+
+-- | Web property ID to create the link for.
+mwpawliWebPropertyId :: Lens' ManagementWebPropertyAdWordsLinksInsert Text
+mwpawliWebPropertyId
+  = lens _mwpawliWebPropertyId
+      (\ s a -> s{_mwpawliWebPropertyId = a})
+
+-- | Multipart request metadata.
+mwpawliPayload :: Lens' ManagementWebPropertyAdWordsLinksInsert EntityAdWordsLink
+mwpawliPayload
+  = lens _mwpawliPayload
+      (\ s a -> s{_mwpawliPayload = a})
+
+-- | ID of the Google Analytics account to create the link for.
+mwpawliAccountId :: Lens' ManagementWebPropertyAdWordsLinksInsert Text
+mwpawliAccountId
+  = lens _mwpawliAccountId
+      (\ s a -> s{_mwpawliAccountId = a})
+
+instance GoogleRequest
+         ManagementWebPropertyAdWordsLinksInsert where
+        type Rs ManagementWebPropertyAdWordsLinksInsert =
+             EntityAdWordsLink
+        requestClient
+          ManagementWebPropertyAdWordsLinksInsert{..}
+          = go _mwpawliAccountId _mwpawliWebPropertyId
+              (Just AltJSON)
+              _mwpawliPayload
+              analyticsService
+          where go
+                  = buildClient
+                      (Proxy ::
+                         Proxy
+                           ManagementWebPropertyAdWordsLinksInsertResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Analytics/Management/WebPropertyAdWordsLinks/List.hs b/gen/Network/Google/Resource/Analytics/Management/WebPropertyAdWordsLinks/List.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Analytics/Management/WebPropertyAdWordsLinks/List.hs
@@ -0,0 +1,138 @@
+{-# 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.Analytics.Management.WebPropertyAdWordsLinks.List
+-- Copyright   : (c) 2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Lists webProperty-AdWords links for a given web property.
+--
+-- /See:/ <https://developers.google.com/analytics/ Google Analytics API Reference> for @analytics.management.webPropertyAdWordsLinks.list@.
+module Network.Google.Resource.Analytics.Management.WebPropertyAdWordsLinks.List
+    (
+    -- * REST Resource
+      ManagementWebPropertyAdWordsLinksListResource
+
+    -- * Creating a Request
+    , managementWebPropertyAdWordsLinksList
+    , ManagementWebPropertyAdWordsLinksList
+
+    -- * Request Lenses
+    , mwpawllWebPropertyId
+    , mwpawllAccountId
+    , mwpawllStartIndex
+    , mwpawllMaxResults
+    ) where
+
+import           Network.Google.Analytics.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @analytics.management.webPropertyAdWordsLinks.list@ method which the
+-- 'ManagementWebPropertyAdWordsLinksList' request conforms to.
+type ManagementWebPropertyAdWordsLinksListResource =
+     "analytics" :>
+       "v3" :>
+         "management" :>
+           "accounts" :>
+             Capture "accountId" Text :>
+               "webproperties" :>
+                 Capture "webPropertyId" Text :>
+                   "entityAdWordsLinks" :>
+                     QueryParam "start-index" (Textual Int32) :>
+                       QueryParam "max-results" (Textual Int32) :>
+                         QueryParam "alt" AltJSON :>
+                           Get '[JSON] EntityAdWordsLinks
+
+-- | Lists webProperty-AdWords links for a given web property.
+--
+-- /See:/ 'managementWebPropertyAdWordsLinksList' smart constructor.
+data ManagementWebPropertyAdWordsLinksList = ManagementWebPropertyAdWordsLinksList
+    { _mwpawllWebPropertyId :: !Text
+    , _mwpawllAccountId     :: !Text
+    , _mwpawllStartIndex    :: !(Maybe (Textual Int32))
+    , _mwpawllMaxResults    :: !(Maybe (Textual Int32))
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ManagementWebPropertyAdWordsLinksList' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'mwpawllWebPropertyId'
+--
+-- * 'mwpawllAccountId'
+--
+-- * 'mwpawllStartIndex'
+--
+-- * 'mwpawllMaxResults'
+managementWebPropertyAdWordsLinksList
+    :: Text -- ^ 'mwpawllWebPropertyId'
+    -> Text -- ^ 'mwpawllAccountId'
+    -> ManagementWebPropertyAdWordsLinksList
+managementWebPropertyAdWordsLinksList pMwpawllWebPropertyId_ pMwpawllAccountId_ =
+    ManagementWebPropertyAdWordsLinksList
+    { _mwpawllWebPropertyId = pMwpawllWebPropertyId_
+    , _mwpawllAccountId = pMwpawllAccountId_
+    , _mwpawllStartIndex = Nothing
+    , _mwpawllMaxResults = Nothing
+    }
+
+-- | Web property ID to retrieve the AdWords links for.
+mwpawllWebPropertyId :: Lens' ManagementWebPropertyAdWordsLinksList Text
+mwpawllWebPropertyId
+  = lens _mwpawllWebPropertyId
+      (\ s a -> s{_mwpawllWebPropertyId = a})
+
+-- | ID of the account which the given web property belongs to.
+mwpawllAccountId :: Lens' ManagementWebPropertyAdWordsLinksList Text
+mwpawllAccountId
+  = lens _mwpawllAccountId
+      (\ s a -> s{_mwpawllAccountId = a})
+
+-- | An index of the first webProperty-AdWords link to retrieve. Use this
+-- parameter as a pagination mechanism along with the max-results
+-- parameter.
+mwpawllStartIndex :: Lens' ManagementWebPropertyAdWordsLinksList (Maybe Int32)
+mwpawllStartIndex
+  = lens _mwpawllStartIndex
+      (\ s a -> s{_mwpawllStartIndex = a})
+      . mapping _Coerce
+
+-- | The maximum number of webProperty-AdWords links to include in this
+-- response.
+mwpawllMaxResults :: Lens' ManagementWebPropertyAdWordsLinksList (Maybe Int32)
+mwpawllMaxResults
+  = lens _mwpawllMaxResults
+      (\ s a -> s{_mwpawllMaxResults = a})
+      . mapping _Coerce
+
+instance GoogleRequest
+         ManagementWebPropertyAdWordsLinksList where
+        type Rs ManagementWebPropertyAdWordsLinksList =
+             EntityAdWordsLinks
+        requestClient
+          ManagementWebPropertyAdWordsLinksList{..}
+          = go _mwpawllAccountId _mwpawllWebPropertyId
+              _mwpawllStartIndex
+              _mwpawllMaxResults
+              (Just AltJSON)
+              analyticsService
+          where go
+                  = buildClient
+                      (Proxy ::
+                         Proxy ManagementWebPropertyAdWordsLinksListResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Analytics/Management/WebPropertyAdWordsLinks/Patch.hs b/gen/Network/Google/Resource/Analytics/Management/WebPropertyAdWordsLinks/Patch.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Analytics/Management/WebPropertyAdWordsLinks/Patch.hs
@@ -0,0 +1,137 @@
+{-# LANGUAGE DataKinds          #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE FlexibleInstances  #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+{-# LANGUAGE TypeOperators      #-}
+
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
+
+-- |
+-- Module      : Network.Google.Resource.Analytics.Management.WebPropertyAdWordsLinks.Patch
+-- Copyright   : (c) 2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Updates an existing webProperty-AdWords link. This method supports patch
+-- semantics.
+--
+-- /See:/ <https://developers.google.com/analytics/ Google Analytics API Reference> for @analytics.management.webPropertyAdWordsLinks.patch@.
+module Network.Google.Resource.Analytics.Management.WebPropertyAdWordsLinks.Patch
+    (
+    -- * REST Resource
+      ManagementWebPropertyAdWordsLinksPatchResource
+
+    -- * Creating a Request
+    , managementWebPropertyAdWordsLinksPatch
+    , ManagementWebPropertyAdWordsLinksPatch
+
+    -- * Request Lenses
+    , mwpawlpWebPropertyId
+    , mwpawlpPayload
+    , mwpawlpAccountId
+    , mwpawlpWebPropertyAdWordsLinkId
+    ) where
+
+import           Network.Google.Analytics.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @analytics.management.webPropertyAdWordsLinks.patch@ method which the
+-- 'ManagementWebPropertyAdWordsLinksPatch' request conforms to.
+type ManagementWebPropertyAdWordsLinksPatchResource =
+     "analytics" :>
+       "v3" :>
+         "management" :>
+           "accounts" :>
+             Capture "accountId" Text :>
+               "webproperties" :>
+                 Capture "webPropertyId" Text :>
+                   "entityAdWordsLinks" :>
+                     Capture "webPropertyAdWordsLinkId" Text :>
+                       QueryParam "alt" AltJSON :>
+                         ReqBody '[JSON] EntityAdWordsLink :>
+                           Patch '[JSON] EntityAdWordsLink
+
+-- | Updates an existing webProperty-AdWords link. This method supports patch
+-- semantics.
+--
+-- /See:/ 'managementWebPropertyAdWordsLinksPatch' smart constructor.
+data ManagementWebPropertyAdWordsLinksPatch = ManagementWebPropertyAdWordsLinksPatch
+    { _mwpawlpWebPropertyId            :: !Text
+    , _mwpawlpPayload                  :: !EntityAdWordsLink
+    , _mwpawlpAccountId                :: !Text
+    , _mwpawlpWebPropertyAdWordsLinkId :: !Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ManagementWebPropertyAdWordsLinksPatch' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'mwpawlpWebPropertyId'
+--
+-- * 'mwpawlpPayload'
+--
+-- * 'mwpawlpAccountId'
+--
+-- * 'mwpawlpWebPropertyAdWordsLinkId'
+managementWebPropertyAdWordsLinksPatch
+    :: Text -- ^ 'mwpawlpWebPropertyId'
+    -> EntityAdWordsLink -- ^ 'mwpawlpPayload'
+    -> Text -- ^ 'mwpawlpAccountId'
+    -> Text -- ^ 'mwpawlpWebPropertyAdWordsLinkId'
+    -> ManagementWebPropertyAdWordsLinksPatch
+managementWebPropertyAdWordsLinksPatch pMwpawlpWebPropertyId_ pMwpawlpPayload_ pMwpawlpAccountId_ pMwpawlpWebPropertyAdWordsLinkId_ =
+    ManagementWebPropertyAdWordsLinksPatch
+    { _mwpawlpWebPropertyId = pMwpawlpWebPropertyId_
+    , _mwpawlpPayload = pMwpawlpPayload_
+    , _mwpawlpAccountId = pMwpawlpAccountId_
+    , _mwpawlpWebPropertyAdWordsLinkId = pMwpawlpWebPropertyAdWordsLinkId_
+    }
+
+-- | Web property ID to retrieve the AdWords link for.
+mwpawlpWebPropertyId :: Lens' ManagementWebPropertyAdWordsLinksPatch Text
+mwpawlpWebPropertyId
+  = lens _mwpawlpWebPropertyId
+      (\ s a -> s{_mwpawlpWebPropertyId = a})
+
+-- | Multipart request metadata.
+mwpawlpPayload :: Lens' ManagementWebPropertyAdWordsLinksPatch EntityAdWordsLink
+mwpawlpPayload
+  = lens _mwpawlpPayload
+      (\ s a -> s{_mwpawlpPayload = a})
+
+-- | ID of the account which the given web property belongs to.
+mwpawlpAccountId :: Lens' ManagementWebPropertyAdWordsLinksPatch Text
+mwpawlpAccountId
+  = lens _mwpawlpAccountId
+      (\ s a -> s{_mwpawlpAccountId = a})
+
+-- | Web property-AdWords link ID.
+mwpawlpWebPropertyAdWordsLinkId :: Lens' ManagementWebPropertyAdWordsLinksPatch Text
+mwpawlpWebPropertyAdWordsLinkId
+  = lens _mwpawlpWebPropertyAdWordsLinkId
+      (\ s a -> s{_mwpawlpWebPropertyAdWordsLinkId = a})
+
+instance GoogleRequest
+         ManagementWebPropertyAdWordsLinksPatch where
+        type Rs ManagementWebPropertyAdWordsLinksPatch =
+             EntityAdWordsLink
+        requestClient
+          ManagementWebPropertyAdWordsLinksPatch{..}
+          = go _mwpawlpAccountId _mwpawlpWebPropertyId
+              _mwpawlpWebPropertyAdWordsLinkId
+              (Just AltJSON)
+              _mwpawlpPayload
+              analyticsService
+          where go
+                  = buildClient
+                      (Proxy ::
+                         Proxy ManagementWebPropertyAdWordsLinksPatchResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Analytics/Management/WebPropertyAdWordsLinks/Update.hs b/gen/Network/Google/Resource/Analytics/Management/WebPropertyAdWordsLinks/Update.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Analytics/Management/WebPropertyAdWordsLinks/Update.hs
@@ -0,0 +1,137 @@
+{-# LANGUAGE DataKinds          #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE FlexibleInstances  #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+{-# LANGUAGE TypeOperators      #-}
+
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
+
+-- |
+-- Module      : Network.Google.Resource.Analytics.Management.WebPropertyAdWordsLinks.Update
+-- Copyright   : (c) 2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Updates an existing webProperty-AdWords link.
+--
+-- /See:/ <https://developers.google.com/analytics/ Google Analytics API Reference> for @analytics.management.webPropertyAdWordsLinks.update@.
+module Network.Google.Resource.Analytics.Management.WebPropertyAdWordsLinks.Update
+    (
+    -- * REST Resource
+      ManagementWebPropertyAdWordsLinksUpdateResource
+
+    -- * Creating a Request
+    , managementWebPropertyAdWordsLinksUpdate
+    , ManagementWebPropertyAdWordsLinksUpdate
+
+    -- * Request Lenses
+    , mwpawluWebPropertyId
+    , mwpawluPayload
+    , mwpawluAccountId
+    , mwpawluWebPropertyAdWordsLinkId
+    ) where
+
+import           Network.Google.Analytics.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @analytics.management.webPropertyAdWordsLinks.update@ method which the
+-- 'ManagementWebPropertyAdWordsLinksUpdate' request conforms to.
+type ManagementWebPropertyAdWordsLinksUpdateResource
+     =
+     "analytics" :>
+       "v3" :>
+         "management" :>
+           "accounts" :>
+             Capture "accountId" Text :>
+               "webproperties" :>
+                 Capture "webPropertyId" Text :>
+                   "entityAdWordsLinks" :>
+                     Capture "webPropertyAdWordsLinkId" Text :>
+                       QueryParam "alt" AltJSON :>
+                         ReqBody '[JSON] EntityAdWordsLink :>
+                           Put '[JSON] EntityAdWordsLink
+
+-- | Updates an existing webProperty-AdWords link.
+--
+-- /See:/ 'managementWebPropertyAdWordsLinksUpdate' smart constructor.
+data ManagementWebPropertyAdWordsLinksUpdate = ManagementWebPropertyAdWordsLinksUpdate
+    { _mwpawluWebPropertyId            :: !Text
+    , _mwpawluPayload                  :: !EntityAdWordsLink
+    , _mwpawluAccountId                :: !Text
+    , _mwpawluWebPropertyAdWordsLinkId :: !Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ManagementWebPropertyAdWordsLinksUpdate' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'mwpawluWebPropertyId'
+--
+-- * 'mwpawluPayload'
+--
+-- * 'mwpawluAccountId'
+--
+-- * 'mwpawluWebPropertyAdWordsLinkId'
+managementWebPropertyAdWordsLinksUpdate
+    :: Text -- ^ 'mwpawluWebPropertyId'
+    -> EntityAdWordsLink -- ^ 'mwpawluPayload'
+    -> Text -- ^ 'mwpawluAccountId'
+    -> Text -- ^ 'mwpawluWebPropertyAdWordsLinkId'
+    -> ManagementWebPropertyAdWordsLinksUpdate
+managementWebPropertyAdWordsLinksUpdate pMwpawluWebPropertyId_ pMwpawluPayload_ pMwpawluAccountId_ pMwpawluWebPropertyAdWordsLinkId_ =
+    ManagementWebPropertyAdWordsLinksUpdate
+    { _mwpawluWebPropertyId = pMwpawluWebPropertyId_
+    , _mwpawluPayload = pMwpawluPayload_
+    , _mwpawluAccountId = pMwpawluAccountId_
+    , _mwpawluWebPropertyAdWordsLinkId = pMwpawluWebPropertyAdWordsLinkId_
+    }
+
+-- | Web property ID to retrieve the AdWords link for.
+mwpawluWebPropertyId :: Lens' ManagementWebPropertyAdWordsLinksUpdate Text
+mwpawluWebPropertyId
+  = lens _mwpawluWebPropertyId
+      (\ s a -> s{_mwpawluWebPropertyId = a})
+
+-- | Multipart request metadata.
+mwpawluPayload :: Lens' ManagementWebPropertyAdWordsLinksUpdate EntityAdWordsLink
+mwpawluPayload
+  = lens _mwpawluPayload
+      (\ s a -> s{_mwpawluPayload = a})
+
+-- | ID of the account which the given web property belongs to.
+mwpawluAccountId :: Lens' ManagementWebPropertyAdWordsLinksUpdate Text
+mwpawluAccountId
+  = lens _mwpawluAccountId
+      (\ s a -> s{_mwpawluAccountId = a})
+
+-- | Web property-AdWords link ID.
+mwpawluWebPropertyAdWordsLinkId :: Lens' ManagementWebPropertyAdWordsLinksUpdate Text
+mwpawluWebPropertyAdWordsLinkId
+  = lens _mwpawluWebPropertyAdWordsLinkId
+      (\ s a -> s{_mwpawluWebPropertyAdWordsLinkId = a})
+
+instance GoogleRequest
+         ManagementWebPropertyAdWordsLinksUpdate where
+        type Rs ManagementWebPropertyAdWordsLinksUpdate =
+             EntityAdWordsLink
+        requestClient
+          ManagementWebPropertyAdWordsLinksUpdate{..}
+          = go _mwpawluAccountId _mwpawluWebPropertyId
+              _mwpawluWebPropertyAdWordsLinkId
+              (Just AltJSON)
+              _mwpawluPayload
+              analyticsService
+          where go
+                  = buildClient
+                      (Proxy ::
+                         Proxy
+                           ManagementWebPropertyAdWordsLinksUpdateResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Analytics/Management/WebPropertyUserLinks/Delete.hs b/gen/Network/Google/Resource/Analytics/Management/WebPropertyUserLinks/Delete.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Analytics/Management/WebPropertyUserLinks/Delete.hs
@@ -0,0 +1,118 @@
+{-# 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.Analytics.Management.WebPropertyUserLinks.Delete
+-- Copyright   : (c) 2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Removes a user from the given web property.
+--
+-- /See:/ <https://developers.google.com/analytics/ Google Analytics API Reference> for @analytics.management.webpropertyUserLinks.delete@.
+module Network.Google.Resource.Analytics.Management.WebPropertyUserLinks.Delete
+    (
+    -- * REST Resource
+      ManagementWebPropertyUserLinksDeleteResource
+
+    -- * Creating a Request
+    , managementWebPropertyUserLinksDelete
+    , ManagementWebPropertyUserLinksDelete
+
+    -- * Request Lenses
+    , mwpuldWebPropertyId
+    , mwpuldAccountId
+    , mwpuldLinkId
+    ) where
+
+import           Network.Google.Analytics.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @analytics.management.webpropertyUserLinks.delete@ method which the
+-- 'ManagementWebPropertyUserLinksDelete' request conforms to.
+type ManagementWebPropertyUserLinksDeleteResource =
+     "analytics" :>
+       "v3" :>
+         "management" :>
+           "accounts" :>
+             Capture "accountId" Text :>
+               "webproperties" :>
+                 Capture "webPropertyId" Text :>
+                   "entityUserLinks" :>
+                     Capture "linkId" Text :>
+                       QueryParam "alt" AltJSON :> Delete '[JSON] ()
+
+-- | Removes a user from the given web property.
+--
+-- /See:/ 'managementWebPropertyUserLinksDelete' smart constructor.
+data ManagementWebPropertyUserLinksDelete = ManagementWebPropertyUserLinksDelete
+    { _mwpuldWebPropertyId :: !Text
+    , _mwpuldAccountId     :: !Text
+    , _mwpuldLinkId        :: !Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ManagementWebPropertyUserLinksDelete' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'mwpuldWebPropertyId'
+--
+-- * 'mwpuldAccountId'
+--
+-- * 'mwpuldLinkId'
+managementWebPropertyUserLinksDelete
+    :: Text -- ^ 'mwpuldWebPropertyId'
+    -> Text -- ^ 'mwpuldAccountId'
+    -> Text -- ^ 'mwpuldLinkId'
+    -> ManagementWebPropertyUserLinksDelete
+managementWebPropertyUserLinksDelete pMwpuldWebPropertyId_ pMwpuldAccountId_ pMwpuldLinkId_ =
+    ManagementWebPropertyUserLinksDelete
+    { _mwpuldWebPropertyId = pMwpuldWebPropertyId_
+    , _mwpuldAccountId = pMwpuldAccountId_
+    , _mwpuldLinkId = pMwpuldLinkId_
+    }
+
+-- | Web Property ID to delete the user link for.
+mwpuldWebPropertyId :: Lens' ManagementWebPropertyUserLinksDelete Text
+mwpuldWebPropertyId
+  = lens _mwpuldWebPropertyId
+      (\ s a -> s{_mwpuldWebPropertyId = a})
+
+-- | Account ID to delete the user link for.
+mwpuldAccountId :: Lens' ManagementWebPropertyUserLinksDelete Text
+mwpuldAccountId
+  = lens _mwpuldAccountId
+      (\ s a -> s{_mwpuldAccountId = a})
+
+-- | Link ID to delete the user link for.
+mwpuldLinkId :: Lens' ManagementWebPropertyUserLinksDelete Text
+mwpuldLinkId
+  = lens _mwpuldLinkId (\ s a -> s{_mwpuldLinkId = a})
+
+instance GoogleRequest
+         ManagementWebPropertyUserLinksDelete where
+        type Rs ManagementWebPropertyUserLinksDelete = ()
+        requestClient
+          ManagementWebPropertyUserLinksDelete{..}
+          = go _mwpuldAccountId _mwpuldWebPropertyId
+              _mwpuldLinkId
+              (Just AltJSON)
+              analyticsService
+          where go
+                  = buildClient
+                      (Proxy ::
+                         Proxy ManagementWebPropertyUserLinksDeleteResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Analytics/Management/WebPropertyUserLinks/Insert.hs b/gen/Network/Google/Resource/Analytics/Management/WebPropertyUserLinks/Insert.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Analytics/Management/WebPropertyUserLinks/Insert.hs
@@ -0,0 +1,121 @@
+{-# LANGUAGE DataKinds          #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE FlexibleInstances  #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+{-# LANGUAGE TypeOperators      #-}
+
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
+
+-- |
+-- Module      : Network.Google.Resource.Analytics.Management.WebPropertyUserLinks.Insert
+-- Copyright   : (c) 2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Adds a new user to the given web property.
+--
+-- /See:/ <https://developers.google.com/analytics/ Google Analytics API Reference> for @analytics.management.webpropertyUserLinks.insert@.
+module Network.Google.Resource.Analytics.Management.WebPropertyUserLinks.Insert
+    (
+    -- * REST Resource
+      ManagementWebPropertyUserLinksInsertResource
+
+    -- * Creating a Request
+    , managementWebPropertyUserLinksInsert
+    , ManagementWebPropertyUserLinksInsert
+
+    -- * Request Lenses
+    , mwpuliWebPropertyId
+    , mwpuliPayload
+    , mwpuliAccountId
+    ) where
+
+import           Network.Google.Analytics.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @analytics.management.webpropertyUserLinks.insert@ method which the
+-- 'ManagementWebPropertyUserLinksInsert' request conforms to.
+type ManagementWebPropertyUserLinksInsertResource =
+     "analytics" :>
+       "v3" :>
+         "management" :>
+           "accounts" :>
+             Capture "accountId" Text :>
+               "webproperties" :>
+                 Capture "webPropertyId" Text :>
+                   "entityUserLinks" :>
+                     QueryParam "alt" AltJSON :>
+                       ReqBody '[JSON] EntityUserLink :>
+                         Post '[JSON] EntityUserLink
+
+-- | Adds a new user to the given web property.
+--
+-- /See:/ 'managementWebPropertyUserLinksInsert' smart constructor.
+data ManagementWebPropertyUserLinksInsert = ManagementWebPropertyUserLinksInsert
+    { _mwpuliWebPropertyId :: !Text
+    , _mwpuliPayload       :: !EntityUserLink
+    , _mwpuliAccountId     :: !Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ManagementWebPropertyUserLinksInsert' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'mwpuliWebPropertyId'
+--
+-- * 'mwpuliPayload'
+--
+-- * 'mwpuliAccountId'
+managementWebPropertyUserLinksInsert
+    :: Text -- ^ 'mwpuliWebPropertyId'
+    -> EntityUserLink -- ^ 'mwpuliPayload'
+    -> Text -- ^ 'mwpuliAccountId'
+    -> ManagementWebPropertyUserLinksInsert
+managementWebPropertyUserLinksInsert pMwpuliWebPropertyId_ pMwpuliPayload_ pMwpuliAccountId_ =
+    ManagementWebPropertyUserLinksInsert
+    { _mwpuliWebPropertyId = pMwpuliWebPropertyId_
+    , _mwpuliPayload = pMwpuliPayload_
+    , _mwpuliAccountId = pMwpuliAccountId_
+    }
+
+-- | Web Property ID to create the user link for.
+mwpuliWebPropertyId :: Lens' ManagementWebPropertyUserLinksInsert Text
+mwpuliWebPropertyId
+  = lens _mwpuliWebPropertyId
+      (\ s a -> s{_mwpuliWebPropertyId = a})
+
+-- | Multipart request metadata.
+mwpuliPayload :: Lens' ManagementWebPropertyUserLinksInsert EntityUserLink
+mwpuliPayload
+  = lens _mwpuliPayload
+      (\ s a -> s{_mwpuliPayload = a})
+
+-- | Account ID to create the user link for.
+mwpuliAccountId :: Lens' ManagementWebPropertyUserLinksInsert Text
+mwpuliAccountId
+  = lens _mwpuliAccountId
+      (\ s a -> s{_mwpuliAccountId = a})
+
+instance GoogleRequest
+         ManagementWebPropertyUserLinksInsert where
+        type Rs ManagementWebPropertyUserLinksInsert =
+             EntityUserLink
+        requestClient
+          ManagementWebPropertyUserLinksInsert{..}
+          = go _mwpuliAccountId _mwpuliWebPropertyId
+              (Just AltJSON)
+              _mwpuliPayload
+              analyticsService
+          where go
+                  = buildClient
+                      (Proxy ::
+                         Proxy ManagementWebPropertyUserLinksInsertResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Analytics/Management/WebPropertyUserLinks/List.hs b/gen/Network/Google/Resource/Analytics/Management/WebPropertyUserLinks/List.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Analytics/Management/WebPropertyUserLinks/List.hs
@@ -0,0 +1,139 @@
+{-# 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.Analytics.Management.WebPropertyUserLinks.List
+-- Copyright   : (c) 2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Lists webProperty-user links for a given web property.
+--
+-- /See:/ <https://developers.google.com/analytics/ Google Analytics API Reference> for @analytics.management.webpropertyUserLinks.list@.
+module Network.Google.Resource.Analytics.Management.WebPropertyUserLinks.List
+    (
+    -- * REST Resource
+      ManagementWebPropertyUserLinksListResource
+
+    -- * Creating a Request
+    , managementWebPropertyUserLinksList
+    , ManagementWebPropertyUserLinksList
+
+    -- * Request Lenses
+    , mwpullWebPropertyId
+    , mwpullAccountId
+    , mwpullStartIndex
+    , mwpullMaxResults
+    ) where
+
+import           Network.Google.Analytics.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @analytics.management.webpropertyUserLinks.list@ method which the
+-- 'ManagementWebPropertyUserLinksList' request conforms to.
+type ManagementWebPropertyUserLinksListResource =
+     "analytics" :>
+       "v3" :>
+         "management" :>
+           "accounts" :>
+             Capture "accountId" Text :>
+               "webproperties" :>
+                 Capture "webPropertyId" Text :>
+                   "entityUserLinks" :>
+                     QueryParam "start-index" (Textual Int32) :>
+                       QueryParam "max-results" (Textual Int32) :>
+                         QueryParam "alt" AltJSON :>
+                           Get '[JSON] EntityUserLinks
+
+-- | Lists webProperty-user links for a given web property.
+--
+-- /See:/ 'managementWebPropertyUserLinksList' smart constructor.
+data ManagementWebPropertyUserLinksList = ManagementWebPropertyUserLinksList
+    { _mwpullWebPropertyId :: !Text
+    , _mwpullAccountId     :: !Text
+    , _mwpullStartIndex    :: !(Maybe (Textual Int32))
+    , _mwpullMaxResults    :: !(Maybe (Textual Int32))
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ManagementWebPropertyUserLinksList' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'mwpullWebPropertyId'
+--
+-- * 'mwpullAccountId'
+--
+-- * 'mwpullStartIndex'
+--
+-- * 'mwpullMaxResults'
+managementWebPropertyUserLinksList
+    :: Text -- ^ 'mwpullWebPropertyId'
+    -> Text -- ^ 'mwpullAccountId'
+    -> ManagementWebPropertyUserLinksList
+managementWebPropertyUserLinksList pMwpullWebPropertyId_ pMwpullAccountId_ =
+    ManagementWebPropertyUserLinksList
+    { _mwpullWebPropertyId = pMwpullWebPropertyId_
+    , _mwpullAccountId = pMwpullAccountId_
+    , _mwpullStartIndex = Nothing
+    , _mwpullMaxResults = Nothing
+    }
+
+-- | Web Property ID for the webProperty-user links to retrieve. Can either
+-- be a specific web property ID or \'~all\', which refers to all the web
+-- properties that user has access to.
+mwpullWebPropertyId :: Lens' ManagementWebPropertyUserLinksList Text
+mwpullWebPropertyId
+  = lens _mwpullWebPropertyId
+      (\ s a -> s{_mwpullWebPropertyId = a})
+
+-- | Account ID which the given web property belongs to.
+mwpullAccountId :: Lens' ManagementWebPropertyUserLinksList Text
+mwpullAccountId
+  = lens _mwpullAccountId
+      (\ s a -> s{_mwpullAccountId = a})
+
+-- | An index of the first webProperty-user link to retrieve. Use this
+-- parameter as a pagination mechanism along with the max-results
+-- parameter.
+mwpullStartIndex :: Lens' ManagementWebPropertyUserLinksList (Maybe Int32)
+mwpullStartIndex
+  = lens _mwpullStartIndex
+      (\ s a -> s{_mwpullStartIndex = a})
+      . mapping _Coerce
+
+-- | The maximum number of webProperty-user Links to include in this
+-- response.
+mwpullMaxResults :: Lens' ManagementWebPropertyUserLinksList (Maybe Int32)
+mwpullMaxResults
+  = lens _mwpullMaxResults
+      (\ s a -> s{_mwpullMaxResults = a})
+      . mapping _Coerce
+
+instance GoogleRequest
+         ManagementWebPropertyUserLinksList where
+        type Rs ManagementWebPropertyUserLinksList =
+             EntityUserLinks
+        requestClient ManagementWebPropertyUserLinksList{..}
+          = go _mwpullAccountId _mwpullWebPropertyId
+              _mwpullStartIndex
+              _mwpullMaxResults
+              (Just AltJSON)
+              analyticsService
+          where go
+                  = buildClient
+                      (Proxy ::
+                         Proxy ManagementWebPropertyUserLinksListResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Analytics/Management/WebPropertyUserLinks/Update.hs b/gen/Network/Google/Resource/Analytics/Management/WebPropertyUserLinks/Update.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Analytics/Management/WebPropertyUserLinks/Update.hs
@@ -0,0 +1,134 @@
+{-# 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.Analytics.Management.WebPropertyUserLinks.Update
+-- Copyright   : (c) 2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Updates permissions for an existing user on the given web property.
+--
+-- /See:/ <https://developers.google.com/analytics/ Google Analytics API Reference> for @analytics.management.webpropertyUserLinks.update@.
+module Network.Google.Resource.Analytics.Management.WebPropertyUserLinks.Update
+    (
+    -- * REST Resource
+      ManagementWebPropertyUserLinksUpdateResource
+
+    -- * Creating a Request
+    , managementWebPropertyUserLinksUpdate
+    , ManagementWebPropertyUserLinksUpdate
+
+    -- * Request Lenses
+    , mwpuluWebPropertyId
+    , mwpuluPayload
+    , mwpuluAccountId
+    , mwpuluLinkId
+    ) where
+
+import           Network.Google.Analytics.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @analytics.management.webpropertyUserLinks.update@ method which the
+-- 'ManagementWebPropertyUserLinksUpdate' request conforms to.
+type ManagementWebPropertyUserLinksUpdateResource =
+     "analytics" :>
+       "v3" :>
+         "management" :>
+           "accounts" :>
+             Capture "accountId" Text :>
+               "webproperties" :>
+                 Capture "webPropertyId" Text :>
+                   "entityUserLinks" :>
+                     Capture "linkId" Text :>
+                       QueryParam "alt" AltJSON :>
+                         ReqBody '[JSON] EntityUserLink :>
+                           Put '[JSON] EntityUserLink
+
+-- | Updates permissions for an existing user on the given web property.
+--
+-- /See:/ 'managementWebPropertyUserLinksUpdate' smart constructor.
+data ManagementWebPropertyUserLinksUpdate = ManagementWebPropertyUserLinksUpdate
+    { _mwpuluWebPropertyId :: !Text
+    , _mwpuluPayload       :: !EntityUserLink
+    , _mwpuluAccountId     :: !Text
+    , _mwpuluLinkId        :: !Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ManagementWebPropertyUserLinksUpdate' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'mwpuluWebPropertyId'
+--
+-- * 'mwpuluPayload'
+--
+-- * 'mwpuluAccountId'
+--
+-- * 'mwpuluLinkId'
+managementWebPropertyUserLinksUpdate
+    :: Text -- ^ 'mwpuluWebPropertyId'
+    -> EntityUserLink -- ^ 'mwpuluPayload'
+    -> Text -- ^ 'mwpuluAccountId'
+    -> Text -- ^ 'mwpuluLinkId'
+    -> ManagementWebPropertyUserLinksUpdate
+managementWebPropertyUserLinksUpdate pMwpuluWebPropertyId_ pMwpuluPayload_ pMwpuluAccountId_ pMwpuluLinkId_ =
+    ManagementWebPropertyUserLinksUpdate
+    { _mwpuluWebPropertyId = pMwpuluWebPropertyId_
+    , _mwpuluPayload = pMwpuluPayload_
+    , _mwpuluAccountId = pMwpuluAccountId_
+    , _mwpuluLinkId = pMwpuluLinkId_
+    }
+
+-- | Web property ID to update the account-user link for.
+mwpuluWebPropertyId :: Lens' ManagementWebPropertyUserLinksUpdate Text
+mwpuluWebPropertyId
+  = lens _mwpuluWebPropertyId
+      (\ s a -> s{_mwpuluWebPropertyId = a})
+
+-- | Multipart request metadata.
+mwpuluPayload :: Lens' ManagementWebPropertyUserLinksUpdate EntityUserLink
+mwpuluPayload
+  = lens _mwpuluPayload
+      (\ s a -> s{_mwpuluPayload = a})
+
+-- | Account ID to update the account-user link for.
+mwpuluAccountId :: Lens' ManagementWebPropertyUserLinksUpdate Text
+mwpuluAccountId
+  = lens _mwpuluAccountId
+      (\ s a -> s{_mwpuluAccountId = a})
+
+-- | Link ID to update the account-user link for.
+mwpuluLinkId :: Lens' ManagementWebPropertyUserLinksUpdate Text
+mwpuluLinkId
+  = lens _mwpuluLinkId (\ s a -> s{_mwpuluLinkId = a})
+
+instance GoogleRequest
+         ManagementWebPropertyUserLinksUpdate where
+        type Rs ManagementWebPropertyUserLinksUpdate =
+             EntityUserLink
+        requestClient
+          ManagementWebPropertyUserLinksUpdate{..}
+          = go _mwpuluAccountId _mwpuluWebPropertyId
+              _mwpuluLinkId
+              (Just AltJSON)
+              _mwpuluPayload
+              analyticsService
+          where go
+                  = buildClient
+                      (Proxy ::
+                         Proxy ManagementWebPropertyUserLinksUpdateResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Analytics/Metadata/Columns/List.hs b/gen/Network/Google/Resource/Analytics/Metadata/Columns/List.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Analytics/Metadata/Columns/List.hs
@@ -0,0 +1,86 @@
+{-# 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.Analytics.Metadata.Columns.List
+-- Copyright   : (c) 2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Lists all columns for a report type
+--
+-- /See:/ <https://developers.google.com/analytics/ Google Analytics API Reference> for @analytics.metadata.columns.list@.
+module Network.Google.Resource.Analytics.Metadata.Columns.List
+    (
+    -- * REST Resource
+      MetadataColumnsListResource
+
+    -- * Creating a Request
+    , metadataColumnsList
+    , MetadataColumnsList
+
+    -- * Request Lenses
+    , mclReportType
+    ) where
+
+import           Network.Google.Analytics.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @analytics.metadata.columns.list@ method which the
+-- 'MetadataColumnsList' request conforms to.
+type MetadataColumnsListResource =
+     "analytics" :>
+       "v3" :>
+         "metadata" :>
+           Capture "reportType" Text :>
+             "columns" :>
+               QueryParam "alt" AltJSON :> Get '[JSON] Columns
+
+-- | Lists all columns for a report type
+--
+-- /See:/ 'metadataColumnsList' smart constructor.
+newtype MetadataColumnsList = MetadataColumnsList
+    { _mclReportType :: Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'MetadataColumnsList' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'mclReportType'
+metadataColumnsList
+    :: Text -- ^ 'mclReportType'
+    -> MetadataColumnsList
+metadataColumnsList pMclReportType_ =
+    MetadataColumnsList
+    { _mclReportType = pMclReportType_
+    }
+
+-- | Report type. Allowed Values: \'ga\'. Where \'ga\' corresponds to the
+-- Core Reporting API
+mclReportType :: Lens' MetadataColumnsList Text
+mclReportType
+  = lens _mclReportType
+      (\ s a -> s{_mclReportType = a})
+
+instance GoogleRequest MetadataColumnsList where
+        type Rs MetadataColumnsList = Columns
+        requestClient MetadataColumnsList{..}
+          = go _mclReportType (Just AltJSON) analyticsService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy MetadataColumnsListResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Analytics/Provisioning/CreateAccountTicket.hs b/gen/Network/Google/Resource/Analytics/Provisioning/CreateAccountTicket.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Analytics/Provisioning/CreateAccountTicket.hs
@@ -0,0 +1,88 @@
+{-# 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.Analytics.Provisioning.CreateAccountTicket
+-- Copyright   : (c) 2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Creates an account ticket.
+--
+-- /See:/ <https://developers.google.com/analytics/ Google Analytics API Reference> for @analytics.provisioning.createAccountTicket@.
+module Network.Google.Resource.Analytics.Provisioning.CreateAccountTicket
+    (
+    -- * REST Resource
+      ProvisioningCreateAccountTicketResource
+
+    -- * Creating a Request
+    , provisioningCreateAccountTicket
+    , ProvisioningCreateAccountTicket
+
+    -- * Request Lenses
+    , pcatPayload
+    ) where
+
+import           Network.Google.Analytics.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @analytics.provisioning.createAccountTicket@ method which the
+-- 'ProvisioningCreateAccountTicket' request conforms to.
+type ProvisioningCreateAccountTicketResource =
+     "analytics" :>
+       "v3" :>
+         "provisioning" :>
+           "createAccountTicket" :>
+             QueryParam "alt" AltJSON :>
+               ReqBody '[JSON] AccountTicket :>
+                 Post '[JSON] AccountTicket
+
+-- | Creates an account ticket.
+--
+-- /See:/ 'provisioningCreateAccountTicket' smart constructor.
+newtype ProvisioningCreateAccountTicket = ProvisioningCreateAccountTicket
+    { _pcatPayload :: AccountTicket
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ProvisioningCreateAccountTicket' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'pcatPayload'
+provisioningCreateAccountTicket
+    :: AccountTicket -- ^ 'pcatPayload'
+    -> ProvisioningCreateAccountTicket
+provisioningCreateAccountTicket pPcatPayload_ =
+    ProvisioningCreateAccountTicket
+    { _pcatPayload = pPcatPayload_
+    }
+
+-- | Multipart request metadata.
+pcatPayload :: Lens' ProvisioningCreateAccountTicket AccountTicket
+pcatPayload
+  = lens _pcatPayload (\ s a -> s{_pcatPayload = a})
+
+instance GoogleRequest
+         ProvisioningCreateAccountTicket where
+        type Rs ProvisioningCreateAccountTicket =
+             AccountTicket
+        requestClient ProvisioningCreateAccountTicket{..}
+          = go (Just AltJSON) _pcatPayload analyticsService
+          where go
+                  = buildClient
+                      (Proxy ::
+                         Proxy ProvisioningCreateAccountTicketResource)
+                      mempty
diff --git a/gogol-analytics.cabal b/gogol-analytics.cabal
new file mode 100644
--- /dev/null
+++ b/gogol-analytics.cabal
@@ -0,0 +1,123 @@
+name:                  gogol-analytics
+version:               0.0.1
+synopsis:              Google Analytics SDK.
+homepage:              https://github.com/brendanhay/gogol
+bug-reports:           https://github.com/brendanhay/gogol/issues
+license:               OtherLicense
+license-file:          LICENSE
+author:                Brendan Hay
+maintainer:            Brendan Hay <brendan.g.hay@gmail.com>
+copyright:             Copyright (c) 2015 Brendan Hay
+category:              Network, Google, Cloud
+build-type:            Simple
+cabal-version:         >= 1.10
+extra-source-files:    README.md
+
+description:
+    View and manage your Google Analytics data
+    .
+    /Warning:/ This is an experimental prototype/preview release which is still
+    under exploratory development and not intended for public use, caveat emptor!
+    .
+    This library is compatible with version @v3@
+    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.Analytics
+        , Network.Google.Analytics.Types
+        , Network.Google.Resource.Analytics.Data.Ga.Get
+        , Network.Google.Resource.Analytics.Data.Mcf.Get
+        , Network.Google.Resource.Analytics.Data.Realtime.Get
+        , Network.Google.Resource.Analytics.Management.AccountSummaries.List
+        , Network.Google.Resource.Analytics.Management.AccountUserLinks.Delete
+        , Network.Google.Resource.Analytics.Management.AccountUserLinks.Insert
+        , Network.Google.Resource.Analytics.Management.AccountUserLinks.List
+        , Network.Google.Resource.Analytics.Management.AccountUserLinks.Update
+        , Network.Google.Resource.Analytics.Management.Accounts.List
+        , Network.Google.Resource.Analytics.Management.CustomDataSources.List
+        , Network.Google.Resource.Analytics.Management.CustomDimensions.Get
+        , Network.Google.Resource.Analytics.Management.CustomDimensions.Insert
+        , Network.Google.Resource.Analytics.Management.CustomDimensions.List
+        , Network.Google.Resource.Analytics.Management.CustomDimensions.Patch
+        , Network.Google.Resource.Analytics.Management.CustomDimensions.Update
+        , Network.Google.Resource.Analytics.Management.CustomMetrics.Get
+        , Network.Google.Resource.Analytics.Management.CustomMetrics.Insert
+        , Network.Google.Resource.Analytics.Management.CustomMetrics.List
+        , Network.Google.Resource.Analytics.Management.CustomMetrics.Patch
+        , Network.Google.Resource.Analytics.Management.CustomMetrics.Update
+        , Network.Google.Resource.Analytics.Management.Experiments.Delete
+        , Network.Google.Resource.Analytics.Management.Experiments.Get
+        , Network.Google.Resource.Analytics.Management.Experiments.Insert
+        , Network.Google.Resource.Analytics.Management.Experiments.List
+        , Network.Google.Resource.Analytics.Management.Experiments.Patch
+        , Network.Google.Resource.Analytics.Management.Experiments.Update
+        , Network.Google.Resource.Analytics.Management.Filters.Delete
+        , Network.Google.Resource.Analytics.Management.Filters.Get
+        , Network.Google.Resource.Analytics.Management.Filters.Insert
+        , Network.Google.Resource.Analytics.Management.Filters.List
+        , Network.Google.Resource.Analytics.Management.Filters.Patch
+        , Network.Google.Resource.Analytics.Management.Filters.Update
+        , Network.Google.Resource.Analytics.Management.Goals.Get
+        , Network.Google.Resource.Analytics.Management.Goals.Insert
+        , Network.Google.Resource.Analytics.Management.Goals.List
+        , Network.Google.Resource.Analytics.Management.Goals.Patch
+        , Network.Google.Resource.Analytics.Management.Goals.Update
+        , Network.Google.Resource.Analytics.Management.ProFileFilterLinks.Delete
+        , Network.Google.Resource.Analytics.Management.ProFileFilterLinks.Get
+        , Network.Google.Resource.Analytics.Management.ProFileFilterLinks.Insert
+        , Network.Google.Resource.Analytics.Management.ProFileFilterLinks.List
+        , Network.Google.Resource.Analytics.Management.ProFileFilterLinks.Patch
+        , Network.Google.Resource.Analytics.Management.ProFileFilterLinks.Update
+        , Network.Google.Resource.Analytics.Management.ProFileUserLinks.Delete
+        , Network.Google.Resource.Analytics.Management.ProFileUserLinks.Insert
+        , Network.Google.Resource.Analytics.Management.ProFileUserLinks.List
+        , Network.Google.Resource.Analytics.Management.ProFileUserLinks.Update
+        , Network.Google.Resource.Analytics.Management.ProFiles.Delete
+        , Network.Google.Resource.Analytics.Management.ProFiles.Get
+        , Network.Google.Resource.Analytics.Management.ProFiles.Insert
+        , Network.Google.Resource.Analytics.Management.ProFiles.List
+        , Network.Google.Resource.Analytics.Management.ProFiles.Patch
+        , Network.Google.Resource.Analytics.Management.ProFiles.Update
+        , Network.Google.Resource.Analytics.Management.Segments.List
+        , Network.Google.Resource.Analytics.Management.UnSampledReports.Get
+        , Network.Google.Resource.Analytics.Management.UnSampledReports.Insert
+        , Network.Google.Resource.Analytics.Management.UnSampledReports.List
+        , Network.Google.Resource.Analytics.Management.Uploads.DeleteUploadData
+        , Network.Google.Resource.Analytics.Management.Uploads.Get
+        , Network.Google.Resource.Analytics.Management.Uploads.List
+        , Network.Google.Resource.Analytics.Management.Uploads.UploadData
+        , Network.Google.Resource.Analytics.Management.WebProperties.Get
+        , Network.Google.Resource.Analytics.Management.WebProperties.Insert
+        , Network.Google.Resource.Analytics.Management.WebProperties.List
+        , Network.Google.Resource.Analytics.Management.WebProperties.Patch
+        , Network.Google.Resource.Analytics.Management.WebProperties.Update
+        , Network.Google.Resource.Analytics.Management.WebPropertyAdWordsLinks.Delete
+        , Network.Google.Resource.Analytics.Management.WebPropertyAdWordsLinks.Get
+        , Network.Google.Resource.Analytics.Management.WebPropertyAdWordsLinks.Insert
+        , Network.Google.Resource.Analytics.Management.WebPropertyAdWordsLinks.List
+        , Network.Google.Resource.Analytics.Management.WebPropertyAdWordsLinks.Patch
+        , Network.Google.Resource.Analytics.Management.WebPropertyAdWordsLinks.Update
+        , Network.Google.Resource.Analytics.Management.WebPropertyUserLinks.Delete
+        , Network.Google.Resource.Analytics.Management.WebPropertyUserLinks.Insert
+        , Network.Google.Resource.Analytics.Management.WebPropertyUserLinks.List
+        , Network.Google.Resource.Analytics.Management.WebPropertyUserLinks.Update
+        , Network.Google.Resource.Analytics.Metadata.Columns.List
+        , Network.Google.Resource.Analytics.Provisioning.CreateAccountTicket
+
+    other-modules:
+          Network.Google.Analytics.Types.Product
+        , Network.Google.Analytics.Types.Sum
+
+    build-depends:
+          gogol-core == 0.0.1.*
+        , base       >= 4.7 && < 5
