packages feed

gogol-sheets (empty) → 0.1.0

raw patch · 16 files changed

+14339/−0 lines, 16 filesdep +basedep +gogol-coresetup-changed

Dependencies added: base, gogol-core

Files

+ LICENSE view
@@ -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.
+ README.md view
@@ -0,0 +1,28 @@+# gogol-sheets++* [Version](#version)+* [Description](#description)+* [Contribute](#contribute)+* [Licence](#licence)+++## Version++`0.1.0`+++## Description++A client library for the Google Sheets.+++## Contribute++For any problems, comments, or feedback please create an issue [here on GitHub](https://github.com/brendanhay/gogol/issues).++> _Note:_ this library is an auto-generated Haskell package. Please see `gogol-gen` for more information.+++## Licence++`gogol-sheets` is released under the [Mozilla Public License Version 2.0](http://www.mozilla.org/MPL/).
+ Setup.hs view
@@ -0,0 +1,2 @@+import           Distribution.Simple+main = defaultMain
+ gen/Network/Google/Resource/Sheets/Spreadsheets/BatchUpdate.hs view
@@ -0,0 +1,211 @@+{-# 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.Sheets.Spreadsheets.BatchUpdate+-- Copyright   : (c) 2015-2016 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Applies one or more updates to the spreadsheet. Each request is+-- validated before being applied. If any request is not valid then the+-- entire request will fail and nothing will be applied. Some requests have+-- replies to give you some information about how they are applied. The+-- replies will mirror the requests. For example, if you applied 4 updates+-- and the 3rd one had a reply, then the response will have 2 empty+-- replies, the actual reply, and another empty reply, in that order. Due+-- to the collaborative nature of spreadsheets, it is not guaranteed that+-- the spreadsheet will reflect exactly your changes after this completes,+-- however it is guaranteed that the updates in the request will be applied+-- together atomically. Your changes may be altered with respect to+-- collaborator changes. If there are no collaborators, the spreadsheet+-- should reflect your changes.+--+-- /See:/ <https://developers.google.com/sheets/ Google Sheets API Reference> for @sheets.spreadsheets.batchUpdate@.+module Network.Google.Resource.Sheets.Spreadsheets.BatchUpdate+    (+    -- * REST Resource+      SpreadsheetsBatchUpdateResource++    -- * Creating a Request+    , spreadsheetsBatchUpdate+    , SpreadsheetsBatchUpdate++    -- * Request Lenses+    , sbuXgafv+    , sbuUploadProtocol+    , sbuPp+    , sbuAccessToken+    , sbuSpreadsheetId+    , sbuUploadType+    , sbuPayload+    , sbuBearerToken+    , sbuCallback+    ) where++import           Network.Google.Prelude+import           Network.Google.Sheets.Types++-- | A resource alias for @sheets.spreadsheets.batchUpdate@ method which the+-- 'SpreadsheetsBatchUpdate' request conforms to.+type SpreadsheetsBatchUpdateResource =+     "v4" :>+       "spreadsheets" :>+         CaptureMode "spreadsheetId" "batchUpdate" Text :>+           QueryParam "$.xgafv" Xgafv :>+             QueryParam "upload_protocol" Text :>+               QueryParam "pp" Bool :>+                 QueryParam "access_token" Text :>+                   QueryParam "uploadType" Text :>+                     QueryParam "bearer_token" Text :>+                       QueryParam "callback" Text :>+                         QueryParam "alt" AltJSON :>+                           ReqBody '[JSON] BatchUpdateSpreadsheetRequest :>+                             Post '[JSON] BatchUpdateSpreadsheetResponse++-- | Applies one or more updates to the spreadsheet. Each request is+-- validated before being applied. If any request is not valid then the+-- entire request will fail and nothing will be applied. Some requests have+-- replies to give you some information about how they are applied. The+-- replies will mirror the requests. For example, if you applied 4 updates+-- and the 3rd one had a reply, then the response will have 2 empty+-- replies, the actual reply, and another empty reply, in that order. Due+-- to the collaborative nature of spreadsheets, it is not guaranteed that+-- the spreadsheet will reflect exactly your changes after this completes,+-- however it is guaranteed that the updates in the request will be applied+-- together atomically. Your changes may be altered with respect to+-- collaborator changes. If there are no collaborators, the spreadsheet+-- should reflect your changes.+--+-- /See:/ 'spreadsheetsBatchUpdate' smart constructor.+data SpreadsheetsBatchUpdate = SpreadsheetsBatchUpdate'+    { _sbuXgafv          :: !(Maybe Xgafv)+    , _sbuUploadProtocol :: !(Maybe Text)+    , _sbuPp             :: !Bool+    , _sbuAccessToken    :: !(Maybe Text)+    , _sbuSpreadsheetId  :: !Text+    , _sbuUploadType     :: !(Maybe Text)+    , _sbuPayload        :: !BatchUpdateSpreadsheetRequest+    , _sbuBearerToken    :: !(Maybe Text)+    , _sbuCallback       :: !(Maybe Text)+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'SpreadsheetsBatchUpdate' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'sbuXgafv'+--+-- * 'sbuUploadProtocol'+--+-- * 'sbuPp'+--+-- * 'sbuAccessToken'+--+-- * 'sbuSpreadsheetId'+--+-- * 'sbuUploadType'+--+-- * 'sbuPayload'+--+-- * 'sbuBearerToken'+--+-- * 'sbuCallback'+spreadsheetsBatchUpdate+    :: Text -- ^ 'sbuSpreadsheetId'+    -> BatchUpdateSpreadsheetRequest -- ^ 'sbuPayload'+    -> SpreadsheetsBatchUpdate+spreadsheetsBatchUpdate pSbuSpreadsheetId_ pSbuPayload_ =+    SpreadsheetsBatchUpdate'+    { _sbuXgafv = Nothing+    , _sbuUploadProtocol = Nothing+    , _sbuPp = True+    , _sbuAccessToken = Nothing+    , _sbuSpreadsheetId = pSbuSpreadsheetId_+    , _sbuUploadType = Nothing+    , _sbuPayload = pSbuPayload_+    , _sbuBearerToken = Nothing+    , _sbuCallback = Nothing+    }++-- | V1 error format.+sbuXgafv :: Lens' SpreadsheetsBatchUpdate (Maybe Xgafv)+sbuXgafv = lens _sbuXgafv (\ s a -> s{_sbuXgafv = a})++-- | Upload protocol for media (e.g. \"raw\", \"multipart\").+sbuUploadProtocol :: Lens' SpreadsheetsBatchUpdate (Maybe Text)+sbuUploadProtocol+  = lens _sbuUploadProtocol+      (\ s a -> s{_sbuUploadProtocol = a})++-- | Pretty-print response.+sbuPp :: Lens' SpreadsheetsBatchUpdate Bool+sbuPp = lens _sbuPp (\ s a -> s{_sbuPp = a})++-- | OAuth access token.+sbuAccessToken :: Lens' SpreadsheetsBatchUpdate (Maybe Text)+sbuAccessToken+  = lens _sbuAccessToken+      (\ s a -> s{_sbuAccessToken = a})++-- | The spreadsheet to apply the updates to.+sbuSpreadsheetId :: Lens' SpreadsheetsBatchUpdate Text+sbuSpreadsheetId+  = lens _sbuSpreadsheetId+      (\ s a -> s{_sbuSpreadsheetId = a})++-- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").+sbuUploadType :: Lens' SpreadsheetsBatchUpdate (Maybe Text)+sbuUploadType+  = lens _sbuUploadType+      (\ s a -> s{_sbuUploadType = a})++-- | Multipart request metadata.+sbuPayload :: Lens' SpreadsheetsBatchUpdate BatchUpdateSpreadsheetRequest+sbuPayload+  = lens _sbuPayload (\ s a -> s{_sbuPayload = a})++-- | OAuth bearer token.+sbuBearerToken :: Lens' SpreadsheetsBatchUpdate (Maybe Text)+sbuBearerToken+  = lens _sbuBearerToken+      (\ s a -> s{_sbuBearerToken = a})++-- | JSONP+sbuCallback :: Lens' SpreadsheetsBatchUpdate (Maybe Text)+sbuCallback+  = lens _sbuCallback (\ s a -> s{_sbuCallback = a})++instance GoogleRequest SpreadsheetsBatchUpdate where+        type Rs SpreadsheetsBatchUpdate =+             BatchUpdateSpreadsheetResponse+        type Scopes SpreadsheetsBatchUpdate =+             '["https://www.googleapis.com/auth/drive",+               "https://www.googleapis.com/auth/spreadsheets"]+        requestClient SpreadsheetsBatchUpdate'{..}+          = go _sbuSpreadsheetId _sbuXgafv _sbuUploadProtocol+              (Just _sbuPp)+              _sbuAccessToken+              _sbuUploadType+              _sbuBearerToken+              _sbuCallback+              (Just AltJSON)+              _sbuPayload+              sheetsService+          where go+                  = buildClient+                      (Proxy :: Proxy SpreadsheetsBatchUpdateResource)+                      mempty
+ gen/Network/Google/Resource/Sheets/Spreadsheets/Create.hs view
@@ -0,0 +1,171 @@+{-# LANGUAGE DataKinds          #-}+{-# LANGUAGE DeriveDataTypeable #-}+{-# LANGUAGE DeriveGeneric      #-}+{-# LANGUAGE FlexibleInstances  #-}+{-# LANGUAGE NoImplicitPrelude  #-}+{-# LANGUAGE OverloadedStrings  #-}+{-# LANGUAGE RecordWildCards    #-}+{-# LANGUAGE TypeFamilies       #-}+{-# LANGUAGE TypeOperators      #-}++{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}++-- |+-- Module      : Network.Google.Resource.Sheets.Spreadsheets.Create+-- Copyright   : (c) 2015-2016 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Creates a spreadsheet, returning the newly created spreadsheet.+--+-- /See:/ <https://developers.google.com/sheets/ Google Sheets API Reference> for @sheets.spreadsheets.create@.+module Network.Google.Resource.Sheets.Spreadsheets.Create+    (+    -- * REST Resource+      SpreadsheetsCreateResource++    -- * Creating a Request+    , spreadsheetsCreate+    , SpreadsheetsCreate++    -- * Request Lenses+    , scXgafv+    , scUploadProtocol+    , scPp+    , scAccessToken+    , scUploadType+    , scPayload+    , scBearerToken+    , scCallback+    ) where++import           Network.Google.Prelude+import           Network.Google.Sheets.Types++-- | A resource alias for @sheets.spreadsheets.create@ method which the+-- 'SpreadsheetsCreate' request conforms to.+type SpreadsheetsCreateResource =+     "v4" :>+       "spreadsheets" :>+         QueryParam "$.xgafv" Xgafv :>+           QueryParam "upload_protocol" Text :>+             QueryParam "pp" Bool :>+               QueryParam "access_token" Text :>+                 QueryParam "uploadType" Text :>+                   QueryParam "bearer_token" Text :>+                     QueryParam "callback" Text :>+                       QueryParam "alt" AltJSON :>+                         ReqBody '[JSON] Spreadsheet :>+                           Post '[JSON] Spreadsheet++-- | Creates a spreadsheet, returning the newly created spreadsheet.+--+-- /See:/ 'spreadsheetsCreate' smart constructor.+data SpreadsheetsCreate = SpreadsheetsCreate'+    { _scXgafv          :: !(Maybe Xgafv)+    , _scUploadProtocol :: !(Maybe Text)+    , _scPp             :: !Bool+    , _scAccessToken    :: !(Maybe Text)+    , _scUploadType     :: !(Maybe Text)+    , _scPayload        :: !Spreadsheet+    , _scBearerToken    :: !(Maybe Text)+    , _scCallback       :: !(Maybe Text)+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'SpreadsheetsCreate' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'scXgafv'+--+-- * 'scUploadProtocol'+--+-- * 'scPp'+--+-- * 'scAccessToken'+--+-- * 'scUploadType'+--+-- * 'scPayload'+--+-- * 'scBearerToken'+--+-- * 'scCallback'+spreadsheetsCreate+    :: Spreadsheet -- ^ 'scPayload'+    -> SpreadsheetsCreate+spreadsheetsCreate pScPayload_ =+    SpreadsheetsCreate'+    { _scXgafv = Nothing+    , _scUploadProtocol = Nothing+    , _scPp = True+    , _scAccessToken = Nothing+    , _scUploadType = Nothing+    , _scPayload = pScPayload_+    , _scBearerToken = Nothing+    , _scCallback = Nothing+    }++-- | V1 error format.+scXgafv :: Lens' SpreadsheetsCreate (Maybe Xgafv)+scXgafv = lens _scXgafv (\ s a -> s{_scXgafv = a})++-- | Upload protocol for media (e.g. \"raw\", \"multipart\").+scUploadProtocol :: Lens' SpreadsheetsCreate (Maybe Text)+scUploadProtocol+  = lens _scUploadProtocol+      (\ s a -> s{_scUploadProtocol = a})++-- | Pretty-print response.+scPp :: Lens' SpreadsheetsCreate Bool+scPp = lens _scPp (\ s a -> s{_scPp = a})++-- | OAuth access token.+scAccessToken :: Lens' SpreadsheetsCreate (Maybe Text)+scAccessToken+  = lens _scAccessToken+      (\ s a -> s{_scAccessToken = a})++-- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").+scUploadType :: Lens' SpreadsheetsCreate (Maybe Text)+scUploadType+  = lens _scUploadType (\ s a -> s{_scUploadType = a})++-- | Multipart request metadata.+scPayload :: Lens' SpreadsheetsCreate Spreadsheet+scPayload+  = lens _scPayload (\ s a -> s{_scPayload = a})++-- | OAuth bearer token.+scBearerToken :: Lens' SpreadsheetsCreate (Maybe Text)+scBearerToken+  = lens _scBearerToken+      (\ s a -> s{_scBearerToken = a})++-- | JSONP+scCallback :: Lens' SpreadsheetsCreate (Maybe Text)+scCallback+  = lens _scCallback (\ s a -> s{_scCallback = a})++instance GoogleRequest SpreadsheetsCreate where+        type Rs SpreadsheetsCreate = Spreadsheet+        type Scopes SpreadsheetsCreate =+             '["https://www.googleapis.com/auth/drive",+               "https://www.googleapis.com/auth/spreadsheets"]+        requestClient SpreadsheetsCreate'{..}+          = go _scXgafv _scUploadProtocol (Just _scPp)+              _scAccessToken+              _scUploadType+              _scBearerToken+              _scCallback+              (Just AltJSON)+              _scPayload+              sheetsService+          where go+                  = buildClient+                      (Proxy :: Proxy SpreadsheetsCreateResource)+                      mempty
+ gen/Network/Google/Resource/Sheets/Spreadsheets/Get.hs view
@@ -0,0 +1,221 @@+{-# 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.Sheets.Spreadsheets.Get+-- Copyright   : (c) 2015-2016 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Returns the spreadsheet at the given ID. The caller must specify the+-- spreadsheet ID. By default, data within grids will not be returned. You+-- can include grid data one of two ways: * Specify a field mask listing+-- your desired fields using the \`fields\` URL parameter in HTTP * Set the+-- includeGridData URL parameter to true. If a field mask is set, the+-- \`includeGridData\` parameter is ignored For large spreadsheets, it is+-- recommended to retrieve only the specific fields of the spreadsheet that+-- you want. To retrieve only subsets of the spreadsheet, use the ranges+-- URL parameter. Multiple ranges can be specified. Limiting the range will+-- return only the portions of the spreadsheet that intersect the requested+-- ranges. Ranges are specified using A1 notation.+--+-- /See:/ <https://developers.google.com/sheets/ Google Sheets API Reference> for @sheets.spreadsheets.get@.+module Network.Google.Resource.Sheets.Spreadsheets.Get+    (+    -- * REST Resource+      SpreadsheetsGetResource++    -- * Creating a Request+    , spreadsheetsGet+    , SpreadsheetsGet++    -- * Request Lenses+    , sgXgafv+    , sgUploadProtocol+    , sgPp+    , sgAccessToken+    , sgSpreadsheetId+    , sgUploadType+    , sgRanges+    , sgIncludeGridData+    , sgBearerToken+    , sgCallback+    ) where++import           Network.Google.Prelude+import           Network.Google.Sheets.Types++-- | A resource alias for @sheets.spreadsheets.get@ method which the+-- 'SpreadsheetsGet' request conforms to.+type SpreadsheetsGetResource =+     "v4" :>+       "spreadsheets" :>+         Capture "spreadsheetId" Text :>+           QueryParam "$.xgafv" Xgafv :>+             QueryParam "upload_protocol" Text :>+               QueryParam "pp" Bool :>+                 QueryParam "access_token" Text :>+                   QueryParam "uploadType" Text :>+                     QueryParams "ranges" Text :>+                       QueryParam "includeGridData" Bool :>+                         QueryParam "bearer_token" Text :>+                           QueryParam "callback" Text :>+                             QueryParam "alt" AltJSON :> Get '[JSON] Spreadsheet++-- | Returns the spreadsheet at the given ID. The caller must specify the+-- spreadsheet ID. By default, data within grids will not be returned. You+-- can include grid data one of two ways: * Specify a field mask listing+-- your desired fields using the \`fields\` URL parameter in HTTP * Set the+-- includeGridData URL parameter to true. If a field mask is set, the+-- \`includeGridData\` parameter is ignored For large spreadsheets, it is+-- recommended to retrieve only the specific fields of the spreadsheet that+-- you want. To retrieve only subsets of the spreadsheet, use the ranges+-- URL parameter. Multiple ranges can be specified. Limiting the range will+-- return only the portions of the spreadsheet that intersect the requested+-- ranges. Ranges are specified using A1 notation.+--+-- /See:/ 'spreadsheetsGet' smart constructor.+data SpreadsheetsGet = SpreadsheetsGet'+    { _sgXgafv           :: !(Maybe Xgafv)+    , _sgUploadProtocol  :: !(Maybe Text)+    , _sgPp              :: !Bool+    , _sgAccessToken     :: !(Maybe Text)+    , _sgSpreadsheetId   :: !Text+    , _sgUploadType      :: !(Maybe Text)+    , _sgRanges          :: !(Maybe [Text])+    , _sgIncludeGridData :: !(Maybe Bool)+    , _sgBearerToken     :: !(Maybe Text)+    , _sgCallback        :: !(Maybe Text)+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'SpreadsheetsGet' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'sgXgafv'+--+-- * 'sgUploadProtocol'+--+-- * 'sgPp'+--+-- * 'sgAccessToken'+--+-- * 'sgSpreadsheetId'+--+-- * 'sgUploadType'+--+-- * 'sgRanges'+--+-- * 'sgIncludeGridData'+--+-- * 'sgBearerToken'+--+-- * 'sgCallback'+spreadsheetsGet+    :: Text -- ^ 'sgSpreadsheetId'+    -> SpreadsheetsGet+spreadsheetsGet pSgSpreadsheetId_ =+    SpreadsheetsGet'+    { _sgXgafv = Nothing+    , _sgUploadProtocol = Nothing+    , _sgPp = True+    , _sgAccessToken = Nothing+    , _sgSpreadsheetId = pSgSpreadsheetId_+    , _sgUploadType = Nothing+    , _sgRanges = Nothing+    , _sgIncludeGridData = Nothing+    , _sgBearerToken = Nothing+    , _sgCallback = Nothing+    }++-- | V1 error format.+sgXgafv :: Lens' SpreadsheetsGet (Maybe Xgafv)+sgXgafv = lens _sgXgafv (\ s a -> s{_sgXgafv = a})++-- | Upload protocol for media (e.g. \"raw\", \"multipart\").+sgUploadProtocol :: Lens' SpreadsheetsGet (Maybe Text)+sgUploadProtocol+  = lens _sgUploadProtocol+      (\ s a -> s{_sgUploadProtocol = a})++-- | Pretty-print response.+sgPp :: Lens' SpreadsheetsGet Bool+sgPp = lens _sgPp (\ s a -> s{_sgPp = a})++-- | OAuth access token.+sgAccessToken :: Lens' SpreadsheetsGet (Maybe Text)+sgAccessToken+  = lens _sgAccessToken+      (\ s a -> s{_sgAccessToken = a})++-- | The spreadsheet to request.+sgSpreadsheetId :: Lens' SpreadsheetsGet Text+sgSpreadsheetId+  = lens _sgSpreadsheetId+      (\ s a -> s{_sgSpreadsheetId = a})++-- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").+sgUploadType :: Lens' SpreadsheetsGet (Maybe Text)+sgUploadType+  = lens _sgUploadType (\ s a -> s{_sgUploadType = a})++-- | The ranges to retrieve from the spreadsheet.+sgRanges :: Lens' SpreadsheetsGet [Text]+sgRanges+  = lens _sgRanges (\ s a -> s{_sgRanges = a}) .+      _Default+      . _Coerce++-- | True if grid data should be returned. This parameter is ignored if a+-- field mask was set in the request.+sgIncludeGridData :: Lens' SpreadsheetsGet (Maybe Bool)+sgIncludeGridData+  = lens _sgIncludeGridData+      (\ s a -> s{_sgIncludeGridData = a})++-- | OAuth bearer token.+sgBearerToken :: Lens' SpreadsheetsGet (Maybe Text)+sgBearerToken+  = lens _sgBearerToken+      (\ s a -> s{_sgBearerToken = a})++-- | JSONP+sgCallback :: Lens' SpreadsheetsGet (Maybe Text)+sgCallback+  = lens _sgCallback (\ s a -> s{_sgCallback = a})++instance GoogleRequest SpreadsheetsGet where+        type Rs SpreadsheetsGet = Spreadsheet+        type Scopes SpreadsheetsGet =+             '["https://www.googleapis.com/auth/drive",+               "https://www.googleapis.com/auth/drive.readonly",+               "https://www.googleapis.com/auth/spreadsheets",+               "https://www.googleapis.com/auth/spreadsheets.readonly"]+        requestClient SpreadsheetsGet'{..}+          = go _sgSpreadsheetId _sgXgafv _sgUploadProtocol+              (Just _sgPp)+              _sgAccessToken+              _sgUploadType+              (_sgRanges ^. _Default)+              _sgIncludeGridData+              _sgBearerToken+              _sgCallback+              (Just AltJSON)+              sheetsService+          where go+                  = buildClient+                      (Proxy :: Proxy SpreadsheetsGetResource)+                      mempty
+ gen/Network/Google/Resource/Sheets/Spreadsheets/Sheets/CopyTo.hs view
@@ -0,0 +1,205 @@+{-# 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.Sheets.Spreadsheets.Sheets.CopyTo+-- Copyright   : (c) 2015-2016 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Copies a single sheet from a spreadsheet to another spreadsheet. Returns+-- the properties of the newly created sheet.+--+-- /See:/ <https://developers.google.com/sheets/ Google Sheets API Reference> for @sheets.spreadsheets.sheets.copyTo@.+module Network.Google.Resource.Sheets.Spreadsheets.Sheets.CopyTo+    (+    -- * REST Resource+      SpreadsheetsSheetsCopyToResource++    -- * Creating a Request+    , spreadsheetsSheetsCopyTo+    , SpreadsheetsSheetsCopyTo++    -- * Request Lenses+    , ssctXgafv+    , ssctUploadProtocol+    , ssctPp+    , ssctAccessToken+    , ssctSpreadsheetId+    , ssctUploadType+    , ssctPayload+    , ssctBearerToken+    , ssctSheetId+    , ssctCallback+    ) where++import           Network.Google.Prelude+import           Network.Google.Sheets.Types++-- | A resource alias for @sheets.spreadsheets.sheets.copyTo@ method which the+-- 'SpreadsheetsSheetsCopyTo' request conforms to.+type SpreadsheetsSheetsCopyToResource =+     "v4" :>+       "spreadsheets" :>+         Capture "spreadsheetId" Text :>+           "sheets" :>+             CaptureMode "sheetId" "copyTo" (Textual Int32) :>+               QueryParam "$.xgafv" Xgafv :>+                 QueryParam "upload_protocol" Text :>+                   QueryParam "pp" Bool :>+                     QueryParam "access_token" Text :>+                       QueryParam "uploadType" Text :>+                         QueryParam "bearer_token" Text :>+                           QueryParam "callback" Text :>+                             QueryParam "alt" AltJSON :>+                               ReqBody '[JSON]+                                 CopySheetToAnotherSpreadsheetRequest+                                 :> Post '[JSON] SheetProperties++-- | Copies a single sheet from a spreadsheet to another spreadsheet. Returns+-- the properties of the newly created sheet.+--+-- /See:/ 'spreadsheetsSheetsCopyTo' smart constructor.+data SpreadsheetsSheetsCopyTo = SpreadsheetsSheetsCopyTo'+    { _ssctXgafv          :: !(Maybe Xgafv)+    , _ssctUploadProtocol :: !(Maybe Text)+    , _ssctPp             :: !Bool+    , _ssctAccessToken    :: !(Maybe Text)+    , _ssctSpreadsheetId  :: !Text+    , _ssctUploadType     :: !(Maybe Text)+    , _ssctPayload        :: !CopySheetToAnotherSpreadsheetRequest+    , _ssctBearerToken    :: !(Maybe Text)+    , _ssctSheetId        :: !(Textual Int32)+    , _ssctCallback       :: !(Maybe Text)+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'SpreadsheetsSheetsCopyTo' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'ssctXgafv'+--+-- * 'ssctUploadProtocol'+--+-- * 'ssctPp'+--+-- * 'ssctAccessToken'+--+-- * 'ssctSpreadsheetId'+--+-- * 'ssctUploadType'+--+-- * 'ssctPayload'+--+-- * 'ssctBearerToken'+--+-- * 'ssctSheetId'+--+-- * 'ssctCallback'+spreadsheetsSheetsCopyTo+    :: Text -- ^ 'ssctSpreadsheetId'+    -> CopySheetToAnotherSpreadsheetRequest -- ^ 'ssctPayload'+    -> Int32 -- ^ 'ssctSheetId'+    -> SpreadsheetsSheetsCopyTo+spreadsheetsSheetsCopyTo pSsctSpreadsheetId_ pSsctPayload_ pSsctSheetId_ =+    SpreadsheetsSheetsCopyTo'+    { _ssctXgafv = Nothing+    , _ssctUploadProtocol = Nothing+    , _ssctPp = True+    , _ssctAccessToken = Nothing+    , _ssctSpreadsheetId = pSsctSpreadsheetId_+    , _ssctUploadType = Nothing+    , _ssctPayload = pSsctPayload_+    , _ssctBearerToken = Nothing+    , _ssctSheetId = _Coerce # pSsctSheetId_+    , _ssctCallback = Nothing+    }++-- | V1 error format.+ssctXgafv :: Lens' SpreadsheetsSheetsCopyTo (Maybe Xgafv)+ssctXgafv+  = lens _ssctXgafv (\ s a -> s{_ssctXgafv = a})++-- | Upload protocol for media (e.g. \"raw\", \"multipart\").+ssctUploadProtocol :: Lens' SpreadsheetsSheetsCopyTo (Maybe Text)+ssctUploadProtocol+  = lens _ssctUploadProtocol+      (\ s a -> s{_ssctUploadProtocol = a})++-- | Pretty-print response.+ssctPp :: Lens' SpreadsheetsSheetsCopyTo Bool+ssctPp = lens _ssctPp (\ s a -> s{_ssctPp = a})++-- | OAuth access token.+ssctAccessToken :: Lens' SpreadsheetsSheetsCopyTo (Maybe Text)+ssctAccessToken+  = lens _ssctAccessToken+      (\ s a -> s{_ssctAccessToken = a})++-- | The ID of the spreadsheet containing the sheet to copy.+ssctSpreadsheetId :: Lens' SpreadsheetsSheetsCopyTo Text+ssctSpreadsheetId+  = lens _ssctSpreadsheetId+      (\ s a -> s{_ssctSpreadsheetId = a})++-- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").+ssctUploadType :: Lens' SpreadsheetsSheetsCopyTo (Maybe Text)+ssctUploadType+  = lens _ssctUploadType+      (\ s a -> s{_ssctUploadType = a})++-- | Multipart request metadata.+ssctPayload :: Lens' SpreadsheetsSheetsCopyTo CopySheetToAnotherSpreadsheetRequest+ssctPayload+  = lens _ssctPayload (\ s a -> s{_ssctPayload = a})++-- | OAuth bearer token.+ssctBearerToken :: Lens' SpreadsheetsSheetsCopyTo (Maybe Text)+ssctBearerToken+  = lens _ssctBearerToken+      (\ s a -> s{_ssctBearerToken = a})++-- | The ID of the sheet to copy.+ssctSheetId :: Lens' SpreadsheetsSheetsCopyTo Int32+ssctSheetId+  = lens _ssctSheetId (\ s a -> s{_ssctSheetId = a}) .+      _Coerce++-- | JSONP+ssctCallback :: Lens' SpreadsheetsSheetsCopyTo (Maybe Text)+ssctCallback+  = lens _ssctCallback (\ s a -> s{_ssctCallback = a})++instance GoogleRequest SpreadsheetsSheetsCopyTo where+        type Rs SpreadsheetsSheetsCopyTo = SheetProperties+        type Scopes SpreadsheetsSheetsCopyTo =+             '["https://www.googleapis.com/auth/drive",+               "https://www.googleapis.com/auth/spreadsheets"]+        requestClient SpreadsheetsSheetsCopyTo'{..}+          = go _ssctSpreadsheetId _ssctSheetId _ssctXgafv+              _ssctUploadProtocol+              (Just _ssctPp)+              _ssctAccessToken+              _ssctUploadType+              _ssctBearerToken+              _ssctCallback+              (Just AltJSON)+              _ssctPayload+              sheetsService+          where go+                  = buildClient+                      (Proxy :: Proxy SpreadsheetsSheetsCopyToResource)+                      mempty
+ gen/Network/Google/Resource/Sheets/Spreadsheets/Values/BatchGet.hs view
@@ -0,0 +1,240 @@+{-# 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.Sheets.Spreadsheets.Values.BatchGet+-- Copyright   : (c) 2015-2016 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Returns one or more ranges of values from a spreadsheet. The caller must+-- specify the spreadsheet ID and one or more ranges.+--+-- /See:/ <https://developers.google.com/sheets/ Google Sheets API Reference> for @sheets.spreadsheets.values.batchGet@.+module Network.Google.Resource.Sheets.Spreadsheets.Values.BatchGet+    (+    -- * REST Resource+      SpreadsheetsValuesBatchGetResource++    -- * Creating a Request+    , spreadsheetsValuesBatchGet+    , SpreadsheetsValuesBatchGet++    -- * Request Lenses+    , svbgXgafv+    , svbgValueRenderOption+    , svbgUploadProtocol+    , svbgPp+    , svbgAccessToken+    , svbgSpreadsheetId+    , svbgUploadType+    , svbgRanges+    , svbgBearerToken+    , svbgDateTimeRenderOption+    , svbgMajorDimension+    , svbgCallback+    ) where++import           Network.Google.Prelude+import           Network.Google.Sheets.Types++-- | A resource alias for @sheets.spreadsheets.values.batchGet@ method which the+-- 'SpreadsheetsValuesBatchGet' request conforms to.+type SpreadsheetsValuesBatchGetResource =+     "v4" :>+       "spreadsheets" :>+         Capture "spreadsheetId" Text :>+           "values:batchGet" :>+             QueryParam "$.xgafv" Xgafv :>+               QueryParam "valueRenderOption" Text :>+                 QueryParam "upload_protocol" Text :>+                   QueryParam "pp" Bool :>+                     QueryParam "access_token" Text :>+                       QueryParam "uploadType" Text :>+                         QueryParams "ranges" Text :>+                           QueryParam "bearer_token" Text :>+                             QueryParam "dateTimeRenderOption" Text :>+                               QueryParam "majorDimension" Text :>+                                 QueryParam "callback" Text :>+                                   QueryParam "alt" AltJSON :>+                                     Get '[JSON] BatchGetValuesResponse++-- | Returns one or more ranges of values from a spreadsheet. The caller must+-- specify the spreadsheet ID and one or more ranges.+--+-- /See:/ 'spreadsheetsValuesBatchGet' smart constructor.+data SpreadsheetsValuesBatchGet = SpreadsheetsValuesBatchGet'+    { _svbgXgafv                :: !(Maybe Xgafv)+    , _svbgValueRenderOption    :: !(Maybe Text)+    , _svbgUploadProtocol       :: !(Maybe Text)+    , _svbgPp                   :: !Bool+    , _svbgAccessToken          :: !(Maybe Text)+    , _svbgSpreadsheetId        :: !Text+    , _svbgUploadType           :: !(Maybe Text)+    , _svbgRanges               :: !(Maybe [Text])+    , _svbgBearerToken          :: !(Maybe Text)+    , _svbgDateTimeRenderOption :: !(Maybe Text)+    , _svbgMajorDimension       :: !(Maybe Text)+    , _svbgCallback             :: !(Maybe Text)+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'SpreadsheetsValuesBatchGet' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'svbgXgafv'+--+-- * 'svbgValueRenderOption'+--+-- * 'svbgUploadProtocol'+--+-- * 'svbgPp'+--+-- * 'svbgAccessToken'+--+-- * 'svbgSpreadsheetId'+--+-- * 'svbgUploadType'+--+-- * 'svbgRanges'+--+-- * 'svbgBearerToken'+--+-- * 'svbgDateTimeRenderOption'+--+-- * 'svbgMajorDimension'+--+-- * 'svbgCallback'+spreadsheetsValuesBatchGet+    :: Text -- ^ 'svbgSpreadsheetId'+    -> SpreadsheetsValuesBatchGet+spreadsheetsValuesBatchGet pSvbgSpreadsheetId_ =+    SpreadsheetsValuesBatchGet'+    { _svbgXgafv = Nothing+    , _svbgValueRenderOption = Nothing+    , _svbgUploadProtocol = Nothing+    , _svbgPp = True+    , _svbgAccessToken = Nothing+    , _svbgSpreadsheetId = pSvbgSpreadsheetId_+    , _svbgUploadType = Nothing+    , _svbgRanges = Nothing+    , _svbgBearerToken = Nothing+    , _svbgDateTimeRenderOption = Nothing+    , _svbgMajorDimension = Nothing+    , _svbgCallback = Nothing+    }++-- | V1 error format.+svbgXgafv :: Lens' SpreadsheetsValuesBatchGet (Maybe Xgafv)+svbgXgafv+  = lens _svbgXgafv (\ s a -> s{_svbgXgafv = a})++-- | How values should be represented in the output.+svbgValueRenderOption :: Lens' SpreadsheetsValuesBatchGet (Maybe Text)+svbgValueRenderOption+  = lens _svbgValueRenderOption+      (\ s a -> s{_svbgValueRenderOption = a})++-- | Upload protocol for media (e.g. \"raw\", \"multipart\").+svbgUploadProtocol :: Lens' SpreadsheetsValuesBatchGet (Maybe Text)+svbgUploadProtocol+  = lens _svbgUploadProtocol+      (\ s a -> s{_svbgUploadProtocol = a})++-- | Pretty-print response.+svbgPp :: Lens' SpreadsheetsValuesBatchGet Bool+svbgPp = lens _svbgPp (\ s a -> s{_svbgPp = a})++-- | OAuth access token.+svbgAccessToken :: Lens' SpreadsheetsValuesBatchGet (Maybe Text)+svbgAccessToken+  = lens _svbgAccessToken+      (\ s a -> s{_svbgAccessToken = a})++-- | The ID of the spreadsheet to retrieve data from.+svbgSpreadsheetId :: Lens' SpreadsheetsValuesBatchGet Text+svbgSpreadsheetId+  = lens _svbgSpreadsheetId+      (\ s a -> s{_svbgSpreadsheetId = a})++-- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").+svbgUploadType :: Lens' SpreadsheetsValuesBatchGet (Maybe Text)+svbgUploadType+  = lens _svbgUploadType+      (\ s a -> s{_svbgUploadType = a})++-- | The A1 notation of the values to retrieve.+svbgRanges :: Lens' SpreadsheetsValuesBatchGet [Text]+svbgRanges+  = lens _svbgRanges (\ s a -> s{_svbgRanges = a}) .+      _Default+      . _Coerce++-- | OAuth bearer token.+svbgBearerToken :: Lens' SpreadsheetsValuesBatchGet (Maybe Text)+svbgBearerToken+  = lens _svbgBearerToken+      (\ s a -> s{_svbgBearerToken = a})++-- | How dates, times, and durations should be represented in the output.+-- This is ignored if value_render_option is FORMATTED_VALUE.+svbgDateTimeRenderOption :: Lens' SpreadsheetsValuesBatchGet (Maybe Text)+svbgDateTimeRenderOption+  = lens _svbgDateTimeRenderOption+      (\ s a -> s{_svbgDateTimeRenderOption = a})++-- | The major dimension that results should use. For example, if the+-- spreadsheet data is: \`A1=1,B1=2,A2=3,B2=4\`, then requesting+-- \`range=A1:B2,majorDimension=ROWS\` will return \`[[1,2],[3,4]]\`,+-- whereas requesting \`range=A1:B2,majorDimension=COLUMNS\` will return+-- \`[[1,3],[2,4]]\`.+svbgMajorDimension :: Lens' SpreadsheetsValuesBatchGet (Maybe Text)+svbgMajorDimension+  = lens _svbgMajorDimension+      (\ s a -> s{_svbgMajorDimension = a})++-- | JSONP+svbgCallback :: Lens' SpreadsheetsValuesBatchGet (Maybe Text)+svbgCallback+  = lens _svbgCallback (\ s a -> s{_svbgCallback = a})++instance GoogleRequest SpreadsheetsValuesBatchGet+         where+        type Rs SpreadsheetsValuesBatchGet =+             BatchGetValuesResponse+        type Scopes SpreadsheetsValuesBatchGet =+             '["https://www.googleapis.com/auth/drive",+               "https://www.googleapis.com/auth/drive.readonly",+               "https://www.googleapis.com/auth/spreadsheets",+               "https://www.googleapis.com/auth/spreadsheets.readonly"]+        requestClient SpreadsheetsValuesBatchGet'{..}+          = go _svbgSpreadsheetId _svbgXgafv+              _svbgValueRenderOption+              _svbgUploadProtocol+              (Just _svbgPp)+              _svbgAccessToken+              _svbgUploadType+              (_svbgRanges ^. _Default)+              _svbgBearerToken+              _svbgDateTimeRenderOption+              _svbgMajorDimension+              _svbgCallback+              (Just AltJSON)+              sheetsService+          where go+                  = buildClient+                      (Proxy :: Proxy SpreadsheetsValuesBatchGetResource)+                      mempty
+ gen/Network/Google/Resource/Sheets/Spreadsheets/Values/BatchUpdate.hs view
@@ -0,0 +1,196 @@+{-# 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.Sheets.Spreadsheets.Values.BatchUpdate+-- Copyright   : (c) 2015-2016 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Sets values in one or more ranges of a spreadsheet. The caller must+-- specify the spreadsheet ID, a valueInputOption, and one or more+-- ValueRanges.+--+-- /See:/ <https://developers.google.com/sheets/ Google Sheets API Reference> for @sheets.spreadsheets.values.batchUpdate@.+module Network.Google.Resource.Sheets.Spreadsheets.Values.BatchUpdate+    (+    -- * REST Resource+      SpreadsheetsValuesBatchUpdateResource++    -- * Creating a Request+    , spreadsheetsValuesBatchUpdate+    , SpreadsheetsValuesBatchUpdate++    -- * Request Lenses+    , svbuXgafv+    , svbuUploadProtocol+    , svbuPp+    , svbuAccessToken+    , svbuSpreadsheetId+    , svbuUploadType+    , svbuPayload+    , svbuBearerToken+    , svbuCallback+    ) where++import           Network.Google.Prelude+import           Network.Google.Sheets.Types++-- | A resource alias for @sheets.spreadsheets.values.batchUpdate@ method which the+-- 'SpreadsheetsValuesBatchUpdate' request conforms to.+type SpreadsheetsValuesBatchUpdateResource =+     "v4" :>+       "spreadsheets" :>+         Capture "spreadsheetId" Text :>+           "values:batchUpdate" :>+             QueryParam "$.xgafv" Xgafv :>+               QueryParam "upload_protocol" Text :>+                 QueryParam "pp" Bool :>+                   QueryParam "access_token" Text :>+                     QueryParam "uploadType" Text :>+                       QueryParam "bearer_token" Text :>+                         QueryParam "callback" Text :>+                           QueryParam "alt" AltJSON :>+                             ReqBody '[JSON] BatchUpdateValuesRequest :>+                               Post '[JSON] BatchUpdateValuesResponse++-- | Sets values in one or more ranges of a spreadsheet. The caller must+-- specify the spreadsheet ID, a valueInputOption, and one or more+-- ValueRanges.+--+-- /See:/ 'spreadsheetsValuesBatchUpdate' smart constructor.+data SpreadsheetsValuesBatchUpdate = SpreadsheetsValuesBatchUpdate'+    { _svbuXgafv          :: !(Maybe Xgafv)+    , _svbuUploadProtocol :: !(Maybe Text)+    , _svbuPp             :: !Bool+    , _svbuAccessToken    :: !(Maybe Text)+    , _svbuSpreadsheetId  :: !Text+    , _svbuUploadType     :: !(Maybe Text)+    , _svbuPayload        :: !BatchUpdateValuesRequest+    , _svbuBearerToken    :: !(Maybe Text)+    , _svbuCallback       :: !(Maybe Text)+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'SpreadsheetsValuesBatchUpdate' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'svbuXgafv'+--+-- * 'svbuUploadProtocol'+--+-- * 'svbuPp'+--+-- * 'svbuAccessToken'+--+-- * 'svbuSpreadsheetId'+--+-- * 'svbuUploadType'+--+-- * 'svbuPayload'+--+-- * 'svbuBearerToken'+--+-- * 'svbuCallback'+spreadsheetsValuesBatchUpdate+    :: Text -- ^ 'svbuSpreadsheetId'+    -> BatchUpdateValuesRequest -- ^ 'svbuPayload'+    -> SpreadsheetsValuesBatchUpdate+spreadsheetsValuesBatchUpdate pSvbuSpreadsheetId_ pSvbuPayload_ =+    SpreadsheetsValuesBatchUpdate'+    { _svbuXgafv = Nothing+    , _svbuUploadProtocol = Nothing+    , _svbuPp = True+    , _svbuAccessToken = Nothing+    , _svbuSpreadsheetId = pSvbuSpreadsheetId_+    , _svbuUploadType = Nothing+    , _svbuPayload = pSvbuPayload_+    , _svbuBearerToken = Nothing+    , _svbuCallback = Nothing+    }++-- | V1 error format.+svbuXgafv :: Lens' SpreadsheetsValuesBatchUpdate (Maybe Xgafv)+svbuXgafv+  = lens _svbuXgafv (\ s a -> s{_svbuXgafv = a})++-- | Upload protocol for media (e.g. \"raw\", \"multipart\").+svbuUploadProtocol :: Lens' SpreadsheetsValuesBatchUpdate (Maybe Text)+svbuUploadProtocol+  = lens _svbuUploadProtocol+      (\ s a -> s{_svbuUploadProtocol = a})++-- | Pretty-print response.+svbuPp :: Lens' SpreadsheetsValuesBatchUpdate Bool+svbuPp = lens _svbuPp (\ s a -> s{_svbuPp = a})++-- | OAuth access token.+svbuAccessToken :: Lens' SpreadsheetsValuesBatchUpdate (Maybe Text)+svbuAccessToken+  = lens _svbuAccessToken+      (\ s a -> s{_svbuAccessToken = a})++-- | The ID of the spreadsheet to update.+svbuSpreadsheetId :: Lens' SpreadsheetsValuesBatchUpdate Text+svbuSpreadsheetId+  = lens _svbuSpreadsheetId+      (\ s a -> s{_svbuSpreadsheetId = a})++-- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").+svbuUploadType :: Lens' SpreadsheetsValuesBatchUpdate (Maybe Text)+svbuUploadType+  = lens _svbuUploadType+      (\ s a -> s{_svbuUploadType = a})++-- | Multipart request metadata.+svbuPayload :: Lens' SpreadsheetsValuesBatchUpdate BatchUpdateValuesRequest+svbuPayload+  = lens _svbuPayload (\ s a -> s{_svbuPayload = a})++-- | OAuth bearer token.+svbuBearerToken :: Lens' SpreadsheetsValuesBatchUpdate (Maybe Text)+svbuBearerToken+  = lens _svbuBearerToken+      (\ s a -> s{_svbuBearerToken = a})++-- | JSONP+svbuCallback :: Lens' SpreadsheetsValuesBatchUpdate (Maybe Text)+svbuCallback+  = lens _svbuCallback (\ s a -> s{_svbuCallback = a})++instance GoogleRequest SpreadsheetsValuesBatchUpdate+         where+        type Rs SpreadsheetsValuesBatchUpdate =+             BatchUpdateValuesResponse+        type Scopes SpreadsheetsValuesBatchUpdate =+             '["https://www.googleapis.com/auth/drive",+               "https://www.googleapis.com/auth/spreadsheets"]+        requestClient SpreadsheetsValuesBatchUpdate'{..}+          = go _svbuSpreadsheetId _svbuXgafv+              _svbuUploadProtocol+              (Just _svbuPp)+              _svbuAccessToken+              _svbuUploadType+              _svbuBearerToken+              _svbuCallback+              (Just AltJSON)+              _svbuPayload+              sheetsService+          where go+                  = buildClient+                      (Proxy ::+                         Proxy SpreadsheetsValuesBatchUpdateResource)+                      mempty
+ gen/Network/Google/Resource/Sheets/Spreadsheets/Values/Get.hs view
@@ -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.Sheets.Spreadsheets.Values.Get+-- Copyright   : (c) 2015-2016 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Returns a range of values from a spreadsheet. The caller must specify+-- the spreadsheet ID and a range.+--+-- /See:/ <https://developers.google.com/sheets/ Google Sheets API Reference> for @sheets.spreadsheets.values.get@.+module Network.Google.Resource.Sheets.Spreadsheets.Values.Get+    (+    -- * REST Resource+      SpreadsheetsValuesGetResource++    -- * Creating a Request+    , spreadsheetsValuesGet+    , SpreadsheetsValuesGet++    -- * Request Lenses+    , svgXgafv+    , svgValueRenderOption+    , svgUploadProtocol+    , svgPp+    , svgAccessToken+    , svgSpreadsheetId+    , svgUploadType+    , svgBearerToken+    , svgRange+    , svgDateTimeRenderOption+    , svgMajorDimension+    , svgCallback+    ) where++import           Network.Google.Prelude+import           Network.Google.Sheets.Types++-- | A resource alias for @sheets.spreadsheets.values.get@ method which the+-- 'SpreadsheetsValuesGet' request conforms to.+type SpreadsheetsValuesGetResource =+     "v4" :>+       "spreadsheets" :>+         Capture "spreadsheetId" Text :>+           "values" :>+             Capture "range" Text :>+               QueryParam "$.xgafv" Xgafv :>+                 QueryParam "valueRenderOption" Text :>+                   QueryParam "upload_protocol" Text :>+                     QueryParam "pp" Bool :>+                       QueryParam "access_token" Text :>+                         QueryParam "uploadType" Text :>+                           QueryParam "bearer_token" Text :>+                             QueryParam "dateTimeRenderOption" Text :>+                               QueryParam "majorDimension" Text :>+                                 QueryParam "callback" Text :>+                                   QueryParam "alt" AltJSON :>+                                     Get '[JSON] ValueRange++-- | Returns a range of values from a spreadsheet. The caller must specify+-- the spreadsheet ID and a range.+--+-- /See:/ 'spreadsheetsValuesGet' smart constructor.+data SpreadsheetsValuesGet = SpreadsheetsValuesGet'+    { _svgXgafv                :: !(Maybe Xgafv)+    , _svgValueRenderOption    :: !(Maybe Text)+    , _svgUploadProtocol       :: !(Maybe Text)+    , _svgPp                   :: !Bool+    , _svgAccessToken          :: !(Maybe Text)+    , _svgSpreadsheetId        :: !Text+    , _svgUploadType           :: !(Maybe Text)+    , _svgBearerToken          :: !(Maybe Text)+    , _svgRange                :: !Text+    , _svgDateTimeRenderOption :: !(Maybe Text)+    , _svgMajorDimension       :: !(Maybe Text)+    , _svgCallback             :: !(Maybe Text)+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'SpreadsheetsValuesGet' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'svgXgafv'+--+-- * 'svgValueRenderOption'+--+-- * 'svgUploadProtocol'+--+-- * 'svgPp'+--+-- * 'svgAccessToken'+--+-- * 'svgSpreadsheetId'+--+-- * 'svgUploadType'+--+-- * 'svgBearerToken'+--+-- * 'svgRange'+--+-- * 'svgDateTimeRenderOption'+--+-- * 'svgMajorDimension'+--+-- * 'svgCallback'+spreadsheetsValuesGet+    :: Text -- ^ 'svgSpreadsheetId'+    -> Text -- ^ 'svgRange'+    -> SpreadsheetsValuesGet+spreadsheetsValuesGet pSvgSpreadsheetId_ pSvgRange_ =+    SpreadsheetsValuesGet'+    { _svgXgafv = Nothing+    , _svgValueRenderOption = Nothing+    , _svgUploadProtocol = Nothing+    , _svgPp = True+    , _svgAccessToken = Nothing+    , _svgSpreadsheetId = pSvgSpreadsheetId_+    , _svgUploadType = Nothing+    , _svgBearerToken = Nothing+    , _svgRange = pSvgRange_+    , _svgDateTimeRenderOption = Nothing+    , _svgMajorDimension = Nothing+    , _svgCallback = Nothing+    }++-- | V1 error format.+svgXgafv :: Lens' SpreadsheetsValuesGet (Maybe Xgafv)+svgXgafv = lens _svgXgafv (\ s a -> s{_svgXgafv = a})++-- | How values should be represented in the output.+svgValueRenderOption :: Lens' SpreadsheetsValuesGet (Maybe Text)+svgValueRenderOption+  = lens _svgValueRenderOption+      (\ s a -> s{_svgValueRenderOption = a})++-- | Upload protocol for media (e.g. \"raw\", \"multipart\").+svgUploadProtocol :: Lens' SpreadsheetsValuesGet (Maybe Text)+svgUploadProtocol+  = lens _svgUploadProtocol+      (\ s a -> s{_svgUploadProtocol = a})++-- | Pretty-print response.+svgPp :: Lens' SpreadsheetsValuesGet Bool+svgPp = lens _svgPp (\ s a -> s{_svgPp = a})++-- | OAuth access token.+svgAccessToken :: Lens' SpreadsheetsValuesGet (Maybe Text)+svgAccessToken+  = lens _svgAccessToken+      (\ s a -> s{_svgAccessToken = a})++-- | The ID of the spreadsheet to retrieve data from.+svgSpreadsheetId :: Lens' SpreadsheetsValuesGet Text+svgSpreadsheetId+  = lens _svgSpreadsheetId+      (\ s a -> s{_svgSpreadsheetId = a})++-- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").+svgUploadType :: Lens' SpreadsheetsValuesGet (Maybe Text)+svgUploadType+  = lens _svgUploadType+      (\ s a -> s{_svgUploadType = a})++-- | OAuth bearer token.+svgBearerToken :: Lens' SpreadsheetsValuesGet (Maybe Text)+svgBearerToken+  = lens _svgBearerToken+      (\ s a -> s{_svgBearerToken = a})++-- | The A1 notation of the values to retrieve.+svgRange :: Lens' SpreadsheetsValuesGet Text+svgRange = lens _svgRange (\ s a -> s{_svgRange = a})++-- | How dates, times, and durations should be represented in the output.+-- This is ignored if value_render_option is FORMATTED_VALUE.+svgDateTimeRenderOption :: Lens' SpreadsheetsValuesGet (Maybe Text)+svgDateTimeRenderOption+  = lens _svgDateTimeRenderOption+      (\ s a -> s{_svgDateTimeRenderOption = a})++-- | The major dimension that results should use. For example, if the+-- spreadsheet data is: \`A1=1,B1=2,A2=3,B2=4\`, then requesting+-- \`range=A1:B2,majorDimension=ROWS\` will return \`[[1,2],[3,4]]\`,+-- whereas requesting \`range=A1:B2,majorDimension=COLUMNS\` will return+-- \`[[1,3],[2,4]]\`.+svgMajorDimension :: Lens' SpreadsheetsValuesGet (Maybe Text)+svgMajorDimension+  = lens _svgMajorDimension+      (\ s a -> s{_svgMajorDimension = a})++-- | JSONP+svgCallback :: Lens' SpreadsheetsValuesGet (Maybe Text)+svgCallback+  = lens _svgCallback (\ s a -> s{_svgCallback = a})++instance GoogleRequest SpreadsheetsValuesGet where+        type Rs SpreadsheetsValuesGet = ValueRange+        type Scopes SpreadsheetsValuesGet =+             '["https://www.googleapis.com/auth/drive",+               "https://www.googleapis.com/auth/drive.readonly",+               "https://www.googleapis.com/auth/spreadsheets",+               "https://www.googleapis.com/auth/spreadsheets.readonly"]+        requestClient SpreadsheetsValuesGet'{..}+          = go _svgSpreadsheetId _svgRange _svgXgafv+              _svgValueRenderOption+              _svgUploadProtocol+              (Just _svgPp)+              _svgAccessToken+              _svgUploadType+              _svgBearerToken+              _svgDateTimeRenderOption+              _svgMajorDimension+              _svgCallback+              (Just AltJSON)+              sheetsService+          where go+                  = buildClient+                      (Proxy :: Proxy SpreadsheetsValuesGetResource)+                      mempty
+ gen/Network/Google/Resource/Sheets/Spreadsheets/Values/Update.hs view
@@ -0,0 +1,215 @@+{-# 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.Sheets.Spreadsheets.Values.Update+-- Copyright   : (c) 2015-2016 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Sets values in a range of a spreadsheet. The caller must specify the+-- spreadsheet ID, range, and a valueInputOption.+--+-- /See:/ <https://developers.google.com/sheets/ Google Sheets API Reference> for @sheets.spreadsheets.values.update@.+module Network.Google.Resource.Sheets.Spreadsheets.Values.Update+    (+    -- * REST Resource+      SpreadsheetsValuesUpdateResource++    -- * Creating a Request+    , spreadsheetsValuesUpdate+    , SpreadsheetsValuesUpdate++    -- * Request Lenses+    , svuXgafv+    , svuUploadProtocol+    , svuPp+    , svuAccessToken+    , svuSpreadsheetId+    , svuUploadType+    , svuValueInputOption+    , svuPayload+    , svuBearerToken+    , svuRange+    , svuCallback+    ) where++import           Network.Google.Prelude+import           Network.Google.Sheets.Types++-- | A resource alias for @sheets.spreadsheets.values.update@ method which the+-- 'SpreadsheetsValuesUpdate' request conforms to.+type SpreadsheetsValuesUpdateResource =+     "v4" :>+       "spreadsheets" :>+         Capture "spreadsheetId" Text :>+           "values" :>+             Capture "range" Text :>+               QueryParam "$.xgafv" Xgafv :>+                 QueryParam "upload_protocol" Text :>+                   QueryParam "pp" Bool :>+                     QueryParam "access_token" Text :>+                       QueryParam "uploadType" Text :>+                         QueryParam "valueInputOption" Text :>+                           QueryParam "bearer_token" Text :>+                             QueryParam "callback" Text :>+                               QueryParam "alt" AltJSON :>+                                 ReqBody '[JSON] ValueRange :>+                                   Put '[JSON] UpdateValuesResponse++-- | Sets values in a range of a spreadsheet. The caller must specify the+-- spreadsheet ID, range, and a valueInputOption.+--+-- /See:/ 'spreadsheetsValuesUpdate' smart constructor.+data SpreadsheetsValuesUpdate = SpreadsheetsValuesUpdate'+    { _svuXgafv            :: !(Maybe Xgafv)+    , _svuUploadProtocol   :: !(Maybe Text)+    , _svuPp               :: !Bool+    , _svuAccessToken      :: !(Maybe Text)+    , _svuSpreadsheetId    :: !Text+    , _svuUploadType       :: !(Maybe Text)+    , _svuValueInputOption :: !(Maybe Text)+    , _svuPayload          :: !ValueRange+    , _svuBearerToken      :: !(Maybe Text)+    , _svuRange            :: !Text+    , _svuCallback         :: !(Maybe Text)+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'SpreadsheetsValuesUpdate' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'svuXgafv'+--+-- * 'svuUploadProtocol'+--+-- * 'svuPp'+--+-- * 'svuAccessToken'+--+-- * 'svuSpreadsheetId'+--+-- * 'svuUploadType'+--+-- * 'svuValueInputOption'+--+-- * 'svuPayload'+--+-- * 'svuBearerToken'+--+-- * 'svuRange'+--+-- * 'svuCallback'+spreadsheetsValuesUpdate+    :: Text -- ^ 'svuSpreadsheetId'+    -> ValueRange -- ^ 'svuPayload'+    -> Text -- ^ 'svuRange'+    -> SpreadsheetsValuesUpdate+spreadsheetsValuesUpdate pSvuSpreadsheetId_ pSvuPayload_ pSvuRange_ =+    SpreadsheetsValuesUpdate'+    { _svuXgafv = Nothing+    , _svuUploadProtocol = Nothing+    , _svuPp = True+    , _svuAccessToken = Nothing+    , _svuSpreadsheetId = pSvuSpreadsheetId_+    , _svuUploadType = Nothing+    , _svuValueInputOption = Nothing+    , _svuPayload = pSvuPayload_+    , _svuBearerToken = Nothing+    , _svuRange = pSvuRange_+    , _svuCallback = Nothing+    }++-- | V1 error format.+svuXgafv :: Lens' SpreadsheetsValuesUpdate (Maybe Xgafv)+svuXgafv = lens _svuXgafv (\ s a -> s{_svuXgafv = a})++-- | Upload protocol for media (e.g. \"raw\", \"multipart\").+svuUploadProtocol :: Lens' SpreadsheetsValuesUpdate (Maybe Text)+svuUploadProtocol+  = lens _svuUploadProtocol+      (\ s a -> s{_svuUploadProtocol = a})++-- | Pretty-print response.+svuPp :: Lens' SpreadsheetsValuesUpdate Bool+svuPp = lens _svuPp (\ s a -> s{_svuPp = a})++-- | OAuth access token.+svuAccessToken :: Lens' SpreadsheetsValuesUpdate (Maybe Text)+svuAccessToken+  = lens _svuAccessToken+      (\ s a -> s{_svuAccessToken = a})++-- | The ID of the spreadsheet to update.+svuSpreadsheetId :: Lens' SpreadsheetsValuesUpdate Text+svuSpreadsheetId+  = lens _svuSpreadsheetId+      (\ s a -> s{_svuSpreadsheetId = a})++-- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").+svuUploadType :: Lens' SpreadsheetsValuesUpdate (Maybe Text)+svuUploadType+  = lens _svuUploadType+      (\ s a -> s{_svuUploadType = a})++-- | How the input data should be interpreted.+svuValueInputOption :: Lens' SpreadsheetsValuesUpdate (Maybe Text)+svuValueInputOption+  = lens _svuValueInputOption+      (\ s a -> s{_svuValueInputOption = a})++-- | Multipart request metadata.+svuPayload :: Lens' SpreadsheetsValuesUpdate ValueRange+svuPayload+  = lens _svuPayload (\ s a -> s{_svuPayload = a})++-- | OAuth bearer token.+svuBearerToken :: Lens' SpreadsheetsValuesUpdate (Maybe Text)+svuBearerToken+  = lens _svuBearerToken+      (\ s a -> s{_svuBearerToken = a})++-- | The A1 notation of the values to update.+svuRange :: Lens' SpreadsheetsValuesUpdate Text+svuRange = lens _svuRange (\ s a -> s{_svuRange = a})++-- | JSONP+svuCallback :: Lens' SpreadsheetsValuesUpdate (Maybe Text)+svuCallback+  = lens _svuCallback (\ s a -> s{_svuCallback = a})++instance GoogleRequest SpreadsheetsValuesUpdate where+        type Rs SpreadsheetsValuesUpdate =+             UpdateValuesResponse+        type Scopes SpreadsheetsValuesUpdate =+             '["https://www.googleapis.com/auth/drive",+               "https://www.googleapis.com/auth/spreadsheets"]+        requestClient SpreadsheetsValuesUpdate'{..}+          = go _svuSpreadsheetId _svuRange _svuXgafv+              _svuUploadProtocol+              (Just _svuPp)+              _svuAccessToken+              _svuUploadType+              _svuValueInputOption+              _svuBearerToken+              _svuCallback+              (Just AltJSON)+              _svuPayload+              sheetsService+          where go+                  = buildClient+                      (Proxy :: Proxy SpreadsheetsValuesUpdateResource)+                      mempty
+ gen/Network/Google/Sheets.hs view
@@ -0,0 +1,1091 @@+{-# LANGUAGE DataKinds         #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# LANGUAGE TypeOperators     #-}++{-# OPTIONS_GHC -fno-warn-unused-imports    #-}+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}++-- |+-- Module      : Network.Google.Sheets+-- Copyright   : (c) 2015-2016 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Reads and writes Google Sheets.+--+-- /See:/ <https://developers.google.com/sheets/ Google Sheets API Reference>+module Network.Google.Sheets+    (+    -- * Service Configuration+      sheetsService++    -- * OAuth Scopes+    , spreadsheetsReadOnlyScope+    , driveReadOnlyScope+    , driveScope+    , spreadsheetsScope++    -- * API Declaration+    , SheetsAPI++    -- * Resources++    -- ** sheets.spreadsheets.batchUpdate+    , module Network.Google.Resource.Sheets.Spreadsheets.BatchUpdate++    -- ** sheets.spreadsheets.create+    , module Network.Google.Resource.Sheets.Spreadsheets.Create++    -- ** sheets.spreadsheets.get+    , module Network.Google.Resource.Sheets.Spreadsheets.Get++    -- ** sheets.spreadsheets.sheets.copyTo+    , module Network.Google.Resource.Sheets.Spreadsheets.Sheets.CopyTo++    -- ** sheets.spreadsheets.values.batchGet+    , module Network.Google.Resource.Sheets.Spreadsheets.Values.BatchGet++    -- ** sheets.spreadsheets.values.batchUpdate+    , module Network.Google.Resource.Sheets.Spreadsheets.Values.BatchUpdate++    -- ** sheets.spreadsheets.values.get+    , module Network.Google.Resource.Sheets.Spreadsheets.Values.Get++    -- ** sheets.spreadsheets.values.update+    , module Network.Google.Resource.Sheets.Spreadsheets.Values.Update++    -- * Types++    -- ** PivotGroupSortValueBucket+    , PivotGroupSortValueBucket+    , pivotGroupSortValueBucket+    , pgsvbBuckets+    , pgsvbValuesIndex++    -- ** ValueRange+    , ValueRange+    , valueRange+    , vrValues+    , vrRange+    , vrMajorDimension++    -- ** SortRangeRequest+    , SortRangeRequest+    , sortRangeRequest+    , srrSortSpecs+    , srrRange++    -- ** CopyPasteRequestPasteType+    , CopyPasteRequestPasteType (..)++    -- ** DeleteNamedRangeRequest+    , DeleteNamedRangeRequest+    , deleteNamedRangeRequest+    , dnrrNamedRangeId++    -- ** UpdateNamedRangeRequest+    , UpdateNamedRangeRequest+    , updateNamedRangeRequest+    , unrrNamedRange+    , unrrFields++    -- ** BasicChartAxisPosition+    , BasicChartAxisPosition (..)++    -- ** ChartData+    , ChartData+    , chartData+    , cdSourceRange++    -- ** BasicChartSeriesTargetAxis+    , BasicChartSeriesTargetAxis (..)++    -- ** SpreadsheetProperties+    , SpreadsheetProperties+    , spreadsheetProperties+    , spDefaultFormat+    , spLocale+    , spAutoRecalc+    , spTitle+    , spTimeZone++    -- ** BOrders+    , BOrders+    , bOrders+    , boBottom+    , boLeft+    , boRight+    , boTop++    -- ** TextFormatRun+    , TextFormatRun+    , textFormatRun+    , tfrFormat+    , tfrStartIndex++    -- ** AddSheetRequest+    , AddSheetRequest+    , addSheetRequest+    , asrProperties++    -- ** SortSpec+    , SortSpec+    , sortSpec+    , ssSortOrder+    , ssDimensionIndex++    -- ** CopyPasteRequest+    , CopyPasteRequest+    , copyPasteRequest+    , cprDestination+    , cprSource+    , cprPasteOrientation+    , cprPasteType++    -- ** GridRange+    , GridRange+    , gridRange+    , grEndColumnIndex+    , grStartColumnIndex+    , grEndRowIndex+    , grStartRowIndex+    , grSheetId++    -- ** AppendDimensionRequestDimension+    , AppendDimensionRequestDimension (..)++    -- ** AddFilterViewResponse+    , AddFilterViewResponse+    , addFilterViewResponse+    , afvrFilter++    -- ** DimensionRangeDimension+    , DimensionRangeDimension (..)++    -- ** BooleanCondition+    , BooleanCondition+    , booleanCondition+    , bcValues+    , bcType++    -- ** AutoResizeDimensionsRequest+    , AutoResizeDimensionsRequest+    , autoResizeDimensionsRequest+    , ardrDimensions++    -- ** Sheet+    , Sheet+    , sheet+    , sData+    , sMerges+    , sProtectedRanges+    , sCharts+    , sBasicFilter+    , sConditionalFormats+    , sFilterViews+    , sProperties++    -- ** GridCoordinate+    , GridCoordinate+    , gridCoordinate+    , gcColumnIndex+    , gcRowIndex+    , gcSheetId++    -- ** ClearBasicFilterRequest+    , ClearBasicFilterRequest+    , clearBasicFilterRequest+    , cbfrSheetId++    -- ** UpdateEmbeddedObjectPositionRequest+    , UpdateEmbeddedObjectPositionRequest+    , updateEmbeddedObjectPositionRequest+    , ueoprNewPosition+    , ueoprObjectId+    , ueoprFields++    -- ** SourceAndDestinationDimension+    , SourceAndDestinationDimension (..)++    -- ** BooleanRule+    , BooleanRule+    , booleanRule+    , brFormat+    , brCondition++    -- ** CellFormatWrapStrategy+    , CellFormatWrapStrategy (..)++    -- ** SourceAndDestination+    , SourceAndDestination+    , sourceAndDestination+    , sadDimension+    , sadSource+    , sadFillLength++    -- ** PasteDataRequest+    , PasteDataRequest+    , pasteDataRequest+    , pdrData+    , pdrCoordinate+    , pdrHTML+    , pdrType+    , pdrDelimiter++    -- ** BatchUpdateValuesRequestValueInputOption+    , BatchUpdateValuesRequestValueInputOption (..)++    -- ** AppendCellsRequest+    , AppendCellsRequest+    , appendCellsRequest+    , acrRows+    , acrSheetId+    , acrFields++    -- ** FindReplaceResponse+    , FindReplaceResponse+    , findReplaceResponse+    , frrValuesChanged+    , frrFormulasChanged+    , frrRowsChanged+    , frrSheetsChanged+    , frrOccurrencesChanged++    -- ** PieChartSpec+    , PieChartSpec+    , pieChartSpec+    , pcsPieHole+    , pcsLegendPosition+    , pcsDomain+    , pcsSeries+    , pcsThreeDimensional++    -- ** DataValidationRule+    , DataValidationRule+    , dataValidationRule+    , dvrShowCustomUi+    , dvrInputMessage+    , dvrStrict+    , dvrCondition++    -- ** FilterView+    , FilterView+    , filterView+    , fvSortSpecs+    , fvNamedRangeId+    , fvRange+    , fvFilterViewId+    , fvTitle+    , fvCriteria++    -- ** Color+    , Color+    , color+    , cRed+    , cAlpha+    , cGreen+    , cBlue++    -- ** DeleteFilterViewRequest+    , DeleteFilterViewRequest+    , deleteFilterViewRequest+    , dfvrFilterId++    -- ** UpdateFilterViewRequest+    , UpdateFilterViewRequest+    , updateFilterViewRequest+    , ufvrFilter+    , ufvrFields++    -- ** BasicChartSeries+    , BasicChartSeries+    , basicChartSeries+    , bcsTargetAxis+    , bcsSeries+    , bcsType++    -- ** AddProtectedRangeRequest+    , AddProtectedRangeRequest+    , addProtectedRangeRequest+    , aprrProtectedRange++    -- ** PieChartSpecLegendPosition+    , PieChartSpecLegendPosition (..)++    -- ** RepeatCellRequest+    , RepeatCellRequest+    , repeatCellRequest+    , rcrCell+    , rcrRange+    , rcrFields++    -- ** ConditionValue+    , ConditionValue+    , conditionValue+    , cvRelativeDate+    , cvUserEnteredValue++    -- ** DeleteDimensionRequest+    , DeleteDimensionRequest+    , deleteDimensionRequest+    , ddrRange++    -- ** FindReplaceRequest+    , FindReplaceRequest+    , findReplaceRequest+    , frrMatchCase+    , frrAllSheets+    , frrIncludeFormulas+    , frrMatchEntireCell+    , frrRange+    , frrSheetId+    , frrFind+    , frrSearchByRegex+    , frrReplacement++    -- ** MoveDimensionRequest+    , MoveDimensionRequest+    , moveDimensionRequest+    , mdrDestinationIndex+    , mdrSource++    -- ** CellFormatVerticalAlignment+    , CellFormatVerticalAlignment (..)++    -- ** NumberFormatType+    , NumberFormatType (..)++    -- ** GradientRule+    , GradientRule+    , gradientRule+    , grMidpoint+    , grMaxpoint+    , grMinpoint++    -- ** CutPasteRequest+    , CutPasteRequest+    , cutPasteRequest+    , cDestination+    , cSource+    , cPasteType++    -- ** UpdateEmbeddedObjectPositionResponse+    , UpdateEmbeddedObjectPositionResponse+    , updateEmbeddedObjectPositionResponse+    , ueoprPosition++    -- ** ConditionValueRelativeDate+    , ConditionValueRelativeDate (..)++    -- ** Response+    , Response+    , response+    , rAddFilterView+    , rDuplicateFilterView+    , rUpdateEmbeddedObjectPosition+    , rAddSheet+    , rFindReplace+    , rAddProtectedRange+    , rDeleteConditionalFormatRule+    , rUpdateConditionalFormatRule+    , rAddNamedRange+    , rAddChart+    , rDuplicateSheet++    -- ** FilterCriteria+    , FilterCriteria+    , filterCriteria+    , fcHiddenValues+    , fcCondition++    -- ** ErrorValue+    , ErrorValue+    , errorValue+    , evType+    , evMessage++    -- ** UpdateConditionalFormatRuleRequest+    , UpdateConditionalFormatRuleRequest+    , updateConditionalFormatRuleRequest+    , ucfrrRule+    , ucfrrNewIndex+    , ucfrrSheetId+    , ucfrrIndex++    -- ** DeleteConditionalFormatRuleRequest+    , DeleteConditionalFormatRuleRequest+    , deleteConditionalFormatRuleRequest+    , dcfrrSheetId+    , dcfrrIndex++    -- ** SortSpecSortOrder+    , SortSpecSortOrder (..)++    -- ** OverlayPosition+    , OverlayPosition+    , overlayPosition+    , opHeightPixels+    , opOffSetYPixels+    , opAnchorCell+    , opWidthPixels+    , opOffSetXPixels++    -- ** DeleteEmbeddedObjectRequest+    , DeleteEmbeddedObjectRequest+    , deleteEmbeddedObjectRequest+    , deorObjectId++    -- ** SheetProperties+    , SheetProperties+    , sheetProperties+    , sTabColor+    , sGridProperties+    , sSheetType+    , sHidden+    , sSheetId+    , sTitle+    , sRightToLeft+    , sIndex++    -- ** FilterViewCriteria+    , FilterViewCriteria+    , filterViewCriteria+    , fvcAddtional++    -- ** BatchUpdateValuesResponse+    , BatchUpdateValuesResponse+    , batchUpdateValuesResponse+    , buvrTotalUpdatedColumns+    , buvrResponses+    , buvrSpreadsheetId+    , buvrTotalUpdatedSheets+    , buvrTotalUpdatedCells+    , buvrTotalUpdatedRows++    -- ** UpdateSheetPropertiesRequest+    , UpdateSheetPropertiesRequest+    , updateSheetPropertiesRequest+    , usprFields+    , usprProperties++    -- ** Spreadsheet+    , Spreadsheet+    , spreadsheet+    , sprSheets+    , sprNamedRanges+    , sprSpreadsheetId+    , sprProperties++    -- ** InsertDimensionRequest+    , InsertDimensionRequest+    , insertDimensionRequest+    , idrRange+    , idrInheritFromBefore++    -- ** PivotValueSummarizeFunction+    , PivotValueSummarizeFunction (..)++    -- ** InterpolationPoint+    , InterpolationPoint+    , interpolationPoint+    , ipColor+    , ipValue+    , ipType++    -- ** CellData+    , CellData+    , cellData+    , cdTextFormatRuns+    , cdNote+    , cdUserEnteredValue+    , cdUserEnteredFormat+    , cdEffectiveFormat+    , cdPivotTable+    , cdFormattedValue+    , cdDataValidation+    , cdHyperlink+    , cdEffectiveValue++    -- ** ChartSourceRange+    , ChartSourceRange+    , chartSourceRange+    , csrSources++    -- ** AddNamedRangeResponse+    , AddNamedRangeResponse+    , addNamedRangeResponse+    , anrrNamedRange++    -- ** AddChartResponse+    , AddChartResponse+    , addChartResponse+    , acrChart++    -- ** UpdateChartSpecRequest+    , UpdateChartSpecRequest+    , updateChartSpecRequest+    , ucsrSpec+    , ucsrChartId++    -- ** SetBasicFilterRequest+    , SetBasicFilterRequest+    , setBasicFilterRequest+    , sbfrFilter++    -- ** GridProperties+    , GridProperties+    , gridProperties+    , gpFrozenColumnCount+    , gpColumnCount+    , gpHideGridlines+    , gpFrozenRowCount+    , gpRowCount++    -- ** CellFormatHyperlinkDisplayType+    , CellFormatHyperlinkDisplayType (..)++    -- ** BasicFilterCriteria+    , BasicFilterCriteria+    , basicFilterCriteria+    , bfcAddtional++    -- ** UpdateDimensionPropertiesRequest+    , UpdateDimensionPropertiesRequest+    , updateDimensionPropertiesRequest+    , udprRange+    , udprFields+    , udprProperties++    -- ** PivotTableCriteria+    , PivotTableCriteria+    , pivotTableCriteria+    , ptcAddtional++    -- ** AutoFillRequest+    , AutoFillRequest+    , autoFillRequest+    , afrSourceAndDestination+    , afrUseAlternateSeries+    , afrRange++    -- ** DuplicateSheetRequest+    , DuplicateSheetRequest+    , duplicateSheetRequest+    , dsrNewSheetName+    , dsrInsertSheetIndex+    , dsrSourceSheetId+    , dsrNewSheetId++    -- ** DuplicateFilterViewResponse+    , DuplicateFilterViewResponse+    , duplicateFilterViewResponse+    , dfvrFilter++    -- ** SheetPropertiesSheetType+    , SheetPropertiesSheetType (..)++    -- ** BatchUpdateValuesRequest+    , BatchUpdateValuesRequest+    , batchUpdateValuesRequest+    , buvrData+    , buvrValueInputOption++    -- ** AddChartRequest+    , AddChartRequest+    , addChartRequest+    , aChart++    -- ** NamedRange+    , NamedRange+    , namedRange+    , nrNamedRangeId+    , nrName+    , nrRange++    -- ** MergeCellsRequest+    , MergeCellsRequest+    , mergeCellsRequest+    , mcrMergeType+    , mcrRange++    -- ** MergeCellsRequestMergeType+    , MergeCellsRequestMergeType (..)++    -- ** CellFormatHorizontalAlignment+    , CellFormatHorizontalAlignment (..)++    -- ** BOrder+    , BOrder+    , bOrder+    , boStyle+    , boColor+    , boWidth++    -- ** ExtendedValue+    , ExtendedValue+    , extendedValue+    , evBoolValue+    , evNumberValue+    , evErrorValue+    , evStringValue+    , evFormulaValue++    -- ** AddNamedRangeRequest+    , AddNamedRangeRequest+    , addNamedRangeRequest+    , aNamedRange++    -- ** PivotFilterCriteria+    , PivotFilterCriteria+    , pivotFilterCriteria+    , pfcVisibleValues++    -- ** DimensionRange+    , DimensionRange+    , dimensionRange+    , drDimension+    , drEndIndex+    , drSheetId+    , drStartIndex++    -- ** UpdateSpreadsheetPropertiesRequest+    , UpdateSpreadsheetPropertiesRequest+    , updateSpreadsheetPropertiesRequest+    , uFields+    , uProperties++    -- ** AddProtectedRangeResponse+    , AddProtectedRangeResponse+    , addProtectedRangeResponse+    , aProtectedRange++    -- ** AppendDimensionRequest+    , AppendDimensionRequest+    , appendDimensionRequest+    , adrLength+    , adrDimension+    , adrSheetId++    -- ** PivotValue+    , PivotValue+    , pivotValue+    , pvSourceColumnOffSet+    , pvFormula+    , pvName+    , pvSummarizeFunction++    -- ** UnmergeCellsRequest+    , UnmergeCellsRequest+    , unmergeCellsRequest+    , ucrRange++    -- ** DeleteSheetRequest+    , DeleteSheetRequest+    , deleteSheetRequest+    , dsrSheetId++    -- ** BooleanConditionType+    , BooleanConditionType (..)++    -- ** UpdateBOrdersRequest+    , UpdateBOrdersRequest+    , updateBOrdersRequest+    , uborBottom+    , uborInnerHorizontal+    , uborLeft+    , uborInnerVertical+    , uborRange+    , uborRight+    , uborTop++    -- ** ValueRangeMajorDimension+    , ValueRangeMajorDimension (..)++    -- ** PivotGroupSortOrder+    , PivotGroupSortOrder (..)++    -- ** BasicChartSpecChartType+    , BasicChartSpecChartType (..)++    -- ** EmbeddedChart+    , EmbeddedChart+    , embeddedChart+    , ecSpec+    , ecPosition+    , ecChartId++    -- ** RowData+    , RowData+    , rowData+    , rdValues++    -- ** Editors+    , Editors+    , editors+    , eGroups+    , eUsers+    , eDomainUsersCanEdit++    -- ** Xgafv+    , Xgafv (..)++    -- ** PivotTable+    , PivotTable+    , pivotTable+    , ptValues+    , ptValueLayout+    , ptRows+    , ptSource+    , ptColumns+    , ptCriteria++    -- ** EmbeddedObjectPosition+    , EmbeddedObjectPosition+    , embeddedObjectPosition+    , eopOverlayPosition+    , eopSheetId+    , eopNewSheet++    -- ** BasicFilter+    , BasicFilter+    , basicFilter+    , bfSortSpecs+    , bfRange+    , bfCriteria++    -- ** TextToColumnsRequest+    , TextToColumnsRequest+    , textToColumnsRequest+    , ttcrDelimiterType+    , ttcrSource+    , ttcrDelimiter++    -- ** SpreadsheetPropertiesAutoRecalc+    , SpreadsheetPropertiesAutoRecalc (..)++    -- ** CopyPasteRequestPasteOrientation+    , CopyPasteRequestPasteOrientation (..)++    -- ** BatchUpdateSpreadsheetRequest+    , BatchUpdateSpreadsheetRequest+    , batchUpdateSpreadsheetRequest+    , busrRequests++    -- ** PasteDataRequestType+    , PasteDataRequestType (..)++    -- ** UpdateValuesResponse+    , UpdateValuesResponse+    , updateValuesResponse+    , uvrUpdatedCells+    , uvrSpreadsheetId+    , uvrUpdatedRows+    , uvrUpdatedRange+    , uvrUpdatedColumns++    -- ** CopySheetToAnotherSpreadsheetRequest+    , CopySheetToAnotherSpreadsheetRequest+    , copySheetToAnotherSpreadsheetRequest+    , cstasrDestinationSpreadsheetId++    -- ** AddFilterViewRequest+    , AddFilterViewRequest+    , addFilterViewRequest+    , aFilter++    -- ** PivotGroupValueMetadata+    , PivotGroupValueMetadata+    , pivotGroupValueMetadata+    , pgvmValue+    , pgvmCollapsed++    -- ** CellFormatTextDirection+    , CellFormatTextDirection (..)++    -- ** BasicChartSeriesType+    , BasicChartSeriesType (..)++    -- ** UpdateCellsRequest+    , UpdateCellsRequest+    , updateCellsRequest+    , updStart+    , updRows+    , updRange+    , updFields++    -- ** CellFormat+    , CellFormat+    , cellFormat+    , cfBOrders+    , cfVerticalAlignment+    , cfBackgRoundColor+    , cfHyperlinkDisplayType+    , cfWrapStrategy+    , cfNumberFormat+    , cfTextDirection+    , cfTextFormat+    , cfHorizontalAlignment+    , cfPadding++    -- ** DeleteProtectedRangeRequest+    , DeleteProtectedRangeRequest+    , deleteProtectedRangeRequest+    , dprrProtectedRangeId++    -- ** UpdateProtectedRangeRequest+    , UpdateProtectedRangeRequest+    , updateProtectedRangeRequest+    , uprrProtectedRange+    , uprrFields++    -- ** AddSheetResponse+    , AddSheetResponse+    , addSheetResponse+    , aProperties++    -- ** ProtectedRange+    , ProtectedRange+    , protectedRange+    , prProtectedRangeId+    , prWarningOnly+    , prNamedRangeId+    , prRange+    , prEditors+    , prUnprotectedRanges+    , prRequestingUserCanEdit+    , prDescription++    -- ** BasicChartAxis+    , BasicChartAxis+    , basicChartAxis+    , bcaFormat+    , bcaTitle+    , bcaPosition++    -- ** GridData+    , GridData+    , gridData+    , gdRowMetadata+    , gdStartRow+    , gdRowData+    , gdColumnMetadata+    , gdStartColumn++    -- ** NumberFormat+    , NumberFormat+    , numberFormat+    , nfPattern+    , nfType++    -- ** BatchUpdateSpreadsheetResponse+    , BatchUpdateSpreadsheetResponse+    , batchUpdateSpreadsheetResponse+    , busrSpreadsheetId+    , busrReplies++    -- ** SetDataValidationRequest+    , SetDataValidationRequest+    , setDataValidationRequest+    , sdvrRule+    , sdvrRange++    -- ** ChartSpecHiddenDimensionStrategy+    , ChartSpecHiddenDimensionStrategy (..)++    -- ** DuplicateFilterViewRequest+    , DuplicateFilterViewRequest+    , duplicateFilterViewRequest+    , dFilterId++    -- ** BOrderStyle+    , BOrderStyle (..)++    -- ** PivotGroup+    , PivotGroup+    , pivotGroup+    , pgValueMetadata+    , pgSourceColumnOffSet+    , pgSortOrder+    , pgShowTotals+    , pgValueBucket++    -- ** CutPasteRequestPasteType+    , CutPasteRequestPasteType (..)++    -- ** BasicChartSpecLegendPosition+    , BasicChartSpecLegendPosition (..)++    -- ** ErrorValueType+    , ErrorValueType (..)++    -- ** ConditionalFormatRule+    , ConditionalFormatRule+    , conditionalFormatRule+    , cfrBooleanRule+    , cfrGradientRule+    , cfrRanges++    -- ** BasicChartSpec+    , BasicChartSpec+    , basicChartSpec+    , bHeaderCount+    , bLegendPosition+    , bSeries+    , bChartType+    , bDomains+    , bAxis++    -- ** AddConditionalFormatRuleRequest+    , AddConditionalFormatRuleRequest+    , addConditionalFormatRuleRequest+    , acfrrRule+    , acfrrIndex++    -- ** PivotTableValueLayout+    , PivotTableValueLayout (..)++    -- ** DuplicateSheetResponse+    , DuplicateSheetResponse+    , duplicateSheetResponse+    , dsrProperties++    -- ** TextFormat+    , TextFormat+    , textFormat+    , tfFontFamily+    , tfForegRoundColor+    , tfFontSize+    , tfUnderline+    , tfItalic+    , tfBold+    , tfStrikethrough++    -- ** BasicChartDomain+    , BasicChartDomain+    , basicChartDomain+    , bcdDomain++    -- ** InterpolationPointType+    , InterpolationPointType (..)++    -- ** TextToColumnsRequestDelimiterType+    , TextToColumnsRequestDelimiterType (..)++    -- ** Padding+    , Padding+    , padding+    , pBottom+    , pLeft+    , pRight+    , pTop++    -- ** ChartSpec+    , ChartSpec+    , chartSpec+    , csTitle+    , csPieChart+    , csBasicChart+    , csHiddenDimensionStrategy++    -- ** DimensionProperties+    , DimensionProperties+    , dimensionProperties+    , dpHiddenByFilter+    , dpPixelSize+    , dpHiddenByUser++    -- ** BatchGetValuesResponse+    , BatchGetValuesResponse+    , batchGetValuesResponse+    , bgvrSpreadsheetId+    , bgvrValueRanges++    -- ** Request'+    , Request'+    , request'+    , reqAddFilterView+    , reqDeleteProtectedRange+    , reqUpdateProtectedRange+    , reqUpdateCells+    , reqDuplicateFilterView+    , reqAddConditionalFormatRule+    , reqSortRange+    , reqUpdateNamedRange+    , reqDeleteNamedRange+    , reqClearBasicFilter+    , reqAppendCells+    , reqPasteData+    , reqUpdateEmbeddedObjectPosition+    , reqCopyPaste+    , reqAutoResizeDimensions+    , reqAddSheet+    , reqFindReplace+    , reqDeleteDimension+    , reqCutPaste+    , reqMoveDimension+    , reqRepeatCell+    , reqAddProtectedRange+    , reqUpdateFilterView+    , reqDeleteFilterView+    , reqInsertDimension+    , reqUpdateSheetProperties+    , reqDeleteConditionalFormatRule+    , reqUpdateConditionalFormatRule+    , reqDeleteEmbeddedObject+    , reqMergeCells+    , reqAddNamedRange+    , reqAddChart+    , reqDuplicateSheet+    , reqAutoFill+    , reqUpdateDimensionProperties+    , reqUpdateChartSpec+    , reqSetBasicFilter+    , reqTextToColumns+    , reqUpdateSpreadsheetProperties+    , reqDeleteSheet+    , reqUnmergeCells+    , reqUpdateBOrders+    , reqAppendDimension+    , reqSetDataValidation++    -- ** DeleteConditionalFormatRuleResponse+    , DeleteConditionalFormatRuleResponse+    , deleteConditionalFormatRuleResponse+    , dcfrrRule++    -- ** UpdateConditionalFormatRuleResponse+    , UpdateConditionalFormatRuleResponse+    , updateConditionalFormatRuleResponse+    , uNewRule+    , uNewIndex+    , uOldIndex+    , uOldRule+    ) where++import           Network.Google.Prelude+import           Network.Google.Resource.Sheets.Spreadsheets.BatchUpdate+import           Network.Google.Resource.Sheets.Spreadsheets.Create+import           Network.Google.Resource.Sheets.Spreadsheets.Get+import           Network.Google.Resource.Sheets.Spreadsheets.Sheets.CopyTo+import           Network.Google.Resource.Sheets.Spreadsheets.Values.BatchGet+import           Network.Google.Resource.Sheets.Spreadsheets.Values.BatchUpdate+import           Network.Google.Resource.Sheets.Spreadsheets.Values.Get+import           Network.Google.Resource.Sheets.Spreadsheets.Values.Update+import           Network.Google.Sheets.Types++{- $resources+TODO+-}++-- | Represents the entirety of the methods and resources available for the Google Sheets API service.+type SheetsAPI =+     SpreadsheetsSheetsCopyToResource :<|>+       SpreadsheetsValuesGetResource+       :<|> SpreadsheetsValuesBatchGetResource+       :<|> SpreadsheetsValuesBatchUpdateResource+       :<|> SpreadsheetsValuesUpdateResource+       :<|> SpreadsheetsGetResource+       :<|> SpreadsheetsCreateResource+       :<|> SpreadsheetsBatchUpdateResource
+ gen/Network/Google/Sheets/Types.hs view
@@ -0,0 +1,1058 @@+{-# LANGUAGE DataKinds          #-}+{-# LANGUAGE DeriveDataTypeable #-}+{-# LANGUAGE DeriveGeneric      #-}+{-# LANGUAGE NoImplicitPrelude  #-}+{-# LANGUAGE OverloadedStrings  #-}++{-# OPTIONS_GHC -fno-warn-unused-imports #-}++-- |+-- Module      : Network.Google.Sheets.Types+-- Copyright   : (c) 2015-2016 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+module Network.Google.Sheets.Types+    (+    -- * Service Configuration+      sheetsService++    -- * OAuth Scopes+    , spreadsheetsReadOnlyScope+    , driveReadOnlyScope+    , driveScope+    , spreadsheetsScope++    -- * PivotGroupSortValueBucket+    , PivotGroupSortValueBucket+    , pivotGroupSortValueBucket+    , pgsvbBuckets+    , pgsvbValuesIndex++    -- * ValueRange+    , ValueRange+    , valueRange+    , vrValues+    , vrRange+    , vrMajorDimension++    -- * SortRangeRequest+    , SortRangeRequest+    , sortRangeRequest+    , srrSortSpecs+    , srrRange++    -- * CopyPasteRequestPasteType+    , CopyPasteRequestPasteType (..)++    -- * DeleteNamedRangeRequest+    , DeleteNamedRangeRequest+    , deleteNamedRangeRequest+    , dnrrNamedRangeId++    -- * UpdateNamedRangeRequest+    , UpdateNamedRangeRequest+    , updateNamedRangeRequest+    , unrrNamedRange+    , unrrFields++    -- * BasicChartAxisPosition+    , BasicChartAxisPosition (..)++    -- * ChartData+    , ChartData+    , chartData+    , cdSourceRange++    -- * BasicChartSeriesTargetAxis+    , BasicChartSeriesTargetAxis (..)++    -- * SpreadsheetProperties+    , SpreadsheetProperties+    , spreadsheetProperties+    , spDefaultFormat+    , spLocale+    , spAutoRecalc+    , spTitle+    , spTimeZone++    -- * BOrders+    , BOrders+    , bOrders+    , boBottom+    , boLeft+    , boRight+    , boTop++    -- * TextFormatRun+    , TextFormatRun+    , textFormatRun+    , tfrFormat+    , tfrStartIndex++    -- * AddSheetRequest+    , AddSheetRequest+    , addSheetRequest+    , asrProperties++    -- * SortSpec+    , SortSpec+    , sortSpec+    , ssSortOrder+    , ssDimensionIndex++    -- * CopyPasteRequest+    , CopyPasteRequest+    , copyPasteRequest+    , cprDestination+    , cprSource+    , cprPasteOrientation+    , cprPasteType++    -- * GridRange+    , GridRange+    , gridRange+    , grEndColumnIndex+    , grStartColumnIndex+    , grEndRowIndex+    , grStartRowIndex+    , grSheetId++    -- * AppendDimensionRequestDimension+    , AppendDimensionRequestDimension (..)++    -- * AddFilterViewResponse+    , AddFilterViewResponse+    , addFilterViewResponse+    , afvrFilter++    -- * DimensionRangeDimension+    , DimensionRangeDimension (..)++    -- * BooleanCondition+    , BooleanCondition+    , booleanCondition+    , bcValues+    , bcType++    -- * AutoResizeDimensionsRequest+    , AutoResizeDimensionsRequest+    , autoResizeDimensionsRequest+    , ardrDimensions++    -- * Sheet+    , Sheet+    , sheet+    , sData+    , sMerges+    , sProtectedRanges+    , sCharts+    , sBasicFilter+    , sConditionalFormats+    , sFilterViews+    , sProperties++    -- * GridCoordinate+    , GridCoordinate+    , gridCoordinate+    , gcColumnIndex+    , gcRowIndex+    , gcSheetId++    -- * ClearBasicFilterRequest+    , ClearBasicFilterRequest+    , clearBasicFilterRequest+    , cbfrSheetId++    -- * UpdateEmbeddedObjectPositionRequest+    , UpdateEmbeddedObjectPositionRequest+    , updateEmbeddedObjectPositionRequest+    , ueoprNewPosition+    , ueoprObjectId+    , ueoprFields++    -- * SourceAndDestinationDimension+    , SourceAndDestinationDimension (..)++    -- * BooleanRule+    , BooleanRule+    , booleanRule+    , brFormat+    , brCondition++    -- * CellFormatWrapStrategy+    , CellFormatWrapStrategy (..)++    -- * SourceAndDestination+    , SourceAndDestination+    , sourceAndDestination+    , sadDimension+    , sadSource+    , sadFillLength++    -- * PasteDataRequest+    , PasteDataRequest+    , pasteDataRequest+    , pdrData+    , pdrCoordinate+    , pdrHTML+    , pdrType+    , pdrDelimiter++    -- * BatchUpdateValuesRequestValueInputOption+    , BatchUpdateValuesRequestValueInputOption (..)++    -- * AppendCellsRequest+    , AppendCellsRequest+    , appendCellsRequest+    , acrRows+    , acrSheetId+    , acrFields++    -- * FindReplaceResponse+    , FindReplaceResponse+    , findReplaceResponse+    , frrValuesChanged+    , frrFormulasChanged+    , frrRowsChanged+    , frrSheetsChanged+    , frrOccurrencesChanged++    -- * PieChartSpec+    , PieChartSpec+    , pieChartSpec+    , pcsPieHole+    , pcsLegendPosition+    , pcsDomain+    , pcsSeries+    , pcsThreeDimensional++    -- * DataValidationRule+    , DataValidationRule+    , dataValidationRule+    , dvrShowCustomUi+    , dvrInputMessage+    , dvrStrict+    , dvrCondition++    -- * FilterView+    , FilterView+    , filterView+    , fvSortSpecs+    , fvNamedRangeId+    , fvRange+    , fvFilterViewId+    , fvTitle+    , fvCriteria++    -- * Color+    , Color+    , color+    , cRed+    , cAlpha+    , cGreen+    , cBlue++    -- * DeleteFilterViewRequest+    , DeleteFilterViewRequest+    , deleteFilterViewRequest+    , dfvrFilterId++    -- * UpdateFilterViewRequest+    , UpdateFilterViewRequest+    , updateFilterViewRequest+    , ufvrFilter+    , ufvrFields++    -- * BasicChartSeries+    , BasicChartSeries+    , basicChartSeries+    , bcsTargetAxis+    , bcsSeries+    , bcsType++    -- * AddProtectedRangeRequest+    , AddProtectedRangeRequest+    , addProtectedRangeRequest+    , aprrProtectedRange++    -- * PieChartSpecLegendPosition+    , PieChartSpecLegendPosition (..)++    -- * RepeatCellRequest+    , RepeatCellRequest+    , repeatCellRequest+    , rcrCell+    , rcrRange+    , rcrFields++    -- * ConditionValue+    , ConditionValue+    , conditionValue+    , cvRelativeDate+    , cvUserEnteredValue++    -- * DeleteDimensionRequest+    , DeleteDimensionRequest+    , deleteDimensionRequest+    , ddrRange++    -- * FindReplaceRequest+    , FindReplaceRequest+    , findReplaceRequest+    , frrMatchCase+    , frrAllSheets+    , frrIncludeFormulas+    , frrMatchEntireCell+    , frrRange+    , frrSheetId+    , frrFind+    , frrSearchByRegex+    , frrReplacement++    -- * MoveDimensionRequest+    , MoveDimensionRequest+    , moveDimensionRequest+    , mdrDestinationIndex+    , mdrSource++    -- * CellFormatVerticalAlignment+    , CellFormatVerticalAlignment (..)++    -- * NumberFormatType+    , NumberFormatType (..)++    -- * GradientRule+    , GradientRule+    , gradientRule+    , grMidpoint+    , grMaxpoint+    , grMinpoint++    -- * CutPasteRequest+    , CutPasteRequest+    , cutPasteRequest+    , cDestination+    , cSource+    , cPasteType++    -- * UpdateEmbeddedObjectPositionResponse+    , UpdateEmbeddedObjectPositionResponse+    , updateEmbeddedObjectPositionResponse+    , ueoprPosition++    -- * ConditionValueRelativeDate+    , ConditionValueRelativeDate (..)++    -- * Response+    , Response+    , response+    , rAddFilterView+    , rDuplicateFilterView+    , rUpdateEmbeddedObjectPosition+    , rAddSheet+    , rFindReplace+    , rAddProtectedRange+    , rDeleteConditionalFormatRule+    , rUpdateConditionalFormatRule+    , rAddNamedRange+    , rAddChart+    , rDuplicateSheet++    -- * FilterCriteria+    , FilterCriteria+    , filterCriteria+    , fcHiddenValues+    , fcCondition++    -- * ErrorValue+    , ErrorValue+    , errorValue+    , evType+    , evMessage++    -- * UpdateConditionalFormatRuleRequest+    , UpdateConditionalFormatRuleRequest+    , updateConditionalFormatRuleRequest+    , ucfrrRule+    , ucfrrNewIndex+    , ucfrrSheetId+    , ucfrrIndex++    -- * DeleteConditionalFormatRuleRequest+    , DeleteConditionalFormatRuleRequest+    , deleteConditionalFormatRuleRequest+    , dcfrrSheetId+    , dcfrrIndex++    -- * SortSpecSortOrder+    , SortSpecSortOrder (..)++    -- * OverlayPosition+    , OverlayPosition+    , overlayPosition+    , opHeightPixels+    , opOffSetYPixels+    , opAnchorCell+    , opWidthPixels+    , opOffSetXPixels++    -- * DeleteEmbeddedObjectRequest+    , DeleteEmbeddedObjectRequest+    , deleteEmbeddedObjectRequest+    , deorObjectId++    -- * SheetProperties+    , SheetProperties+    , sheetProperties+    , sTabColor+    , sGridProperties+    , sSheetType+    , sHidden+    , sSheetId+    , sTitle+    , sRightToLeft+    , sIndex++    -- * FilterViewCriteria+    , FilterViewCriteria+    , filterViewCriteria+    , fvcAddtional++    -- * BatchUpdateValuesResponse+    , BatchUpdateValuesResponse+    , batchUpdateValuesResponse+    , buvrTotalUpdatedColumns+    , buvrResponses+    , buvrSpreadsheetId+    , buvrTotalUpdatedSheets+    , buvrTotalUpdatedCells+    , buvrTotalUpdatedRows++    -- * UpdateSheetPropertiesRequest+    , UpdateSheetPropertiesRequest+    , updateSheetPropertiesRequest+    , usprFields+    , usprProperties++    -- * Spreadsheet+    , Spreadsheet+    , spreadsheet+    , sprSheets+    , sprNamedRanges+    , sprSpreadsheetId+    , sprProperties++    -- * InsertDimensionRequest+    , InsertDimensionRequest+    , insertDimensionRequest+    , idrRange+    , idrInheritFromBefore++    -- * PivotValueSummarizeFunction+    , PivotValueSummarizeFunction (..)++    -- * InterpolationPoint+    , InterpolationPoint+    , interpolationPoint+    , ipColor+    , ipValue+    , ipType++    -- * CellData+    , CellData+    , cellData+    , cdTextFormatRuns+    , cdNote+    , cdUserEnteredValue+    , cdUserEnteredFormat+    , cdEffectiveFormat+    , cdPivotTable+    , cdFormattedValue+    , cdDataValidation+    , cdHyperlink+    , cdEffectiveValue++    -- * ChartSourceRange+    , ChartSourceRange+    , chartSourceRange+    , csrSources++    -- * AddNamedRangeResponse+    , AddNamedRangeResponse+    , addNamedRangeResponse+    , anrrNamedRange++    -- * AddChartResponse+    , AddChartResponse+    , addChartResponse+    , acrChart++    -- * UpdateChartSpecRequest+    , UpdateChartSpecRequest+    , updateChartSpecRequest+    , ucsrSpec+    , ucsrChartId++    -- * SetBasicFilterRequest+    , SetBasicFilterRequest+    , setBasicFilterRequest+    , sbfrFilter++    -- * GridProperties+    , GridProperties+    , gridProperties+    , gpFrozenColumnCount+    , gpColumnCount+    , gpHideGridlines+    , gpFrozenRowCount+    , gpRowCount++    -- * CellFormatHyperlinkDisplayType+    , CellFormatHyperlinkDisplayType (..)++    -- * BasicFilterCriteria+    , BasicFilterCriteria+    , basicFilterCriteria+    , bfcAddtional++    -- * UpdateDimensionPropertiesRequest+    , UpdateDimensionPropertiesRequest+    , updateDimensionPropertiesRequest+    , udprRange+    , udprFields+    , udprProperties++    -- * PivotTableCriteria+    , PivotTableCriteria+    , pivotTableCriteria+    , ptcAddtional++    -- * AutoFillRequest+    , AutoFillRequest+    , autoFillRequest+    , afrSourceAndDestination+    , afrUseAlternateSeries+    , afrRange++    -- * DuplicateSheetRequest+    , DuplicateSheetRequest+    , duplicateSheetRequest+    , dsrNewSheetName+    , dsrInsertSheetIndex+    , dsrSourceSheetId+    , dsrNewSheetId++    -- * DuplicateFilterViewResponse+    , DuplicateFilterViewResponse+    , duplicateFilterViewResponse+    , dfvrFilter++    -- * SheetPropertiesSheetType+    , SheetPropertiesSheetType (..)++    -- * BatchUpdateValuesRequest+    , BatchUpdateValuesRequest+    , batchUpdateValuesRequest+    , buvrData+    , buvrValueInputOption++    -- * AddChartRequest+    , AddChartRequest+    , addChartRequest+    , aChart++    -- * NamedRange+    , NamedRange+    , namedRange+    , nrNamedRangeId+    , nrName+    , nrRange++    -- * MergeCellsRequest+    , MergeCellsRequest+    , mergeCellsRequest+    , mcrMergeType+    , mcrRange++    -- * MergeCellsRequestMergeType+    , MergeCellsRequestMergeType (..)++    -- * CellFormatHorizontalAlignment+    , CellFormatHorizontalAlignment (..)++    -- * BOrder+    , BOrder+    , bOrder+    , boStyle+    , boColor+    , boWidth++    -- * ExtendedValue+    , ExtendedValue+    , extendedValue+    , evBoolValue+    , evNumberValue+    , evErrorValue+    , evStringValue+    , evFormulaValue++    -- * AddNamedRangeRequest+    , AddNamedRangeRequest+    , addNamedRangeRequest+    , aNamedRange++    -- * PivotFilterCriteria+    , PivotFilterCriteria+    , pivotFilterCriteria+    , pfcVisibleValues++    -- * DimensionRange+    , DimensionRange+    , dimensionRange+    , drDimension+    , drEndIndex+    , drSheetId+    , drStartIndex++    -- * UpdateSpreadsheetPropertiesRequest+    , UpdateSpreadsheetPropertiesRequest+    , updateSpreadsheetPropertiesRequest+    , uFields+    , uProperties++    -- * AddProtectedRangeResponse+    , AddProtectedRangeResponse+    , addProtectedRangeResponse+    , aProtectedRange++    -- * AppendDimensionRequest+    , AppendDimensionRequest+    , appendDimensionRequest+    , adrLength+    , adrDimension+    , adrSheetId++    -- * PivotValue+    , PivotValue+    , pivotValue+    , pvSourceColumnOffSet+    , pvFormula+    , pvName+    , pvSummarizeFunction++    -- * UnmergeCellsRequest+    , UnmergeCellsRequest+    , unmergeCellsRequest+    , ucrRange++    -- * DeleteSheetRequest+    , DeleteSheetRequest+    , deleteSheetRequest+    , dsrSheetId++    -- * BooleanConditionType+    , BooleanConditionType (..)++    -- * UpdateBOrdersRequest+    , UpdateBOrdersRequest+    , updateBOrdersRequest+    , uborBottom+    , uborInnerHorizontal+    , uborLeft+    , uborInnerVertical+    , uborRange+    , uborRight+    , uborTop++    -- * ValueRangeMajorDimension+    , ValueRangeMajorDimension (..)++    -- * PivotGroupSortOrder+    , PivotGroupSortOrder (..)++    -- * BasicChartSpecChartType+    , BasicChartSpecChartType (..)++    -- * EmbeddedChart+    , EmbeddedChart+    , embeddedChart+    , ecSpec+    , ecPosition+    , ecChartId++    -- * RowData+    , RowData+    , rowData+    , rdValues++    -- * Editors+    , Editors+    , editors+    , eGroups+    , eUsers+    , eDomainUsersCanEdit++    -- * Xgafv+    , Xgafv (..)++    -- * PivotTable+    , PivotTable+    , pivotTable+    , ptValues+    , ptValueLayout+    , ptRows+    , ptSource+    , ptColumns+    , ptCriteria++    -- * EmbeddedObjectPosition+    , EmbeddedObjectPosition+    , embeddedObjectPosition+    , eopOverlayPosition+    , eopSheetId+    , eopNewSheet++    -- * BasicFilter+    , BasicFilter+    , basicFilter+    , bfSortSpecs+    , bfRange+    , bfCriteria++    -- * TextToColumnsRequest+    , TextToColumnsRequest+    , textToColumnsRequest+    , ttcrDelimiterType+    , ttcrSource+    , ttcrDelimiter++    -- * SpreadsheetPropertiesAutoRecalc+    , SpreadsheetPropertiesAutoRecalc (..)++    -- * CopyPasteRequestPasteOrientation+    , CopyPasteRequestPasteOrientation (..)++    -- * BatchUpdateSpreadsheetRequest+    , BatchUpdateSpreadsheetRequest+    , batchUpdateSpreadsheetRequest+    , busrRequests++    -- * PasteDataRequestType+    , PasteDataRequestType (..)++    -- * UpdateValuesResponse+    , UpdateValuesResponse+    , updateValuesResponse+    , uvrUpdatedCells+    , uvrSpreadsheetId+    , uvrUpdatedRows+    , uvrUpdatedRange+    , uvrUpdatedColumns++    -- * CopySheetToAnotherSpreadsheetRequest+    , CopySheetToAnotherSpreadsheetRequest+    , copySheetToAnotherSpreadsheetRequest+    , cstasrDestinationSpreadsheetId++    -- * AddFilterViewRequest+    , AddFilterViewRequest+    , addFilterViewRequest+    , aFilter++    -- * PivotGroupValueMetadata+    , PivotGroupValueMetadata+    , pivotGroupValueMetadata+    , pgvmValue+    , pgvmCollapsed++    -- * CellFormatTextDirection+    , CellFormatTextDirection (..)++    -- * BasicChartSeriesType+    , BasicChartSeriesType (..)++    -- * UpdateCellsRequest+    , UpdateCellsRequest+    , updateCellsRequest+    , updStart+    , updRows+    , updRange+    , updFields++    -- * CellFormat+    , CellFormat+    , cellFormat+    , cfBOrders+    , cfVerticalAlignment+    , cfBackgRoundColor+    , cfHyperlinkDisplayType+    , cfWrapStrategy+    , cfNumberFormat+    , cfTextDirection+    , cfTextFormat+    , cfHorizontalAlignment+    , cfPadding++    -- * DeleteProtectedRangeRequest+    , DeleteProtectedRangeRequest+    , deleteProtectedRangeRequest+    , dprrProtectedRangeId++    -- * UpdateProtectedRangeRequest+    , UpdateProtectedRangeRequest+    , updateProtectedRangeRequest+    , uprrProtectedRange+    , uprrFields++    -- * AddSheetResponse+    , AddSheetResponse+    , addSheetResponse+    , aProperties++    -- * ProtectedRange+    , ProtectedRange+    , protectedRange+    , prProtectedRangeId+    , prWarningOnly+    , prNamedRangeId+    , prRange+    , prEditors+    , prUnprotectedRanges+    , prRequestingUserCanEdit+    , prDescription++    -- * BasicChartAxis+    , BasicChartAxis+    , basicChartAxis+    , bcaFormat+    , bcaTitle+    , bcaPosition++    -- * GridData+    , GridData+    , gridData+    , gdRowMetadata+    , gdStartRow+    , gdRowData+    , gdColumnMetadata+    , gdStartColumn++    -- * NumberFormat+    , NumberFormat+    , numberFormat+    , nfPattern+    , nfType++    -- * BatchUpdateSpreadsheetResponse+    , BatchUpdateSpreadsheetResponse+    , batchUpdateSpreadsheetResponse+    , busrSpreadsheetId+    , busrReplies++    -- * SetDataValidationRequest+    , SetDataValidationRequest+    , setDataValidationRequest+    , sdvrRule+    , sdvrRange++    -- * ChartSpecHiddenDimensionStrategy+    , ChartSpecHiddenDimensionStrategy (..)++    -- * DuplicateFilterViewRequest+    , DuplicateFilterViewRequest+    , duplicateFilterViewRequest+    , dFilterId++    -- * BOrderStyle+    , BOrderStyle (..)++    -- * PivotGroup+    , PivotGroup+    , pivotGroup+    , pgValueMetadata+    , pgSourceColumnOffSet+    , pgSortOrder+    , pgShowTotals+    , pgValueBucket++    -- * CutPasteRequestPasteType+    , CutPasteRequestPasteType (..)++    -- * BasicChartSpecLegendPosition+    , BasicChartSpecLegendPosition (..)++    -- * ErrorValueType+    , ErrorValueType (..)++    -- * ConditionalFormatRule+    , ConditionalFormatRule+    , conditionalFormatRule+    , cfrBooleanRule+    , cfrGradientRule+    , cfrRanges++    -- * BasicChartSpec+    , BasicChartSpec+    , basicChartSpec+    , bHeaderCount+    , bLegendPosition+    , bSeries+    , bChartType+    , bDomains+    , bAxis++    -- * AddConditionalFormatRuleRequest+    , AddConditionalFormatRuleRequest+    , addConditionalFormatRuleRequest+    , acfrrRule+    , acfrrIndex++    -- * PivotTableValueLayout+    , PivotTableValueLayout (..)++    -- * DuplicateSheetResponse+    , DuplicateSheetResponse+    , duplicateSheetResponse+    , dsrProperties++    -- * TextFormat+    , TextFormat+    , textFormat+    , tfFontFamily+    , tfForegRoundColor+    , tfFontSize+    , tfUnderline+    , tfItalic+    , tfBold+    , tfStrikethrough++    -- * BasicChartDomain+    , BasicChartDomain+    , basicChartDomain+    , bcdDomain++    -- * InterpolationPointType+    , InterpolationPointType (..)++    -- * TextToColumnsRequestDelimiterType+    , TextToColumnsRequestDelimiterType (..)++    -- * Padding+    , Padding+    , padding+    , pBottom+    , pLeft+    , pRight+    , pTop++    -- * ChartSpec+    , ChartSpec+    , chartSpec+    , csTitle+    , csPieChart+    , csBasicChart+    , csHiddenDimensionStrategy++    -- * DimensionProperties+    , DimensionProperties+    , dimensionProperties+    , dpHiddenByFilter+    , dpPixelSize+    , dpHiddenByUser++    -- * BatchGetValuesResponse+    , BatchGetValuesResponse+    , batchGetValuesResponse+    , bgvrSpreadsheetId+    , bgvrValueRanges++    -- * Request'+    , Request'+    , request'+    , reqAddFilterView+    , reqDeleteProtectedRange+    , reqUpdateProtectedRange+    , reqUpdateCells+    , reqDuplicateFilterView+    , reqAddConditionalFormatRule+    , reqSortRange+    , reqUpdateNamedRange+    , reqDeleteNamedRange+    , reqClearBasicFilter+    , reqAppendCells+    , reqPasteData+    , reqUpdateEmbeddedObjectPosition+    , reqCopyPaste+    , reqAutoResizeDimensions+    , reqAddSheet+    , reqFindReplace+    , reqDeleteDimension+    , reqCutPaste+    , reqMoveDimension+    , reqRepeatCell+    , reqAddProtectedRange+    , reqUpdateFilterView+    , reqDeleteFilterView+    , reqInsertDimension+    , reqUpdateSheetProperties+    , reqDeleteConditionalFormatRule+    , reqUpdateConditionalFormatRule+    , reqDeleteEmbeddedObject+    , reqMergeCells+    , reqAddNamedRange+    , reqAddChart+    , reqDuplicateSheet+    , reqAutoFill+    , reqUpdateDimensionProperties+    , reqUpdateChartSpec+    , reqSetBasicFilter+    , reqTextToColumns+    , reqUpdateSpreadsheetProperties+    , reqDeleteSheet+    , reqUnmergeCells+    , reqUpdateBOrders+    , reqAppendDimension+    , reqSetDataValidation++    -- * DeleteConditionalFormatRuleResponse+    , DeleteConditionalFormatRuleResponse+    , deleteConditionalFormatRuleResponse+    , dcfrrRule++    -- * UpdateConditionalFormatRuleResponse+    , UpdateConditionalFormatRuleResponse+    , updateConditionalFormatRuleResponse+    , uNewRule+    , uNewIndex+    , uOldIndex+    , uOldRule+    ) where++import           Network.Google.Prelude+import           Network.Google.Sheets.Types.Product+import           Network.Google.Sheets.Types.Sum++-- | Default request referring to version 'v4' of the Google Sheets API. This contains the host and root path used as a starting point for constructing service requests.+sheetsService :: ServiceConfig+sheetsService+  = defaultService (ServiceId "sheets:v4")+      "sheets.googleapis.com"++-- | View your Google Spreadsheets+spreadsheetsReadOnlyScope :: Proxy '["https://www.googleapis.com/auth/spreadsheets.readonly"]+spreadsheetsReadOnlyScope = Proxy;++-- | View the files in your Google Drive+driveReadOnlyScope :: Proxy '["https://www.googleapis.com/auth/drive.readonly"]+driveReadOnlyScope = Proxy;++-- | View and manage the files in your Google Drive+driveScope :: Proxy '["https://www.googleapis.com/auth/drive"]+driveScope = Proxy;++-- | View and manage your spreadsheets in Google Drive+spreadsheetsScope :: Proxy '["https://www.googleapis.com/auth/spreadsheets"]+spreadsheetsScope = Proxy;
+ gen/Network/Google/Sheets/Types/Product.hs view
@@ -0,0 +1,8212 @@+{-# 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.Sheets.Types.Product+-- Copyright   : (c) 2015-2016 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+module Network.Google.Sheets.Types.Product where++import           Network.Google.Prelude+import           Network.Google.Sheets.Types.Sum++-- | Information about which values in a pivot group should be used for+-- sorting.+--+-- /See:/ 'pivotGroupSortValueBucket' smart constructor.+data PivotGroupSortValueBucket = PivotGroupSortValueBucket'+    { _pgsvbBuckets     :: !(Maybe [ExtendedValue])+    , _pgsvbValuesIndex :: !(Maybe (Textual Int32))+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'PivotGroupSortValueBucket' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'pgsvbBuckets'+--+-- * 'pgsvbValuesIndex'+pivotGroupSortValueBucket+    :: PivotGroupSortValueBucket+pivotGroupSortValueBucket =+    PivotGroupSortValueBucket'+    { _pgsvbBuckets = Nothing+    , _pgsvbValuesIndex = Nothing+    }++-- | Determines the bucket from which values are chosen to sort. For example,+-- in a pivot table with one row group & two column groups, the row group+-- can list up to two values. The first value corresponds to a value within+-- the first column group, and the second value corresponds to a value in+-- the second column group. If no values are listed, this would indicate+-- that the row should be sorted according to the \"Grand Total\" over the+-- column groups. If a single value is listed, this would correspond to+-- using the \"Total\" of that bucket.+pgsvbBuckets :: Lens' PivotGroupSortValueBucket [ExtendedValue]+pgsvbBuckets+  = lens _pgsvbBuckets (\ s a -> s{_pgsvbBuckets = a})+      . _Default+      . _Coerce++-- | The offset in the PivotTable.values list which the values in this+-- grouping should be sorted by.+pgsvbValuesIndex :: Lens' PivotGroupSortValueBucket (Maybe Int32)+pgsvbValuesIndex+  = lens _pgsvbValuesIndex+      (\ s a -> s{_pgsvbValuesIndex = a})+      . mapping _Coerce++instance FromJSON PivotGroupSortValueBucket where+        parseJSON+          = withObject "PivotGroupSortValueBucket"+              (\ o ->+                 PivotGroupSortValueBucket' <$>+                   (o .:? "buckets" .!= mempty) <*>+                     (o .:? "valuesIndex"))++instance ToJSON PivotGroupSortValueBucket where+        toJSON PivotGroupSortValueBucket'{..}+          = object+              (catMaybes+                 [("buckets" .=) <$> _pgsvbBuckets,+                  ("valuesIndex" .=) <$> _pgsvbValuesIndex])++-- | Data within a range of the spreadsheet.+--+-- /See:/ 'valueRange' smart constructor.+data ValueRange = ValueRange'+    { _vrValues         :: !(Maybe [[JSONValue]])+    , _vrRange          :: !(Maybe Text)+    , _vrMajorDimension :: !(Maybe ValueRangeMajorDimension)+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'ValueRange' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'vrValues'+--+-- * 'vrRange'+--+-- * 'vrMajorDimension'+valueRange+    :: ValueRange+valueRange =+    ValueRange'+    { _vrValues = Nothing+    , _vrRange = Nothing+    , _vrMajorDimension = Nothing+    }++-- | The data that was read or to be written. This is an array of arrays, the+-- outer array representing all the data and each inner array representing+-- a major dimension. Each item in the inner array corresponds with one+-- cell. For output, empty trailing rows and columns will not be included.+-- For input, supported value types are: bool, string, and double. Null+-- values will be skipped. To set a cell to an empty value, set the string+-- value to an empty string.+vrValues :: Lens' ValueRange [[JSONValue]]+vrValues+  = lens _vrValues (\ s a -> s{_vrValues = a}) .+      _Default+      . _Coerce++-- | The range the values cover, in A1 notation. For output, this range+-- indicates the entire requested range, even though the values will+-- exclude trailing rows and columns.+vrRange :: Lens' ValueRange (Maybe Text)+vrRange = lens _vrRange (\ s a -> s{_vrRange = a})++-- | The major dimension of the values. For output, if the spreadsheet data+-- is: \`A1=1,B1=2,A2=3,B2=4\`, then requesting+-- \`range=A1:B2,majorDimension=ROWS\` will return \`[[1,2],[3,4]]\`,+-- whereas requesting \`range=A1:B2,majorDimension=COLUMNS\` will return+-- \`[[1,3],[2,4]]\`. For input, with \`range=A1:B2,majorDimension=ROWS\`+-- then \`[[1,2],[3,4]]\` will set \`A1=1,B1=2,A2=3,B2=4\`. With+-- \`range=A1:B2,majorDimension=COLUMNS\` then \`[[1,2],[3,4]]\` will set+-- \`A1=1,B1=3,A2=2,B2=4\`. When writing, if this field is not set, it+-- defaults to ROWS.+vrMajorDimension :: Lens' ValueRange (Maybe ValueRangeMajorDimension)+vrMajorDimension+  = lens _vrMajorDimension+      (\ s a -> s{_vrMajorDimension = a})++instance FromJSON ValueRange where+        parseJSON+          = withObject "ValueRange"+              (\ o ->+                 ValueRange' <$>+                   (o .:? "values" .!= mempty) <*> (o .:? "range") <*>+                     (o .:? "majorDimension"))++instance ToJSON ValueRange where+        toJSON ValueRange'{..}+          = object+              (catMaybes+                 [("values" .=) <$> _vrValues,+                  ("range" .=) <$> _vrRange,+                  ("majorDimension" .=) <$> _vrMajorDimension])++-- | Sorts data in rows based on a sort order per column.+--+-- /See:/ 'sortRangeRequest' smart constructor.+data SortRangeRequest = SortRangeRequest'+    { _srrSortSpecs :: !(Maybe [SortSpec])+    , _srrRange     :: !(Maybe GridRange)+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'SortRangeRequest' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'srrSortSpecs'+--+-- * 'srrRange'+sortRangeRequest+    :: SortRangeRequest+sortRangeRequest =+    SortRangeRequest'+    { _srrSortSpecs = Nothing+    , _srrRange = Nothing+    }++-- | The sort order per column. Later specifications are used when values are+-- equal in the earlier specifications.+srrSortSpecs :: Lens' SortRangeRequest [SortSpec]+srrSortSpecs+  = lens _srrSortSpecs (\ s a -> s{_srrSortSpecs = a})+      . _Default+      . _Coerce++-- | The range to sort.+srrRange :: Lens' SortRangeRequest (Maybe GridRange)+srrRange = lens _srrRange (\ s a -> s{_srrRange = a})++instance FromJSON SortRangeRequest where+        parseJSON+          = withObject "SortRangeRequest"+              (\ o ->+                 SortRangeRequest' <$>+                   (o .:? "sortSpecs" .!= mempty) <*> (o .:? "range"))++instance ToJSON SortRangeRequest where+        toJSON SortRangeRequest'{..}+          = object+              (catMaybes+                 [("sortSpecs" .=) <$> _srrSortSpecs,+                  ("range" .=) <$> _srrRange])++-- | Removes the named range with the given ID from the spreadsheet.+--+-- /See:/ 'deleteNamedRangeRequest' smart constructor.+newtype DeleteNamedRangeRequest = DeleteNamedRangeRequest'+    { _dnrrNamedRangeId :: Maybe Text+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'DeleteNamedRangeRequest' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'dnrrNamedRangeId'+deleteNamedRangeRequest+    :: DeleteNamedRangeRequest+deleteNamedRangeRequest =+    DeleteNamedRangeRequest'+    { _dnrrNamedRangeId = Nothing+    }++-- | The ID of the named range to delete.+dnrrNamedRangeId :: Lens' DeleteNamedRangeRequest (Maybe Text)+dnrrNamedRangeId+  = lens _dnrrNamedRangeId+      (\ s a -> s{_dnrrNamedRangeId = a})++instance FromJSON DeleteNamedRangeRequest where+        parseJSON+          = withObject "DeleteNamedRangeRequest"+              (\ o ->+                 DeleteNamedRangeRequest' <$> (o .:? "namedRangeId"))++instance ToJSON DeleteNamedRangeRequest where+        toJSON DeleteNamedRangeRequest'{..}+          = object+              (catMaybes+                 [("namedRangeId" .=) <$> _dnrrNamedRangeId])++-- | Updates properties of the named range with the specified namedRangeId.+--+-- /See:/ 'updateNamedRangeRequest' smart constructor.+data UpdateNamedRangeRequest = UpdateNamedRangeRequest'+    { _unrrNamedRange :: !(Maybe NamedRange)+    , _unrrFields     :: !(Maybe FieldMask)+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'UpdateNamedRangeRequest' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'unrrNamedRange'+--+-- * 'unrrFields'+updateNamedRangeRequest+    :: UpdateNamedRangeRequest+updateNamedRangeRequest =+    UpdateNamedRangeRequest'+    { _unrrNamedRange = Nothing+    , _unrrFields = Nothing+    }++-- | The named range to update with the new properties.+unrrNamedRange :: Lens' UpdateNamedRangeRequest (Maybe NamedRange)+unrrNamedRange+  = lens _unrrNamedRange+      (\ s a -> s{_unrrNamedRange = a})++-- | The fields that should be updated. At least one field must be specified.+-- The root \`namedRange\` is implied and should not be specified. A single+-- \`\"*\"\` can be used as short-hand for listing every field.+unrrFields :: Lens' UpdateNamedRangeRequest (Maybe FieldMask)+unrrFields+  = lens _unrrFields (\ s a -> s{_unrrFields = a})++instance FromJSON UpdateNamedRangeRequest where+        parseJSON+          = withObject "UpdateNamedRangeRequest"+              (\ o ->+                 UpdateNamedRangeRequest' <$>+                   (o .:? "namedRange") <*> (o .:? "fields"))++instance ToJSON UpdateNamedRangeRequest where+        toJSON UpdateNamedRangeRequest'{..}+          = object+              (catMaybes+                 [("namedRange" .=) <$> _unrrNamedRange,+                  ("fields" .=) <$> _unrrFields])++-- | The data included in a domain or series.+--+-- /See:/ 'chartData' smart constructor.+newtype ChartData = ChartData'+    { _cdSourceRange :: Maybe ChartSourceRange+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'ChartData' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'cdSourceRange'+chartData+    :: ChartData+chartData =+    ChartData'+    { _cdSourceRange = Nothing+    }++-- | The source ranges of the data.+cdSourceRange :: Lens' ChartData (Maybe ChartSourceRange)+cdSourceRange+  = lens _cdSourceRange+      (\ s a -> s{_cdSourceRange = a})++instance FromJSON ChartData where+        parseJSON+          = withObject "ChartData"+              (\ o -> ChartData' <$> (o .:? "sourceRange"))++instance ToJSON ChartData where+        toJSON ChartData'{..}+          = object+              (catMaybes [("sourceRange" .=) <$> _cdSourceRange])++-- | Properties of a spreadsheet.+--+-- /See:/ 'spreadsheetProperties' smart constructor.+data SpreadsheetProperties = SpreadsheetProperties'+    { _spDefaultFormat :: !(Maybe CellFormat)+    , _spLocale        :: !(Maybe Text)+    , _spAutoRecalc    :: !(Maybe SpreadsheetPropertiesAutoRecalc)+    , _spTitle         :: !(Maybe Text)+    , _spTimeZone      :: !(Maybe Text)+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'SpreadsheetProperties' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'spDefaultFormat'+--+-- * 'spLocale'+--+-- * 'spAutoRecalc'+--+-- * 'spTitle'+--+-- * 'spTimeZone'+spreadsheetProperties+    :: SpreadsheetProperties+spreadsheetProperties =+    SpreadsheetProperties'+    { _spDefaultFormat = Nothing+    , _spLocale = Nothing+    , _spAutoRecalc = Nothing+    , _spTitle = Nothing+    , _spTimeZone = Nothing+    }++-- | The default format of all cells in the spreadsheet.+-- CellData.effectiveFormat will not be set if the cell\'s format is equal+-- to this default format. This field is read-only.+spDefaultFormat :: Lens' SpreadsheetProperties (Maybe CellFormat)+spDefaultFormat+  = lens _spDefaultFormat+      (\ s a -> s{_spDefaultFormat = a})++-- | The locale of the spreadsheet in one of the following formats: * an ISO+-- 639-1 language code such as \`en\` * an ISO 639-2 language code such as+-- \`fil\`, if no 639-1 code exists * a combination of the ISO language+-- code and country code, such as \`en_US\` Note: when updating this field,+-- not all locales\/languages are supported.+spLocale :: Lens' SpreadsheetProperties (Maybe Text)+spLocale = lens _spLocale (\ s a -> s{_spLocale = a})++-- | The amount of time to wait before volatile functions are recalculated.+spAutoRecalc :: Lens' SpreadsheetProperties (Maybe SpreadsheetPropertiesAutoRecalc)+spAutoRecalc+  = lens _spAutoRecalc (\ s a -> s{_spAutoRecalc = a})++-- | The title of the spreadsheet.+spTitle :: Lens' SpreadsheetProperties (Maybe Text)+spTitle = lens _spTitle (\ s a -> s{_spTitle = a})++-- | The time zone of the spreadsheet, in CLDR format such as+-- \`America\/New_York\`. If the time zone isn\'t recognized, this may be a+-- custom time zone such as \`GMT-07:00\`.+spTimeZone :: Lens' SpreadsheetProperties (Maybe Text)+spTimeZone+  = lens _spTimeZone (\ s a -> s{_spTimeZone = a})++instance FromJSON SpreadsheetProperties where+        parseJSON+          = withObject "SpreadsheetProperties"+              (\ o ->+                 SpreadsheetProperties' <$>+                   (o .:? "defaultFormat") <*> (o .:? "locale") <*>+                     (o .:? "autoRecalc")+                     <*> (o .:? "title")+                     <*> (o .:? "timeZone"))++instance ToJSON SpreadsheetProperties where+        toJSON SpreadsheetProperties'{..}+          = object+              (catMaybes+                 [("defaultFormat" .=) <$> _spDefaultFormat,+                  ("locale" .=) <$> _spLocale,+                  ("autoRecalc" .=) <$> _spAutoRecalc,+                  ("title" .=) <$> _spTitle,+                  ("timeZone" .=) <$> _spTimeZone])++-- | The borders of the cell.+--+-- /See:/ 'bOrders' smart constructor.+data BOrders = BOrders'+    { _boBottom :: !(Maybe BOrder)+    , _boLeft   :: !(Maybe BOrder)+    , _boRight  :: !(Maybe BOrder)+    , _boTop    :: !(Maybe BOrder)+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'BOrders' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'boBottom'+--+-- * 'boLeft'+--+-- * 'boRight'+--+-- * 'boTop'+bOrders+    :: BOrders+bOrders =+    BOrders'+    { _boBottom = Nothing+    , _boLeft = Nothing+    , _boRight = Nothing+    , _boTop = Nothing+    }++-- | The bottom border of the cell.+boBottom :: Lens' BOrders (Maybe BOrder)+boBottom = lens _boBottom (\ s a -> s{_boBottom = a})++-- | The left border of the cell.+boLeft :: Lens' BOrders (Maybe BOrder)+boLeft = lens _boLeft (\ s a -> s{_boLeft = a})++-- | The right border of the cell.+boRight :: Lens' BOrders (Maybe BOrder)+boRight = lens _boRight (\ s a -> s{_boRight = a})++-- | The top border of the cell.+boTop :: Lens' BOrders (Maybe BOrder)+boTop = lens _boTop (\ s a -> s{_boTop = a})++instance FromJSON BOrders where+        parseJSON+          = withObject "BOrders"+              (\ o ->+                 BOrders' <$>+                   (o .:? "bottom") <*> (o .:? "left") <*>+                     (o .:? "right")+                     <*> (o .:? "top"))++instance ToJSON BOrders where+        toJSON BOrders'{..}+          = object+              (catMaybes+                 [("bottom" .=) <$> _boBottom,+                  ("left" .=) <$> _boLeft, ("right" .=) <$> _boRight,+                  ("top" .=) <$> _boTop])++-- | A run of a text format. The format of this run continues until the start+-- index of the next run. When updating, all fields must be set.+--+-- /See:/ 'textFormatRun' smart constructor.+data TextFormatRun = TextFormatRun'+    { _tfrFormat     :: !(Maybe TextFormat)+    , _tfrStartIndex :: !(Maybe (Textual Int32))+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'TextFormatRun' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'tfrFormat'+--+-- * 'tfrStartIndex'+textFormatRun+    :: TextFormatRun+textFormatRun =+    TextFormatRun'+    { _tfrFormat = Nothing+    , _tfrStartIndex = Nothing+    }++-- | The format of this run. Absent values inherit the cell\'s format.+tfrFormat :: Lens' TextFormatRun (Maybe TextFormat)+tfrFormat+  = lens _tfrFormat (\ s a -> s{_tfrFormat = a})++-- | The character index where this run starts.+tfrStartIndex :: Lens' TextFormatRun (Maybe Int32)+tfrStartIndex+  = lens _tfrStartIndex+      (\ s a -> s{_tfrStartIndex = a})+      . mapping _Coerce++instance FromJSON TextFormatRun where+        parseJSON+          = withObject "TextFormatRun"+              (\ o ->+                 TextFormatRun' <$>+                   (o .:? "format") <*> (o .:? "startIndex"))++instance ToJSON TextFormatRun where+        toJSON TextFormatRun'{..}+          = object+              (catMaybes+                 [("format" .=) <$> _tfrFormat,+                  ("startIndex" .=) <$> _tfrStartIndex])++-- | Adds a new sheet. When a sheet is added at a given index, all subsequent+-- sheets\' indexes are incremented. To add an object sheet, use+-- AddChartRequest instead and specify EmbeddedObjectPosition.sheetId or+-- EmbeddedObjectPosition.newSheet.+--+-- /See:/ 'addSheetRequest' smart constructor.+newtype AddSheetRequest = AddSheetRequest'+    { _asrProperties :: Maybe SheetProperties+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'AddSheetRequest' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'asrProperties'+addSheetRequest+    :: AddSheetRequest+addSheetRequest =+    AddSheetRequest'+    { _asrProperties = Nothing+    }++-- | The properties the new sheet should have. All properties are optional.+-- If a sheetId is specified, the sheet will use that ID. (It is an error+-- to specify the ID of a sheet that already exists.)+asrProperties :: Lens' AddSheetRequest (Maybe SheetProperties)+asrProperties+  = lens _asrProperties+      (\ s a -> s{_asrProperties = a})++instance FromJSON AddSheetRequest where+        parseJSON+          = withObject "AddSheetRequest"+              (\ o -> AddSheetRequest' <$> (o .:? "properties"))++instance ToJSON AddSheetRequest where+        toJSON AddSheetRequest'{..}+          = object+              (catMaybes [("properties" .=) <$> _asrProperties])++-- | A sort order associated with a specific column or row.+--+-- /See:/ 'sortSpec' smart constructor.+data SortSpec = SortSpec'+    { _ssSortOrder      :: !(Maybe SortSpecSortOrder)+    , _ssDimensionIndex :: !(Maybe (Textual Int32))+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'SortSpec' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'ssSortOrder'+--+-- * 'ssDimensionIndex'+sortSpec+    :: SortSpec+sortSpec =+    SortSpec'+    { _ssSortOrder = Nothing+    , _ssDimensionIndex = Nothing+    }++-- | The order data should be sorted.+ssSortOrder :: Lens' SortSpec (Maybe SortSpecSortOrder)+ssSortOrder+  = lens _ssSortOrder (\ s a -> s{_ssSortOrder = a})++-- | The dimension the sort should be applied to.+ssDimensionIndex :: Lens' SortSpec (Maybe Int32)+ssDimensionIndex+  = lens _ssDimensionIndex+      (\ s a -> s{_ssDimensionIndex = a})+      . mapping _Coerce++instance FromJSON SortSpec where+        parseJSON+          = withObject "SortSpec"+              (\ o ->+                 SortSpec' <$>+                   (o .:? "sortOrder") <*> (o .:? "dimensionIndex"))++instance ToJSON SortSpec where+        toJSON SortSpec'{..}+          = object+              (catMaybes+                 [("sortOrder" .=) <$> _ssSortOrder,+                  ("dimensionIndex" .=) <$> _ssDimensionIndex])++-- | Copies data from the source to the destination.+--+-- /See:/ 'copyPasteRequest' smart constructor.+data CopyPasteRequest = CopyPasteRequest'+    { _cprDestination      :: !(Maybe GridRange)+    , _cprSource           :: !(Maybe GridRange)+    , _cprPasteOrientation :: !(Maybe CopyPasteRequestPasteOrientation)+    , _cprPasteType        :: !(Maybe CopyPasteRequestPasteType)+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'CopyPasteRequest' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'cprDestination'+--+-- * 'cprSource'+--+-- * 'cprPasteOrientation'+--+-- * 'cprPasteType'+copyPasteRequest+    :: CopyPasteRequest+copyPasteRequest =+    CopyPasteRequest'+    { _cprDestination = Nothing+    , _cprSource = Nothing+    , _cprPasteOrientation = Nothing+    , _cprPasteType = Nothing+    }++-- | The location to paste to. If the range covers a span that\'s a multiple+-- of the source\'s height or width, then the data will be repeated to fill+-- in the destination range. If the range is smaller than the source range,+-- the entire source data will still be copied (beyond the end of the+-- destination range).+cprDestination :: Lens' CopyPasteRequest (Maybe GridRange)+cprDestination+  = lens _cprDestination+      (\ s a -> s{_cprDestination = a})++-- | The source range to copy.+cprSource :: Lens' CopyPasteRequest (Maybe GridRange)+cprSource+  = lens _cprSource (\ s a -> s{_cprSource = a})++-- | How that data should be oriented when pasting.+cprPasteOrientation :: Lens' CopyPasteRequest (Maybe CopyPasteRequestPasteOrientation)+cprPasteOrientation+  = lens _cprPasteOrientation+      (\ s a -> s{_cprPasteOrientation = a})++-- | What kind of data to paste.+cprPasteType :: Lens' CopyPasteRequest (Maybe CopyPasteRequestPasteType)+cprPasteType+  = lens _cprPasteType (\ s a -> s{_cprPasteType = a})++instance FromJSON CopyPasteRequest where+        parseJSON+          = withObject "CopyPasteRequest"+              (\ o ->+                 CopyPasteRequest' <$>+                   (o .:? "destination") <*> (o .:? "source") <*>+                     (o .:? "pasteOrientation")+                     <*> (o .:? "pasteType"))++instance ToJSON CopyPasteRequest where+        toJSON CopyPasteRequest'{..}+          = object+              (catMaybes+                 [("destination" .=) <$> _cprDestination,+                  ("source" .=) <$> _cprSource,+                  ("pasteOrientation" .=) <$> _cprPasteOrientation,+                  ("pasteType" .=) <$> _cprPasteType])++-- | A range on a sheet. All indexes are zero-based. Indexes are half open,+-- e.g the start index is inclusive and the end index is exclusive --+-- [start_index, end_index). Missing indexes indicate the range is+-- unbounded on that side. For example, if \`\"Sheet1\"\` is sheet ID 0,+-- then: \`Sheet1!A1:A1 == sheet_id: 0, start_row_index: 0, end_row_index:+-- 1, start_column_index: 0, end_column_index: 1\` \`Sheet1!A3:B4 ==+-- sheet_id: 0, start_row_index: 2, end_row_index: 4, start_column_index:+-- 0, end_column_index: 2\` \`Sheet1!A:B == sheet_id: 0,+-- start_column_index: 0, end_column_index: 2\` \`Sheet1!A5:B == sheet_id:+-- 0, start_row_index: 4, start_column_index: 0, end_column_index: 2\`+-- \`Sheet1 == sheet_id:0\` The start index must always be less than or+-- equal to the end index. If the start index equals the end index, then+-- the range is empty. Empty ranges are typically not meaningful and are+-- usually rendered in the UI as \`#REF!\`.+--+-- /See:/ 'gridRange' smart constructor.+data GridRange = GridRange'+    { _grEndColumnIndex   :: !(Maybe (Textual Int32))+    , _grStartColumnIndex :: !(Maybe (Textual Int32))+    , _grEndRowIndex      :: !(Maybe (Textual Int32))+    , _grStartRowIndex    :: !(Maybe (Textual Int32))+    , _grSheetId          :: !(Maybe (Textual Int32))+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'GridRange' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'grEndColumnIndex'+--+-- * 'grStartColumnIndex'+--+-- * 'grEndRowIndex'+--+-- * 'grStartRowIndex'+--+-- * 'grSheetId'+gridRange+    :: GridRange+gridRange =+    GridRange'+    { _grEndColumnIndex = Nothing+    , _grStartColumnIndex = Nothing+    , _grEndRowIndex = Nothing+    , _grStartRowIndex = Nothing+    , _grSheetId = Nothing+    }++-- | The end column (exclusive) of the range, or not set if unbounded.+grEndColumnIndex :: Lens' GridRange (Maybe Int32)+grEndColumnIndex+  = lens _grEndColumnIndex+      (\ s a -> s{_grEndColumnIndex = a})+      . mapping _Coerce++-- | The start column (inclusive) of the range, or not set if unbounded.+grStartColumnIndex :: Lens' GridRange (Maybe Int32)+grStartColumnIndex+  = lens _grStartColumnIndex+      (\ s a -> s{_grStartColumnIndex = a})+      . mapping _Coerce++-- | The end row (exclusive) of the range, or not set if unbounded.+grEndRowIndex :: Lens' GridRange (Maybe Int32)+grEndRowIndex+  = lens _grEndRowIndex+      (\ s a -> s{_grEndRowIndex = a})+      . mapping _Coerce++-- | The start row (inclusive) of the range, or not set if unbounded.+grStartRowIndex :: Lens' GridRange (Maybe Int32)+grStartRowIndex+  = lens _grStartRowIndex+      (\ s a -> s{_grStartRowIndex = a})+      . mapping _Coerce++-- | The sheet this range is on.+grSheetId :: Lens' GridRange (Maybe Int32)+grSheetId+  = lens _grSheetId (\ s a -> s{_grSheetId = a}) .+      mapping _Coerce++instance FromJSON GridRange where+        parseJSON+          = withObject "GridRange"+              (\ o ->+                 GridRange' <$>+                   (o .:? "endColumnIndex") <*>+                     (o .:? "startColumnIndex")+                     <*> (o .:? "endRowIndex")+                     <*> (o .:? "startRowIndex")+                     <*> (o .:? "sheetId"))++instance ToJSON GridRange where+        toJSON GridRange'{..}+          = object+              (catMaybes+                 [("endColumnIndex" .=) <$> _grEndColumnIndex,+                  ("startColumnIndex" .=) <$> _grStartColumnIndex,+                  ("endRowIndex" .=) <$> _grEndRowIndex,+                  ("startRowIndex" .=) <$> _grStartRowIndex,+                  ("sheetId" .=) <$> _grSheetId])++-- | The result of adding a filter view.+--+-- /See:/ 'addFilterViewResponse' smart constructor.+newtype AddFilterViewResponse = AddFilterViewResponse'+    { _afvrFilter :: Maybe FilterView+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'AddFilterViewResponse' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'afvrFilter'+addFilterViewResponse+    :: AddFilterViewResponse+addFilterViewResponse =+    AddFilterViewResponse'+    { _afvrFilter = Nothing+    }++-- | The newly added filter view.+afvrFilter :: Lens' AddFilterViewResponse (Maybe FilterView)+afvrFilter+  = lens _afvrFilter (\ s a -> s{_afvrFilter = a})++instance FromJSON AddFilterViewResponse where+        parseJSON+          = withObject "AddFilterViewResponse"+              (\ o -> AddFilterViewResponse' <$> (o .:? "filter"))++instance ToJSON AddFilterViewResponse where+        toJSON AddFilterViewResponse'{..}+          = object (catMaybes [("filter" .=) <$> _afvrFilter])++-- | A condition that can evaluate to true or false. BooleanConditions are+-- used by conditional formatting, data validation, and the criteria in+-- filters.+--+-- /See:/ 'booleanCondition' smart constructor.+data BooleanCondition = BooleanCondition'+    { _bcValues :: !(Maybe [ConditionValue])+    , _bcType   :: !(Maybe BooleanConditionType)+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'BooleanCondition' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'bcValues'+--+-- * 'bcType'+booleanCondition+    :: BooleanCondition+booleanCondition =+    BooleanCondition'+    { _bcValues = Nothing+    , _bcType = Nothing+    }++-- | The values of the condition. The number of supported values depends on+-- the condition type. Some support zero values, others one or two values,+-- and ConditionType.ONE_OF_LIST supports an arbitrary number of values.+bcValues :: Lens' BooleanCondition [ConditionValue]+bcValues+  = lens _bcValues (\ s a -> s{_bcValues = a}) .+      _Default+      . _Coerce++-- | The type of condition.+bcType :: Lens' BooleanCondition (Maybe BooleanConditionType)+bcType = lens _bcType (\ s a -> s{_bcType = a})++instance FromJSON BooleanCondition where+        parseJSON+          = withObject "BooleanCondition"+              (\ o ->+                 BooleanCondition' <$>+                   (o .:? "values" .!= mempty) <*> (o .:? "type"))++instance ToJSON BooleanCondition where+        toJSON BooleanCondition'{..}+          = object+              (catMaybes+                 [("values" .=) <$> _bcValues,+                  ("type" .=) <$> _bcType])++-- | Automatically resizes one or more dimensions based on the contents of+-- the cells in that dimension.+--+-- /See:/ 'autoResizeDimensionsRequest' smart constructor.+newtype AutoResizeDimensionsRequest = AutoResizeDimensionsRequest'+    { _ardrDimensions :: Maybe DimensionRange+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'AutoResizeDimensionsRequest' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'ardrDimensions'+autoResizeDimensionsRequest+    :: AutoResizeDimensionsRequest+autoResizeDimensionsRequest =+    AutoResizeDimensionsRequest'+    { _ardrDimensions = Nothing+    }++-- | The dimensions to automatically resize. Only COLUMNS are supported.+ardrDimensions :: Lens' AutoResizeDimensionsRequest (Maybe DimensionRange)+ardrDimensions+  = lens _ardrDimensions+      (\ s a -> s{_ardrDimensions = a})++instance FromJSON AutoResizeDimensionsRequest where+        parseJSON+          = withObject "AutoResizeDimensionsRequest"+              (\ o ->+                 AutoResizeDimensionsRequest' <$>+                   (o .:? "dimensions"))++instance ToJSON AutoResizeDimensionsRequest where+        toJSON AutoResizeDimensionsRequest'{..}+          = object+              (catMaybes [("dimensions" .=) <$> _ardrDimensions])++-- | A sheet in a spreadsheet.+--+-- /See:/ 'sheet' smart constructor.+data Sheet = Sheet'+    { _sData               :: !(Maybe [GridData])+    , _sMerges             :: !(Maybe [GridRange])+    , _sProtectedRanges    :: !(Maybe [ProtectedRange])+    , _sCharts             :: !(Maybe [EmbeddedChart])+    , _sBasicFilter        :: !(Maybe BasicFilter)+    , _sConditionalFormats :: !(Maybe [ConditionalFormatRule])+    , _sFilterViews        :: !(Maybe [FilterView])+    , _sProperties         :: !(Maybe SheetProperties)+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'Sheet' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'sData'+--+-- * 'sMerges'+--+-- * 'sProtectedRanges'+--+-- * 'sCharts'+--+-- * 'sBasicFilter'+--+-- * 'sConditionalFormats'+--+-- * 'sFilterViews'+--+-- * 'sProperties'+sheet+    :: Sheet+sheet =+    Sheet'+    { _sData = Nothing+    , _sMerges = Nothing+    , _sProtectedRanges = Nothing+    , _sCharts = Nothing+    , _sBasicFilter = Nothing+    , _sConditionalFormats = Nothing+    , _sFilterViews = Nothing+    , _sProperties = Nothing+    }++-- | Data in the grid, if this is a grid sheet. The number of GridData+-- objects returned is dependent on the number of ranges requested on this+-- sheet. For example, if this is representing \`Sheet1\`, and the+-- spreadsheet was requested with ranges \`Sheet1!A1:C10\` and+-- \`Sheet1!D15:E20\`, then the first GridData will have a+-- startRow\/startColumn of \`0\`, while the second one will have+-- \`startRow 14\` (zero-based row 15), and \`startColumn 3\` (zero-based+-- column D).+sData :: Lens' Sheet [GridData]+sData+  = lens _sData (\ s a -> s{_sData = a}) . _Default .+      _Coerce++-- | The ranges that are merged together.+sMerges :: Lens' Sheet [GridRange]+sMerges+  = lens _sMerges (\ s a -> s{_sMerges = a}) . _Default+      . _Coerce++-- | The protected ranges in this sheet.+sProtectedRanges :: Lens' Sheet [ProtectedRange]+sProtectedRanges+  = lens _sProtectedRanges+      (\ s a -> s{_sProtectedRanges = a})+      . _Default+      . _Coerce++-- | The specifications of every chart on this sheet.+sCharts :: Lens' Sheet [EmbeddedChart]+sCharts+  = lens _sCharts (\ s a -> s{_sCharts = a}) . _Default+      . _Coerce++-- | The filter on this sheet, if any.+sBasicFilter :: Lens' Sheet (Maybe BasicFilter)+sBasicFilter+  = lens _sBasicFilter (\ s a -> s{_sBasicFilter = a})++-- | The conditional format rules in this sheet.+sConditionalFormats :: Lens' Sheet [ConditionalFormatRule]+sConditionalFormats+  = lens _sConditionalFormats+      (\ s a -> s{_sConditionalFormats = a})+      . _Default+      . _Coerce++-- | The filter views in this sheet.+sFilterViews :: Lens' Sheet [FilterView]+sFilterViews+  = lens _sFilterViews (\ s a -> s{_sFilterViews = a})+      . _Default+      . _Coerce++-- | The properties of the sheet.+sProperties :: Lens' Sheet (Maybe SheetProperties)+sProperties+  = lens _sProperties (\ s a -> s{_sProperties = a})++instance FromJSON Sheet where+        parseJSON+          = withObject "Sheet"+              (\ o ->+                 Sheet' <$>+                   (o .:? "data" .!= mempty) <*>+                     (o .:? "merges" .!= mempty)+                     <*> (o .:? "protectedRanges" .!= mempty)+                     <*> (o .:? "charts" .!= mempty)+                     <*> (o .:? "basicFilter")+                     <*> (o .:? "conditionalFormats" .!= mempty)+                     <*> (o .:? "filterViews" .!= mempty)+                     <*> (o .:? "properties"))++instance ToJSON Sheet where+        toJSON Sheet'{..}+          = object+              (catMaybes+                 [("data" .=) <$> _sData, ("merges" .=) <$> _sMerges,+                  ("protectedRanges" .=) <$> _sProtectedRanges,+                  ("charts" .=) <$> _sCharts,+                  ("basicFilter" .=) <$> _sBasicFilter,+                  ("conditionalFormats" .=) <$> _sConditionalFormats,+                  ("filterViews" .=) <$> _sFilterViews,+                  ("properties" .=) <$> _sProperties])++-- | A coordinate in a sheet. All indexes are zero-based.+--+-- /See:/ 'gridCoordinate' smart constructor.+data GridCoordinate = GridCoordinate'+    { _gcColumnIndex :: !(Maybe (Textual Int32))+    , _gcRowIndex    :: !(Maybe (Textual Int32))+    , _gcSheetId     :: !(Maybe (Textual Int32))+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'GridCoordinate' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'gcColumnIndex'+--+-- * 'gcRowIndex'+--+-- * 'gcSheetId'+gridCoordinate+    :: GridCoordinate+gridCoordinate =+    GridCoordinate'+    { _gcColumnIndex = Nothing+    , _gcRowIndex = Nothing+    , _gcSheetId = Nothing+    }++-- | The column index of the coordinate.+gcColumnIndex :: Lens' GridCoordinate (Maybe Int32)+gcColumnIndex+  = lens _gcColumnIndex+      (\ s a -> s{_gcColumnIndex = a})+      . mapping _Coerce++-- | The row index of the coordinate.+gcRowIndex :: Lens' GridCoordinate (Maybe Int32)+gcRowIndex+  = lens _gcRowIndex (\ s a -> s{_gcRowIndex = a}) .+      mapping _Coerce++-- | The sheet this coordinate is on.+gcSheetId :: Lens' GridCoordinate (Maybe Int32)+gcSheetId+  = lens _gcSheetId (\ s a -> s{_gcSheetId = a}) .+      mapping _Coerce++instance FromJSON GridCoordinate where+        parseJSON+          = withObject "GridCoordinate"+              (\ o ->+                 GridCoordinate' <$>+                   (o .:? "columnIndex") <*> (o .:? "rowIndex") <*>+                     (o .:? "sheetId"))++instance ToJSON GridCoordinate where+        toJSON GridCoordinate'{..}+          = object+              (catMaybes+                 [("columnIndex" .=) <$> _gcColumnIndex,+                  ("rowIndex" .=) <$> _gcRowIndex,+                  ("sheetId" .=) <$> _gcSheetId])++-- | Clears the basic filter, if any exists on the sheet.+--+-- /See:/ 'clearBasicFilterRequest' smart constructor.+newtype ClearBasicFilterRequest = ClearBasicFilterRequest'+    { _cbfrSheetId :: Maybe (Textual Int32)+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'ClearBasicFilterRequest' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'cbfrSheetId'+clearBasicFilterRequest+    :: ClearBasicFilterRequest+clearBasicFilterRequest =+    ClearBasicFilterRequest'+    { _cbfrSheetId = Nothing+    }++-- | The sheet ID on which the basic filter should be cleared.+cbfrSheetId :: Lens' ClearBasicFilterRequest (Maybe Int32)+cbfrSheetId+  = lens _cbfrSheetId (\ s a -> s{_cbfrSheetId = a}) .+      mapping _Coerce++instance FromJSON ClearBasicFilterRequest where+        parseJSON+          = withObject "ClearBasicFilterRequest"+              (\ o ->+                 ClearBasicFilterRequest' <$> (o .:? "sheetId"))++instance ToJSON ClearBasicFilterRequest where+        toJSON ClearBasicFilterRequest'{..}+          = object+              (catMaybes [("sheetId" .=) <$> _cbfrSheetId])++-- | Update an embedded object\'s position (such as a moving or resizing a+-- chart or image).+--+-- /See:/ 'updateEmbeddedObjectPositionRequest' smart constructor.+data UpdateEmbeddedObjectPositionRequest = UpdateEmbeddedObjectPositionRequest'+    { _ueoprNewPosition :: !(Maybe EmbeddedObjectPosition)+    , _ueoprObjectId    :: !(Maybe (Textual Int32))+    , _ueoprFields      :: !(Maybe FieldMask)+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'UpdateEmbeddedObjectPositionRequest' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'ueoprNewPosition'+--+-- * 'ueoprObjectId'+--+-- * 'ueoprFields'+updateEmbeddedObjectPositionRequest+    :: UpdateEmbeddedObjectPositionRequest+updateEmbeddedObjectPositionRequest =+    UpdateEmbeddedObjectPositionRequest'+    { _ueoprNewPosition = Nothing+    , _ueoprObjectId = Nothing+    , _ueoprFields = Nothing+    }++-- | An explicit position to move the embedded object to. If+-- newPosition.sheetId is set, a new sheet with that ID will be created. If+-- newPosition.newSheet is set to true, a new sheet will be created with an+-- ID that will be chosen for you.+ueoprNewPosition :: Lens' UpdateEmbeddedObjectPositionRequest (Maybe EmbeddedObjectPosition)+ueoprNewPosition+  = lens _ueoprNewPosition+      (\ s a -> s{_ueoprNewPosition = a})++-- | The ID of the object to moved.+ueoprObjectId :: Lens' UpdateEmbeddedObjectPositionRequest (Maybe Int32)+ueoprObjectId+  = lens _ueoprObjectId+      (\ s a -> s{_ueoprObjectId = a})+      . mapping _Coerce++-- | The fields of OverlayPosition that should be updated when setting a new+-- position. Used only if newPosition.overlayPosition is set, in which case+-- at least one field must be specified. The root+-- \`newPosition.overlayPosition\` is implied and should not be specified.+-- A single \`\"*\"\` can be used as short-hand for listing every field.+ueoprFields :: Lens' UpdateEmbeddedObjectPositionRequest (Maybe FieldMask)+ueoprFields+  = lens _ueoprFields (\ s a -> s{_ueoprFields = a})++instance FromJSON UpdateEmbeddedObjectPositionRequest+         where+        parseJSON+          = withObject "UpdateEmbeddedObjectPositionRequest"+              (\ o ->+                 UpdateEmbeddedObjectPositionRequest' <$>+                   (o .:? "newPosition") <*> (o .:? "objectId") <*>+                     (o .:? "fields"))++instance ToJSON UpdateEmbeddedObjectPositionRequest+         where+        toJSON UpdateEmbeddedObjectPositionRequest'{..}+          = object+              (catMaybes+                 [("newPosition" .=) <$> _ueoprNewPosition,+                  ("objectId" .=) <$> _ueoprObjectId,+                  ("fields" .=) <$> _ueoprFields])++-- | A rule that may or may not match, depending on the condition.+--+-- /See:/ 'booleanRule' smart constructor.+data BooleanRule = BooleanRule'+    { _brFormat    :: !(Maybe CellFormat)+    , _brCondition :: !(Maybe BooleanCondition)+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'BooleanRule' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'brFormat'+--+-- * 'brCondition'+booleanRule+    :: BooleanRule+booleanRule =+    BooleanRule'+    { _brFormat = Nothing+    , _brCondition = Nothing+    }++-- | The format to apply. Conditional formatting can only apply a subset of+-- formatting: bold, italic, strikethrough, foreground color & background+-- color.+brFormat :: Lens' BooleanRule (Maybe CellFormat)+brFormat = lens _brFormat (\ s a -> s{_brFormat = a})++-- | The condition of the rule. If the condition evaluates to true, the+-- format will be applied.+brCondition :: Lens' BooleanRule (Maybe BooleanCondition)+brCondition+  = lens _brCondition (\ s a -> s{_brCondition = a})++instance FromJSON BooleanRule where+        parseJSON+          = withObject "BooleanRule"+              (\ o ->+                 BooleanRule' <$>+                   (o .:? "format") <*> (o .:? "condition"))++instance ToJSON BooleanRule where+        toJSON BooleanRule'{..}+          = object+              (catMaybes+                 [("format" .=) <$> _brFormat,+                  ("condition" .=) <$> _brCondition])++-- | A combination of a source range and how to extend that source.+--+-- /See:/ 'sourceAndDestination' smart constructor.+data SourceAndDestination = SourceAndDestination'+    { _sadDimension  :: !(Maybe SourceAndDestinationDimension)+    , _sadSource     :: !(Maybe GridRange)+    , _sadFillLength :: !(Maybe (Textual Int32))+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'SourceAndDestination' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'sadDimension'+--+-- * 'sadSource'+--+-- * 'sadFillLength'+sourceAndDestination+    :: SourceAndDestination+sourceAndDestination =+    SourceAndDestination'+    { _sadDimension = Nothing+    , _sadSource = Nothing+    , _sadFillLength = Nothing+    }++-- | The dimension that data should be filled into.+sadDimension :: Lens' SourceAndDestination (Maybe SourceAndDestinationDimension)+sadDimension+  = lens _sadDimension (\ s a -> s{_sadDimension = a})++-- | The location of the data to use as the source of the autofill.+sadSource :: Lens' SourceAndDestination (Maybe GridRange)+sadSource+  = lens _sadSource (\ s a -> s{_sadSource = a})++-- | The number of rows or columns that data should be filled into. Positive+-- numbers expand beyond the last row or last column of the source.+-- Negative numbers expand before the first row or first column of the+-- source.+sadFillLength :: Lens' SourceAndDestination (Maybe Int32)+sadFillLength+  = lens _sadFillLength+      (\ s a -> s{_sadFillLength = a})+      . mapping _Coerce++instance FromJSON SourceAndDestination where+        parseJSON+          = withObject "SourceAndDestination"+              (\ o ->+                 SourceAndDestination' <$>+                   (o .:? "dimension") <*> (o .:? "source") <*>+                     (o .:? "fillLength"))++instance ToJSON SourceAndDestination where+        toJSON SourceAndDestination'{..}+          = object+              (catMaybes+                 [("dimension" .=) <$> _sadDimension,+                  ("source" .=) <$> _sadSource,+                  ("fillLength" .=) <$> _sadFillLength])++-- | Inserts data into the spreadsheet starting at the specified coordinate.+--+-- /See:/ 'pasteDataRequest' smart constructor.+data PasteDataRequest = PasteDataRequest'+    { _pdrData       :: !(Maybe Text)+    , _pdrCoordinate :: !(Maybe GridCoordinate)+    , _pdrHTML       :: !(Maybe Bool)+    , _pdrType       :: !(Maybe PasteDataRequestType)+    , _pdrDelimiter  :: !(Maybe Text)+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'PasteDataRequest' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'pdrData'+--+-- * 'pdrCoordinate'+--+-- * 'pdrHTML'+--+-- * 'pdrType'+--+-- * 'pdrDelimiter'+pasteDataRequest+    :: PasteDataRequest+pasteDataRequest =+    PasteDataRequest'+    { _pdrData = Nothing+    , _pdrCoordinate = Nothing+    , _pdrHTML = Nothing+    , _pdrType = Nothing+    , _pdrDelimiter = Nothing+    }++-- | The data to insert.+pdrData :: Lens' PasteDataRequest (Maybe Text)+pdrData = lens _pdrData (\ s a -> s{_pdrData = a})++-- | The coordinate at which the data should start being inserted.+pdrCoordinate :: Lens' PasteDataRequest (Maybe GridCoordinate)+pdrCoordinate+  = lens _pdrCoordinate+      (\ s a -> s{_pdrCoordinate = a})++-- | True if the data is HTML.+pdrHTML :: Lens' PasteDataRequest (Maybe Bool)+pdrHTML = lens _pdrHTML (\ s a -> s{_pdrHTML = a})++-- | How the data should be pasted.+pdrType :: Lens' PasteDataRequest (Maybe PasteDataRequestType)+pdrType = lens _pdrType (\ s a -> s{_pdrType = a})++-- | The delimiter in the data.+pdrDelimiter :: Lens' PasteDataRequest (Maybe Text)+pdrDelimiter+  = lens _pdrDelimiter (\ s a -> s{_pdrDelimiter = a})++instance FromJSON PasteDataRequest where+        parseJSON+          = withObject "PasteDataRequest"+              (\ o ->+                 PasteDataRequest' <$>+                   (o .:? "data") <*> (o .:? "coordinate") <*>+                     (o .:? "html")+                     <*> (o .:? "type")+                     <*> (o .:? "delimiter"))++instance ToJSON PasteDataRequest where+        toJSON PasteDataRequest'{..}+          = object+              (catMaybes+                 [("data" .=) <$> _pdrData,+                  ("coordinate" .=) <$> _pdrCoordinate,+                  ("html" .=) <$> _pdrHTML, ("type" .=) <$> _pdrType,+                  ("delimiter" .=) <$> _pdrDelimiter])++-- | Adds new cells after the last row with data in a sheet, inserting new+-- rows into the sheet if necessary.+--+-- /See:/ 'appendCellsRequest' smart constructor.+data AppendCellsRequest = AppendCellsRequest'+    { _acrRows    :: !(Maybe [RowData])+    , _acrSheetId :: !(Maybe (Textual Int32))+    , _acrFields  :: !(Maybe FieldMask)+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'AppendCellsRequest' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'acrRows'+--+-- * 'acrSheetId'+--+-- * 'acrFields'+appendCellsRequest+    :: AppendCellsRequest+appendCellsRequest =+    AppendCellsRequest'+    { _acrRows = Nothing+    , _acrSheetId = Nothing+    , _acrFields = Nothing+    }++-- | The data to append.+acrRows :: Lens' AppendCellsRequest [RowData]+acrRows+  = lens _acrRows (\ s a -> s{_acrRows = a}) . _Default+      . _Coerce++-- | The sheet ID to append the data to.+acrSheetId :: Lens' AppendCellsRequest (Maybe Int32)+acrSheetId+  = lens _acrSheetId (\ s a -> s{_acrSheetId = a}) .+      mapping _Coerce++-- | The fields of CellData that should be updated. At least one field must+-- be specified. The root is the CellData; \'row.values.\' should not be+-- specified. A single \`\"*\"\` can be used as short-hand for listing+-- every field.+acrFields :: Lens' AppendCellsRequest (Maybe FieldMask)+acrFields+  = lens _acrFields (\ s a -> s{_acrFields = a})++instance FromJSON AppendCellsRequest where+        parseJSON+          = withObject "AppendCellsRequest"+              (\ o ->+                 AppendCellsRequest' <$>+                   (o .:? "rows" .!= mempty) <*> (o .:? "sheetId") <*>+                     (o .:? "fields"))++instance ToJSON AppendCellsRequest where+        toJSON AppendCellsRequest'{..}+          = object+              (catMaybes+                 [("rows" .=) <$> _acrRows,+                  ("sheetId" .=) <$> _acrSheetId,+                  ("fields" .=) <$> _acrFields])++-- | The result of the find\/replace.+--+-- /See:/ 'findReplaceResponse' smart constructor.+data FindReplaceResponse = FindReplaceResponse'+    { _frrValuesChanged      :: !(Maybe (Textual Int32))+    , _frrFormulasChanged    :: !(Maybe (Textual Int32))+    , _frrRowsChanged        :: !(Maybe (Textual Int32))+    , _frrSheetsChanged      :: !(Maybe (Textual Int32))+    , _frrOccurrencesChanged :: !(Maybe (Textual Int32))+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'FindReplaceResponse' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'frrValuesChanged'+--+-- * 'frrFormulasChanged'+--+-- * 'frrRowsChanged'+--+-- * 'frrSheetsChanged'+--+-- * 'frrOccurrencesChanged'+findReplaceResponse+    :: FindReplaceResponse+findReplaceResponse =+    FindReplaceResponse'+    { _frrValuesChanged = Nothing+    , _frrFormulasChanged = Nothing+    , _frrRowsChanged = Nothing+    , _frrSheetsChanged = Nothing+    , _frrOccurrencesChanged = Nothing+    }++-- | The number of non-formula cells changed.+frrValuesChanged :: Lens' FindReplaceResponse (Maybe Int32)+frrValuesChanged+  = lens _frrValuesChanged+      (\ s a -> s{_frrValuesChanged = a})+      . mapping _Coerce++-- | The number of formula cells changed.+frrFormulasChanged :: Lens' FindReplaceResponse (Maybe Int32)+frrFormulasChanged+  = lens _frrFormulasChanged+      (\ s a -> s{_frrFormulasChanged = a})+      . mapping _Coerce++-- | The number of rows changed.+frrRowsChanged :: Lens' FindReplaceResponse (Maybe Int32)+frrRowsChanged+  = lens _frrRowsChanged+      (\ s a -> s{_frrRowsChanged = a})+      . mapping _Coerce++-- | The number of sheets changed.+frrSheetsChanged :: Lens' FindReplaceResponse (Maybe Int32)+frrSheetsChanged+  = lens _frrSheetsChanged+      (\ s a -> s{_frrSheetsChanged = a})+      . mapping _Coerce++-- | The number of occurrences (possibly multiple within a cell) changed. For+-- example, if replacing \`\"e\"\` with \`\"o\"\` in \`\"Google Sheets\"\`,+-- this would be \`\"3\"\` because \`\"Google Sheets\"\` -> \`\"Googlo+-- Shoots\"\`.+frrOccurrencesChanged :: Lens' FindReplaceResponse (Maybe Int32)+frrOccurrencesChanged+  = lens _frrOccurrencesChanged+      (\ s a -> s{_frrOccurrencesChanged = a})+      . mapping _Coerce++instance FromJSON FindReplaceResponse where+        parseJSON+          = withObject "FindReplaceResponse"+              (\ o ->+                 FindReplaceResponse' <$>+                   (o .:? "valuesChanged") <*> (o .:? "formulasChanged")+                     <*> (o .:? "rowsChanged")+                     <*> (o .:? "sheetsChanged")+                     <*> (o .:? "occurrencesChanged"))++instance ToJSON FindReplaceResponse where+        toJSON FindReplaceResponse'{..}+          = object+              (catMaybes+                 [("valuesChanged" .=) <$> _frrValuesChanged,+                  ("formulasChanged" .=) <$> _frrFormulasChanged,+                  ("rowsChanged" .=) <$> _frrRowsChanged,+                  ("sheetsChanged" .=) <$> _frrSheetsChanged,+                  ("occurrencesChanged" .=) <$>+                    _frrOccurrencesChanged])++-- | A </chart/interactive/docs/gallery/piechart pie chart>.+--+-- /See:/ 'pieChartSpec' smart constructor.+data PieChartSpec = PieChartSpec'+    { _pcsPieHole          :: !(Maybe (Textual Double))+    , _pcsLegendPosition   :: !(Maybe PieChartSpecLegendPosition)+    , _pcsDomain           :: !(Maybe ChartData)+    , _pcsSeries           :: !(Maybe ChartData)+    , _pcsThreeDimensional :: !(Maybe Bool)+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'PieChartSpec' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'pcsPieHole'+--+-- * 'pcsLegendPosition'+--+-- * 'pcsDomain'+--+-- * 'pcsSeries'+--+-- * 'pcsThreeDimensional'+pieChartSpec+    :: PieChartSpec+pieChartSpec =+    PieChartSpec'+    { _pcsPieHole = Nothing+    , _pcsLegendPosition = Nothing+    , _pcsDomain = Nothing+    , _pcsSeries = Nothing+    , _pcsThreeDimensional = Nothing+    }++-- | The size of the hole in the pie chart.+pcsPieHole :: Lens' PieChartSpec (Maybe Double)+pcsPieHole+  = lens _pcsPieHole (\ s a -> s{_pcsPieHole = a}) .+      mapping _Coerce++-- | Where the legend of the pie chart should be drawn.+pcsLegendPosition :: Lens' PieChartSpec (Maybe PieChartSpecLegendPosition)+pcsLegendPosition+  = lens _pcsLegendPosition+      (\ s a -> s{_pcsLegendPosition = a})++-- | The data that covers the domain of the pie chart.+pcsDomain :: Lens' PieChartSpec (Maybe ChartData)+pcsDomain+  = lens _pcsDomain (\ s a -> s{_pcsDomain = a})++-- | The data that covers the one and only series of the pie chart.+pcsSeries :: Lens' PieChartSpec (Maybe ChartData)+pcsSeries+  = lens _pcsSeries (\ s a -> s{_pcsSeries = a})++-- | True if the pie is three dimensional.+pcsThreeDimensional :: Lens' PieChartSpec (Maybe Bool)+pcsThreeDimensional+  = lens _pcsThreeDimensional+      (\ s a -> s{_pcsThreeDimensional = a})++instance FromJSON PieChartSpec where+        parseJSON+          = withObject "PieChartSpec"+              (\ o ->+                 PieChartSpec' <$>+                   (o .:? "pieHole") <*> (o .:? "legendPosition") <*>+                     (o .:? "domain")+                     <*> (o .:? "series")+                     <*> (o .:? "threeDimensional"))++instance ToJSON PieChartSpec where+        toJSON PieChartSpec'{..}+          = object+              (catMaybes+                 [("pieHole" .=) <$> _pcsPieHole,+                  ("legendPosition" .=) <$> _pcsLegendPosition,+                  ("domain" .=) <$> _pcsDomain,+                  ("series" .=) <$> _pcsSeries,+                  ("threeDimensional" .=) <$> _pcsThreeDimensional])++-- | A data validation rule.+--+-- /See:/ 'dataValidationRule' smart constructor.+data DataValidationRule = DataValidationRule'+    { _dvrShowCustomUi :: !(Maybe Bool)+    , _dvrInputMessage :: !(Maybe Text)+    , _dvrStrict       :: !(Maybe Bool)+    , _dvrCondition    :: !(Maybe BooleanCondition)+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'DataValidationRule' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'dvrShowCustomUi'+--+-- * 'dvrInputMessage'+--+-- * 'dvrStrict'+--+-- * 'dvrCondition'+dataValidationRule+    :: DataValidationRule+dataValidationRule =+    DataValidationRule'+    { _dvrShowCustomUi = Nothing+    , _dvrInputMessage = Nothing+    , _dvrStrict = Nothing+    , _dvrCondition = Nothing+    }++-- | True if the UI should be customized based on the kind of condition. If+-- true, \"List\" conditions will show a dropdown.+dvrShowCustomUi :: Lens' DataValidationRule (Maybe Bool)+dvrShowCustomUi+  = lens _dvrShowCustomUi+      (\ s a -> s{_dvrShowCustomUi = a})++-- | A message to show the user when adding data to the cell.+dvrInputMessage :: Lens' DataValidationRule (Maybe Text)+dvrInputMessage+  = lens _dvrInputMessage+      (\ s a -> s{_dvrInputMessage = a})++-- | True if invalid data should be rejected.+dvrStrict :: Lens' DataValidationRule (Maybe Bool)+dvrStrict+  = lens _dvrStrict (\ s a -> s{_dvrStrict = a})++-- | The condition that data in the cell must match.+dvrCondition :: Lens' DataValidationRule (Maybe BooleanCondition)+dvrCondition+  = lens _dvrCondition (\ s a -> s{_dvrCondition = a})++instance FromJSON DataValidationRule where+        parseJSON+          = withObject "DataValidationRule"+              (\ o ->+                 DataValidationRule' <$>+                   (o .:? "showCustomUi") <*> (o .:? "inputMessage") <*>+                     (o .:? "strict")+                     <*> (o .:? "condition"))++instance ToJSON DataValidationRule where+        toJSON DataValidationRule'{..}+          = object+              (catMaybes+                 [("showCustomUi" .=) <$> _dvrShowCustomUi,+                  ("inputMessage" .=) <$> _dvrInputMessage,+                  ("strict" .=) <$> _dvrStrict,+                  ("condition" .=) <$> _dvrCondition])++-- | A filter view.+--+-- /See:/ 'filterView' smart constructor.+data FilterView = FilterView'+    { _fvSortSpecs    :: !(Maybe [SortSpec])+    , _fvNamedRangeId :: !(Maybe Text)+    , _fvRange        :: !(Maybe GridRange)+    , _fvFilterViewId :: !(Maybe (Textual Int32))+    , _fvTitle        :: !(Maybe Text)+    , _fvCriteria     :: !(Maybe FilterViewCriteria)+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'FilterView' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'fvSortSpecs'+--+-- * 'fvNamedRangeId'+--+-- * 'fvRange'+--+-- * 'fvFilterViewId'+--+-- * 'fvTitle'+--+-- * 'fvCriteria'+filterView+    :: FilterView+filterView =+    FilterView'+    { _fvSortSpecs = Nothing+    , _fvNamedRangeId = Nothing+    , _fvRange = Nothing+    , _fvFilterViewId = Nothing+    , _fvTitle = Nothing+    , _fvCriteria = Nothing+    }++-- | The sort order per column. Later specifications are used when values are+-- equal in the earlier specifications.+fvSortSpecs :: Lens' FilterView [SortSpec]+fvSortSpecs+  = lens _fvSortSpecs (\ s a -> s{_fvSortSpecs = a}) .+      _Default+      . _Coerce++-- | The named range this filter view is backed by, if any. When writing,+-- only one of range or named_range_id may be set.+fvNamedRangeId :: Lens' FilterView (Maybe Text)+fvNamedRangeId+  = lens _fvNamedRangeId+      (\ s a -> s{_fvNamedRangeId = a})++-- | The range this filter view covers. When writing, only one of range or+-- named_range_id may be set.+fvRange :: Lens' FilterView (Maybe GridRange)+fvRange = lens _fvRange (\ s a -> s{_fvRange = a})++-- | The ID of the filter view.+fvFilterViewId :: Lens' FilterView (Maybe Int32)+fvFilterViewId+  = lens _fvFilterViewId+      (\ s a -> s{_fvFilterViewId = a})+      . mapping _Coerce++-- | The name of the filter view.+fvTitle :: Lens' FilterView (Maybe Text)+fvTitle = lens _fvTitle (\ s a -> s{_fvTitle = a})++-- | The criteria for showing\/hiding values per column. The map\'s key is+-- the column index, and the value is the criteria for that column.+fvCriteria :: Lens' FilterView (Maybe FilterViewCriteria)+fvCriteria+  = lens _fvCriteria (\ s a -> s{_fvCriteria = a})++instance FromJSON FilterView where+        parseJSON+          = withObject "FilterView"+              (\ o ->+                 FilterView' <$>+                   (o .:? "sortSpecs" .!= mempty) <*>+                     (o .:? "namedRangeId")+                     <*> (o .:? "range")+                     <*> (o .:? "filterViewId")+                     <*> (o .:? "title")+                     <*> (o .:? "criteria"))++instance ToJSON FilterView where+        toJSON FilterView'{..}+          = object+              (catMaybes+                 [("sortSpecs" .=) <$> _fvSortSpecs,+                  ("namedRangeId" .=) <$> _fvNamedRangeId,+                  ("range" .=) <$> _fvRange,+                  ("filterViewId" .=) <$> _fvFilterViewId,+                  ("title" .=) <$> _fvTitle,+                  ("criteria" .=) <$> _fvCriteria])++-- | Represents a color in the RGBA color space. This representation is+-- designed for simplicity of conversion to\/from color representations in+-- various languages over compactness; for example, the fields of this+-- representation can be trivially provided to the constructor of+-- \"java.awt.Color\" in Java; it can also be trivially provided to+-- UIColor\'s \"+colorWithRed:green:blue:alpha\" method in iOS; and, with+-- just a little work, it can be easily formatted into a CSS \"rgba()\"+-- string in JavaScript, as well. Here are some examples: Example (Java):+-- import com.google.type.Color; \/\/ ... public static java.awt.Color+-- fromProto(Color protocolor) { float alpha = protocolor.hasAlpha() ?+-- protocolor.getAlpha().getValue() : 1.0; return new java.awt.Color(+-- protocolor.getRed(), protocolor.getGreen(), protocolor.getBlue(),+-- alpha); } public static Color toProto(java.awt.Color color) { float red+-- = (float) color.getRed(); float green = (float) color.getGreen(); float+-- blue = (float) color.getBlue(); float denominator = 255.0; Color.Builder+-- resultBuilder = Color .newBuilder() .setRed(red \/ denominator)+-- .setGreen(green \/ denominator) .setBlue(blue \/ denominator); int alpha+-- = color.getAlpha(); if (alpha != 255) { result.setAlpha( FloatValue+-- .newBuilder() .setValue(((float) alpha) \/ denominator) .build()); }+-- return resultBuilder.build(); } \/\/ ... Example (iOS \/ Obj-C): \/\/+-- ... static UIColor* fromProto(Color* protocolor) { float red =+-- [protocolor red]; float green = [protocolor green]; float blue =+-- [protocolor blue]; FloatValue* alpha_wrapper = [protocolor alpha]; float+-- alpha = 1.0; if (alpha_wrapper != nil) { alpha = [alpha_wrapper value];+-- } return [UIColor colorWithRed:red green:green blue:blue alpha:alpha]; }+-- static Color* toProto(UIColor* color) { CGFloat red, green, blue, alpha;+-- if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) { return+-- nil; } Color* result = [Color alloc] init]; [result setRed:red]; [result+-- setGreen:green]; [result setBlue:blue]; if (alpha \<= 0.9999) { [result+-- setAlpha:floatWrapperWithValue(alpha)]; } [result autorelease]; return+-- result; } \/\/ ... Example (JavaScript): \/\/ ... var protoToCssColor =+-- function(rgb_color) { var redFrac = rgb_color.red || 0.0; var greenFrac+-- = rgb_color.green || 0.0; var blueFrac = rgb_color.blue || 0.0; var red+-- = Math.floor(redFrac * 255); var green = Math.floor(greenFrac * 255);+-- var blue = Math.floor(blueFrac * 255); if (!(\'alpha\' in rgb_color)) {+-- return rgbToCssColor_(red, green, blue); } var alphaFrac =+-- rgb_color.alpha.value || 0.0; var rgbParams = [red, green,+-- blue].join(\',\'); return [\'rgba(\', rgbParams, \',\', alphaFrac,+-- \')\'].join(\'\'); }; var rgbToCssColor_ = function(red, green, blue) {+-- var rgbNumber = new Number((red \<\< 16) | (green \<\< 8) | blue); var+-- hexString = rgbNumber.toString(16); var missingZeros = 6 -+-- hexString.length; var resultBuilder = [\'#\']; for (var i = 0; i \<+-- missingZeros; i++) { resultBuilder.push(\'0\'); }+-- resultBuilder.push(hexString); return resultBuilder.join(\'\'); }; \/\/+-- ...+--+-- /See:/ 'color' smart constructor.+data Color = Color'+    { _cRed   :: !(Maybe (Textual Double))+    , _cAlpha :: !(Maybe (Textual Double))+    , _cGreen :: !(Maybe (Textual Double))+    , _cBlue  :: !(Maybe (Textual Double))+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'Color' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'cRed'+--+-- * 'cAlpha'+--+-- * 'cGreen'+--+-- * 'cBlue'+color+    :: Color+color =+    Color'+    { _cRed = Nothing+    , _cAlpha = Nothing+    , _cGreen = Nothing+    , _cBlue = Nothing+    }++-- | The amount of red in the color as a value in the interval [0, 1].+cRed :: Lens' Color (Maybe Double)+cRed+  = lens _cRed (\ s a -> s{_cRed = a}) .+      mapping _Coerce++-- | The fraction of this color that should be applied to the pixel. That is,+-- the final pixel color is defined by the equation: pixel color = alpha *+-- (this color) + (1.0 - alpha) * (background color) This means that a+-- value of 1.0 corresponds to a solid color, whereas a value of 0.0+-- corresponds to a completely transparent color. This uses a wrapper+-- message rather than a simple float scalar so that it is possible to+-- distinguish between a default value and the value being unset. If+-- omitted, this color object is to be rendered as a solid color (as if the+-- alpha value had been explicitly given with a value of 1.0).+cAlpha :: Lens' Color (Maybe Double)+cAlpha+  = lens _cAlpha (\ s a -> s{_cAlpha = a}) .+      mapping _Coerce++-- | The amount of green in the color as a value in the interval [0, 1].+cGreen :: Lens' Color (Maybe Double)+cGreen+  = lens _cGreen (\ s a -> s{_cGreen = a}) .+      mapping _Coerce++-- | The amount of blue in the color as a value in the interval [0, 1].+cBlue :: Lens' Color (Maybe Double)+cBlue+  = lens _cBlue (\ s a -> s{_cBlue = a}) .+      mapping _Coerce++instance FromJSON Color where+        parseJSON+          = withObject "Color"+              (\ o ->+                 Color' <$>+                   (o .:? "red") <*> (o .:? "alpha") <*> (o .:? "green")+                     <*> (o .:? "blue"))++instance ToJSON Color where+        toJSON Color'{..}+          = object+              (catMaybes+                 [("red" .=) <$> _cRed, ("alpha" .=) <$> _cAlpha,+                  ("green" .=) <$> _cGreen, ("blue" .=) <$> _cBlue])++-- | Deletes a particular filter view.+--+-- /See:/ 'deleteFilterViewRequest' smart constructor.+newtype DeleteFilterViewRequest = DeleteFilterViewRequest'+    { _dfvrFilterId :: Maybe (Textual Int32)+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'DeleteFilterViewRequest' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'dfvrFilterId'+deleteFilterViewRequest+    :: DeleteFilterViewRequest+deleteFilterViewRequest =+    DeleteFilterViewRequest'+    { _dfvrFilterId = Nothing+    }++-- | The ID of the filter to delete.+dfvrFilterId :: Lens' DeleteFilterViewRequest (Maybe Int32)+dfvrFilterId+  = lens _dfvrFilterId (\ s a -> s{_dfvrFilterId = a})+      . mapping _Coerce++instance FromJSON DeleteFilterViewRequest where+        parseJSON+          = withObject "DeleteFilterViewRequest"+              (\ o ->+                 DeleteFilterViewRequest' <$> (o .:? "filterId"))++instance ToJSON DeleteFilterViewRequest where+        toJSON DeleteFilterViewRequest'{..}+          = object+              (catMaybes [("filterId" .=) <$> _dfvrFilterId])++-- | Updates properties of the filter view.+--+-- /See:/ 'updateFilterViewRequest' smart constructor.+data UpdateFilterViewRequest = UpdateFilterViewRequest'+    { _ufvrFilter :: !(Maybe FilterView)+    , _ufvrFields :: !(Maybe FieldMask)+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'UpdateFilterViewRequest' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'ufvrFilter'+--+-- * 'ufvrFields'+updateFilterViewRequest+    :: UpdateFilterViewRequest+updateFilterViewRequest =+    UpdateFilterViewRequest'+    { _ufvrFilter = Nothing+    , _ufvrFields = Nothing+    }++-- | The new properties of the filter view.+ufvrFilter :: Lens' UpdateFilterViewRequest (Maybe FilterView)+ufvrFilter+  = lens _ufvrFilter (\ s a -> s{_ufvrFilter = a})++-- | The fields that should be updated. At least one field must be specified.+-- The root \`filter\` is implied and should not be specified. A single+-- \`\"*\"\` can be used as short-hand for listing every field.+ufvrFields :: Lens' UpdateFilterViewRequest (Maybe FieldMask)+ufvrFields+  = lens _ufvrFields (\ s a -> s{_ufvrFields = a})++instance FromJSON UpdateFilterViewRequest where+        parseJSON+          = withObject "UpdateFilterViewRequest"+              (\ o ->+                 UpdateFilterViewRequest' <$>+                   (o .:? "filter") <*> (o .:? "fields"))++instance ToJSON UpdateFilterViewRequest where+        toJSON UpdateFilterViewRequest'{..}+          = object+              (catMaybes+                 [("filter" .=) <$> _ufvrFilter,+                  ("fields" .=) <$> _ufvrFields])++-- | A single series of data in a chart. For example, if charting stock+-- prices over time, multiple series may exist, one for the \"Open Price\",+-- \"High Price\", \"Low Price\" and \"Close Price\".+--+-- /See:/ 'basicChartSeries' smart constructor.+data BasicChartSeries = BasicChartSeries'+    { _bcsTargetAxis :: !(Maybe BasicChartSeriesTargetAxis)+    , _bcsSeries     :: !(Maybe ChartData)+    , _bcsType       :: !(Maybe BasicChartSeriesType)+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'BasicChartSeries' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'bcsTargetAxis'+--+-- * 'bcsSeries'+--+-- * 'bcsType'+basicChartSeries+    :: BasicChartSeries+basicChartSeries =+    BasicChartSeries'+    { _bcsTargetAxis = Nothing+    , _bcsSeries = Nothing+    , _bcsType = Nothing+    }++-- | The minor axis that will specify the range of values for this series.+-- For example, if charting stocks over time, the \"Volume\" series may+-- want to be pinned to the right with the prices pinned to the left,+-- because the scale of trading volume is different than the scale of+-- prices. It is an error to specify an axis that isn\'t a valid minor axis+-- for the chart\'s type.+bcsTargetAxis :: Lens' BasicChartSeries (Maybe BasicChartSeriesTargetAxis)+bcsTargetAxis+  = lens _bcsTargetAxis+      (\ s a -> s{_bcsTargetAxis = a})++-- | The data being visualized in this chart series.+bcsSeries :: Lens' BasicChartSeries (Maybe ChartData)+bcsSeries+  = lens _bcsSeries (\ s a -> s{_bcsSeries = a})++-- | The type of this series. Valid only if the chartType is COMBO. Different+-- types will change the way the series is visualized. Only LINE, AREA, and+-- COLUMN are supported.+bcsType :: Lens' BasicChartSeries (Maybe BasicChartSeriesType)+bcsType = lens _bcsType (\ s a -> s{_bcsType = a})++instance FromJSON BasicChartSeries where+        parseJSON+          = withObject "BasicChartSeries"+              (\ o ->+                 BasicChartSeries' <$>+                   (o .:? "targetAxis") <*> (o .:? "series") <*>+                     (o .:? "type"))++instance ToJSON BasicChartSeries where+        toJSON BasicChartSeries'{..}+          = object+              (catMaybes+                 [("targetAxis" .=) <$> _bcsTargetAxis,+                  ("series" .=) <$> _bcsSeries,+                  ("type" .=) <$> _bcsType])++-- | Adds a new protected range.+--+-- /See:/ 'addProtectedRangeRequest' smart constructor.+newtype AddProtectedRangeRequest = AddProtectedRangeRequest'+    { _aprrProtectedRange :: Maybe ProtectedRange+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'AddProtectedRangeRequest' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'aprrProtectedRange'+addProtectedRangeRequest+    :: AddProtectedRangeRequest+addProtectedRangeRequest =+    AddProtectedRangeRequest'+    { _aprrProtectedRange = Nothing+    }++-- | The protected range to be added.+aprrProtectedRange :: Lens' AddProtectedRangeRequest (Maybe ProtectedRange)+aprrProtectedRange+  = lens _aprrProtectedRange+      (\ s a -> s{_aprrProtectedRange = a})++instance FromJSON AddProtectedRangeRequest where+        parseJSON+          = withObject "AddProtectedRangeRequest"+              (\ o ->+                 AddProtectedRangeRequest' <$>+                   (o .:? "protectedRange"))++instance ToJSON AddProtectedRangeRequest where+        toJSON AddProtectedRangeRequest'{..}+          = object+              (catMaybes+                 [("protectedRange" .=) <$> _aprrProtectedRange])++-- | Updates all cells in the range to the values in the given Cell object.+-- Only the fields listed in the fields field are updated; others are+-- unchanged. If writing a cell with a formula, the formula\'s ranges will+-- automatically increment for each field in the range. For example, if+-- writing a cell with formula \`=A1\` into range B2:C4, B2 would be+-- \`=A1\`, B3 would be \`=A2\`, B4 would be \`=A3\`, C2 would be \`=B1\`,+-- C3 would be \`=B2\`, C4 would be \`=B3\`. To keep the formula\'s ranges+-- static, use the \`$\` indicator. For example, use the formula \`=$A$1\`+-- to prevent both the row and the column from incrementing.+--+-- /See:/ 'repeatCellRequest' smart constructor.+data RepeatCellRequest = RepeatCellRequest'+    { _rcrCell   :: !(Maybe CellData)+    , _rcrRange  :: !(Maybe GridRange)+    , _rcrFields :: !(Maybe FieldMask)+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'RepeatCellRequest' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'rcrCell'+--+-- * 'rcrRange'+--+-- * 'rcrFields'+repeatCellRequest+    :: RepeatCellRequest+repeatCellRequest =+    RepeatCellRequest'+    { _rcrCell = Nothing+    , _rcrRange = Nothing+    , _rcrFields = Nothing+    }++-- | The data to write.+rcrCell :: Lens' RepeatCellRequest (Maybe CellData)+rcrCell = lens _rcrCell (\ s a -> s{_rcrCell = a})++-- | The range to repeat the cell in.+rcrRange :: Lens' RepeatCellRequest (Maybe GridRange)+rcrRange = lens _rcrRange (\ s a -> s{_rcrRange = a})++-- | The fields that should be updated. At least one field must be specified.+-- The root \`cell\` is implied and should not be specified. A single+-- \`\"*\"\` can be used as short-hand for listing every field.+rcrFields :: Lens' RepeatCellRequest (Maybe FieldMask)+rcrFields+  = lens _rcrFields (\ s a -> s{_rcrFields = a})++instance FromJSON RepeatCellRequest where+        parseJSON+          = withObject "RepeatCellRequest"+              (\ o ->+                 RepeatCellRequest' <$>+                   (o .:? "cell") <*> (o .:? "range") <*>+                     (o .:? "fields"))++instance ToJSON RepeatCellRequest where+        toJSON RepeatCellRequest'{..}+          = object+              (catMaybes+                 [("cell" .=) <$> _rcrCell,+                  ("range" .=) <$> _rcrRange,+                  ("fields" .=) <$> _rcrFields])++-- | The value of the condition.+--+-- /See:/ 'conditionValue' smart constructor.+data ConditionValue = ConditionValue'+    { _cvRelativeDate     :: !(Maybe ConditionValueRelativeDate)+    , _cvUserEnteredValue :: !(Maybe Text)+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'ConditionValue' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'cvRelativeDate'+--+-- * 'cvUserEnteredValue'+conditionValue+    :: ConditionValue+conditionValue =+    ConditionValue'+    { _cvRelativeDate = Nothing+    , _cvUserEnteredValue = Nothing+    }++-- | A relative date (based on the current date). Valid only if the type is+-- DATE_BEFORE, DATE_AFTER, DATE_ON_OR_BEFORE or DATE_ON_OR_AFTER. Relative+-- dates are not supported in data validation. They are supported only in+-- conditional formatting and conditional filters.+cvRelativeDate :: Lens' ConditionValue (Maybe ConditionValueRelativeDate)+cvRelativeDate+  = lens _cvRelativeDate+      (\ s a -> s{_cvRelativeDate = a})++-- | A value the condition is based on. The value will be parsed as if the+-- user typed into a cell. Formulas are supported (and must begin with an+-- \`=\`).+cvUserEnteredValue :: Lens' ConditionValue (Maybe Text)+cvUserEnteredValue+  = lens _cvUserEnteredValue+      (\ s a -> s{_cvUserEnteredValue = a})++instance FromJSON ConditionValue where+        parseJSON+          = withObject "ConditionValue"+              (\ o ->+                 ConditionValue' <$>+                   (o .:? "relativeDate") <*>+                     (o .:? "userEnteredValue"))++instance ToJSON ConditionValue where+        toJSON ConditionValue'{..}+          = object+              (catMaybes+                 [("relativeDate" .=) <$> _cvRelativeDate,+                  ("userEnteredValue" .=) <$> _cvUserEnteredValue])++-- | Deletes the dimensions from the sheet.+--+-- /See:/ 'deleteDimensionRequest' smart constructor.+newtype DeleteDimensionRequest = DeleteDimensionRequest'+    { _ddrRange :: Maybe DimensionRange+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'DeleteDimensionRequest' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'ddrRange'+deleteDimensionRequest+    :: DeleteDimensionRequest+deleteDimensionRequest =+    DeleteDimensionRequest'+    { _ddrRange = Nothing+    }++-- | The dimensions to delete from the sheet.+ddrRange :: Lens' DeleteDimensionRequest (Maybe DimensionRange)+ddrRange = lens _ddrRange (\ s a -> s{_ddrRange = a})++instance FromJSON DeleteDimensionRequest where+        parseJSON+          = withObject "DeleteDimensionRequest"+              (\ o -> DeleteDimensionRequest' <$> (o .:? "range"))++instance ToJSON DeleteDimensionRequest where+        toJSON DeleteDimensionRequest'{..}+          = object (catMaybes [("range" .=) <$> _ddrRange])++-- | Finds and replaces data in cells over a range, sheet, or all sheets.+--+-- /See:/ 'findReplaceRequest' smart constructor.+data FindReplaceRequest = FindReplaceRequest'+    { _frrMatchCase       :: !(Maybe Bool)+    , _frrAllSheets       :: !(Maybe Bool)+    , _frrIncludeFormulas :: !(Maybe Bool)+    , _frrMatchEntireCell :: !(Maybe Bool)+    , _frrRange           :: !(Maybe GridRange)+    , _frrSheetId         :: !(Maybe (Textual Int32))+    , _frrFind            :: !(Maybe Text)+    , _frrSearchByRegex   :: !(Maybe Bool)+    , _frrReplacement     :: !(Maybe Text)+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'FindReplaceRequest' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'frrMatchCase'+--+-- * 'frrAllSheets'+--+-- * 'frrIncludeFormulas'+--+-- * 'frrMatchEntireCell'+--+-- * 'frrRange'+--+-- * 'frrSheetId'+--+-- * 'frrFind'+--+-- * 'frrSearchByRegex'+--+-- * 'frrReplacement'+findReplaceRequest+    :: FindReplaceRequest+findReplaceRequest =+    FindReplaceRequest'+    { _frrMatchCase = Nothing+    , _frrAllSheets = Nothing+    , _frrIncludeFormulas = Nothing+    , _frrMatchEntireCell = Nothing+    , _frrRange = Nothing+    , _frrSheetId = Nothing+    , _frrFind = Nothing+    , _frrSearchByRegex = Nothing+    , _frrReplacement = Nothing+    }++-- | True if the search is case sensitive.+frrMatchCase :: Lens' FindReplaceRequest (Maybe Bool)+frrMatchCase+  = lens _frrMatchCase (\ s a -> s{_frrMatchCase = a})++-- | True to find\/replace over all sheets.+frrAllSheets :: Lens' FindReplaceRequest (Maybe Bool)+frrAllSheets+  = lens _frrAllSheets (\ s a -> s{_frrAllSheets = a})++-- | True if the search should include cells with formulas. False to skip+-- cells with formulas.+frrIncludeFormulas :: Lens' FindReplaceRequest (Maybe Bool)+frrIncludeFormulas+  = lens _frrIncludeFormulas+      (\ s a -> s{_frrIncludeFormulas = a})++-- | True if the find value should match the entire cell.+frrMatchEntireCell :: Lens' FindReplaceRequest (Maybe Bool)+frrMatchEntireCell+  = lens _frrMatchEntireCell+      (\ s a -> s{_frrMatchEntireCell = a})++-- | The range to find\/replace over.+frrRange :: Lens' FindReplaceRequest (Maybe GridRange)+frrRange = lens _frrRange (\ s a -> s{_frrRange = a})++-- | The sheet to find\/replace over.+frrSheetId :: Lens' FindReplaceRequest (Maybe Int32)+frrSheetId+  = lens _frrSheetId (\ s a -> s{_frrSheetId = a}) .+      mapping _Coerce++-- | The value to search.+frrFind :: Lens' FindReplaceRequest (Maybe Text)+frrFind = lens _frrFind (\ s a -> s{_frrFind = a})++-- | True if the find value is a regex. The regular expression and+-- replacement should follow Java regex rules at+-- https:\/\/docs.oracle.com\/javase\/8\/docs\/api\/java\/util\/regex\/Pattern.html.+-- The replacement string is allowed to refer to capturing groups. For+-- example, if one cell has the contents \`\"Google Sheets\"\` and another+-- has \`\"Google Docs\"\`, then searching for \`\"o.* (.*)\"\` with a+-- replacement of \`\"$1 Rocks\"\` would change the contents of the cells+-- to \`\"GSheets Rocks\"\` and \`\"GDocs Rocks\"\` respectively.+frrSearchByRegex :: Lens' FindReplaceRequest (Maybe Bool)+frrSearchByRegex+  = lens _frrSearchByRegex+      (\ s a -> s{_frrSearchByRegex = a})++-- | The value to use as the replacement.+frrReplacement :: Lens' FindReplaceRequest (Maybe Text)+frrReplacement+  = lens _frrReplacement+      (\ s a -> s{_frrReplacement = a})++instance FromJSON FindReplaceRequest where+        parseJSON+          = withObject "FindReplaceRequest"+              (\ o ->+                 FindReplaceRequest' <$>+                   (o .:? "matchCase") <*> (o .:? "allSheets") <*>+                     (o .:? "includeFormulas")+                     <*> (o .:? "matchEntireCell")+                     <*> (o .:? "range")+                     <*> (o .:? "sheetId")+                     <*> (o .:? "find")+                     <*> (o .:? "searchByRegex")+                     <*> (o .:? "replacement"))++instance ToJSON FindReplaceRequest where+        toJSON FindReplaceRequest'{..}+          = object+              (catMaybes+                 [("matchCase" .=) <$> _frrMatchCase,+                  ("allSheets" .=) <$> _frrAllSheets,+                  ("includeFormulas" .=) <$> _frrIncludeFormulas,+                  ("matchEntireCell" .=) <$> _frrMatchEntireCell,+                  ("range" .=) <$> _frrRange,+                  ("sheetId" .=) <$> _frrSheetId,+                  ("find" .=) <$> _frrFind,+                  ("searchByRegex" .=) <$> _frrSearchByRegex,+                  ("replacement" .=) <$> _frrReplacement])++-- | Moves one or more rows or columns.+--+-- /See:/ 'moveDimensionRequest' smart constructor.+data MoveDimensionRequest = MoveDimensionRequest'+    { _mdrDestinationIndex :: !(Maybe (Textual Int32))+    , _mdrSource           :: !(Maybe DimensionRange)+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'MoveDimensionRequest' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'mdrDestinationIndex'+--+-- * 'mdrSource'+moveDimensionRequest+    :: MoveDimensionRequest+moveDimensionRequest =+    MoveDimensionRequest'+    { _mdrDestinationIndex = Nothing+    , _mdrSource = Nothing+    }++-- | The zero-based start index of where to move the source data to, based on+-- the coordinates *before* the source data is removed from the grid.+-- Existing data will be shifted down or right (depending on the dimension)+-- to make room for the moved dimensions. The source dimensions are removed+-- from the grid, so the the data may end up in a different index than+-- specified. For example, given \`A1..A5\` of \`0, 1, 2, 3, 4\` and+-- wanting to move \`\"1\"\` and \`\"2\"\` to between \`\"3\"\` and+-- \`\"4\"\`, the source would be \`ROWS [1..3)\`,and the destination index+-- would be \`\"4\"\` (the zero-based index of row 5). The end result would+-- be \`A1..A5\` of \`0, 3, 1, 2, 4\`.+mdrDestinationIndex :: Lens' MoveDimensionRequest (Maybe Int32)+mdrDestinationIndex+  = lens _mdrDestinationIndex+      (\ s a -> s{_mdrDestinationIndex = a})+      . mapping _Coerce++-- | The source dimensions to move.+mdrSource :: Lens' MoveDimensionRequest (Maybe DimensionRange)+mdrSource+  = lens _mdrSource (\ s a -> s{_mdrSource = a})++instance FromJSON MoveDimensionRequest where+        parseJSON+          = withObject "MoveDimensionRequest"+              (\ o ->+                 MoveDimensionRequest' <$>+                   (o .:? "destinationIndex") <*> (o .:? "source"))++instance ToJSON MoveDimensionRequest where+        toJSON MoveDimensionRequest'{..}+          = object+              (catMaybes+                 [("destinationIndex" .=) <$> _mdrDestinationIndex,+                  ("source" .=) <$> _mdrSource])++-- | A rule that applies a gradient color scale format, based on the+-- interpolation points listed. The format of a cell will vary based on its+-- contents as compared to the values of the interpolation points.+--+-- /See:/ 'gradientRule' smart constructor.+data GradientRule = GradientRule'+    { _grMidpoint :: !(Maybe InterpolationPoint)+    , _grMaxpoint :: !(Maybe InterpolationPoint)+    , _grMinpoint :: !(Maybe InterpolationPoint)+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'GradientRule' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'grMidpoint'+--+-- * 'grMaxpoint'+--+-- * 'grMinpoint'+gradientRule+    :: GradientRule+gradientRule =+    GradientRule'+    { _grMidpoint = Nothing+    , _grMaxpoint = Nothing+    , _grMinpoint = Nothing+    }++-- | An optional midway interpolation point.+grMidpoint :: Lens' GradientRule (Maybe InterpolationPoint)+grMidpoint+  = lens _grMidpoint (\ s a -> s{_grMidpoint = a})++-- | The final interpolation point.+grMaxpoint :: Lens' GradientRule (Maybe InterpolationPoint)+grMaxpoint+  = lens _grMaxpoint (\ s a -> s{_grMaxpoint = a})++-- | The starting interpolation point.+grMinpoint :: Lens' GradientRule (Maybe InterpolationPoint)+grMinpoint+  = lens _grMinpoint (\ s a -> s{_grMinpoint = a})++instance FromJSON GradientRule where+        parseJSON+          = withObject "GradientRule"+              (\ o ->+                 GradientRule' <$>+                   (o .:? "midpoint") <*> (o .:? "maxpoint") <*>+                     (o .:? "minpoint"))++instance ToJSON GradientRule where+        toJSON GradientRule'{..}+          = object+              (catMaybes+                 [("midpoint" .=) <$> _grMidpoint,+                  ("maxpoint" .=) <$> _grMaxpoint,+                  ("minpoint" .=) <$> _grMinpoint])++-- | Moves data from the source to the destination.+--+-- /See:/ 'cutPasteRequest' smart constructor.+data CutPasteRequest = CutPasteRequest'+    { _cDestination :: !(Maybe GridCoordinate)+    , _cSource      :: !(Maybe GridRange)+    , _cPasteType   :: !(Maybe CutPasteRequestPasteType)+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'CutPasteRequest' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'cDestination'+--+-- * 'cSource'+--+-- * 'cPasteType'+cutPasteRequest+    :: CutPasteRequest+cutPasteRequest =+    CutPasteRequest'+    { _cDestination = Nothing+    , _cSource = Nothing+    , _cPasteType = Nothing+    }++-- | The top-left coordinate where the data should be pasted.+cDestination :: Lens' CutPasteRequest (Maybe GridCoordinate)+cDestination+  = lens _cDestination (\ s a -> s{_cDestination = a})++-- | The source data to cut.+cSource :: Lens' CutPasteRequest (Maybe GridRange)+cSource = lens _cSource (\ s a -> s{_cSource = a})++-- | What kind of data to paste. All the source data will be cut, regardless+-- of what is pasted.+cPasteType :: Lens' CutPasteRequest (Maybe CutPasteRequestPasteType)+cPasteType+  = lens _cPasteType (\ s a -> s{_cPasteType = a})++instance FromJSON CutPasteRequest where+        parseJSON+          = withObject "CutPasteRequest"+              (\ o ->+                 CutPasteRequest' <$>+                   (o .:? "destination") <*> (o .:? "source") <*>+                     (o .:? "pasteType"))++instance ToJSON CutPasteRequest where+        toJSON CutPasteRequest'{..}+          = object+              (catMaybes+                 [("destination" .=) <$> _cDestination,+                  ("source" .=) <$> _cSource,+                  ("pasteType" .=) <$> _cPasteType])++-- | The result of updating an embedded object\'s position.+--+-- /See:/ 'updateEmbeddedObjectPositionResponse' smart constructor.+newtype UpdateEmbeddedObjectPositionResponse = UpdateEmbeddedObjectPositionResponse'+    { _ueoprPosition :: Maybe EmbeddedObjectPosition+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'UpdateEmbeddedObjectPositionResponse' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'ueoprPosition'+updateEmbeddedObjectPositionResponse+    :: UpdateEmbeddedObjectPositionResponse+updateEmbeddedObjectPositionResponse =+    UpdateEmbeddedObjectPositionResponse'+    { _ueoprPosition = Nothing+    }++-- | The new position of the embedded object.+ueoprPosition :: Lens' UpdateEmbeddedObjectPositionResponse (Maybe EmbeddedObjectPosition)+ueoprPosition+  = lens _ueoprPosition+      (\ s a -> s{_ueoprPosition = a})++instance FromJSON+         UpdateEmbeddedObjectPositionResponse where+        parseJSON+          = withObject "UpdateEmbeddedObjectPositionResponse"+              (\ o ->+                 UpdateEmbeddedObjectPositionResponse' <$>+                   (o .:? "position"))++instance ToJSON UpdateEmbeddedObjectPositionResponse+         where+        toJSON UpdateEmbeddedObjectPositionResponse'{..}+          = object+              (catMaybes [("position" .=) <$> _ueoprPosition])++-- | A single response from an update.+--+-- /See:/ 'response' smart constructor.+data Response = Response'+    { _rAddFilterView                :: !(Maybe AddFilterViewResponse)+    , _rDuplicateFilterView          :: !(Maybe DuplicateFilterViewResponse)+    , _rUpdateEmbeddedObjectPosition :: !(Maybe UpdateEmbeddedObjectPositionResponse)+    , _rAddSheet                     :: !(Maybe AddSheetResponse)+    , _rFindReplace                  :: !(Maybe FindReplaceResponse)+    , _rAddProtectedRange            :: !(Maybe AddProtectedRangeResponse)+    , _rDeleteConditionalFormatRule  :: !(Maybe DeleteConditionalFormatRuleResponse)+    , _rUpdateConditionalFormatRule  :: !(Maybe UpdateConditionalFormatRuleResponse)+    , _rAddNamedRange                :: !(Maybe AddNamedRangeResponse)+    , _rAddChart                     :: !(Maybe AddChartResponse)+    , _rDuplicateSheet               :: !(Maybe DuplicateSheetResponse)+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'Response' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'rAddFilterView'+--+-- * 'rDuplicateFilterView'+--+-- * 'rUpdateEmbeddedObjectPosition'+--+-- * 'rAddSheet'+--+-- * 'rFindReplace'+--+-- * 'rAddProtectedRange'+--+-- * 'rDeleteConditionalFormatRule'+--+-- * 'rUpdateConditionalFormatRule'+--+-- * 'rAddNamedRange'+--+-- * 'rAddChart'+--+-- * 'rDuplicateSheet'+response+    :: Response+response =+    Response'+    { _rAddFilterView = Nothing+    , _rDuplicateFilterView = Nothing+    , _rUpdateEmbeddedObjectPosition = Nothing+    , _rAddSheet = Nothing+    , _rFindReplace = Nothing+    , _rAddProtectedRange = Nothing+    , _rDeleteConditionalFormatRule = Nothing+    , _rUpdateConditionalFormatRule = Nothing+    , _rAddNamedRange = Nothing+    , _rAddChart = Nothing+    , _rDuplicateSheet = Nothing+    }++-- | A reply from adding a filter view.+rAddFilterView :: Lens' Response (Maybe AddFilterViewResponse)+rAddFilterView+  = lens _rAddFilterView+      (\ s a -> s{_rAddFilterView = a})++-- | A reply from duplicating a filter view.+rDuplicateFilterView :: Lens' Response (Maybe DuplicateFilterViewResponse)+rDuplicateFilterView+  = lens _rDuplicateFilterView+      (\ s a -> s{_rDuplicateFilterView = a})++-- | A reply from updating an embedded object\'s position.+rUpdateEmbeddedObjectPosition :: Lens' Response (Maybe UpdateEmbeddedObjectPositionResponse)+rUpdateEmbeddedObjectPosition+  = lens _rUpdateEmbeddedObjectPosition+      (\ s a -> s{_rUpdateEmbeddedObjectPosition = a})++-- | A reply from adding a sheet.+rAddSheet :: Lens' Response (Maybe AddSheetResponse)+rAddSheet+  = lens _rAddSheet (\ s a -> s{_rAddSheet = a})++-- | A reply from doing a find\/replace.+rFindReplace :: Lens' Response (Maybe FindReplaceResponse)+rFindReplace+  = lens _rFindReplace (\ s a -> s{_rFindReplace = a})++-- | A reply from adding a protected range.+rAddProtectedRange :: Lens' Response (Maybe AddProtectedRangeResponse)+rAddProtectedRange+  = lens _rAddProtectedRange+      (\ s a -> s{_rAddProtectedRange = a})++-- | A reply from deleting a conditional format rule.+rDeleteConditionalFormatRule :: Lens' Response (Maybe DeleteConditionalFormatRuleResponse)+rDeleteConditionalFormatRule+  = lens _rDeleteConditionalFormatRule+      (\ s a -> s{_rDeleteConditionalFormatRule = a})++-- | A reply from updating a conditional format rule.+rUpdateConditionalFormatRule :: Lens' Response (Maybe UpdateConditionalFormatRuleResponse)+rUpdateConditionalFormatRule+  = lens _rUpdateConditionalFormatRule+      (\ s a -> s{_rUpdateConditionalFormatRule = a})++-- | A reply from adding a named range.+rAddNamedRange :: Lens' Response (Maybe AddNamedRangeResponse)+rAddNamedRange+  = lens _rAddNamedRange+      (\ s a -> s{_rAddNamedRange = a})++-- | A reply from adding a chart.+rAddChart :: Lens' Response (Maybe AddChartResponse)+rAddChart+  = lens _rAddChart (\ s a -> s{_rAddChart = a})++-- | A reply from duplicating a sheet.+rDuplicateSheet :: Lens' Response (Maybe DuplicateSheetResponse)+rDuplicateSheet+  = lens _rDuplicateSheet+      (\ s a -> s{_rDuplicateSheet = a})++instance FromJSON Response where+        parseJSON+          = withObject "Response"+              (\ o ->+                 Response' <$>+                   (o .:? "addFilterView") <*>+                     (o .:? "duplicateFilterView")+                     <*> (o .:? "updateEmbeddedObjectPosition")+                     <*> (o .:? "addSheet")+                     <*> (o .:? "findReplace")+                     <*> (o .:? "addProtectedRange")+                     <*> (o .:? "deleteConditionalFormatRule")+                     <*> (o .:? "updateConditionalFormatRule")+                     <*> (o .:? "addNamedRange")+                     <*> (o .:? "addChart")+                     <*> (o .:? "duplicateSheet"))++instance ToJSON Response where+        toJSON Response'{..}+          = object+              (catMaybes+                 [("addFilterView" .=) <$> _rAddFilterView,+                  ("duplicateFilterView" .=) <$> _rDuplicateFilterView,+                  ("updateEmbeddedObjectPosition" .=) <$>+                    _rUpdateEmbeddedObjectPosition,+                  ("addSheet" .=) <$> _rAddSheet,+                  ("findReplace" .=) <$> _rFindReplace,+                  ("addProtectedRange" .=) <$> _rAddProtectedRange,+                  ("deleteConditionalFormatRule" .=) <$>+                    _rDeleteConditionalFormatRule,+                  ("updateConditionalFormatRule" .=) <$>+                    _rUpdateConditionalFormatRule,+                  ("addNamedRange" .=) <$> _rAddNamedRange,+                  ("addChart" .=) <$> _rAddChart,+                  ("duplicateSheet" .=) <$> _rDuplicateSheet])++-- | Criteria for showing\/hiding rows in a filter or filter view.+--+-- /See:/ 'filterCriteria' smart constructor.+data FilterCriteria = FilterCriteria'+    { _fcHiddenValues :: !(Maybe [Text])+    , _fcCondition    :: !(Maybe BooleanCondition)+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'FilterCriteria' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'fcHiddenValues'+--+-- * 'fcCondition'+filterCriteria+    :: FilterCriteria+filterCriteria =+    FilterCriteria'+    { _fcHiddenValues = Nothing+    , _fcCondition = Nothing+    }++-- | Values that should be hidden.+fcHiddenValues :: Lens' FilterCriteria [Text]+fcHiddenValues+  = lens _fcHiddenValues+      (\ s a -> s{_fcHiddenValues = a})+      . _Default+      . _Coerce++-- | A condition that must be true for values to be shown. (This does not+-- override hiddenValues -- if a value is listed there, it will still be+-- hidden.)+fcCondition :: Lens' FilterCriteria (Maybe BooleanCondition)+fcCondition+  = lens _fcCondition (\ s a -> s{_fcCondition = a})++instance FromJSON FilterCriteria where+        parseJSON+          = withObject "FilterCriteria"+              (\ o ->+                 FilterCriteria' <$>+                   (o .:? "hiddenValues" .!= mempty) <*>+                     (o .:? "condition"))++instance ToJSON FilterCriteria where+        toJSON FilterCriteria'{..}+          = object+              (catMaybes+                 [("hiddenValues" .=) <$> _fcHiddenValues,+                  ("condition" .=) <$> _fcCondition])++-- | An error in a cell.+--+-- /See:/ 'errorValue' smart constructor.+data ErrorValue = ErrorValue'+    { _evType    :: !(Maybe ErrorValueType)+    , _evMessage :: !(Maybe Text)+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'ErrorValue' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'evType'+--+-- * 'evMessage'+errorValue+    :: ErrorValue+errorValue =+    ErrorValue'+    { _evType = Nothing+    , _evMessage = Nothing+    }++-- | The type of error.+evType :: Lens' ErrorValue (Maybe ErrorValueType)+evType = lens _evType (\ s a -> s{_evType = a})++-- | A message with more information about the error (in the spreadsheet\'s+-- locale).+evMessage :: Lens' ErrorValue (Maybe Text)+evMessage+  = lens _evMessage (\ s a -> s{_evMessage = a})++instance FromJSON ErrorValue where+        parseJSON+          = withObject "ErrorValue"+              (\ o ->+                 ErrorValue' <$> (o .:? "type") <*> (o .:? "message"))++instance ToJSON ErrorValue where+        toJSON ErrorValue'{..}+          = object+              (catMaybes+                 [("type" .=) <$> _evType,+                  ("message" .=) <$> _evMessage])++-- | Updates a conditional format rule at the given index, or moves a+-- conditional format rule to another index.+--+-- /See:/ 'updateConditionalFormatRuleRequest' smart constructor.+data UpdateConditionalFormatRuleRequest = UpdateConditionalFormatRuleRequest'+    { _ucfrrRule     :: !(Maybe ConditionalFormatRule)+    , _ucfrrNewIndex :: !(Maybe (Textual Int32))+    , _ucfrrSheetId  :: !(Maybe (Textual Int32))+    , _ucfrrIndex    :: !(Maybe (Textual Int32))+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'UpdateConditionalFormatRuleRequest' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'ucfrrRule'+--+-- * 'ucfrrNewIndex'+--+-- * 'ucfrrSheetId'+--+-- * 'ucfrrIndex'+updateConditionalFormatRuleRequest+    :: UpdateConditionalFormatRuleRequest+updateConditionalFormatRuleRequest =+    UpdateConditionalFormatRuleRequest'+    { _ucfrrRule = Nothing+    , _ucfrrNewIndex = Nothing+    , _ucfrrSheetId = Nothing+    , _ucfrrIndex = Nothing+    }++-- | The rule that should replace the rule at the given index.+ucfrrRule :: Lens' UpdateConditionalFormatRuleRequest (Maybe ConditionalFormatRule)+ucfrrRule+  = lens _ucfrrRule (\ s a -> s{_ucfrrRule = a})++-- | The zero-based new index the rule should end up at.+ucfrrNewIndex :: Lens' UpdateConditionalFormatRuleRequest (Maybe Int32)+ucfrrNewIndex+  = lens _ucfrrNewIndex+      (\ s a -> s{_ucfrrNewIndex = a})+      . mapping _Coerce++-- | The sheet of the rule to move. Required if new_index is set, unused+-- otherwise.+ucfrrSheetId :: Lens' UpdateConditionalFormatRuleRequest (Maybe Int32)+ucfrrSheetId+  = lens _ucfrrSheetId (\ s a -> s{_ucfrrSheetId = a})+      . mapping _Coerce++-- | The zero-based index of the rule that should be replaced or moved.+ucfrrIndex :: Lens' UpdateConditionalFormatRuleRequest (Maybe Int32)+ucfrrIndex+  = lens _ucfrrIndex (\ s a -> s{_ucfrrIndex = a}) .+      mapping _Coerce++instance FromJSON UpdateConditionalFormatRuleRequest+         where+        parseJSON+          = withObject "UpdateConditionalFormatRuleRequest"+              (\ o ->+                 UpdateConditionalFormatRuleRequest' <$>+                   (o .:? "rule") <*> (o .:? "newIndex") <*>+                     (o .:? "sheetId")+                     <*> (o .:? "index"))++instance ToJSON UpdateConditionalFormatRuleRequest+         where+        toJSON UpdateConditionalFormatRuleRequest'{..}+          = object+              (catMaybes+                 [("rule" .=) <$> _ucfrrRule,+                  ("newIndex" .=) <$> _ucfrrNewIndex,+                  ("sheetId" .=) <$> _ucfrrSheetId,+                  ("index" .=) <$> _ucfrrIndex])++-- | Deletes a conditional format rule at the given index. All subsequent+-- rules\' indexes are decremented.+--+-- /See:/ 'deleteConditionalFormatRuleRequest' smart constructor.+data DeleteConditionalFormatRuleRequest = DeleteConditionalFormatRuleRequest'+    { _dcfrrSheetId :: !(Maybe (Textual Int32))+    , _dcfrrIndex   :: !(Maybe (Textual Int32))+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'DeleteConditionalFormatRuleRequest' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'dcfrrSheetId'+--+-- * 'dcfrrIndex'+deleteConditionalFormatRuleRequest+    :: DeleteConditionalFormatRuleRequest+deleteConditionalFormatRuleRequest =+    DeleteConditionalFormatRuleRequest'+    { _dcfrrSheetId = Nothing+    , _dcfrrIndex = Nothing+    }++-- | The sheet the rule is being deleted from.+dcfrrSheetId :: Lens' DeleteConditionalFormatRuleRequest (Maybe Int32)+dcfrrSheetId+  = lens _dcfrrSheetId (\ s a -> s{_dcfrrSheetId = a})+      . mapping _Coerce++-- | The zero-based index of the rule to be deleted.+dcfrrIndex :: Lens' DeleteConditionalFormatRuleRequest (Maybe Int32)+dcfrrIndex+  = lens _dcfrrIndex (\ s a -> s{_dcfrrIndex = a}) .+      mapping _Coerce++instance FromJSON DeleteConditionalFormatRuleRequest+         where+        parseJSON+          = withObject "DeleteConditionalFormatRuleRequest"+              (\ o ->+                 DeleteConditionalFormatRuleRequest' <$>+                   (o .:? "sheetId") <*> (o .:? "index"))++instance ToJSON DeleteConditionalFormatRuleRequest+         where+        toJSON DeleteConditionalFormatRuleRequest'{..}+          = object+              (catMaybes+                 [("sheetId" .=) <$> _dcfrrSheetId,+                  ("index" .=) <$> _dcfrrIndex])++-- | The location an object is overlaid on top of a grid.+--+-- /See:/ 'overlayPosition' smart constructor.+data OverlayPosition = OverlayPosition'+    { _opHeightPixels  :: !(Maybe (Textual Int32))+    , _opOffSetYPixels :: !(Maybe (Textual Int32))+    , _opAnchorCell    :: !(Maybe GridCoordinate)+    , _opWidthPixels   :: !(Maybe (Textual Int32))+    , _opOffSetXPixels :: !(Maybe (Textual Int32))+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'OverlayPosition' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'opHeightPixels'+--+-- * 'opOffSetYPixels'+--+-- * 'opAnchorCell'+--+-- * 'opWidthPixels'+--+-- * 'opOffSetXPixels'+overlayPosition+    :: OverlayPosition+overlayPosition =+    OverlayPosition'+    { _opHeightPixels = Nothing+    , _opOffSetYPixels = Nothing+    , _opAnchorCell = Nothing+    , _opWidthPixels = Nothing+    , _opOffSetXPixels = Nothing+    }++-- | The height of the object, in pixels. Defaults to 371.+opHeightPixels :: Lens' OverlayPosition (Maybe Int32)+opHeightPixels+  = lens _opHeightPixels+      (\ s a -> s{_opHeightPixels = a})+      . mapping _Coerce++-- | The vertical offset, in pixels, that the object is offset from the+-- anchor cell.+opOffSetYPixels :: Lens' OverlayPosition (Maybe Int32)+opOffSetYPixels+  = lens _opOffSetYPixels+      (\ s a -> s{_opOffSetYPixels = a})+      . mapping _Coerce++-- | The cell the object is anchored to.+opAnchorCell :: Lens' OverlayPosition (Maybe GridCoordinate)+opAnchorCell+  = lens _opAnchorCell (\ s a -> s{_opAnchorCell = a})++-- | The width of the object, in pixels. Defaults to 600.+opWidthPixels :: Lens' OverlayPosition (Maybe Int32)+opWidthPixels+  = lens _opWidthPixels+      (\ s a -> s{_opWidthPixels = a})+      . mapping _Coerce++-- | The horizontal offset, in pixels, that the object is offset from the+-- anchor cell.+opOffSetXPixels :: Lens' OverlayPosition (Maybe Int32)+opOffSetXPixels+  = lens _opOffSetXPixels+      (\ s a -> s{_opOffSetXPixels = a})+      . mapping _Coerce++instance FromJSON OverlayPosition where+        parseJSON+          = withObject "OverlayPosition"+              (\ o ->+                 OverlayPosition' <$>+                   (o .:? "heightPixels") <*> (o .:? "offsetYPixels")+                     <*> (o .:? "anchorCell")+                     <*> (o .:? "widthPixels")+                     <*> (o .:? "offsetXPixels"))++instance ToJSON OverlayPosition where+        toJSON OverlayPosition'{..}+          = object+              (catMaybes+                 [("heightPixels" .=) <$> _opHeightPixels,+                  ("offsetYPixels" .=) <$> _opOffSetYPixels,+                  ("anchorCell" .=) <$> _opAnchorCell,+                  ("widthPixels" .=) <$> _opWidthPixels,+                  ("offsetXPixels" .=) <$> _opOffSetXPixels])++-- | Deletes the embedded object with the given ID.+--+-- /See:/ 'deleteEmbeddedObjectRequest' smart constructor.+newtype DeleteEmbeddedObjectRequest = DeleteEmbeddedObjectRequest'+    { _deorObjectId :: Maybe (Textual Int32)+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'DeleteEmbeddedObjectRequest' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'deorObjectId'+deleteEmbeddedObjectRequest+    :: DeleteEmbeddedObjectRequest+deleteEmbeddedObjectRequest =+    DeleteEmbeddedObjectRequest'+    { _deorObjectId = Nothing+    }++-- | The ID of the embedded object to delete.+deorObjectId :: Lens' DeleteEmbeddedObjectRequest (Maybe Int32)+deorObjectId+  = lens _deorObjectId (\ s a -> s{_deorObjectId = a})+      . mapping _Coerce++instance FromJSON DeleteEmbeddedObjectRequest where+        parseJSON+          = withObject "DeleteEmbeddedObjectRequest"+              (\ o ->+                 DeleteEmbeddedObjectRequest' <$> (o .:? "objectId"))++instance ToJSON DeleteEmbeddedObjectRequest where+        toJSON DeleteEmbeddedObjectRequest'{..}+          = object+              (catMaybes [("objectId" .=) <$> _deorObjectId])++-- | Properties of a sheet.+--+-- /See:/ 'sheetProperties' smart constructor.+data SheetProperties = SheetProperties'+    { _sTabColor       :: !(Maybe Color)+    , _sGridProperties :: !(Maybe GridProperties)+    , _sSheetType      :: !(Maybe SheetPropertiesSheetType)+    , _sHidden         :: !(Maybe Bool)+    , _sSheetId        :: !(Maybe (Textual Int32))+    , _sTitle          :: !(Maybe Text)+    , _sRightToLeft    :: !(Maybe Bool)+    , _sIndex          :: !(Maybe (Textual Int32))+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'SheetProperties' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'sTabColor'+--+-- * 'sGridProperties'+--+-- * 'sSheetType'+--+-- * 'sHidden'+--+-- * 'sSheetId'+--+-- * 'sTitle'+--+-- * 'sRightToLeft'+--+-- * 'sIndex'+sheetProperties+    :: SheetProperties+sheetProperties =+    SheetProperties'+    { _sTabColor = Nothing+    , _sGridProperties = Nothing+    , _sSheetType = Nothing+    , _sHidden = Nothing+    , _sSheetId = Nothing+    , _sTitle = Nothing+    , _sRightToLeft = Nothing+    , _sIndex = Nothing+    }++-- | The color of the tab in the UI.+sTabColor :: Lens' SheetProperties (Maybe Color)+sTabColor+  = lens _sTabColor (\ s a -> s{_sTabColor = a})++-- | Additional properties of the sheet if this sheet is a grid. (If the+-- sheet is an object sheet, containing a chart or image, then this field+-- will be absent.) When writing it is an error to set any grid properties+-- on non-grid sheets.+sGridProperties :: Lens' SheetProperties (Maybe GridProperties)+sGridProperties+  = lens _sGridProperties+      (\ s a -> s{_sGridProperties = a})++-- | The type of sheet. Defaults to GRID. This field cannot be changed once+-- set.+sSheetType :: Lens' SheetProperties (Maybe SheetPropertiesSheetType)+sSheetType+  = lens _sSheetType (\ s a -> s{_sSheetType = a})++-- | True if the sheet is hidden in the UI, false if it\'s visible.+sHidden :: Lens' SheetProperties (Maybe Bool)+sHidden = lens _sHidden (\ s a -> s{_sHidden = a})++-- | The ID of the sheet. Must be non-negative. This field cannot be changed+-- once set.+sSheetId :: Lens' SheetProperties (Maybe Int32)+sSheetId+  = lens _sSheetId (\ s a -> s{_sSheetId = a}) .+      mapping _Coerce++-- | The name of the sheet.+sTitle :: Lens' SheetProperties (Maybe Text)+sTitle = lens _sTitle (\ s a -> s{_sTitle = a})++-- | True if the sheet is an RTL sheet instead of an LTR sheet.+sRightToLeft :: Lens' SheetProperties (Maybe Bool)+sRightToLeft+  = lens _sRightToLeft (\ s a -> s{_sRightToLeft = a})++-- | The index of the sheet within the spreadsheet. When adding or updating+-- sheet properties, if this field is excluded then the sheet will be added+-- or moved to the end of the sheet list.+sIndex :: Lens' SheetProperties (Maybe Int32)+sIndex+  = lens _sIndex (\ s a -> s{_sIndex = a}) .+      mapping _Coerce++instance FromJSON SheetProperties where+        parseJSON+          = withObject "SheetProperties"+              (\ o ->+                 SheetProperties' <$>+                   (o .:? "tabColor") <*> (o .:? "gridProperties") <*>+                     (o .:? "sheetType")+                     <*> (o .:? "hidden")+                     <*> (o .:? "sheetId")+                     <*> (o .:? "title")+                     <*> (o .:? "rightToLeft")+                     <*> (o .:? "index"))++instance ToJSON SheetProperties where+        toJSON SheetProperties'{..}+          = object+              (catMaybes+                 [("tabColor" .=) <$> _sTabColor,+                  ("gridProperties" .=) <$> _sGridProperties,+                  ("sheetType" .=) <$> _sSheetType,+                  ("hidden" .=) <$> _sHidden,+                  ("sheetId" .=) <$> _sSheetId,+                  ("title" .=) <$> _sTitle,+                  ("rightToLeft" .=) <$> _sRightToLeft,+                  ("index" .=) <$> _sIndex])++-- | The criteria for showing\/hiding values per column. The map\'s key is+-- the column index, and the value is the criteria for that column.+--+-- /See:/ 'filterViewCriteria' smart constructor.+newtype FilterViewCriteria = FilterViewCriteria'+    { _fvcAddtional :: HashMap Text FilterCriteria+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'FilterViewCriteria' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'fvcAddtional'+filterViewCriteria+    :: HashMap Text FilterCriteria -- ^ 'fvcAddtional'+    -> FilterViewCriteria+filterViewCriteria pFvcAddtional_ =+    FilterViewCriteria'+    { _fvcAddtional = _Coerce # pFvcAddtional_+    }++fvcAddtional :: Lens' FilterViewCriteria (HashMap Text FilterCriteria)+fvcAddtional+  = lens _fvcAddtional (\ s a -> s{_fvcAddtional = a})+      . _Coerce++instance FromJSON FilterViewCriteria where+        parseJSON+          = withObject "FilterViewCriteria"+              (\ o -> FilterViewCriteria' <$> (parseJSONObject o))++instance ToJSON FilterViewCriteria where+        toJSON = toJSON . _fvcAddtional++-- | The response when updating a range of values in a spreadsheet.+--+-- /See:/ 'batchUpdateValuesResponse' smart constructor.+data BatchUpdateValuesResponse = BatchUpdateValuesResponse'+    { _buvrTotalUpdatedColumns :: !(Maybe (Textual Int32))+    , _buvrResponses           :: !(Maybe [UpdateValuesResponse])+    , _buvrSpreadsheetId       :: !(Maybe Text)+    , _buvrTotalUpdatedSheets  :: !(Maybe (Textual Int32))+    , _buvrTotalUpdatedCells   :: !(Maybe (Textual Int32))+    , _buvrTotalUpdatedRows    :: !(Maybe (Textual Int32))+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'BatchUpdateValuesResponse' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'buvrTotalUpdatedColumns'+--+-- * 'buvrResponses'+--+-- * 'buvrSpreadsheetId'+--+-- * 'buvrTotalUpdatedSheets'+--+-- * 'buvrTotalUpdatedCells'+--+-- * 'buvrTotalUpdatedRows'+batchUpdateValuesResponse+    :: BatchUpdateValuesResponse+batchUpdateValuesResponse =+    BatchUpdateValuesResponse'+    { _buvrTotalUpdatedColumns = Nothing+    , _buvrResponses = Nothing+    , _buvrSpreadsheetId = Nothing+    , _buvrTotalUpdatedSheets = Nothing+    , _buvrTotalUpdatedCells = Nothing+    , _buvrTotalUpdatedRows = Nothing+    }++-- | The total number of columns where at least one cell in the column was+-- updated.+buvrTotalUpdatedColumns :: Lens' BatchUpdateValuesResponse (Maybe Int32)+buvrTotalUpdatedColumns+  = lens _buvrTotalUpdatedColumns+      (\ s a -> s{_buvrTotalUpdatedColumns = a})+      . mapping _Coerce++-- | One UpdateValuesResponse per requested range, in the same order as the+-- requests appeared.+buvrResponses :: Lens' BatchUpdateValuesResponse [UpdateValuesResponse]+buvrResponses+  = lens _buvrResponses+      (\ s a -> s{_buvrResponses = a})+      . _Default+      . _Coerce++-- | The spreadsheet the updates were applied to.+buvrSpreadsheetId :: Lens' BatchUpdateValuesResponse (Maybe Text)+buvrSpreadsheetId+  = lens _buvrSpreadsheetId+      (\ s a -> s{_buvrSpreadsheetId = a})++-- | The total number of sheets where at least one cell in the sheet was+-- updated.+buvrTotalUpdatedSheets :: Lens' BatchUpdateValuesResponse (Maybe Int32)+buvrTotalUpdatedSheets+  = lens _buvrTotalUpdatedSheets+      (\ s a -> s{_buvrTotalUpdatedSheets = a})+      . mapping _Coerce++-- | The total number of cells updated.+buvrTotalUpdatedCells :: Lens' BatchUpdateValuesResponse (Maybe Int32)+buvrTotalUpdatedCells+  = lens _buvrTotalUpdatedCells+      (\ s a -> s{_buvrTotalUpdatedCells = a})+      . mapping _Coerce++-- | The total number of rows where at least one cell in the row was updated.+buvrTotalUpdatedRows :: Lens' BatchUpdateValuesResponse (Maybe Int32)+buvrTotalUpdatedRows+  = lens _buvrTotalUpdatedRows+      (\ s a -> s{_buvrTotalUpdatedRows = a})+      . mapping _Coerce++instance FromJSON BatchUpdateValuesResponse where+        parseJSON+          = withObject "BatchUpdateValuesResponse"+              (\ o ->+                 BatchUpdateValuesResponse' <$>+                   (o .:? "totalUpdatedColumns") <*>+                     (o .:? "responses" .!= mempty)+                     <*> (o .:? "spreadsheetId")+                     <*> (o .:? "totalUpdatedSheets")+                     <*> (o .:? "totalUpdatedCells")+                     <*> (o .:? "totalUpdatedRows"))++instance ToJSON BatchUpdateValuesResponse where+        toJSON BatchUpdateValuesResponse'{..}+          = object+              (catMaybes+                 [("totalUpdatedColumns" .=) <$>+                    _buvrTotalUpdatedColumns,+                  ("responses" .=) <$> _buvrResponses,+                  ("spreadsheetId" .=) <$> _buvrSpreadsheetId,+                  ("totalUpdatedSheets" .=) <$>+                    _buvrTotalUpdatedSheets,+                  ("totalUpdatedCells" .=) <$> _buvrTotalUpdatedCells,+                  ("totalUpdatedRows" .=) <$> _buvrTotalUpdatedRows])++-- | Updates properties of the sheet with the specified sheetId.+--+-- /See:/ 'updateSheetPropertiesRequest' smart constructor.+data UpdateSheetPropertiesRequest = UpdateSheetPropertiesRequest'+    { _usprFields     :: !(Maybe FieldMask)+    , _usprProperties :: !(Maybe SheetProperties)+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'UpdateSheetPropertiesRequest' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'usprFields'+--+-- * 'usprProperties'+updateSheetPropertiesRequest+    :: UpdateSheetPropertiesRequest+updateSheetPropertiesRequest =+    UpdateSheetPropertiesRequest'+    { _usprFields = Nothing+    , _usprProperties = Nothing+    }++-- | The fields that should be updated. At least one field must be specified.+-- The root \`properties\` is implied and should not be specified. A single+-- \`\"*\"\` can be used as short-hand for listing every field.+usprFields :: Lens' UpdateSheetPropertiesRequest (Maybe FieldMask)+usprFields+  = lens _usprFields (\ s a -> s{_usprFields = a})++-- | The properties to update.+usprProperties :: Lens' UpdateSheetPropertiesRequest (Maybe SheetProperties)+usprProperties+  = lens _usprProperties+      (\ s a -> s{_usprProperties = a})++instance FromJSON UpdateSheetPropertiesRequest where+        parseJSON+          = withObject "UpdateSheetPropertiesRequest"+              (\ o ->+                 UpdateSheetPropertiesRequest' <$>+                   (o .:? "fields") <*> (o .:? "properties"))++instance ToJSON UpdateSheetPropertiesRequest where+        toJSON UpdateSheetPropertiesRequest'{..}+          = object+              (catMaybes+                 [("fields" .=) <$> _usprFields,+                  ("properties" .=) <$> _usprProperties])++-- | Resource that represents a spreadsheet.+--+-- /See:/ 'spreadsheet' smart constructor.+data Spreadsheet = Spreadsheet'+    { _sprSheets        :: !(Maybe [Sheet])+    , _sprNamedRanges   :: !(Maybe [NamedRange])+    , _sprSpreadsheetId :: !(Maybe Text)+    , _sprProperties    :: !(Maybe SpreadsheetProperties)+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'Spreadsheet' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'sprSheets'+--+-- * 'sprNamedRanges'+--+-- * 'sprSpreadsheetId'+--+-- * 'sprProperties'+spreadsheet+    :: Spreadsheet+spreadsheet =+    Spreadsheet'+    { _sprSheets = Nothing+    , _sprNamedRanges = Nothing+    , _sprSpreadsheetId = Nothing+    , _sprProperties = Nothing+    }++-- | The sheets that are part of a spreadsheet.+sprSheets :: Lens' Spreadsheet [Sheet]+sprSheets+  = lens _sprSheets (\ s a -> s{_sprSheets = a}) .+      _Default+      . _Coerce++-- | The named ranges defined in a spreadsheet.+sprNamedRanges :: Lens' Spreadsheet [NamedRange]+sprNamedRanges+  = lens _sprNamedRanges+      (\ s a -> s{_sprNamedRanges = a})+      . _Default+      . _Coerce++-- | The ID of the spreadsheet. This field is read-only.+sprSpreadsheetId :: Lens' Spreadsheet (Maybe Text)+sprSpreadsheetId+  = lens _sprSpreadsheetId+      (\ s a -> s{_sprSpreadsheetId = a})++-- | Overall properties of a spreadsheet.+sprProperties :: Lens' Spreadsheet (Maybe SpreadsheetProperties)+sprProperties+  = lens _sprProperties+      (\ s a -> s{_sprProperties = a})++instance FromJSON Spreadsheet where+        parseJSON+          = withObject "Spreadsheet"+              (\ o ->+                 Spreadsheet' <$>+                   (o .:? "sheets" .!= mempty) <*>+                     (o .:? "namedRanges" .!= mempty)+                     <*> (o .:? "spreadsheetId")+                     <*> (o .:? "properties"))++instance ToJSON Spreadsheet where+        toJSON Spreadsheet'{..}+          = object+              (catMaybes+                 [("sheets" .=) <$> _sprSheets,+                  ("namedRanges" .=) <$> _sprNamedRanges,+                  ("spreadsheetId" .=) <$> _sprSpreadsheetId,+                  ("properties" .=) <$> _sprProperties])++-- | Inserts rows or columns in a sheet at a particular index.+--+-- /See:/ 'insertDimensionRequest' smart constructor.+data InsertDimensionRequest = InsertDimensionRequest'+    { _idrRange             :: !(Maybe DimensionRange)+    , _idrInheritFromBefore :: !(Maybe Bool)+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'InsertDimensionRequest' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'idrRange'+--+-- * 'idrInheritFromBefore'+insertDimensionRequest+    :: InsertDimensionRequest+insertDimensionRequest =+    InsertDimensionRequest'+    { _idrRange = Nothing+    , _idrInheritFromBefore = Nothing+    }++-- | The dimensions to insert. Both the start and end indexes must be+-- bounded.+idrRange :: Lens' InsertDimensionRequest (Maybe DimensionRange)+idrRange = lens _idrRange (\ s a -> s{_idrRange = a})++-- | Whether dimension properties should be extended from the dimensions+-- before or after the newly inserted dimensions. True to inherit from the+-- dimensions before (in which case the start index must be greater than+-- 0), and false to inherit from the dimensions after. For example, if row+-- index 0 has red background and row index 1 has a green background, then+-- inserting 2 rows at index 1 can inherit either the green or red+-- background. If \`inheritFromBefore\` is true, the two new rows will be+-- red (because the row before the insertion point was red), whereas if+-- \`inheritFromBefore\` is false, the two new rows will be green (because+-- the row after the insertion point was green).+idrInheritFromBefore :: Lens' InsertDimensionRequest (Maybe Bool)+idrInheritFromBefore+  = lens _idrInheritFromBefore+      (\ s a -> s{_idrInheritFromBefore = a})++instance FromJSON InsertDimensionRequest where+        parseJSON+          = withObject "InsertDimensionRequest"+              (\ o ->+                 InsertDimensionRequest' <$>+                   (o .:? "range") <*> (o .:? "inheritFromBefore"))++instance ToJSON InsertDimensionRequest where+        toJSON InsertDimensionRequest'{..}+          = object+              (catMaybes+                 [("range" .=) <$> _idrRange,+                  ("inheritFromBefore" .=) <$> _idrInheritFromBefore])++-- | A single interpolation point on a gradient conditional format. These pin+-- the gradient color scale according to the color, type and value chosen.+--+-- /See:/ 'interpolationPoint' smart constructor.+data InterpolationPoint = InterpolationPoint'+    { _ipColor :: !(Maybe Color)+    , _ipValue :: !(Maybe Text)+    , _ipType  :: !(Maybe InterpolationPointType)+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'InterpolationPoint' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'ipColor'+--+-- * 'ipValue'+--+-- * 'ipType'+interpolationPoint+    :: InterpolationPoint+interpolationPoint =+    InterpolationPoint'+    { _ipColor = Nothing+    , _ipValue = Nothing+    , _ipType = Nothing+    }++-- | The color this interpolation point should use.+ipColor :: Lens' InterpolationPoint (Maybe Color)+ipColor = lens _ipColor (\ s a -> s{_ipColor = a})++-- | The value this interpolation point uses. May be a formula. Unused if+-- type is MIN or MAX.+ipValue :: Lens' InterpolationPoint (Maybe Text)+ipValue = lens _ipValue (\ s a -> s{_ipValue = a})++-- | How the value should be interpreted.+ipType :: Lens' InterpolationPoint (Maybe InterpolationPointType)+ipType = lens _ipType (\ s a -> s{_ipType = a})++instance FromJSON InterpolationPoint where+        parseJSON+          = withObject "InterpolationPoint"+              (\ o ->+                 InterpolationPoint' <$>+                   (o .:? "color") <*> (o .:? "value") <*>+                     (o .:? "type"))++instance ToJSON InterpolationPoint where+        toJSON InterpolationPoint'{..}+          = object+              (catMaybes+                 [("color" .=) <$> _ipColor,+                  ("value" .=) <$> _ipValue, ("type" .=) <$> _ipType])++-- | Data about a specific cell.+--+-- /See:/ 'cellData' smart constructor.+data CellData = CellData'+    { _cdTextFormatRuns    :: !(Maybe [TextFormatRun])+    , _cdNote              :: !(Maybe Text)+    , _cdUserEnteredValue  :: !(Maybe ExtendedValue)+    , _cdUserEnteredFormat :: !(Maybe CellFormat)+    , _cdEffectiveFormat   :: !(Maybe CellFormat)+    , _cdPivotTable        :: !(Maybe PivotTable)+    , _cdFormattedValue    :: !(Maybe Text)+    , _cdDataValidation    :: !(Maybe DataValidationRule)+    , _cdHyperlink         :: !(Maybe Text)+    , _cdEffectiveValue    :: !(Maybe ExtendedValue)+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'CellData' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'cdTextFormatRuns'+--+-- * 'cdNote'+--+-- * 'cdUserEnteredValue'+--+-- * 'cdUserEnteredFormat'+--+-- * 'cdEffectiveFormat'+--+-- * 'cdPivotTable'+--+-- * 'cdFormattedValue'+--+-- * 'cdDataValidation'+--+-- * 'cdHyperlink'+--+-- * 'cdEffectiveValue'+cellData+    :: CellData+cellData =+    CellData'+    { _cdTextFormatRuns = Nothing+    , _cdNote = Nothing+    , _cdUserEnteredValue = Nothing+    , _cdUserEnteredFormat = Nothing+    , _cdEffectiveFormat = Nothing+    , _cdPivotTable = Nothing+    , _cdFormattedValue = Nothing+    , _cdDataValidation = Nothing+    , _cdHyperlink = Nothing+    , _cdEffectiveValue = Nothing+    }++-- | Runs of rich text applied to subsections of the cell. Runs are only+-- valid on user entered strings, not formulas, bools, or numbers. Runs+-- start at specific indexes in the text and continue until the next run.+-- Properties of a run will continue unless explicitly changed in a+-- subsequent run (and properties of the first run will continue the+-- properties of the cell unless explicitly changed). When writing, the new+-- runs will overwrite any prior runs. When writing a new+-- user_entered_value, previous runs will be erased.+cdTextFormatRuns :: Lens' CellData [TextFormatRun]+cdTextFormatRuns+  = lens _cdTextFormatRuns+      (\ s a -> s{_cdTextFormatRuns = a})+      . _Default+      . _Coerce++-- | Any note on the cell.+cdNote :: Lens' CellData (Maybe Text)+cdNote = lens _cdNote (\ s a -> s{_cdNote = a})++-- | The value the user entered in the cell. e.g, \`1234\`, \`\'Hello\'\`, or+-- \`=NOW()\` Note: Dates, Times and DateTimes are represented as doubles+-- in serial number format.+cdUserEnteredValue :: Lens' CellData (Maybe ExtendedValue)+cdUserEnteredValue+  = lens _cdUserEnteredValue+      (\ s a -> s{_cdUserEnteredValue = a})++-- | The format the user entered for the cell. When writing, the new format+-- will be merged with the existing format.+cdUserEnteredFormat :: Lens' CellData (Maybe CellFormat)+cdUserEnteredFormat+  = lens _cdUserEnteredFormat+      (\ s a -> s{_cdUserEnteredFormat = a})++-- | The effective format being used by the cell. This includes the results+-- of applying any conditional formatting and, if the cell contains a+-- formula, the computed number format. If the effective format is the+-- default format, effective format will not be written. This field is+-- read-only.+cdEffectiveFormat :: Lens' CellData (Maybe CellFormat)+cdEffectiveFormat+  = lens _cdEffectiveFormat+      (\ s a -> s{_cdEffectiveFormat = a})++-- | A pivot table anchored at this cell. The size of pivot table itself is+-- computed dynamically based on its data, grouping, filters, values, etc.+-- Only the top-left cell of the pivot table contains the pivot table+-- definition. The other cells will contain the calculated values of the+-- results of the pivot in their effective_value fields.+cdPivotTable :: Lens' CellData (Maybe PivotTable)+cdPivotTable+  = lens _cdPivotTable (\ s a -> s{_cdPivotTable = a})++-- | The formatted value of the cell. This is the value as it\'s shown to the+-- user. This field is read-only.+cdFormattedValue :: Lens' CellData (Maybe Text)+cdFormattedValue+  = lens _cdFormattedValue+      (\ s a -> s{_cdFormattedValue = a})++-- | A data validation rule on the cell, if any. When writing, the new data+-- validation rule will overwrite any prior rule.+cdDataValidation :: Lens' CellData (Maybe DataValidationRule)+cdDataValidation+  = lens _cdDataValidation+      (\ s a -> s{_cdDataValidation = a})++-- | A hyperlink this cell points to, if any. This field is read-only. (To+-- set it, use a \`=HYPERLINK\` formula.)+cdHyperlink :: Lens' CellData (Maybe Text)+cdHyperlink+  = lens _cdHyperlink (\ s a -> s{_cdHyperlink = a})++-- | The effective value of the cell. For cells with formulas, this will be+-- the calculated value. For cells with literals, this will be the same as+-- the user_entered_value. This field is read-only.+cdEffectiveValue :: Lens' CellData (Maybe ExtendedValue)+cdEffectiveValue+  = lens _cdEffectiveValue+      (\ s a -> s{_cdEffectiveValue = a})++instance FromJSON CellData where+        parseJSON+          = withObject "CellData"+              (\ o ->+                 CellData' <$>+                   (o .:? "textFormatRuns" .!= mempty) <*>+                     (o .:? "note")+                     <*> (o .:? "userEnteredValue")+                     <*> (o .:? "userEnteredFormat")+                     <*> (o .:? "effectiveFormat")+                     <*> (o .:? "pivotTable")+                     <*> (o .:? "formattedValue")+                     <*> (o .:? "dataValidation")+                     <*> (o .:? "hyperlink")+                     <*> (o .:? "effectiveValue"))++instance ToJSON CellData where+        toJSON CellData'{..}+          = object+              (catMaybes+                 [("textFormatRuns" .=) <$> _cdTextFormatRuns,+                  ("note" .=) <$> _cdNote,+                  ("userEnteredValue" .=) <$> _cdUserEnteredValue,+                  ("userEnteredFormat" .=) <$> _cdUserEnteredFormat,+                  ("effectiveFormat" .=) <$> _cdEffectiveFormat,+                  ("pivotTable" .=) <$> _cdPivotTable,+                  ("formattedValue" .=) <$> _cdFormattedValue,+                  ("dataValidation" .=) <$> _cdDataValidation,+                  ("hyperlink" .=) <$> _cdHyperlink,+                  ("effectiveValue" .=) <$> _cdEffectiveValue])++-- | Source ranges for a chart.+--+-- /See:/ 'chartSourceRange' smart constructor.+newtype ChartSourceRange = ChartSourceRange'+    { _csrSources :: Maybe [GridRange]+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'ChartSourceRange' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'csrSources'+chartSourceRange+    :: ChartSourceRange+chartSourceRange =+    ChartSourceRange'+    { _csrSources = Nothing+    }++-- | The ranges of data for a series or domain. Exactly one dimension must+-- have a length of 1, and all sources in the list must have the same+-- dimension with length 1. The domain (if it exists) & all series must+-- have the same number of source ranges. If using more than one source+-- range, then the source range at a given offset must be contiguous across+-- the domain and series. For example, these are valid configurations:+-- domain sources: A1:A5 series1 sources: B1:B5 series2 sources: D6:D10+-- domain sources: A1:A5, C10:C12 series1 sources: B1:B5, D10:D12 series2+-- sources: C1:C5, E10:E12+csrSources :: Lens' ChartSourceRange [GridRange]+csrSources+  = lens _csrSources (\ s a -> s{_csrSources = a}) .+      _Default+      . _Coerce++instance FromJSON ChartSourceRange where+        parseJSON+          = withObject "ChartSourceRange"+              (\ o ->+                 ChartSourceRange' <$> (o .:? "sources" .!= mempty))++instance ToJSON ChartSourceRange where+        toJSON ChartSourceRange'{..}+          = object (catMaybes [("sources" .=) <$> _csrSources])++-- | The result of adding a named range.+--+-- /See:/ 'addNamedRangeResponse' smart constructor.+newtype AddNamedRangeResponse = AddNamedRangeResponse'+    { _anrrNamedRange :: Maybe NamedRange+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'AddNamedRangeResponse' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'anrrNamedRange'+addNamedRangeResponse+    :: AddNamedRangeResponse+addNamedRangeResponse =+    AddNamedRangeResponse'+    { _anrrNamedRange = Nothing+    }++-- | The named range to add.+anrrNamedRange :: Lens' AddNamedRangeResponse (Maybe NamedRange)+anrrNamedRange+  = lens _anrrNamedRange+      (\ s a -> s{_anrrNamedRange = a})++instance FromJSON AddNamedRangeResponse where+        parseJSON+          = withObject "AddNamedRangeResponse"+              (\ o ->+                 AddNamedRangeResponse' <$> (o .:? "namedRange"))++instance ToJSON AddNamedRangeResponse where+        toJSON AddNamedRangeResponse'{..}+          = object+              (catMaybes [("namedRange" .=) <$> _anrrNamedRange])++-- | The result of adding a chart to a spreadsheet.+--+-- /See:/ 'addChartResponse' smart constructor.+newtype AddChartResponse = AddChartResponse'+    { _acrChart :: Maybe EmbeddedChart+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'AddChartResponse' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'acrChart'+addChartResponse+    :: AddChartResponse+addChartResponse =+    AddChartResponse'+    { _acrChart = Nothing+    }++-- | The newly added chart.+acrChart :: Lens' AddChartResponse (Maybe EmbeddedChart)+acrChart = lens _acrChart (\ s a -> s{_acrChart = a})++instance FromJSON AddChartResponse where+        parseJSON+          = withObject "AddChartResponse"+              (\ o -> AddChartResponse' <$> (o .:? "chart"))++instance ToJSON AddChartResponse where+        toJSON AddChartResponse'{..}+          = object (catMaybes [("chart" .=) <$> _acrChart])++-- | Updates a chart\'s specifications. (This does not move or resize a+-- chart. To move or resize a chart, use+-- UpdateEmbeddedObjectPositionRequest.)+--+-- /See:/ 'updateChartSpecRequest' smart constructor.+data UpdateChartSpecRequest = UpdateChartSpecRequest'+    { _ucsrSpec    :: !(Maybe ChartSpec)+    , _ucsrChartId :: !(Maybe (Textual Int32))+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'UpdateChartSpecRequest' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'ucsrSpec'+--+-- * 'ucsrChartId'+updateChartSpecRequest+    :: UpdateChartSpecRequest+updateChartSpecRequest =+    UpdateChartSpecRequest'+    { _ucsrSpec = Nothing+    , _ucsrChartId = Nothing+    }++-- | The specification to apply to the chart.+ucsrSpec :: Lens' UpdateChartSpecRequest (Maybe ChartSpec)+ucsrSpec = lens _ucsrSpec (\ s a -> s{_ucsrSpec = a})++-- | The ID of the chart to update.+ucsrChartId :: Lens' UpdateChartSpecRequest (Maybe Int32)+ucsrChartId+  = lens _ucsrChartId (\ s a -> s{_ucsrChartId = a}) .+      mapping _Coerce++instance FromJSON UpdateChartSpecRequest where+        parseJSON+          = withObject "UpdateChartSpecRequest"+              (\ o ->+                 UpdateChartSpecRequest' <$>+                   (o .:? "spec") <*> (o .:? "chartId"))++instance ToJSON UpdateChartSpecRequest where+        toJSON UpdateChartSpecRequest'{..}+          = object+              (catMaybes+                 [("spec" .=) <$> _ucsrSpec,+                  ("chartId" .=) <$> _ucsrChartId])++-- | Sets the basic filter associated with a sheet.+--+-- /See:/ 'setBasicFilterRequest' smart constructor.+newtype SetBasicFilterRequest = SetBasicFilterRequest'+    { _sbfrFilter :: Maybe BasicFilter+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'SetBasicFilterRequest' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'sbfrFilter'+setBasicFilterRequest+    :: SetBasicFilterRequest+setBasicFilterRequest =+    SetBasicFilterRequest'+    { _sbfrFilter = Nothing+    }++-- | The filter to set.+sbfrFilter :: Lens' SetBasicFilterRequest (Maybe BasicFilter)+sbfrFilter+  = lens _sbfrFilter (\ s a -> s{_sbfrFilter = a})++instance FromJSON SetBasicFilterRequest where+        parseJSON+          = withObject "SetBasicFilterRequest"+              (\ o -> SetBasicFilterRequest' <$> (o .:? "filter"))++instance ToJSON SetBasicFilterRequest where+        toJSON SetBasicFilterRequest'{..}+          = object (catMaybes [("filter" .=) <$> _sbfrFilter])++-- | Properties of a grid.+--+-- /See:/ 'gridProperties' smart constructor.+data GridProperties = GridProperties'+    { _gpFrozenColumnCount :: !(Maybe (Textual Int32))+    , _gpColumnCount       :: !(Maybe (Textual Int32))+    , _gpHideGridlines     :: !(Maybe Bool)+    , _gpFrozenRowCount    :: !(Maybe (Textual Int32))+    , _gpRowCount          :: !(Maybe (Textual Int32))+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'GridProperties' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'gpFrozenColumnCount'+--+-- * 'gpColumnCount'+--+-- * 'gpHideGridlines'+--+-- * 'gpFrozenRowCount'+--+-- * 'gpRowCount'+gridProperties+    :: GridProperties+gridProperties =+    GridProperties'+    { _gpFrozenColumnCount = Nothing+    , _gpColumnCount = Nothing+    , _gpHideGridlines = Nothing+    , _gpFrozenRowCount = Nothing+    , _gpRowCount = Nothing+    }++-- | The number of columns that are frozen in the grid.+gpFrozenColumnCount :: Lens' GridProperties (Maybe Int32)+gpFrozenColumnCount+  = lens _gpFrozenColumnCount+      (\ s a -> s{_gpFrozenColumnCount = a})+      . mapping _Coerce++-- | The number of columns in the grid.+gpColumnCount :: Lens' GridProperties (Maybe Int32)+gpColumnCount+  = lens _gpColumnCount+      (\ s a -> s{_gpColumnCount = a})+      . mapping _Coerce++-- | True if the grid isn\'t showing gridlines in the UI.+gpHideGridlines :: Lens' GridProperties (Maybe Bool)+gpHideGridlines+  = lens _gpHideGridlines+      (\ s a -> s{_gpHideGridlines = a})++-- | The number of rows that are frozen in the grid.+gpFrozenRowCount :: Lens' GridProperties (Maybe Int32)+gpFrozenRowCount+  = lens _gpFrozenRowCount+      (\ s a -> s{_gpFrozenRowCount = a})+      . mapping _Coerce++-- | The number of rows in the grid.+gpRowCount :: Lens' GridProperties (Maybe Int32)+gpRowCount+  = lens _gpRowCount (\ s a -> s{_gpRowCount = a}) .+      mapping _Coerce++instance FromJSON GridProperties where+        parseJSON+          = withObject "GridProperties"+              (\ o ->+                 GridProperties' <$>+                   (o .:? "frozenColumnCount") <*> (o .:? "columnCount")+                     <*> (o .:? "hideGridlines")+                     <*> (o .:? "frozenRowCount")+                     <*> (o .:? "rowCount"))++instance ToJSON GridProperties where+        toJSON GridProperties'{..}+          = object+              (catMaybes+                 [("frozenColumnCount" .=) <$> _gpFrozenColumnCount,+                  ("columnCount" .=) <$> _gpColumnCount,+                  ("hideGridlines" .=) <$> _gpHideGridlines,+                  ("frozenRowCount" .=) <$> _gpFrozenRowCount,+                  ("rowCount" .=) <$> _gpRowCount])++-- | The criteria for showing\/hiding values per column. The map\'s key is+-- the column index, and the value is the criteria for that column.+--+-- /See:/ 'basicFilterCriteria' smart constructor.+newtype BasicFilterCriteria = BasicFilterCriteria'+    { _bfcAddtional :: HashMap Text FilterCriteria+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'BasicFilterCriteria' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'bfcAddtional'+basicFilterCriteria+    :: HashMap Text FilterCriteria -- ^ 'bfcAddtional'+    -> BasicFilterCriteria+basicFilterCriteria pBfcAddtional_ =+    BasicFilterCriteria'+    { _bfcAddtional = _Coerce # pBfcAddtional_+    }++bfcAddtional :: Lens' BasicFilterCriteria (HashMap Text FilterCriteria)+bfcAddtional+  = lens _bfcAddtional (\ s a -> s{_bfcAddtional = a})+      . _Coerce++instance FromJSON BasicFilterCriteria where+        parseJSON+          = withObject "BasicFilterCriteria"+              (\ o -> BasicFilterCriteria' <$> (parseJSONObject o))++instance ToJSON BasicFilterCriteria where+        toJSON = toJSON . _bfcAddtional++-- | Updates properties of dimensions within the specified range.+--+-- /See:/ 'updateDimensionPropertiesRequest' smart constructor.+data UpdateDimensionPropertiesRequest = UpdateDimensionPropertiesRequest'+    { _udprRange      :: !(Maybe DimensionRange)+    , _udprFields     :: !(Maybe FieldMask)+    , _udprProperties :: !(Maybe DimensionProperties)+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'UpdateDimensionPropertiesRequest' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'udprRange'+--+-- * 'udprFields'+--+-- * 'udprProperties'+updateDimensionPropertiesRequest+    :: UpdateDimensionPropertiesRequest+updateDimensionPropertiesRequest =+    UpdateDimensionPropertiesRequest'+    { _udprRange = Nothing+    , _udprFields = Nothing+    , _udprProperties = Nothing+    }++-- | The rows or columns to update.+udprRange :: Lens' UpdateDimensionPropertiesRequest (Maybe DimensionRange)+udprRange+  = lens _udprRange (\ s a -> s{_udprRange = a})++-- | The fields that should be updated. At least one field must be specified.+-- The root \`properties\` is implied and should not be specified. A single+-- \`\"*\"\` can be used as short-hand for listing every field.+udprFields :: Lens' UpdateDimensionPropertiesRequest (Maybe FieldMask)+udprFields+  = lens _udprFields (\ s a -> s{_udprFields = a})++-- | Properties to update.+udprProperties :: Lens' UpdateDimensionPropertiesRequest (Maybe DimensionProperties)+udprProperties+  = lens _udprProperties+      (\ s a -> s{_udprProperties = a})++instance FromJSON UpdateDimensionPropertiesRequest+         where+        parseJSON+          = withObject "UpdateDimensionPropertiesRequest"+              (\ o ->+                 UpdateDimensionPropertiesRequest' <$>+                   (o .:? "range") <*> (o .:? "fields") <*>+                     (o .:? "properties"))++instance ToJSON UpdateDimensionPropertiesRequest+         where+        toJSON UpdateDimensionPropertiesRequest'{..}+          = object+              (catMaybes+                 [("range" .=) <$> _udprRange,+                  ("fields" .=) <$> _udprFields,+                  ("properties" .=) <$> _udprProperties])++-- | An optional mapping of filters per source column offset. The filters+-- will be applied before aggregating data into the pivot table. The map\'s+-- key is the column offset of the source range that you want to filter,+-- and the value is the criteria for that column. For example, if the+-- source was \`C10:E15\`, a key of \`0\` will have the filter for column+-- \`C\`, whereas the key \`1\` is for column \`D\`.+--+-- /See:/ 'pivotTableCriteria' smart constructor.+newtype PivotTableCriteria = PivotTableCriteria'+    { _ptcAddtional :: HashMap Text PivotFilterCriteria+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'PivotTableCriteria' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'ptcAddtional'+pivotTableCriteria+    :: HashMap Text PivotFilterCriteria -- ^ 'ptcAddtional'+    -> PivotTableCriteria+pivotTableCriteria pPtcAddtional_ =+    PivotTableCriteria'+    { _ptcAddtional = _Coerce # pPtcAddtional_+    }++ptcAddtional :: Lens' PivotTableCriteria (HashMap Text PivotFilterCriteria)+ptcAddtional+  = lens _ptcAddtional (\ s a -> s{_ptcAddtional = a})+      . _Coerce++instance FromJSON PivotTableCriteria where+        parseJSON+          = withObject "PivotTableCriteria"+              (\ o -> PivotTableCriteria' <$> (parseJSONObject o))++instance ToJSON PivotTableCriteria where+        toJSON = toJSON . _ptcAddtional++-- | Fills in more data based on existing data.+--+-- /See:/ 'autoFillRequest' smart constructor.+data AutoFillRequest = AutoFillRequest'+    { _afrSourceAndDestination :: !(Maybe SourceAndDestination)+    , _afrUseAlternateSeries   :: !(Maybe Bool)+    , _afrRange                :: !(Maybe GridRange)+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'AutoFillRequest' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'afrSourceAndDestination'+--+-- * 'afrUseAlternateSeries'+--+-- * 'afrRange'+autoFillRequest+    :: AutoFillRequest+autoFillRequest =+    AutoFillRequest'+    { _afrSourceAndDestination = Nothing+    , _afrUseAlternateSeries = Nothing+    , _afrRange = Nothing+    }++-- | The source and destination areas to autofill. This explicitly lists the+-- source of the autofill and where to extend that data.+afrSourceAndDestination :: Lens' AutoFillRequest (Maybe SourceAndDestination)+afrSourceAndDestination+  = lens _afrSourceAndDestination+      (\ s a -> s{_afrSourceAndDestination = a})++-- | True if we should generate data with the \"alternate\" series. This+-- differs based on the type and amount of source data.+afrUseAlternateSeries :: Lens' AutoFillRequest (Maybe Bool)+afrUseAlternateSeries+  = lens _afrUseAlternateSeries+      (\ s a -> s{_afrUseAlternateSeries = a})++-- | The range to autofill. This will examine the range and detect the+-- location that has data and automatically fill that data in to the rest+-- of the range.+afrRange :: Lens' AutoFillRequest (Maybe GridRange)+afrRange = lens _afrRange (\ s a -> s{_afrRange = a})++instance FromJSON AutoFillRequest where+        parseJSON+          = withObject "AutoFillRequest"+              (\ o ->+                 AutoFillRequest' <$>+                   (o .:? "sourceAndDestination") <*>+                     (o .:? "useAlternateSeries")+                     <*> (o .:? "range"))++instance ToJSON AutoFillRequest where+        toJSON AutoFillRequest'{..}+          = object+              (catMaybes+                 [("sourceAndDestination" .=) <$>+                    _afrSourceAndDestination,+                  ("useAlternateSeries" .=) <$> _afrUseAlternateSeries,+                  ("range" .=) <$> _afrRange])++-- | Duplicates the contents of a sheet.+--+-- /See:/ 'duplicateSheetRequest' smart constructor.+data DuplicateSheetRequest = DuplicateSheetRequest'+    { _dsrNewSheetName     :: !(Maybe Text)+    , _dsrInsertSheetIndex :: !(Maybe (Textual Int32))+    , _dsrSourceSheetId    :: !(Maybe (Textual Int32))+    , _dsrNewSheetId       :: !(Maybe (Textual Int32))+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'DuplicateSheetRequest' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'dsrNewSheetName'+--+-- * 'dsrInsertSheetIndex'+--+-- * 'dsrSourceSheetId'+--+-- * 'dsrNewSheetId'+duplicateSheetRequest+    :: DuplicateSheetRequest+duplicateSheetRequest =+    DuplicateSheetRequest'+    { _dsrNewSheetName = Nothing+    , _dsrInsertSheetIndex = Nothing+    , _dsrSourceSheetId = Nothing+    , _dsrNewSheetId = Nothing+    }++-- | The name of the new sheet. If empty, a new name is chosen for you.+dsrNewSheetName :: Lens' DuplicateSheetRequest (Maybe Text)+dsrNewSheetName+  = lens _dsrNewSheetName+      (\ s a -> s{_dsrNewSheetName = a})++-- | The zero-based index where the new sheet should be inserted. The index+-- of all sheets after this are incremented.+dsrInsertSheetIndex :: Lens' DuplicateSheetRequest (Maybe Int32)+dsrInsertSheetIndex+  = lens _dsrInsertSheetIndex+      (\ s a -> s{_dsrInsertSheetIndex = a})+      . mapping _Coerce++-- | The sheet to duplicate.+dsrSourceSheetId :: Lens' DuplicateSheetRequest (Maybe Int32)+dsrSourceSheetId+  = lens _dsrSourceSheetId+      (\ s a -> s{_dsrSourceSheetId = a})+      . mapping _Coerce++-- | If set, the ID of the new sheet. If not set, an ID is chosen. If set,+-- the ID must not conflict with any existing sheet ID. If set, it must be+-- non-negative.+dsrNewSheetId :: Lens' DuplicateSheetRequest (Maybe Int32)+dsrNewSheetId+  = lens _dsrNewSheetId+      (\ s a -> s{_dsrNewSheetId = a})+      . mapping _Coerce++instance FromJSON DuplicateSheetRequest where+        parseJSON+          = withObject "DuplicateSheetRequest"+              (\ o ->+                 DuplicateSheetRequest' <$>+                   (o .:? "newSheetName") <*> (o .:? "insertSheetIndex")+                     <*> (o .:? "sourceSheetId")+                     <*> (o .:? "newSheetId"))++instance ToJSON DuplicateSheetRequest where+        toJSON DuplicateSheetRequest'{..}+          = object+              (catMaybes+                 [("newSheetName" .=) <$> _dsrNewSheetName,+                  ("insertSheetIndex" .=) <$> _dsrInsertSheetIndex,+                  ("sourceSheetId" .=) <$> _dsrSourceSheetId,+                  ("newSheetId" .=) <$> _dsrNewSheetId])++-- | The result of a filter view being duplicated.+--+-- /See:/ 'duplicateFilterViewResponse' smart constructor.+newtype DuplicateFilterViewResponse = DuplicateFilterViewResponse'+    { _dfvrFilter :: Maybe FilterView+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'DuplicateFilterViewResponse' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'dfvrFilter'+duplicateFilterViewResponse+    :: DuplicateFilterViewResponse+duplicateFilterViewResponse =+    DuplicateFilterViewResponse'+    { _dfvrFilter = Nothing+    }++-- | The newly created filter.+dfvrFilter :: Lens' DuplicateFilterViewResponse (Maybe FilterView)+dfvrFilter+  = lens _dfvrFilter (\ s a -> s{_dfvrFilter = a})++instance FromJSON DuplicateFilterViewResponse where+        parseJSON+          = withObject "DuplicateFilterViewResponse"+              (\ o ->+                 DuplicateFilterViewResponse' <$> (o .:? "filter"))++instance ToJSON DuplicateFilterViewResponse where+        toJSON DuplicateFilterViewResponse'{..}+          = object (catMaybes [("filter" .=) <$> _dfvrFilter])++-- | The request for updating more than one range of values in a spreadsheet.+--+-- /See:/ 'batchUpdateValuesRequest' smart constructor.+data BatchUpdateValuesRequest = BatchUpdateValuesRequest'+    { _buvrData             :: !(Maybe [ValueRange])+    , _buvrValueInputOption :: !(Maybe BatchUpdateValuesRequestValueInputOption)+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'BatchUpdateValuesRequest' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'buvrData'+--+-- * 'buvrValueInputOption'+batchUpdateValuesRequest+    :: BatchUpdateValuesRequest+batchUpdateValuesRequest =+    BatchUpdateValuesRequest'+    { _buvrData = Nothing+    , _buvrValueInputOption = Nothing+    }++-- | The new values to apply to the spreadsheet.+buvrData :: Lens' BatchUpdateValuesRequest [ValueRange]+buvrData+  = lens _buvrData (\ s a -> s{_buvrData = a}) .+      _Default+      . _Coerce++-- | How the input data should be interpreted.+buvrValueInputOption :: Lens' BatchUpdateValuesRequest (Maybe BatchUpdateValuesRequestValueInputOption)+buvrValueInputOption+  = lens _buvrValueInputOption+      (\ s a -> s{_buvrValueInputOption = a})++instance FromJSON BatchUpdateValuesRequest where+        parseJSON+          = withObject "BatchUpdateValuesRequest"+              (\ o ->+                 BatchUpdateValuesRequest' <$>+                   (o .:? "data" .!= mempty) <*>+                     (o .:? "valueInputOption"))++instance ToJSON BatchUpdateValuesRequest where+        toJSON BatchUpdateValuesRequest'{..}+          = object+              (catMaybes+                 [("data" .=) <$> _buvrData,+                  ("valueInputOption" .=) <$> _buvrValueInputOption])++-- | Adds a chart to a sheet in the spreadsheet.+--+-- /See:/ 'addChartRequest' smart constructor.+newtype AddChartRequest = AddChartRequest'+    { _aChart :: Maybe EmbeddedChart+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'AddChartRequest' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'aChart'+addChartRequest+    :: AddChartRequest+addChartRequest =+    AddChartRequest'+    { _aChart = Nothing+    }++-- | The chart that should be added to the spreadsheet, including the+-- position where it should be placed.+aChart :: Lens' AddChartRequest (Maybe EmbeddedChart)+aChart = lens _aChart (\ s a -> s{_aChart = a})++instance FromJSON AddChartRequest where+        parseJSON+          = withObject "AddChartRequest"+              (\ o -> AddChartRequest' <$> (o .:? "chart"))++instance ToJSON AddChartRequest where+        toJSON AddChartRequest'{..}+          = object (catMaybes [("chart" .=) <$> _aChart])++-- | A named range.+--+-- /See:/ 'namedRange' smart constructor.+data NamedRange = NamedRange'+    { _nrNamedRangeId :: !(Maybe Text)+    , _nrName         :: !(Maybe Text)+    , _nrRange        :: !(Maybe GridRange)+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'NamedRange' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'nrNamedRangeId'+--+-- * 'nrName'+--+-- * 'nrRange'+namedRange+    :: NamedRange+namedRange =+    NamedRange'+    { _nrNamedRangeId = Nothing+    , _nrName = Nothing+    , _nrRange = Nothing+    }++-- | The ID of the named range.+nrNamedRangeId :: Lens' NamedRange (Maybe Text)+nrNamedRangeId+  = lens _nrNamedRangeId+      (\ s a -> s{_nrNamedRangeId = a})++-- | The name of the named range.+nrName :: Lens' NamedRange (Maybe Text)+nrName = lens _nrName (\ s a -> s{_nrName = a})++-- | The range this represents.+nrRange :: Lens' NamedRange (Maybe GridRange)+nrRange = lens _nrRange (\ s a -> s{_nrRange = a})++instance FromJSON NamedRange where+        parseJSON+          = withObject "NamedRange"+              (\ o ->+                 NamedRange' <$>+                   (o .:? "namedRangeId") <*> (o .:? "name") <*>+                     (o .:? "range"))++instance ToJSON NamedRange where+        toJSON NamedRange'{..}+          = object+              (catMaybes+                 [("namedRangeId" .=) <$> _nrNamedRangeId,+                  ("name" .=) <$> _nrName, ("range" .=) <$> _nrRange])++-- | Merges all cells in the range.+--+-- /See:/ 'mergeCellsRequest' smart constructor.+data MergeCellsRequest = MergeCellsRequest'+    { _mcrMergeType :: !(Maybe MergeCellsRequestMergeType)+    , _mcrRange     :: !(Maybe GridRange)+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'MergeCellsRequest' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'mcrMergeType'+--+-- * 'mcrRange'+mergeCellsRequest+    :: MergeCellsRequest+mergeCellsRequest =+    MergeCellsRequest'+    { _mcrMergeType = Nothing+    , _mcrRange = Nothing+    }++-- | How the cells should be merged.+mcrMergeType :: Lens' MergeCellsRequest (Maybe MergeCellsRequestMergeType)+mcrMergeType+  = lens _mcrMergeType (\ s a -> s{_mcrMergeType = a})++-- | The range of cells to merge.+mcrRange :: Lens' MergeCellsRequest (Maybe GridRange)+mcrRange = lens _mcrRange (\ s a -> s{_mcrRange = a})++instance FromJSON MergeCellsRequest where+        parseJSON+          = withObject "MergeCellsRequest"+              (\ o ->+                 MergeCellsRequest' <$>+                   (o .:? "mergeType") <*> (o .:? "range"))++instance ToJSON MergeCellsRequest where+        toJSON MergeCellsRequest'{..}+          = object+              (catMaybes+                 [("mergeType" .=) <$> _mcrMergeType,+                  ("range" .=) <$> _mcrRange])++-- | A border along a cell.+--+-- /See:/ 'bOrder' smart constructor.+data BOrder = BOrder'+    { _boStyle :: !(Maybe BOrderStyle)+    , _boColor :: !(Maybe Color)+    , _boWidth :: !(Maybe (Textual Int32))+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'BOrder' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'boStyle'+--+-- * 'boColor'+--+-- * 'boWidth'+bOrder+    :: BOrder+bOrder =+    BOrder'+    { _boStyle = Nothing+    , _boColor = Nothing+    , _boWidth = Nothing+    }++-- | The style of the border.+boStyle :: Lens' BOrder (Maybe BOrderStyle)+boStyle = lens _boStyle (\ s a -> s{_boStyle = a})++-- | The color of the border.+boColor :: Lens' BOrder (Maybe Color)+boColor = lens _boColor (\ s a -> s{_boColor = a})++-- | The width of the border, in pixels. Border widths must be between 0 and+-- 3 pixels, inclusive.+boWidth :: Lens' BOrder (Maybe Int32)+boWidth+  = lens _boWidth (\ s a -> s{_boWidth = a}) .+      mapping _Coerce++instance FromJSON BOrder where+        parseJSON+          = withObject "BOrder"+              (\ o ->+                 BOrder' <$>+                   (o .:? "style") <*> (o .:? "color") <*>+                     (o .:? "width"))++instance ToJSON BOrder where+        toJSON BOrder'{..}+          = object+              (catMaybes+                 [("style" .=) <$> _boStyle,+                  ("color" .=) <$> _boColor,+                  ("width" .=) <$> _boWidth])++-- | The kinds of value that a cell in a spreadsheet can have.+--+-- /See:/ 'extendedValue' smart constructor.+data ExtendedValue = ExtendedValue'+    { _evBoolValue    :: !(Maybe Bool)+    , _evNumberValue  :: !(Maybe (Textual Double))+    , _evErrorValue   :: !(Maybe ErrorValue)+    , _evStringValue  :: !(Maybe Text)+    , _evFormulaValue :: !(Maybe Text)+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'ExtendedValue' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'evBoolValue'+--+-- * 'evNumberValue'+--+-- * 'evErrorValue'+--+-- * 'evStringValue'+--+-- * 'evFormulaValue'+extendedValue+    :: ExtendedValue+extendedValue =+    ExtendedValue'+    { _evBoolValue = Nothing+    , _evNumberValue = Nothing+    , _evErrorValue = Nothing+    , _evStringValue = Nothing+    , _evFormulaValue = Nothing+    }++-- | Represents a boolean value.+evBoolValue :: Lens' ExtendedValue (Maybe Bool)+evBoolValue+  = lens _evBoolValue (\ s a -> s{_evBoolValue = a})++-- | Represents a double value. Note: Dates, Times and DateTimes are+-- represented as doubles in \"serial number\" format.+evNumberValue :: Lens' ExtendedValue (Maybe Double)+evNumberValue+  = lens _evNumberValue+      (\ s a -> s{_evNumberValue = a})+      . mapping _Coerce++-- | Represents an error. This field is read-only.+evErrorValue :: Lens' ExtendedValue (Maybe ErrorValue)+evErrorValue+  = lens _evErrorValue (\ s a -> s{_evErrorValue = a})++-- | Represents a string value. Leading single quotes are not included. For+-- example, if the user typed \`\'123\` into the UI, this would be+-- represented as a \`stringValue\` of \`\"123\"\`.+evStringValue :: Lens' ExtendedValue (Maybe Text)+evStringValue+  = lens _evStringValue+      (\ s a -> s{_evStringValue = a})++-- | Represents a formula.+evFormulaValue :: Lens' ExtendedValue (Maybe Text)+evFormulaValue+  = lens _evFormulaValue+      (\ s a -> s{_evFormulaValue = a})++instance FromJSON ExtendedValue where+        parseJSON+          = withObject "ExtendedValue"+              (\ o ->+                 ExtendedValue' <$>+                   (o .:? "boolValue") <*> (o .:? "numberValue") <*>+                     (o .:? "errorValue")+                     <*> (o .:? "stringValue")+                     <*> (o .:? "formulaValue"))++instance ToJSON ExtendedValue where+        toJSON ExtendedValue'{..}+          = object+              (catMaybes+                 [("boolValue" .=) <$> _evBoolValue,+                  ("numberValue" .=) <$> _evNumberValue,+                  ("errorValue" .=) <$> _evErrorValue,+                  ("stringValue" .=) <$> _evStringValue,+                  ("formulaValue" .=) <$> _evFormulaValue])++-- | Adds a named range to the spreadsheet.+--+-- /See:/ 'addNamedRangeRequest' smart constructor.+newtype AddNamedRangeRequest = AddNamedRangeRequest'+    { _aNamedRange :: Maybe NamedRange+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'AddNamedRangeRequest' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'aNamedRange'+addNamedRangeRequest+    :: AddNamedRangeRequest+addNamedRangeRequest =+    AddNamedRangeRequest'+    { _aNamedRange = Nothing+    }++-- | The named range to add. If a non-empty namedRangeId is specified, the+-- named range will use that ID. (It is an error to specify the ID of a+-- named range that already exists.)+aNamedRange :: Lens' AddNamedRangeRequest (Maybe NamedRange)+aNamedRange+  = lens _aNamedRange (\ s a -> s{_aNamedRange = a})++instance FromJSON AddNamedRangeRequest where+        parseJSON+          = withObject "AddNamedRangeRequest"+              (\ o ->+                 AddNamedRangeRequest' <$> (o .:? "namedRange"))++instance ToJSON AddNamedRangeRequest where+        toJSON AddNamedRangeRequest'{..}+          = object+              (catMaybes [("namedRange" .=) <$> _aNamedRange])++-- | Criteria for showing\/hiding rows in a pivot table.+--+-- /See:/ 'pivotFilterCriteria' smart constructor.+newtype PivotFilterCriteria = PivotFilterCriteria'+    { _pfcVisibleValues :: Maybe [Text]+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'PivotFilterCriteria' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'pfcVisibleValues'+pivotFilterCriteria+    :: PivotFilterCriteria+pivotFilterCriteria =+    PivotFilterCriteria'+    { _pfcVisibleValues = Nothing+    }++-- | Values that should be included. Values not listed here are excluded.+pfcVisibleValues :: Lens' PivotFilterCriteria [Text]+pfcVisibleValues+  = lens _pfcVisibleValues+      (\ s a -> s{_pfcVisibleValues = a})+      . _Default+      . _Coerce++instance FromJSON PivotFilterCriteria where+        parseJSON+          = withObject "PivotFilterCriteria"+              (\ o ->+                 PivotFilterCriteria' <$>+                   (o .:? "visibleValues" .!= mempty))++instance ToJSON PivotFilterCriteria where+        toJSON PivotFilterCriteria'{..}+          = object+              (catMaybes+                 [("visibleValues" .=) <$> _pfcVisibleValues])++-- | A range along a single dimension on a sheet. All indexes are zero-based.+-- Indexes are half open: the start index is inclusive and the end index is+-- exclusive. Missing indexes indicate the range is unbounded on that side.+--+-- /See:/ 'dimensionRange' smart constructor.+data DimensionRange = DimensionRange'+    { _drDimension  :: !(Maybe DimensionRangeDimension)+    , _drEndIndex   :: !(Maybe (Textual Int32))+    , _drSheetId    :: !(Maybe (Textual Int32))+    , _drStartIndex :: !(Maybe (Textual Int32))+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'DimensionRange' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'drDimension'+--+-- * 'drEndIndex'+--+-- * 'drSheetId'+--+-- * 'drStartIndex'+dimensionRange+    :: DimensionRange+dimensionRange =+    DimensionRange'+    { _drDimension = Nothing+    , _drEndIndex = Nothing+    , _drSheetId = Nothing+    , _drStartIndex = Nothing+    }++-- | The dimension of the span.+drDimension :: Lens' DimensionRange (Maybe DimensionRangeDimension)+drDimension+  = lens _drDimension (\ s a -> s{_drDimension = a})++-- | The end (exclusive) of the span, or not set if unbounded.+drEndIndex :: Lens' DimensionRange (Maybe Int32)+drEndIndex+  = lens _drEndIndex (\ s a -> s{_drEndIndex = a}) .+      mapping _Coerce++-- | The sheet this span is on.+drSheetId :: Lens' DimensionRange (Maybe Int32)+drSheetId+  = lens _drSheetId (\ s a -> s{_drSheetId = a}) .+      mapping _Coerce++-- | The start (inclusive) of the span, or not set if unbounded.+drStartIndex :: Lens' DimensionRange (Maybe Int32)+drStartIndex+  = lens _drStartIndex (\ s a -> s{_drStartIndex = a})+      . mapping _Coerce++instance FromJSON DimensionRange where+        parseJSON+          = withObject "DimensionRange"+              (\ o ->+                 DimensionRange' <$>+                   (o .:? "dimension") <*> (o .:? "endIndex") <*>+                     (o .:? "sheetId")+                     <*> (o .:? "startIndex"))++instance ToJSON DimensionRange where+        toJSON DimensionRange'{..}+          = object+              (catMaybes+                 [("dimension" .=) <$> _drDimension,+                  ("endIndex" .=) <$> _drEndIndex,+                  ("sheetId" .=) <$> _drSheetId,+                  ("startIndex" .=) <$> _drStartIndex])++-- | Updates properties of a spreadsheet.+--+-- /See:/ 'updateSpreadsheetPropertiesRequest' smart constructor.+data UpdateSpreadsheetPropertiesRequest = UpdateSpreadsheetPropertiesRequest'+    { _uFields     :: !(Maybe FieldMask)+    , _uProperties :: !(Maybe SpreadsheetProperties)+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'UpdateSpreadsheetPropertiesRequest' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'uFields'+--+-- * 'uProperties'+updateSpreadsheetPropertiesRequest+    :: UpdateSpreadsheetPropertiesRequest+updateSpreadsheetPropertiesRequest =+    UpdateSpreadsheetPropertiesRequest'+    { _uFields = Nothing+    , _uProperties = Nothing+    }++-- | The fields that should be updated. At least one field must be specified.+-- The root \'properties\' is implied and should not be specified. A single+-- \`\"*\"\` can be used as short-hand for listing every field.+uFields :: Lens' UpdateSpreadsheetPropertiesRequest (Maybe FieldMask)+uFields = lens _uFields (\ s a -> s{_uFields = a})++-- | The properties to update.+uProperties :: Lens' UpdateSpreadsheetPropertiesRequest (Maybe SpreadsheetProperties)+uProperties+  = lens _uProperties (\ s a -> s{_uProperties = a})++instance FromJSON UpdateSpreadsheetPropertiesRequest+         where+        parseJSON+          = withObject "UpdateSpreadsheetPropertiesRequest"+              (\ o ->+                 UpdateSpreadsheetPropertiesRequest' <$>+                   (o .:? "fields") <*> (o .:? "properties"))++instance ToJSON UpdateSpreadsheetPropertiesRequest+         where+        toJSON UpdateSpreadsheetPropertiesRequest'{..}+          = object+              (catMaybes+                 [("fields" .=) <$> _uFields,+                  ("properties" .=) <$> _uProperties])++-- | The result of adding a new protected range.+--+-- /See:/ 'addProtectedRangeResponse' smart constructor.+newtype AddProtectedRangeResponse = AddProtectedRangeResponse'+    { _aProtectedRange :: Maybe ProtectedRange+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'AddProtectedRangeResponse' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'aProtectedRange'+addProtectedRangeResponse+    :: AddProtectedRangeResponse+addProtectedRangeResponse =+    AddProtectedRangeResponse'+    { _aProtectedRange = Nothing+    }++-- | The newly added protected range.+aProtectedRange :: Lens' AddProtectedRangeResponse (Maybe ProtectedRange)+aProtectedRange+  = lens _aProtectedRange+      (\ s a -> s{_aProtectedRange = a})++instance FromJSON AddProtectedRangeResponse where+        parseJSON+          = withObject "AddProtectedRangeResponse"+              (\ o ->+                 AddProtectedRangeResponse' <$>+                   (o .:? "protectedRange"))++instance ToJSON AddProtectedRangeResponse where+        toJSON AddProtectedRangeResponse'{..}+          = object+              (catMaybes+                 [("protectedRange" .=) <$> _aProtectedRange])++-- | Appends rows or columns to the end of a sheet.+--+-- /See:/ 'appendDimensionRequest' smart constructor.+data AppendDimensionRequest = AppendDimensionRequest'+    { _adrLength    :: !(Maybe (Textual Int32))+    , _adrDimension :: !(Maybe AppendDimensionRequestDimension)+    , _adrSheetId   :: !(Maybe (Textual Int32))+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'AppendDimensionRequest' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'adrLength'+--+-- * 'adrDimension'+--+-- * 'adrSheetId'+appendDimensionRequest+    :: AppendDimensionRequest+appendDimensionRequest =+    AppendDimensionRequest'+    { _adrLength = Nothing+    , _adrDimension = Nothing+    , _adrSheetId = Nothing+    }++-- | The number of rows or columns to append.+adrLength :: Lens' AppendDimensionRequest (Maybe Int32)+adrLength+  = lens _adrLength (\ s a -> s{_adrLength = a}) .+      mapping _Coerce++-- | Whether rows or columns should be appended.+adrDimension :: Lens' AppendDimensionRequest (Maybe AppendDimensionRequestDimension)+adrDimension+  = lens _adrDimension (\ s a -> s{_adrDimension = a})++-- | The sheet to append rows or columns to.+adrSheetId :: Lens' AppendDimensionRequest (Maybe Int32)+adrSheetId+  = lens _adrSheetId (\ s a -> s{_adrSheetId = a}) .+      mapping _Coerce++instance FromJSON AppendDimensionRequest where+        parseJSON+          = withObject "AppendDimensionRequest"+              (\ o ->+                 AppendDimensionRequest' <$>+                   (o .:? "length") <*> (o .:? "dimension") <*>+                     (o .:? "sheetId"))++instance ToJSON AppendDimensionRequest where+        toJSON AppendDimensionRequest'{..}+          = object+              (catMaybes+                 [("length" .=) <$> _adrLength,+                  ("dimension" .=) <$> _adrDimension,+                  ("sheetId" .=) <$> _adrSheetId])++-- | The definition of how a value in a pivot table should be calculated.+--+-- /See:/ 'pivotValue' smart constructor.+data PivotValue = PivotValue'+    { _pvSourceColumnOffSet :: !(Maybe (Textual Int32))+    , _pvFormula            :: !(Maybe Text)+    , _pvName               :: !(Maybe Text)+    , _pvSummarizeFunction  :: !(Maybe PivotValueSummarizeFunction)+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'PivotValue' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'pvSourceColumnOffSet'+--+-- * 'pvFormula'+--+-- * 'pvName'+--+-- * 'pvSummarizeFunction'+pivotValue+    :: PivotValue+pivotValue =+    PivotValue'+    { _pvSourceColumnOffSet = Nothing+    , _pvFormula = Nothing+    , _pvName = Nothing+    , _pvSummarizeFunction = Nothing+    }++-- | The column offset of the source range that this value reads from. For+-- example, if the source was \`C10:E15\`, a \`sourceColumnOffset\` of+-- \`0\` means this value refers to column \`C\`, whereas the offset \`1\`+-- would refer to column \`D\`.+pvSourceColumnOffSet :: Lens' PivotValue (Maybe Int32)+pvSourceColumnOffSet+  = lens _pvSourceColumnOffSet+      (\ s a -> s{_pvSourceColumnOffSet = a})+      . mapping _Coerce++-- | A custom formula to calculate the value. The formula must start with an+-- \`=\` character.+pvFormula :: Lens' PivotValue (Maybe Text)+pvFormula+  = lens _pvFormula (\ s a -> s{_pvFormula = a})++-- | A name to use for the value. This is only used if formula was set.+-- Otherwise, the column name is used.+pvName :: Lens' PivotValue (Maybe Text)+pvName = lens _pvName (\ s a -> s{_pvName = a})++-- | A function to summarize the value. If formula is set, the only supported+-- values are SUM and CUSTOM. If sourceColumnOffset is set, then \`CUSTOM\`+-- is not supported.+pvSummarizeFunction :: Lens' PivotValue (Maybe PivotValueSummarizeFunction)+pvSummarizeFunction+  = lens _pvSummarizeFunction+      (\ s a -> s{_pvSummarizeFunction = a})++instance FromJSON PivotValue where+        parseJSON+          = withObject "PivotValue"+              (\ o ->+                 PivotValue' <$>+                   (o .:? "sourceColumnOffset") <*> (o .:? "formula")+                     <*> (o .:? "name")+                     <*> (o .:? "summarizeFunction"))++instance ToJSON PivotValue where+        toJSON PivotValue'{..}+          = object+              (catMaybes+                 [("sourceColumnOffset" .=) <$> _pvSourceColumnOffSet,+                  ("formula" .=) <$> _pvFormula,+                  ("name" .=) <$> _pvName,+                  ("summarizeFunction" .=) <$> _pvSummarizeFunction])++-- | Unmerges cells in the given range.+--+-- /See:/ 'unmergeCellsRequest' smart constructor.+newtype UnmergeCellsRequest = UnmergeCellsRequest'+    { _ucrRange :: Maybe GridRange+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'UnmergeCellsRequest' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'ucrRange'+unmergeCellsRequest+    :: UnmergeCellsRequest+unmergeCellsRequest =+    UnmergeCellsRequest'+    { _ucrRange = Nothing+    }++-- | The range within which all cells should be unmerged. If the range spans+-- multiple merges, all will be unmerged. The range must not partially span+-- any merge.+ucrRange :: Lens' UnmergeCellsRequest (Maybe GridRange)+ucrRange = lens _ucrRange (\ s a -> s{_ucrRange = a})++instance FromJSON UnmergeCellsRequest where+        parseJSON+          = withObject "UnmergeCellsRequest"+              (\ o -> UnmergeCellsRequest' <$> (o .:? "range"))++instance ToJSON UnmergeCellsRequest where+        toJSON UnmergeCellsRequest'{..}+          = object (catMaybes [("range" .=) <$> _ucrRange])++-- | Deletes the requested sheet.+--+-- /See:/ 'deleteSheetRequest' smart constructor.+newtype DeleteSheetRequest = DeleteSheetRequest'+    { _dsrSheetId :: Maybe (Textual Int32)+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'DeleteSheetRequest' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'dsrSheetId'+deleteSheetRequest+    :: DeleteSheetRequest+deleteSheetRequest =+    DeleteSheetRequest'+    { _dsrSheetId = Nothing+    }++-- | The ID of the sheet to delete.+dsrSheetId :: Lens' DeleteSheetRequest (Maybe Int32)+dsrSheetId+  = lens _dsrSheetId (\ s a -> s{_dsrSheetId = a}) .+      mapping _Coerce++instance FromJSON DeleteSheetRequest where+        parseJSON+          = withObject "DeleteSheetRequest"+              (\ o -> DeleteSheetRequest' <$> (o .:? "sheetId"))++instance ToJSON DeleteSheetRequest where+        toJSON DeleteSheetRequest'{..}+          = object (catMaybes [("sheetId" .=) <$> _dsrSheetId])++-- | Updates the borders of a range. If a field is not set in the request,+-- that means the border remains as-is. For example, with two subsequent+-- UpdateBordersRequest: 1. range: A1:A5 \`{ top: RED, bottom: WHITE }\` 2.+-- range: A1:A5 \`{ left: BLUE }\` That would result in A1:A5 having a+-- borders of \`{ top: RED, bottom: WHITE, left: BLUE }\`. If you want to+-- clear a border, explicitly set the style to NONE.+--+-- /See:/ 'updateBOrdersRequest' smart constructor.+data UpdateBOrdersRequest = UpdateBOrdersRequest'+    { _uborBottom          :: !(Maybe BOrder)+    , _uborInnerHorizontal :: !(Maybe BOrder)+    , _uborLeft            :: !(Maybe BOrder)+    , _uborInnerVertical   :: !(Maybe BOrder)+    , _uborRange           :: !(Maybe GridRange)+    , _uborRight           :: !(Maybe BOrder)+    , _uborTop             :: !(Maybe BOrder)+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'UpdateBOrdersRequest' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'uborBottom'+--+-- * 'uborInnerHorizontal'+--+-- * 'uborLeft'+--+-- * 'uborInnerVertical'+--+-- * 'uborRange'+--+-- * 'uborRight'+--+-- * 'uborTop'+updateBOrdersRequest+    :: UpdateBOrdersRequest+updateBOrdersRequest =+    UpdateBOrdersRequest'+    { _uborBottom = Nothing+    , _uborInnerHorizontal = Nothing+    , _uborLeft = Nothing+    , _uborInnerVertical = Nothing+    , _uborRange = Nothing+    , _uborRight = Nothing+    , _uborTop = Nothing+    }++-- | The border to put at the bottom of the range.+uborBottom :: Lens' UpdateBOrdersRequest (Maybe BOrder)+uborBottom+  = lens _uborBottom (\ s a -> s{_uborBottom = a})++-- | The horizontal border to put within the range.+uborInnerHorizontal :: Lens' UpdateBOrdersRequest (Maybe BOrder)+uborInnerHorizontal+  = lens _uborInnerHorizontal+      (\ s a -> s{_uborInnerHorizontal = a})++-- | The border to put at the left of the range.+uborLeft :: Lens' UpdateBOrdersRequest (Maybe BOrder)+uborLeft = lens _uborLeft (\ s a -> s{_uborLeft = a})++-- | The vertical border to put within the range.+uborInnerVertical :: Lens' UpdateBOrdersRequest (Maybe BOrder)+uborInnerVertical+  = lens _uborInnerVertical+      (\ s a -> s{_uborInnerVertical = a})++-- | The range whose borders should be updated.+uborRange :: Lens' UpdateBOrdersRequest (Maybe GridRange)+uborRange+  = lens _uborRange (\ s a -> s{_uborRange = a})++-- | The border to put at the right of the range.+uborRight :: Lens' UpdateBOrdersRequest (Maybe BOrder)+uborRight+  = lens _uborRight (\ s a -> s{_uborRight = a})++-- | The border to put at the top of the range.+uborTop :: Lens' UpdateBOrdersRequest (Maybe BOrder)+uborTop = lens _uborTop (\ s a -> s{_uborTop = a})++instance FromJSON UpdateBOrdersRequest where+        parseJSON+          = withObject "UpdateBOrdersRequest"+              (\ o ->+                 UpdateBOrdersRequest' <$>+                   (o .:? "bottom") <*> (o .:? "innerHorizontal") <*>+                     (o .:? "left")+                     <*> (o .:? "innerVertical")+                     <*> (o .:? "range")+                     <*> (o .:? "right")+                     <*> (o .:? "top"))++instance ToJSON UpdateBOrdersRequest where+        toJSON UpdateBOrdersRequest'{..}+          = object+              (catMaybes+                 [("bottom" .=) <$> _uborBottom,+                  ("innerHorizontal" .=) <$> _uborInnerHorizontal,+                  ("left" .=) <$> _uborLeft,+                  ("innerVertical" .=) <$> _uborInnerVertical,+                  ("range" .=) <$> _uborRange,+                  ("right" .=) <$> _uborRight,+                  ("top" .=) <$> _uborTop])++-- | A chart embedded in a sheet.+--+-- /See:/ 'embeddedChart' smart constructor.+data EmbeddedChart = EmbeddedChart'+    { _ecSpec     :: !(Maybe ChartSpec)+    , _ecPosition :: !(Maybe EmbeddedObjectPosition)+    , _ecChartId  :: !(Maybe (Textual Int32))+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'EmbeddedChart' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'ecSpec'+--+-- * 'ecPosition'+--+-- * 'ecChartId'+embeddedChart+    :: EmbeddedChart+embeddedChart =+    EmbeddedChart'+    { _ecSpec = Nothing+    , _ecPosition = Nothing+    , _ecChartId = Nothing+    }++-- | The specification of the chart.+ecSpec :: Lens' EmbeddedChart (Maybe ChartSpec)+ecSpec = lens _ecSpec (\ s a -> s{_ecSpec = a})++-- | The position of the chart.+ecPosition :: Lens' EmbeddedChart (Maybe EmbeddedObjectPosition)+ecPosition+  = lens _ecPosition (\ s a -> s{_ecPosition = a})++-- | The ID of the chart.+ecChartId :: Lens' EmbeddedChart (Maybe Int32)+ecChartId+  = lens _ecChartId (\ s a -> s{_ecChartId = a}) .+      mapping _Coerce++instance FromJSON EmbeddedChart where+        parseJSON+          = withObject "EmbeddedChart"+              (\ o ->+                 EmbeddedChart' <$>+                   (o .:? "spec") <*> (o .:? "position") <*>+                     (o .:? "chartId"))++instance ToJSON EmbeddedChart where+        toJSON EmbeddedChart'{..}+          = object+              (catMaybes+                 [("spec" .=) <$> _ecSpec,+                  ("position" .=) <$> _ecPosition,+                  ("chartId" .=) <$> _ecChartId])++-- | Data about each cell in a row.+--+-- /See:/ 'rowData' smart constructor.+newtype RowData = RowData'+    { _rdValues :: Maybe [CellData]+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'RowData' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'rdValues'+rowData+    :: RowData+rowData =+    RowData'+    { _rdValues = Nothing+    }++-- | The values in the row, one per column.+rdValues :: Lens' RowData [CellData]+rdValues+  = lens _rdValues (\ s a -> s{_rdValues = a}) .+      _Default+      . _Coerce++instance FromJSON RowData where+        parseJSON+          = withObject "RowData"+              (\ o -> RowData' <$> (o .:? "values" .!= mempty))++instance ToJSON RowData where+        toJSON RowData'{..}+          = object (catMaybes [("values" .=) <$> _rdValues])++-- | The editors of a protected range.+--+-- /See:/ 'editors' smart constructor.+data Editors = Editors'+    { _eGroups             :: !(Maybe [Text])+    , _eUsers              :: !(Maybe [Text])+    , _eDomainUsersCanEdit :: !(Maybe Bool)+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'Editors' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'eGroups'+--+-- * 'eUsers'+--+-- * 'eDomainUsersCanEdit'+editors+    :: Editors+editors =+    Editors'+    { _eGroups = Nothing+    , _eUsers = Nothing+    , _eDomainUsersCanEdit = Nothing+    }++-- | The email addresses of groups with edit access to the protected range.+eGroups :: Lens' Editors [Text]+eGroups+  = lens _eGroups (\ s a -> s{_eGroups = a}) . _Default+      . _Coerce++-- | The email addresses of users with edit access to the protected range.+eUsers :: Lens' Editors [Text]+eUsers+  = lens _eUsers (\ s a -> s{_eUsers = a}) . _Default .+      _Coerce++-- | True if anyone in the document\'s domain has edit access to the+-- protected range. Domain protection is only supported on documents within+-- a domain.+eDomainUsersCanEdit :: Lens' Editors (Maybe Bool)+eDomainUsersCanEdit+  = lens _eDomainUsersCanEdit+      (\ s a -> s{_eDomainUsersCanEdit = a})++instance FromJSON Editors where+        parseJSON+          = withObject "Editors"+              (\ o ->+                 Editors' <$>+                   (o .:? "groups" .!= mempty) <*>+                     (o .:? "users" .!= mempty)+                     <*> (o .:? "domainUsersCanEdit"))++instance ToJSON Editors where+        toJSON Editors'{..}+          = object+              (catMaybes+                 [("groups" .=) <$> _eGroups,+                  ("users" .=) <$> _eUsers,+                  ("domainUsersCanEdit" .=) <$> _eDomainUsersCanEdit])++-- | A pivot table.+--+-- /See:/ 'pivotTable' smart constructor.+data PivotTable = PivotTable'+    { _ptValues      :: !(Maybe [PivotValue])+    , _ptValueLayout :: !(Maybe PivotTableValueLayout)+    , _ptRows        :: !(Maybe [PivotGroup])+    , _ptSource      :: !(Maybe GridRange)+    , _ptColumns     :: !(Maybe [PivotGroup])+    , _ptCriteria    :: !(Maybe PivotTableCriteria)+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'PivotTable' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'ptValues'+--+-- * 'ptValueLayout'+--+-- * 'ptRows'+--+-- * 'ptSource'+--+-- * 'ptColumns'+--+-- * 'ptCriteria'+pivotTable+    :: PivotTable+pivotTable =+    PivotTable'+    { _ptValues = Nothing+    , _ptValueLayout = Nothing+    , _ptRows = Nothing+    , _ptSource = Nothing+    , _ptColumns = Nothing+    , _ptCriteria = Nothing+    }++-- | A list of values to include in the pivot table.+ptValues :: Lens' PivotTable [PivotValue]+ptValues+  = lens _ptValues (\ s a -> s{_ptValues = a}) .+      _Default+      . _Coerce++-- | Whether values should be listed horizontally (as columns) or vertically+-- (as rows).+ptValueLayout :: Lens' PivotTable (Maybe PivotTableValueLayout)+ptValueLayout+  = lens _ptValueLayout+      (\ s a -> s{_ptValueLayout = a})++-- | Each row grouping in the pivot table.+ptRows :: Lens' PivotTable [PivotGroup]+ptRows+  = lens _ptRows (\ s a -> s{_ptRows = a}) . _Default .+      _Coerce++-- | The range the pivot table is reading data from.+ptSource :: Lens' PivotTable (Maybe GridRange)+ptSource = lens _ptSource (\ s a -> s{_ptSource = a})++-- | Each column grouping in the pivot table.+ptColumns :: Lens' PivotTable [PivotGroup]+ptColumns+  = lens _ptColumns (\ s a -> s{_ptColumns = a}) .+      _Default+      . _Coerce++-- | An optional mapping of filters per source column offset. The filters+-- will be applied before aggregating data into the pivot table. The map\'s+-- key is the column offset of the source range that you want to filter,+-- and the value is the criteria for that column. For example, if the+-- source was \`C10:E15\`, a key of \`0\` will have the filter for column+-- \`C\`, whereas the key \`1\` is for column \`D\`.+ptCriteria :: Lens' PivotTable (Maybe PivotTableCriteria)+ptCriteria+  = lens _ptCriteria (\ s a -> s{_ptCriteria = a})++instance FromJSON PivotTable where+        parseJSON+          = withObject "PivotTable"+              (\ o ->+                 PivotTable' <$>+                   (o .:? "values" .!= mempty) <*> (o .:? "valueLayout")+                     <*> (o .:? "rows" .!= mempty)+                     <*> (o .:? "source")+                     <*> (o .:? "columns" .!= mempty)+                     <*> (o .:? "criteria"))++instance ToJSON PivotTable where+        toJSON PivotTable'{..}+          = object+              (catMaybes+                 [("values" .=) <$> _ptValues,+                  ("valueLayout" .=) <$> _ptValueLayout,+                  ("rows" .=) <$> _ptRows, ("source" .=) <$> _ptSource,+                  ("columns" .=) <$> _ptColumns,+                  ("criteria" .=) <$> _ptCriteria])++-- | The position of an embedded object such as a chart.+--+-- /See:/ 'embeddedObjectPosition' smart constructor.+data EmbeddedObjectPosition = EmbeddedObjectPosition'+    { _eopOverlayPosition :: !(Maybe OverlayPosition)+    , _eopSheetId         :: !(Maybe (Textual Int32))+    , _eopNewSheet        :: !(Maybe Bool)+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'EmbeddedObjectPosition' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'eopOverlayPosition'+--+-- * 'eopSheetId'+--+-- * 'eopNewSheet'+embeddedObjectPosition+    :: EmbeddedObjectPosition+embeddedObjectPosition =+    EmbeddedObjectPosition'+    { _eopOverlayPosition = Nothing+    , _eopSheetId = Nothing+    , _eopNewSheet = Nothing+    }++-- | The position at which the object is overlaid on top of a grid.+eopOverlayPosition :: Lens' EmbeddedObjectPosition (Maybe OverlayPosition)+eopOverlayPosition+  = lens _eopOverlayPosition+      (\ s a -> s{_eopOverlayPosition = a})++-- | The sheet this is on. Set only if the embedded object is on its own+-- sheet. Must be non-negative.+eopSheetId :: Lens' EmbeddedObjectPosition (Maybe Int32)+eopSheetId+  = lens _eopSheetId (\ s a -> s{_eopSheetId = a}) .+      mapping _Coerce++-- | If true, the embedded object will be put on a new sheet whose ID is+-- chosen for you. Used only when writing.+eopNewSheet :: Lens' EmbeddedObjectPosition (Maybe Bool)+eopNewSheet+  = lens _eopNewSheet (\ s a -> s{_eopNewSheet = a})++instance FromJSON EmbeddedObjectPosition where+        parseJSON+          = withObject "EmbeddedObjectPosition"+              (\ o ->+                 EmbeddedObjectPosition' <$>+                   (o .:? "overlayPosition") <*> (o .:? "sheetId") <*>+                     (o .:? "newSheet"))++instance ToJSON EmbeddedObjectPosition where+        toJSON EmbeddedObjectPosition'{..}+          = object+              (catMaybes+                 [("overlayPosition" .=) <$> _eopOverlayPosition,+                  ("sheetId" .=) <$> _eopSheetId,+                  ("newSheet" .=) <$> _eopNewSheet])++-- | The default filter associated with a sheet.+--+-- /See:/ 'basicFilter' smart constructor.+data BasicFilter = BasicFilter'+    { _bfSortSpecs :: !(Maybe [SortSpec])+    , _bfRange     :: !(Maybe GridRange)+    , _bfCriteria  :: !(Maybe BasicFilterCriteria)+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'BasicFilter' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'bfSortSpecs'+--+-- * 'bfRange'+--+-- * 'bfCriteria'+basicFilter+    :: BasicFilter+basicFilter =+    BasicFilter'+    { _bfSortSpecs = Nothing+    , _bfRange = Nothing+    , _bfCriteria = Nothing+    }++-- | The sort order per column. Later specifications are used when values are+-- equal in the earlier specifications.+bfSortSpecs :: Lens' BasicFilter [SortSpec]+bfSortSpecs+  = lens _bfSortSpecs (\ s a -> s{_bfSortSpecs = a}) .+      _Default+      . _Coerce++-- | The range the filter covers.+bfRange :: Lens' BasicFilter (Maybe GridRange)+bfRange = lens _bfRange (\ s a -> s{_bfRange = a})++-- | The criteria for showing\/hiding values per column. The map\'s key is+-- the column index, and the value is the criteria for that column.+bfCriteria :: Lens' BasicFilter (Maybe BasicFilterCriteria)+bfCriteria+  = lens _bfCriteria (\ s a -> s{_bfCriteria = a})++instance FromJSON BasicFilter where+        parseJSON+          = withObject "BasicFilter"+              (\ o ->+                 BasicFilter' <$>+                   (o .:? "sortSpecs" .!= mempty) <*> (o .:? "range")+                     <*> (o .:? "criteria"))++instance ToJSON BasicFilter where+        toJSON BasicFilter'{..}+          = object+              (catMaybes+                 [("sortSpecs" .=) <$> _bfSortSpecs,+                  ("range" .=) <$> _bfRange,+                  ("criteria" .=) <$> _bfCriteria])++-- | Splits a column of text into multiple columns, based on a delimiter in+-- each cell.+--+-- /See:/ 'textToColumnsRequest' smart constructor.+data TextToColumnsRequest = TextToColumnsRequest'+    { _ttcrDelimiterType :: !(Maybe TextToColumnsRequestDelimiterType)+    , _ttcrSource        :: !(Maybe GridRange)+    , _ttcrDelimiter     :: !(Maybe Text)+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'TextToColumnsRequest' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'ttcrDelimiterType'+--+-- * 'ttcrSource'+--+-- * 'ttcrDelimiter'+textToColumnsRequest+    :: TextToColumnsRequest+textToColumnsRequest =+    TextToColumnsRequest'+    { _ttcrDelimiterType = Nothing+    , _ttcrSource = Nothing+    , _ttcrDelimiter = Nothing+    }++-- | The delimiter type to use.+ttcrDelimiterType :: Lens' TextToColumnsRequest (Maybe TextToColumnsRequestDelimiterType)+ttcrDelimiterType+  = lens _ttcrDelimiterType+      (\ s a -> s{_ttcrDelimiterType = a})++-- | The source data range. This must span exactly one column.+ttcrSource :: Lens' TextToColumnsRequest (Maybe GridRange)+ttcrSource+  = lens _ttcrSource (\ s a -> s{_ttcrSource = a})++-- | The delimiter to use. Used only if delimiterType is CUSTOM.+ttcrDelimiter :: Lens' TextToColumnsRequest (Maybe Text)+ttcrDelimiter+  = lens _ttcrDelimiter+      (\ s a -> s{_ttcrDelimiter = a})++instance FromJSON TextToColumnsRequest where+        parseJSON+          = withObject "TextToColumnsRequest"+              (\ o ->+                 TextToColumnsRequest' <$>+                   (o .:? "delimiterType") <*> (o .:? "source") <*>+                     (o .:? "delimiter"))++instance ToJSON TextToColumnsRequest where+        toJSON TextToColumnsRequest'{..}+          = object+              (catMaybes+                 [("delimiterType" .=) <$> _ttcrDelimiterType,+                  ("source" .=) <$> _ttcrSource,+                  ("delimiter" .=) <$> _ttcrDelimiter])++-- | The request for updating any aspect of a spreadsheet.+--+-- /See:/ 'batchUpdateSpreadsheetRequest' smart constructor.+newtype BatchUpdateSpreadsheetRequest = BatchUpdateSpreadsheetRequest'+    { _busrRequests :: Maybe [Request']+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'BatchUpdateSpreadsheetRequest' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'busrRequests'+batchUpdateSpreadsheetRequest+    :: BatchUpdateSpreadsheetRequest+batchUpdateSpreadsheetRequest =+    BatchUpdateSpreadsheetRequest'+    { _busrRequests = Nothing+    }++-- | A list of updates to apply to the spreadsheet.+busrRequests :: Lens' BatchUpdateSpreadsheetRequest [Request']+busrRequests+  = lens _busrRequests (\ s a -> s{_busrRequests = a})+      . _Default+      . _Coerce++instance FromJSON BatchUpdateSpreadsheetRequest where+        parseJSON+          = withObject "BatchUpdateSpreadsheetRequest"+              (\ o ->+                 BatchUpdateSpreadsheetRequest' <$>+                   (o .:? "requests" .!= mempty))++instance ToJSON BatchUpdateSpreadsheetRequest where+        toJSON BatchUpdateSpreadsheetRequest'{..}+          = object+              (catMaybes [("requests" .=) <$> _busrRequests])++-- | The response when updating a range of values in a spreadsheet.+--+-- /See:/ 'updateValuesResponse' smart constructor.+data UpdateValuesResponse = UpdateValuesResponse'+    { _uvrUpdatedCells   :: !(Maybe (Textual Int32))+    , _uvrSpreadsheetId  :: !(Maybe Text)+    , _uvrUpdatedRows    :: !(Maybe (Textual Int32))+    , _uvrUpdatedRange   :: !(Maybe Text)+    , _uvrUpdatedColumns :: !(Maybe (Textual Int32))+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'UpdateValuesResponse' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'uvrUpdatedCells'+--+-- * 'uvrSpreadsheetId'+--+-- * 'uvrUpdatedRows'+--+-- * 'uvrUpdatedRange'+--+-- * 'uvrUpdatedColumns'+updateValuesResponse+    :: UpdateValuesResponse+updateValuesResponse =+    UpdateValuesResponse'+    { _uvrUpdatedCells = Nothing+    , _uvrSpreadsheetId = Nothing+    , _uvrUpdatedRows = Nothing+    , _uvrUpdatedRange = Nothing+    , _uvrUpdatedColumns = Nothing+    }++-- | The number of cells updated.+uvrUpdatedCells :: Lens' UpdateValuesResponse (Maybe Int32)+uvrUpdatedCells+  = lens _uvrUpdatedCells+      (\ s a -> s{_uvrUpdatedCells = a})+      . mapping _Coerce++-- | The spreadsheet the updates were applied to.+uvrSpreadsheetId :: Lens' UpdateValuesResponse (Maybe Text)+uvrSpreadsheetId+  = lens _uvrSpreadsheetId+      (\ s a -> s{_uvrSpreadsheetId = a})++-- | The number of rows where at least one cell in the row was updated.+uvrUpdatedRows :: Lens' UpdateValuesResponse (Maybe Int32)+uvrUpdatedRows+  = lens _uvrUpdatedRows+      (\ s a -> s{_uvrUpdatedRows = a})+      . mapping _Coerce++-- | The range (in A1 notation) that updates were applied to.+uvrUpdatedRange :: Lens' UpdateValuesResponse (Maybe Text)+uvrUpdatedRange+  = lens _uvrUpdatedRange+      (\ s a -> s{_uvrUpdatedRange = a})++-- | The number of columns where at least one cell in the column was updated.+uvrUpdatedColumns :: Lens' UpdateValuesResponse (Maybe Int32)+uvrUpdatedColumns+  = lens _uvrUpdatedColumns+      (\ s a -> s{_uvrUpdatedColumns = a})+      . mapping _Coerce++instance FromJSON UpdateValuesResponse where+        parseJSON+          = withObject "UpdateValuesResponse"+              (\ o ->+                 UpdateValuesResponse' <$>+                   (o .:? "updatedCells") <*> (o .:? "spreadsheetId")+                     <*> (o .:? "updatedRows")+                     <*> (o .:? "updatedRange")+                     <*> (o .:? "updatedColumns"))++instance ToJSON UpdateValuesResponse where+        toJSON UpdateValuesResponse'{..}+          = object+              (catMaybes+                 [("updatedCells" .=) <$> _uvrUpdatedCells,+                  ("spreadsheetId" .=) <$> _uvrSpreadsheetId,+                  ("updatedRows" .=) <$> _uvrUpdatedRows,+                  ("updatedRange" .=) <$> _uvrUpdatedRange,+                  ("updatedColumns" .=) <$> _uvrUpdatedColumns])++-- | The request to copy a sheet across spreadsheets.+--+-- /See:/ 'copySheetToAnotherSpreadsheetRequest' smart constructor.+newtype CopySheetToAnotherSpreadsheetRequest = CopySheetToAnotherSpreadsheetRequest'+    { _cstasrDestinationSpreadsheetId :: Maybe Text+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'CopySheetToAnotherSpreadsheetRequest' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'cstasrDestinationSpreadsheetId'+copySheetToAnotherSpreadsheetRequest+    :: CopySheetToAnotherSpreadsheetRequest+copySheetToAnotherSpreadsheetRequest =+    CopySheetToAnotherSpreadsheetRequest'+    { _cstasrDestinationSpreadsheetId = Nothing+    }++-- | The ID of the spreadsheet to copy the sheet to.+cstasrDestinationSpreadsheetId :: Lens' CopySheetToAnotherSpreadsheetRequest (Maybe Text)+cstasrDestinationSpreadsheetId+  = lens _cstasrDestinationSpreadsheetId+      (\ s a -> s{_cstasrDestinationSpreadsheetId = a})++instance FromJSON+         CopySheetToAnotherSpreadsheetRequest where+        parseJSON+          = withObject "CopySheetToAnotherSpreadsheetRequest"+              (\ o ->+                 CopySheetToAnotherSpreadsheetRequest' <$>+                   (o .:? "destinationSpreadsheetId"))++instance ToJSON CopySheetToAnotherSpreadsheetRequest+         where+        toJSON CopySheetToAnotherSpreadsheetRequest'{..}+          = object+              (catMaybes+                 [("destinationSpreadsheetId" .=) <$>+                    _cstasrDestinationSpreadsheetId])++-- | Adds a filter view.+--+-- /See:/ 'addFilterViewRequest' smart constructor.+newtype AddFilterViewRequest = AddFilterViewRequest'+    { _aFilter :: Maybe FilterView+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'AddFilterViewRequest' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'aFilter'+addFilterViewRequest+    :: AddFilterViewRequest+addFilterViewRequest =+    AddFilterViewRequest'+    { _aFilter = Nothing+    }++-- | The filter to add.+aFilter :: Lens' AddFilterViewRequest (Maybe FilterView)+aFilter = lens _aFilter (\ s a -> s{_aFilter = a})++instance FromJSON AddFilterViewRequest where+        parseJSON+          = withObject "AddFilterViewRequest"+              (\ o -> AddFilterViewRequest' <$> (o .:? "filter"))++instance ToJSON AddFilterViewRequest where+        toJSON AddFilterViewRequest'{..}+          = object (catMaybes [("filter" .=) <$> _aFilter])++-- | Metadata about a value in a pivot grouping.+--+-- /See:/ 'pivotGroupValueMetadata' smart constructor.+data PivotGroupValueMetadata = PivotGroupValueMetadata'+    { _pgvmValue     :: !(Maybe ExtendedValue)+    , _pgvmCollapsed :: !(Maybe Bool)+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'PivotGroupValueMetadata' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'pgvmValue'+--+-- * 'pgvmCollapsed'+pivotGroupValueMetadata+    :: PivotGroupValueMetadata+pivotGroupValueMetadata =+    PivotGroupValueMetadata'+    { _pgvmValue = Nothing+    , _pgvmCollapsed = Nothing+    }++-- | The calculated value the metadata corresponds to. (Note that+-- formulaValue is not valid, because the values will be calculated.)+pgvmValue :: Lens' PivotGroupValueMetadata (Maybe ExtendedValue)+pgvmValue+  = lens _pgvmValue (\ s a -> s{_pgvmValue = a})++-- | True if the data corresponding to the value is collapsed.+pgvmCollapsed :: Lens' PivotGroupValueMetadata (Maybe Bool)+pgvmCollapsed+  = lens _pgvmCollapsed+      (\ s a -> s{_pgvmCollapsed = a})++instance FromJSON PivotGroupValueMetadata where+        parseJSON+          = withObject "PivotGroupValueMetadata"+              (\ o ->+                 PivotGroupValueMetadata' <$>+                   (o .:? "value") <*> (o .:? "collapsed"))++instance ToJSON PivotGroupValueMetadata where+        toJSON PivotGroupValueMetadata'{..}+          = object+              (catMaybes+                 [("value" .=) <$> _pgvmValue,+                  ("collapsed" .=) <$> _pgvmCollapsed])++-- | Updates all cells in a range with new data.+--+-- /See:/ 'updateCellsRequest' smart constructor.+data UpdateCellsRequest = UpdateCellsRequest'+    { _updStart  :: !(Maybe GridCoordinate)+    , _updRows   :: !(Maybe [RowData])+    , _updRange  :: !(Maybe GridRange)+    , _updFields :: !(Maybe FieldMask)+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'UpdateCellsRequest' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'updStart'+--+-- * 'updRows'+--+-- * 'updRange'+--+-- * 'updFields'+updateCellsRequest+    :: UpdateCellsRequest+updateCellsRequest =+    UpdateCellsRequest'+    { _updStart = Nothing+    , _updRows = Nothing+    , _updRange = Nothing+    , _updFields = Nothing+    }++-- | The coordinate to start writing data at. Any number of rows and columns+-- (including a different number of columns per row) may be written.+updStart :: Lens' UpdateCellsRequest (Maybe GridCoordinate)+updStart = lens _updStart (\ s a -> s{_updStart = a})++-- | The data to write.+updRows :: Lens' UpdateCellsRequest [RowData]+updRows+  = lens _updRows (\ s a -> s{_updRows = a}) . _Default+      . _Coerce++-- | The range to write data to. If the data in rows does not cover the+-- entire requested range, the fields matching those set in fields will be+-- cleared.+updRange :: Lens' UpdateCellsRequest (Maybe GridRange)+updRange = lens _updRange (\ s a -> s{_updRange = a})++-- | The fields of CellData that should be updated. At least one field must+-- be specified. The root is the CellData; \'row.values.\' should not be+-- specified. A single \`\"*\"\` can be used as short-hand for listing+-- every field.+updFields :: Lens' UpdateCellsRequest (Maybe FieldMask)+updFields+  = lens _updFields (\ s a -> s{_updFields = a})++instance FromJSON UpdateCellsRequest where+        parseJSON+          = withObject "UpdateCellsRequest"+              (\ o ->+                 UpdateCellsRequest' <$>+                   (o .:? "start") <*> (o .:? "rows" .!= mempty) <*>+                     (o .:? "range")+                     <*> (o .:? "fields"))++instance ToJSON UpdateCellsRequest where+        toJSON UpdateCellsRequest'{..}+          = object+              (catMaybes+                 [("start" .=) <$> _updStart,+                  ("rows" .=) <$> _updRows, ("range" .=) <$> _updRange,+                  ("fields" .=) <$> _updFields])++-- | The format of a cell.+--+-- /See:/ 'cellFormat' smart constructor.+data CellFormat = CellFormat'+    { _cfBOrders              :: !(Maybe BOrders)+    , _cfVerticalAlignment    :: !(Maybe CellFormatVerticalAlignment)+    , _cfBackgRoundColor      :: !(Maybe Color)+    , _cfHyperlinkDisplayType :: !(Maybe CellFormatHyperlinkDisplayType)+    , _cfWrapStrategy         :: !(Maybe CellFormatWrapStrategy)+    , _cfNumberFormat         :: !(Maybe NumberFormat)+    , _cfTextDirection        :: !(Maybe CellFormatTextDirection)+    , _cfTextFormat           :: !(Maybe TextFormat)+    , _cfHorizontalAlignment  :: !(Maybe CellFormatHorizontalAlignment)+    , _cfPadding              :: !(Maybe Padding)+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'CellFormat' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'cfBOrders'+--+-- * 'cfVerticalAlignment'+--+-- * 'cfBackgRoundColor'+--+-- * 'cfHyperlinkDisplayType'+--+-- * 'cfWrapStrategy'+--+-- * 'cfNumberFormat'+--+-- * 'cfTextDirection'+--+-- * 'cfTextFormat'+--+-- * 'cfHorizontalAlignment'+--+-- * 'cfPadding'+cellFormat+    :: CellFormat+cellFormat =+    CellFormat'+    { _cfBOrders = Nothing+    , _cfVerticalAlignment = Nothing+    , _cfBackgRoundColor = Nothing+    , _cfHyperlinkDisplayType = Nothing+    , _cfWrapStrategy = Nothing+    , _cfNumberFormat = Nothing+    , _cfTextDirection = Nothing+    , _cfTextFormat = Nothing+    , _cfHorizontalAlignment = Nothing+    , _cfPadding = Nothing+    }++-- | The borders of the cell.+cfBOrders :: Lens' CellFormat (Maybe BOrders)+cfBOrders+  = lens _cfBOrders (\ s a -> s{_cfBOrders = a})++-- | The vertical alignment of the value in the cell.+cfVerticalAlignment :: Lens' CellFormat (Maybe CellFormatVerticalAlignment)+cfVerticalAlignment+  = lens _cfVerticalAlignment+      (\ s a -> s{_cfVerticalAlignment = a})++-- | The background color of the cell.+cfBackgRoundColor :: Lens' CellFormat (Maybe Color)+cfBackgRoundColor+  = lens _cfBackgRoundColor+      (\ s a -> s{_cfBackgRoundColor = a})++-- | How a hyperlink, if it exists, should be displayed in the cell.+cfHyperlinkDisplayType :: Lens' CellFormat (Maybe CellFormatHyperlinkDisplayType)+cfHyperlinkDisplayType+  = lens _cfHyperlinkDisplayType+      (\ s a -> s{_cfHyperlinkDisplayType = a})++-- | The wrap strategy for the value in the cell.+cfWrapStrategy :: Lens' CellFormat (Maybe CellFormatWrapStrategy)+cfWrapStrategy+  = lens _cfWrapStrategy+      (\ s a -> s{_cfWrapStrategy = a})++-- | A format describing how number values should be represented to the user.+cfNumberFormat :: Lens' CellFormat (Maybe NumberFormat)+cfNumberFormat+  = lens _cfNumberFormat+      (\ s a -> s{_cfNumberFormat = a})++-- | The direction of the text in the cell.+cfTextDirection :: Lens' CellFormat (Maybe CellFormatTextDirection)+cfTextDirection+  = lens _cfTextDirection+      (\ s a -> s{_cfTextDirection = a})++-- | The format of the text in the cell (unless overridden by a format run).+cfTextFormat :: Lens' CellFormat (Maybe TextFormat)+cfTextFormat+  = lens _cfTextFormat (\ s a -> s{_cfTextFormat = a})++-- | The horizontal alignment of the value in the cell.+cfHorizontalAlignment :: Lens' CellFormat (Maybe CellFormatHorizontalAlignment)+cfHorizontalAlignment+  = lens _cfHorizontalAlignment+      (\ s a -> s{_cfHorizontalAlignment = a})++-- | The padding of the cell.+cfPadding :: Lens' CellFormat (Maybe Padding)+cfPadding+  = lens _cfPadding (\ s a -> s{_cfPadding = a})++instance FromJSON CellFormat where+        parseJSON+          = withObject "CellFormat"+              (\ o ->+                 CellFormat' <$>+                   (o .:? "borders") <*> (o .:? "verticalAlignment") <*>+                     (o .:? "backgroundColor")+                     <*> (o .:? "hyperlinkDisplayType")+                     <*> (o .:? "wrapStrategy")+                     <*> (o .:? "numberFormat")+                     <*> (o .:? "textDirection")+                     <*> (o .:? "textFormat")+                     <*> (o .:? "horizontalAlignment")+                     <*> (o .:? "padding"))++instance ToJSON CellFormat where+        toJSON CellFormat'{..}+          = object+              (catMaybes+                 [("borders" .=) <$> _cfBOrders,+                  ("verticalAlignment" .=) <$> _cfVerticalAlignment,+                  ("backgroundColor" .=) <$> _cfBackgRoundColor,+                  ("hyperlinkDisplayType" .=) <$>+                    _cfHyperlinkDisplayType,+                  ("wrapStrategy" .=) <$> _cfWrapStrategy,+                  ("numberFormat" .=) <$> _cfNumberFormat,+                  ("textDirection" .=) <$> _cfTextDirection,+                  ("textFormat" .=) <$> _cfTextFormat,+                  ("horizontalAlignment" .=) <$>+                    _cfHorizontalAlignment,+                  ("padding" .=) <$> _cfPadding])++-- | Deletes the protected range with the given ID.+--+-- /See:/ 'deleteProtectedRangeRequest' smart constructor.+newtype DeleteProtectedRangeRequest = DeleteProtectedRangeRequest'+    { _dprrProtectedRangeId :: Maybe (Textual Int32)+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'DeleteProtectedRangeRequest' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'dprrProtectedRangeId'+deleteProtectedRangeRequest+    :: DeleteProtectedRangeRequest+deleteProtectedRangeRequest =+    DeleteProtectedRangeRequest'+    { _dprrProtectedRangeId = Nothing+    }++-- | The ID of the protected range to delete.+dprrProtectedRangeId :: Lens' DeleteProtectedRangeRequest (Maybe Int32)+dprrProtectedRangeId+  = lens _dprrProtectedRangeId+      (\ s a -> s{_dprrProtectedRangeId = a})+      . mapping _Coerce++instance FromJSON DeleteProtectedRangeRequest where+        parseJSON+          = withObject "DeleteProtectedRangeRequest"+              (\ o ->+                 DeleteProtectedRangeRequest' <$>+                   (o .:? "protectedRangeId"))++instance ToJSON DeleteProtectedRangeRequest where+        toJSON DeleteProtectedRangeRequest'{..}+          = object+              (catMaybes+                 [("protectedRangeId" .=) <$> _dprrProtectedRangeId])++-- | Updates an existing protected range with the specified protectedRangeId.+--+-- /See:/ 'updateProtectedRangeRequest' smart constructor.+data UpdateProtectedRangeRequest = UpdateProtectedRangeRequest'+    { _uprrProtectedRange :: !(Maybe ProtectedRange)+    , _uprrFields         :: !(Maybe FieldMask)+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'UpdateProtectedRangeRequest' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'uprrProtectedRange'+--+-- * 'uprrFields'+updateProtectedRangeRequest+    :: UpdateProtectedRangeRequest+updateProtectedRangeRequest =+    UpdateProtectedRangeRequest'+    { _uprrProtectedRange = Nothing+    , _uprrFields = Nothing+    }++-- | The protected range to update with the new properties. If a nonzero+-- protectedRangeId is specified, the protected range will use that ID. (It+-- is an error to specify the ID of a protected range that already exists.)+uprrProtectedRange :: Lens' UpdateProtectedRangeRequest (Maybe ProtectedRange)+uprrProtectedRange+  = lens _uprrProtectedRange+      (\ s a -> s{_uprrProtectedRange = a})++-- | The fields that should be updated. At least one field must be specified.+-- The root \`protectedRange\` is implied and should not be specified. A+-- single \`\"*\"\` can be used as short-hand for listing every field.+uprrFields :: Lens' UpdateProtectedRangeRequest (Maybe FieldMask)+uprrFields+  = lens _uprrFields (\ s a -> s{_uprrFields = a})++instance FromJSON UpdateProtectedRangeRequest where+        parseJSON+          = withObject "UpdateProtectedRangeRequest"+              (\ o ->+                 UpdateProtectedRangeRequest' <$>+                   (o .:? "protectedRange") <*> (o .:? "fields"))++instance ToJSON UpdateProtectedRangeRequest where+        toJSON UpdateProtectedRangeRequest'{..}+          = object+              (catMaybes+                 [("protectedRange" .=) <$> _uprrProtectedRange,+                  ("fields" .=) <$> _uprrFields])++-- | The result of adding a sheet.+--+-- /See:/ 'addSheetResponse' smart constructor.+newtype AddSheetResponse = AddSheetResponse'+    { _aProperties :: Maybe SheetProperties+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'AddSheetResponse' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'aProperties'+addSheetResponse+    :: AddSheetResponse+addSheetResponse =+    AddSheetResponse'+    { _aProperties = Nothing+    }++-- | The properties of the newly added sheet.+aProperties :: Lens' AddSheetResponse (Maybe SheetProperties)+aProperties+  = lens _aProperties (\ s a -> s{_aProperties = a})++instance FromJSON AddSheetResponse where+        parseJSON+          = withObject "AddSheetResponse"+              (\ o -> AddSheetResponse' <$> (o .:? "properties"))++instance ToJSON AddSheetResponse where+        toJSON AddSheetResponse'{..}+          = object+              (catMaybes [("properties" .=) <$> _aProperties])++-- | A protected range.+--+-- /See:/ 'protectedRange' smart constructor.+data ProtectedRange = ProtectedRange'+    { _prProtectedRangeId      :: !(Maybe (Textual Int32))+    , _prWarningOnly           :: !(Maybe Bool)+    , _prNamedRangeId          :: !(Maybe Text)+    , _prRange                 :: !(Maybe GridRange)+    , _prEditors               :: !(Maybe Editors)+    , _prUnprotectedRanges     :: !(Maybe [GridRange])+    , _prRequestingUserCanEdit :: !(Maybe Bool)+    , _prDescription           :: !(Maybe Text)+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'ProtectedRange' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'prProtectedRangeId'+--+-- * 'prWarningOnly'+--+-- * 'prNamedRangeId'+--+-- * 'prRange'+--+-- * 'prEditors'+--+-- * 'prUnprotectedRanges'+--+-- * 'prRequestingUserCanEdit'+--+-- * 'prDescription'+protectedRange+    :: ProtectedRange+protectedRange =+    ProtectedRange'+    { _prProtectedRangeId = Nothing+    , _prWarningOnly = Nothing+    , _prNamedRangeId = Nothing+    , _prRange = Nothing+    , _prEditors = Nothing+    , _prUnprotectedRanges = Nothing+    , _prRequestingUserCanEdit = Nothing+    , _prDescription = Nothing+    }++-- | The ID of the protected range. This field is read-only.+prProtectedRangeId :: Lens' ProtectedRange (Maybe Int32)+prProtectedRangeId+  = lens _prProtectedRangeId+      (\ s a -> s{_prProtectedRangeId = a})+      . mapping _Coerce++-- | True if this protected range will show a warning when editing.+-- Warning-based protection means that every user can edit data in the+-- protected range, except editing will prompt a warning asking the user to+-- confirm the edit. When writing: if this field is true, then editors is+-- ignored. Additionally, if this field is changed from true to false and+-- the \`editors\` field is not set (nor included in the field mask), then+-- the editors will be set to all the editors in the document.+prWarningOnly :: Lens' ProtectedRange (Maybe Bool)+prWarningOnly+  = lens _prWarningOnly+      (\ s a -> s{_prWarningOnly = a})++-- | The named range this protected range is backed by, if any. When writing,+-- only one of range or named_range_id may be set.+prNamedRangeId :: Lens' ProtectedRange (Maybe Text)+prNamedRangeId+  = lens _prNamedRangeId+      (\ s a -> s{_prNamedRangeId = a})++-- | The range that is being protected. The range may be fully unbounded, in+-- which case this is considered a protected sheet. When writing, only one+-- of range or named_range_id may be set.+prRange :: Lens' ProtectedRange (Maybe GridRange)+prRange = lens _prRange (\ s a -> s{_prRange = a})++-- | The users and groups with edit access to the protected range. This field+-- is only visible to users with edit access to the protected range and the+-- document. Editors are not supported with warning_only protection.+prEditors :: Lens' ProtectedRange (Maybe Editors)+prEditors+  = lens _prEditors (\ s a -> s{_prEditors = a})++-- | The list of unprotected ranges within a protected sheet. Unprotected+-- ranges are only supported on protected sheets.+prUnprotectedRanges :: Lens' ProtectedRange [GridRange]+prUnprotectedRanges+  = lens _prUnprotectedRanges+      (\ s a -> s{_prUnprotectedRanges = a})+      . _Default+      . _Coerce++-- | True if the user who requested this protected range can edit the+-- protected area. This field is read-only.+prRequestingUserCanEdit :: Lens' ProtectedRange (Maybe Bool)+prRequestingUserCanEdit+  = lens _prRequestingUserCanEdit+      (\ s a -> s{_prRequestingUserCanEdit = a})++-- | The description of this protected range.+prDescription :: Lens' ProtectedRange (Maybe Text)+prDescription+  = lens _prDescription+      (\ s a -> s{_prDescription = a})++instance FromJSON ProtectedRange where+        parseJSON+          = withObject "ProtectedRange"+              (\ o ->+                 ProtectedRange' <$>+                   (o .:? "protectedRangeId") <*> (o .:? "warningOnly")+                     <*> (o .:? "namedRangeId")+                     <*> (o .:? "range")+                     <*> (o .:? "editors")+                     <*> (o .:? "unprotectedRanges" .!= mempty)+                     <*> (o .:? "requestingUserCanEdit")+                     <*> (o .:? "description"))++instance ToJSON ProtectedRange where+        toJSON ProtectedRange'{..}+          = object+              (catMaybes+                 [("protectedRangeId" .=) <$> _prProtectedRangeId,+                  ("warningOnly" .=) <$> _prWarningOnly,+                  ("namedRangeId" .=) <$> _prNamedRangeId,+                  ("range" .=) <$> _prRange,+                  ("editors" .=) <$> _prEditors,+                  ("unprotectedRanges" .=) <$> _prUnprotectedRanges,+                  ("requestingUserCanEdit" .=) <$>+                    _prRequestingUserCanEdit,+                  ("description" .=) <$> _prDescription])++-- | An axis of the chart. A chart may not have more than one axis per axis+-- position.+--+-- /See:/ 'basicChartAxis' smart constructor.+data BasicChartAxis = BasicChartAxis'+    { _bcaFormat   :: !(Maybe TextFormat)+    , _bcaTitle    :: !(Maybe Text)+    , _bcaPosition :: !(Maybe BasicChartAxisPosition)+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'BasicChartAxis' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'bcaFormat'+--+-- * 'bcaTitle'+--+-- * 'bcaPosition'+basicChartAxis+    :: BasicChartAxis+basicChartAxis =+    BasicChartAxis'+    { _bcaFormat = Nothing+    , _bcaTitle = Nothing+    , _bcaPosition = Nothing+    }++-- | The format of the title. Only valid if the axis is not associated with+-- the domain.+bcaFormat :: Lens' BasicChartAxis (Maybe TextFormat)+bcaFormat+  = lens _bcaFormat (\ s a -> s{_bcaFormat = a})++-- | The title of this axis. If set, this overrides any title inferred from+-- headers of the data.+bcaTitle :: Lens' BasicChartAxis (Maybe Text)+bcaTitle = lens _bcaTitle (\ s a -> s{_bcaTitle = a})++-- | The position of this axis.+bcaPosition :: Lens' BasicChartAxis (Maybe BasicChartAxisPosition)+bcaPosition+  = lens _bcaPosition (\ s a -> s{_bcaPosition = a})++instance FromJSON BasicChartAxis where+        parseJSON+          = withObject "BasicChartAxis"+              (\ o ->+                 BasicChartAxis' <$>+                   (o .:? "format") <*> (o .:? "title") <*>+                     (o .:? "position"))++instance ToJSON BasicChartAxis where+        toJSON BasicChartAxis'{..}+          = object+              (catMaybes+                 [("format" .=) <$> _bcaFormat,+                  ("title" .=) <$> _bcaTitle,+                  ("position" .=) <$> _bcaPosition])++-- | Data in the grid, as well as metadata about the dimensions.+--+-- /See:/ 'gridData' smart constructor.+data GridData = GridData'+    { _gdRowMetadata    :: !(Maybe [DimensionProperties])+    , _gdStartRow       :: !(Maybe (Textual Int32))+    , _gdRowData        :: !(Maybe [RowData])+    , _gdColumnMetadata :: !(Maybe [DimensionProperties])+    , _gdStartColumn    :: !(Maybe (Textual Int32))+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'GridData' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'gdRowMetadata'+--+-- * 'gdStartRow'+--+-- * 'gdRowData'+--+-- * 'gdColumnMetadata'+--+-- * 'gdStartColumn'+gridData+    :: GridData+gridData =+    GridData'+    { _gdRowMetadata = Nothing+    , _gdStartRow = Nothing+    , _gdRowData = Nothing+    , _gdColumnMetadata = Nothing+    , _gdStartColumn = Nothing+    }++-- | Metadata about the requested rows in the grid, starting with the row in+-- start_row.+gdRowMetadata :: Lens' GridData [DimensionProperties]+gdRowMetadata+  = lens _gdRowMetadata+      (\ s a -> s{_gdRowMetadata = a})+      . _Default+      . _Coerce++-- | The first row this GridData refers to, zero-based.+gdStartRow :: Lens' GridData (Maybe Int32)+gdStartRow+  = lens _gdStartRow (\ s a -> s{_gdStartRow = a}) .+      mapping _Coerce++-- | The data in the grid, one entry per row, starting with the row in+-- startRow. The values in RowData will correspond to columns starting at+-- start_column.+gdRowData :: Lens' GridData [RowData]+gdRowData+  = lens _gdRowData (\ s a -> s{_gdRowData = a}) .+      _Default+      . _Coerce++-- | Metadata about the requested columns in the grid, starting with the+-- column in start_column.+gdColumnMetadata :: Lens' GridData [DimensionProperties]+gdColumnMetadata+  = lens _gdColumnMetadata+      (\ s a -> s{_gdColumnMetadata = a})+      . _Default+      . _Coerce++-- | The first column this GridData refers to, zero-based.+gdStartColumn :: Lens' GridData (Maybe Int32)+gdStartColumn+  = lens _gdStartColumn+      (\ s a -> s{_gdStartColumn = a})+      . mapping _Coerce++instance FromJSON GridData where+        parseJSON+          = withObject "GridData"+              (\ o ->+                 GridData' <$>+                   (o .:? "rowMetadata" .!= mempty) <*>+                     (o .:? "startRow")+                     <*> (o .:? "rowData" .!= mempty)+                     <*> (o .:? "columnMetadata" .!= mempty)+                     <*> (o .:? "startColumn"))++instance ToJSON GridData where+        toJSON GridData'{..}+          = object+              (catMaybes+                 [("rowMetadata" .=) <$> _gdRowMetadata,+                  ("startRow" .=) <$> _gdStartRow,+                  ("rowData" .=) <$> _gdRowData,+                  ("columnMetadata" .=) <$> _gdColumnMetadata,+                  ("startColumn" .=) <$> _gdStartColumn])++-- | The number format of a cell.+--+-- /See:/ 'numberFormat' smart constructor.+data NumberFormat = NumberFormat'+    { _nfPattern :: !(Maybe Text)+    , _nfType    :: !(Maybe NumberFormatType)+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'NumberFormat' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'nfPattern'+--+-- * 'nfType'+numberFormat+    :: NumberFormat+numberFormat =+    NumberFormat'+    { _nfPattern = Nothing+    , _nfType = Nothing+    }++-- | Pattern string used for formatting. If not set, a default pattern based+-- on the user\'s locale will be used if necessary for the given type.+nfPattern :: Lens' NumberFormat (Maybe Text)+nfPattern+  = lens _nfPattern (\ s a -> s{_nfPattern = a})++-- | The type of the number format. When writing, this field must be set.+nfType :: Lens' NumberFormat (Maybe NumberFormatType)+nfType = lens _nfType (\ s a -> s{_nfType = a})++instance FromJSON NumberFormat where+        parseJSON+          = withObject "NumberFormat"+              (\ o ->+                 NumberFormat' <$>+                   (o .:? "pattern") <*> (o .:? "type"))++instance ToJSON NumberFormat where+        toJSON NumberFormat'{..}+          = object+              (catMaybes+                 [("pattern" .=) <$> _nfPattern,+                  ("type" .=) <$> _nfType])++-- | The reply for batch updating a spreadsheet.+--+-- /See:/ 'batchUpdateSpreadsheetResponse' smart constructor.+data BatchUpdateSpreadsheetResponse = BatchUpdateSpreadsheetResponse'+    { _busrSpreadsheetId :: !(Maybe Text)+    , _busrReplies       :: !(Maybe [Response])+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'BatchUpdateSpreadsheetResponse' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'busrSpreadsheetId'+--+-- * 'busrReplies'+batchUpdateSpreadsheetResponse+    :: BatchUpdateSpreadsheetResponse+batchUpdateSpreadsheetResponse =+    BatchUpdateSpreadsheetResponse'+    { _busrSpreadsheetId = Nothing+    , _busrReplies = Nothing+    }++-- | The spreadsheet the updates were applied to.+busrSpreadsheetId :: Lens' BatchUpdateSpreadsheetResponse (Maybe Text)+busrSpreadsheetId+  = lens _busrSpreadsheetId+      (\ s a -> s{_busrSpreadsheetId = a})++-- | The reply of the updates. This maps 1:1 with the updates, although+-- replies to some requests may be empty.+busrReplies :: Lens' BatchUpdateSpreadsheetResponse [Response]+busrReplies+  = lens _busrReplies (\ s a -> s{_busrReplies = a}) .+      _Default+      . _Coerce++instance FromJSON BatchUpdateSpreadsheetResponse+         where+        parseJSON+          = withObject "BatchUpdateSpreadsheetResponse"+              (\ o ->+                 BatchUpdateSpreadsheetResponse' <$>+                   (o .:? "spreadsheetId") <*>+                     (o .:? "replies" .!= mempty))++instance ToJSON BatchUpdateSpreadsheetResponse where+        toJSON BatchUpdateSpreadsheetResponse'{..}+          = object+              (catMaybes+                 [("spreadsheetId" .=) <$> _busrSpreadsheetId,+                  ("replies" .=) <$> _busrReplies])++-- | Sets a data validation rule to every cell in the range. To clear+-- validation in a range, call this with no rule specified.+--+-- /See:/ 'setDataValidationRequest' smart constructor.+data SetDataValidationRequest = SetDataValidationRequest'+    { _sdvrRule  :: !(Maybe DataValidationRule)+    , _sdvrRange :: !(Maybe GridRange)+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'SetDataValidationRequest' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'sdvrRule'+--+-- * 'sdvrRange'+setDataValidationRequest+    :: SetDataValidationRequest+setDataValidationRequest =+    SetDataValidationRequest'+    { _sdvrRule = Nothing+    , _sdvrRange = Nothing+    }++-- | The data validation rule to set on each cell in the range, or empty to+-- clear the data validation in the range.+sdvrRule :: Lens' SetDataValidationRequest (Maybe DataValidationRule)+sdvrRule = lens _sdvrRule (\ s a -> s{_sdvrRule = a})++-- | The range the data validation rule should apply to.+sdvrRange :: Lens' SetDataValidationRequest (Maybe GridRange)+sdvrRange+  = lens _sdvrRange (\ s a -> s{_sdvrRange = a})++instance FromJSON SetDataValidationRequest where+        parseJSON+          = withObject "SetDataValidationRequest"+              (\ o ->+                 SetDataValidationRequest' <$>+                   (o .:? "rule") <*> (o .:? "range"))++instance ToJSON SetDataValidationRequest where+        toJSON SetDataValidationRequest'{..}+          = object+              (catMaybes+                 [("rule" .=) <$> _sdvrRule,+                  ("range" .=) <$> _sdvrRange])++-- | Duplicates a particular filter view.+--+-- /See:/ 'duplicateFilterViewRequest' smart constructor.+newtype DuplicateFilterViewRequest = DuplicateFilterViewRequest'+    { _dFilterId :: Maybe (Textual Int32)+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'DuplicateFilterViewRequest' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'dFilterId'+duplicateFilterViewRequest+    :: DuplicateFilterViewRequest+duplicateFilterViewRequest =+    DuplicateFilterViewRequest'+    { _dFilterId = Nothing+    }++-- | The ID of the filter being duplicated.+dFilterId :: Lens' DuplicateFilterViewRequest (Maybe Int32)+dFilterId+  = lens _dFilterId (\ s a -> s{_dFilterId = a}) .+      mapping _Coerce++instance FromJSON DuplicateFilterViewRequest where+        parseJSON+          = withObject "DuplicateFilterViewRequest"+              (\ o ->+                 DuplicateFilterViewRequest' <$> (o .:? "filterId"))++instance ToJSON DuplicateFilterViewRequest where+        toJSON DuplicateFilterViewRequest'{..}+          = object (catMaybes [("filterId" .=) <$> _dFilterId])++-- | A single grouping (either row or column) in a pivot table.+--+-- /See:/ 'pivotGroup' smart constructor.+data PivotGroup = PivotGroup'+    { _pgValueMetadata      :: !(Maybe [PivotGroupValueMetadata])+    , _pgSourceColumnOffSet :: !(Maybe (Textual Int32))+    , _pgSortOrder          :: !(Maybe PivotGroupSortOrder)+    , _pgShowTotals         :: !(Maybe Bool)+    , _pgValueBucket        :: !(Maybe PivotGroupSortValueBucket)+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'PivotGroup' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'pgValueMetadata'+--+-- * 'pgSourceColumnOffSet'+--+-- * 'pgSortOrder'+--+-- * 'pgShowTotals'+--+-- * 'pgValueBucket'+pivotGroup+    :: PivotGroup+pivotGroup =+    PivotGroup'+    { _pgValueMetadata = Nothing+    , _pgSourceColumnOffSet = Nothing+    , _pgSortOrder = Nothing+    , _pgShowTotals = Nothing+    , _pgValueBucket = Nothing+    }++-- | Metadata about values in the grouping.+pgValueMetadata :: Lens' PivotGroup [PivotGroupValueMetadata]+pgValueMetadata+  = lens _pgValueMetadata+      (\ s a -> s{_pgValueMetadata = a})+      . _Default+      . _Coerce++-- | The column offset of the source range that this grouping is based on.+-- For example, if the source was \`C10:E15\`, a \`sourceColumnOffset\` of+-- \`0\` means this group refers to column \`C\`, whereas the offset \`1\`+-- would refer to column \`D\`.+pgSourceColumnOffSet :: Lens' PivotGroup (Maybe Int32)+pgSourceColumnOffSet+  = lens _pgSourceColumnOffSet+      (\ s a -> s{_pgSourceColumnOffSet = a})+      . mapping _Coerce++-- | The order the values in this group should be sorted.+pgSortOrder :: Lens' PivotGroup (Maybe PivotGroupSortOrder)+pgSortOrder+  = lens _pgSortOrder (\ s a -> s{_pgSortOrder = a})++-- | True if the pivot table should include the totals for this grouping.+pgShowTotals :: Lens' PivotGroup (Maybe Bool)+pgShowTotals+  = lens _pgShowTotals (\ s a -> s{_pgShowTotals = a})++-- | The bucket of the opposite pivot group to sort by. If not specified,+-- sorting is alphabetical by this group\'s values.+pgValueBucket :: Lens' PivotGroup (Maybe PivotGroupSortValueBucket)+pgValueBucket+  = lens _pgValueBucket+      (\ s a -> s{_pgValueBucket = a})++instance FromJSON PivotGroup where+        parseJSON+          = withObject "PivotGroup"+              (\ o ->+                 PivotGroup' <$>+                   (o .:? "valueMetadata" .!= mempty) <*>+                     (o .:? "sourceColumnOffset")+                     <*> (o .:? "sortOrder")+                     <*> (o .:? "showTotals")+                     <*> (o .:? "valueBucket"))++instance ToJSON PivotGroup where+        toJSON PivotGroup'{..}+          = object+              (catMaybes+                 [("valueMetadata" .=) <$> _pgValueMetadata,+                  ("sourceColumnOffset" .=) <$> _pgSourceColumnOffSet,+                  ("sortOrder" .=) <$> _pgSortOrder,+                  ("showTotals" .=) <$> _pgShowTotals,+                  ("valueBucket" .=) <$> _pgValueBucket])++-- | A rule describing a conditional format.+--+-- /See:/ 'conditionalFormatRule' smart constructor.+data ConditionalFormatRule = ConditionalFormatRule'+    { _cfrBooleanRule  :: !(Maybe BooleanRule)+    , _cfrGradientRule :: !(Maybe GradientRule)+    , _cfrRanges       :: !(Maybe [GridRange])+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'ConditionalFormatRule' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'cfrBooleanRule'+--+-- * 'cfrGradientRule'+--+-- * 'cfrRanges'+conditionalFormatRule+    :: ConditionalFormatRule+conditionalFormatRule =+    ConditionalFormatRule'+    { _cfrBooleanRule = Nothing+    , _cfrGradientRule = Nothing+    , _cfrRanges = Nothing+    }++-- | The formatting is either \"on\" or \"off\" according to the rule.+cfrBooleanRule :: Lens' ConditionalFormatRule (Maybe BooleanRule)+cfrBooleanRule+  = lens _cfrBooleanRule+      (\ s a -> s{_cfrBooleanRule = a})++-- | The formatting will vary based on the gradients in the rule.+cfrGradientRule :: Lens' ConditionalFormatRule (Maybe GradientRule)+cfrGradientRule+  = lens _cfrGradientRule+      (\ s a -> s{_cfrGradientRule = a})++-- | The ranges that will be formatted if the condition is true. All the+-- ranges must be on the same grid.+cfrRanges :: Lens' ConditionalFormatRule [GridRange]+cfrRanges+  = lens _cfrRanges (\ s a -> s{_cfrRanges = a}) .+      _Default+      . _Coerce++instance FromJSON ConditionalFormatRule where+        parseJSON+          = withObject "ConditionalFormatRule"+              (\ o ->+                 ConditionalFormatRule' <$>+                   (o .:? "booleanRule") <*> (o .:? "gradientRule") <*>+                     (o .:? "ranges" .!= mempty))++instance ToJSON ConditionalFormatRule where+        toJSON ConditionalFormatRule'{..}+          = object+              (catMaybes+                 [("booleanRule" .=) <$> _cfrBooleanRule,+                  ("gradientRule" .=) <$> _cfrGradientRule,+                  ("ranges" .=) <$> _cfrRanges])++-- | The specification for a basic chart. See BasicChartType for the list of+-- charts this supports.+--+-- /See:/ 'basicChartSpec' smart constructor.+data BasicChartSpec = BasicChartSpec'+    { _bHeaderCount    :: !(Maybe (Textual Int32))+    , _bLegendPosition :: !(Maybe BasicChartSpecLegendPosition)+    , _bSeries         :: !(Maybe [BasicChartSeries])+    , _bChartType      :: !(Maybe BasicChartSpecChartType)+    , _bDomains        :: !(Maybe [BasicChartDomain])+    , _bAxis           :: !(Maybe [BasicChartAxis])+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'BasicChartSpec' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'bHeaderCount'+--+-- * 'bLegendPosition'+--+-- * 'bSeries'+--+-- * 'bChartType'+--+-- * 'bDomains'+--+-- * 'bAxis'+basicChartSpec+    :: BasicChartSpec+basicChartSpec =+    BasicChartSpec'+    { _bHeaderCount = Nothing+    , _bLegendPosition = Nothing+    , _bSeries = Nothing+    , _bChartType = Nothing+    , _bDomains = Nothing+    , _bAxis = Nothing+    }++-- | The number of rows or columns in the data that are \"headers\". If not+-- set, Google Sheets will guess how many rows are headers based on the+-- data. (Note that BasicChartAxis.title may override the axis title+-- inferred from the header values.)+bHeaderCount :: Lens' BasicChartSpec (Maybe Int32)+bHeaderCount+  = lens _bHeaderCount (\ s a -> s{_bHeaderCount = a})+      . mapping _Coerce++-- | The position of the chart legend.+bLegendPosition :: Lens' BasicChartSpec (Maybe BasicChartSpecLegendPosition)+bLegendPosition+  = lens _bLegendPosition+      (\ s a -> s{_bLegendPosition = a})++-- | The data this chart is visualizing.+bSeries :: Lens' BasicChartSpec [BasicChartSeries]+bSeries+  = lens _bSeries (\ s a -> s{_bSeries = a}) . _Default+      . _Coerce++-- | The type of the chart.+bChartType :: Lens' BasicChartSpec (Maybe BasicChartSpecChartType)+bChartType+  = lens _bChartType (\ s a -> s{_bChartType = a})++-- | The domain of data this is charting. Only a single domain is currently+-- supported.+bDomains :: Lens' BasicChartSpec [BasicChartDomain]+bDomains+  = lens _bDomains (\ s a -> s{_bDomains = a}) .+      _Default+      . _Coerce++-- | The axis on the chart.+bAxis :: Lens' BasicChartSpec [BasicChartAxis]+bAxis+  = lens _bAxis (\ s a -> s{_bAxis = a}) . _Default .+      _Coerce++instance FromJSON BasicChartSpec where+        parseJSON+          = withObject "BasicChartSpec"+              (\ o ->+                 BasicChartSpec' <$>+                   (o .:? "headerCount") <*> (o .:? "legendPosition")+                     <*> (o .:? "series" .!= mempty)+                     <*> (o .:? "chartType")+                     <*> (o .:? "domains" .!= mempty)+                     <*> (o .:? "axis" .!= mempty))++instance ToJSON BasicChartSpec where+        toJSON BasicChartSpec'{..}+          = object+              (catMaybes+                 [("headerCount" .=) <$> _bHeaderCount,+                  ("legendPosition" .=) <$> _bLegendPosition,+                  ("series" .=) <$> _bSeries,+                  ("chartType" .=) <$> _bChartType,+                  ("domains" .=) <$> _bDomains,+                  ("axis" .=) <$> _bAxis])++-- | Adds a new conditional format rule at the given index. All subsequent+-- rules\' indexes are incremented.+--+-- /See:/ 'addConditionalFormatRuleRequest' smart constructor.+data AddConditionalFormatRuleRequest = AddConditionalFormatRuleRequest'+    { _acfrrRule  :: !(Maybe ConditionalFormatRule)+    , _acfrrIndex :: !(Maybe (Textual Int32))+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'AddConditionalFormatRuleRequest' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'acfrrRule'+--+-- * 'acfrrIndex'+addConditionalFormatRuleRequest+    :: AddConditionalFormatRuleRequest+addConditionalFormatRuleRequest =+    AddConditionalFormatRuleRequest'+    { _acfrrRule = Nothing+    , _acfrrIndex = Nothing+    }++-- | The rule to add.+acfrrRule :: Lens' AddConditionalFormatRuleRequest (Maybe ConditionalFormatRule)+acfrrRule+  = lens _acfrrRule (\ s a -> s{_acfrrRule = a})++-- | The zero-based index where the rule should be inserted.+acfrrIndex :: Lens' AddConditionalFormatRuleRequest (Maybe Int32)+acfrrIndex+  = lens _acfrrIndex (\ s a -> s{_acfrrIndex = a}) .+      mapping _Coerce++instance FromJSON AddConditionalFormatRuleRequest+         where+        parseJSON+          = withObject "AddConditionalFormatRuleRequest"+              (\ o ->+                 AddConditionalFormatRuleRequest' <$>+                   (o .:? "rule") <*> (o .:? "index"))++instance ToJSON AddConditionalFormatRuleRequest where+        toJSON AddConditionalFormatRuleRequest'{..}+          = object+              (catMaybes+                 [("rule" .=) <$> _acfrrRule,+                  ("index" .=) <$> _acfrrIndex])++-- | The result of duplicating a sheet.+--+-- /See:/ 'duplicateSheetResponse' smart constructor.+newtype DuplicateSheetResponse = DuplicateSheetResponse'+    { _dsrProperties :: Maybe SheetProperties+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'DuplicateSheetResponse' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'dsrProperties'+duplicateSheetResponse+    :: DuplicateSheetResponse+duplicateSheetResponse =+    DuplicateSheetResponse'+    { _dsrProperties = Nothing+    }++-- | The properties of the duplicate sheet.+dsrProperties :: Lens' DuplicateSheetResponse (Maybe SheetProperties)+dsrProperties+  = lens _dsrProperties+      (\ s a -> s{_dsrProperties = a})++instance FromJSON DuplicateSheetResponse where+        parseJSON+          = withObject "DuplicateSheetResponse"+              (\ o ->+                 DuplicateSheetResponse' <$> (o .:? "properties"))++instance ToJSON DuplicateSheetResponse where+        toJSON DuplicateSheetResponse'{..}+          = object+              (catMaybes [("properties" .=) <$> _dsrProperties])++-- | The format of a run of text in a cell. Absent values indicate that the+-- field isn\'t specified.+--+-- /See:/ 'textFormat' smart constructor.+data TextFormat = TextFormat'+    { _tfFontFamily      :: !(Maybe Text)+    , _tfForegRoundColor :: !(Maybe Color)+    , _tfFontSize        :: !(Maybe (Textual Int32))+    , _tfUnderline       :: !(Maybe Bool)+    , _tfItalic          :: !(Maybe Bool)+    , _tfBold            :: !(Maybe Bool)+    , _tfStrikethrough   :: !(Maybe Bool)+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'TextFormat' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'tfFontFamily'+--+-- * 'tfForegRoundColor'+--+-- * 'tfFontSize'+--+-- * 'tfUnderline'+--+-- * 'tfItalic'+--+-- * 'tfBold'+--+-- * 'tfStrikethrough'+textFormat+    :: TextFormat+textFormat =+    TextFormat'+    { _tfFontFamily = Nothing+    , _tfForegRoundColor = Nothing+    , _tfFontSize = Nothing+    , _tfUnderline = Nothing+    , _tfItalic = Nothing+    , _tfBold = Nothing+    , _tfStrikethrough = Nothing+    }++-- | The font family.+tfFontFamily :: Lens' TextFormat (Maybe Text)+tfFontFamily+  = lens _tfFontFamily (\ s a -> s{_tfFontFamily = a})++-- | The foreground color of the text.+tfForegRoundColor :: Lens' TextFormat (Maybe Color)+tfForegRoundColor+  = lens _tfForegRoundColor+      (\ s a -> s{_tfForegRoundColor = a})++-- | The size of the font.+tfFontSize :: Lens' TextFormat (Maybe Int32)+tfFontSize+  = lens _tfFontSize (\ s a -> s{_tfFontSize = a}) .+      mapping _Coerce++-- | True if the text is underlined.+tfUnderline :: Lens' TextFormat (Maybe Bool)+tfUnderline+  = lens _tfUnderline (\ s a -> s{_tfUnderline = a})++-- | True if the text is italicized.+tfItalic :: Lens' TextFormat (Maybe Bool)+tfItalic = lens _tfItalic (\ s a -> s{_tfItalic = a})++-- | True if the text is bold.+tfBold :: Lens' TextFormat (Maybe Bool)+tfBold = lens _tfBold (\ s a -> s{_tfBold = a})++-- | True if the text has a strikethrough.+tfStrikethrough :: Lens' TextFormat (Maybe Bool)+tfStrikethrough+  = lens _tfStrikethrough+      (\ s a -> s{_tfStrikethrough = a})++instance FromJSON TextFormat where+        parseJSON+          = withObject "TextFormat"+              (\ o ->+                 TextFormat' <$>+                   (o .:? "fontFamily") <*> (o .:? "foregroundColor")+                     <*> (o .:? "fontSize")+                     <*> (o .:? "underline")+                     <*> (o .:? "italic")+                     <*> (o .:? "bold")+                     <*> (o .:? "strikethrough"))++instance ToJSON TextFormat where+        toJSON TextFormat'{..}+          = object+              (catMaybes+                 [("fontFamily" .=) <$> _tfFontFamily,+                  ("foregroundColor" .=) <$> _tfForegRoundColor,+                  ("fontSize" .=) <$> _tfFontSize,+                  ("underline" .=) <$> _tfUnderline,+                  ("italic" .=) <$> _tfItalic, ("bold" .=) <$> _tfBold,+                  ("strikethrough" .=) <$> _tfStrikethrough])++-- | The domain of a chart. For example, if charting stock prices over time,+-- this would be the date.+--+-- /See:/ 'basicChartDomain' smart constructor.+newtype BasicChartDomain = BasicChartDomain'+    { _bcdDomain :: Maybe ChartData+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'BasicChartDomain' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'bcdDomain'+basicChartDomain+    :: BasicChartDomain+basicChartDomain =+    BasicChartDomain'+    { _bcdDomain = Nothing+    }++-- | The data of the domain. For example, if charting stock prices over time,+-- this is the data representing the dates.+bcdDomain :: Lens' BasicChartDomain (Maybe ChartData)+bcdDomain+  = lens _bcdDomain (\ s a -> s{_bcdDomain = a})++instance FromJSON BasicChartDomain where+        parseJSON+          = withObject "BasicChartDomain"+              (\ o -> BasicChartDomain' <$> (o .:? "domain"))++instance ToJSON BasicChartDomain where+        toJSON BasicChartDomain'{..}+          = object (catMaybes [("domain" .=) <$> _bcdDomain])++-- | The amount of padding around the cell, in pixels. When updating padding,+-- every field must be specified.+--+-- /See:/ 'padding' smart constructor.+data Padding = Padding'+    { _pBottom :: !(Maybe (Textual Int32))+    , _pLeft   :: !(Maybe (Textual Int32))+    , _pRight  :: !(Maybe (Textual Int32))+    , _pTop    :: !(Maybe (Textual Int32))+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'Padding' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'pBottom'+--+-- * 'pLeft'+--+-- * 'pRight'+--+-- * 'pTop'+padding+    :: Padding+padding =+    Padding'+    { _pBottom = Nothing+    , _pLeft = Nothing+    , _pRight = Nothing+    , _pTop = Nothing+    }++-- | The bottom padding of the cell.+pBottom :: Lens' Padding (Maybe Int32)+pBottom+  = lens _pBottom (\ s a -> s{_pBottom = a}) .+      mapping _Coerce++-- | The left padding of the cell.+pLeft :: Lens' Padding (Maybe Int32)+pLeft+  = lens _pLeft (\ s a -> s{_pLeft = a}) .+      mapping _Coerce++-- | The right padding of the cell.+pRight :: Lens' Padding (Maybe Int32)+pRight+  = lens _pRight (\ s a -> s{_pRight = a}) .+      mapping _Coerce++-- | The top padding of the cell.+pTop :: Lens' Padding (Maybe Int32)+pTop+  = lens _pTop (\ s a -> s{_pTop = a}) .+      mapping _Coerce++instance FromJSON Padding where+        parseJSON+          = withObject "Padding"+              (\ o ->+                 Padding' <$>+                   (o .:? "bottom") <*> (o .:? "left") <*>+                     (o .:? "right")+                     <*> (o .:? "top"))++instance ToJSON Padding where+        toJSON Padding'{..}+          = object+              (catMaybes+                 [("bottom" .=) <$> _pBottom, ("left" .=) <$> _pLeft,+                  ("right" .=) <$> _pRight, ("top" .=) <$> _pTop])++-- | The specifications of a chart.+--+-- /See:/ 'chartSpec' smart constructor.+data ChartSpec = ChartSpec'+    { _csTitle                   :: !(Maybe Text)+    , _csPieChart                :: !(Maybe PieChartSpec)+    , _csBasicChart              :: !(Maybe BasicChartSpec)+    , _csHiddenDimensionStrategy :: !(Maybe ChartSpecHiddenDimensionStrategy)+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'ChartSpec' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'csTitle'+--+-- * 'csPieChart'+--+-- * 'csBasicChart'+--+-- * 'csHiddenDimensionStrategy'+chartSpec+    :: ChartSpec+chartSpec =+    ChartSpec'+    { _csTitle = Nothing+    , _csPieChart = Nothing+    , _csBasicChart = Nothing+    , _csHiddenDimensionStrategy = Nothing+    }++-- | The title of the chart.+csTitle :: Lens' ChartSpec (Maybe Text)+csTitle = lens _csTitle (\ s a -> s{_csTitle = a})++-- | A pie chart specification.+csPieChart :: Lens' ChartSpec (Maybe PieChartSpec)+csPieChart+  = lens _csPieChart (\ s a -> s{_csPieChart = a})++-- | A basic chart specification, can be one of many kinds of charts. See+-- BasicChartType for the list of all charts this supports.+csBasicChart :: Lens' ChartSpec (Maybe BasicChartSpec)+csBasicChart+  = lens _csBasicChart (\ s a -> s{_csBasicChart = a})++-- | Determines how the charts will use hidden rows or columns.+csHiddenDimensionStrategy :: Lens' ChartSpec (Maybe ChartSpecHiddenDimensionStrategy)+csHiddenDimensionStrategy+  = lens _csHiddenDimensionStrategy+      (\ s a -> s{_csHiddenDimensionStrategy = a})++instance FromJSON ChartSpec where+        parseJSON+          = withObject "ChartSpec"+              (\ o ->+                 ChartSpec' <$>+                   (o .:? "title") <*> (o .:? "pieChart") <*>+                     (o .:? "basicChart")+                     <*> (o .:? "hiddenDimensionStrategy"))++instance ToJSON ChartSpec where+        toJSON ChartSpec'{..}+          = object+              (catMaybes+                 [("title" .=) <$> _csTitle,+                  ("pieChart" .=) <$> _csPieChart,+                  ("basicChart" .=) <$> _csBasicChart,+                  ("hiddenDimensionStrategy" .=) <$>+                    _csHiddenDimensionStrategy])++-- | Properties about a dimension.+--+-- /See:/ 'dimensionProperties' smart constructor.+data DimensionProperties = DimensionProperties'+    { _dpHiddenByFilter :: !(Maybe Bool)+    , _dpPixelSize      :: !(Maybe (Textual Int32))+    , _dpHiddenByUser   :: !(Maybe Bool)+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'DimensionProperties' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'dpHiddenByFilter'+--+-- * 'dpPixelSize'+--+-- * 'dpHiddenByUser'+dimensionProperties+    :: DimensionProperties+dimensionProperties =+    DimensionProperties'+    { _dpHiddenByFilter = Nothing+    , _dpPixelSize = Nothing+    , _dpHiddenByUser = Nothing+    }++-- | True if this dimension is being filtered. This field is read-only.+dpHiddenByFilter :: Lens' DimensionProperties (Maybe Bool)+dpHiddenByFilter+  = lens _dpHiddenByFilter+      (\ s a -> s{_dpHiddenByFilter = a})++-- | The height (if a row) or width (if a column) of the dimension in pixels.+dpPixelSize :: Lens' DimensionProperties (Maybe Int32)+dpPixelSize+  = lens _dpPixelSize (\ s a -> s{_dpPixelSize = a}) .+      mapping _Coerce++-- | True if this dimension is explicitly hidden.+dpHiddenByUser :: Lens' DimensionProperties (Maybe Bool)+dpHiddenByUser+  = lens _dpHiddenByUser+      (\ s a -> s{_dpHiddenByUser = a})++instance FromJSON DimensionProperties where+        parseJSON+          = withObject "DimensionProperties"+              (\ o ->+                 DimensionProperties' <$>+                   (o .:? "hiddenByFilter") <*> (o .:? "pixelSize") <*>+                     (o .:? "hiddenByUser"))++instance ToJSON DimensionProperties where+        toJSON DimensionProperties'{..}+          = object+              (catMaybes+                 [("hiddenByFilter" .=) <$> _dpHiddenByFilter,+                  ("pixelSize" .=) <$> _dpPixelSize,+                  ("hiddenByUser" .=) <$> _dpHiddenByUser])++-- | The response when retrieving more than one range of values in a+-- spreadsheet.+--+-- /See:/ 'batchGetValuesResponse' smart constructor.+data BatchGetValuesResponse = BatchGetValuesResponse'+    { _bgvrSpreadsheetId :: !(Maybe Text)+    , _bgvrValueRanges   :: !(Maybe [ValueRange])+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'BatchGetValuesResponse' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'bgvrSpreadsheetId'+--+-- * 'bgvrValueRanges'+batchGetValuesResponse+    :: BatchGetValuesResponse+batchGetValuesResponse =+    BatchGetValuesResponse'+    { _bgvrSpreadsheetId = Nothing+    , _bgvrValueRanges = Nothing+    }++-- | The ID of the spreadsheet the data was retrieved from.+bgvrSpreadsheetId :: Lens' BatchGetValuesResponse (Maybe Text)+bgvrSpreadsheetId+  = lens _bgvrSpreadsheetId+      (\ s a -> s{_bgvrSpreadsheetId = a})++-- | The requested values. The order of the ValueRanges is the same as the+-- order of the requested ranges.+bgvrValueRanges :: Lens' BatchGetValuesResponse [ValueRange]+bgvrValueRanges+  = lens _bgvrValueRanges+      (\ s a -> s{_bgvrValueRanges = a})+      . _Default+      . _Coerce++instance FromJSON BatchGetValuesResponse where+        parseJSON+          = withObject "BatchGetValuesResponse"+              (\ o ->+                 BatchGetValuesResponse' <$>+                   (o .:? "spreadsheetId") <*>+                     (o .:? "valueRanges" .!= mempty))++instance ToJSON BatchGetValuesResponse where+        toJSON BatchGetValuesResponse'{..}+          = object+              (catMaybes+                 [("spreadsheetId" .=) <$> _bgvrSpreadsheetId,+                  ("valueRanges" .=) <$> _bgvrValueRanges])++-- | A single kind of update to apply to a spreadsheet.+--+-- /See:/ 'request'' smart constructor.+data Request' = Request''+    { _reqAddFilterView                :: !(Maybe AddFilterViewRequest)+    , _reqDeleteProtectedRange         :: !(Maybe DeleteProtectedRangeRequest)+    , _reqUpdateProtectedRange         :: !(Maybe UpdateProtectedRangeRequest)+    , _reqUpdateCells                  :: !(Maybe UpdateCellsRequest)+    , _reqDuplicateFilterView          :: !(Maybe DuplicateFilterViewRequest)+    , _reqAddConditionalFormatRule     :: !(Maybe AddConditionalFormatRuleRequest)+    , _reqSortRange                    :: !(Maybe SortRangeRequest)+    , _reqUpdateNamedRange             :: !(Maybe UpdateNamedRangeRequest)+    , _reqDeleteNamedRange             :: !(Maybe DeleteNamedRangeRequest)+    , _reqClearBasicFilter             :: !(Maybe ClearBasicFilterRequest)+    , _reqAppendCells                  :: !(Maybe AppendCellsRequest)+    , _reqPasteData                    :: !(Maybe PasteDataRequest)+    , _reqUpdateEmbeddedObjectPosition :: !(Maybe UpdateEmbeddedObjectPositionRequest)+    , _reqCopyPaste                    :: !(Maybe CopyPasteRequest)+    , _reqAutoResizeDimensions         :: !(Maybe AutoResizeDimensionsRequest)+    , _reqAddSheet                     :: !(Maybe AddSheetRequest)+    , _reqFindReplace                  :: !(Maybe FindReplaceRequest)+    , _reqDeleteDimension              :: !(Maybe DeleteDimensionRequest)+    , _reqCutPaste                     :: !(Maybe CutPasteRequest)+    , _reqMoveDimension                :: !(Maybe MoveDimensionRequest)+    , _reqRepeatCell                   :: !(Maybe RepeatCellRequest)+    , _reqAddProtectedRange            :: !(Maybe AddProtectedRangeRequest)+    , _reqUpdateFilterView             :: !(Maybe UpdateFilterViewRequest)+    , _reqDeleteFilterView             :: !(Maybe DeleteFilterViewRequest)+    , _reqInsertDimension              :: !(Maybe InsertDimensionRequest)+    , _reqUpdateSheetProperties        :: !(Maybe UpdateSheetPropertiesRequest)+    , _reqDeleteConditionalFormatRule  :: !(Maybe DeleteConditionalFormatRuleRequest)+    , _reqUpdateConditionalFormatRule  :: !(Maybe UpdateConditionalFormatRuleRequest)+    , _reqDeleteEmbeddedObject         :: !(Maybe DeleteEmbeddedObjectRequest)+    , _reqMergeCells                   :: !(Maybe MergeCellsRequest)+    , _reqAddNamedRange                :: !(Maybe AddNamedRangeRequest)+    , _reqAddChart                     :: !(Maybe AddChartRequest)+    , _reqDuplicateSheet               :: !(Maybe DuplicateSheetRequest)+    , _reqAutoFill                     :: !(Maybe AutoFillRequest)+    , _reqUpdateDimensionProperties    :: !(Maybe UpdateDimensionPropertiesRequest)+    , _reqUpdateChartSpec              :: !(Maybe UpdateChartSpecRequest)+    , _reqSetBasicFilter               :: !(Maybe SetBasicFilterRequest)+    , _reqTextToColumns                :: !(Maybe TextToColumnsRequest)+    , _reqUpdateSpreadsheetProperties  :: !(Maybe UpdateSpreadsheetPropertiesRequest)+    , _reqDeleteSheet                  :: !(Maybe DeleteSheetRequest)+    , _reqUnmergeCells                 :: !(Maybe UnmergeCellsRequest)+    , _reqUpdateBOrders                :: !(Maybe UpdateBOrdersRequest)+    , _reqAppendDimension              :: !(Maybe AppendDimensionRequest)+    , _reqSetDataValidation            :: !(Maybe SetDataValidationRequest)+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'Request' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'reqAddFilterView'+--+-- * 'reqDeleteProtectedRange'+--+-- * 'reqUpdateProtectedRange'+--+-- * 'reqUpdateCells'+--+-- * 'reqDuplicateFilterView'+--+-- * 'reqAddConditionalFormatRule'+--+-- * 'reqSortRange'+--+-- * 'reqUpdateNamedRange'+--+-- * 'reqDeleteNamedRange'+--+-- * 'reqClearBasicFilter'+--+-- * 'reqAppendCells'+--+-- * 'reqPasteData'+--+-- * 'reqUpdateEmbeddedObjectPosition'+--+-- * 'reqCopyPaste'+--+-- * 'reqAutoResizeDimensions'+--+-- * 'reqAddSheet'+--+-- * 'reqFindReplace'+--+-- * 'reqDeleteDimension'+--+-- * 'reqCutPaste'+--+-- * 'reqMoveDimension'+--+-- * 'reqRepeatCell'+--+-- * 'reqAddProtectedRange'+--+-- * 'reqUpdateFilterView'+--+-- * 'reqDeleteFilterView'+--+-- * 'reqInsertDimension'+--+-- * 'reqUpdateSheetProperties'+--+-- * 'reqDeleteConditionalFormatRule'+--+-- * 'reqUpdateConditionalFormatRule'+--+-- * 'reqDeleteEmbeddedObject'+--+-- * 'reqMergeCells'+--+-- * 'reqAddNamedRange'+--+-- * 'reqAddChart'+--+-- * 'reqDuplicateSheet'+--+-- * 'reqAutoFill'+--+-- * 'reqUpdateDimensionProperties'+--+-- * 'reqUpdateChartSpec'+--+-- * 'reqSetBasicFilter'+--+-- * 'reqTextToColumns'+--+-- * 'reqUpdateSpreadsheetProperties'+--+-- * 'reqDeleteSheet'+--+-- * 'reqUnmergeCells'+--+-- * 'reqUpdateBOrders'+--+-- * 'reqAppendDimension'+--+-- * 'reqSetDataValidation'+request'+    :: Request'+request' =+    Request''+    { _reqAddFilterView = Nothing+    , _reqDeleteProtectedRange = Nothing+    , _reqUpdateProtectedRange = Nothing+    , _reqUpdateCells = Nothing+    , _reqDuplicateFilterView = Nothing+    , _reqAddConditionalFormatRule = Nothing+    , _reqSortRange = Nothing+    , _reqUpdateNamedRange = Nothing+    , _reqDeleteNamedRange = Nothing+    , _reqClearBasicFilter = Nothing+    , _reqAppendCells = Nothing+    , _reqPasteData = Nothing+    , _reqUpdateEmbeddedObjectPosition = Nothing+    , _reqCopyPaste = Nothing+    , _reqAutoResizeDimensions = Nothing+    , _reqAddSheet = Nothing+    , _reqFindReplace = Nothing+    , _reqDeleteDimension = Nothing+    , _reqCutPaste = Nothing+    , _reqMoveDimension = Nothing+    , _reqRepeatCell = Nothing+    , _reqAddProtectedRange = Nothing+    , _reqUpdateFilterView = Nothing+    , _reqDeleteFilterView = Nothing+    , _reqInsertDimension = Nothing+    , _reqUpdateSheetProperties = Nothing+    , _reqDeleteConditionalFormatRule = Nothing+    , _reqUpdateConditionalFormatRule = Nothing+    , _reqDeleteEmbeddedObject = Nothing+    , _reqMergeCells = Nothing+    , _reqAddNamedRange = Nothing+    , _reqAddChart = Nothing+    , _reqDuplicateSheet = Nothing+    , _reqAutoFill = Nothing+    , _reqUpdateDimensionProperties = Nothing+    , _reqUpdateChartSpec = Nothing+    , _reqSetBasicFilter = Nothing+    , _reqTextToColumns = Nothing+    , _reqUpdateSpreadsheetProperties = Nothing+    , _reqDeleteSheet = Nothing+    , _reqUnmergeCells = Nothing+    , _reqUpdateBOrders = Nothing+    , _reqAppendDimension = Nothing+    , _reqSetDataValidation = Nothing+    }++-- | Adds a filter view.+reqAddFilterView :: Lens' Request' (Maybe AddFilterViewRequest)+reqAddFilterView+  = lens _reqAddFilterView+      (\ s a -> s{_reqAddFilterView = a})++-- | Deletes a protected range.+reqDeleteProtectedRange :: Lens' Request' (Maybe DeleteProtectedRangeRequest)+reqDeleteProtectedRange+  = lens _reqDeleteProtectedRange+      (\ s a -> s{_reqDeleteProtectedRange = a})++-- | Updates a protected range.+reqUpdateProtectedRange :: Lens' Request' (Maybe UpdateProtectedRangeRequest)+reqUpdateProtectedRange+  = lens _reqUpdateProtectedRange+      (\ s a -> s{_reqUpdateProtectedRange = a})++-- | Updates many cells at once.+reqUpdateCells :: Lens' Request' (Maybe UpdateCellsRequest)+reqUpdateCells+  = lens _reqUpdateCells+      (\ s a -> s{_reqUpdateCells = a})++-- | Duplicates a filter view.+reqDuplicateFilterView :: Lens' Request' (Maybe DuplicateFilterViewRequest)+reqDuplicateFilterView+  = lens _reqDuplicateFilterView+      (\ s a -> s{_reqDuplicateFilterView = a})++-- | Adds a new conditional format rule.+reqAddConditionalFormatRule :: Lens' Request' (Maybe AddConditionalFormatRuleRequest)+reqAddConditionalFormatRule+  = lens _reqAddConditionalFormatRule+      (\ s a -> s{_reqAddConditionalFormatRule = a})++-- | Sorts data in a range.+reqSortRange :: Lens' Request' (Maybe SortRangeRequest)+reqSortRange+  = lens _reqSortRange (\ s a -> s{_reqSortRange = a})++-- | Updates a named range.+reqUpdateNamedRange :: Lens' Request' (Maybe UpdateNamedRangeRequest)+reqUpdateNamedRange+  = lens _reqUpdateNamedRange+      (\ s a -> s{_reqUpdateNamedRange = a})++-- | Deletes a named range.+reqDeleteNamedRange :: Lens' Request' (Maybe DeleteNamedRangeRequest)+reqDeleteNamedRange+  = lens _reqDeleteNamedRange+      (\ s a -> s{_reqDeleteNamedRange = a})++-- | Clears the basic filter on a sheet.+reqClearBasicFilter :: Lens' Request' (Maybe ClearBasicFilterRequest)+reqClearBasicFilter+  = lens _reqClearBasicFilter+      (\ s a -> s{_reqClearBasicFilter = a})++-- | Appends cells after the last row with data in a sheet.+reqAppendCells :: Lens' Request' (Maybe AppendCellsRequest)+reqAppendCells+  = lens _reqAppendCells+      (\ s a -> s{_reqAppendCells = a})++-- | Pastes data (HTML or delimited) into a sheet.+reqPasteData :: Lens' Request' (Maybe PasteDataRequest)+reqPasteData+  = lens _reqPasteData (\ s a -> s{_reqPasteData = a})++-- | Updates an embedded object\'s (e.g. chart, image) position.+reqUpdateEmbeddedObjectPosition :: Lens' Request' (Maybe UpdateEmbeddedObjectPositionRequest)+reqUpdateEmbeddedObjectPosition+  = lens _reqUpdateEmbeddedObjectPosition+      (\ s a -> s{_reqUpdateEmbeddedObjectPosition = a})++-- | Copies data from one area and pastes it to another.+reqCopyPaste :: Lens' Request' (Maybe CopyPasteRequest)+reqCopyPaste+  = lens _reqCopyPaste (\ s a -> s{_reqCopyPaste = a})++-- | Automatically resizes one or more dimensions based on the contents of+-- the cells in that dimension.+reqAutoResizeDimensions :: Lens' Request' (Maybe AutoResizeDimensionsRequest)+reqAutoResizeDimensions+  = lens _reqAutoResizeDimensions+      (\ s a -> s{_reqAutoResizeDimensions = a})++-- | Adds a sheet.+reqAddSheet :: Lens' Request' (Maybe AddSheetRequest)+reqAddSheet+  = lens _reqAddSheet (\ s a -> s{_reqAddSheet = a})++-- | Finds and replaces occurrences of some text with other text.+reqFindReplace :: Lens' Request' (Maybe FindReplaceRequest)+reqFindReplace+  = lens _reqFindReplace+      (\ s a -> s{_reqFindReplace = a})++-- | Deletes rows or columns in a sheet.+reqDeleteDimension :: Lens' Request' (Maybe DeleteDimensionRequest)+reqDeleteDimension+  = lens _reqDeleteDimension+      (\ s a -> s{_reqDeleteDimension = a})++-- | Cuts data from one area and pastes it to another.+reqCutPaste :: Lens' Request' (Maybe CutPasteRequest)+reqCutPaste+  = lens _reqCutPaste (\ s a -> s{_reqCutPaste = a})++-- | Moves rows or columns to another location in a sheet.+reqMoveDimension :: Lens' Request' (Maybe MoveDimensionRequest)+reqMoveDimension+  = lens _reqMoveDimension+      (\ s a -> s{_reqMoveDimension = a})++-- | Repeats a single cell across a range.+reqRepeatCell :: Lens' Request' (Maybe RepeatCellRequest)+reqRepeatCell+  = lens _reqRepeatCell+      (\ s a -> s{_reqRepeatCell = a})++-- | Adds a protected range.+reqAddProtectedRange :: Lens' Request' (Maybe AddProtectedRangeRequest)+reqAddProtectedRange+  = lens _reqAddProtectedRange+      (\ s a -> s{_reqAddProtectedRange = a})++-- | Updates the properties of a filter view.+reqUpdateFilterView :: Lens' Request' (Maybe UpdateFilterViewRequest)+reqUpdateFilterView+  = lens _reqUpdateFilterView+      (\ s a -> s{_reqUpdateFilterView = a})++-- | Deletes a filter view from a sheet.+reqDeleteFilterView :: Lens' Request' (Maybe DeleteFilterViewRequest)+reqDeleteFilterView+  = lens _reqDeleteFilterView+      (\ s a -> s{_reqDeleteFilterView = a})++-- | Inserts new rows or columns in a sheet.+reqInsertDimension :: Lens' Request' (Maybe InsertDimensionRequest)+reqInsertDimension+  = lens _reqInsertDimension+      (\ s a -> s{_reqInsertDimension = a})++-- | Updates a sheet\'s properties.+reqUpdateSheetProperties :: Lens' Request' (Maybe UpdateSheetPropertiesRequest)+reqUpdateSheetProperties+  = lens _reqUpdateSheetProperties+      (\ s a -> s{_reqUpdateSheetProperties = a})++-- | Deletes an existing conditional format rule.+reqDeleteConditionalFormatRule :: Lens' Request' (Maybe DeleteConditionalFormatRuleRequest)+reqDeleteConditionalFormatRule+  = lens _reqDeleteConditionalFormatRule+      (\ s a -> s{_reqDeleteConditionalFormatRule = a})++-- | Updates an existing conditional format rule.+reqUpdateConditionalFormatRule :: Lens' Request' (Maybe UpdateConditionalFormatRuleRequest)+reqUpdateConditionalFormatRule+  = lens _reqUpdateConditionalFormatRule+      (\ s a -> s{_reqUpdateConditionalFormatRule = a})++-- | Deletes an embedded object (e.g, chart, image) in a sheet.+reqDeleteEmbeddedObject :: Lens' Request' (Maybe DeleteEmbeddedObjectRequest)+reqDeleteEmbeddedObject+  = lens _reqDeleteEmbeddedObject+      (\ s a -> s{_reqDeleteEmbeddedObject = a})++-- | Merges cells together.+reqMergeCells :: Lens' Request' (Maybe MergeCellsRequest)+reqMergeCells+  = lens _reqMergeCells+      (\ s a -> s{_reqMergeCells = a})++-- | Adds a named range.+reqAddNamedRange :: Lens' Request' (Maybe AddNamedRangeRequest)+reqAddNamedRange+  = lens _reqAddNamedRange+      (\ s a -> s{_reqAddNamedRange = a})++-- | Adds a chart.+reqAddChart :: Lens' Request' (Maybe AddChartRequest)+reqAddChart+  = lens _reqAddChart (\ s a -> s{_reqAddChart = a})++-- | Duplicates a sheet.+reqDuplicateSheet :: Lens' Request' (Maybe DuplicateSheetRequest)+reqDuplicateSheet+  = lens _reqDuplicateSheet+      (\ s a -> s{_reqDuplicateSheet = a})++-- | Automatically fills in more data based on existing data.+reqAutoFill :: Lens' Request' (Maybe AutoFillRequest)+reqAutoFill+  = lens _reqAutoFill (\ s a -> s{_reqAutoFill = a})++-- | Updates dimensions\' properties.+reqUpdateDimensionProperties :: Lens' Request' (Maybe UpdateDimensionPropertiesRequest)+reqUpdateDimensionProperties+  = lens _reqUpdateDimensionProperties+      (\ s a -> s{_reqUpdateDimensionProperties = a})++-- | Updates a chart\'s specifications.+reqUpdateChartSpec :: Lens' Request' (Maybe UpdateChartSpecRequest)+reqUpdateChartSpec+  = lens _reqUpdateChartSpec+      (\ s a -> s{_reqUpdateChartSpec = a})++-- | Sets the basic filter on a sheet.+reqSetBasicFilter :: Lens' Request' (Maybe SetBasicFilterRequest)+reqSetBasicFilter+  = lens _reqSetBasicFilter+      (\ s a -> s{_reqSetBasicFilter = a})++-- | Converts a column of text into many columns of text.+reqTextToColumns :: Lens' Request' (Maybe TextToColumnsRequest)+reqTextToColumns+  = lens _reqTextToColumns+      (\ s a -> s{_reqTextToColumns = a})++-- | Updates the spreadsheet\'s properties.+reqUpdateSpreadsheetProperties :: Lens' Request' (Maybe UpdateSpreadsheetPropertiesRequest)+reqUpdateSpreadsheetProperties+  = lens _reqUpdateSpreadsheetProperties+      (\ s a -> s{_reqUpdateSpreadsheetProperties = a})++-- | Deletes a sheet.+reqDeleteSheet :: Lens' Request' (Maybe DeleteSheetRequest)+reqDeleteSheet+  = lens _reqDeleteSheet+      (\ s a -> s{_reqDeleteSheet = a})++-- | Unmerges merged cells.+reqUnmergeCells :: Lens' Request' (Maybe UnmergeCellsRequest)+reqUnmergeCells+  = lens _reqUnmergeCells+      (\ s a -> s{_reqUnmergeCells = a})++-- | Updates the borders in a range of cells.+reqUpdateBOrders :: Lens' Request' (Maybe UpdateBOrdersRequest)+reqUpdateBOrders+  = lens _reqUpdateBOrders+      (\ s a -> s{_reqUpdateBOrders = a})++-- | Appends dimensions to the end of a sheet.+reqAppendDimension :: Lens' Request' (Maybe AppendDimensionRequest)+reqAppendDimension+  = lens _reqAppendDimension+      (\ s a -> s{_reqAppendDimension = a})++-- | Sets data validation for one or more cells.+reqSetDataValidation :: Lens' Request' (Maybe SetDataValidationRequest)+reqSetDataValidation+  = lens _reqSetDataValidation+      (\ s a -> s{_reqSetDataValidation = a})++instance FromJSON Request' where+        parseJSON+          = withObject "Request"+              (\ o ->+                 Request'' <$>+                   (o .:? "addFilterView") <*>+                     (o .:? "deleteProtectedRange")+                     <*> (o .:? "updateProtectedRange")+                     <*> (o .:? "updateCells")+                     <*> (o .:? "duplicateFilterView")+                     <*> (o .:? "addConditionalFormatRule")+                     <*> (o .:? "sortRange")+                     <*> (o .:? "updateNamedRange")+                     <*> (o .:? "deleteNamedRange")+                     <*> (o .:? "clearBasicFilter")+                     <*> (o .:? "appendCells")+                     <*> (o .:? "pasteData")+                     <*> (o .:? "updateEmbeddedObjectPosition")+                     <*> (o .:? "copyPaste")+                     <*> (o .:? "autoResizeDimensions")+                     <*> (o .:? "addSheet")+                     <*> (o .:? "findReplace")+                     <*> (o .:? "deleteDimension")+                     <*> (o .:? "cutPaste")+                     <*> (o .:? "moveDimension")+                     <*> (o .:? "repeatCell")+                     <*> (o .:? "addProtectedRange")+                     <*> (o .:? "updateFilterView")+                     <*> (o .:? "deleteFilterView")+                     <*> (o .:? "insertDimension")+                     <*> (o .:? "updateSheetProperties")+                     <*> (o .:? "deleteConditionalFormatRule")+                     <*> (o .:? "updateConditionalFormatRule")+                     <*> (o .:? "deleteEmbeddedObject")+                     <*> (o .:? "mergeCells")+                     <*> (o .:? "addNamedRange")+                     <*> (o .:? "addChart")+                     <*> (o .:? "duplicateSheet")+                     <*> (o .:? "autoFill")+                     <*> (o .:? "updateDimensionProperties")+                     <*> (o .:? "updateChartSpec")+                     <*> (o .:? "setBasicFilter")+                     <*> (o .:? "textToColumns")+                     <*> (o .:? "updateSpreadsheetProperties")+                     <*> (o .:? "deleteSheet")+                     <*> (o .:? "unmergeCells")+                     <*> (o .:? "updateBorders")+                     <*> (o .:? "appendDimension")+                     <*> (o .:? "setDataValidation"))++instance ToJSON Request' where+        toJSON Request''{..}+          = object+              (catMaybes+                 [("addFilterView" .=) <$> _reqAddFilterView,+                  ("deleteProtectedRange" .=) <$>+                    _reqDeleteProtectedRange,+                  ("updateProtectedRange" .=) <$>+                    _reqUpdateProtectedRange,+                  ("updateCells" .=) <$> _reqUpdateCells,+                  ("duplicateFilterView" .=) <$>+                    _reqDuplicateFilterView,+                  ("addConditionalFormatRule" .=) <$>+                    _reqAddConditionalFormatRule,+                  ("sortRange" .=) <$> _reqSortRange,+                  ("updateNamedRange" .=) <$> _reqUpdateNamedRange,+                  ("deleteNamedRange" .=) <$> _reqDeleteNamedRange,+                  ("clearBasicFilter" .=) <$> _reqClearBasicFilter,+                  ("appendCells" .=) <$> _reqAppendCells,+                  ("pasteData" .=) <$> _reqPasteData,+                  ("updateEmbeddedObjectPosition" .=) <$>+                    _reqUpdateEmbeddedObjectPosition,+                  ("copyPaste" .=) <$> _reqCopyPaste,+                  ("autoResizeDimensions" .=) <$>+                    _reqAutoResizeDimensions,+                  ("addSheet" .=) <$> _reqAddSheet,+                  ("findReplace" .=) <$> _reqFindReplace,+                  ("deleteDimension" .=) <$> _reqDeleteDimension,+                  ("cutPaste" .=) <$> _reqCutPaste,+                  ("moveDimension" .=) <$> _reqMoveDimension,+                  ("repeatCell" .=) <$> _reqRepeatCell,+                  ("addProtectedRange" .=) <$> _reqAddProtectedRange,+                  ("updateFilterView" .=) <$> _reqUpdateFilterView,+                  ("deleteFilterView" .=) <$> _reqDeleteFilterView,+                  ("insertDimension" .=) <$> _reqInsertDimension,+                  ("updateSheetProperties" .=) <$>+                    _reqUpdateSheetProperties,+                  ("deleteConditionalFormatRule" .=) <$>+                    _reqDeleteConditionalFormatRule,+                  ("updateConditionalFormatRule" .=) <$>+                    _reqUpdateConditionalFormatRule,+                  ("deleteEmbeddedObject" .=) <$>+                    _reqDeleteEmbeddedObject,+                  ("mergeCells" .=) <$> _reqMergeCells,+                  ("addNamedRange" .=) <$> _reqAddNamedRange,+                  ("addChart" .=) <$> _reqAddChart,+                  ("duplicateSheet" .=) <$> _reqDuplicateSheet,+                  ("autoFill" .=) <$> _reqAutoFill,+                  ("updateDimensionProperties" .=) <$>+                    _reqUpdateDimensionProperties,+                  ("updateChartSpec" .=) <$> _reqUpdateChartSpec,+                  ("setBasicFilter" .=) <$> _reqSetBasicFilter,+                  ("textToColumns" .=) <$> _reqTextToColumns,+                  ("updateSpreadsheetProperties" .=) <$>+                    _reqUpdateSpreadsheetProperties,+                  ("deleteSheet" .=) <$> _reqDeleteSheet,+                  ("unmergeCells" .=) <$> _reqUnmergeCells,+                  ("updateBorders" .=) <$> _reqUpdateBOrders,+                  ("appendDimension" .=) <$> _reqAppendDimension,+                  ("setDataValidation" .=) <$> _reqSetDataValidation])++-- | The result of deleting a conditional format rule.+--+-- /See:/ 'deleteConditionalFormatRuleResponse' smart constructor.+newtype DeleteConditionalFormatRuleResponse = DeleteConditionalFormatRuleResponse'+    { _dcfrrRule :: Maybe ConditionalFormatRule+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'DeleteConditionalFormatRuleResponse' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'dcfrrRule'+deleteConditionalFormatRuleResponse+    :: DeleteConditionalFormatRuleResponse+deleteConditionalFormatRuleResponse =+    DeleteConditionalFormatRuleResponse'+    { _dcfrrRule = Nothing+    }++-- | The rule that was deleted.+dcfrrRule :: Lens' DeleteConditionalFormatRuleResponse (Maybe ConditionalFormatRule)+dcfrrRule+  = lens _dcfrrRule (\ s a -> s{_dcfrrRule = a})++instance FromJSON DeleteConditionalFormatRuleResponse+         where+        parseJSON+          = withObject "DeleteConditionalFormatRuleResponse"+              (\ o ->+                 DeleteConditionalFormatRuleResponse' <$>+                   (o .:? "rule"))++instance ToJSON DeleteConditionalFormatRuleResponse+         where+        toJSON DeleteConditionalFormatRuleResponse'{..}+          = object (catMaybes [("rule" .=) <$> _dcfrrRule])++-- | The result of updating a conditional format rule.+--+-- /See:/ 'updateConditionalFormatRuleResponse' smart constructor.+data UpdateConditionalFormatRuleResponse = UpdateConditionalFormatRuleResponse'+    { _uNewRule  :: !(Maybe ConditionalFormatRule)+    , _uNewIndex :: !(Maybe (Textual Int32))+    , _uOldIndex :: !(Maybe (Textual Int32))+    , _uOldRule  :: !(Maybe ConditionalFormatRule)+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'UpdateConditionalFormatRuleResponse' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'uNewRule'+--+-- * 'uNewIndex'+--+-- * 'uOldIndex'+--+-- * 'uOldRule'+updateConditionalFormatRuleResponse+    :: UpdateConditionalFormatRuleResponse+updateConditionalFormatRuleResponse =+    UpdateConditionalFormatRuleResponse'+    { _uNewRule = Nothing+    , _uNewIndex = Nothing+    , _uOldIndex = Nothing+    , _uOldRule = Nothing+    }++-- | The new rule that replaced the old rule (if replacing), or the rule that+-- was moved (if moved)+uNewRule :: Lens' UpdateConditionalFormatRuleResponse (Maybe ConditionalFormatRule)+uNewRule = lens _uNewRule (\ s a -> s{_uNewRule = a})++-- | The index of the new rule.+uNewIndex :: Lens' UpdateConditionalFormatRuleResponse (Maybe Int32)+uNewIndex+  = lens _uNewIndex (\ s a -> s{_uNewIndex = a}) .+      mapping _Coerce++-- | The old index of the rule. Not set if a rule was replaced (because it is+-- the same as new_index).+uOldIndex :: Lens' UpdateConditionalFormatRuleResponse (Maybe Int32)+uOldIndex+  = lens _uOldIndex (\ s a -> s{_uOldIndex = a}) .+      mapping _Coerce++-- | The old (deleted) rule. Not set if a rule was moved (because it is the+-- same as new_rule).+uOldRule :: Lens' UpdateConditionalFormatRuleResponse (Maybe ConditionalFormatRule)+uOldRule = lens _uOldRule (\ s a -> s{_uOldRule = a})++instance FromJSON UpdateConditionalFormatRuleResponse+         where+        parseJSON+          = withObject "UpdateConditionalFormatRuleResponse"+              (\ o ->+                 UpdateConditionalFormatRuleResponse' <$>+                   (o .:? "newRule") <*> (o .:? "newIndex") <*>+                     (o .:? "oldIndex")+                     <*> (o .:? "oldRule"))++instance ToJSON UpdateConditionalFormatRuleResponse+         where+        toJSON UpdateConditionalFormatRuleResponse'{..}+          = object+              (catMaybes+                 [("newRule" .=) <$> _uNewRule,+                  ("newIndex" .=) <$> _uNewIndex,+                  ("oldIndex" .=) <$> _uOldIndex,+                  ("oldRule" .=) <$> _uOldRule])
+ gen/Network/Google/Sheets/Types/Sum.hs view
@@ -0,0 +1,1835 @@+{-# LANGUAGE DeriveDataTypeable #-}+{-# LANGUAGE DeriveGeneric      #-}+{-# LANGUAGE LambdaCase         #-}+{-# LANGUAGE NoImplicitPrelude  #-}+{-# LANGUAGE OverloadedStrings  #-}++{-# OPTIONS_GHC -fno-warn-unused-imports #-}++-- |+-- Module      : Network.Google.Sheets.Types.Sum+-- Copyright   : (c) 2015-2016 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+module Network.Google.Sheets.Types.Sum where++import           Network.Google.Prelude++-- | What kind of data to paste.+data CopyPasteRequestPasteType+    = PasteNormal+      -- ^ @PASTE_NORMAL@+      -- Paste values, formulas, formats, and merges.+    | PasteValues+      -- ^ @PASTE_VALUES@+      -- Paste the values ONLY without formats, formulas, or merges.+    | PasteFormat+      -- ^ @PASTE_FORMAT@+      -- Paste the format and data validation only.+    | PasteNoBOrders+      -- ^ @PASTE_NO_BORDERS@+      -- Like PASTE_NORMAL but without borders.+    | PasteFormula+      -- ^ @PASTE_FORMULA@+      -- Paste the formulas only.+    | PasteDataValidation+      -- ^ @PASTE_DATA_VALIDATION@+      -- Paste the data validation only.+    | PasteConditionalFormatting+      -- ^ @PASTE_CONDITIONAL_FORMATTING@+      -- Paste the conditional formatting rules only.+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)++instance Hashable CopyPasteRequestPasteType++instance FromHttpApiData CopyPasteRequestPasteType where+    parseQueryParam = \case+        "PASTE_NORMAL" -> Right PasteNormal+        "PASTE_VALUES" -> Right PasteValues+        "PASTE_FORMAT" -> Right PasteFormat+        "PASTE_NO_BORDERS" -> Right PasteNoBOrders+        "PASTE_FORMULA" -> Right PasteFormula+        "PASTE_DATA_VALIDATION" -> Right PasteDataValidation+        "PASTE_CONDITIONAL_FORMATTING" -> Right PasteConditionalFormatting+        x -> Left ("Unable to parse CopyPasteRequestPasteType from: " <> x)++instance ToHttpApiData CopyPasteRequestPasteType where+    toQueryParam = \case+        PasteNormal -> "PASTE_NORMAL"+        PasteValues -> "PASTE_VALUES"+        PasteFormat -> "PASTE_FORMAT"+        PasteNoBOrders -> "PASTE_NO_BORDERS"+        PasteFormula -> "PASTE_FORMULA"+        PasteDataValidation -> "PASTE_DATA_VALIDATION"+        PasteConditionalFormatting -> "PASTE_CONDITIONAL_FORMATTING"++instance FromJSON CopyPasteRequestPasteType where+    parseJSON = parseJSONText "CopyPasteRequestPasteType"++instance ToJSON CopyPasteRequestPasteType where+    toJSON = toJSONText++-- | The position of this axis.+data BasicChartAxisPosition+    = BasicChartAxisPositionUnspecified+      -- ^ @BASIC_CHART_AXIS_POSITION_UNSPECIFIED@+      -- Default value, do not use.+    | BottomAxis+      -- ^ @BOTTOM_AXIS@+      -- The axis rendered at the bottom of a chart. For most charts, this is the+      -- standard major axis. For bar charts, this is a minor axis.+    | LeftAxis+      -- ^ @LEFT_AXIS@+      -- The axis rendered at the left of a chart. For most charts, this is a+      -- minor axis. For bar charts, this is the standard major axis.+    | RightAxis+      -- ^ @RIGHT_AXIS@+      -- The axis rendered at the right of a chart. For most charts, this is a+      -- minor axis. For bar charts, this is an unusual major axis.+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)++instance Hashable BasicChartAxisPosition++instance FromHttpApiData BasicChartAxisPosition where+    parseQueryParam = \case+        "BASIC_CHART_AXIS_POSITION_UNSPECIFIED" -> Right BasicChartAxisPositionUnspecified+        "BOTTOM_AXIS" -> Right BottomAxis+        "LEFT_AXIS" -> Right LeftAxis+        "RIGHT_AXIS" -> Right RightAxis+        x -> Left ("Unable to parse BasicChartAxisPosition from: " <> x)++instance ToHttpApiData BasicChartAxisPosition where+    toQueryParam = \case+        BasicChartAxisPositionUnspecified -> "BASIC_CHART_AXIS_POSITION_UNSPECIFIED"+        BottomAxis -> "BOTTOM_AXIS"+        LeftAxis -> "LEFT_AXIS"+        RightAxis -> "RIGHT_AXIS"++instance FromJSON BasicChartAxisPosition where+    parseJSON = parseJSONText "BasicChartAxisPosition"++instance ToJSON BasicChartAxisPosition where+    toJSON = toJSONText++-- | The minor axis that will specify the range of values for this series.+-- For example, if charting stocks over time, the \"Volume\" series may+-- want to be pinned to the right with the prices pinned to the left,+-- because the scale of trading volume is different than the scale of+-- prices. It is an error to specify an axis that isn\'t a valid minor axis+-- for the chart\'s type.+data BasicChartSeriesTargetAxis+    = BCSTABasicChartAxisPositionUnspecified+      -- ^ @BASIC_CHART_AXIS_POSITION_UNSPECIFIED@+      -- Default value, do not use.+    | BCSTABottomAxis+      -- ^ @BOTTOM_AXIS@+      -- The axis rendered at the bottom of a chart. For most charts, this is the+      -- standard major axis. For bar charts, this is a minor axis.+    | BCSTALeftAxis+      -- ^ @LEFT_AXIS@+      -- The axis rendered at the left of a chart. For most charts, this is a+      -- minor axis. For bar charts, this is the standard major axis.+    | BCSTARightAxis+      -- ^ @RIGHT_AXIS@+      -- The axis rendered at the right of a chart. For most charts, this is a+      -- minor axis. For bar charts, this is an unusual major axis.+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)++instance Hashable BasicChartSeriesTargetAxis++instance FromHttpApiData BasicChartSeriesTargetAxis where+    parseQueryParam = \case+        "BASIC_CHART_AXIS_POSITION_UNSPECIFIED" -> Right BCSTABasicChartAxisPositionUnspecified+        "BOTTOM_AXIS" -> Right BCSTABottomAxis+        "LEFT_AXIS" -> Right BCSTALeftAxis+        "RIGHT_AXIS" -> Right BCSTARightAxis+        x -> Left ("Unable to parse BasicChartSeriesTargetAxis from: " <> x)++instance ToHttpApiData BasicChartSeriesTargetAxis where+    toQueryParam = \case+        BCSTABasicChartAxisPositionUnspecified -> "BASIC_CHART_AXIS_POSITION_UNSPECIFIED"+        BCSTABottomAxis -> "BOTTOM_AXIS"+        BCSTALeftAxis -> "LEFT_AXIS"+        BCSTARightAxis -> "RIGHT_AXIS"++instance FromJSON BasicChartSeriesTargetAxis where+    parseJSON = parseJSONText "BasicChartSeriesTargetAxis"++instance ToJSON BasicChartSeriesTargetAxis where+    toJSON = toJSONText++-- | Whether rows or columns should be appended.+data AppendDimensionRequestDimension+    = DimensionUnspecified+      -- ^ @DIMENSION_UNSPECIFIED@+      -- The default value, do not use.+    | Rows+      -- ^ @ROWS@+      -- Operates on the rows of a sheet.+    | Columns+      -- ^ @COLUMNS@+      -- Operates on the columns of a sheet.+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)++instance Hashable AppendDimensionRequestDimension++instance FromHttpApiData AppendDimensionRequestDimension where+    parseQueryParam = \case+        "DIMENSION_UNSPECIFIED" -> Right DimensionUnspecified+        "ROWS" -> Right Rows+        "COLUMNS" -> Right Columns+        x -> Left ("Unable to parse AppendDimensionRequestDimension from: " <> x)++instance ToHttpApiData AppendDimensionRequestDimension where+    toQueryParam = \case+        DimensionUnspecified -> "DIMENSION_UNSPECIFIED"+        Rows -> "ROWS"+        Columns -> "COLUMNS"++instance FromJSON AppendDimensionRequestDimension where+    parseJSON = parseJSONText "AppendDimensionRequestDimension"++instance ToJSON AppendDimensionRequestDimension where+    toJSON = toJSONText++-- | The dimension of the span.+data DimensionRangeDimension+    = DRDDimensionUnspecified+      -- ^ @DIMENSION_UNSPECIFIED@+      -- The default value, do not use.+    | DRDRows+      -- ^ @ROWS@+      -- Operates on the rows of a sheet.+    | DRDColumns+      -- ^ @COLUMNS@+      -- Operates on the columns of a sheet.+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)++instance Hashable DimensionRangeDimension++instance FromHttpApiData DimensionRangeDimension where+    parseQueryParam = \case+        "DIMENSION_UNSPECIFIED" -> Right DRDDimensionUnspecified+        "ROWS" -> Right DRDRows+        "COLUMNS" -> Right DRDColumns+        x -> Left ("Unable to parse DimensionRangeDimension from: " <> x)++instance ToHttpApiData DimensionRangeDimension where+    toQueryParam = \case+        DRDDimensionUnspecified -> "DIMENSION_UNSPECIFIED"+        DRDRows -> "ROWS"+        DRDColumns -> "COLUMNS"++instance FromJSON DimensionRangeDimension where+    parseJSON = parseJSONText "DimensionRangeDimension"++instance ToJSON DimensionRangeDimension where+    toJSON = toJSONText++-- | The dimension that data should be filled into.+data SourceAndDestinationDimension+    = SADDDimensionUnspecified+      -- ^ @DIMENSION_UNSPECIFIED@+      -- The default value, do not use.+    | SADDRows+      -- ^ @ROWS@+      -- Operates on the rows of a sheet.+    | SADDColumns+      -- ^ @COLUMNS@+      -- Operates on the columns of a sheet.+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)++instance Hashable SourceAndDestinationDimension++instance FromHttpApiData SourceAndDestinationDimension where+    parseQueryParam = \case+        "DIMENSION_UNSPECIFIED" -> Right SADDDimensionUnspecified+        "ROWS" -> Right SADDRows+        "COLUMNS" -> Right SADDColumns+        x -> Left ("Unable to parse SourceAndDestinationDimension from: " <> x)++instance ToHttpApiData SourceAndDestinationDimension where+    toQueryParam = \case+        SADDDimensionUnspecified -> "DIMENSION_UNSPECIFIED"+        SADDRows -> "ROWS"+        SADDColumns -> "COLUMNS"++instance FromJSON SourceAndDestinationDimension where+    parseJSON = parseJSONText "SourceAndDestinationDimension"++instance ToJSON SourceAndDestinationDimension where+    toJSON = toJSONText++-- | The wrap strategy for the value in the cell.+data CellFormatWrapStrategy+    = WrapStrategyUnspecified+      -- ^ @WRAP_STRATEGY_UNSPECIFIED@+      -- The default value, do not use.+    | OverflowCell+      -- ^ @OVERFLOW_CELL@+      -- Lines that are longer than the cell width will be written in the next+      -- cell over, so long as that cell is empty. If the next cell over is+      -- non-empty, this behaves the same as CLIP. The text will never wrap to+      -- the next line unless the user manually inserts a new line. Example: |+      -- First sentence. | | Manual newline that is very long. \<- Text continues+      -- into next cell | Next newline. |+    | LegacyWrap+      -- ^ @LEGACY_WRAP@+      -- This wrap strategy represents the old Google Sheets wrap strategy where+      -- words that are longer than a line are clipped rather than broken. This+      -- strategy is not supported on all platforms and is being phased out.+      -- Example: | Cell has a | | loooooooooo| \<- Word is clipped. | word. |+    | Clip+      -- ^ @CLIP@+      -- Lines that are longer than the cell width will be clipped. The text will+      -- never wrap to the next line unless the user manually inserts a new line.+      -- Example: | First sentence. | | Manual newline t| \<- Text is clipped |+      -- Next newline. |+    | Wrap+      -- ^ @WRAP@+      -- Words that are longer than a line are wrapped at the character level+      -- rather than clipped. Example: | Cell has a | | loooooooooo| \<- Word is+      -- broken. | ong word. |+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)++instance Hashable CellFormatWrapStrategy++instance FromHttpApiData CellFormatWrapStrategy where+    parseQueryParam = \case+        "WRAP_STRATEGY_UNSPECIFIED" -> Right WrapStrategyUnspecified+        "OVERFLOW_CELL" -> Right OverflowCell+        "LEGACY_WRAP" -> Right LegacyWrap+        "CLIP" -> Right Clip+        "WRAP" -> Right Wrap+        x -> Left ("Unable to parse CellFormatWrapStrategy from: " <> x)++instance ToHttpApiData CellFormatWrapStrategy where+    toQueryParam = \case+        WrapStrategyUnspecified -> "WRAP_STRATEGY_UNSPECIFIED"+        OverflowCell -> "OVERFLOW_CELL"+        LegacyWrap -> "LEGACY_WRAP"+        Clip -> "CLIP"+        Wrap -> "WRAP"++instance FromJSON CellFormatWrapStrategy where+    parseJSON = parseJSONText "CellFormatWrapStrategy"++instance ToJSON CellFormatWrapStrategy where+    toJSON = toJSONText++-- | How the input data should be interpreted.+data BatchUpdateValuesRequestValueInputOption+    = InputValueOptionUnspecified+      -- ^ @INPUT_VALUE_OPTION_UNSPECIFIED@+      -- Default input value. This value must not be used.+    | Raw+      -- ^ @RAW@+      -- The values the user has entered will not be parsed and will be stored+      -- as-is.+    | UserEntered+      -- ^ @USER_ENTERED@+      -- The values will be parsed as if the user typed them into the UI. Numbers+      -- will stay as numbers, but strings may be converted to numbers, dates,+      -- etc. following the same rules that are applied when entering text into a+      -- cell via the Google Sheets UI.+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)++instance Hashable BatchUpdateValuesRequestValueInputOption++instance FromHttpApiData BatchUpdateValuesRequestValueInputOption where+    parseQueryParam = \case+        "INPUT_VALUE_OPTION_UNSPECIFIED" -> Right InputValueOptionUnspecified+        "RAW" -> Right Raw+        "USER_ENTERED" -> Right UserEntered+        x -> Left ("Unable to parse BatchUpdateValuesRequestValueInputOption from: " <> x)++instance ToHttpApiData BatchUpdateValuesRequestValueInputOption where+    toQueryParam = \case+        InputValueOptionUnspecified -> "INPUT_VALUE_OPTION_UNSPECIFIED"+        Raw -> "RAW"+        UserEntered -> "USER_ENTERED"++instance FromJSON BatchUpdateValuesRequestValueInputOption where+    parseJSON = parseJSONText "BatchUpdateValuesRequestValueInputOption"++instance ToJSON BatchUpdateValuesRequestValueInputOption where+    toJSON = toJSONText++-- | Where the legend of the pie chart should be drawn.+data PieChartSpecLegendPosition+    = PieChartLegendPositionUnspecified+      -- ^ @PIE_CHART_LEGEND_POSITION_UNSPECIFIED@+      -- Default value, do not use.+    | BottomLegend+      -- ^ @BOTTOM_LEGEND@+      -- The legend is rendered on the bottom of the chart.+    | LeftLegend+      -- ^ @LEFT_LEGEND@+      -- The legend is rendered on the left of the chart.+    | RightLegend+      -- ^ @RIGHT_LEGEND@+      -- The legend is rendered on the right of the chart.+    | TopLegend+      -- ^ @TOP_LEGEND@+      -- The legend is rendered on the top of the chart.+    | NoLegend+      -- ^ @NO_LEGEND@+      -- No legend is rendered.+    | LabeledLegend+      -- ^ @LABELED_LEGEND@+      -- Each pie slice has a label attached to it.+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)++instance Hashable PieChartSpecLegendPosition++instance FromHttpApiData PieChartSpecLegendPosition where+    parseQueryParam = \case+        "PIE_CHART_LEGEND_POSITION_UNSPECIFIED" -> Right PieChartLegendPositionUnspecified+        "BOTTOM_LEGEND" -> Right BottomLegend+        "LEFT_LEGEND" -> Right LeftLegend+        "RIGHT_LEGEND" -> Right RightLegend+        "TOP_LEGEND" -> Right TopLegend+        "NO_LEGEND" -> Right NoLegend+        "LABELED_LEGEND" -> Right LabeledLegend+        x -> Left ("Unable to parse PieChartSpecLegendPosition from: " <> x)++instance ToHttpApiData PieChartSpecLegendPosition where+    toQueryParam = \case+        PieChartLegendPositionUnspecified -> "PIE_CHART_LEGEND_POSITION_UNSPECIFIED"+        BottomLegend -> "BOTTOM_LEGEND"+        LeftLegend -> "LEFT_LEGEND"+        RightLegend -> "RIGHT_LEGEND"+        TopLegend -> "TOP_LEGEND"+        NoLegend -> "NO_LEGEND"+        LabeledLegend -> "LABELED_LEGEND"++instance FromJSON PieChartSpecLegendPosition where+    parseJSON = parseJSONText "PieChartSpecLegendPosition"++instance ToJSON PieChartSpecLegendPosition where+    toJSON = toJSONText++-- | The vertical alignment of the value in the cell.+data CellFormatVerticalAlignment+    = VerticalAlignUnspecified+      -- ^ @VERTICAL_ALIGN_UNSPECIFIED@+      -- The vertical alignment is not specified. Do not use this.+    | Top+      -- ^ @TOP@+      -- The text is explicitly aligned to the top of the cell.+    | Middle+      -- ^ @MIDDLE@+      -- The text is explicitly aligned to the middle of the cell.+    | Bottom+      -- ^ @BOTTOM@+      -- The text is explicitly aligned to the bottom of the cell.+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)++instance Hashable CellFormatVerticalAlignment++instance FromHttpApiData CellFormatVerticalAlignment where+    parseQueryParam = \case+        "VERTICAL_ALIGN_UNSPECIFIED" -> Right VerticalAlignUnspecified+        "TOP" -> Right Top+        "MIDDLE" -> Right Middle+        "BOTTOM" -> Right Bottom+        x -> Left ("Unable to parse CellFormatVerticalAlignment from: " <> x)++instance ToHttpApiData CellFormatVerticalAlignment where+    toQueryParam = \case+        VerticalAlignUnspecified -> "VERTICAL_ALIGN_UNSPECIFIED"+        Top -> "TOP"+        Middle -> "MIDDLE"+        Bottom -> "BOTTOM"++instance FromJSON CellFormatVerticalAlignment where+    parseJSON = parseJSONText "CellFormatVerticalAlignment"++instance ToJSON CellFormatVerticalAlignment where+    toJSON = toJSONText++-- | The type of the number format. When writing, this field must be set.+data NumberFormatType+    = NumberFormatTypeUnspecified+      -- ^ @NUMBER_FORMAT_TYPE_UNSPECIFIED@+      -- The number format is not specified and is based on the contents of the+      -- cell. Do not explicitly use this.+    | Text+      -- ^ @TEXT@+      -- Text formatting, e.g \`1000.12\`+    | Number+      -- ^ @NUMBER@+      -- Number formatting, e.g, \`1,000.12\`+    | Percent+      -- ^ @PERCENT@+      -- Percent formatting, e.g \`10.12%\`+    | Currency+      -- ^ @CURRENCY@+      -- Currency formatting, e.g \`$1,000.12\`+    | Date+      -- ^ @DATE@+      -- Date formatting, e.g \`9\/26\/2008\`+    | Time+      -- ^ @TIME@+      -- Time formatting, e.g \`3:59:00 PM\`+    | DateTime+      -- ^ @DATE_TIME@+      -- Date+Time formatting, e.g \`9\/26\/08 15:59:00\`+    | Scientific+      -- ^ @SCIENTIFIC@+      -- Scientific number formatting, e.g \`1.01E+03\`+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)++instance Hashable NumberFormatType++instance FromHttpApiData NumberFormatType where+    parseQueryParam = \case+        "NUMBER_FORMAT_TYPE_UNSPECIFIED" -> Right NumberFormatTypeUnspecified+        "TEXT" -> Right Text+        "NUMBER" -> Right Number+        "PERCENT" -> Right Percent+        "CURRENCY" -> Right Currency+        "DATE" -> Right Date+        "TIME" -> Right Time+        "DATE_TIME" -> Right DateTime+        "SCIENTIFIC" -> Right Scientific+        x -> Left ("Unable to parse NumberFormatType from: " <> x)++instance ToHttpApiData NumberFormatType where+    toQueryParam = \case+        NumberFormatTypeUnspecified -> "NUMBER_FORMAT_TYPE_UNSPECIFIED"+        Text -> "TEXT"+        Number -> "NUMBER"+        Percent -> "PERCENT"+        Currency -> "CURRENCY"+        Date -> "DATE"+        Time -> "TIME"+        DateTime -> "DATE_TIME"+        Scientific -> "SCIENTIFIC"++instance FromJSON NumberFormatType where+    parseJSON = parseJSONText "NumberFormatType"++instance ToJSON NumberFormatType where+    toJSON = toJSONText++-- | A relative date (based on the current date). Valid only if the type is+-- DATE_BEFORE, DATE_AFTER, DATE_ON_OR_BEFORE or DATE_ON_OR_AFTER. Relative+-- dates are not supported in data validation. They are supported only in+-- conditional formatting and conditional filters.+data ConditionValueRelativeDate+    = RelativeDateUnspecified+      -- ^ @RELATIVE_DATE_UNSPECIFIED@+      -- Default value, do not use.+    | PastYear+      -- ^ @PAST_YEAR@+      -- The value is one year before today.+    | PastMonth+      -- ^ @PAST_MONTH@+      -- The value is one month before today.+    | PastWeek+      -- ^ @PAST_WEEK@+      -- The value is one week before today.+    | Yesterday+      -- ^ @YESTERDAY@+      -- The value is yesterday.+    | Today+      -- ^ @TODAY@+      -- The value is today.+    | Tomorrow+      -- ^ @TOMORROW@+      -- The value is tomorrow.+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)++instance Hashable ConditionValueRelativeDate++instance FromHttpApiData ConditionValueRelativeDate where+    parseQueryParam = \case+        "RELATIVE_DATE_UNSPECIFIED" -> Right RelativeDateUnspecified+        "PAST_YEAR" -> Right PastYear+        "PAST_MONTH" -> Right PastMonth+        "PAST_WEEK" -> Right PastWeek+        "YESTERDAY" -> Right Yesterday+        "TODAY" -> Right Today+        "TOMORROW" -> Right Tomorrow+        x -> Left ("Unable to parse ConditionValueRelativeDate from: " <> x)++instance ToHttpApiData ConditionValueRelativeDate where+    toQueryParam = \case+        RelativeDateUnspecified -> "RELATIVE_DATE_UNSPECIFIED"+        PastYear -> "PAST_YEAR"+        PastMonth -> "PAST_MONTH"+        PastWeek -> "PAST_WEEK"+        Yesterday -> "YESTERDAY"+        Today -> "TODAY"+        Tomorrow -> "TOMORROW"++instance FromJSON ConditionValueRelativeDate where+    parseJSON = parseJSONText "ConditionValueRelativeDate"++instance ToJSON ConditionValueRelativeDate where+    toJSON = toJSONText++-- | The order data should be sorted.+data SortSpecSortOrder+    = SortOrderUnspecified+      -- ^ @SORT_ORDER_UNSPECIFIED@+      -- Default value, do not use this.+    | Ascending+      -- ^ @ASCENDING@+      -- Sort ascending.+    | Descending+      -- ^ @DESCENDING@+      -- Sort descending.+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)++instance Hashable SortSpecSortOrder++instance FromHttpApiData SortSpecSortOrder where+    parseQueryParam = \case+        "SORT_ORDER_UNSPECIFIED" -> Right SortOrderUnspecified+        "ASCENDING" -> Right Ascending+        "DESCENDING" -> Right Descending+        x -> Left ("Unable to parse SortSpecSortOrder from: " <> x)++instance ToHttpApiData SortSpecSortOrder where+    toQueryParam = \case+        SortOrderUnspecified -> "SORT_ORDER_UNSPECIFIED"+        Ascending -> "ASCENDING"+        Descending -> "DESCENDING"++instance FromJSON SortSpecSortOrder where+    parseJSON = parseJSONText "SortSpecSortOrder"++instance ToJSON SortSpecSortOrder where+    toJSON = toJSONText++-- | A function to summarize the value. If formula is set, the only supported+-- values are SUM and CUSTOM. If sourceColumnOffset is set, then \`CUSTOM\`+-- is not supported.+data PivotValueSummarizeFunction+    = PivotStandardValueFunctionUnspecified+      -- ^ @PIVOT_STANDARD_VALUE_FUNCTION_UNSPECIFIED@+      -- The default, do not use.+    | Sum+      -- ^ @SUM@+      -- Corresponds to the \`SUM\` function.+    | Counta+      -- ^ @COUNTA@+      -- Corresponds to the \`COUNTA\` function.+    | Count+      -- ^ @COUNT@+      -- Corresponds to the \`COUNT\` function.+    | Countunique+      -- ^ @COUNTUNIQUE@+      -- Corresponds to the \`COUNTUNIQUE\` function.+    | Average+      -- ^ @AVERAGE@+      -- Corresponds to the \`AVERAGE\` function.+    | Max+      -- ^ @MAX@+      -- Corresponds to the \`MAX\` function.+    | Min+      -- ^ @MIN@+      -- Corresponds to the \`MIN\` function.+    | Median+      -- ^ @MEDIAN@+      -- Corresponds to the \`MEDIAN\` function.+    | Product+      -- ^ @PRODUCT@+      -- Corresponds to the \`PRODUCT\` function.+    | Stdev+      -- ^ @STDEV@+      -- Corresponds to the \`STDEV\` function.+    | Stdevp+      -- ^ @STDEVP@+      -- Corresponds to the \`STDEVP\` function.+    | Var+      -- ^ @VAR@+      -- Corresponds to the \`VAR\` function.+    | Varp+      -- ^ @VARP@+      -- Corresponds to the \`VARP\` function.+    | Custom+      -- ^ @CUSTOM@+      -- Indicates the formula should be used as-is. Only valid if+      -- PivotValue.formula was set.+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)++instance Hashable PivotValueSummarizeFunction++instance FromHttpApiData PivotValueSummarizeFunction where+    parseQueryParam = \case+        "PIVOT_STANDARD_VALUE_FUNCTION_UNSPECIFIED" -> Right PivotStandardValueFunctionUnspecified+        "SUM" -> Right Sum+        "COUNTA" -> Right Counta+        "COUNT" -> Right Count+        "COUNTUNIQUE" -> Right Countunique+        "AVERAGE" -> Right Average+        "MAX" -> Right Max+        "MIN" -> Right Min+        "MEDIAN" -> Right Median+        "PRODUCT" -> Right Product+        "STDEV" -> Right Stdev+        "STDEVP" -> Right Stdevp+        "VAR" -> Right Var+        "VARP" -> Right Varp+        "CUSTOM" -> Right Custom+        x -> Left ("Unable to parse PivotValueSummarizeFunction from: " <> x)++instance ToHttpApiData PivotValueSummarizeFunction where+    toQueryParam = \case+        PivotStandardValueFunctionUnspecified -> "PIVOT_STANDARD_VALUE_FUNCTION_UNSPECIFIED"+        Sum -> "SUM"+        Counta -> "COUNTA"+        Count -> "COUNT"+        Countunique -> "COUNTUNIQUE"+        Average -> "AVERAGE"+        Max -> "MAX"+        Min -> "MIN"+        Median -> "MEDIAN"+        Product -> "PRODUCT"+        Stdev -> "STDEV"+        Stdevp -> "STDEVP"+        Var -> "VAR"+        Varp -> "VARP"+        Custom -> "CUSTOM"++instance FromJSON PivotValueSummarizeFunction where+    parseJSON = parseJSONText "PivotValueSummarizeFunction"++instance ToJSON PivotValueSummarizeFunction where+    toJSON = toJSONText++-- | How a hyperlink, if it exists, should be displayed in the cell.+data CellFormatHyperlinkDisplayType+    = HyperlinkDisplayTypeUnspecified+      -- ^ @HYPERLINK_DISPLAY_TYPE_UNSPECIFIED@+      -- The default value: the hyperlink is rendered. Do not use this.+    | Linked+      -- ^ @LINKED@+      -- A hyperlink should be explicitly rendered.+    | PlainText+      -- ^ @PLAIN_TEXT@+      -- A hyperlink should not be rendered.+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)++instance Hashable CellFormatHyperlinkDisplayType++instance FromHttpApiData CellFormatHyperlinkDisplayType where+    parseQueryParam = \case+        "HYPERLINK_DISPLAY_TYPE_UNSPECIFIED" -> Right HyperlinkDisplayTypeUnspecified+        "LINKED" -> Right Linked+        "PLAIN_TEXT" -> Right PlainText+        x -> Left ("Unable to parse CellFormatHyperlinkDisplayType from: " <> x)++instance ToHttpApiData CellFormatHyperlinkDisplayType where+    toQueryParam = \case+        HyperlinkDisplayTypeUnspecified -> "HYPERLINK_DISPLAY_TYPE_UNSPECIFIED"+        Linked -> "LINKED"+        PlainText -> "PLAIN_TEXT"++instance FromJSON CellFormatHyperlinkDisplayType where+    parseJSON = parseJSONText "CellFormatHyperlinkDisplayType"++instance ToJSON CellFormatHyperlinkDisplayType where+    toJSON = toJSONText++-- | The type of sheet. Defaults to GRID. This field cannot be changed once+-- set.+data SheetPropertiesSheetType+    = SheetTypeUnspecified+      -- ^ @SHEET_TYPE_UNSPECIFIED@+      -- Default value, do not use.+    | Grid+      -- ^ @GRID@+      -- The sheet is a grid.+    | Object+      -- ^ @OBJECT@+      -- The sheet has no grid and instead has an object like a chart or image.+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)++instance Hashable SheetPropertiesSheetType++instance FromHttpApiData SheetPropertiesSheetType where+    parseQueryParam = \case+        "SHEET_TYPE_UNSPECIFIED" -> Right SheetTypeUnspecified+        "GRID" -> Right Grid+        "OBJECT" -> Right Object+        x -> Left ("Unable to parse SheetPropertiesSheetType from: " <> x)++instance ToHttpApiData SheetPropertiesSheetType where+    toQueryParam = \case+        SheetTypeUnspecified -> "SHEET_TYPE_UNSPECIFIED"+        Grid -> "GRID"+        Object -> "OBJECT"++instance FromJSON SheetPropertiesSheetType where+    parseJSON = parseJSONText "SheetPropertiesSheetType"++instance ToJSON SheetPropertiesSheetType where+    toJSON = toJSONText++-- | How the cells should be merged.+data MergeCellsRequestMergeType+    = MergeAll+      -- ^ @MERGE_ALL@+      -- Create a single merge from the range+    | MergeColumns+      -- ^ @MERGE_COLUMNS@+      -- Create a merge for each column in the range+    | MergeRows+      -- ^ @MERGE_ROWS@+      -- Create a merge for each row in the range+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)++instance Hashable MergeCellsRequestMergeType++instance FromHttpApiData MergeCellsRequestMergeType where+    parseQueryParam = \case+        "MERGE_ALL" -> Right MergeAll+        "MERGE_COLUMNS" -> Right MergeColumns+        "MERGE_ROWS" -> Right MergeRows+        x -> Left ("Unable to parse MergeCellsRequestMergeType from: " <> x)++instance ToHttpApiData MergeCellsRequestMergeType where+    toQueryParam = \case+        MergeAll -> "MERGE_ALL"+        MergeColumns -> "MERGE_COLUMNS"+        MergeRows -> "MERGE_ROWS"++instance FromJSON MergeCellsRequestMergeType where+    parseJSON = parseJSONText "MergeCellsRequestMergeType"++instance ToJSON MergeCellsRequestMergeType where+    toJSON = toJSONText++-- | The horizontal alignment of the value in the cell.+data CellFormatHorizontalAlignment+    = HorizontalAlignUnspecified+      -- ^ @HORIZONTAL_ALIGN_UNSPECIFIED@+      -- The horizontal alignment is not specified. Do not use this.+    | Left'+      -- ^ @LEFT@+      -- The text is explicitly aligned to the left of the cell.+    | Center+      -- ^ @CENTER@+      -- The text is explicitly aligned to the center of the cell.+    | Right'+      -- ^ @RIGHT@+      -- The text is explicitly aligned to the right of the cell.+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)++instance Hashable CellFormatHorizontalAlignment++instance FromHttpApiData CellFormatHorizontalAlignment where+    parseQueryParam = \case+        "HORIZONTAL_ALIGN_UNSPECIFIED" -> Right HorizontalAlignUnspecified+        "LEFT" -> Right Left'+        "CENTER" -> Right Center+        "RIGHT" -> Right Right'+        x -> Left ("Unable to parse CellFormatHorizontalAlignment from: " <> x)++instance ToHttpApiData CellFormatHorizontalAlignment where+    toQueryParam = \case+        HorizontalAlignUnspecified -> "HORIZONTAL_ALIGN_UNSPECIFIED"+        Left' -> "LEFT"+        Center -> "CENTER"+        Right' -> "RIGHT"++instance FromJSON CellFormatHorizontalAlignment where+    parseJSON = parseJSONText "CellFormatHorizontalAlignment"++instance ToJSON CellFormatHorizontalAlignment where+    toJSON = toJSONText++-- | The type of condition.+data BooleanConditionType+    = ConditionTypeUnspecified+      -- ^ @CONDITION_TYPE_UNSPECIFIED@+      -- The default value, do not use.+    | NumberGreater+      -- ^ @NUMBER_GREATER@+      -- The cell\'s value must be greater than the condition\'s value. Supported+      -- by data validation, conditional formatting and filters. Requires a+      -- single ConditionValue.+    | NumberGreaterThanEQ+      -- ^ @NUMBER_GREATER_THAN_EQ@+      -- The cell\'s value must be greater than or equal to the condition\'s+      -- value. Supported by data validation, conditional formatting and filters.+      -- Requires a single ConditionValue.+    | NumberLess+      -- ^ @NUMBER_LESS@+      -- The cell\'s value must be less than the condition\'s value. Supported by+      -- data validation, conditional formatting and filters. Requires a single+      -- ConditionValue.+    | NumberLessThanEQ+      -- ^ @NUMBER_LESS_THAN_EQ@+      -- The cell\'s value must be less than or equal to the condition\'s value.+      -- Supported by data validation, conditional formatting and filters.+      -- Requires a single ConditionValue.+    | NumberEQ+      -- ^ @NUMBER_EQ@+      -- The cell\'s value must be equal to the condition\'s value. Supported by+      -- data validation, conditional formatting and filters. Requires a single+      -- ConditionValue.+    | NumberNotEQ+      -- ^ @NUMBER_NOT_EQ@+      -- The cell\'s value must be not equal to the condition\'s value. Supported+      -- by data validation, conditional formatting and filters. Requires a+      -- single ConditionValue.+    | NumberBetween+      -- ^ @NUMBER_BETWEEN@+      -- The cell\'s value must be between the two condition values. Supported by+      -- data validation, conditional formatting and filters. Requires exactly+      -- two ConditionValues.+    | NumberNotBetween+      -- ^ @NUMBER_NOT_BETWEEN@+      -- The cell\'s value must not be between the two condition values.+      -- Supported by data validation, conditional formatting and filters.+      -- Requires exactly two ConditionValues.+    | TextContains+      -- ^ @TEXT_CONTAINS@+      -- The cell\'s value must contain the condition\'s value. Supported by data+      -- validation, conditional formatting and filters. Requires a single+      -- ConditionValue.+    | TextNotContains+      -- ^ @TEXT_NOT_CONTAINS@+      -- The cell\'s value must not contain the condition\'s value. Supported by+      -- data validation, conditional formatting and filters. Requires a single+      -- ConditionValue.+    | TextStartsWith+      -- ^ @TEXT_STARTS_WITH@+      -- The cell\'s value must start with the condition\'s value. Supported by+      -- data validation, conditional formatting and filters. Requires a single+      -- ConditionValue.+    | TextEndsWith+      -- ^ @TEXT_ENDS_WITH@+      -- The cell\'s value must end with the condition\'s value. Supported by+      -- data validation, conditional formatting and filters. Requires a single+      -- ConditionValue.+    | TextEQ+      -- ^ @TEXT_EQ@+      -- The cell\'s value must be exactly the condition\'s value. Supported by+      -- data validation, conditional formatting and filters. Requires a single+      -- ConditionValue.+    | TextIsEmail+      -- ^ @TEXT_IS_EMAIL@+      -- The cell\'s value must be a valid email address. Supported by data+      -- validation. Requires no ConditionValues.+    | TextIsURL+      -- ^ @TEXT_IS_URL@+      -- The cell\'s value must be a valid URL. Supported by data validation.+      -- Requires no ConditionValues.+    | DateEQ+      -- ^ @DATE_EQ@+      -- The cell\'s value must be the same date as the condition\'s value.+      -- Supported by data validation, conditional formatting and filters.+      -- Requires a single ConditionValue.+    | DateBefore+      -- ^ @DATE_BEFORE@+      -- The cell\'s value must be before the date of the condition\'s value.+      -- Supported by data validation, conditional formatting and filters.+      -- Requires a single ConditionValue that may be a relative date.+    | DateAfter+      -- ^ @DATE_AFTER@+      -- The cell\'s value must be after the date of the condition\'s value.+      -- Supported by data validation, conditional formatting and filters.+      -- Requires a single ConditionValue that may be a relative date.+    | DateOnOrBefore+      -- ^ @DATE_ON_OR_BEFORE@+      -- The cell\'s value must be on or before the date of the condition\'s+      -- value. Supported by data validation, conditional formatting and filters.+      -- Requires a single ConditionValue that may be a relative date.+    | DateOnOrAfter+      -- ^ @DATE_ON_OR_AFTER@+      -- The cell\'s value must be on or after the date of the condition\'s+      -- value. Supported by data validation, conditional formatting and filters.+      -- Requires a single ConditionValue that may be a relative date.+    | DateBetween+      -- ^ @DATE_BETWEEN@+      -- The cell\'s value must be between the dates of the two condition values.+      -- Supported by data validation. Requires exactly two ConditionValues.+    | DateNotBetween+      -- ^ @DATE_NOT_BETWEEN@+      -- The cell\'s value must be outside the dates of the two condition values.+      -- Supported by data validation. Requires exactly two ConditionValues.+    | DateIsValid+      -- ^ @DATE_IS_VALID@+      -- The cell\'s value must be a date. Supported by data validation. Requires+      -- no ConditionValues.+    | OneOfRange+      -- ^ @ONE_OF_RANGE@+      -- The cell\'s value must be listed in the grid in condition value\'s+      -- range. Supported by data validation. Requires a single ConditionValue,+      -- and the value must be a valid range in A1 notation.+    | OneOfList+      -- ^ @ONE_OF_LIST@+      -- The cell\'s value must in the list of condition values. Supported by+      -- data validation. Supports any number of condition values, one per item+      -- in the list. Formulas are not supported in the values.+    | Blank+      -- ^ @BLANK@+      -- The cell\'s value must be empty. Supported by data validation,+      -- conditional formatting and filters. Requires no ConditionValues.+    | NotBlank+      -- ^ @NOT_BLANK@+      -- The cell\'s value must not be empty. Supported by data validation,+      -- conditional formatting and filters. Requires no ConditionValues.+    | CustomFormula+      -- ^ @CUSTOM_FORMULA@+      -- The condition\'s formula must evaluate to true. Supported by data+      -- validation, conditional formatting and filters. Requires a single+      -- ConditionValue.+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)++instance Hashable BooleanConditionType++instance FromHttpApiData BooleanConditionType where+    parseQueryParam = \case+        "CONDITION_TYPE_UNSPECIFIED" -> Right ConditionTypeUnspecified+        "NUMBER_GREATER" -> Right NumberGreater+        "NUMBER_GREATER_THAN_EQ" -> Right NumberGreaterThanEQ+        "NUMBER_LESS" -> Right NumberLess+        "NUMBER_LESS_THAN_EQ" -> Right NumberLessThanEQ+        "NUMBER_EQ" -> Right NumberEQ+        "NUMBER_NOT_EQ" -> Right NumberNotEQ+        "NUMBER_BETWEEN" -> Right NumberBetween+        "NUMBER_NOT_BETWEEN" -> Right NumberNotBetween+        "TEXT_CONTAINS" -> Right TextContains+        "TEXT_NOT_CONTAINS" -> Right TextNotContains+        "TEXT_STARTS_WITH" -> Right TextStartsWith+        "TEXT_ENDS_WITH" -> Right TextEndsWith+        "TEXT_EQ" -> Right TextEQ+        "TEXT_IS_EMAIL" -> Right TextIsEmail+        "TEXT_IS_URL" -> Right TextIsURL+        "DATE_EQ" -> Right DateEQ+        "DATE_BEFORE" -> Right DateBefore+        "DATE_AFTER" -> Right DateAfter+        "DATE_ON_OR_BEFORE" -> Right DateOnOrBefore+        "DATE_ON_OR_AFTER" -> Right DateOnOrAfter+        "DATE_BETWEEN" -> Right DateBetween+        "DATE_NOT_BETWEEN" -> Right DateNotBetween+        "DATE_IS_VALID" -> Right DateIsValid+        "ONE_OF_RANGE" -> Right OneOfRange+        "ONE_OF_LIST" -> Right OneOfList+        "BLANK" -> Right Blank+        "NOT_BLANK" -> Right NotBlank+        "CUSTOM_FORMULA" -> Right CustomFormula+        x -> Left ("Unable to parse BooleanConditionType from: " <> x)++instance ToHttpApiData BooleanConditionType where+    toQueryParam = \case+        ConditionTypeUnspecified -> "CONDITION_TYPE_UNSPECIFIED"+        NumberGreater -> "NUMBER_GREATER"+        NumberGreaterThanEQ -> "NUMBER_GREATER_THAN_EQ"+        NumberLess -> "NUMBER_LESS"+        NumberLessThanEQ -> "NUMBER_LESS_THAN_EQ"+        NumberEQ -> "NUMBER_EQ"+        NumberNotEQ -> "NUMBER_NOT_EQ"+        NumberBetween -> "NUMBER_BETWEEN"+        NumberNotBetween -> "NUMBER_NOT_BETWEEN"+        TextContains -> "TEXT_CONTAINS"+        TextNotContains -> "TEXT_NOT_CONTAINS"+        TextStartsWith -> "TEXT_STARTS_WITH"+        TextEndsWith -> "TEXT_ENDS_WITH"+        TextEQ -> "TEXT_EQ"+        TextIsEmail -> "TEXT_IS_EMAIL"+        TextIsURL -> "TEXT_IS_URL"+        DateEQ -> "DATE_EQ"+        DateBefore -> "DATE_BEFORE"+        DateAfter -> "DATE_AFTER"+        DateOnOrBefore -> "DATE_ON_OR_BEFORE"+        DateOnOrAfter -> "DATE_ON_OR_AFTER"+        DateBetween -> "DATE_BETWEEN"+        DateNotBetween -> "DATE_NOT_BETWEEN"+        DateIsValid -> "DATE_IS_VALID"+        OneOfRange -> "ONE_OF_RANGE"+        OneOfList -> "ONE_OF_LIST"+        Blank -> "BLANK"+        NotBlank -> "NOT_BLANK"+        CustomFormula -> "CUSTOM_FORMULA"++instance FromJSON BooleanConditionType where+    parseJSON = parseJSONText "BooleanConditionType"++instance ToJSON BooleanConditionType where+    toJSON = toJSONText++-- | The major dimension of the values. For output, if the spreadsheet data+-- is: \`A1=1,B1=2,A2=3,B2=4\`, then requesting+-- \`range=A1:B2,majorDimension=ROWS\` will return \`[[1,2],[3,4]]\`,+-- whereas requesting \`range=A1:B2,majorDimension=COLUMNS\` will return+-- \`[[1,3],[2,4]]\`. For input, with \`range=A1:B2,majorDimension=ROWS\`+-- then \`[[1,2],[3,4]]\` will set \`A1=1,B1=2,A2=3,B2=4\`. With+-- \`range=A1:B2,majorDimension=COLUMNS\` then \`[[1,2],[3,4]]\` will set+-- \`A1=1,B1=3,A2=2,B2=4\`. When writing, if this field is not set, it+-- defaults to ROWS.+data ValueRangeMajorDimension+    = VRMDDimensionUnspecified+      -- ^ @DIMENSION_UNSPECIFIED@+      -- The default value, do not use.+    | VRMDRows+      -- ^ @ROWS@+      -- Operates on the rows of a sheet.+    | VRMDColumns+      -- ^ @COLUMNS@+      -- Operates on the columns of a sheet.+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)++instance Hashable ValueRangeMajorDimension++instance FromHttpApiData ValueRangeMajorDimension where+    parseQueryParam = \case+        "DIMENSION_UNSPECIFIED" -> Right VRMDDimensionUnspecified+        "ROWS" -> Right VRMDRows+        "COLUMNS" -> Right VRMDColumns+        x -> Left ("Unable to parse ValueRangeMajorDimension from: " <> x)++instance ToHttpApiData ValueRangeMajorDimension where+    toQueryParam = \case+        VRMDDimensionUnspecified -> "DIMENSION_UNSPECIFIED"+        VRMDRows -> "ROWS"+        VRMDColumns -> "COLUMNS"++instance FromJSON ValueRangeMajorDimension where+    parseJSON = parseJSONText "ValueRangeMajorDimension"++instance ToJSON ValueRangeMajorDimension where+    toJSON = toJSONText++-- | The order the values in this group should be sorted.+data PivotGroupSortOrder+    = PGSOSortOrderUnspecified+      -- ^ @SORT_ORDER_UNSPECIFIED@+      -- Default value, do not use this.+    | PGSOAscending+      -- ^ @ASCENDING@+      -- Sort ascending.+    | PGSODescending+      -- ^ @DESCENDING@+      -- Sort descending.+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)++instance Hashable PivotGroupSortOrder++instance FromHttpApiData PivotGroupSortOrder where+    parseQueryParam = \case+        "SORT_ORDER_UNSPECIFIED" -> Right PGSOSortOrderUnspecified+        "ASCENDING" -> Right PGSOAscending+        "DESCENDING" -> Right PGSODescending+        x -> Left ("Unable to parse PivotGroupSortOrder from: " <> x)++instance ToHttpApiData PivotGroupSortOrder where+    toQueryParam = \case+        PGSOSortOrderUnspecified -> "SORT_ORDER_UNSPECIFIED"+        PGSOAscending -> "ASCENDING"+        PGSODescending -> "DESCENDING"++instance FromJSON PivotGroupSortOrder where+    parseJSON = parseJSONText "PivotGroupSortOrder"++instance ToJSON PivotGroupSortOrder where+    toJSON = toJSONText++-- | The type of the chart.+data BasicChartSpecChartType+    = BasicChartTypeUnspecified+      -- ^ @BASIC_CHART_TYPE_UNSPECIFIED@+      -- Default value, do not use.+    | Bar+      -- ^ @BAR@+      -- A </chart/interactive/docs/gallery/barchart bar chart>.+    | Line+      -- ^ @LINE@+      -- A </chart/interactive/docs/gallery/linechart line chart>.+    | Area+      -- ^ @AREA@+      -- An </chart/interactive/docs/gallery/areachart area chart>.+    | Column+      -- ^ @COLUMN@+      -- A </chart/interactive/docs/gallery/columnchart column chart>.+    | Scatter+      -- ^ @SCATTER@+      -- A </chart/interactive/docs/gallery/scatterchart scatter chart>.+    | Combo+      -- ^ @COMBO@+      -- A </chart/interactive/docs/gallery/combochart combo chart>.+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)++instance Hashable BasicChartSpecChartType++instance FromHttpApiData BasicChartSpecChartType where+    parseQueryParam = \case+        "BASIC_CHART_TYPE_UNSPECIFIED" -> Right BasicChartTypeUnspecified+        "BAR" -> Right Bar+        "LINE" -> Right Line+        "AREA" -> Right Area+        "COLUMN" -> Right Column+        "SCATTER" -> Right Scatter+        "COMBO" -> Right Combo+        x -> Left ("Unable to parse BasicChartSpecChartType from: " <> x)++instance ToHttpApiData BasicChartSpecChartType where+    toQueryParam = \case+        BasicChartTypeUnspecified -> "BASIC_CHART_TYPE_UNSPECIFIED"+        Bar -> "BAR"+        Line -> "LINE"+        Area -> "AREA"+        Column -> "COLUMN"+        Scatter -> "SCATTER"+        Combo -> "COMBO"++instance FromJSON BasicChartSpecChartType where+    parseJSON = parseJSONText "BasicChartSpecChartType"++instance ToJSON BasicChartSpecChartType where+    toJSON = toJSONText++-- | V1 error format.+data Xgafv+    = X1+      -- ^ @1@+      -- v1 error format+    | X2+      -- ^ @2@+      -- v2 error format+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)++instance Hashable Xgafv++instance FromHttpApiData Xgafv where+    parseQueryParam = \case+        "1" -> Right X1+        "2" -> Right X2+        x -> Left ("Unable to parse Xgafv from: " <> x)++instance ToHttpApiData Xgafv where+    toQueryParam = \case+        X1 -> "1"+        X2 -> "2"++instance FromJSON Xgafv where+    parseJSON = parseJSONText "Xgafv"++instance ToJSON Xgafv where+    toJSON = toJSONText++-- | The amount of time to wait before volatile functions are recalculated.+data SpreadsheetPropertiesAutoRecalc+    = RecalculationIntervalUnspecified+      -- ^ @RECALCULATION_INTERVAL_UNSPECIFIED@+      -- Default value. This value must not be used.+    | OnChange+      -- ^ @ON_CHANGE@+      -- Volatile functions are updated on every change.+    | Minute+      -- ^ @MINUTE@+      -- Volatile functions are updated on every change and every minute.+    | Hour+      -- ^ @HOUR@+      -- Volatile functions are updated on every change and hourly.+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)++instance Hashable SpreadsheetPropertiesAutoRecalc++instance FromHttpApiData SpreadsheetPropertiesAutoRecalc where+    parseQueryParam = \case+        "RECALCULATION_INTERVAL_UNSPECIFIED" -> Right RecalculationIntervalUnspecified+        "ON_CHANGE" -> Right OnChange+        "MINUTE" -> Right Minute+        "HOUR" -> Right Hour+        x -> Left ("Unable to parse SpreadsheetPropertiesAutoRecalc from: " <> x)++instance ToHttpApiData SpreadsheetPropertiesAutoRecalc where+    toQueryParam = \case+        RecalculationIntervalUnspecified -> "RECALCULATION_INTERVAL_UNSPECIFIED"+        OnChange -> "ON_CHANGE"+        Minute -> "MINUTE"+        Hour -> "HOUR"++instance FromJSON SpreadsheetPropertiesAutoRecalc where+    parseJSON = parseJSONText "SpreadsheetPropertiesAutoRecalc"++instance ToJSON SpreadsheetPropertiesAutoRecalc where+    toJSON = toJSONText++-- | How that data should be oriented when pasting.+data CopyPasteRequestPasteOrientation+    = Normal+      -- ^ @NORMAL@+      -- Paste normally.+    | Transpose+      -- ^ @TRANSPOSE@+      -- Paste transposed, where all rows become columns and vice versa.+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)++instance Hashable CopyPasteRequestPasteOrientation++instance FromHttpApiData CopyPasteRequestPasteOrientation where+    parseQueryParam = \case+        "NORMAL" -> Right Normal+        "TRANSPOSE" -> Right Transpose+        x -> Left ("Unable to parse CopyPasteRequestPasteOrientation from: " <> x)++instance ToHttpApiData CopyPasteRequestPasteOrientation where+    toQueryParam = \case+        Normal -> "NORMAL"+        Transpose -> "TRANSPOSE"++instance FromJSON CopyPasteRequestPasteOrientation where+    parseJSON = parseJSONText "CopyPasteRequestPasteOrientation"++instance ToJSON CopyPasteRequestPasteOrientation where+    toJSON = toJSONText++-- | How the data should be pasted.+data PasteDataRequestType+    = PDRTPasteNormal+      -- ^ @PASTE_NORMAL@+      -- Paste values, formulas, formats, and merges.+    | PDRTPasteValues+      -- ^ @PASTE_VALUES@+      -- Paste the values ONLY without formats, formulas, or merges.+    | PDRTPasteFormat+      -- ^ @PASTE_FORMAT@+      -- Paste the format and data validation only.+    | PDRTPasteNoBOrders+      -- ^ @PASTE_NO_BORDERS@+      -- Like PASTE_NORMAL but without borders.+    | PDRTPasteFormula+      -- ^ @PASTE_FORMULA@+      -- Paste the formulas only.+    | PDRTPasteDataValidation+      -- ^ @PASTE_DATA_VALIDATION@+      -- Paste the data validation only.+    | PDRTPasteConditionalFormatting+      -- ^ @PASTE_CONDITIONAL_FORMATTING@+      -- Paste the conditional formatting rules only.+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)++instance Hashable PasteDataRequestType++instance FromHttpApiData PasteDataRequestType where+    parseQueryParam = \case+        "PASTE_NORMAL" -> Right PDRTPasteNormal+        "PASTE_VALUES" -> Right PDRTPasteValues+        "PASTE_FORMAT" -> Right PDRTPasteFormat+        "PASTE_NO_BORDERS" -> Right PDRTPasteNoBOrders+        "PASTE_FORMULA" -> Right PDRTPasteFormula+        "PASTE_DATA_VALIDATION" -> Right PDRTPasteDataValidation+        "PASTE_CONDITIONAL_FORMATTING" -> Right PDRTPasteConditionalFormatting+        x -> Left ("Unable to parse PasteDataRequestType from: " <> x)++instance ToHttpApiData PasteDataRequestType where+    toQueryParam = \case+        PDRTPasteNormal -> "PASTE_NORMAL"+        PDRTPasteValues -> "PASTE_VALUES"+        PDRTPasteFormat -> "PASTE_FORMAT"+        PDRTPasteNoBOrders -> "PASTE_NO_BORDERS"+        PDRTPasteFormula -> "PASTE_FORMULA"+        PDRTPasteDataValidation -> "PASTE_DATA_VALIDATION"+        PDRTPasteConditionalFormatting -> "PASTE_CONDITIONAL_FORMATTING"++instance FromJSON PasteDataRequestType where+    parseJSON = parseJSONText "PasteDataRequestType"++instance ToJSON PasteDataRequestType where+    toJSON = toJSONText++-- | The direction of the text in the cell.+data CellFormatTextDirection+    = TextDirectionUnspecified+      -- ^ @TEXT_DIRECTION_UNSPECIFIED@+      -- The text direction is not specified. Do not use this.+    | LeftToRight+      -- ^ @LEFT_TO_RIGHT@+      -- The text direction of left-to-right was set by the user.+    | RightToLeft+      -- ^ @RIGHT_TO_LEFT@+      -- The text direction of right-to-left was set by the user.+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)++instance Hashable CellFormatTextDirection++instance FromHttpApiData CellFormatTextDirection where+    parseQueryParam = \case+        "TEXT_DIRECTION_UNSPECIFIED" -> Right TextDirectionUnspecified+        "LEFT_TO_RIGHT" -> Right LeftToRight+        "RIGHT_TO_LEFT" -> Right RightToLeft+        x -> Left ("Unable to parse CellFormatTextDirection from: " <> x)++instance ToHttpApiData CellFormatTextDirection where+    toQueryParam = \case+        TextDirectionUnspecified -> "TEXT_DIRECTION_UNSPECIFIED"+        LeftToRight -> "LEFT_TO_RIGHT"+        RightToLeft -> "RIGHT_TO_LEFT"++instance FromJSON CellFormatTextDirection where+    parseJSON = parseJSONText "CellFormatTextDirection"++instance ToJSON CellFormatTextDirection where+    toJSON = toJSONText++-- | The type of this series. Valid only if the chartType is COMBO. Different+-- types will change the way the series is visualized. Only LINE, AREA, and+-- COLUMN are supported.+data BasicChartSeriesType+    = BCSTBasicChartTypeUnspecified+      -- ^ @BASIC_CHART_TYPE_UNSPECIFIED@+      -- Default value, do not use.+    | BCSTBar+      -- ^ @BAR@+      -- A </chart/interactive/docs/gallery/barchart bar chart>.+    | BCSTLine+      -- ^ @LINE@+      -- A </chart/interactive/docs/gallery/linechart line chart>.+    | BCSTArea+      -- ^ @AREA@+      -- An </chart/interactive/docs/gallery/areachart area chart>.+    | BCSTColumn+      -- ^ @COLUMN@+      -- A </chart/interactive/docs/gallery/columnchart column chart>.+    | BCSTScatter+      -- ^ @SCATTER@+      -- A </chart/interactive/docs/gallery/scatterchart scatter chart>.+    | BCSTCombo+      -- ^ @COMBO@+      -- A </chart/interactive/docs/gallery/combochart combo chart>.+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)++instance Hashable BasicChartSeriesType++instance FromHttpApiData BasicChartSeriesType where+    parseQueryParam = \case+        "BASIC_CHART_TYPE_UNSPECIFIED" -> Right BCSTBasicChartTypeUnspecified+        "BAR" -> Right BCSTBar+        "LINE" -> Right BCSTLine+        "AREA" -> Right BCSTArea+        "COLUMN" -> Right BCSTColumn+        "SCATTER" -> Right BCSTScatter+        "COMBO" -> Right BCSTCombo+        x -> Left ("Unable to parse BasicChartSeriesType from: " <> x)++instance ToHttpApiData BasicChartSeriesType where+    toQueryParam = \case+        BCSTBasicChartTypeUnspecified -> "BASIC_CHART_TYPE_UNSPECIFIED"+        BCSTBar -> "BAR"+        BCSTLine -> "LINE"+        BCSTArea -> "AREA"+        BCSTColumn -> "COLUMN"+        BCSTScatter -> "SCATTER"+        BCSTCombo -> "COMBO"++instance FromJSON BasicChartSeriesType where+    parseJSON = parseJSONText "BasicChartSeriesType"++instance ToJSON BasicChartSeriesType where+    toJSON = toJSONText++-- | Determines how the charts will use hidden rows or columns.+data ChartSpecHiddenDimensionStrategy+    = ChartHiddenDimensionStrategyUnspecified+      -- ^ @CHART_HIDDEN_DIMENSION_STRATEGY_UNSPECIFIED@+      -- Default value, do not use.+    | SkipHiddenRowsAndColumns+      -- ^ @SKIP_HIDDEN_ROWS_AND_COLUMNS@+      -- Charts will skip hidden rows and columns.+    | SkipHiddenRows+      -- ^ @SKIP_HIDDEN_ROWS@+      -- Charts will skip hidden rows only.+    | SkipHiddenColumns+      -- ^ @SKIP_HIDDEN_COLUMNS@+      -- Charts will skip hidden columns only.+    | ShowAll+      -- ^ @SHOW_ALL@+      -- Charts will not skip any hidden rows or columns.+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)++instance Hashable ChartSpecHiddenDimensionStrategy++instance FromHttpApiData ChartSpecHiddenDimensionStrategy where+    parseQueryParam = \case+        "CHART_HIDDEN_DIMENSION_STRATEGY_UNSPECIFIED" -> Right ChartHiddenDimensionStrategyUnspecified+        "SKIP_HIDDEN_ROWS_AND_COLUMNS" -> Right SkipHiddenRowsAndColumns+        "SKIP_HIDDEN_ROWS" -> Right SkipHiddenRows+        "SKIP_HIDDEN_COLUMNS" -> Right SkipHiddenColumns+        "SHOW_ALL" -> Right ShowAll+        x -> Left ("Unable to parse ChartSpecHiddenDimensionStrategy from: " <> x)++instance ToHttpApiData ChartSpecHiddenDimensionStrategy where+    toQueryParam = \case+        ChartHiddenDimensionStrategyUnspecified -> "CHART_HIDDEN_DIMENSION_STRATEGY_UNSPECIFIED"+        SkipHiddenRowsAndColumns -> "SKIP_HIDDEN_ROWS_AND_COLUMNS"+        SkipHiddenRows -> "SKIP_HIDDEN_ROWS"+        SkipHiddenColumns -> "SKIP_HIDDEN_COLUMNS"+        ShowAll -> "SHOW_ALL"++instance FromJSON ChartSpecHiddenDimensionStrategy where+    parseJSON = parseJSONText "ChartSpecHiddenDimensionStrategy"++instance ToJSON ChartSpecHiddenDimensionStrategy where+    toJSON = toJSONText++-- | The style of the border.+data BOrderStyle+    = StyleUnspecified+      -- ^ @STYLE_UNSPECIFIED@+      -- The style is not specified. Do not use this.+    | Dotted+      -- ^ @DOTTED@+      -- The border is dotted.+    | Dashed+      -- ^ @DASHED@+      -- The border is dashed.+    | Solid+      -- ^ @SOLID@+      -- The border is a solid line.+    | None+      -- ^ @NONE@+      -- No border. Used only when updating a border in order to erase it.+    | Double+      -- ^ @DOUBLE@+      -- The border is two solid lines.+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)++instance Hashable BOrderStyle++instance FromHttpApiData BOrderStyle where+    parseQueryParam = \case+        "STYLE_UNSPECIFIED" -> Right StyleUnspecified+        "DOTTED" -> Right Dotted+        "DASHED" -> Right Dashed+        "SOLID" -> Right Solid+        "NONE" -> Right None+        "DOUBLE" -> Right Double+        x -> Left ("Unable to parse BOrderStyle from: " <> x)++instance ToHttpApiData BOrderStyle where+    toQueryParam = \case+        StyleUnspecified -> "STYLE_UNSPECIFIED"+        Dotted -> "DOTTED"+        Dashed -> "DASHED"+        Solid -> "SOLID"+        None -> "NONE"+        Double -> "DOUBLE"++instance FromJSON BOrderStyle where+    parseJSON = parseJSONText "BOrderStyle"++instance ToJSON BOrderStyle where+    toJSON = toJSONText++-- | What kind of data to paste. All the source data will be cut, regardless+-- of what is pasted.+data CutPasteRequestPasteType+    = CPRPTPasteNormal+      -- ^ @PASTE_NORMAL@+      -- Paste values, formulas, formats, and merges.+    | CPRPTPasteValues+      -- ^ @PASTE_VALUES@+      -- Paste the values ONLY without formats, formulas, or merges.+    | CPRPTPasteFormat+      -- ^ @PASTE_FORMAT@+      -- Paste the format and data validation only.+    | CPRPTPasteNoBOrders+      -- ^ @PASTE_NO_BORDERS@+      -- Like PASTE_NORMAL but without borders.+    | CPRPTPasteFormula+      -- ^ @PASTE_FORMULA@+      -- Paste the formulas only.+    | CPRPTPasteDataValidation+      -- ^ @PASTE_DATA_VALIDATION@+      -- Paste the data validation only.+    | CPRPTPasteConditionalFormatting+      -- ^ @PASTE_CONDITIONAL_FORMATTING@+      -- Paste the conditional formatting rules only.+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)++instance Hashable CutPasteRequestPasteType++instance FromHttpApiData CutPasteRequestPasteType where+    parseQueryParam = \case+        "PASTE_NORMAL" -> Right CPRPTPasteNormal+        "PASTE_VALUES" -> Right CPRPTPasteValues+        "PASTE_FORMAT" -> Right CPRPTPasteFormat+        "PASTE_NO_BORDERS" -> Right CPRPTPasteNoBOrders+        "PASTE_FORMULA" -> Right CPRPTPasteFormula+        "PASTE_DATA_VALIDATION" -> Right CPRPTPasteDataValidation+        "PASTE_CONDITIONAL_FORMATTING" -> Right CPRPTPasteConditionalFormatting+        x -> Left ("Unable to parse CutPasteRequestPasteType from: " <> x)++instance ToHttpApiData CutPasteRequestPasteType where+    toQueryParam = \case+        CPRPTPasteNormal -> "PASTE_NORMAL"+        CPRPTPasteValues -> "PASTE_VALUES"+        CPRPTPasteFormat -> "PASTE_FORMAT"+        CPRPTPasteNoBOrders -> "PASTE_NO_BORDERS"+        CPRPTPasteFormula -> "PASTE_FORMULA"+        CPRPTPasteDataValidation -> "PASTE_DATA_VALIDATION"+        CPRPTPasteConditionalFormatting -> "PASTE_CONDITIONAL_FORMATTING"++instance FromJSON CutPasteRequestPasteType where+    parseJSON = parseJSONText "CutPasteRequestPasteType"++instance ToJSON CutPasteRequestPasteType where+    toJSON = toJSONText++-- | The position of the chart legend.+data BasicChartSpecLegendPosition+    = BCSLPBasicChartLegendPositionUnspecified+      -- ^ @BASIC_CHART_LEGEND_POSITION_UNSPECIFIED@+      -- Default value, do not use.+    | BCSLPBottomLegend+      -- ^ @BOTTOM_LEGEND@+      -- The legend is rendered on the bottom of the chart.+    | BCSLPLeftLegend+      -- ^ @LEFT_LEGEND@+      -- The legend is rendered on the left of the chart.+    | BCSLPRightLegend+      -- ^ @RIGHT_LEGEND@+      -- The legend is rendered on the right of the chart.+    | BCSLPTopLegend+      -- ^ @TOP_LEGEND@+      -- The legend is rendered on the top of the chart.+    | BCSLPNoLegend+      -- ^ @NO_LEGEND@+      -- No legend is rendered.+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)++instance Hashable BasicChartSpecLegendPosition++instance FromHttpApiData BasicChartSpecLegendPosition where+    parseQueryParam = \case+        "BASIC_CHART_LEGEND_POSITION_UNSPECIFIED" -> Right BCSLPBasicChartLegendPositionUnspecified+        "BOTTOM_LEGEND" -> Right BCSLPBottomLegend+        "LEFT_LEGEND" -> Right BCSLPLeftLegend+        "RIGHT_LEGEND" -> Right BCSLPRightLegend+        "TOP_LEGEND" -> Right BCSLPTopLegend+        "NO_LEGEND" -> Right BCSLPNoLegend+        x -> Left ("Unable to parse BasicChartSpecLegendPosition from: " <> x)++instance ToHttpApiData BasicChartSpecLegendPosition where+    toQueryParam = \case+        BCSLPBasicChartLegendPositionUnspecified -> "BASIC_CHART_LEGEND_POSITION_UNSPECIFIED"+        BCSLPBottomLegend -> "BOTTOM_LEGEND"+        BCSLPLeftLegend -> "LEFT_LEGEND"+        BCSLPRightLegend -> "RIGHT_LEGEND"+        BCSLPTopLegend -> "TOP_LEGEND"+        BCSLPNoLegend -> "NO_LEGEND"++instance FromJSON BasicChartSpecLegendPosition where+    parseJSON = parseJSONText "BasicChartSpecLegendPosition"++instance ToJSON BasicChartSpecLegendPosition where+    toJSON = toJSONText++-- | The type of error.+data ErrorValueType+    = ErrorTypeUnspecified+      -- ^ @ERROR_TYPE_UNSPECIFIED@+      -- The default error type, do not use this.+    | Error'+      -- ^ @ERROR@+      -- Corresponds to the \`#ERROR!\` error.+    | NullValue+      -- ^ @NULL_VALUE@+      -- Corresponds to the \`#NULL!\` error.+    | DivideByZero+      -- ^ @DIVIDE_BY_ZERO@+      -- Corresponds to the \`#DIV\/0\` error.+    | Value+      -- ^ @VALUE@+      -- Corresponds to the \`#VALUE!\` error.+    | Ref+      -- ^ @REF@+      -- Corresponds to the \`#REF!\` error.+    | Name+      -- ^ @NAME@+      -- Corresponds to the \`#NAME?\` error.+    | Num+      -- ^ @NUM@+      -- Corresponds to the \`#NUM\`! error.+    | NA+      -- ^ @N_A@+      -- Corresponds to the \`#N\/A\` error.+    | Loading+      -- ^ @LOADING@+      -- Corresponds to the \`Loading...\` state.+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)++instance Hashable ErrorValueType++instance FromHttpApiData ErrorValueType where+    parseQueryParam = \case+        "ERROR_TYPE_UNSPECIFIED" -> Right ErrorTypeUnspecified+        "ERROR" -> Right Error'+        "NULL_VALUE" -> Right NullValue+        "DIVIDE_BY_ZERO" -> Right DivideByZero+        "VALUE" -> Right Value+        "REF" -> Right Ref+        "NAME" -> Right Name+        "NUM" -> Right Num+        "N_A" -> Right NA+        "LOADING" -> Right Loading+        x -> Left ("Unable to parse ErrorValueType from: " <> x)++instance ToHttpApiData ErrorValueType where+    toQueryParam = \case+        ErrorTypeUnspecified -> "ERROR_TYPE_UNSPECIFIED"+        Error' -> "ERROR"+        NullValue -> "NULL_VALUE"+        DivideByZero -> "DIVIDE_BY_ZERO"+        Value -> "VALUE"+        Ref -> "REF"+        Name -> "NAME"+        Num -> "NUM"+        NA -> "N_A"+        Loading -> "LOADING"++instance FromJSON ErrorValueType where+    parseJSON = parseJSONText "ErrorValueType"++instance ToJSON ErrorValueType where+    toJSON = toJSONText++-- | Whether values should be listed horizontally (as columns) or vertically+-- (as rows).+data PivotTableValueLayout+    = Horizontal+      -- ^ @HORIZONTAL@+      -- Values are laid out horizontally (as columns).+    | Vertical+      -- ^ @VERTICAL@+      -- Values are laid out vertically (as rows).+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)++instance Hashable PivotTableValueLayout++instance FromHttpApiData PivotTableValueLayout where+    parseQueryParam = \case+        "HORIZONTAL" -> Right Horizontal+        "VERTICAL" -> Right Vertical+        x -> Left ("Unable to parse PivotTableValueLayout from: " <> x)++instance ToHttpApiData PivotTableValueLayout where+    toQueryParam = \case+        Horizontal -> "HORIZONTAL"+        Vertical -> "VERTICAL"++instance FromJSON PivotTableValueLayout where+    parseJSON = parseJSONText "PivotTableValueLayout"++instance ToJSON PivotTableValueLayout where+    toJSON = toJSONText++-- | How the value should be interpreted.+data InterpolationPointType+    = IPTInterpolationPointTypeUnspecified+      -- ^ @INTERPOLATION_POINT_TYPE_UNSPECIFIED@+      -- The default value, do not use.+    | IPTMin+      -- ^ @MIN@+      -- The interpolation point will use the minimum value in the cells over the+      -- range of the conditional format.+    | IPTMax+      -- ^ @MAX@+      -- The interpolation point will use the maximum value in the cells over the+      -- range of the conditional format.+    | IPTNumber+      -- ^ @NUMBER@+      -- The interpolation point will use exactly the value in+      -- InterpolationPoint.value.+    | IPTPercent+      -- ^ @PERCENT@+      -- The interpolation point will be the given percentage over all the cells+      -- in the range of the conditional format. This is equivalent to NUMBER if+      -- the value was: \`=(MAX(FLATTEN(range)) * (value \/ 100)) ++      -- (MIN(FLATTEN(range)) * (1 - (value \/ 100)))\` (where errors in the+      -- range are ignored when flattening).+    | IPTPercentile+      -- ^ @PERCENTILE@+      -- The interpolation point will be the given percentile over all the cells+      -- in the range of the conditional format. This is equivalent to NUMBER if+      -- the value was: \`=PERCENTILE(FLATTEN(range), value \/ 100)\` (where+      -- errors in the range are ignored when flattening).+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)++instance Hashable InterpolationPointType++instance FromHttpApiData InterpolationPointType where+    parseQueryParam = \case+        "INTERPOLATION_POINT_TYPE_UNSPECIFIED" -> Right IPTInterpolationPointTypeUnspecified+        "MIN" -> Right IPTMin+        "MAX" -> Right IPTMax+        "NUMBER" -> Right IPTNumber+        "PERCENT" -> Right IPTPercent+        "PERCENTILE" -> Right IPTPercentile+        x -> Left ("Unable to parse InterpolationPointType from: " <> x)++instance ToHttpApiData InterpolationPointType where+    toQueryParam = \case+        IPTInterpolationPointTypeUnspecified -> "INTERPOLATION_POINT_TYPE_UNSPECIFIED"+        IPTMin -> "MIN"+        IPTMax -> "MAX"+        IPTNumber -> "NUMBER"+        IPTPercent -> "PERCENT"+        IPTPercentile -> "PERCENTILE"++instance FromJSON InterpolationPointType where+    parseJSON = parseJSONText "InterpolationPointType"++instance ToJSON InterpolationPointType where+    toJSON = toJSONText++-- | The delimiter type to use.+data TextToColumnsRequestDelimiterType+    = TTCRDTDelimiterTypeUnspecified+      -- ^ @DELIMITER_TYPE_UNSPECIFIED@+      -- Default value. This value must not be used.+    | TTCRDTComma+      -- ^ @COMMA@+      -- \",\"+    | TTCRDTSemicolon+      -- ^ @SEMICOLON@+      -- \";\"+    | TTCRDTPeriod+      -- ^ @PERIOD@+      -- \".\"+    | TTCRDTSpace+      -- ^ @SPACE@+      -- \" \"+    | TTCRDTCustom+      -- ^ @CUSTOM@+      -- A custom value as defined in delimiter.+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)++instance Hashable TextToColumnsRequestDelimiterType++instance FromHttpApiData TextToColumnsRequestDelimiterType where+    parseQueryParam = \case+        "DELIMITER_TYPE_UNSPECIFIED" -> Right TTCRDTDelimiterTypeUnspecified+        "COMMA" -> Right TTCRDTComma+        "SEMICOLON" -> Right TTCRDTSemicolon+        "PERIOD" -> Right TTCRDTPeriod+        "SPACE" -> Right TTCRDTSpace+        "CUSTOM" -> Right TTCRDTCustom+        x -> Left ("Unable to parse TextToColumnsRequestDelimiterType from: " <> x)++instance ToHttpApiData TextToColumnsRequestDelimiterType where+    toQueryParam = \case+        TTCRDTDelimiterTypeUnspecified -> "DELIMITER_TYPE_UNSPECIFIED"+        TTCRDTComma -> "COMMA"+        TTCRDTSemicolon -> "SEMICOLON"+        TTCRDTPeriod -> "PERIOD"+        TTCRDTSpace -> "SPACE"+        TTCRDTCustom -> "CUSTOM"++instance FromJSON TextToColumnsRequestDelimiterType where+    parseJSON = parseJSONText "TextToColumnsRequestDelimiterType"++instance ToJSON TextToColumnsRequestDelimiterType where+    toJSON = toJSONText
+ gogol-sheets.cabal view
@@ -0,0 +1,53 @@+name:                  gogol-sheets+version:               0.1.0+synopsis:              Google Sheets SDK.+homepage:              https://github.com/brendanhay/gogol+bug-reports:           https://github.com/brendanhay/gogol/issues+license:               OtherLicense+license-file:          LICENSE+author:                Brendan Hay+maintainer:            Brendan Hay <brendan.g.hay@gmail.com>+copyright:             Copyright (c) 2015-2016 Brendan Hay+category:              Network, Google, Cloud+build-type:            Simple+cabal-version:         >= 1.10+extra-source-files:    README.md++description:+    Reads and writes Google Sheets.+    .+    /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 @v4@+    of the API.++source-repository head+    type:     git+    location: git://github.com/brendanhay/gogol.git++library+    default-language:  Haskell2010+    hs-source-dirs:    src gen++    ghc-options:       -Wall++    exposed-modules:+          Network.Google.Resource.Sheets.Spreadsheets.BatchUpdate+        , Network.Google.Resource.Sheets.Spreadsheets.Create+        , Network.Google.Resource.Sheets.Spreadsheets.Get+        , Network.Google.Resource.Sheets.Spreadsheets.Sheets.CopyTo+        , Network.Google.Resource.Sheets.Spreadsheets.Values.BatchGet+        , Network.Google.Resource.Sheets.Spreadsheets.Values.BatchUpdate+        , Network.Google.Resource.Sheets.Spreadsheets.Values.Get+        , Network.Google.Resource.Sheets.Spreadsheets.Values.Update+        , Network.Google.Sheets+        , Network.Google.Sheets.Types++    other-modules:+          Network.Google.Sheets.Types.Product+        , Network.Google.Sheets.Types.Sum++    build-depends:+          gogol-core == 0.1.0.*+        , base       >= 4.7 && < 5