packages feed

gogol-sheets 0.4.0 → 0.5.0

raw patch · 21 files changed

+13834/−13330 lines, 21 filesdep ~gogol-corePVP ok

version bump matches the API change (PVP)

Dependency ranges changed: gogol-core

API changes (from Hackage documentation)

Files

README.md view
@@ -8,7 +8,7 @@  ## Version -`0.3.0`+`0.5.0`   ## Description
gen/Network/Google/Resource/Sheets/Spreadsheets/BatchUpdate.hs view
@@ -87,7 +87,8 @@ -- should reflect your changes. -- -- /See:/ 'spreadsheetsBatchUpdate' smart constructor.-data SpreadsheetsBatchUpdate = SpreadsheetsBatchUpdate'+data SpreadsheetsBatchUpdate =+  SpreadsheetsBatchUpdate'     { _sbuXgafv          :: !(Maybe Xgafv)     , _sbuUploadProtocol :: !(Maybe Text)     , _sbuAccessToken    :: !(Maybe Text)@@ -95,8 +96,10 @@     , _sbuUploadType     :: !(Maybe Text)     , _sbuPayload        :: !BatchUpdateSpreadsheetRequest     , _sbuCallback       :: !(Maybe Text)-    } deriving (Eq,Show,Data,Typeable,Generic)+    }+  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:@@ -119,7 +122,7 @@     -> BatchUpdateSpreadsheetRequest -- ^ 'sbuPayload'     -> SpreadsheetsBatchUpdate spreadsheetsBatchUpdate pSbuSpreadsheetId_ pSbuPayload_ =-    SpreadsheetsBatchUpdate'+  SpreadsheetsBatchUpdate'     { _sbuXgafv = Nothing     , _sbuUploadProtocol = Nothing     , _sbuAccessToken = Nothing@@ -128,6 +131,7 @@     , _sbuPayload = pSbuPayload_     , _sbuCallback = Nothing     }+  -- | V1 error format. sbuXgafv :: Lens' SpreadsheetsBatchUpdate (Maybe Xgafv)
gen/Network/Google/Resource/Sheets/Spreadsheets/Create.hs view
@@ -61,15 +61,18 @@ -- | Creates a spreadsheet, returning the newly created spreadsheet. -- -- /See:/ 'spreadsheetsCreate' smart constructor.-data SpreadsheetsCreate = SpreadsheetsCreate'+data SpreadsheetsCreate =+  SpreadsheetsCreate'     { _scXgafv          :: !(Maybe Xgafv)     , _scUploadProtocol :: !(Maybe Text)     , _scAccessToken    :: !(Maybe Text)     , _scUploadType     :: !(Maybe Text)     , _scPayload        :: !Spreadsheet     , _scCallback       :: !(Maybe Text)-    } deriving (Eq,Show,Data,Typeable,Generic)+    }+  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:@@ -89,7 +92,7 @@     :: Spreadsheet -- ^ 'scPayload'     -> SpreadsheetsCreate spreadsheetsCreate pScPayload_ =-    SpreadsheetsCreate'+  SpreadsheetsCreate'     { _scXgafv = Nothing     , _scUploadProtocol = Nothing     , _scAccessToken = Nothing@@ -97,6 +100,7 @@     , _scPayload = pScPayload_     , _scCallback = Nothing     }+  -- | V1 error format. scXgafv :: Lens' SpreadsheetsCreate (Maybe Xgafv)
gen/Network/Google/Resource/Sheets/Spreadsheets/DeveloperMetadata/Get.hs view
@@ -68,7 +68,8 @@ -- metadataId. -- -- /See:/ 'spreadsheetsDeveloperMetadataGet' smart constructor.-data SpreadsheetsDeveloperMetadataGet = SpreadsheetsDeveloperMetadataGet'+data SpreadsheetsDeveloperMetadataGet =+  SpreadsheetsDeveloperMetadataGet'     { _sdmgXgafv          :: !(Maybe Xgafv)     , _sdmgUploadProtocol :: !(Maybe Text)     , _sdmgMetadataId     :: !(Textual Int32)@@ -76,8 +77,10 @@     , _sdmgSpreadsheetId  :: !Text     , _sdmgUploadType     :: !(Maybe Text)     , _sdmgCallback       :: !(Maybe Text)-    } deriving (Eq,Show,Data,Typeable,Generic)+    }+  deriving (Eq, Show, Data, Typeable, Generic) + -- | Creates a value of 'SpreadsheetsDeveloperMetadataGet' with the minimum fields required to make a request. -- -- Use one of the following lenses to modify other fields as desired:@@ -100,7 +103,7 @@     -> Text -- ^ 'sdmgSpreadsheetId'     -> SpreadsheetsDeveloperMetadataGet spreadsheetsDeveloperMetadataGet pSdmgMetadataId_ pSdmgSpreadsheetId_ =-    SpreadsheetsDeveloperMetadataGet'+  SpreadsheetsDeveloperMetadataGet'     { _sdmgXgafv = Nothing     , _sdmgUploadProtocol = Nothing     , _sdmgMetadataId = _Coerce # pSdmgMetadataId_@@ -110,6 +113,7 @@     , _sdmgCallback = Nothing     } + -- | V1 error format. sdmgXgafv :: Lens' SpreadsheetsDeveloperMetadataGet (Maybe Xgafv) sdmgXgafv@@ -152,7 +156,8 @@   = lens _sdmgCallback (\ s a -> s{_sdmgCallback = a})  instance GoogleRequest-         SpreadsheetsDeveloperMetadataGet where+           SpreadsheetsDeveloperMetadataGet+         where         type Rs SpreadsheetsDeveloperMetadataGet =              DeveloperMetadata         type Scopes SpreadsheetsDeveloperMetadataGet =
gen/Network/Google/Resource/Sheets/Spreadsheets/DeveloperMetadata/Search.hs view
@@ -72,7 +72,8 @@ -- developer metadata associated with locations intersecting that region. -- -- /See:/ 'spreadsheetsDeveloperMetadataSearch' smart constructor.-data SpreadsheetsDeveloperMetadataSearch = SpreadsheetsDeveloperMetadataSearch'+data SpreadsheetsDeveloperMetadataSearch =+  SpreadsheetsDeveloperMetadataSearch'     { _sdmsXgafv          :: !(Maybe Xgafv)     , _sdmsUploadProtocol :: !(Maybe Text)     , _sdmsAccessToken    :: !(Maybe Text)@@ -80,8 +81,10 @@     , _sdmsUploadType     :: !(Maybe Text)     , _sdmsPayload        :: !SearchDeveloperMetadataRequest     , _sdmsCallback       :: !(Maybe Text)-    } deriving (Eq,Show,Data,Typeable,Generic)+    }+  deriving (Eq, Show, Data, Typeable, Generic) + -- | Creates a value of 'SpreadsheetsDeveloperMetadataSearch' with the minimum fields required to make a request. -- -- Use one of the following lenses to modify other fields as desired:@@ -104,7 +107,7 @@     -> SearchDeveloperMetadataRequest -- ^ 'sdmsPayload'     -> SpreadsheetsDeveloperMetadataSearch spreadsheetsDeveloperMetadataSearch pSdmsSpreadsheetId_ pSdmsPayload_ =-    SpreadsheetsDeveloperMetadataSearch'+  SpreadsheetsDeveloperMetadataSearch'     { _sdmsXgafv = Nothing     , _sdmsUploadProtocol = Nothing     , _sdmsAccessToken = Nothing@@ -114,6 +117,7 @@     , _sdmsCallback = Nothing     } + -- | V1 error format. sdmsXgafv :: Lens' SpreadsheetsDeveloperMetadataSearch (Maybe Xgafv) sdmsXgafv@@ -154,7 +158,8 @@   = lens _sdmsCallback (\ s a -> s{_sdmsCallback = a})  instance GoogleRequest-         SpreadsheetsDeveloperMetadataSearch where+           SpreadsheetsDeveloperMetadataSearch+         where         type Rs SpreadsheetsDeveloperMetadataSearch =              SearchDeveloperMetadataResponse         type Scopes SpreadsheetsDeveloperMetadataSearch =
gen/Network/Google/Resource/Sheets/Spreadsheets/Get.hs view
@@ -84,7 +84,8 @@ -- ranges. Ranges are specified using A1 notation. -- -- /See:/ 'spreadsheetsGet' smart constructor.-data SpreadsheetsGet = SpreadsheetsGet'+data SpreadsheetsGet =+  SpreadsheetsGet'     { _sgXgafv           :: !(Maybe Xgafv)     , _sgUploadProtocol  :: !(Maybe Text)     , _sgAccessToken     :: !(Maybe Text)@@ -93,8 +94,10 @@     , _sgRanges          :: !(Maybe [Text])     , _sgIncludeGridData :: !(Maybe Bool)     , _sgCallback        :: !(Maybe Text)-    } deriving (Eq,Show,Data,Typeable,Generic)+    }+  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:@@ -118,7 +121,7 @@     :: Text -- ^ 'sgSpreadsheetId'     -> SpreadsheetsGet spreadsheetsGet pSgSpreadsheetId_ =-    SpreadsheetsGet'+  SpreadsheetsGet'     { _sgXgafv = Nothing     , _sgUploadProtocol = Nothing     , _sgAccessToken = Nothing@@ -128,6 +131,7 @@     , _sgIncludeGridData = Nothing     , _sgCallback = Nothing     }+  -- | V1 error format. sgXgafv :: Lens' SpreadsheetsGet (Maybe Xgafv)
gen/Network/Google/Resource/Sheets/Spreadsheets/GetByDataFilter.hs view
@@ -85,7 +85,8 @@ -- retrieve only the specific fields of the spreadsheet that you want. -- -- /See:/ 'spreadsheetsGetByDataFilter' smart constructor.-data SpreadsheetsGetByDataFilter = SpreadsheetsGetByDataFilter'+data SpreadsheetsGetByDataFilter =+  SpreadsheetsGetByDataFilter'     { _sgbdfXgafv          :: !(Maybe Xgafv)     , _sgbdfUploadProtocol :: !(Maybe Text)     , _sgbdfAccessToken    :: !(Maybe Text)@@ -93,8 +94,10 @@     , _sgbdfUploadType     :: !(Maybe Text)     , _sgbdfPayload        :: !GetSpreadsheetByDataFilterRequest     , _sgbdfCallback       :: !(Maybe Text)-    } deriving (Eq,Show,Data,Typeable,Generic)+    }+  deriving (Eq, Show, Data, Typeable, Generic) + -- | Creates a value of 'SpreadsheetsGetByDataFilter' with the minimum fields required to make a request. -- -- Use one of the following lenses to modify other fields as desired:@@ -117,7 +120,7 @@     -> GetSpreadsheetByDataFilterRequest -- ^ 'sgbdfPayload'     -> SpreadsheetsGetByDataFilter spreadsheetsGetByDataFilter pSgbdfSpreadsheetId_ pSgbdfPayload_ =-    SpreadsheetsGetByDataFilter'+  SpreadsheetsGetByDataFilter'     { _sgbdfXgafv = Nothing     , _sgbdfUploadProtocol = Nothing     , _sgbdfAccessToken = Nothing@@ -126,6 +129,7 @@     , _sgbdfPayload = pSgbdfPayload_     , _sgbdfCallback = Nothing     }+  -- | V1 error format. sgbdfXgafv :: Lens' SpreadsheetsGetByDataFilter (Maybe Xgafv)
gen/Network/Google/Resource/Sheets/Spreadsheets/Sheets/CopyTo.hs view
@@ -68,7 +68,8 @@ -- the properties of the newly created sheet. -- -- /See:/ 'spreadsheetsSheetsCopyTo' smart constructor.-data SpreadsheetsSheetsCopyTo = SpreadsheetsSheetsCopyTo'+data SpreadsheetsSheetsCopyTo =+  SpreadsheetsSheetsCopyTo'     { _ssctXgafv          :: !(Maybe Xgafv)     , _ssctUploadProtocol :: !(Maybe Text)     , _ssctAccessToken    :: !(Maybe Text)@@ -77,8 +78,10 @@     , _ssctPayload        :: !CopySheetToAnotherSpreadsheetRequest     , _ssctSheetId        :: !(Textual Int32)     , _ssctCallback       :: !(Maybe Text)-    } deriving (Eq,Show,Data,Typeable,Generic)+    }+  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:@@ -104,7 +107,7 @@     -> Int32 -- ^ 'ssctSheetId'     -> SpreadsheetsSheetsCopyTo spreadsheetsSheetsCopyTo pSsctSpreadsheetId_ pSsctPayload_ pSsctSheetId_ =-    SpreadsheetsSheetsCopyTo'+  SpreadsheetsSheetsCopyTo'     { _ssctXgafv = Nothing     , _ssctUploadProtocol = Nothing     , _ssctAccessToken = Nothing@@ -114,6 +117,7 @@     , _ssctSheetId = _Coerce # pSsctSheetId_     , _ssctCallback = Nothing     }+  -- | V1 error format. ssctXgafv :: Lens' SpreadsheetsSheetsCopyTo (Maybe Xgafv)
gen/Network/Google/Resource/Sheets/Spreadsheets/Values/Append.hs view
@@ -96,7 +96,8 @@ -- data starts being written to. -- -- /See:/ 'spreadsheetsValuesAppend' smart constructor.-data SpreadsheetsValuesAppend = SpreadsheetsValuesAppend'+data SpreadsheetsValuesAppend =+  SpreadsheetsValuesAppend'     { _svaXgafv                        :: !(Maybe Xgafv)     , _svaUploadProtocol               :: !(Maybe Text)     , _svaAccessToken                  :: !(Maybe Text)@@ -110,8 +111,10 @@     , _svaResponseDateTimeRenderOption :: !(Maybe Text)     , _svaCallback                     :: !(Maybe Text)     , _svaResponseValueRenderOption    :: !(Maybe Text)-    } deriving (Eq,Show,Data,Typeable,Generic)+    }+  deriving (Eq, Show, Data, Typeable, Generic) + -- | Creates a value of 'SpreadsheetsValuesAppend' with the minimum fields required to make a request. -- -- Use one of the following lenses to modify other fields as desired:@@ -147,7 +150,7 @@     -> Text -- ^ 'svaRange'     -> SpreadsheetsValuesAppend spreadsheetsValuesAppend pSvaSpreadsheetId_ pSvaPayload_ pSvaRange_ =-    SpreadsheetsValuesAppend'+  SpreadsheetsValuesAppend'     { _svaXgafv = Nothing     , _svaUploadProtocol = Nothing     , _svaAccessToken = Nothing@@ -162,6 +165,7 @@     , _svaCallback = Nothing     , _svaResponseValueRenderOption = Nothing     }+  -- | V1 error format. svaXgafv :: Lens' SpreadsheetsValuesAppend (Maybe Xgafv)
gen/Network/Google/Resource/Sheets/Spreadsheets/Values/BatchClear.hs view
@@ -70,7 +70,8 @@ -- validation, etc..) are kept. -- -- /See:/ 'spreadsheetsValuesBatchClear' smart constructor.-data SpreadsheetsValuesBatchClear = SpreadsheetsValuesBatchClear'+data SpreadsheetsValuesBatchClear =+  SpreadsheetsValuesBatchClear'     { _svbcXgafv          :: !(Maybe Xgafv)     , _svbcUploadProtocol :: !(Maybe Text)     , _svbcAccessToken    :: !(Maybe Text)@@ -78,8 +79,10 @@     , _svbcUploadType     :: !(Maybe Text)     , _svbcPayload        :: !BatchClearValuesRequest     , _svbcCallback       :: !(Maybe Text)-    } deriving (Eq,Show,Data,Typeable,Generic)+    }+  deriving (Eq, Show, Data, Typeable, Generic) + -- | Creates a value of 'SpreadsheetsValuesBatchClear' with the minimum fields required to make a request. -- -- Use one of the following lenses to modify other fields as desired:@@ -102,7 +105,7 @@     -> BatchClearValuesRequest -- ^ 'svbcPayload'     -> SpreadsheetsValuesBatchClear spreadsheetsValuesBatchClear pSvbcSpreadsheetId_ pSvbcPayload_ =-    SpreadsheetsValuesBatchClear'+  SpreadsheetsValuesBatchClear'     { _svbcXgafv = Nothing     , _svbcUploadProtocol = Nothing     , _svbcAccessToken = Nothing@@ -111,6 +114,7 @@     , _svbcPayload = pSvbcPayload_     , _svbcCallback = Nothing     }+  -- | V1 error format. svbcXgafv :: Lens' SpreadsheetsValuesBatchClear (Maybe Xgafv)
gen/Network/Google/Resource/Sheets/Spreadsheets/Values/BatchClearByDataFilter.hs view
@@ -73,7 +73,8 @@ -- validation, etc..) are kept. -- -- /See:/ 'spreadsheetsValuesBatchClearByDataFilter' smart constructor.-data SpreadsheetsValuesBatchClearByDataFilter = SpreadsheetsValuesBatchClearByDataFilter'+data SpreadsheetsValuesBatchClearByDataFilter =+  SpreadsheetsValuesBatchClearByDataFilter'     { _svbcbdfXgafv          :: !(Maybe Xgafv)     , _svbcbdfUploadProtocol :: !(Maybe Text)     , _svbcbdfAccessToken    :: !(Maybe Text)@@ -81,8 +82,10 @@     , _svbcbdfUploadType     :: !(Maybe Text)     , _svbcbdfPayload        :: !BatchClearValuesByDataFilterRequest     , _svbcbdfCallback       :: !(Maybe Text)-    } deriving (Eq,Show,Data,Typeable,Generic)+    }+  deriving (Eq, Show, Data, Typeable, Generic) + -- | Creates a value of 'SpreadsheetsValuesBatchClearByDataFilter' with the minimum fields required to make a request. -- -- Use one of the following lenses to modify other fields as desired:@@ -105,7 +108,7 @@     -> BatchClearValuesByDataFilterRequest -- ^ 'svbcbdfPayload'     -> SpreadsheetsValuesBatchClearByDataFilter spreadsheetsValuesBatchClearByDataFilter pSvbcbdfSpreadsheetId_ pSvbcbdfPayload_ =-    SpreadsheetsValuesBatchClearByDataFilter'+  SpreadsheetsValuesBatchClearByDataFilter'     { _svbcbdfXgafv = Nothing     , _svbcbdfUploadProtocol = Nothing     , _svbcbdfAccessToken = Nothing@@ -115,6 +118,7 @@     , _svbcbdfCallback = Nothing     } + -- | V1 error format. svbcbdfXgafv :: Lens' SpreadsheetsValuesBatchClearByDataFilter (Maybe Xgafv) svbcbdfXgafv@@ -157,7 +161,8 @@       (\ s a -> s{_svbcbdfCallback = a})  instance GoogleRequest-         SpreadsheetsValuesBatchClearByDataFilter where+           SpreadsheetsValuesBatchClearByDataFilter+         where         type Rs SpreadsheetsValuesBatchClearByDataFilter =              BatchClearValuesByDataFilterResponse         type Scopes SpreadsheetsValuesBatchClearByDataFilter
gen/Network/Google/Resource/Sheets/Spreadsheets/Values/BatchGet.hs view
@@ -72,7 +72,8 @@ -- specify the spreadsheet ID and one or more ranges. -- -- /See:/ 'spreadsheetsValuesBatchGet' smart constructor.-data SpreadsheetsValuesBatchGet = SpreadsheetsValuesBatchGet'+data SpreadsheetsValuesBatchGet =+  SpreadsheetsValuesBatchGet'     { _svbgXgafv                :: !(Maybe Xgafv)     , _svbgValueRenderOption    :: !(Maybe Text)     , _svbgUploadProtocol       :: !(Maybe Text)@@ -83,8 +84,10 @@     , _svbgDateTimeRenderOption :: !(Maybe Text)     , _svbgMajorDimension       :: !(Maybe Text)     , _svbgCallback             :: !(Maybe Text)-    } deriving (Eq,Show,Data,Typeable,Generic)+    }+  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:@@ -112,7 +115,7 @@     :: Text -- ^ 'svbgSpreadsheetId'     -> SpreadsheetsValuesBatchGet spreadsheetsValuesBatchGet pSvbgSpreadsheetId_ =-    SpreadsheetsValuesBatchGet'+  SpreadsheetsValuesBatchGet'     { _svbgXgafv = Nothing     , _svbgValueRenderOption = Nothing     , _svbgUploadProtocol = Nothing@@ -124,6 +127,7 @@     , _svbgMajorDimension = Nothing     , _svbgCallback = Nothing     }+  -- | V1 error format. svbgXgafv :: Lens' SpreadsheetsValuesBatchGet (Maybe Xgafv)
gen/Network/Google/Resource/Sheets/Spreadsheets/Values/BatchGetByDataFilter.hs view
@@ -70,7 +70,8 @@ -- will be returned. -- -- /See:/ 'spreadsheetsValuesBatchGetByDataFilter' smart constructor.-data SpreadsheetsValuesBatchGetByDataFilter = SpreadsheetsValuesBatchGetByDataFilter'+data SpreadsheetsValuesBatchGetByDataFilter =+  SpreadsheetsValuesBatchGetByDataFilter'     { _svbgbdfXgafv          :: !(Maybe Xgafv)     , _svbgbdfUploadProtocol :: !(Maybe Text)     , _svbgbdfAccessToken    :: !(Maybe Text)@@ -78,8 +79,10 @@     , _svbgbdfUploadType     :: !(Maybe Text)     , _svbgbdfPayload        :: !BatchGetValuesByDataFilterRequest     , _svbgbdfCallback       :: !(Maybe Text)-    } deriving (Eq,Show,Data,Typeable,Generic)+    }+  deriving (Eq, Show, Data, Typeable, Generic) + -- | Creates a value of 'SpreadsheetsValuesBatchGetByDataFilter' with the minimum fields required to make a request. -- -- Use one of the following lenses to modify other fields as desired:@@ -102,7 +105,7 @@     -> BatchGetValuesByDataFilterRequest -- ^ 'svbgbdfPayload'     -> SpreadsheetsValuesBatchGetByDataFilter spreadsheetsValuesBatchGetByDataFilter pSvbgbdfSpreadsheetId_ pSvbgbdfPayload_ =-    SpreadsheetsValuesBatchGetByDataFilter'+  SpreadsheetsValuesBatchGetByDataFilter'     { _svbgbdfXgafv = Nothing     , _svbgbdfUploadProtocol = Nothing     , _svbgbdfAccessToken = Nothing@@ -112,6 +115,7 @@     , _svbgbdfCallback = Nothing     } + -- | V1 error format. svbgbdfXgafv :: Lens' SpreadsheetsValuesBatchGetByDataFilter (Maybe Xgafv) svbgbdfXgafv@@ -154,7 +158,8 @@       (\ s a -> s{_svbgbdfCallback = a})  instance GoogleRequest-         SpreadsheetsValuesBatchGetByDataFilter where+           SpreadsheetsValuesBatchGetByDataFilter+         where         type Rs SpreadsheetsValuesBatchGetByDataFilter =              BatchGetValuesByDataFilterResponse         type Scopes SpreadsheetsValuesBatchGetByDataFilter =
gen/Network/Google/Resource/Sheets/Spreadsheets/Values/BatchUpdate.hs view
@@ -68,7 +68,8 @@ -- ValueRanges. -- -- /See:/ 'spreadsheetsValuesBatchUpdate' smart constructor.-data SpreadsheetsValuesBatchUpdate = SpreadsheetsValuesBatchUpdate'+data SpreadsheetsValuesBatchUpdate =+  SpreadsheetsValuesBatchUpdate'     { _svbuXgafv          :: !(Maybe Xgafv)     , _svbuUploadProtocol :: !(Maybe Text)     , _svbuAccessToken    :: !(Maybe Text)@@ -76,8 +77,10 @@     , _svbuUploadType     :: !(Maybe Text)     , _svbuPayload        :: !BatchUpdateValuesRequest     , _svbuCallback       :: !(Maybe Text)-    } deriving (Eq,Show,Data,Typeable,Generic)+    }+  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:@@ -100,7 +103,7 @@     -> BatchUpdateValuesRequest -- ^ 'svbuPayload'     -> SpreadsheetsValuesBatchUpdate spreadsheetsValuesBatchUpdate pSvbuSpreadsheetId_ pSvbuPayload_ =-    SpreadsheetsValuesBatchUpdate'+  SpreadsheetsValuesBatchUpdate'     { _svbuXgafv = Nothing     , _svbuUploadProtocol = Nothing     , _svbuAccessToken = Nothing@@ -109,6 +112,7 @@     , _svbuPayload = pSvbuPayload_     , _svbuCallback = Nothing     }+  -- | V1 error format. svbuXgafv :: Lens' SpreadsheetsValuesBatchUpdate (Maybe Xgafv)
gen/Network/Google/Resource/Sheets/Spreadsheets/Values/BatchUpdateByDataFilter.hs view
@@ -69,7 +69,8 @@ -- DataFilterValueRanges. -- -- /See:/ 'spreadsheetsValuesBatchUpdateByDataFilter' smart constructor.-data SpreadsheetsValuesBatchUpdateByDataFilter = SpreadsheetsValuesBatchUpdateByDataFilter'+data SpreadsheetsValuesBatchUpdateByDataFilter =+  SpreadsheetsValuesBatchUpdateByDataFilter'     { _svbubdfXgafv          :: !(Maybe Xgafv)     , _svbubdfUploadProtocol :: !(Maybe Text)     , _svbubdfAccessToken    :: !(Maybe Text)@@ -77,8 +78,10 @@     , _svbubdfUploadType     :: !(Maybe Text)     , _svbubdfPayload        :: !BatchUpdateValuesByDataFilterRequest     , _svbubdfCallback       :: !(Maybe Text)-    } deriving (Eq,Show,Data,Typeable,Generic)+    }+  deriving (Eq, Show, Data, Typeable, Generic) + -- | Creates a value of 'SpreadsheetsValuesBatchUpdateByDataFilter' with the minimum fields required to make a request. -- -- Use one of the following lenses to modify other fields as desired:@@ -101,7 +104,7 @@     -> BatchUpdateValuesByDataFilterRequest -- ^ 'svbubdfPayload'     -> SpreadsheetsValuesBatchUpdateByDataFilter spreadsheetsValuesBatchUpdateByDataFilter pSvbubdfSpreadsheetId_ pSvbubdfPayload_ =-    SpreadsheetsValuesBatchUpdateByDataFilter'+  SpreadsheetsValuesBatchUpdateByDataFilter'     { _svbubdfXgafv = Nothing     , _svbubdfUploadProtocol = Nothing     , _svbubdfAccessToken = Nothing@@ -111,6 +114,7 @@     , _svbubdfCallback = Nothing     } + -- | V1 error format. svbubdfXgafv :: Lens' SpreadsheetsValuesBatchUpdateByDataFilter (Maybe Xgafv) svbubdfXgafv@@ -153,7 +157,8 @@       (\ s a -> s{_svbubdfCallback = a})  instance GoogleRequest-         SpreadsheetsValuesBatchUpdateByDataFilter where+           SpreadsheetsValuesBatchUpdateByDataFilter+         where         type Rs SpreadsheetsValuesBatchUpdateByDataFilter =              BatchUpdateValuesByDataFilterResponse         type Scopes SpreadsheetsValuesBatchUpdateByDataFilter
gen/Network/Google/Resource/Sheets/Spreadsheets/Values/Clear.hs view
@@ -72,7 +72,8 @@ -- kept. -- -- /See:/ 'spreadsheetsValuesClear' smart constructor.-data SpreadsheetsValuesClear = SpreadsheetsValuesClear'+data SpreadsheetsValuesClear =+  SpreadsheetsValuesClear'     { _svcXgafv          :: !(Maybe Xgafv)     , _svcUploadProtocol :: !(Maybe Text)     , _svcAccessToken    :: !(Maybe Text)@@ -81,8 +82,10 @@     , _svcPayload        :: !ClearValuesRequest     , _svcRange          :: !Text     , _svcCallback       :: !(Maybe Text)-    } deriving (Eq,Show,Data,Typeable,Generic)+    }+  deriving (Eq, Show, Data, Typeable, Generic) + -- | Creates a value of 'SpreadsheetsValuesClear' with the minimum fields required to make a request. -- -- Use one of the following lenses to modify other fields as desired:@@ -108,7 +111,7 @@     -> Text -- ^ 'svcRange'     -> SpreadsheetsValuesClear spreadsheetsValuesClear pSvcSpreadsheetId_ pSvcPayload_ pSvcRange_ =-    SpreadsheetsValuesClear'+  SpreadsheetsValuesClear'     { _svcXgafv = Nothing     , _svcUploadProtocol = Nothing     , _svcAccessToken = Nothing@@ -118,6 +121,7 @@     , _svcRange = pSvcRange_     , _svcCallback = Nothing     }+  -- | V1 error format. svcXgafv :: Lens' SpreadsheetsValuesClear (Maybe Xgafv)
gen/Network/Google/Resource/Sheets/Spreadsheets/Values/Get.hs view
@@ -72,7 +72,8 @@ -- the spreadsheet ID and a range. -- -- /See:/ 'spreadsheetsValuesGet' smart constructor.-data SpreadsheetsValuesGet = SpreadsheetsValuesGet'+data SpreadsheetsValuesGet =+  SpreadsheetsValuesGet'     { _svgXgafv                :: !(Maybe Xgafv)     , _svgValueRenderOption    :: !(Maybe Text)     , _svgUploadProtocol       :: !(Maybe Text)@@ -83,8 +84,10 @@     , _svgDateTimeRenderOption :: !(Maybe Text)     , _svgMajorDimension       :: !(Maybe Text)     , _svgCallback             :: !(Maybe Text)-    } deriving (Eq,Show,Data,Typeable,Generic)+    }+  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:@@ -113,7 +116,7 @@     -> Text -- ^ 'svgRange'     -> SpreadsheetsValuesGet spreadsheetsValuesGet pSvgSpreadsheetId_ pSvgRange_ =-    SpreadsheetsValuesGet'+  SpreadsheetsValuesGet'     { _svgXgafv = Nothing     , _svgValueRenderOption = Nothing     , _svgUploadProtocol = Nothing@@ -125,6 +128,7 @@     , _svgMajorDimension = Nothing     , _svgCallback = Nothing     }+  -- | V1 error format. svgXgafv :: Lens' SpreadsheetsValuesGet (Maybe Xgafv)
gen/Network/Google/Resource/Sheets/Spreadsheets/Values/Update.hs view
@@ -76,7 +76,8 @@ -- spreadsheet ID, range, and a valueInputOption. -- -- /See:/ 'spreadsheetsValuesUpdate' smart constructor.-data SpreadsheetsValuesUpdate = SpreadsheetsValuesUpdate'+data SpreadsheetsValuesUpdate =+  SpreadsheetsValuesUpdate'     { _svuXgafv                        :: !(Maybe Xgafv)     , _svuUploadProtocol               :: !(Maybe Text)     , _svuAccessToken                  :: !(Maybe Text)@@ -89,8 +90,10 @@     , _svuResponseDateTimeRenderOption :: !(Maybe Text)     , _svuCallback                     :: !(Maybe Text)     , _svuResponseValueRenderOption    :: !(Maybe Text)-    } deriving (Eq,Show,Data,Typeable,Generic)+    }+  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:@@ -124,7 +127,7 @@     -> Text -- ^ 'svuRange'     -> SpreadsheetsValuesUpdate spreadsheetsValuesUpdate pSvuSpreadsheetId_ pSvuPayload_ pSvuRange_ =-    SpreadsheetsValuesUpdate'+  SpreadsheetsValuesUpdate'     { _svuXgafv = Nothing     , _svuUploadProtocol = Nothing     , _svuAccessToken = Nothing@@ -138,6 +141,7 @@     , _svuCallback = Nothing     , _svuResponseValueRenderOption = Nothing     }+  -- | V1 error format. svuXgafv :: Lens' SpreadsheetsValuesUpdate (Maybe Xgafv)
gen/Network/Google/Sheets/Types.hs view
@@ -1639,21 +1639,21 @@  -- | View your Google Spreadsheets spreadsheetsReadOnlyScope :: Proxy '["https://www.googleapis.com/auth/spreadsheets.readonly"]-spreadsheetsReadOnlyScope = Proxy;+spreadsheetsReadOnlyScope = Proxy  -- | See and download all your Google Drive files driveReadOnlyScope :: Proxy '["https://www.googleapis.com/auth/drive.readonly"]-driveReadOnlyScope = Proxy;+driveReadOnlyScope = Proxy  -- | See, edit, create, and delete all of your Google Drive files driveScope :: Proxy '["https://www.googleapis.com/auth/drive"]-driveScope = Proxy;+driveScope = Proxy  -- | View and manage Google Drive files and folders that you have opened or -- created with this app driveFileScope :: Proxy '["https://www.googleapis.com/auth/drive.file"]-driveFileScope = Proxy;+driveFileScope = Proxy  -- | See, edit, create, and delete your spreadsheets in Google Drive spreadsheetsScope :: Proxy '["https://www.googleapis.com/auth/spreadsheets"]-spreadsheetsScope = Proxy;+spreadsheetsScope = Proxy
gen/Network/Google/Sheets/Types/Product.hs view
@@ -24,13272 +24,13703 @@ -- 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. When appending values, this field--- represents the range to search for a table, after which values will be--- appended.-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 GFieldMask)-    } 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 GFieldMask)-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])---- | The request for clearing more than one range of values in a spreadsheet.------ /See:/ 'batchClearValuesRequest' smart constructor.-newtype BatchClearValuesRequest = BatchClearValuesRequest'-    { _bcvrRanges :: Maybe [Text]-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'BatchClearValuesRequest' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'bcvrRanges'-batchClearValuesRequest-    :: BatchClearValuesRequest-batchClearValuesRequest =-    BatchClearValuesRequest'-    { _bcvrRanges = Nothing-    }---- | The ranges to clear, in A1 notation.-bcvrRanges :: Lens' BatchClearValuesRequest [Text]-bcvrRanges-  = lens _bcvrRanges (\ s a -> s{_bcvrRanges = a}) .-      _Default-      . _Coerce--instance FromJSON BatchClearValuesRequest where-        parseJSON-          = withObject "BatchClearValuesRequest"-              (\ o ->-                 BatchClearValuesRequest' <$>-                   (o .:? "ranges" .!= mempty))--instance ToJSON BatchClearValuesRequest where-        toJSON BatchClearValuesRequest'{..}-          = object (catMaybes [("ranges" .=) <$> _bcvrRanges])---- | The response from creating developer metadata.------ /See:/ 'createDeveloperMetadataResponse' smart constructor.-newtype CreateDeveloperMetadataResponse = CreateDeveloperMetadataResponse'-    { _cdmrDeveloperMetadata :: Maybe DeveloperMetadata-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'CreateDeveloperMetadataResponse' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'cdmrDeveloperMetadata'-createDeveloperMetadataResponse-    :: CreateDeveloperMetadataResponse-createDeveloperMetadataResponse =-    CreateDeveloperMetadataResponse'-    { _cdmrDeveloperMetadata = Nothing-    }---- | The developer metadata that was created.-cdmrDeveloperMetadata :: Lens' CreateDeveloperMetadataResponse (Maybe DeveloperMetadata)-cdmrDeveloperMetadata-  = lens _cdmrDeveloperMetadata-      (\ s a -> s{_cdmrDeveloperMetadata = a})--instance FromJSON CreateDeveloperMetadataResponse-         where-        parseJSON-          = withObject "CreateDeveloperMetadataResponse"-              (\ o ->-                 CreateDeveloperMetadataResponse' <$>-                   (o .:? "developerMetadata"))--instance ToJSON CreateDeveloperMetadataResponse where-        toJSON CreateDeveloperMetadataResponse'{..}-          = object-              (catMaybes-                 [("developerMetadata" .=) <$>-                    _cdmrDeveloperMetadata])---- | Allows you to organize the date-time values in a source data column into--- buckets based on selected parts of their date or time values. For--- example, consider a pivot table showing sales transactions by date:--- +----------+--------------+ | Date | SUM of Sales |--- +----------+--------------+ | 1\/1\/2017 | $621.14 | | 2\/3\/2017 |--- $708.84 | | 5\/8\/2017 | $326.84 | ... +----------+--------------+--- Applying a date-time group rule with a DateTimeRuleType of YEAR_MONTH--- results in the following pivot table. +--------------+--------------+ |--- Grouped Date | SUM of Sales | +--------------+--------------+ | 2017-Jan--- | $53,731.78 | | 2017-Feb | $83,475.32 | | 2017-Mar | $94,385.05 | ...--- +--------------+--------------+------ /See:/ 'dateTimeRule' smart constructor.-newtype DateTimeRule = DateTimeRule'-    { _dtrType :: Maybe DateTimeRuleType-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'DateTimeRule' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'dtrType'-dateTimeRule-    :: DateTimeRule-dateTimeRule =-    DateTimeRule'-    { _dtrType = Nothing-    }---- | The type of date-time grouping to apply.-dtrType :: Lens' DateTimeRule (Maybe DateTimeRuleType)-dtrType = lens _dtrType (\ s a -> s{_dtrType = a})--instance FromJSON DateTimeRule where-        parseJSON-          = withObject "DateTimeRule"-              (\ o -> DateTimeRule' <$> (o .:? "type"))--instance ToJSON DateTimeRule where-        toJSON DateTimeRule'{..}-          = object (catMaybes [("type" .=) <$> _dtrType])---- | Properties of a spreadsheet.------ /See:/ 'spreadsheetProperties' smart constructor.-data SpreadsheetProperties = SpreadsheetProperties'-    { _spDefaultFormat                :: !(Maybe CellFormat)-    , _spLocale                       :: !(Maybe Text)-    , _spIterativeCalculationSettings :: !(Maybe IterativeCalculationSettings)-    , _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'------ * 'spIterativeCalculationSettings'------ * 'spAutoRecalc'------ * 'spTitle'------ * 'spTimeZone'-spreadsheetProperties-    :: SpreadsheetProperties-spreadsheetProperties =-    SpreadsheetProperties'-    { _spDefaultFormat = Nothing-    , _spLocale = Nothing-    , _spIterativeCalculationSettings = 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})---- | Determines whether and how circular references are resolved with--- iterative calculation. Absence of this field means that circular--- references will result in calculation errors.-spIterativeCalculationSettings :: Lens' SpreadsheetProperties (Maybe IterativeCalculationSettings)-spIterativeCalculationSettings-  = lens _spIterativeCalculationSettings-      (\ s a -> s{_spIterativeCalculationSettings = 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 .:? "iterativeCalculationSettings")-                     <*> (o .:? "autoRecalc")-                     <*> (o .:? "title")-                     <*> (o .:? "timeZone"))--instance ToJSON SpreadsheetProperties where-        toJSON SpreadsheetProperties'{..}-          = object-              (catMaybes-                 [("defaultFormat" .=) <$> _spDefaultFormat,-                  ("locale" .=) <$> _spLocale,-                  ("iterativeCalculationSettings" .=) <$>-                    _spIterativeCalculationSettings,-                  ("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])---- | The request for clearing more than one range selected by a DataFilter in--- a spreadsheet.------ /See:/ 'batchClearValuesByDataFilterRequest' smart constructor.-newtype BatchClearValuesByDataFilterRequest = BatchClearValuesByDataFilterRequest'-    { _bcvbdfrDataFilters :: Maybe [DataFilter]-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'BatchClearValuesByDataFilterRequest' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'bcvbdfrDataFilters'-batchClearValuesByDataFilterRequest-    :: BatchClearValuesByDataFilterRequest-batchClearValuesByDataFilterRequest =-    BatchClearValuesByDataFilterRequest'-    { _bcvbdfrDataFilters = Nothing-    }---- | The DataFilters used to determine which ranges to clear.-bcvbdfrDataFilters :: Lens' BatchClearValuesByDataFilterRequest [DataFilter]-bcvbdfrDataFilters-  = lens _bcvbdfrDataFilters-      (\ s a -> s{_bcvbdfrDataFilters = a})-      . _Default-      . _Coerce--instance FromJSON BatchClearValuesByDataFilterRequest-         where-        parseJSON-          = withObject "BatchClearValuesByDataFilterRequest"-              (\ o ->-                 BatchClearValuesByDataFilterRequest' <$>-                   (o .:? "dataFilters" .!= mempty))--instance ToJSON BatchClearValuesByDataFilterRequest-         where-        toJSON BatchClearValuesByDataFilterRequest'{..}-          = object-              (catMaybes-                 [("dataFilters" .=) <$> _bcvbdfrDataFilters])---- | 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])---- | Deletes a group over the specified range by decrementing the depth of--- the dimensions in the range. For example, assume the sheet has a depth-1--- group over B:E and a depth-2 group over C:D. Deleting a group over D:E--- leaves the sheet with a depth-1 group over B:D and a depth-2 group over--- C:C.------ /See:/ 'deleteDimensionGroupRequest' smart constructor.-newtype DeleteDimensionGroupRequest = DeleteDimensionGroupRequest'-    { _ddgrRange :: Maybe DimensionRange-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'DeleteDimensionGroupRequest' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'ddgrRange'-deleteDimensionGroupRequest-    :: DeleteDimensionGroupRequest-deleteDimensionGroupRequest =-    DeleteDimensionGroupRequest'-    { _ddgrRange = Nothing-    }---- | The range of the group to be deleted.-ddgrRange :: Lens' DeleteDimensionGroupRequest (Maybe DimensionRange)-ddgrRange-  = lens _ddgrRange (\ s a -> s{_ddgrRange = a})--instance FromJSON DeleteDimensionGroupRequest where-        parseJSON-          = withObject "DeleteDimensionGroupRequest"-              (\ o ->-                 DeleteDimensionGroupRequest' <$> (o .:? "range"))--instance ToJSON DeleteDimensionGroupRequest where-        toJSON DeleteDimensionGroupRequest'{..}-          = object (catMaybes [("range" .=) <$> _ddgrRange])---- | Updates the state of the specified group.------ /See:/ 'updateDimensionGroupRequest' smart constructor.-data UpdateDimensionGroupRequest = UpdateDimensionGroupRequest'-    { _udgrDimensionGroup :: !(Maybe DimensionGroup)-    , _udgrFields         :: !(Maybe GFieldMask)-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'UpdateDimensionGroupRequest' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'udgrDimensionGroup'------ * 'udgrFields'-updateDimensionGroupRequest-    :: UpdateDimensionGroupRequest-updateDimensionGroupRequest =-    UpdateDimensionGroupRequest'-    { _udgrDimensionGroup = Nothing-    , _udgrFields = Nothing-    }---- | The group whose state should be updated. The range and depth of the--- group should specify a valid group on the sheet, and all other fields--- updated.-udgrDimensionGroup :: Lens' UpdateDimensionGroupRequest (Maybe DimensionGroup)-udgrDimensionGroup-  = lens _udgrDimensionGroup-      (\ s a -> s{_udgrDimensionGroup = a})---- | The fields that should be updated. At least one field must be specified.--- The root \`dimensionGroup\` is implied and should not be specified. A--- single \`\"*\"\` can be used as short-hand for listing every field.-udgrFields :: Lens' UpdateDimensionGroupRequest (Maybe GFieldMask)-udgrFields-  = lens _udgrFields (\ s a -> s{_udgrFields = a})--instance FromJSON UpdateDimensionGroupRequest where-        parseJSON-          = withObject "UpdateDimensionGroupRequest"-              (\ o ->-                 UpdateDimensionGroupRequest' <$>-                   (o .:? "dimensionGroup") <*> (o .:? "fields"))--instance ToJSON UpdateDimensionGroupRequest where-        toJSON UpdateDimensionGroupRequest'{..}-          = object-              (catMaybes-                 [("dimensionGroup" .=) <$> _udgrDimensionGroup,-                  ("fields" .=) <$> _udgrFields])---- | 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.--- The sheetId field is optional; if one is not set, an id will be randomly--- generated. (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])---- | A group over an interval of rows or columns on a sheet, which can--- contain or be contained within other groups. A group can be collapsed or--- expanded as a unit on the sheet.------ /See:/ 'dimensionGroup' smart constructor.-data DimensionGroup = DimensionGroup'-    { _dgCollapsed :: !(Maybe Bool)-    , _dgRange     :: !(Maybe DimensionRange)-    , _dgDepth     :: !(Maybe (Textual Int32))-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'DimensionGroup' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'dgCollapsed'------ * 'dgRange'------ * 'dgDepth'-dimensionGroup-    :: DimensionGroup-dimensionGroup =-    DimensionGroup'-    { _dgCollapsed = Nothing-    , _dgRange = Nothing-    , _dgDepth = Nothing-    }---- | This field is true if this group is collapsed. A collapsed group remains--- collapsed if an overlapping group at a shallower depth is expanded. A--- true value does not imply that all dimensions within the group are--- hidden, since a dimension\'s visibility can change independently from--- this group property. However, when this property is updated, all--- dimensions within it are set to hidden if this field is true, or set to--- visible if this field is false.-dgCollapsed :: Lens' DimensionGroup (Maybe Bool)-dgCollapsed-  = lens _dgCollapsed (\ s a -> s{_dgCollapsed = a})---- | The range over which this group exists.-dgRange :: Lens' DimensionGroup (Maybe DimensionRange)-dgRange = lens _dgRange (\ s a -> s{_dgRange = a})---- | The depth of the group, representing how many groups have a range that--- wholly contains the range of this group.-dgDepth :: Lens' DimensionGroup (Maybe Int32)-dgDepth-  = lens _dgDepth (\ s a -> s{_dgDepth = a}) .-      mapping _Coerce--instance FromJSON DimensionGroup where-        parseJSON-          = withObject "DimensionGroup"-              (\ o ->-                 DimensionGroup' <$>-                   (o .:? "collapsed") <*> (o .:? "range") <*>-                     (o .:? "depth"))--instance ToJSON DimensionGroup where-        toJSON DimensionGroup'{..}-          = object-              (catMaybes-                 [("collapsed" .=) <$> _dgCollapsed,-                  ("range" .=) <$> _dgRange,-                  ("depth" .=) <$> _dgDepth])---- | 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.-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 </chart/interactive/docs/gallery/bubblechart bubble chart>.------ /See:/ 'bubbleChartSpec' smart constructor.-data BubbleChartSpec = BubbleChartSpec'-    { _bcsBubbleTextStyle     :: !(Maybe TextFormat)-    , _bcsBubbleBOrderColor   :: !(Maybe Color)-    , _bcsLegendPosition      :: !(Maybe BubbleChartSpecLegendPosition)-    , _bcsDomain              :: !(Maybe ChartData)-    , _bcsSeries              :: !(Maybe ChartData)-    , _bcsBubbleLabels        :: !(Maybe ChartData)-    , _bcsGroupIds            :: !(Maybe ChartData)-    , _bcsBubbleMinRadiusSize :: !(Maybe (Textual Int32))-    , _bcsBubbleMaxRadiusSize :: !(Maybe (Textual Int32))-    , _bcsBubbleOpacity       :: !(Maybe (Textual Double))-    , _bcsBubbleSizes         :: !(Maybe ChartData)-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'BubbleChartSpec' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'bcsBubbleTextStyle'------ * 'bcsBubbleBOrderColor'------ * 'bcsLegendPosition'------ * 'bcsDomain'------ * 'bcsSeries'------ * 'bcsBubbleLabels'------ * 'bcsGroupIds'------ * 'bcsBubbleMinRadiusSize'------ * 'bcsBubbleMaxRadiusSize'------ * 'bcsBubbleOpacity'------ * 'bcsBubbleSizes'-bubbleChartSpec-    :: BubbleChartSpec-bubbleChartSpec =-    BubbleChartSpec'-    { _bcsBubbleTextStyle = Nothing-    , _bcsBubbleBOrderColor = Nothing-    , _bcsLegendPosition = Nothing-    , _bcsDomain = Nothing-    , _bcsSeries = Nothing-    , _bcsBubbleLabels = Nothing-    , _bcsGroupIds = Nothing-    , _bcsBubbleMinRadiusSize = Nothing-    , _bcsBubbleMaxRadiusSize = Nothing-    , _bcsBubbleOpacity = Nothing-    , _bcsBubbleSizes = Nothing-    }---- | The format of the text inside the bubbles. Underline and Strikethrough--- are not supported.-bcsBubbleTextStyle :: Lens' BubbleChartSpec (Maybe TextFormat)-bcsBubbleTextStyle-  = lens _bcsBubbleTextStyle-      (\ s a -> s{_bcsBubbleTextStyle = a})---- | The bubble border color.-bcsBubbleBOrderColor :: Lens' BubbleChartSpec (Maybe Color)-bcsBubbleBOrderColor-  = lens _bcsBubbleBOrderColor-      (\ s a -> s{_bcsBubbleBOrderColor = a})---- | Where the legend of the chart should be drawn.-bcsLegendPosition :: Lens' BubbleChartSpec (Maybe BubbleChartSpecLegendPosition)-bcsLegendPosition-  = lens _bcsLegendPosition-      (\ s a -> s{_bcsLegendPosition = a})---- | The data containing the bubble x-values. These values locate the bubbles--- in the chart horizontally.-bcsDomain :: Lens' BubbleChartSpec (Maybe ChartData)-bcsDomain-  = lens _bcsDomain (\ s a -> s{_bcsDomain = a})---- | The data contianing the bubble y-values. These values locate the bubbles--- in the chart vertically.-bcsSeries :: Lens' BubbleChartSpec (Maybe ChartData)-bcsSeries-  = lens _bcsSeries (\ s a -> s{_bcsSeries = a})---- | The data containing the bubble labels. These do not need to be unique.-bcsBubbleLabels :: Lens' BubbleChartSpec (Maybe ChartData)-bcsBubbleLabels-  = lens _bcsBubbleLabels-      (\ s a -> s{_bcsBubbleLabels = a})---- | The data containing the bubble group IDs. All bubbles with the same--- group ID are drawn in the same color. If bubble_sizes is specified then--- this field must also be specified but may contain blank values. This--- field is optional.-bcsGroupIds :: Lens' BubbleChartSpec (Maybe ChartData)-bcsGroupIds-  = lens _bcsGroupIds (\ s a -> s{_bcsGroupIds = a})---- | The minimum radius size of the bubbles, in pixels. If specific, the--- field must be a positive value.-bcsBubbleMinRadiusSize :: Lens' BubbleChartSpec (Maybe Int32)-bcsBubbleMinRadiusSize-  = lens _bcsBubbleMinRadiusSize-      (\ s a -> s{_bcsBubbleMinRadiusSize = a})-      . mapping _Coerce---- | The max radius size of the bubbles, in pixels. If specified, the field--- must be a positive value.-bcsBubbleMaxRadiusSize :: Lens' BubbleChartSpec (Maybe Int32)-bcsBubbleMaxRadiusSize-  = lens _bcsBubbleMaxRadiusSize-      (\ s a -> s{_bcsBubbleMaxRadiusSize = a})-      . mapping _Coerce---- | The opacity of the bubbles between 0 and 1.0. 0 is fully transparent and--- 1 is fully opaque.-bcsBubbleOpacity :: Lens' BubbleChartSpec (Maybe Double)-bcsBubbleOpacity-  = lens _bcsBubbleOpacity-      (\ s a -> s{_bcsBubbleOpacity = a})-      . mapping _Coerce---- | The data contianing the bubble sizes. Bubble sizes are used to draw the--- bubbles at different sizes relative to each other. If specified,--- group_ids must also be specified. This field is optional.-bcsBubbleSizes :: Lens' BubbleChartSpec (Maybe ChartData)-bcsBubbleSizes-  = lens _bcsBubbleSizes-      (\ s a -> s{_bcsBubbleSizes = a})--instance FromJSON BubbleChartSpec where-        parseJSON-          = withObject "BubbleChartSpec"-              (\ o ->-                 BubbleChartSpec' <$>-                   (o .:? "bubbleTextStyle") <*>-                     (o .:? "bubbleBorderColor")-                     <*> (o .:? "legendPosition")-                     <*> (o .:? "domain")-                     <*> (o .:? "series")-                     <*> (o .:? "bubbleLabels")-                     <*> (o .:? "groupIds")-                     <*> (o .:? "bubbleMinRadiusSize")-                     <*> (o .:? "bubbleMaxRadiusSize")-                     <*> (o .:? "bubbleOpacity")-                     <*> (o .:? "bubbleSizes"))--instance ToJSON BubbleChartSpec where-        toJSON BubbleChartSpec'{..}-          = object-              (catMaybes-                 [("bubbleTextStyle" .=) <$> _bcsBubbleTextStyle,-                  ("bubbleBorderColor" .=) <$> _bcsBubbleBOrderColor,-                  ("legendPosition" .=) <$> _bcsLegendPosition,-                  ("domain" .=) <$> _bcsDomain,-                  ("series" .=) <$> _bcsSeries,-                  ("bubbleLabels" .=) <$> _bcsBubbleLabels,-                  ("groupIds" .=) <$> _bcsGroupIds,-                  ("bubbleMinRadiusSize" .=) <$>-                    _bcsBubbleMinRadiusSize,-                  ("bubbleMaxRadiusSize" .=) <$>-                    _bcsBubbleMaxRadiusSize,-                  ("bubbleOpacity" .=) <$> _bcsBubbleOpacity,-                  ("bubbleSizes" .=) <$> _bcsBubbleSizes])---- | Deletes a range of cells, shifting other cells into the deleted area.------ /See:/ 'deleteRangeRequest' smart constructor.-data DeleteRangeRequest = DeleteRangeRequest'-    { _drrShiftDimension :: !(Maybe DeleteRangeRequestShiftDimension)-    , _drrRange          :: !(Maybe GridRange)-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'DeleteRangeRequest' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'drrShiftDimension'------ * 'drrRange'-deleteRangeRequest-    :: DeleteRangeRequest-deleteRangeRequest =-    DeleteRangeRequest'-    { _drrShiftDimension = Nothing-    , _drrRange = Nothing-    }---- | The dimension from which deleted cells will be replaced with. If ROWS,--- existing cells will be shifted upward to replace the deleted cells. If--- COLUMNS, existing cells will be shifted left to replace the deleted--- cells.-drrShiftDimension :: Lens' DeleteRangeRequest (Maybe DeleteRangeRequestShiftDimension)-drrShiftDimension-  = lens _drrShiftDimension-      (\ s a -> s{_drrShiftDimension = a})---- | The range of cells to delete.-drrRange :: Lens' DeleteRangeRequest (Maybe GridRange)-drrRange = lens _drrRange (\ s a -> s{_drrRange = a})--instance FromJSON DeleteRangeRequest where-        parseJSON-          = withObject "DeleteRangeRequest"-              (\ o ->-                 DeleteRangeRequest' <$>-                   (o .:? "shiftDimension") <*> (o .:? "range"))--instance ToJSON DeleteRangeRequest where-        toJSON DeleteRangeRequest'{..}-          = object-              (catMaybes-                 [("shiftDimension" .=) <$> _drrShiftDimension,-                  ("range" .=) <$> _drrRange])---- | A sheet in a spreadsheet.------ /See:/ 'sheet' smart constructor.-data Sheet = Sheet'-    { _sColumnGroups       :: !(Maybe [DimensionGroup])-    , _sData               :: !(Maybe [GridData])-    , _sMerges             :: !(Maybe [GridRange])-    , _sRowGroups          :: !(Maybe [DimensionGroup])-    , _sProtectedRanges    :: !(Maybe [ProtectedRange])-    , _sBandedRanges       :: !(Maybe [BandedRange])-    , _sCharts             :: !(Maybe [EmbeddedChart])-    , _sBasicFilter        :: !(Maybe BasicFilter)-    , _sDeveloperMetadata  :: !(Maybe [DeveloperMetadata])-    , _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:------ * 'sColumnGroups'------ * 'sData'------ * 'sMerges'------ * 'sRowGroups'------ * 'sProtectedRanges'------ * 'sBandedRanges'------ * 'sCharts'------ * 'sBasicFilter'------ * 'sDeveloperMetadata'------ * 'sConditionalFormats'------ * 'sFilterViews'------ * 'sProperties'-sheet-    :: Sheet-sheet =-    Sheet'-    { _sColumnGroups = Nothing-    , _sData = Nothing-    , _sMerges = Nothing-    , _sRowGroups = Nothing-    , _sProtectedRanges = Nothing-    , _sBandedRanges = Nothing-    , _sCharts = Nothing-    , _sBasicFilter = Nothing-    , _sDeveloperMetadata = Nothing-    , _sConditionalFormats = Nothing-    , _sFilterViews = Nothing-    , _sProperties = Nothing-    }---- | All column groups on this sheet, ordered by increasing range start--- index, then by group depth.-sColumnGroups :: Lens' Sheet [DimensionGroup]-sColumnGroups-  = lens _sColumnGroups-      (\ s a -> s{_sColumnGroups = a})-      . _Default-      . _Coerce---- | 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---- | All row groups on this sheet, ordered by increasing range start index,--- then by group depth.-sRowGroups :: Lens' Sheet [DimensionGroup]-sRowGroups-  = lens _sRowGroups (\ s a -> s{_sRowGroups = a}) .-      _Default-      . _Coerce---- | The protected ranges in this sheet.-sProtectedRanges :: Lens' Sheet [ProtectedRange]-sProtectedRanges-  = lens _sProtectedRanges-      (\ s a -> s{_sProtectedRanges = a})-      . _Default-      . _Coerce---- | The banded (alternating colors) ranges on this sheet.-sBandedRanges :: Lens' Sheet [BandedRange]-sBandedRanges-  = lens _sBandedRanges-      (\ s a -> s{_sBandedRanges = 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 developer metadata associated with a sheet.-sDeveloperMetadata :: Lens' Sheet [DeveloperMetadata]-sDeveloperMetadata-  = lens _sDeveloperMetadata-      (\ s a -> s{_sDeveloperMetadata = a})-      . _Default-      . _Coerce---- | 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 .:? "columnGroups" .!= mempty) <*>-                     (o .:? "data" .!= mempty)-                     <*> (o .:? "merges" .!= mempty)-                     <*> (o .:? "rowGroups" .!= mempty)-                     <*> (o .:? "protectedRanges" .!= mempty)-                     <*> (o .:? "bandedRanges" .!= mempty)-                     <*> (o .:? "charts" .!= mempty)-                     <*> (o .:? "basicFilter")-                     <*> (o .:? "developerMetadata" .!= mempty)-                     <*> (o .:? "conditionalFormats" .!= mempty)-                     <*> (o .:? "filterViews" .!= mempty)-                     <*> (o .:? "properties"))--instance ToJSON Sheet where-        toJSON Sheet'{..}-          = object-              (catMaybes-                 [("columnGroups" .=) <$> _sColumnGroups,-                  ("data" .=) <$> _sData, ("merges" .=) <$> _sMerges,-                  ("rowGroups" .=) <$> _sRowGroups,-                  ("protectedRanges" .=) <$> _sProtectedRanges,-                  ("bandedRanges" .=) <$> _sBandedRanges,-                  ("charts" .=) <$> _sCharts,-                  ("basicFilter" .=) <$> _sBasicFilter,-                  ("developerMetadata" .=) <$> _sDeveloperMetadata,-                  ("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])---- | The response when clearing a range of values in a spreadsheet.------ /See:/ 'clearValuesResponse' smart constructor.-data ClearValuesResponse = ClearValuesResponse'-    { _cvrClearedRange  :: !(Maybe Text)-    , _cvrSpreadsheetId :: !(Maybe Text)-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'ClearValuesResponse' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'cvrClearedRange'------ * 'cvrSpreadsheetId'-clearValuesResponse-    :: ClearValuesResponse-clearValuesResponse =-    ClearValuesResponse'-    { _cvrClearedRange = Nothing-    , _cvrSpreadsheetId = Nothing-    }---- | The range (in A1 notation) that was cleared. (If the request was for an--- unbounded range or a ranger larger than the bounds of the sheet, this--- will be the actual range that was cleared, bounded to the sheet\'s--- limits.)-cvrClearedRange :: Lens' ClearValuesResponse (Maybe Text)-cvrClearedRange-  = lens _cvrClearedRange-      (\ s a -> s{_cvrClearedRange = a})---- | The spreadsheet the updates were applied to.-cvrSpreadsheetId :: Lens' ClearValuesResponse (Maybe Text)-cvrSpreadsheetId-  = lens _cvrSpreadsheetId-      (\ s a -> s{_cvrSpreadsheetId = a})--instance FromJSON ClearValuesResponse where-        parseJSON-          = withObject "ClearValuesResponse"-              (\ o ->-                 ClearValuesResponse' <$>-                   (o .:? "clearedRange") <*> (o .:? "spreadsheetId"))--instance ToJSON ClearValuesResponse where-        toJSON ClearValuesResponse'{..}-          = object-              (catMaybes-                 [("clearedRange" .=) <$> _cvrClearedRange,-                  ("spreadsheetId" .=) <$> _cvrSpreadsheetId])---- | 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 GFieldMask)-    } 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 GFieldMask)-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 is 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])---- | The response when retrieving more than one range of values in a--- spreadsheet selected by DataFilters.------ /See:/ 'batchGetValuesByDataFilterResponse' smart constructor.-data BatchGetValuesByDataFilterResponse = BatchGetValuesByDataFilterResponse'-    { _bgvbdfrSpreadsheetId :: !(Maybe Text)-    , _bgvbdfrValueRanges   :: !(Maybe [MatchedValueRange])-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'BatchGetValuesByDataFilterResponse' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'bgvbdfrSpreadsheetId'------ * 'bgvbdfrValueRanges'-batchGetValuesByDataFilterResponse-    :: BatchGetValuesByDataFilterResponse-batchGetValuesByDataFilterResponse =-    BatchGetValuesByDataFilterResponse'-    { _bgvbdfrSpreadsheetId = Nothing-    , _bgvbdfrValueRanges = Nothing-    }---- | The ID of the spreadsheet the data was retrieved from.-bgvbdfrSpreadsheetId :: Lens' BatchGetValuesByDataFilterResponse (Maybe Text)-bgvbdfrSpreadsheetId-  = lens _bgvbdfrSpreadsheetId-      (\ s a -> s{_bgvbdfrSpreadsheetId = a})---- | The requested values with the list of data filters that matched them.-bgvbdfrValueRanges :: Lens' BatchGetValuesByDataFilterResponse [MatchedValueRange]-bgvbdfrValueRanges-  = lens _bgvbdfrValueRanges-      (\ s a -> s{_bgvbdfrValueRanges = a})-      . _Default-      . _Coerce--instance FromJSON BatchGetValuesByDataFilterResponse-         where-        parseJSON-          = withObject "BatchGetValuesByDataFilterResponse"-              (\ o ->-                 BatchGetValuesByDataFilterResponse' <$>-                   (o .:? "spreadsheetId") <*>-                     (o .:? "valueRanges" .!= mempty))--instance ToJSON BatchGetValuesByDataFilterResponse-         where-        toJSON BatchGetValuesByDataFilterResponse'{..}-          = object-              (catMaybes-                 [("spreadsheetId" .=) <$> _bgvbdfrSpreadsheetId,-                  ("valueRanges" .=) <$> _bgvbdfrValueRanges])---- | 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 GFieldMask)-    } 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 GFieldMask)-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])---- | The result of adding a group.------ /See:/ 'addDimensionGroupResponse' smart constructor.-newtype AddDimensionGroupResponse = AddDimensionGroupResponse'-    { _adgrDimensionGroups :: Maybe [DimensionGroup]-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'AddDimensionGroupResponse' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'adgrDimensionGroups'-addDimensionGroupResponse-    :: AddDimensionGroupResponse-addDimensionGroupResponse =-    AddDimensionGroupResponse'-    { _adgrDimensionGroups = Nothing-    }---- | All groups of a dimension after adding a group to that dimension.-adgrDimensionGroups :: Lens' AddDimensionGroupResponse [DimensionGroup]-adgrDimensionGroups-  = lens _adgrDimensionGroups-      (\ s a -> s{_adgrDimensionGroups = a})-      . _Default-      . _Coerce--instance FromJSON AddDimensionGroupResponse where-        parseJSON-          = withObject "AddDimensionGroupResponse"-              (\ o ->-                 AddDimensionGroupResponse' <$>-                   (o .:? "dimensionGroups" .!= mempty))--instance ToJSON AddDimensionGroupResponse where-        toJSON AddDimensionGroupResponse'{..}-          = object-              (catMaybes-                 [("dimensionGroups" .=) <$> _adgrDimensionGroups])---- | 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])---- | The response when updating a range of values in a spreadsheet.------ /See:/ 'batchUpdateValuesByDataFilterResponse' smart constructor.-data BatchUpdateValuesByDataFilterResponse = BatchUpdateValuesByDataFilterResponse'-    { _buvbdfrTotalUpdatedColumns :: !(Maybe (Textual Int32))-    , _buvbdfrResponses           :: !(Maybe [UpdateValuesByDataFilterResponse])-    , _buvbdfrSpreadsheetId       :: !(Maybe Text)-    , _buvbdfrTotalUpdatedSheets  :: !(Maybe (Textual Int32))-    , _buvbdfrTotalUpdatedCells   :: !(Maybe (Textual Int32))-    , _buvbdfrTotalUpdatedRows    :: !(Maybe (Textual Int32))-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'BatchUpdateValuesByDataFilterResponse' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'buvbdfrTotalUpdatedColumns'------ * 'buvbdfrResponses'------ * 'buvbdfrSpreadsheetId'------ * 'buvbdfrTotalUpdatedSheets'------ * 'buvbdfrTotalUpdatedCells'------ * 'buvbdfrTotalUpdatedRows'-batchUpdateValuesByDataFilterResponse-    :: BatchUpdateValuesByDataFilterResponse-batchUpdateValuesByDataFilterResponse =-    BatchUpdateValuesByDataFilterResponse'-    { _buvbdfrTotalUpdatedColumns = Nothing-    , _buvbdfrResponses = Nothing-    , _buvbdfrSpreadsheetId = Nothing-    , _buvbdfrTotalUpdatedSheets = Nothing-    , _buvbdfrTotalUpdatedCells = Nothing-    , _buvbdfrTotalUpdatedRows = Nothing-    }---- | The total number of columns where at least one cell in the column was--- updated.-buvbdfrTotalUpdatedColumns :: Lens' BatchUpdateValuesByDataFilterResponse (Maybe Int32)-buvbdfrTotalUpdatedColumns-  = lens _buvbdfrTotalUpdatedColumns-      (\ s a -> s{_buvbdfrTotalUpdatedColumns = a})-      . mapping _Coerce---- | The response for each range updated.-buvbdfrResponses :: Lens' BatchUpdateValuesByDataFilterResponse [UpdateValuesByDataFilterResponse]-buvbdfrResponses-  = lens _buvbdfrResponses-      (\ s a -> s{_buvbdfrResponses = a})-      . _Default-      . _Coerce---- | The spreadsheet the updates were applied to.-buvbdfrSpreadsheetId :: Lens' BatchUpdateValuesByDataFilterResponse (Maybe Text)-buvbdfrSpreadsheetId-  = lens _buvbdfrSpreadsheetId-      (\ s a -> s{_buvbdfrSpreadsheetId = a})---- | The total number of sheets where at least one cell in the sheet was--- updated.-buvbdfrTotalUpdatedSheets :: Lens' BatchUpdateValuesByDataFilterResponse (Maybe Int32)-buvbdfrTotalUpdatedSheets-  = lens _buvbdfrTotalUpdatedSheets-      (\ s a -> s{_buvbdfrTotalUpdatedSheets = a})-      . mapping _Coerce---- | The total number of cells updated.-buvbdfrTotalUpdatedCells :: Lens' BatchUpdateValuesByDataFilterResponse (Maybe Int32)-buvbdfrTotalUpdatedCells-  = lens _buvbdfrTotalUpdatedCells-      (\ s a -> s{_buvbdfrTotalUpdatedCells = a})-      . mapping _Coerce---- | The total number of rows where at least one cell in the row was updated.-buvbdfrTotalUpdatedRows :: Lens' BatchUpdateValuesByDataFilterResponse (Maybe Int32)-buvbdfrTotalUpdatedRows-  = lens _buvbdfrTotalUpdatedRows-      (\ s a -> s{_buvbdfrTotalUpdatedRows = a})-      . mapping _Coerce--instance FromJSON-         BatchUpdateValuesByDataFilterResponse where-        parseJSON-          = withObject "BatchUpdateValuesByDataFilterResponse"-              (\ o ->-                 BatchUpdateValuesByDataFilterResponse' <$>-                   (o .:? "totalUpdatedColumns") <*>-                     (o .:? "responses" .!= mempty)-                     <*> (o .:? "spreadsheetId")-                     <*> (o .:? "totalUpdatedSheets")-                     <*> (o .:? "totalUpdatedCells")-                     <*> (o .:? "totalUpdatedRows"))--instance ToJSON BatchUpdateValuesByDataFilterResponse-         where-        toJSON BatchUpdateValuesByDataFilterResponse'{..}-          = object-              (catMaybes-                 [("totalUpdatedColumns" .=) <$>-                    _buvbdfrTotalUpdatedColumns,-                  ("responses" .=) <$> _buvbdfrResponses,-                  ("spreadsheetId" .=) <$> _buvbdfrSpreadsheetId,-                  ("totalUpdatedSheets" .=) <$>-                    _buvbdfrTotalUpdatedSheets,-                  ("totalUpdatedCells" .=) <$>-                    _buvbdfrTotalUpdatedCells,-                  ("totalUpdatedRows" .=) <$>-                    _buvbdfrTotalUpdatedRows])---- | The response when updating a range of values in a spreadsheet.------ /See:/ 'appendValuesResponse' smart constructor.-data AppendValuesResponse = AppendValuesResponse'-    { _avrSpreadsheetId :: !(Maybe Text)-    , _avrUpdates       :: !(Maybe UpdateValuesResponse)-    , _avrTableRange    :: !(Maybe Text)-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'AppendValuesResponse' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'avrSpreadsheetId'------ * 'avrUpdates'------ * 'avrTableRange'-appendValuesResponse-    :: AppendValuesResponse-appendValuesResponse =-    AppendValuesResponse'-    { _avrSpreadsheetId = Nothing-    , _avrUpdates = Nothing-    , _avrTableRange = Nothing-    }---- | The spreadsheet the updates were applied to.-avrSpreadsheetId :: Lens' AppendValuesResponse (Maybe Text)-avrSpreadsheetId-  = lens _avrSpreadsheetId-      (\ s a -> s{_avrSpreadsheetId = a})---- | Information about the updates that were applied.-avrUpdates :: Lens' AppendValuesResponse (Maybe UpdateValuesResponse)-avrUpdates-  = lens _avrUpdates (\ s a -> s{_avrUpdates = a})---- | The range (in A1 notation) of the table that values are being appended--- to (before the values were appended). Empty if no table was found.-avrTableRange :: Lens' AppendValuesResponse (Maybe Text)-avrTableRange-  = lens _avrTableRange-      (\ s a -> s{_avrTableRange = a})--instance FromJSON AppendValuesResponse where-        parseJSON-          = withObject "AppendValuesResponse"-              (\ o ->-                 AppendValuesResponse' <$>-                   (o .:? "spreadsheetId") <*> (o .:? "updates") <*>-                     (o .:? "tableRange"))--instance ToJSON AppendValuesResponse where-        toJSON AppendValuesResponse'{..}-          = object-              (catMaybes-                 [("spreadsheetId" .=) <$> _avrSpreadsheetId,-                  ("updates" .=) <$> _avrUpdates,-                  ("tableRange" .=) <$> _avrTableRange])---- | 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 GFieldMask)-    } 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 GFieldMask)-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'-    { _bTargetAxis :: !(Maybe BasicChartSeriesTargetAxis)-    , _bColor      :: !(Maybe Color)-    , _bSeries     :: !(Maybe ChartData)-    , _bType       :: !(Maybe BasicChartSeriesType)-    , _bLineStyle  :: !(Maybe LineStyle)-    } 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:------ * 'bTargetAxis'------ * 'bColor'------ * 'bSeries'------ * 'bType'------ * 'bLineStyle'-basicChartSeries-    :: BasicChartSeries-basicChartSeries =-    BasicChartSeries'-    { _bTargetAxis = Nothing-    , _bColor = Nothing-    , _bSeries = Nothing-    , _bType = Nothing-    , _bLineStyle = 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.-bTargetAxis :: Lens' BasicChartSeries (Maybe BasicChartSeriesTargetAxis)-bTargetAxis-  = lens _bTargetAxis (\ s a -> s{_bTargetAxis = a})---- | The color for elements (i.e. bars, lines, points) associated with this--- series. If empty, a default color is used.-bColor :: Lens' BasicChartSeries (Maybe Color)-bColor = lens _bColor (\ s a -> s{_bColor = a})---- | The data being visualized in this chart series.-bSeries :: Lens' BasicChartSeries (Maybe ChartData)-bSeries = lens _bSeries (\ s a -> s{_bSeries = 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.-bType :: Lens' BasicChartSeries (Maybe BasicChartSeriesType)-bType = lens _bType (\ s a -> s{_bType = a})---- | The line style of this series. Valid only if the chartType is AREA,--- LINE, or SCATTER. COMBO charts are also supported if the series chart--- type is AREA or LINE.-bLineStyle :: Lens' BasicChartSeries (Maybe LineStyle)-bLineStyle-  = lens _bLineStyle (\ s a -> s{_bLineStyle = a})--instance FromJSON BasicChartSeries where-        parseJSON-          = withObject "BasicChartSeries"-              (\ o ->-                 BasicChartSeries' <$>-                   (o .:? "targetAxis") <*> (o .:? "color") <*>-                     (o .:? "series")-                     <*> (o .:? "type")-                     <*> (o .:? "lineStyle"))--instance ToJSON BasicChartSeries where-        toJSON BasicChartSeries'{..}-          = object-              (catMaybes-                 [("targetAxis" .=) <$> _bTargetAxis,-                  ("color" .=) <$> _bColor, ("series" .=) <$> _bSeries,-                  ("type" .=) <$> _bType,-                  ("lineStyle" .=) <$> _bLineStyle])---- | An optional setting on a PivotGroup that defines buckets for the values--- in the source data column rather than breaking out each individual--- value. Only one PivotGroup with a group rule may be added for each--- column in the source data, though on any given column you may add both a--- PivotGroup that has a rule and a PivotGroup that does not.------ /See:/ 'pivotGroupRule' smart constructor.-data PivotGroupRule = PivotGroupRule'-    { _pgrDateTimeRule  :: !(Maybe DateTimeRule)-    , _pgrManualRule    :: !(Maybe ManualRule)-    , _pgrHistogramRule :: !(Maybe HistogramRule)-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'PivotGroupRule' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'pgrDateTimeRule'------ * 'pgrManualRule'------ * 'pgrHistogramRule'-pivotGroupRule-    :: PivotGroupRule-pivotGroupRule =-    PivotGroupRule'-    { _pgrDateTimeRule = Nothing-    , _pgrManualRule = Nothing-    , _pgrHistogramRule = Nothing-    }---- | A DateTimeRule.-pgrDateTimeRule :: Lens' PivotGroupRule (Maybe DateTimeRule)-pgrDateTimeRule-  = lens _pgrDateTimeRule-      (\ s a -> s{_pgrDateTimeRule = a})---- | A ManualRule.-pgrManualRule :: Lens' PivotGroupRule (Maybe ManualRule)-pgrManualRule-  = lens _pgrManualRule-      (\ s a -> s{_pgrManualRule = a})---- | A HistogramRule.-pgrHistogramRule :: Lens' PivotGroupRule (Maybe HistogramRule)-pgrHistogramRule-  = lens _pgrHistogramRule-      (\ s a -> s{_pgrHistogramRule = a})--instance FromJSON PivotGroupRule where-        parseJSON-          = withObject "PivotGroupRule"-              (\ o ->-                 PivotGroupRule' <$>-                   (o .:? "dateTimeRule") <*> (o .:? "manualRule") <*>-                     (o .:? "histogramRule"))--instance ToJSON PivotGroupRule where-        toJSON PivotGroupRule'{..}-          = object-              (catMaybes-                 [("dateTimeRule" .=) <$> _pgrDateTimeRule,-                  ("manualRule" .=) <$> _pgrManualRule,-                  ("histogramRule" .=) <$> _pgrHistogramRule])---- | 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. The protectedRangeId field is optional;--- if one is not set, an id will be randomly generated. (It is an error to--- specify the ID of a range that already exists.)-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 GFieldMask)-    } 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 GFieldMask)-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 is parsed as if the user--- typed into a cell. Formulas are supported (and must begin with an \`=\`--- or a \'+\').-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])---- | The request for clearing a range of values in a spreadsheet.------ /See:/ 'clearValuesRequest' smart constructor.-data ClearValuesRequest =-    ClearValuesRequest'-    deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'ClearValuesRequest' with the minimum fields required to make a request.----clearValuesRequest-    :: ClearValuesRequest-clearValuesRequest = ClearValuesRequest'--instance FromJSON ClearValuesRequest where-        parseJSON-          = withObject "ClearValuesRequest"-              (\ o -> pure ClearValuesRequest')--instance ToJSON ClearValuesRequest where-        toJSON = const emptyObject---- | 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])---- | The request for retrieving a range of values in a spreadsheet selected--- by a set of DataFilters.------ /See:/ 'batchGetValuesByDataFilterRequest' smart constructor.-data BatchGetValuesByDataFilterRequest = BatchGetValuesByDataFilterRequest'-    { _bgvbdfrValueRenderOption    :: !(Maybe BatchGetValuesByDataFilterRequestValueRenderOption)-    , _bgvbdfrDataFilters          :: !(Maybe [DataFilter])-    , _bgvbdfrDateTimeRenderOption :: !(Maybe BatchGetValuesByDataFilterRequestDateTimeRenderOption)-    , _bgvbdfrMajorDimension       :: !(Maybe BatchGetValuesByDataFilterRequestMajorDimension)-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'BatchGetValuesByDataFilterRequest' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'bgvbdfrValueRenderOption'------ * 'bgvbdfrDataFilters'------ * 'bgvbdfrDateTimeRenderOption'------ * 'bgvbdfrMajorDimension'-batchGetValuesByDataFilterRequest-    :: BatchGetValuesByDataFilterRequest-batchGetValuesByDataFilterRequest =-    BatchGetValuesByDataFilterRequest'-    { _bgvbdfrValueRenderOption = Nothing-    , _bgvbdfrDataFilters = Nothing-    , _bgvbdfrDateTimeRenderOption = Nothing-    , _bgvbdfrMajorDimension = Nothing-    }---- | How values should be represented in the output. The default render--- option is ValueRenderOption.FORMATTED_VALUE.-bgvbdfrValueRenderOption :: Lens' BatchGetValuesByDataFilterRequest (Maybe BatchGetValuesByDataFilterRequestValueRenderOption)-bgvbdfrValueRenderOption-  = lens _bgvbdfrValueRenderOption-      (\ s a -> s{_bgvbdfrValueRenderOption = a})---- | The data filters used to match the ranges of values to retrieve. Ranges--- that match any of the specified data filters will be included in the--- response.-bgvbdfrDataFilters :: Lens' BatchGetValuesByDataFilterRequest [DataFilter]-bgvbdfrDataFilters-  = lens _bgvbdfrDataFilters-      (\ s a -> s{_bgvbdfrDataFilters = a})-      . _Default-      . _Coerce---- | How dates, times, and durations should be represented in the output.--- This is ignored if value_render_option is FORMATTED_VALUE. The default--- dateTime render option is [DateTimeRenderOption.SERIAL_NUMBER].-bgvbdfrDateTimeRenderOption :: Lens' BatchGetValuesByDataFilterRequest (Maybe BatchGetValuesByDataFilterRequestDateTimeRenderOption)-bgvbdfrDateTimeRenderOption-  = lens _bgvbdfrDateTimeRenderOption-      (\ s a -> s{_bgvbdfrDateTimeRenderOption = a})---- | The major dimension that results should use. For example, if the--- spreadsheet data is: \`A1=1,B1=2,A2=3,B2=4\`, then a request that--- selects that range and sets \`majorDimension=ROWS\` will return--- \`[[1,2],[3,4]]\`, whereas a request that sets--- \`majorDimension=COLUMNS\` will return \`[[1,3],[2,4]]\`.-bgvbdfrMajorDimension :: Lens' BatchGetValuesByDataFilterRequest (Maybe BatchGetValuesByDataFilterRequestMajorDimension)-bgvbdfrMajorDimension-  = lens _bgvbdfrMajorDimension-      (\ s a -> s{_bgvbdfrMajorDimension = a})--instance FromJSON BatchGetValuesByDataFilterRequest-         where-        parseJSON-          = withObject "BatchGetValuesByDataFilterRequest"-              (\ o ->-                 BatchGetValuesByDataFilterRequest' <$>-                   (o .:? "valueRenderOption") <*>-                     (o .:? "dataFilters" .!= mempty)-                     <*> (o .:? "dateTimeRenderOption")-                     <*> (o .:? "majorDimension"))--instance ToJSON BatchGetValuesByDataFilterRequest-         where-        toJSON BatchGetValuesByDataFilterRequest'{..}-          = object-              (catMaybes-                 [("valueRenderOption" .=) <$>-                    _bgvbdfrValueRenderOption,-                  ("dataFilters" .=) <$> _bgvbdfrDataFilters,-                  ("dateTimeRenderOption" .=) <$>-                    _bgvbdfrDateTimeRenderOption,-                  ("majorDimension" .=) <$> _bgvbdfrMajorDimension])---- | 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 custom subtotal column for a waterfall chart series.------ /See:/ 'waterfallChartCustomSubtotal' smart constructor.-data WaterfallChartCustomSubtotal = WaterfallChartCustomSubtotal'-    { _wccsDataIsSubtotal :: !(Maybe Bool)-    , _wccsSubtotalIndex  :: !(Maybe (Textual Int32))-    , _wccsLabel          :: !(Maybe Text)-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'WaterfallChartCustomSubtotal' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'wccsDataIsSubtotal'------ * 'wccsSubtotalIndex'------ * 'wccsLabel'-waterfallChartCustomSubtotal-    :: WaterfallChartCustomSubtotal-waterfallChartCustomSubtotal =-    WaterfallChartCustomSubtotal'-    { _wccsDataIsSubtotal = Nothing-    , _wccsSubtotalIndex = Nothing-    , _wccsLabel = Nothing-    }---- | True if the data point at subtotal_index is the subtotal. If false, the--- subtotal will be computed and appear after the data point.-wccsDataIsSubtotal :: Lens' WaterfallChartCustomSubtotal (Maybe Bool)-wccsDataIsSubtotal-  = lens _wccsDataIsSubtotal-      (\ s a -> s{_wccsDataIsSubtotal = a})---- | The 0-based index of a data point within the series. If data_is_subtotal--- is true, the data point at this index is the subtotal. Otherwise, the--- subtotal appears after the data point with this index. A series can have--- multiple subtotals at arbitrary indices, but subtotals do not affect the--- indices of the data points. For example, if a series has three data--- points, their indices will always be 0, 1, and 2, regardless of how many--- subtotals exist on the series or what data points they are associated--- with.-wccsSubtotalIndex :: Lens' WaterfallChartCustomSubtotal (Maybe Int32)-wccsSubtotalIndex-  = lens _wccsSubtotalIndex-      (\ s a -> s{_wccsSubtotalIndex = a})-      . mapping _Coerce---- | A label for the subtotal column.-wccsLabel :: Lens' WaterfallChartCustomSubtotal (Maybe Text)-wccsLabel-  = lens _wccsLabel (\ s a -> s{_wccsLabel = a})--instance FromJSON WaterfallChartCustomSubtotal where-        parseJSON-          = withObject "WaterfallChartCustomSubtotal"-              (\ o ->-                 WaterfallChartCustomSubtotal' <$>-                   (o .:? "dataIsSubtotal") <*> (o .:? "subtotalIndex")-                     <*> (o .:? "label"))--instance ToJSON WaterfallChartCustomSubtotal where-        toJSON WaterfallChartCustomSubtotal'{..}-          = object-              (catMaybes-                 [("dataIsSubtotal" .=) <$> _wccsDataIsSubtotal,-                  ("subtotalIndex" .=) <$> _wccsSubtotalIndex,-                  ("label" .=) <$> _wccsLabel])---- | A single response from an update.------ /See:/ 'response' smart constructor.-data Response = Response'-    { _rAddFilterView                :: !(Maybe AddFilterViewResponse)-    , _rCreateDeveloperMetadata      :: !(Maybe CreateDeveloperMetadataResponse)-    , _rDuplicateFilterView          :: !(Maybe DuplicateFilterViewResponse)-    , _rUpdateEmbeddedObjectPosition :: !(Maybe UpdateEmbeddedObjectPositionResponse)-    , _rDeleteDimensionGroup         :: !(Maybe DeleteDimensionGroupResponse)-    , _rAddSheet                     :: !(Maybe AddSheetResponse)-    , _rFindReplace                  :: !(Maybe FindReplaceResponse)-    , _rAddProtectedRange            :: !(Maybe AddProtectedRangeResponse)-    , _rDeleteConditionalFormatRule  :: !(Maybe DeleteConditionalFormatRuleResponse)-    , _rUpdateConditionalFormatRule  :: !(Maybe UpdateConditionalFormatRuleResponse)-    , _rDeleteDeveloperMetadata      :: !(Maybe DeleteDeveloperMetadataResponse)-    , _rUpdateDeveloperMetadata      :: !(Maybe UpdateDeveloperMetadataResponse)-    , _rAddNamedRange                :: !(Maybe AddNamedRangeResponse)-    , _rAddChart                     :: !(Maybe AddChartResponse)-    , _rAddBanding                   :: !(Maybe AddBandingResponse)-    , _rDuplicateSheet               :: !(Maybe DuplicateSheetResponse)-    , _rAddDimensionGroup            :: !(Maybe AddDimensionGroupResponse)-    } 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'------ * 'rCreateDeveloperMetadata'------ * 'rDuplicateFilterView'------ * 'rUpdateEmbeddedObjectPosition'------ * 'rDeleteDimensionGroup'------ * 'rAddSheet'------ * 'rFindReplace'------ * 'rAddProtectedRange'------ * 'rDeleteConditionalFormatRule'------ * 'rUpdateConditionalFormatRule'------ * 'rDeleteDeveloperMetadata'------ * 'rUpdateDeveloperMetadata'------ * 'rAddNamedRange'------ * 'rAddChart'------ * 'rAddBanding'------ * 'rDuplicateSheet'------ * 'rAddDimensionGroup'-response-    :: Response-response =-    Response'-    { _rAddFilterView = Nothing-    , _rCreateDeveloperMetadata = Nothing-    , _rDuplicateFilterView = Nothing-    , _rUpdateEmbeddedObjectPosition = Nothing-    , _rDeleteDimensionGroup = Nothing-    , _rAddSheet = Nothing-    , _rFindReplace = Nothing-    , _rAddProtectedRange = Nothing-    , _rDeleteConditionalFormatRule = Nothing-    , _rUpdateConditionalFormatRule = Nothing-    , _rDeleteDeveloperMetadata = Nothing-    , _rUpdateDeveloperMetadata = Nothing-    , _rAddNamedRange = Nothing-    , _rAddChart = Nothing-    , _rAddBanding = Nothing-    , _rDuplicateSheet = Nothing-    , _rAddDimensionGroup = Nothing-    }---- | A reply from adding a filter view.-rAddFilterView :: Lens' Response (Maybe AddFilterViewResponse)-rAddFilterView-  = lens _rAddFilterView-      (\ s a -> s{_rAddFilterView = a})---- | A reply from creating a developer metadata entry.-rCreateDeveloperMetadata :: Lens' Response (Maybe CreateDeveloperMetadataResponse)-rCreateDeveloperMetadata-  = lens _rCreateDeveloperMetadata-      (\ s a -> s{_rCreateDeveloperMetadata = 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 deleting a dimension group.-rDeleteDimensionGroup :: Lens' Response (Maybe DeleteDimensionGroupResponse)-rDeleteDimensionGroup-  = lens _rDeleteDimensionGroup-      (\ s a -> s{_rDeleteDimensionGroup = 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 deleting a developer metadata entry.-rDeleteDeveloperMetadata :: Lens' Response (Maybe DeleteDeveloperMetadataResponse)-rDeleteDeveloperMetadata-  = lens _rDeleteDeveloperMetadata-      (\ s a -> s{_rDeleteDeveloperMetadata = a})---- | A reply from updating a developer metadata entry.-rUpdateDeveloperMetadata :: Lens' Response (Maybe UpdateDeveloperMetadataResponse)-rUpdateDeveloperMetadata-  = lens _rUpdateDeveloperMetadata-      (\ s a -> s{_rUpdateDeveloperMetadata = 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 adding a banded range.-rAddBanding :: Lens' Response (Maybe AddBandingResponse)-rAddBanding-  = lens _rAddBanding (\ s a -> s{_rAddBanding = a})---- | A reply from duplicating a sheet.-rDuplicateSheet :: Lens' Response (Maybe DuplicateSheetResponse)-rDuplicateSheet-  = lens _rDuplicateSheet-      (\ s a -> s{_rDuplicateSheet = a})---- | A reply from adding a dimension group.-rAddDimensionGroup :: Lens' Response (Maybe AddDimensionGroupResponse)-rAddDimensionGroup-  = lens _rAddDimensionGroup-      (\ s a -> s{_rAddDimensionGroup = a})--instance FromJSON Response where-        parseJSON-          = withObject "Response"-              (\ o ->-                 Response' <$>-                   (o .:? "addFilterView") <*>-                     (o .:? "createDeveloperMetadata")-                     <*> (o .:? "duplicateFilterView")-                     <*> (o .:? "updateEmbeddedObjectPosition")-                     <*> (o .:? "deleteDimensionGroup")-                     <*> (o .:? "addSheet")-                     <*> (o .:? "findReplace")-                     <*> (o .:? "addProtectedRange")-                     <*> (o .:? "deleteConditionalFormatRule")-                     <*> (o .:? "updateConditionalFormatRule")-                     <*> (o .:? "deleteDeveloperMetadata")-                     <*> (o .:? "updateDeveloperMetadata")-                     <*> (o .:? "addNamedRange")-                     <*> (o .:? "addChart")-                     <*> (o .:? "addBanding")-                     <*> (o .:? "duplicateSheet")-                     <*> (o .:? "addDimensionGroup"))--instance ToJSON Response where-        toJSON Response'{..}-          = object-              (catMaybes-                 [("addFilterView" .=) <$> _rAddFilterView,-                  ("createDeveloperMetadata" .=) <$>-                    _rCreateDeveloperMetadata,-                  ("duplicateFilterView" .=) <$> _rDuplicateFilterView,-                  ("updateEmbeddedObjectPosition" .=) <$>-                    _rUpdateEmbeddedObjectPosition,-                  ("deleteDimensionGroup" .=) <$>-                    _rDeleteDimensionGroup,-                  ("addSheet" .=) <$> _rAddSheet,-                  ("findReplace" .=) <$> _rFindReplace,-                  ("addProtectedRange" .=) <$> _rAddProtectedRange,-                  ("deleteConditionalFormatRule" .=) <$>-                    _rDeleteConditionalFormatRule,-                  ("updateConditionalFormatRule" .=) <$>-                    _rUpdateConditionalFormatRule,-                  ("deleteDeveloperMetadata" .=) <$>-                    _rDeleteDeveloperMetadata,-                  ("updateDeveloperMetadata" .=) <$>-                    _rUpdateDeveloperMetadata,-                  ("addNamedRange" .=) <$> _rAddNamedRange,-                  ("addChart" .=) <$> _rAddChart,-                  ("addBanding" .=) <$> _rAddBanding,-                  ("duplicateSheet" .=) <$> _rDuplicateSheet,-                  ("addDimensionGroup" .=) <$> _rAddDimensionGroup])---- | 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])---- | A request to update properties of developer metadata. Updates the--- properties of the developer metadata selected by the filters to the--- values provided in the DeveloperMetadata resource. Callers must specify--- the properties they wish to update in the fields parameter, as well as--- specify at least one DataFilter matching the metadata they wish to--- update.------ /See:/ 'updateDeveloperMetadataRequest' smart constructor.-data UpdateDeveloperMetadataRequest = UpdateDeveloperMetadataRequest'-    { _udmrDataFilters       :: !(Maybe [DataFilter])-    , _udmrDeveloperMetadata :: !(Maybe DeveloperMetadata)-    , _udmrFields            :: !(Maybe GFieldMask)-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'UpdateDeveloperMetadataRequest' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'udmrDataFilters'------ * 'udmrDeveloperMetadata'------ * 'udmrFields'-updateDeveloperMetadataRequest-    :: UpdateDeveloperMetadataRequest-updateDeveloperMetadataRequest =-    UpdateDeveloperMetadataRequest'-    { _udmrDataFilters = Nothing-    , _udmrDeveloperMetadata = Nothing-    , _udmrFields = Nothing-    }---- | The filters matching the developer metadata entries to update.-udmrDataFilters :: Lens' UpdateDeveloperMetadataRequest [DataFilter]-udmrDataFilters-  = lens _udmrDataFilters-      (\ s a -> s{_udmrDataFilters = a})-      . _Default-      . _Coerce---- | The value that all metadata matched by the data filters will be updated--- to.-udmrDeveloperMetadata :: Lens' UpdateDeveloperMetadataRequest (Maybe DeveloperMetadata)-udmrDeveloperMetadata-  = lens _udmrDeveloperMetadata-      (\ s a -> s{_udmrDeveloperMetadata = a})---- | The fields that should be updated. At least one field must be specified.--- The root \`developerMetadata\` is implied and should not be specified. A--- single \`\"*\"\` can be used as short-hand for listing every field.-udmrFields :: Lens' UpdateDeveloperMetadataRequest (Maybe GFieldMask)-udmrFields-  = lens _udmrFields (\ s a -> s{_udmrFields = a})--instance FromJSON UpdateDeveloperMetadataRequest-         where-        parseJSON-          = withObject "UpdateDeveloperMetadataRequest"-              (\ o ->-                 UpdateDeveloperMetadataRequest' <$>-                   (o .:? "dataFilters" .!= mempty) <*>-                     (o .:? "developerMetadata")-                     <*> (o .:? "fields"))--instance ToJSON UpdateDeveloperMetadataRequest where-        toJSON UpdateDeveloperMetadataRequest'{..}-          = object-              (catMaybes-                 [("dataFilters" .=) <$> _udmrDataFilters,-                  ("developerMetadata" .=) <$> _udmrDeveloperMetadata,-                  ("fields" .=) <$> _udmrFields])---- | A request to delete developer metadata.------ /See:/ 'deleteDeveloperMetadataRequest' smart constructor.-newtype DeleteDeveloperMetadataRequest = DeleteDeveloperMetadataRequest'-    { _ddmrDataFilter :: Maybe DataFilter-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'DeleteDeveloperMetadataRequest' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'ddmrDataFilter'-deleteDeveloperMetadataRequest-    :: DeleteDeveloperMetadataRequest-deleteDeveloperMetadataRequest =-    DeleteDeveloperMetadataRequest'-    { _ddmrDataFilter = Nothing-    }---- | The data filter describing the criteria used to select which developer--- metadata entry to delete.-ddmrDataFilter :: Lens' DeleteDeveloperMetadataRequest (Maybe DataFilter)-ddmrDataFilter-  = lens _ddmrDataFilter-      (\ s a -> s{_ddmrDataFilter = a})--instance FromJSON DeleteDeveloperMetadataRequest-         where-        parseJSON-          = withObject "DeleteDeveloperMetadataRequest"-              (\ o ->-                 DeleteDeveloperMetadataRequest' <$>-                   (o .:? "dataFilter"))--instance ToJSON DeleteDeveloperMetadataRequest where-        toJSON DeleteDeveloperMetadataRequest'{..}-          = object-              (catMaybes [("dataFilter" .=) <$> _ddmrDataFilter])---- | A waterfall chart.------ /See:/ 'waterfallChartSpec' smart constructor.-data WaterfallChartSpec = WaterfallChartSpec'-    { _wcsStackedType        :: !(Maybe WaterfallChartSpecStackedType)-    , _wcsConnectorLineStyle :: !(Maybe LineStyle)-    , _wcsDomain             :: !(Maybe WaterfallChartDomain)-    , _wcsSeries             :: !(Maybe [WaterfallChartSeries])-    , _wcsHideConnectorLines :: !(Maybe Bool)-    , _wcsFirstValueIsTotal  :: !(Maybe Bool)-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'WaterfallChartSpec' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'wcsStackedType'------ * 'wcsConnectorLineStyle'------ * 'wcsDomain'------ * 'wcsSeries'------ * 'wcsHideConnectorLines'------ * 'wcsFirstValueIsTotal'-waterfallChartSpec-    :: WaterfallChartSpec-waterfallChartSpec =-    WaterfallChartSpec'-    { _wcsStackedType = Nothing-    , _wcsConnectorLineStyle = Nothing-    , _wcsDomain = Nothing-    , _wcsSeries = Nothing-    , _wcsHideConnectorLines = Nothing-    , _wcsFirstValueIsTotal = Nothing-    }---- | The stacked type.-wcsStackedType :: Lens' WaterfallChartSpec (Maybe WaterfallChartSpecStackedType)-wcsStackedType-  = lens _wcsStackedType-      (\ s a -> s{_wcsStackedType = a})---- | The line style for the connector lines.-wcsConnectorLineStyle :: Lens' WaterfallChartSpec (Maybe LineStyle)-wcsConnectorLineStyle-  = lens _wcsConnectorLineStyle-      (\ s a -> s{_wcsConnectorLineStyle = a})---- | The domain data (horizontal axis) for the waterfall chart.-wcsDomain :: Lens' WaterfallChartSpec (Maybe WaterfallChartDomain)-wcsDomain-  = lens _wcsDomain (\ s a -> s{_wcsDomain = a})---- | The data this waterfall chart is visualizing.-wcsSeries :: Lens' WaterfallChartSpec [WaterfallChartSeries]-wcsSeries-  = lens _wcsSeries (\ s a -> s{_wcsSeries = a}) .-      _Default-      . _Coerce---- | True to hide connector lines between columns.-wcsHideConnectorLines :: Lens' WaterfallChartSpec (Maybe Bool)-wcsHideConnectorLines-  = lens _wcsHideConnectorLines-      (\ s a -> s{_wcsHideConnectorLines = a})---- | True to interpret the first value as a total.-wcsFirstValueIsTotal :: Lens' WaterfallChartSpec (Maybe Bool)-wcsFirstValueIsTotal-  = lens _wcsFirstValueIsTotal-      (\ s a -> s{_wcsFirstValueIsTotal = a})--instance FromJSON WaterfallChartSpec where-        parseJSON-          = withObject "WaterfallChartSpec"-              (\ o ->-                 WaterfallChartSpec' <$>-                   (o .:? "stackedType") <*>-                     (o .:? "connectorLineStyle")-                     <*> (o .:? "domain")-                     <*> (o .:? "series" .!= mempty)-                     <*> (o .:? "hideConnectorLines")-                     <*> (o .:? "firstValueIsTotal"))--instance ToJSON WaterfallChartSpec where-        toJSON WaterfallChartSpec'{..}-          = object-              (catMaybes-                 [("stackedType" .=) <$> _wcsStackedType,-                  ("connectorLineStyle" .=) <$> _wcsConnectorLineStyle,-                  ("domain" .=) <$> _wcsDomain,-                  ("series" .=) <$> _wcsSeries,-                  ("hideConnectorLines" .=) <$> _wcsHideConnectorLines,-                  ("firstValueIsTotal" .=) <$> _wcsFirstValueIsTotal])---- | 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])---- | A location where metadata may be associated in a spreadsheet.------ /See:/ 'developerMetadataLocation' smart constructor.-data DeveloperMetadataLocation = DeveloperMetadataLocation'-    { _dmlSpreadsheet    :: !(Maybe Bool)-    , _dmlDimensionRange :: !(Maybe DimensionRange)-    , _dmlSheetId        :: !(Maybe (Textual Int32))-    , _dmlLocationType   :: !(Maybe DeveloperMetadataLocationLocationType)-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'DeveloperMetadataLocation' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'dmlSpreadsheet'------ * 'dmlDimensionRange'------ * 'dmlSheetId'------ * 'dmlLocationType'-developerMetadataLocation-    :: DeveloperMetadataLocation-developerMetadataLocation =-    DeveloperMetadataLocation'-    { _dmlSpreadsheet = Nothing-    , _dmlDimensionRange = Nothing-    , _dmlSheetId = Nothing-    , _dmlLocationType = Nothing-    }---- | True when metadata is associated with an entire spreadsheet.-dmlSpreadsheet :: Lens' DeveloperMetadataLocation (Maybe Bool)-dmlSpreadsheet-  = lens _dmlSpreadsheet-      (\ s a -> s{_dmlSpreadsheet = a})---- | Represents the row or column when metadata is associated with a--- dimension. The specified DimensionRange must represent a single row or--- column; it cannot be unbounded or span multiple rows or columns.-dmlDimensionRange :: Lens' DeveloperMetadataLocation (Maybe DimensionRange)-dmlDimensionRange-  = lens _dmlDimensionRange-      (\ s a -> s{_dmlDimensionRange = a})---- | The ID of the sheet when metadata is associated with an entire sheet.-dmlSheetId :: Lens' DeveloperMetadataLocation (Maybe Int32)-dmlSheetId-  = lens _dmlSheetId (\ s a -> s{_dmlSheetId = a}) .-      mapping _Coerce---- | The type of location this object represents. This field is read-only.-dmlLocationType :: Lens' DeveloperMetadataLocation (Maybe DeveloperMetadataLocationLocationType)-dmlLocationType-  = lens _dmlLocationType-      (\ s a -> s{_dmlLocationType = a})--instance FromJSON DeveloperMetadataLocation where-        parseJSON-          = withObject "DeveloperMetadataLocation"-              (\ o ->-                 DeveloperMetadataLocation' <$>-                   (o .:? "spreadsheet") <*> (o .:? "dimensionRange")-                     <*> (o .:? "sheetId")-                     <*> (o .:? "locationType"))--instance ToJSON DeveloperMetadataLocation where-        toJSON DeveloperMetadataLocation'{..}-          = object-              (catMaybes-                 [("spreadsheet" .=) <$> _dmlSpreadsheet,-                  ("dimensionRange" .=) <$> _dmlDimensionRange,-                  ("sheetId" .=) <$> _dmlSheetId,-                  ("locationType" .=) <$> _dmlLocationType])---- | 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 is added or--- moved to the end of the sheet list. When updating sheet indices or--- inserting sheets, movement is considered in \"before the move\" indexes.--- For example, if there were 3 sheets (S1, S2, S3) in order to move S1--- ahead of S2 the index would have to be set to 2. A sheet index update--- request is ignored if the requested index is identical to the sheets--- current index or if the requested new index is equal to the current--- sheet index + 1.-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 GFieldMask)-    , _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 GFieldMask)-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)-    , _sprSpreadsheetURL    :: !(Maybe Text)-    , _sprDeveloperMetadata :: !(Maybe [DeveloperMetadata])-    , _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'------ * 'sprSpreadsheetURL'------ * 'sprDeveloperMetadata'------ * 'sprProperties'-spreadsheet-    :: Spreadsheet-spreadsheet =-    Spreadsheet'-    { _sprSheets = Nothing-    , _sprNamedRanges = Nothing-    , _sprSpreadsheetId = Nothing-    , _sprSpreadsheetURL = Nothing-    , _sprDeveloperMetadata = 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})---- | The url of the spreadsheet. This field is read-only.-sprSpreadsheetURL :: Lens' Spreadsheet (Maybe Text)-sprSpreadsheetURL-  = lens _sprSpreadsheetURL-      (\ s a -> s{_sprSpreadsheetURL = a})---- | The developer metadata associated with a spreadsheet.-sprDeveloperMetadata :: Lens' Spreadsheet [DeveloperMetadata]-sprDeveloperMetadata-  = lens _sprDeveloperMetadata-      (\ s a -> s{_sprDeveloperMetadata = a})-      . _Default-      . _Coerce---- | 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 .:? "spreadsheetUrl")-                     <*> (o .:? "developerMetadata" .!= mempty)-                     <*> (o .:? "properties"))--instance ToJSON Spreadsheet where-        toJSON Spreadsheet'{..}-          = object-              (catMaybes-                 [("sheets" .=) <$> _sprSheets,-                  ("namedRanges" .=) <$> _sprNamedRanges,-                  ("spreadsheetId" .=) <$> _sprSpreadsheetId,-                  ("spreadsheetUrl" .=) <$> _sprSpreadsheetURL,-                  ("developerMetadata" .=) <$> _sprDeveloperMetadata,-                  ("properties" .=) <$> _sprProperties])---- | A </chart/interactive/docs/gallery/candlestickchart candlestick chart>.------ /See:/ 'candlestickChartSpec' smart constructor.-data CandlestickChartSpec = CandlestickChartSpec'-    { _ccsData   :: !(Maybe [CandlestickData])-    , _ccsDomain :: !(Maybe CandlestickDomain)-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'CandlestickChartSpec' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'ccsData'------ * 'ccsDomain'-candlestickChartSpec-    :: CandlestickChartSpec-candlestickChartSpec =-    CandlestickChartSpec'-    { _ccsData = Nothing-    , _ccsDomain = Nothing-    }---- | The Candlestick chart data. Only one CandlestickData is supported.-ccsData :: Lens' CandlestickChartSpec [CandlestickData]-ccsData-  = lens _ccsData (\ s a -> s{_ccsData = a}) . _Default-      . _Coerce---- | The domain data (horizontal axis) for the candlestick chart. String data--- will be treated as discrete labels, other data will be treated as--- continuous values.-ccsDomain :: Lens' CandlestickChartSpec (Maybe CandlestickDomain)-ccsDomain-  = lens _ccsDomain (\ s a -> s{_ccsDomain = a})--instance FromJSON CandlestickChartSpec where-        parseJSON-          = withObject "CandlestickChartSpec"-              (\ o ->-                 CandlestickChartSpec' <$>-                   (o .:? "data" .!= mempty) <*> (o .:? "domain"))--instance ToJSON CandlestickChartSpec where-        toJSON CandlestickChartSpec'{..}-          = object-              (catMaybes-                 [("data" .=) <$> _ccsData,-                  ("domain" .=) <$> _ccsDomain])---- | 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 reply to a developer metadata search request.------ /See:/ 'searchDeveloperMetadataResponse' smart constructor.-newtype SearchDeveloperMetadataResponse = SearchDeveloperMetadataResponse'-    { _sdmrMatchedDeveloperMetadata :: Maybe [MatchedDeveloperMetadata]-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'SearchDeveloperMetadataResponse' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'sdmrMatchedDeveloperMetadata'-searchDeveloperMetadataResponse-    :: SearchDeveloperMetadataResponse-searchDeveloperMetadataResponse =-    SearchDeveloperMetadataResponse'-    { _sdmrMatchedDeveloperMetadata = Nothing-    }---- | The metadata matching the criteria of the search request.-sdmrMatchedDeveloperMetadata :: Lens' SearchDeveloperMetadataResponse [MatchedDeveloperMetadata]-sdmrMatchedDeveloperMetadata-  = lens _sdmrMatchedDeveloperMetadata-      (\ s a -> s{_sdmrMatchedDeveloperMetadata = a})-      . _Default-      . _Coerce--instance FromJSON SearchDeveloperMetadataResponse-         where-        parseJSON-          = withObject "SearchDeveloperMetadataResponse"-              (\ o ->-                 SearchDeveloperMetadataResponse' <$>-                   (o .:? "matchedDeveloperMetadata" .!= mempty))--instance ToJSON SearchDeveloperMetadataResponse where-        toJSON SearchDeveloperMetadataResponse'{..}-          = object-              (catMaybes-                 [("matchedDeveloperMetadata" .=) <$>-                    _sdmrMatchedDeveloperMetadata])---- | 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 are 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 in the--- userEnteredValue.formulaValue field.)-cdHyperlink :: Lens' CellData (Maybe Text)-cdHyperlink-  = lens _cdHyperlink (\ s a -> s{_cdHyperlink = a})---- | The effective value of the cell. For cells with formulas, this is the--- calculated value. For cells with literals, this is 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 in order and--- 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 domain of a waterfall chart.------ /See:/ 'waterfallChartDomain' smart constructor.-data WaterfallChartDomain = WaterfallChartDomain'-    { _wcdReversed :: !(Maybe Bool)-    , _wcdData     :: !(Maybe ChartData)-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'WaterfallChartDomain' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'wcdReversed'------ * 'wcdData'-waterfallChartDomain-    :: WaterfallChartDomain-waterfallChartDomain =-    WaterfallChartDomain'-    { _wcdReversed = Nothing-    , _wcdData = Nothing-    }---- | True to reverse the order of the domain values (horizontal axis).-wcdReversed :: Lens' WaterfallChartDomain (Maybe Bool)-wcdReversed-  = lens _wcdReversed (\ s a -> s{_wcdReversed = a})---- | The data of the WaterfallChartDomain.-wcdData :: Lens' WaterfallChartDomain (Maybe ChartData)-wcdData = lens _wcdData (\ s a -> s{_wcdData = a})--instance FromJSON WaterfallChartDomain where-        parseJSON-          = withObject "WaterfallChartDomain"-              (\ o ->-                 WaterfallChartDomain' <$>-                   (o .:? "reversed") <*> (o .:? "data"))--instance ToJSON WaterfallChartDomain where-        toJSON WaterfallChartDomain'{..}-          = object-              (catMaybes-                 [("reversed" .=) <$> _wcdReversed,-                  ("data" .=) <$> _wcdData])---- | 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])---- | Settings to control how circular dependencies are resolved with--- iterative calculation.------ /See:/ 'iterativeCalculationSettings' smart constructor.-data IterativeCalculationSettings = IterativeCalculationSettings'-    { _icsMaxIterations        :: !(Maybe (Textual Int32))-    , _icsConvergenceThreshold :: !(Maybe (Textual Double))-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'IterativeCalculationSettings' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'icsMaxIterations'------ * 'icsConvergenceThreshold'-iterativeCalculationSettings-    :: IterativeCalculationSettings-iterativeCalculationSettings =-    IterativeCalculationSettings'-    { _icsMaxIterations = Nothing-    , _icsConvergenceThreshold = Nothing-    }---- | When iterative calculation is enabled, the maximum number of calculation--- rounds to perform.-icsMaxIterations :: Lens' IterativeCalculationSettings (Maybe Int32)-icsMaxIterations-  = lens _icsMaxIterations-      (\ s a -> s{_icsMaxIterations = a})-      . mapping _Coerce---- | When iterative calculation is enabled and successive results differ by--- less than this threshold value, the calculation rounds stop.-icsConvergenceThreshold :: Lens' IterativeCalculationSettings (Maybe Double)-icsConvergenceThreshold-  = lens _icsConvergenceThreshold-      (\ s a -> s{_icsConvergenceThreshold = a})-      . mapping _Coerce--instance FromJSON IterativeCalculationSettings where-        parseJSON-          = withObject "IterativeCalculationSettings"-              (\ o ->-                 IterativeCalculationSettings' <$>-                   (o .:? "maxIterations") <*>-                     (o .:? "convergenceThreshold"))--instance ToJSON IterativeCalculationSettings where-        toJSON IterativeCalculationSettings'{..}-          = object-              (catMaybes-                 [("maxIterations" .=) <$> _icsMaxIterations,-                  ("convergenceThreshold" .=) <$>-                    _icsConvergenceThreshold])---- | The response when updating a range of values by a data filter in a--- spreadsheet.------ /See:/ 'updateValuesByDataFilterResponse' smart constructor.-data UpdateValuesByDataFilterResponse = UpdateValuesByDataFilterResponse'-    { _uvbdfrUpdatedCells   :: !(Maybe (Textual Int32))-    , _uvbdfrUpdatedRows    :: !(Maybe (Textual Int32))-    , _uvbdfrUpdatedRange   :: !(Maybe Text)-    , _uvbdfrUpdatedData    :: !(Maybe ValueRange)-    , _uvbdfrUpdatedColumns :: !(Maybe (Textual Int32))-    , _uvbdfrDataFilter     :: !(Maybe DataFilter)-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'UpdateValuesByDataFilterResponse' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'uvbdfrUpdatedCells'------ * 'uvbdfrUpdatedRows'------ * 'uvbdfrUpdatedRange'------ * 'uvbdfrUpdatedData'------ * 'uvbdfrUpdatedColumns'------ * 'uvbdfrDataFilter'-updateValuesByDataFilterResponse-    :: UpdateValuesByDataFilterResponse-updateValuesByDataFilterResponse =-    UpdateValuesByDataFilterResponse'-    { _uvbdfrUpdatedCells = Nothing-    , _uvbdfrUpdatedRows = Nothing-    , _uvbdfrUpdatedRange = Nothing-    , _uvbdfrUpdatedData = Nothing-    , _uvbdfrUpdatedColumns = Nothing-    , _uvbdfrDataFilter = Nothing-    }---- | The number of cells updated.-uvbdfrUpdatedCells :: Lens' UpdateValuesByDataFilterResponse (Maybe Int32)-uvbdfrUpdatedCells-  = lens _uvbdfrUpdatedCells-      (\ s a -> s{_uvbdfrUpdatedCells = a})-      . mapping _Coerce---- | The number of rows where at least one cell in the row was updated.-uvbdfrUpdatedRows :: Lens' UpdateValuesByDataFilterResponse (Maybe Int32)-uvbdfrUpdatedRows-  = lens _uvbdfrUpdatedRows-      (\ s a -> s{_uvbdfrUpdatedRows = a})-      . mapping _Coerce---- | The range (in A1 notation) that updates were applied to.-uvbdfrUpdatedRange :: Lens' UpdateValuesByDataFilterResponse (Maybe Text)-uvbdfrUpdatedRange-  = lens _uvbdfrUpdatedRange-      (\ s a -> s{_uvbdfrUpdatedRange = a})---- | The values of the cells in the range matched by the dataFilter after all--- updates were applied. This is only included if the request\'s--- \`includeValuesInResponse\` field was \`true\`.-uvbdfrUpdatedData :: Lens' UpdateValuesByDataFilterResponse (Maybe ValueRange)-uvbdfrUpdatedData-  = lens _uvbdfrUpdatedData-      (\ s a -> s{_uvbdfrUpdatedData = a})---- | The number of columns where at least one cell in the column was updated.-uvbdfrUpdatedColumns :: Lens' UpdateValuesByDataFilterResponse (Maybe Int32)-uvbdfrUpdatedColumns-  = lens _uvbdfrUpdatedColumns-      (\ s a -> s{_uvbdfrUpdatedColumns = a})-      . mapping _Coerce---- | The data filter that selected the range that was updated.-uvbdfrDataFilter :: Lens' UpdateValuesByDataFilterResponse (Maybe DataFilter)-uvbdfrDataFilter-  = lens _uvbdfrDataFilter-      (\ s a -> s{_uvbdfrDataFilter = a})--instance FromJSON UpdateValuesByDataFilterResponse-         where-        parseJSON-          = withObject "UpdateValuesByDataFilterResponse"-              (\ o ->-                 UpdateValuesByDataFilterResponse' <$>-                   (o .:? "updatedCells") <*> (o .:? "updatedRows") <*>-                     (o .:? "updatedRange")-                     <*> (o .:? "updatedData")-                     <*> (o .:? "updatedColumns")-                     <*> (o .:? "dataFilter"))--instance ToJSON UpdateValuesByDataFilterResponse-         where-        toJSON UpdateValuesByDataFilterResponse'{..}-          = object-              (catMaybes-                 [("updatedCells" .=) <$> _uvbdfrUpdatedCells,-                  ("updatedRows" .=) <$> _uvbdfrUpdatedRows,-                  ("updatedRange" .=) <$> _uvbdfrUpdatedRange,-                  ("updatedData" .=) <$> _uvbdfrUpdatedData,-                  ("updatedColumns" .=) <$> _uvbdfrUpdatedColumns,-                  ("dataFilter" .=) <$> _uvbdfrDataFilter])---- | Properties of a grid.------ /See:/ 'gridProperties' smart constructor.-data GridProperties = GridProperties'-    { _gpFrozenColumnCount       :: !(Maybe (Textual Int32))-    , _gpColumnCount             :: !(Maybe (Textual Int32))-    , _gpColumnGroupControlAfter :: !(Maybe Bool)-    , _gpHideGridlines           :: !(Maybe Bool)-    , _gpFrozenRowCount          :: !(Maybe (Textual Int32))-    , _gpRowGroupControlAfter    :: !(Maybe Bool)-    , _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'------ * 'gpColumnGroupControlAfter'------ * 'gpHideGridlines'------ * 'gpFrozenRowCount'------ * 'gpRowGroupControlAfter'------ * 'gpRowCount'-gridProperties-    :: GridProperties-gridProperties =-    GridProperties'-    { _gpFrozenColumnCount = Nothing-    , _gpColumnCount = Nothing-    , _gpColumnGroupControlAfter = Nothing-    , _gpHideGridlines = Nothing-    , _gpFrozenRowCount = Nothing-    , _gpRowGroupControlAfter = 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 column grouping control toggle is shown after the group.-gpColumnGroupControlAfter :: Lens' GridProperties (Maybe Bool)-gpColumnGroupControlAfter-  = lens _gpColumnGroupControlAfter-      (\ s a -> s{_gpColumnGroupControlAfter = a})---- | 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---- | True if the row grouping control toggle is shown after the group.-gpRowGroupControlAfter :: Lens' GridProperties (Maybe Bool)-gpRowGroupControlAfter-  = lens _gpRowGroupControlAfter-      (\ s a -> s{_gpRowGroupControlAfter = a})---- | 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 .:? "columnGroupControlAfter")-                     <*> (o .:? "hideGridlines")-                     <*> (o .:? "frozenRowCount")-                     <*> (o .:? "rowGroupControlAfter")-                     <*> (o .:? "rowCount"))--instance ToJSON GridProperties where-        toJSON GridProperties'{..}-          = object-              (catMaybes-                 [("frozenColumnCount" .=) <$> _gpFrozenColumnCount,-                  ("columnCount" .=) <$> _gpColumnCount,-                  ("columnGroupControlAfter" .=) <$>-                    _gpColumnGroupControlAfter,-                  ("hideGridlines" .=) <$> _gpHideGridlines,-                  ("frozenRowCount" .=) <$> _gpFrozenRowCount,-                  ("rowGroupControlAfter" .=) <$>-                    _gpRowGroupControlAfter,-                  ("rowCount" .=) <$> _gpRowCount])---- | A </chart/interactive/docs/gallery/histogram histogram chart>. A--- histogram chart groups data items into bins, displaying each bin as a--- column of stacked items. Histograms are used to display the distribution--- of a dataset. Each column of items represents a range into which those--- items fall. The number of bins can be chosen automatically or specified--- explicitly.------ /See:/ 'histogramChartSpec' smart constructor.-data HistogramChartSpec = HistogramChartSpec'-    { _hcsLegendPosition    :: !(Maybe HistogramChartSpecLegendPosition)-    , _hcsSeries            :: !(Maybe [HistogramSeries])-    , _hcsShowItemDividers  :: !(Maybe Bool)-    , _hcsOutlierPercentile :: !(Maybe (Textual Double))-    , _hcsBucketSize        :: !(Maybe (Textual Double))-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'HistogramChartSpec' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'hcsLegendPosition'------ * 'hcsSeries'------ * 'hcsShowItemDividers'------ * 'hcsOutlierPercentile'------ * 'hcsBucketSize'-histogramChartSpec-    :: HistogramChartSpec-histogramChartSpec =-    HistogramChartSpec'-    { _hcsLegendPosition = Nothing-    , _hcsSeries = Nothing-    , _hcsShowItemDividers = Nothing-    , _hcsOutlierPercentile = Nothing-    , _hcsBucketSize = Nothing-    }---- | The position of the chart legend.-hcsLegendPosition :: Lens' HistogramChartSpec (Maybe HistogramChartSpecLegendPosition)-hcsLegendPosition-  = lens _hcsLegendPosition-      (\ s a -> s{_hcsLegendPosition = a})---- | The series for a histogram may be either a single series of values to be--- bucketed or multiple series, each of the same length, containing the--- name of the series followed by the values to be bucketed for that--- series.-hcsSeries :: Lens' HistogramChartSpec [HistogramSeries]-hcsSeries-  = lens _hcsSeries (\ s a -> s{_hcsSeries = a}) .-      _Default-      . _Coerce---- | Whether horizontal divider lines should be displayed between items in--- each column.-hcsShowItemDividers :: Lens' HistogramChartSpec (Maybe Bool)-hcsShowItemDividers-  = lens _hcsShowItemDividers-      (\ s a -> s{_hcsShowItemDividers = a})---- | The outlier percentile is used to ensure that outliers do not adversely--- affect the calculation of bucket sizes. For example, setting an outlier--- percentile of 0.05 indicates that the top and bottom 5% of values when--- calculating buckets. The values are still included in the chart, they--- will be added to the first or last buckets instead of their own buckets.--- Must be between 0.0 and 0.5.-hcsOutlierPercentile :: Lens' HistogramChartSpec (Maybe Double)-hcsOutlierPercentile-  = lens _hcsOutlierPercentile-      (\ s a -> s{_hcsOutlierPercentile = a})-      . mapping _Coerce---- | By default the bucket size (the range of values stacked in a single--- column) is chosen automatically, but it may be overridden here. E.g., A--- bucket size of 1.5 results in buckets from 0 - 1.5, 1.5 - 3.0, etc.--- Cannot be negative. This field is optional.-hcsBucketSize :: Lens' HistogramChartSpec (Maybe Double)-hcsBucketSize-  = lens _hcsBucketSize-      (\ s a -> s{_hcsBucketSize = a})-      . mapping _Coerce--instance FromJSON HistogramChartSpec where-        parseJSON-          = withObject "HistogramChartSpec"-              (\ o ->-                 HistogramChartSpec' <$>-                   (o .:? "legendPosition") <*>-                     (o .:? "series" .!= mempty)-                     <*> (o .:? "showItemDividers")-                     <*> (o .:? "outlierPercentile")-                     <*> (o .:? "bucketSize"))--instance ToJSON HistogramChartSpec where-        toJSON HistogramChartSpec'{..}-          = object-              (catMaybes-                 [("legendPosition" .=) <$> _hcsLegendPosition,-                  ("series" .=) <$> _hcsSeries,-                  ("showItemDividers" .=) <$> _hcsShowItemDividers,-                  ("outlierPercentile" .=) <$> _hcsOutlierPercentile,-                  ("bucketSize" .=) <$> _hcsBucketSize])---- | 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---- | Adds a new banded range to the spreadsheet.------ /See:/ 'addBandingRequest' smart constructor.-newtype AddBandingRequest = AddBandingRequest'-    { _abrBandedRange :: Maybe BandedRange-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'AddBandingRequest' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'abrBandedRange'-addBandingRequest-    :: AddBandingRequest-addBandingRequest =-    AddBandingRequest'-    { _abrBandedRange = Nothing-    }---- | The banded range to add. The bandedRangeId field is optional; if one is--- not set, an id will be randomly generated. (It is an error to specify--- the ID of a range that already exists.)-abrBandedRange :: Lens' AddBandingRequest (Maybe BandedRange)-abrBandedRange-  = lens _abrBandedRange-      (\ s a -> s{_abrBandedRange = a})--instance FromJSON AddBandingRequest where-        parseJSON-          = withObject "AddBandingRequest"-              (\ o -> AddBandingRequest' <$> (o .:? "bandedRange"))--instance ToJSON AddBandingRequest where-        toJSON AddBandingRequest'{..}-          = object-              (catMaybes [("bandedRange" .=) <$> _abrBandedRange])---- | Updates properties of dimensions within the specified range.------ /See:/ 'updateDimensionPropertiesRequest' smart constructor.-data UpdateDimensionPropertiesRequest = UpdateDimensionPropertiesRequest'-    { _udprRange      :: !(Maybe DimensionRange)-    , _udprFields     :: !(Maybe GFieldMask)-    , _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 GFieldMask)-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 are--- 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])---- | Selects DeveloperMetadata that matches all of the specified fields. For--- example, if only a metadata ID is specified this considers the--- DeveloperMetadata with that particular unique ID. If a metadata key is--- specified, this considers all developer metadata with that key. If a--- key, visibility, and location type are all specified, this considers all--- developer metadata with that key and visibility that are associated with--- a location of that type. In general, this selects all DeveloperMetadata--- that matches the intersection of all the specified fields; any field or--- combination of fields may be specified.------ /See:/ 'developerMetadataLookup' smart constructor.-data DeveloperMetadataLookup = DeveloperMetadataLookup'-    { _dLocationMatchingStrategy :: !(Maybe DeveloperMetadataLookupLocationMatchingStrategy)-    , _dMetadataId               :: !(Maybe (Textual Int32))-    , _dVisibility               :: !(Maybe DeveloperMetadataLookupVisibility)-    , _dMetadataKey              :: !(Maybe Text)-    , _dLocationType             :: !(Maybe DeveloperMetadataLookupLocationType)-    , _dMetadataLocation         :: !(Maybe DeveloperMetadataLocation)-    , _dMetadataValue            :: !(Maybe Text)-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'DeveloperMetadataLookup' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'dLocationMatchingStrategy'------ * 'dMetadataId'------ * 'dVisibility'------ * 'dMetadataKey'------ * 'dLocationType'------ * 'dMetadataLocation'------ * 'dMetadataValue'-developerMetadataLookup-    :: DeveloperMetadataLookup-developerMetadataLookup =-    DeveloperMetadataLookup'-    { _dLocationMatchingStrategy = Nothing-    , _dMetadataId = Nothing-    , _dVisibility = Nothing-    , _dMetadataKey = Nothing-    , _dLocationType = Nothing-    , _dMetadataLocation = Nothing-    , _dMetadataValue = Nothing-    }---- | Determines how this lookup matches the location. If this field is--- specified as EXACT, only developer metadata associated on the exact--- location specified is matched. If this field is specified to--- INTERSECTING, developer metadata associated on intersecting locations is--- also matched. If left unspecified, this field assumes a default value of--- INTERSECTING. If this field is specified, a metadataLocation must also--- be specified.-dLocationMatchingStrategy :: Lens' DeveloperMetadataLookup (Maybe DeveloperMetadataLookupLocationMatchingStrategy)-dLocationMatchingStrategy-  = lens _dLocationMatchingStrategy-      (\ s a -> s{_dLocationMatchingStrategy = a})---- | Limits the selected developer metadata to that which has a matching--- DeveloperMetadata.metadata_id.-dMetadataId :: Lens' DeveloperMetadataLookup (Maybe Int32)-dMetadataId-  = lens _dMetadataId (\ s a -> s{_dMetadataId = a}) .-      mapping _Coerce---- | Limits the selected developer metadata to that which has a matching--- DeveloperMetadata.visibility. If left unspecified, all developer--- metadata visibile to the requesting project is considered.-dVisibility :: Lens' DeveloperMetadataLookup (Maybe DeveloperMetadataLookupVisibility)-dVisibility-  = lens _dVisibility (\ s a -> s{_dVisibility = a})---- | Limits the selected developer metadata to that which has a matching--- DeveloperMetadata.metadata_key.-dMetadataKey :: Lens' DeveloperMetadataLookup (Maybe Text)-dMetadataKey-  = lens _dMetadataKey (\ s a -> s{_dMetadataKey = a})---- | Limits the selected developer metadata to those entries which are--- associated with locations of the specified type. For example, when this--- field is specified as ROW this lookup only considers developer metadata--- associated on rows. If the field is left unspecified, all location types--- are considered. This field cannot be specified as SPREADSHEET when the--- locationMatchingStrategy is specified as INTERSECTING or when the--- metadataLocation is specified as a non-spreadsheet location: spreadsheet--- metadata cannot intersect any other developer metadata location. This--- field also must be left unspecified when the locationMatchingStrategy is--- specified as EXACT.-dLocationType :: Lens' DeveloperMetadataLookup (Maybe DeveloperMetadataLookupLocationType)-dLocationType-  = lens _dLocationType-      (\ s a -> s{_dLocationType = a})---- | Limits the selected developer metadata to those entries associated with--- the specified location. This field either matches exact locations or all--- intersecting locations according the specified locationMatchingStrategy.-dMetadataLocation :: Lens' DeveloperMetadataLookup (Maybe DeveloperMetadataLocation)-dMetadataLocation-  = lens _dMetadataLocation-      (\ s a -> s{_dMetadataLocation = a})---- | Limits the selected developer metadata to that which has a matching--- DeveloperMetadata.metadata_value.-dMetadataValue :: Lens' DeveloperMetadataLookup (Maybe Text)-dMetadataValue-  = lens _dMetadataValue-      (\ s a -> s{_dMetadataValue = a})--instance FromJSON DeveloperMetadataLookup where-        parseJSON-          = withObject "DeveloperMetadataLookup"-              (\ o ->-                 DeveloperMetadataLookup' <$>-                   (o .:? "locationMatchingStrategy") <*>-                     (o .:? "metadataId")-                     <*> (o .:? "visibility")-                     <*> (o .:? "metadataKey")-                     <*> (o .:? "locationType")-                     <*> (o .:? "metadataLocation")-                     <*> (o .:? "metadataValue"))--instance ToJSON DeveloperMetadataLookup where-        toJSON DeveloperMetadataLookup'{..}-          = object-              (catMaybes-                 [("locationMatchingStrategy" .=) <$>-                    _dLocationMatchingStrategy,-                  ("metadataId" .=) <$> _dMetadataId,-                  ("visibility" .=) <$> _dVisibility,-                  ("metadataKey" .=) <$> _dMetadataKey,-                  ("locationType" .=) <$> _dLocationType,-                  ("metadataLocation" .=) <$> _dMetadataLocation,-                  ("metadataValue" .=) <$> _dMetadataValue])---- | 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 rotation applied to text in a cell.------ /See:/ 'textRotation' smart constructor.-data TextRotation = TextRotation'-    { _trAngle    :: !(Maybe (Textual Int32))-    , _trVertical :: !(Maybe Bool)-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'TextRotation' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'trAngle'------ * 'trVertical'-textRotation-    :: TextRotation-textRotation =-    TextRotation'-    { _trAngle = Nothing-    , _trVertical = Nothing-    }---- | The angle between the standard orientation and the desired orientation.--- Measured in degrees. Valid values are between -90 and 90. Positive--- angles are angled upwards, negative are angled downwards. Note: For LTR--- text direction positive angles are in the counterclockwise direction,--- whereas for RTL they are in the clockwise direction-trAngle :: Lens' TextRotation (Maybe Int32)-trAngle-  = lens _trAngle (\ s a -> s{_trAngle = a}) .-      mapping _Coerce---- | If true, text reads top to bottom, but the orientation of individual--- characters is unchanged. For example: | V | | e | | r | | t | | i | | c--- | | a | | l |-trVertical :: Lens' TextRotation (Maybe Bool)-trVertical-  = lens _trVertical (\ s a -> s{_trVertical = a})--instance FromJSON TextRotation where-        parseJSON-          = withObject "TextRotation"-              (\ o ->-                 TextRotation' <$>-                   (o .:? "angle") <*> (o .:? "vertical"))--instance ToJSON TextRotation where-        toJSON TextRotation'{..}-          = object-              (catMaybes-                 [("angle" .=) <$> _trAngle,-                  ("vertical" .=) <$> _trVertical])---- | 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)-    , _buvrIncludeValuesInResponse      :: !(Maybe Bool)-    , _buvrResponseDateTimeRenderOption :: !(Maybe BatchUpdateValuesRequestResponseDateTimeRenderOption)-    , _buvrResponseValueRenderOption    :: !(Maybe BatchUpdateValuesRequestResponseValueRenderOption)-    } 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'------ * 'buvrIncludeValuesInResponse'------ * 'buvrResponseDateTimeRenderOption'------ * 'buvrResponseValueRenderOption'-batchUpdateValuesRequest-    :: BatchUpdateValuesRequest-batchUpdateValuesRequest =-    BatchUpdateValuesRequest'-    { _buvrData = Nothing-    , _buvrValueInputOption = Nothing-    , _buvrIncludeValuesInResponse = Nothing-    , _buvrResponseDateTimeRenderOption = Nothing-    , _buvrResponseValueRenderOption = 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})---- | Determines if the update response should include the values of the cells--- that were updated. By default, responses do not include the updated--- values. The \`updatedData\` field within each of the--- BatchUpdateValuesResponse.responses will contain the updated values. If--- the range to write was larger than than the range actually written, the--- response will include all values in the requested range (excluding--- trailing empty rows and columns).-buvrIncludeValuesInResponse :: Lens' BatchUpdateValuesRequest (Maybe Bool)-buvrIncludeValuesInResponse-  = lens _buvrIncludeValuesInResponse-      (\ s a -> s{_buvrIncludeValuesInResponse = a})---- | Determines how dates, times, and durations in the response should be--- rendered. This is ignored if response_value_render_option is--- FORMATTED_VALUE. The default dateTime render option is--- DateTimeRenderOption.SERIAL_NUMBER.-buvrResponseDateTimeRenderOption :: Lens' BatchUpdateValuesRequest (Maybe BatchUpdateValuesRequestResponseDateTimeRenderOption)-buvrResponseDateTimeRenderOption-  = lens _buvrResponseDateTimeRenderOption-      (\ s a -> s{_buvrResponseDateTimeRenderOption = a})---- | Determines how values in the response should be rendered. The default--- render option is ValueRenderOption.FORMATTED_VALUE.-buvrResponseValueRenderOption :: Lens' BatchUpdateValuesRequest (Maybe BatchUpdateValuesRequestResponseValueRenderOption)-buvrResponseValueRenderOption-  = lens _buvrResponseValueRenderOption-      (\ s a -> s{_buvrResponseValueRenderOption = a})--instance FromJSON BatchUpdateValuesRequest where-        parseJSON-          = withObject "BatchUpdateValuesRequest"-              (\ o ->-                 BatchUpdateValuesRequest' <$>-                   (o .:? "data" .!= mempty) <*>-                     (o .:? "valueInputOption")-                     <*> (o .:? "includeValuesInResponse")-                     <*> (o .:? "responseDateTimeRenderOption")-                     <*> (o .:? "responseValueRenderOption"))--instance ToJSON BatchUpdateValuesRequest where-        toJSON BatchUpdateValuesRequest'{..}-          = object-              (catMaybes-                 [("data" .=) <$> _buvrData,-                  ("valueInputOption" .=) <$> _buvrValueInputOption,-                  ("includeValuesInResponse" .=) <$>-                    _buvrIncludeValuesInResponse,-                  ("responseDateTimeRenderOption" .=) <$>-                    _buvrResponseDateTimeRenderOption,-                  ("responseValueRenderOption" .=) <$>-                    _buvrResponseValueRenderOption])---- | A range of values whose location is specified by a DataFilter.------ /See:/ 'dataFilterValueRange' smart constructor.-data DataFilterValueRange = DataFilterValueRange'-    { _dfvrValues         :: !(Maybe [[JSONValue]])-    , _dfvrDataFilter     :: !(Maybe DataFilter)-    , _dfvrMajorDimension :: !(Maybe DataFilterValueRangeMajorDimension)-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'DataFilterValueRange' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'dfvrValues'------ * 'dfvrDataFilter'------ * 'dfvrMajorDimension'-dataFilterValueRange-    :: DataFilterValueRange-dataFilterValueRange =-    DataFilterValueRange'-    { _dfvrValues = Nothing-    , _dfvrDataFilter = Nothing-    , _dfvrMajorDimension = Nothing-    }---- | The data to be written. If the provided values exceed any of the ranges--- matched by the data filter then the request will fail. If the provided--- values are less than the matched ranges only the specified values will--- be written, existing values in the matched ranges will remain--- unaffected.-dfvrValues :: Lens' DataFilterValueRange [[JSONValue]]-dfvrValues-  = lens _dfvrValues (\ s a -> s{_dfvrValues = a}) .-      _Default-      . _Coerce---- | The data filter describing the location of the values in the--- spreadsheet.-dfvrDataFilter :: Lens' DataFilterValueRange (Maybe DataFilter)-dfvrDataFilter-  = lens _dfvrDataFilter-      (\ s a -> s{_dfvrDataFilter = a})---- | The major dimension of the values.-dfvrMajorDimension :: Lens' DataFilterValueRange (Maybe DataFilterValueRangeMajorDimension)-dfvrMajorDimension-  = lens _dfvrMajorDimension-      (\ s a -> s{_dfvrMajorDimension = a})--instance FromJSON DataFilterValueRange where-        parseJSON-          = withObject "DataFilterValueRange"-              (\ o ->-                 DataFilterValueRange' <$>-                   (o .:? "values" .!= mempty) <*> (o .:? "dataFilter")-                     <*> (o .:? "majorDimension"))--instance ToJSON DataFilterValueRange where-        toJSON DataFilterValueRange'{..}-          = object-              (catMaybes-                 [("values" .=) <$> _dfvrValues,-                  ("dataFilter" .=) <$> _dfvrDataFilter,-                  ("majorDimension" .=) <$> _dfvrMajorDimension])---- | 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. The chartId field is optional; if--- one is not set, an id will be randomly generated. (It is an error to--- specify the ID of a chart that already exists.)-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])---- | Allows you to manually organize the values in a source data column into--- buckets with names of your choosing. For example, a pivot table that--- aggregates population by state: +-------+-------------------+ | State |--- SUM of Population | +-------+-------------------+ | AK | 0.7 | | AL |--- 4.8 | | AR | 2.9 | ... +-------+-------------------+ could be turned--- into a pivot table that aggregates population by time zone by providing--- a list of groups (for example, groupName = \'Central\', items = [\'AL\',--- \'AR\', \'IA\', ...]) to a manual group rule. Note that a similar effect--- could be achieved by adding a time zone column to the source data and--- adjusting the pivot table. +-----------+-------------------+ | Time Zone--- | SUM of Population | +-----------+-------------------+ | Central |--- 106.3 | | Eastern | 151.9 | | Mountain | 17.4 | ...--- +-----------+-------------------+------ /See:/ 'manualRule' smart constructor.-newtype ManualRule = ManualRule'-    { _mrGroups :: Maybe [ManualRuleGroup]-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'ManualRule' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'mrGroups'-manualRule-    :: ManualRule-manualRule =-    ManualRule'-    { _mrGroups = Nothing-    }---- | The list of group names and the corresponding items from the source data--- that map to each group name.-mrGroups :: Lens' ManualRule [ManualRuleGroup]-mrGroups-  = lens _mrGroups (\ s a -> s{_mrGroups = a}) .-      _Default-      . _Coerce--instance FromJSON ManualRule where-        parseJSON-          = withObject "ManualRule"-              (\ o -> ManualRule' <$> (o .:? "groups" .!= mempty))--instance ToJSON ManualRule where-        toJSON ManualRule'{..}-          = object (catMaybes [("groups" .=) <$> _mrGroups])---- | Position settings for text.------ /See:/ 'textPosition' smart constructor.-newtype TextPosition = TextPosition'-    { _tpHorizontalAlignment :: Maybe TextPositionHorizontalAlignment-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'TextPosition' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'tpHorizontalAlignment'-textPosition-    :: TextPosition-textPosition =-    TextPosition'-    { _tpHorizontalAlignment = Nothing-    }---- | Horizontal alignment setting for the piece of text.-tpHorizontalAlignment :: Lens' TextPosition (Maybe TextPositionHorizontalAlignment)-tpHorizontalAlignment-  = lens _tpHorizontalAlignment-      (\ s a -> s{_tpHorizontalAlignment = a})--instance FromJSON TextPosition where-        parseJSON-          = withObject "TextPosition"-              (\ o ->-                 TextPosition' <$> (o .:? "horizontalAlignment"))--instance ToJSON TextPosition where-        toJSON TextPosition'{..}-          = object-              (catMaybes-                 [("horizontalAlignment" .=) <$>-                    _tpHorizontalAlignment])---- | 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. Deprecated; the width is determined--- by the \"style\" field.-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])---- | A request to retrieve all developer metadata matching the set of--- specified criteria.------ /See:/ 'searchDeveloperMetadataRequest' smart constructor.-newtype SearchDeveloperMetadataRequest = SearchDeveloperMetadataRequest'-    { _sdmrDataFilters :: Maybe [DataFilter]-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'SearchDeveloperMetadataRequest' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'sdmrDataFilters'-searchDeveloperMetadataRequest-    :: SearchDeveloperMetadataRequest-searchDeveloperMetadataRequest =-    SearchDeveloperMetadataRequest'-    { _sdmrDataFilters = Nothing-    }---- | The data filters describing the criteria used to determine which--- DeveloperMetadata entries to return. DeveloperMetadata matching any of--- the specified filters will be included in the response.-sdmrDataFilters :: Lens' SearchDeveloperMetadataRequest [DataFilter]-sdmrDataFilters-  = lens _sdmrDataFilters-      (\ s a -> s{_sdmrDataFilters = a})-      . _Default-      . _Coerce--instance FromJSON SearchDeveloperMetadataRequest-         where-        parseJSON-          = withObject "SearchDeveloperMetadataRequest"-              (\ o ->-                 SearchDeveloperMetadataRequest' <$>-                   (o .:? "dataFilters" .!= mempty))--instance ToJSON SearchDeveloperMetadataRequest where-        toJSON SearchDeveloperMetadataRequest'{..}-          = object-              (catMaybes [("dataFilters" .=) <$> _sdmrDataFilters])---- | The series of a CandlestickData.------ /See:/ 'candlestickSeries' smart constructor.-newtype CandlestickSeries = CandlestickSeries'-    { _csData :: Maybe ChartData-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'CandlestickSeries' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'csData'-candlestickSeries-    :: CandlestickSeries-candlestickSeries =-    CandlestickSeries'-    { _csData = Nothing-    }---- | The data of the CandlestickSeries.-csData :: Lens' CandlestickSeries (Maybe ChartData)-csData = lens _csData (\ s a -> s{_csData = a})--instance FromJSON CandlestickSeries where-        parseJSON-          = withObject "CandlestickSeries"-              (\ o -> CandlestickSeries' <$> (o .:? "data"))--instance ToJSON CandlestickSeries where-        toJSON CandlestickSeries'{..}-          = object (catMaybes [("data" .=) <$> _csData])---- | 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. The namedRangeId field is optional; if one is--- not set, an id will be randomly generated. (It is an error to specify--- the ID of a 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 GFieldMask)-    , _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 GFieldMask)-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 domain of a CandlestickChart.------ /See:/ 'candlestickDomain' smart constructor.-data CandlestickDomain = CandlestickDomain'-    { _cdReversed :: !(Maybe Bool)-    , _cdData     :: !(Maybe ChartData)-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'CandlestickDomain' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'cdReversed'------ * 'cdData'-candlestickDomain-    :: CandlestickDomain-candlestickDomain =-    CandlestickDomain'-    { _cdReversed = Nothing-    , _cdData = Nothing-    }---- | True to reverse the order of the domain values (horizontal axis).-cdReversed :: Lens' CandlestickDomain (Maybe Bool)-cdReversed-  = lens _cdReversed (\ s a -> s{_cdReversed = a})---- | The data of the CandlestickDomain.-cdData :: Lens' CandlestickDomain (Maybe ChartData)-cdData = lens _cdData (\ s a -> s{_cdData = a})--instance FromJSON CandlestickDomain where-        parseJSON-          = withObject "CandlestickDomain"-              (\ o ->-                 CandlestickDomain' <$>-                   (o .:? "reversed") <*> (o .:? "data"))--instance ToJSON CandlestickDomain where-        toJSON CandlestickDomain'{..}-          = object-              (catMaybes-                 [("reversed" .=) <$> _cdReversed,-                  ("data" .=) <$> _cdData])---- | 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)-    , _pvCalculatedDisplayType :: !(Maybe PivotValueCalculatedDisplayType)-    , _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'------ * 'pvCalculatedDisplayType'------ * 'pvSummarizeFunction'-pivotValue-    :: PivotValue-pivotValue =-    PivotValue'-    { _pvSourceColumnOffSet = Nothing-    , _pvFormula = Nothing-    , _pvName = Nothing-    , _pvCalculatedDisplayType = 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.-pvName :: Lens' PivotValue (Maybe Text)-pvName = lens _pvName (\ s a -> s{_pvName = a})---- | If specified, indicates that pivot values should be displayed as the--- result of a calculation with another pivot value. For example, if--- calculated_display_type is specified as PERCENT_OF_GRAND_TOTAL, all the--- pivot values are displayed as the percentage of the grand total. In the--- Sheets UI, this is referred to as \"Show As\" in the value section of a--- pivot table.-pvCalculatedDisplayType :: Lens' PivotValue (Maybe PivotValueCalculatedDisplayType)-pvCalculatedDisplayType-  = lens _pvCalculatedDisplayType-      (\ s a -> s{_pvCalculatedDisplayType = 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 .:? "calculatedDisplayType")-                     <*> (o .:? "summarizeFunction"))--instance ToJSON PivotValue where-        toJSON PivotValue'{..}-          = object-              (catMaybes-                 [("sourceColumnOffset" .=) <$> _pvSourceColumnOffSet,-                  ("formula" .=) <$> _pvFormula,-                  ("name" .=) <$> _pvName,-                  ("calculatedDisplayType" .=) <$>-                    _pvCalculatedDisplayType,-                  ("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])---- | Creates a group over the specified range. If the requested range is a--- superset of the range of an existing group G, then the depth of G is--- incremented and this new group G\' has the depth of that group. For--- example, a group [C:D, depth 1] + [B:E] results in groups [B:E, depth 1]--- and [C:D, depth 2]. If the requested range is a subset of the range of--- an existing group G, then the depth of the new group G\' becomes one--- greater than the depth of G. For example, a group [B:E, depth 1] + [C:D]--- results in groups [B:E, depth 1] and [C:D, depth 2]. If the requested--- range starts before and ends within, or starts within and ends after,--- the range of an existing group G, then the range of the existing group G--- becomes the union of the ranges, and the new group G\' has depth one--- greater than the depth of G and range as the intersection of the ranges.--- For example, a group [B:D, depth 1] + [C:E] results in groups [B:E,--- depth 1] and [C:D, depth 2].------ /See:/ 'addDimensionGroupRequest' smart constructor.-newtype AddDimensionGroupRequest = AddDimensionGroupRequest'-    { _adgrRange :: Maybe DimensionRange-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'AddDimensionGroupRequest' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'adgrRange'-addDimensionGroupRequest-    :: AddDimensionGroupRequest-addDimensionGroupRequest =-    AddDimensionGroupRequest'-    { _adgrRange = Nothing-    }---- | The range over which to create a group.-adgrRange :: Lens' AddDimensionGroupRequest (Maybe DimensionRange)-adgrRange-  = lens _adgrRange (\ s a -> s{_adgrRange = a})--instance FromJSON AddDimensionGroupRequest where-        parseJSON-          = withObject "AddDimensionGroupRequest"-              (\ o ->-                 AddDimensionGroupRequest' <$> (o .:? "range"))--instance ToJSON AddDimensionGroupRequest where-        toJSON AddDimensionGroupRequest'{..}-          = object (catMaybes [("range" .=) <$> _adgrRange])---- | Styles for a waterfall chart column.------ /See:/ 'waterfallChartColumnStyle' smart constructor.-data WaterfallChartColumnStyle = WaterfallChartColumnStyle'-    { _wColor :: !(Maybe Color)-    , _wLabel :: !(Maybe Text)-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'WaterfallChartColumnStyle' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'wColor'------ * 'wLabel'-waterfallChartColumnStyle-    :: WaterfallChartColumnStyle-waterfallChartColumnStyle =-    WaterfallChartColumnStyle'-    { _wColor = Nothing-    , _wLabel = Nothing-    }---- | The color of the column.-wColor :: Lens' WaterfallChartColumnStyle (Maybe Color)-wColor = lens _wColor (\ s a -> s{_wColor = a})---- | The label of the column\'s legend.-wLabel :: Lens' WaterfallChartColumnStyle (Maybe Text)-wLabel = lens _wLabel (\ s a -> s{_wLabel = a})--instance FromJSON WaterfallChartColumnStyle where-        parseJSON-          = withObject "WaterfallChartColumnStyle"-              (\ o ->-                 WaterfallChartColumnStyle' <$>-                   (o .:? "color") <*> (o .:? "label"))--instance ToJSON WaterfallChartColumnStyle where-        toJSON WaterfallChartColumnStyle'{..}-          = object-              (catMaybes-                 [("color" .=) <$> _wColor, ("label" .=) <$> _wLabel])---- | The Candlestick chart data, each containing the low, open, close, and--- high values for a series.------ /See:/ 'candlestickData' smart constructor.-data CandlestickData = CandlestickData'-    { _cdLowSeries   :: !(Maybe CandlestickSeries)-    , _cdHighSeries  :: !(Maybe CandlestickSeries)-    , _cdOpenSeries  :: !(Maybe CandlestickSeries)-    , _cdCloseSeries :: !(Maybe CandlestickSeries)-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'CandlestickData' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'cdLowSeries'------ * 'cdHighSeries'------ * 'cdOpenSeries'------ * 'cdCloseSeries'-candlestickData-    :: CandlestickData-candlestickData =-    CandlestickData'-    { _cdLowSeries = Nothing-    , _cdHighSeries = Nothing-    , _cdOpenSeries = Nothing-    , _cdCloseSeries = Nothing-    }---- | The range data (vertical axis) for the low\/minimum value for each--- candle. This is the bottom of the candle\'s center line.-cdLowSeries :: Lens' CandlestickData (Maybe CandlestickSeries)-cdLowSeries-  = lens _cdLowSeries (\ s a -> s{_cdLowSeries = a})---- | The range data (vertical axis) for the high\/maximum value for each--- candle. This is the top of the candle\'s center line.-cdHighSeries :: Lens' CandlestickData (Maybe CandlestickSeries)-cdHighSeries-  = lens _cdHighSeries (\ s a -> s{_cdHighSeries = a})---- | The range data (vertical axis) for the open\/initial value for each--- candle. This is the bottom of the candle body. If less than the close--- value the candle will be filled. Otherwise the candle will be hollow.-cdOpenSeries :: Lens' CandlestickData (Maybe CandlestickSeries)-cdOpenSeries-  = lens _cdOpenSeries (\ s a -> s{_cdOpenSeries = a})---- | The range data (vertical axis) for the close\/final value for each--- candle. This is the top of the candle body. If greater than the open--- value the candle will be filled. Otherwise the candle will be hollow.-cdCloseSeries :: Lens' CandlestickData (Maybe CandlestickSeries)-cdCloseSeries-  = lens _cdCloseSeries-      (\ s a -> s{_cdCloseSeries = a})--instance FromJSON CandlestickData where-        parseJSON-          = withObject "CandlestickData"-              (\ o ->-                 CandlestickData' <$>-                   (o .:? "lowSeries") <*> (o .:? "highSeries") <*>-                     (o .:? "openSeries")-                     <*> (o .:? "closeSeries"))--instance ToJSON CandlestickData where-        toJSON CandlestickData'{..}-          = object-              (catMaybes-                 [("lowSeries" .=) <$> _cdLowSeries,-                  ("highSeries" .=) <$> _cdHighSeries,-                  ("openSeries" .=) <$> _cdOpenSeries,-                  ("closeSeries" .=) <$> _cdCloseSeries])---- | A banded (alternating colors) range in a sheet.------ /See:/ 'bandedRange' smart constructor.-data BandedRange = BandedRange'-    { _brBandedRangeId    :: !(Maybe (Textual Int32))-    , _brRowProperties    :: !(Maybe BandingProperties)-    , _brRange            :: !(Maybe GridRange)-    , _brColumnProperties :: !(Maybe BandingProperties)-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'BandedRange' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'brBandedRangeId'------ * 'brRowProperties'------ * 'brRange'------ * 'brColumnProperties'-bandedRange-    :: BandedRange-bandedRange =-    BandedRange'-    { _brBandedRangeId = Nothing-    , _brRowProperties = Nothing-    , _brRange = Nothing-    , _brColumnProperties = Nothing-    }---- | The id of the banded range.-brBandedRangeId :: Lens' BandedRange (Maybe Int32)-brBandedRangeId-  = lens _brBandedRangeId-      (\ s a -> s{_brBandedRangeId = a})-      . mapping _Coerce---- | Properties for row bands. These properties are applied on a row-by-row--- basis throughout all the rows in the range. At least one of--- row_properties or column_properties must be specified.-brRowProperties :: Lens' BandedRange (Maybe BandingProperties)-brRowProperties-  = lens _brRowProperties-      (\ s a -> s{_brRowProperties = a})---- | The range over which these properties are applied.-brRange :: Lens' BandedRange (Maybe GridRange)-brRange = lens _brRange (\ s a -> s{_brRange = a})---- | Properties for column bands. These properties are applied on a column---- by-column basis throughout all the columns in the range. At least one of--- row_properties or column_properties must be specified.-brColumnProperties :: Lens' BandedRange (Maybe BandingProperties)-brColumnProperties-  = lens _brColumnProperties-      (\ s a -> s{_brColumnProperties = a})--instance FromJSON BandedRange where-        parseJSON-          = withObject "BandedRange"-              (\ o ->-                 BandedRange' <$>-                   (o .:? "bandedRangeId") <*> (o .:? "rowProperties")-                     <*> (o .:? "range")-                     <*> (o .:? "columnProperties"))--instance ToJSON BandedRange where-        toJSON BandedRange'{..}-          = object-              (catMaybes-                 [("bandedRangeId" .=) <$> _brBandedRangeId,-                  ("rowProperties" .=) <$> _brRowProperties,-                  ("range" .=) <$> _brRange,-                  ("columnProperties" .=) <$> _brColumnProperties])---- | 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])---- | The request for updating more than one range of values in a spreadsheet.------ /See:/ 'batchUpdateValuesByDataFilterRequest' smart constructor.-data BatchUpdateValuesByDataFilterRequest = BatchUpdateValuesByDataFilterRequest'-    { _buvbdfrData                         :: !(Maybe [DataFilterValueRange])-    , _buvbdfrValueInputOption             :: !(Maybe BatchUpdateValuesByDataFilterRequestValueInputOption)-    , _buvbdfrIncludeValuesInResponse      :: !(Maybe Bool)-    , _buvbdfrResponseDateTimeRenderOption :: !(Maybe BatchUpdateValuesByDataFilterRequestResponseDateTimeRenderOption)-    , _buvbdfrResponseValueRenderOption    :: !(Maybe BatchUpdateValuesByDataFilterRequestResponseValueRenderOption)-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'BatchUpdateValuesByDataFilterRequest' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'buvbdfrData'------ * 'buvbdfrValueInputOption'------ * 'buvbdfrIncludeValuesInResponse'------ * 'buvbdfrResponseDateTimeRenderOption'------ * 'buvbdfrResponseValueRenderOption'-batchUpdateValuesByDataFilterRequest-    :: BatchUpdateValuesByDataFilterRequest-batchUpdateValuesByDataFilterRequest =-    BatchUpdateValuesByDataFilterRequest'-    { _buvbdfrData = Nothing-    , _buvbdfrValueInputOption = Nothing-    , _buvbdfrIncludeValuesInResponse = Nothing-    , _buvbdfrResponseDateTimeRenderOption = Nothing-    , _buvbdfrResponseValueRenderOption = Nothing-    }---- | The new values to apply to the spreadsheet. If more than one range is--- matched by the specified DataFilter the specified values will be applied--- to all of those ranges.-buvbdfrData :: Lens' BatchUpdateValuesByDataFilterRequest [DataFilterValueRange]-buvbdfrData-  = lens _buvbdfrData (\ s a -> s{_buvbdfrData = a}) .-      _Default-      . _Coerce---- | How the input data should be interpreted.-buvbdfrValueInputOption :: Lens' BatchUpdateValuesByDataFilterRequest (Maybe BatchUpdateValuesByDataFilterRequestValueInputOption)-buvbdfrValueInputOption-  = lens _buvbdfrValueInputOption-      (\ s a -> s{_buvbdfrValueInputOption = a})---- | Determines if the update response should include the values of the cells--- that were updated. By default, responses do not include the updated--- values. The \`updatedData\` field within each of the--- BatchUpdateValuesResponse.responses will contain the updated values. If--- the range to write was larger than than the range actually written, the--- response will include all values in the requested range (excluding--- trailing empty rows and columns).-buvbdfrIncludeValuesInResponse :: Lens' BatchUpdateValuesByDataFilterRequest (Maybe Bool)-buvbdfrIncludeValuesInResponse-  = lens _buvbdfrIncludeValuesInResponse-      (\ s a -> s{_buvbdfrIncludeValuesInResponse = a})---- | Determines how dates, times, and durations in the response should be--- rendered. This is ignored if response_value_render_option is--- FORMATTED_VALUE. The default dateTime render option is--- DateTimeRenderOption.SERIAL_NUMBER.-buvbdfrResponseDateTimeRenderOption :: Lens' BatchUpdateValuesByDataFilterRequest (Maybe BatchUpdateValuesByDataFilterRequestResponseDateTimeRenderOption)-buvbdfrResponseDateTimeRenderOption-  = lens _buvbdfrResponseDateTimeRenderOption-      (\ s a ->-         s{_buvbdfrResponseDateTimeRenderOption = a})---- | Determines how values in the response should be rendered. The default--- render option is ValueRenderOption.FORMATTED_VALUE.-buvbdfrResponseValueRenderOption :: Lens' BatchUpdateValuesByDataFilterRequest (Maybe BatchUpdateValuesByDataFilterRequestResponseValueRenderOption)-buvbdfrResponseValueRenderOption-  = lens _buvbdfrResponseValueRenderOption-      (\ s a -> s{_buvbdfrResponseValueRenderOption = a})--instance FromJSON-         BatchUpdateValuesByDataFilterRequest where-        parseJSON-          = withObject "BatchUpdateValuesByDataFilterRequest"-              (\ o ->-                 BatchUpdateValuesByDataFilterRequest' <$>-                   (o .:? "data" .!= mempty) <*>-                     (o .:? "valueInputOption")-                     <*> (o .:? "includeValuesInResponse")-                     <*> (o .:? "responseDateTimeRenderOption")-                     <*> (o .:? "responseValueRenderOption"))--instance ToJSON BatchUpdateValuesByDataFilterRequest-         where-        toJSON BatchUpdateValuesByDataFilterRequest'{..}-          = object-              (catMaybes-                 [("data" .=) <$> _buvbdfrData,-                  ("valueInputOption" .=) <$> _buvbdfrValueInputOption,-                  ("includeValuesInResponse" .=) <$>-                    _buvbdfrIncludeValuesInResponse,-                  ("responseDateTimeRenderOption" .=) <$>-                    _buvbdfrResponseDateTimeRenderOption,-                  ("responseValueRenderOption" .=) <$>-                    _buvbdfrResponseValueRenderOption])---- | 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 are--- 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 is 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 retrieving a Spreadsheet.------ /See:/ 'getSpreadsheetByDataFilterRequest' smart constructor.-data GetSpreadsheetByDataFilterRequest = GetSpreadsheetByDataFilterRequest'-    { _gsbdfrDataFilters     :: !(Maybe [DataFilter])-    , _gsbdfrIncludeGridData :: !(Maybe Bool)-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'GetSpreadsheetByDataFilterRequest' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'gsbdfrDataFilters'------ * 'gsbdfrIncludeGridData'-getSpreadsheetByDataFilterRequest-    :: GetSpreadsheetByDataFilterRequest-getSpreadsheetByDataFilterRequest =-    GetSpreadsheetByDataFilterRequest'-    { _gsbdfrDataFilters = Nothing-    , _gsbdfrIncludeGridData = Nothing-    }---- | The DataFilters used to select which ranges to retrieve from the--- spreadsheet.-gsbdfrDataFilters :: Lens' GetSpreadsheetByDataFilterRequest [DataFilter]-gsbdfrDataFilters-  = lens _gsbdfrDataFilters-      (\ s a -> s{_gsbdfrDataFilters = a})-      . _Default-      . _Coerce---- | True if grid data should be returned. This parameter is ignored if a--- field mask was set in the request.-gsbdfrIncludeGridData :: Lens' GetSpreadsheetByDataFilterRequest (Maybe Bool)-gsbdfrIncludeGridData-  = lens _gsbdfrIncludeGridData-      (\ s a -> s{_gsbdfrIncludeGridData = a})--instance FromJSON GetSpreadsheetByDataFilterRequest-         where-        parseJSON-          = withObject "GetSpreadsheetByDataFilterRequest"-              (\ o ->-                 GetSpreadsheetByDataFilterRequest' <$>-                   (o .:? "dataFilters" .!= mempty) <*>-                     (o .:? "includeGridData"))--instance ToJSON GetSpreadsheetByDataFilterRequest-         where-        toJSON GetSpreadsheetByDataFilterRequest'{..}-          = object-              (catMaybes-                 [("dataFilters" .=) <$> _gsbdfrDataFilters,-                  ("includeGridData" .=) <$> _gsbdfrIncludeGridData])---- | The request for updating any aspect of a spreadsheet.------ /See:/ 'batchUpdateSpreadsheetRequest' smart constructor.-data BatchUpdateSpreadsheetRequest = BatchUpdateSpreadsheetRequest'-    { _busrResponseIncludeGridData      :: !(Maybe Bool)-    , _busrResponseRanges               :: !(Maybe [Text])-    , _busrRequests                     :: !(Maybe [Request'])-    , _busrIncludeSpreadsheetInResponse :: !(Maybe Bool)-    } 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:------ * 'busrResponseIncludeGridData'------ * 'busrResponseRanges'------ * 'busrRequests'------ * 'busrIncludeSpreadsheetInResponse'-batchUpdateSpreadsheetRequest-    :: BatchUpdateSpreadsheetRequest-batchUpdateSpreadsheetRequest =-    BatchUpdateSpreadsheetRequest'-    { _busrResponseIncludeGridData = Nothing-    , _busrResponseRanges = Nothing-    , _busrRequests = Nothing-    , _busrIncludeSpreadsheetInResponse = Nothing-    }---- | True if grid data should be returned. Meaningful only if if--- include_spreadsheet_in_response is \'true\'. This parameter is ignored--- if a field mask was set in the request.-busrResponseIncludeGridData :: Lens' BatchUpdateSpreadsheetRequest (Maybe Bool)-busrResponseIncludeGridData-  = lens _busrResponseIncludeGridData-      (\ s a -> s{_busrResponseIncludeGridData = a})---- | Limits the ranges included in the response spreadsheet. Meaningful only--- if include_spreadsheet_response is \'true\'.-busrResponseRanges :: Lens' BatchUpdateSpreadsheetRequest [Text]-busrResponseRanges-  = lens _busrResponseRanges-      (\ s a -> s{_busrResponseRanges = a})-      . _Default-      . _Coerce---- | A list of updates to apply to the spreadsheet. Requests will be applied--- in the order they are specified. If any request is not valid, no--- requests will be applied.-busrRequests :: Lens' BatchUpdateSpreadsheetRequest [Request']-busrRequests-  = lens _busrRequests (\ s a -> s{_busrRequests = a})-      . _Default-      . _Coerce---- | Determines if the update response should include the spreadsheet--- resource.-busrIncludeSpreadsheetInResponse :: Lens' BatchUpdateSpreadsheetRequest (Maybe Bool)-busrIncludeSpreadsheetInResponse-  = lens _busrIncludeSpreadsheetInResponse-      (\ s a -> s{_busrIncludeSpreadsheetInResponse = a})--instance FromJSON BatchUpdateSpreadsheetRequest where-        parseJSON-          = withObject "BatchUpdateSpreadsheetRequest"-              (\ o ->-                 BatchUpdateSpreadsheetRequest' <$>-                   (o .:? "responseIncludeGridData") <*>-                     (o .:? "responseRanges" .!= mempty)-                     <*> (o .:? "requests" .!= mempty)-                     <*> (o .:? "includeSpreadsheetInResponse"))--instance ToJSON BatchUpdateSpreadsheetRequest where-        toJSON BatchUpdateSpreadsheetRequest'{..}-          = object-              (catMaybes-                 [("responseIncludeGridData" .=) <$>-                    _busrResponseIncludeGridData,-                  ("responseRanges" .=) <$> _busrResponseRanges,-                  ("requests" .=) <$> _busrRequests,-                  ("includeSpreadsheetInResponse" .=) <$>-                    _busrIncludeSpreadsheetInResponse])---- | 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)-    , _uvrUpdatedData    :: !(Maybe ValueRange)-    , _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'------ * 'uvrUpdatedData'------ * 'uvrUpdatedColumns'-updateValuesResponse-    :: UpdateValuesResponse-updateValuesResponse =-    UpdateValuesResponse'-    { _uvrUpdatedCells = Nothing-    , _uvrSpreadsheetId = Nothing-    , _uvrUpdatedRows = Nothing-    , _uvrUpdatedRange = Nothing-    , _uvrUpdatedData = 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 values of the cells after updates were applied. This is only--- included if the request\'s \`includeValuesInResponse\` field was--- \`true\`.-uvrUpdatedData :: Lens' UpdateValuesResponse (Maybe ValueRange)-uvrUpdatedData-  = lens _uvrUpdatedData-      (\ s a -> s{_uvrUpdatedData = 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 .:? "updatedData")-                     <*> (o .:? "updatedColumns"))--instance ToJSON UpdateValuesResponse where-        toJSON UpdateValuesResponse'{..}-          = object-              (catMaybes-                 [("updatedCells" .=) <$> _uvrUpdatedCells,-                  ("spreadsheetId" .=) <$> _uvrSpreadsheetId,-                  ("updatedRows" .=) <$> _uvrUpdatedRows,-                  ("updatedRange" .=) <$> _uvrUpdatedRange,-                  ("updatedData" .=) <$> _uvrUpdatedData,-                  ("updatedColumns" .=) <$> _uvrUpdatedColumns])---- | The result of deleting a group.------ /See:/ 'deleteDimensionGroupResponse' smart constructor.-newtype DeleteDimensionGroupResponse = DeleteDimensionGroupResponse'-    { _ddgrDimensionGroups :: Maybe [DimensionGroup]-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'DeleteDimensionGroupResponse' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'ddgrDimensionGroups'-deleteDimensionGroupResponse-    :: DeleteDimensionGroupResponse-deleteDimensionGroupResponse =-    DeleteDimensionGroupResponse'-    { _ddgrDimensionGroups = Nothing-    }---- | All groups of a dimension after deleting a group from that dimension.-ddgrDimensionGroups :: Lens' DeleteDimensionGroupResponse [DimensionGroup]-ddgrDimensionGroups-  = lens _ddgrDimensionGroups-      (\ s a -> s{_ddgrDimensionGroups = a})-      . _Default-      . _Coerce--instance FromJSON DeleteDimensionGroupResponse where-        parseJSON-          = withObject "DeleteDimensionGroupResponse"-              (\ o ->-                 DeleteDimensionGroupResponse' <$>-                   (o .:? "dimensionGroups" .!= mempty))--instance ToJSON DeleteDimensionGroupResponse where-        toJSON DeleteDimensionGroupResponse'{..}-          = object-              (catMaybes-                 [("dimensionGroups" .=) <$> _ddgrDimensionGroups])---- | 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. The filterViewId field is optional; if one is not--- set, an id will be randomly generated. (It is an error to specify the ID--- of a filter that already exists.)-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])---- | The response when clearing a range of values selected with DataFilters--- in a spreadsheet.------ /See:/ 'batchClearValuesByDataFilterResponse' smart constructor.-data BatchClearValuesByDataFilterResponse = BatchClearValuesByDataFilterResponse'-    { _bcvbdfrClearedRanges :: !(Maybe [Text])-    , _bcvbdfrSpreadsheetId :: !(Maybe Text)-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'BatchClearValuesByDataFilterResponse' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'bcvbdfrClearedRanges'------ * 'bcvbdfrSpreadsheetId'-batchClearValuesByDataFilterResponse-    :: BatchClearValuesByDataFilterResponse-batchClearValuesByDataFilterResponse =-    BatchClearValuesByDataFilterResponse'-    { _bcvbdfrClearedRanges = Nothing-    , _bcvbdfrSpreadsheetId = Nothing-    }---- | The ranges that were cleared, in A1 notation. (If the requests were for--- an unbounded range or a ranger larger than the bounds of the sheet, this--- will be the actual ranges that were cleared, bounded to the sheet\'s--- limits.)-bcvbdfrClearedRanges :: Lens' BatchClearValuesByDataFilterResponse [Text]-bcvbdfrClearedRanges-  = lens _bcvbdfrClearedRanges-      (\ s a -> s{_bcvbdfrClearedRanges = a})-      . _Default-      . _Coerce---- | The spreadsheet the updates were applied to.-bcvbdfrSpreadsheetId :: Lens' BatchClearValuesByDataFilterResponse (Maybe Text)-bcvbdfrSpreadsheetId-  = lens _bcvbdfrSpreadsheetId-      (\ s a -> s{_bcvbdfrSpreadsheetId = a})--instance FromJSON-         BatchClearValuesByDataFilterResponse where-        parseJSON-          = withObject "BatchClearValuesByDataFilterResponse"-              (\ o ->-                 BatchClearValuesByDataFilterResponse' <$>-                   (o .:? "clearedRanges" .!= mempty) <*>-                     (o .:? "spreadsheetId"))--instance ToJSON BatchClearValuesByDataFilterResponse-         where-        toJSON BatchClearValuesByDataFilterResponse'{..}-          = object-              (catMaybes-                 [("clearedRanges" .=) <$> _bcvbdfrClearedRanges,-                  ("spreadsheetId" .=) <$> _bcvbdfrSpreadsheetId])---- | A single series of data for a waterfall chart.------ /See:/ 'waterfallChartSeries' smart constructor.-data WaterfallChartSeries = WaterfallChartSeries'-    { _wcsData                 :: !(Maybe ChartData)-    , _wcsCustomSubtotals      :: !(Maybe [WaterfallChartCustomSubtotal])-    , _wcsNegativeColumnsStyle :: !(Maybe WaterfallChartColumnStyle)-    , _wcsHideTrailingSubtotal :: !(Maybe Bool)-    , _wcsSubtotalColumnsStyle :: !(Maybe WaterfallChartColumnStyle)-    , _wcsPositiveColumnsStyle :: !(Maybe WaterfallChartColumnStyle)-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'WaterfallChartSeries' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'wcsData'------ * 'wcsCustomSubtotals'------ * 'wcsNegativeColumnsStyle'------ * 'wcsHideTrailingSubtotal'------ * 'wcsSubtotalColumnsStyle'------ * 'wcsPositiveColumnsStyle'-waterfallChartSeries-    :: WaterfallChartSeries-waterfallChartSeries =-    WaterfallChartSeries'-    { _wcsData = Nothing-    , _wcsCustomSubtotals = Nothing-    , _wcsNegativeColumnsStyle = Nothing-    , _wcsHideTrailingSubtotal = Nothing-    , _wcsSubtotalColumnsStyle = Nothing-    , _wcsPositiveColumnsStyle = Nothing-    }---- | The data being visualized in this series.-wcsData :: Lens' WaterfallChartSeries (Maybe ChartData)-wcsData = lens _wcsData (\ s a -> s{_wcsData = a})---- | Custom subtotal columns appearing in this series. The order in which--- subtotals are defined is not significant. Only one subtotal may be--- defined for each data point.-wcsCustomSubtotals :: Lens' WaterfallChartSeries [WaterfallChartCustomSubtotal]-wcsCustomSubtotals-  = lens _wcsCustomSubtotals-      (\ s a -> s{_wcsCustomSubtotals = a})-      . _Default-      . _Coerce---- | Styles for all columns in this series with negative values.-wcsNegativeColumnsStyle :: Lens' WaterfallChartSeries (Maybe WaterfallChartColumnStyle)-wcsNegativeColumnsStyle-  = lens _wcsNegativeColumnsStyle-      (\ s a -> s{_wcsNegativeColumnsStyle = a})---- | True to hide the subtotal column from the end of the series. By default,--- a subtotal column will appear at the end of each series. Setting this--- field to true will hide that subtotal column for this series.-wcsHideTrailingSubtotal :: Lens' WaterfallChartSeries (Maybe Bool)-wcsHideTrailingSubtotal-  = lens _wcsHideTrailingSubtotal-      (\ s a -> s{_wcsHideTrailingSubtotal = a})---- | Styles for all subtotal columns in this series.-wcsSubtotalColumnsStyle :: Lens' WaterfallChartSeries (Maybe WaterfallChartColumnStyle)-wcsSubtotalColumnsStyle-  = lens _wcsSubtotalColumnsStyle-      (\ s a -> s{_wcsSubtotalColumnsStyle = a})---- | Styles for all columns in this series with positive values.-wcsPositiveColumnsStyle :: Lens' WaterfallChartSeries (Maybe WaterfallChartColumnStyle)-wcsPositiveColumnsStyle-  = lens _wcsPositiveColumnsStyle-      (\ s a -> s{_wcsPositiveColumnsStyle = a})--instance FromJSON WaterfallChartSeries where-        parseJSON-          = withObject "WaterfallChartSeries"-              (\ o ->-                 WaterfallChartSeries' <$>-                   (o .:? "data") <*>-                     (o .:? "customSubtotals" .!= mempty)-                     <*> (o .:? "negativeColumnsStyle")-                     <*> (o .:? "hideTrailingSubtotal")-                     <*> (o .:? "subtotalColumnsStyle")-                     <*> (o .:? "positiveColumnsStyle"))--instance ToJSON WaterfallChartSeries where-        toJSON WaterfallChartSeries'{..}-          = object-              (catMaybes-                 [("data" .=) <$> _wcsData,-                  ("customSubtotals" .=) <$> _wcsCustomSubtotals,-                  ("negativeColumnsStyle" .=) <$>-                    _wcsNegativeColumnsStyle,-                  ("hideTrailingSubtotal" .=) <$>-                    _wcsHideTrailingSubtotal,-                  ("subtotalColumnsStyle" .=) <$>-                    _wcsSubtotalColumnsStyle,-                  ("positiveColumnsStyle" .=) <$>-                    _wcsPositiveColumnsStyle])---- | 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 GFieldMask)-    } 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 GFieldMask)-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)-    , _cfTextRotation         :: !(Maybe TextRotation)-    , _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'------ * 'cfTextRotation'------ * 'cfHyperlinkDisplayType'------ * 'cfWrapStrategy'------ * 'cfNumberFormat'------ * 'cfTextDirection'------ * 'cfTextFormat'------ * 'cfHorizontalAlignment'------ * 'cfPadding'-cellFormat-    :: CellFormat-cellFormat =-    CellFormat'-    { _cfBOrders = Nothing-    , _cfVerticalAlignment = Nothing-    , _cfBackgRoundColor = Nothing-    , _cfTextRotation = 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})---- | The rotation applied to text in a cell-cfTextRotation :: Lens' CellFormat (Maybe TextRotation)-cfTextRotation-  = lens _cfTextRotation-      (\ s a -> s{_cfTextRotation = 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 .:? "textRotation")-                     <*> (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,-                  ("textRotation" .=) <$> _cfTextRotation,-                  ("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 GFieldMask)-    } 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.-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 GFieldMask)-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'-    { _bcaTitleTextPosition :: !(Maybe TextPosition)-    , _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:------ * 'bcaTitleTextPosition'------ * 'bcaFormat'------ * 'bcaTitle'------ * 'bcaPosition'-basicChartAxis-    :: BasicChartAxis-basicChartAxis =-    BasicChartAxis'-    { _bcaTitleTextPosition = Nothing-    , _bcaFormat = Nothing-    , _bcaTitle = Nothing-    , _bcaPosition = Nothing-    }---- | The axis title text position.-bcaTitleTextPosition :: Lens' BasicChartAxis (Maybe TextPosition)-bcaTitleTextPosition-  = lens _bcaTitleTextPosition-      (\ s a -> s{_bcaTitleTextPosition = a})---- | 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 .:? "titleTextPosition") <*> (o .:? "format") <*>-                     (o .:? "title")-                     <*> (o .:? "position"))--instance ToJSON BasicChartAxis where-        toJSON BasicChartAxis'{..}-          = object-              (catMaybes-                 [("titleTextPosition" .=) <$> _bcaTitleTextPosition,-                  ("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. See--- the [Date and Number Formats guide](\/sheets\/api\/guides\/formats) for--- more information about the supported patterns.-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])-    , _busrUpdatedSpreadsheet :: !(Maybe Spreadsheet)-    } 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'------ * 'busrUpdatedSpreadsheet'-batchUpdateSpreadsheetResponse-    :: BatchUpdateSpreadsheetResponse-batchUpdateSpreadsheetResponse =-    BatchUpdateSpreadsheetResponse'-    { _busrSpreadsheetId = Nothing-    , _busrReplies = Nothing-    , _busrUpdatedSpreadsheet = 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---- | The spreadsheet after updates were applied. This is only set if--- [BatchUpdateSpreadsheetRequest.include_spreadsheet_in_response] is--- \`true\`.-busrUpdatedSpreadsheet :: Lens' BatchUpdateSpreadsheetResponse (Maybe Spreadsheet)-busrUpdatedSpreadsheet-  = lens _busrUpdatedSpreadsheet-      (\ s a -> s{_busrUpdatedSpreadsheet = a})--instance FromJSON BatchUpdateSpreadsheetResponse-         where-        parseJSON-          = withObject "BatchUpdateSpreadsheetResponse"-              (\ o ->-                 BatchUpdateSpreadsheetResponse' <$>-                   (o .:? "spreadsheetId") <*>-                     (o .:? "replies" .!= mempty)-                     <*> (o .:? "updatedSpreadsheet"))--instance ToJSON BatchUpdateSpreadsheetResponse where-        toJSON BatchUpdateSpreadsheetResponse'{..}-          = object-              (catMaybes-                 [("spreadsheetId" .=) <$> _busrSpreadsheetId,-                  ("replies" .=) <$> _busrReplies,-                  ("updatedSpreadsheet" .=) <$>-                    _busrUpdatedSpreadsheet])---- | Filter that describes what data should be selected or returned from a--- request.------ /See:/ 'dataFilter' smart constructor.-data DataFilter = DataFilter'-    { _dfGridRange               :: !(Maybe GridRange)-    , _dfA1Range                 :: !(Maybe Text)-    , _dfDeveloperMetadataLookup :: !(Maybe DeveloperMetadataLookup)-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'DataFilter' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'dfGridRange'------ * 'dfA1Range'------ * 'dfDeveloperMetadataLookup'-dataFilter-    :: DataFilter-dataFilter =-    DataFilter'-    { _dfGridRange = Nothing-    , _dfA1Range = Nothing-    , _dfDeveloperMetadataLookup = Nothing-    }---- | Selects data that matches the range described by the GridRange.-dfGridRange :: Lens' DataFilter (Maybe GridRange)-dfGridRange-  = lens _dfGridRange (\ s a -> s{_dfGridRange = a})---- | Selects data that matches the specified A1 range.-dfA1Range :: Lens' DataFilter (Maybe Text)-dfA1Range-  = lens _dfA1Range (\ s a -> s{_dfA1Range = a})---- | Selects data associated with the developer metadata matching the--- criteria described by this DeveloperMetadataLookup.-dfDeveloperMetadataLookup :: Lens' DataFilter (Maybe DeveloperMetadataLookup)-dfDeveloperMetadataLookup-  = lens _dfDeveloperMetadataLookup-      (\ s a -> s{_dfDeveloperMetadataLookup = a})--instance FromJSON DataFilter where-        parseJSON-          = withObject "DataFilter"-              (\ o ->-                 DataFilter' <$>-                   (o .:? "gridRange") <*> (o .:? "a1Range") <*>-                     (o .:? "developerMetadataLookup"))--instance ToJSON DataFilter where-        toJSON DataFilter'{..}-          = object-              (catMaybes-                 [("gridRange" .=) <$> _dfGridRange,-                  ("a1Range" .=) <$> _dfA1Range,-                  ("developerMetadataLookup" .=) <$>-                    _dfDeveloperMetadataLookup])---- | 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])---- | Properties referring a single dimension (either row or column). If both--- BandedRange.row_properties and BandedRange.column_properties are set,--- the fill colors are applied to cells according to the following rules: *--- header_color and footer_color take priority over band colors. *--- first_band_color takes priority over second_band_color. * row_properties--- takes priority over column_properties. For example, the first row color--- takes priority over the first column color, but the first column color--- takes priority over the second row color. Similarly, the row header--- takes priority over the column header in the top left cell, but the--- column header takes priority over the first row color if the row header--- is not set.------ /See:/ 'bandingProperties' smart constructor.-data BandingProperties = BandingProperties'-    { _bpSecondBandColor :: !(Maybe Color)-    , _bpHeaderColor     :: !(Maybe Color)-    , _bpFooterColor     :: !(Maybe Color)-    , _bpFirstBandColor  :: !(Maybe Color)-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'BandingProperties' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'bpSecondBandColor'------ * 'bpHeaderColor'------ * 'bpFooterColor'------ * 'bpFirstBandColor'-bandingProperties-    :: BandingProperties-bandingProperties =-    BandingProperties'-    { _bpSecondBandColor = Nothing-    , _bpHeaderColor = Nothing-    , _bpFooterColor = Nothing-    , _bpFirstBandColor = Nothing-    }---- | The second color that is alternating. (Required)-bpSecondBandColor :: Lens' BandingProperties (Maybe Color)-bpSecondBandColor-  = lens _bpSecondBandColor-      (\ s a -> s{_bpSecondBandColor = a})---- | The color of the first row or column. If this field is set, the first--- row or column will be filled with this color and the colors will--- alternate between first_band_color and second_band_color starting from--- the second row or column. Otherwise, the first row or column will be--- filled with first_band_color and the colors will proceed to alternate as--- they normally would.-bpHeaderColor :: Lens' BandingProperties (Maybe Color)-bpHeaderColor-  = lens _bpHeaderColor-      (\ s a -> s{_bpHeaderColor = a})---- | The color of the last row or column. If this field is not set, the last--- row or column will be filled with either first_band_color or--- second_band_color, depending on the color of the previous row or column.-bpFooterColor :: Lens' BandingProperties (Maybe Color)-bpFooterColor-  = lens _bpFooterColor-      (\ s a -> s{_bpFooterColor = a})---- | The first color that is alternating. (Required)-bpFirstBandColor :: Lens' BandingProperties (Maybe Color)-bpFirstBandColor-  = lens _bpFirstBandColor-      (\ s a -> s{_bpFirstBandColor = a})--instance FromJSON BandingProperties where-        parseJSON-          = withObject "BandingProperties"-              (\ o ->-                 BandingProperties' <$>-                   (o .:? "secondBandColor") <*> (o .:? "headerColor")-                     <*> (o .:? "footerColor")-                     <*> (o .:? "firstBandColor"))--instance ToJSON BandingProperties where-        toJSON BandingProperties'{..}-          = object-              (catMaybes-                 [("secondBandColor" .=) <$> _bpSecondBandColor,-                  ("headerColor" .=) <$> _bpHeaderColor,-                  ("footerColor" .=) <$> _bpFooterColor,-                  ("firstBandColor" .=) <$> _bpFirstBandColor])---- | 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'-    { _pgRepeatHeadings     :: !(Maybe Bool)-    , _pgValueMetadata      :: !(Maybe [PivotGroupValueMetadata])-    , _pgSourceColumnOffSet :: !(Maybe (Textual Int32))-    , _pgSortOrder          :: !(Maybe PivotGroupSortOrder)-    , _pgShowTotals         :: !(Maybe Bool)-    , _pgValueBucket        :: !(Maybe PivotGroupSortValueBucket)-    , _pgLabel              :: !(Maybe Text)-    , _pgGroupRule          :: !(Maybe PivotGroupRule)-    } 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:------ * 'pgRepeatHeadings'------ * 'pgValueMetadata'------ * 'pgSourceColumnOffSet'------ * 'pgSortOrder'------ * 'pgShowTotals'------ * 'pgValueBucket'------ * 'pgLabel'------ * 'pgGroupRule'-pivotGroup-    :: PivotGroup-pivotGroup =-    PivotGroup'-    { _pgRepeatHeadings = Nothing-    , _pgValueMetadata = Nothing-    , _pgSourceColumnOffSet = Nothing-    , _pgSortOrder = Nothing-    , _pgShowTotals = Nothing-    , _pgValueBucket = Nothing-    , _pgLabel = Nothing-    , _pgGroupRule = Nothing-    }---- | True if the headings in this pivot group should be repeated. This is--- only valid for row groupings and is ignored by columns. By default, we--- minimize repitition of headings by not showing higher level headings--- where they are the same. For example, even though the third row below--- corresponds to \"Q1 Mar\", \"Q1\" is not shown because it is redundant--- with previous rows. Setting repeat_headings to true would cause \"Q1\"--- to be repeated for \"Feb\" and \"Mar\". +--------------+ | Q1 | Jan | |--- | Feb | | | Mar | +--------+-----+ | Q1 Total | +--------------+-pgRepeatHeadings :: Lens' PivotGroup (Maybe Bool)-pgRepeatHeadings-  = lens _pgRepeatHeadings-      (\ s a -> s{_pgRepeatHeadings = a})---- | 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})---- | The labels to use for the row\/column groups which can be customized.--- For example, in the following pivot table, the row label is \`Region\`--- (which could be renamed to \`State\`) and the column label is--- \`Product\` (which could be renamed \`Item\`). Pivot tables created--- before December 2017 do not have header labels. If you\'d like to add--- header labels to an existing pivot table, please delete the existing--- pivot table and then create a new pivot table with same parameters.--- +--------------+---------+-------+ | SUM of Units | Product | | | Region--- | Pen | Paper | +--------------+---------+-------+ | New York | 345 | 98--- | | Oregon | 234 | 123 | | Tennessee | 531 | 415 |--- +--------------+---------+-------+ | Grand Total | 1110 | 636 |--- +--------------+---------+-------+-pgLabel :: Lens' PivotGroup (Maybe Text)-pgLabel = lens _pgLabel (\ s a -> s{_pgLabel = a})---- | The group rule to apply to this row\/column group.-pgGroupRule :: Lens' PivotGroup (Maybe PivotGroupRule)-pgGroupRule-  = lens _pgGroupRule (\ s a -> s{_pgGroupRule = a})--instance FromJSON PivotGroup where-        parseJSON-          = withObject "PivotGroup"-              (\ o ->-                 PivotGroup' <$>-                   (o .:? "repeatHeadings") <*>-                     (o .:? "valueMetadata" .!= mempty)-                     <*> (o .:? "sourceColumnOffset")-                     <*> (o .:? "sortOrder")-                     <*> (o .:? "showTotals")-                     <*> (o .:? "valueBucket")-                     <*> (o .:? "label")-                     <*> (o .:? "groupRule"))--instance ToJSON PivotGroup where-        toJSON PivotGroup'{..}-          = object-              (catMaybes-                 [("repeatHeadings" .=) <$> _pgRepeatHeadings,-                  ("valueMetadata" .=) <$> _pgValueMetadata,-                  ("sourceColumnOffset" .=) <$> _pgSourceColumnOffSet,-                  ("sortOrder" .=) <$> _pgSortOrder,-                  ("showTotals" .=) <$> _pgShowTotals,-                  ("valueBucket" .=) <$> _pgValueBucket,-                  ("label" .=) <$> _pgLabel,-                  ("groupRule" .=) <$> _pgGroupRule])---- | The result of adding a banded range.------ /See:/ 'addBandingResponse' smart constructor.-newtype AddBandingResponse = AddBandingResponse'-    { _aBandedRange :: Maybe BandedRange-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'AddBandingResponse' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'aBandedRange'-addBandingResponse-    :: AddBandingResponse-addBandingResponse =-    AddBandingResponse'-    { _aBandedRange = Nothing-    }---- | The banded range that was added.-aBandedRange :: Lens' AddBandingResponse (Maybe BandedRange)-aBandedRange-  = lens _aBandedRange (\ s a -> s{_aBandedRange = a})--instance FromJSON AddBandingResponse where-        parseJSON-          = withObject "AddBandingResponse"-              (\ o ->-                 AddBandingResponse' <$> (o .:? "bandedRange"))--instance ToJSON AddBandingResponse where-        toJSON AddBandingResponse'{..}-          = object-              (catMaybes [("bandedRange" .=) <$> _aBandedRange])---- | An </chart/interactive/docs/gallery/orgchart org chart>. Org charts--- require a unique set of labels in labels and may optionally include--- parent_labels and tooltips. parent_labels contain, for each node, the--- label identifying the parent node. tooltips contain, for each node, an--- optional tooltip. For example, to describe an OrgChart with Alice as the--- CEO, Bob as the President (reporting to Alice) and Cathy as VP of Sales--- (also reporting to Alice), have labels contain \"Alice\", \"Bob\",--- \"Cathy\", parent_labels contain \"\", \"Alice\", \"Alice\" and tooltips--- contain \"CEO\", \"President\", \"VP Sales\".------ /See:/ 'orgChartSpec' smart constructor.-data OrgChartSpec = OrgChartSpec'-    { _ocsNodeColor         :: !(Maybe Color)-    , _ocsNodeSize          :: !(Maybe OrgChartSpecNodeSize)-    , _ocsTooltips          :: !(Maybe ChartData)-    , _ocsSelectedNodeColor :: !(Maybe Color)-    , _ocsLabels            :: !(Maybe ChartData)-    , _ocsParentLabels      :: !(Maybe ChartData)-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'OrgChartSpec' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'ocsNodeColor'------ * 'ocsNodeSize'------ * 'ocsTooltips'------ * 'ocsSelectedNodeColor'------ * 'ocsLabels'------ * 'ocsParentLabels'-orgChartSpec-    :: OrgChartSpec-orgChartSpec =-    OrgChartSpec'-    { _ocsNodeColor = Nothing-    , _ocsNodeSize = Nothing-    , _ocsTooltips = Nothing-    , _ocsSelectedNodeColor = Nothing-    , _ocsLabels = Nothing-    , _ocsParentLabels = Nothing-    }---- | The color of the org chart nodes.-ocsNodeColor :: Lens' OrgChartSpec (Maybe Color)-ocsNodeColor-  = lens _ocsNodeColor (\ s a -> s{_ocsNodeColor = a})---- | The size of the org chart nodes.-ocsNodeSize :: Lens' OrgChartSpec (Maybe OrgChartSpecNodeSize)-ocsNodeSize-  = lens _ocsNodeSize (\ s a -> s{_ocsNodeSize = a})---- | The data containing the tooltip for the corresponding node. A blank--- value results in no tooltip being displayed for the node. This field is--- optional.-ocsTooltips :: Lens' OrgChartSpec (Maybe ChartData)-ocsTooltips-  = lens _ocsTooltips (\ s a -> s{_ocsTooltips = a})---- | The color of the selected org chart nodes.-ocsSelectedNodeColor :: Lens' OrgChartSpec (Maybe Color)-ocsSelectedNodeColor-  = lens _ocsSelectedNodeColor-      (\ s a -> s{_ocsSelectedNodeColor = a})---- | The data containing the labels for all the nodes in the chart. Labels--- must be unique.-ocsLabels :: Lens' OrgChartSpec (Maybe ChartData)-ocsLabels-  = lens _ocsLabels (\ s a -> s{_ocsLabels = a})---- | The data containing the label of the parent for the corresponding node.--- A blank value indicates that the node has no parent and is a top-level--- node. This field is optional.-ocsParentLabels :: Lens' OrgChartSpec (Maybe ChartData)-ocsParentLabels-  = lens _ocsParentLabels-      (\ s a -> s{_ocsParentLabels = a})--instance FromJSON OrgChartSpec where-        parseJSON-          = withObject "OrgChartSpec"-              (\ o ->-                 OrgChartSpec' <$>-                   (o .:? "nodeColor") <*> (o .:? "nodeSize") <*>-                     (o .:? "tooltips")-                     <*> (o .:? "selectedNodeColor")-                     <*> (o .:? "labels")-                     <*> (o .:? "parentLabels"))--instance ToJSON OrgChartSpec where-        toJSON OrgChartSpec'{..}-          = object-              (catMaybes-                 [("nodeColor" .=) <$> _ocsNodeColor,-                  ("nodeSize" .=) <$> _ocsNodeSize,-                  ("tooltips" .=) <$> _ocsTooltips,-                  ("selectedNodeColor" .=) <$> _ocsSelectedNodeColor,-                  ("labels" .=) <$> _ocsLabels,-                  ("parentLabels" .=) <$> _ocsParentLabels])---- | Randomizes the order of the rows in a range.------ /See:/ 'randomizeRangeRequest' smart constructor.-newtype RandomizeRangeRequest = RandomizeRangeRequest'-    { _rrrRange :: Maybe GridRange-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'RandomizeRangeRequest' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'rrrRange'-randomizeRangeRequest-    :: RandomizeRangeRequest-randomizeRangeRequest =-    RandomizeRangeRequest'-    { _rrrRange = Nothing-    }---- | The range to randomize.-rrrRange :: Lens' RandomizeRangeRequest (Maybe GridRange)-rrrRange = lens _rrrRange (\ s a -> s{_rrrRange = a})--instance FromJSON RandomizeRangeRequest where-        parseJSON-          = withObject "RandomizeRangeRequest"-              (\ o -> RandomizeRangeRequest' <$> (o .:? "range"))--instance ToJSON RandomizeRangeRequest where-        toJSON RandomizeRangeRequest'{..}-          = object (catMaybes [("range" .=) <$> _rrrRange])---- | A histogram series containing the series color and data.------ /See:/ 'histogramSeries' smart constructor.-data HistogramSeries = HistogramSeries'-    { _hsBarColor :: !(Maybe Color)-    , _hsData     :: !(Maybe ChartData)-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'HistogramSeries' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'hsBarColor'------ * 'hsData'-histogramSeries-    :: HistogramSeries-histogramSeries =-    HistogramSeries'-    { _hsBarColor = Nothing-    , _hsData = Nothing-    }---- | The color of the column representing this series in each bucket. This--- field is optional.-hsBarColor :: Lens' HistogramSeries (Maybe Color)-hsBarColor-  = lens _hsBarColor (\ s a -> s{_hsBarColor = a})---- | The data for this histogram series.-hsData :: Lens' HistogramSeries (Maybe ChartData)-hsData = lens _hsData (\ s a -> s{_hsData = a})--instance FromJSON HistogramSeries where-        parseJSON-          = withObject "HistogramSeries"-              (\ o ->-                 HistogramSeries' <$>-                   (o .:? "barColor") <*> (o .:? "data"))--instance ToJSON HistogramSeries where-        toJSON HistogramSeries'{..}-          = object-              (catMaybes-                 [("barColor" .=) <$> _hsBarColor,-                  ("data" .=) <$> _hsData])---- | A </chart/interactive/docs/gallery/treemap Treemap chart>.------ /See:/ 'treemapChartSpec' smart constructor.-data TreemapChartSpec = TreemapChartSpec'-    { _tcsHintedLevels :: !(Maybe (Textual Int32))-    , _tcsMaxValue     :: !(Maybe (Textual Double))-    , _tcsHeaderColor  :: !(Maybe Color)-    , _tcsSizeData     :: !(Maybe ChartData)-    , _tcsColorData    :: !(Maybe ChartData)-    , _tcsHideTooltips :: !(Maybe Bool)-    , _tcsLevels       :: !(Maybe (Textual Int32))-    , _tcsLabels       :: !(Maybe ChartData)-    , _tcsColorScale   :: !(Maybe TreemapChartColorScale)-    , _tcsTextFormat   :: !(Maybe TextFormat)-    , _tcsMinValue     :: !(Maybe (Textual Double))-    , _tcsParentLabels :: !(Maybe ChartData)-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'TreemapChartSpec' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'tcsHintedLevels'------ * 'tcsMaxValue'------ * 'tcsHeaderColor'------ * 'tcsSizeData'------ * 'tcsColorData'------ * 'tcsHideTooltips'------ * 'tcsLevels'------ * 'tcsLabels'------ * 'tcsColorScale'------ * 'tcsTextFormat'------ * 'tcsMinValue'------ * 'tcsParentLabels'-treemapChartSpec-    :: TreemapChartSpec-treemapChartSpec =-    TreemapChartSpec'-    { _tcsHintedLevels = Nothing-    , _tcsMaxValue = Nothing-    , _tcsHeaderColor = Nothing-    , _tcsSizeData = Nothing-    , _tcsColorData = Nothing-    , _tcsHideTooltips = Nothing-    , _tcsLevels = Nothing-    , _tcsLabels = Nothing-    , _tcsColorScale = Nothing-    , _tcsTextFormat = Nothing-    , _tcsMinValue = Nothing-    , _tcsParentLabels = Nothing-    }---- | The number of additional data levels beyond the labeled levels to be--- shown on the treemap chart. These levels are not interactive and are--- shown without their labels. Defaults to 0 if not specified.-tcsHintedLevels :: Lens' TreemapChartSpec (Maybe Int32)-tcsHintedLevels-  = lens _tcsHintedLevels-      (\ s a -> s{_tcsHintedLevels = a})-      . mapping _Coerce---- | The maximum possible data value. Cells with values greater than this--- will have the same color as cells with this value. If not specified,--- defaults to the actual maximum value from color_data, or the maximum--- value from size_data if color_data is not specified.-tcsMaxValue :: Lens' TreemapChartSpec (Maybe Double)-tcsMaxValue-  = lens _tcsMaxValue (\ s a -> s{_tcsMaxValue = a}) .-      mapping _Coerce---- | The background color for header cells.-tcsHeaderColor :: Lens' TreemapChartSpec (Maybe Color)-tcsHeaderColor-  = lens _tcsHeaderColor-      (\ s a -> s{_tcsHeaderColor = a})---- | The data that determines the size of each treemap data cell. This data--- is expected to be numeric. The cells corresponding to non-numeric or--- missing data will not be rendered. If color_data is not specified, this--- data is used to determine data cell background colors as well.-tcsSizeData :: Lens' TreemapChartSpec (Maybe ChartData)-tcsSizeData-  = lens _tcsSizeData (\ s a -> s{_tcsSizeData = a})---- | The data that determines the background color of each treemap data cell.--- This field is optional. If not specified, size_data is used to determine--- background colors. If specified, the data is expected to be numeric.--- color_scale will determine how the values in this data map to data cell--- background colors.-tcsColorData :: Lens' TreemapChartSpec (Maybe ChartData)-tcsColorData-  = lens _tcsColorData (\ s a -> s{_tcsColorData = a})---- | True to hide tooltips.-tcsHideTooltips :: Lens' TreemapChartSpec (Maybe Bool)-tcsHideTooltips-  = lens _tcsHideTooltips-      (\ s a -> s{_tcsHideTooltips = a})---- | The number of data levels to show on the treemap chart. These levels are--- interactive and are shown with their labels. Defaults to 2 if not--- specified.-tcsLevels :: Lens' TreemapChartSpec (Maybe Int32)-tcsLevels-  = lens _tcsLevels (\ s a -> s{_tcsLevels = a}) .-      mapping _Coerce---- | The data that contains the treemap cell labels.-tcsLabels :: Lens' TreemapChartSpec (Maybe ChartData)-tcsLabels-  = lens _tcsLabels (\ s a -> s{_tcsLabels = a})---- | The color scale for data cells in the treemap chart. Data cells are--- assigned colors based on their color values. These color values come--- from color_data, or from size_data if color_data is not specified. Cells--- with color values less than or equal to min_value will have--- minValueColor as their background color. Cells with color values greater--- than or equal to max_value will have maxValueColor as their background--- color. Cells with color values between min_value and max_value will have--- background colors on a gradient between minValueColor and maxValueColor,--- the midpoint of the gradient being midValueColor. Cells with missing or--- non-numeric color values will have noDataColor as their background--- color.-tcsColorScale :: Lens' TreemapChartSpec (Maybe TreemapChartColorScale)-tcsColorScale-  = lens _tcsColorScale-      (\ s a -> s{_tcsColorScale = a})---- | The text format for all labels on the chart.-tcsTextFormat :: Lens' TreemapChartSpec (Maybe TextFormat)-tcsTextFormat-  = lens _tcsTextFormat-      (\ s a -> s{_tcsTextFormat = a})---- | The minimum possible data value. Cells with values less than this will--- have the same color as cells with this value. If not specified, defaults--- to the actual minimum value from color_data, or the minimum value from--- size_data if color_data is not specified.-tcsMinValue :: Lens' TreemapChartSpec (Maybe Double)-tcsMinValue-  = lens _tcsMinValue (\ s a -> s{_tcsMinValue = a}) .-      mapping _Coerce---- | The data the contains the treemap cells\' parent labels.-tcsParentLabels :: Lens' TreemapChartSpec (Maybe ChartData)-tcsParentLabels-  = lens _tcsParentLabels-      (\ s a -> s{_tcsParentLabels = a})--instance FromJSON TreemapChartSpec where-        parseJSON-          = withObject "TreemapChartSpec"-              (\ o ->-                 TreemapChartSpec' <$>-                   (o .:? "hintedLevels") <*> (o .:? "maxValue") <*>-                     (o .:? "headerColor")-                     <*> (o .:? "sizeData")-                     <*> (o .:? "colorData")-                     <*> (o .:? "hideTooltips")-                     <*> (o .:? "levels")-                     <*> (o .:? "labels")-                     <*> (o .:? "colorScale")-                     <*> (o .:? "textFormat")-                     <*> (o .:? "minValue")-                     <*> (o .:? "parentLabels"))--instance ToJSON TreemapChartSpec where-        toJSON TreemapChartSpec'{..}-          = object-              (catMaybes-                 [("hintedLevels" .=) <$> _tcsHintedLevels,-                  ("maxValue" .=) <$> _tcsMaxValue,-                  ("headerColor" .=) <$> _tcsHeaderColor,-                  ("sizeData" .=) <$> _tcsSizeData,-                  ("colorData" .=) <$> _tcsColorData,-                  ("hideTooltips" .=) <$> _tcsHideTooltips,-                  ("levels" .=) <$> _tcsLevels,-                  ("labels" .=) <$> _tcsLabels,-                  ("colorScale" .=) <$> _tcsColorScale,-                  ("textFormat" .=) <$> _tcsTextFormat,-                  ("minValue" .=) <$> _tcsMinValue,-                  ("parentLabels" .=) <$> _tcsParentLabels])---- | 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 are 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'-    { _basHeaderCount      :: !(Maybe (Textual Int32))-    , _basLineSmoothing    :: !(Maybe Bool)-    , _basInterpolateNulls :: !(Maybe Bool)-    , _basStackedType      :: !(Maybe BasicChartSpecStackedType)-    , _basLegendPosition   :: !(Maybe BasicChartSpecLegendPosition)-    , _basSeries           :: !(Maybe [BasicChartSeries])-    , _basCompareMode      :: !(Maybe BasicChartSpecCompareMode)-    , _basChartType        :: !(Maybe BasicChartSpecChartType)-    , _basThreeDimensional :: !(Maybe Bool)-    , _basDomains          :: !(Maybe [BasicChartDomain])-    , _basAxis             :: !(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:------ * 'basHeaderCount'------ * 'basLineSmoothing'------ * 'basInterpolateNulls'------ * 'basStackedType'------ * 'basLegendPosition'------ * 'basSeries'------ * 'basCompareMode'------ * 'basChartType'------ * 'basThreeDimensional'------ * 'basDomains'------ * 'basAxis'-basicChartSpec-    :: BasicChartSpec-basicChartSpec =-    BasicChartSpec'-    { _basHeaderCount = Nothing-    , _basLineSmoothing = Nothing-    , _basInterpolateNulls = Nothing-    , _basStackedType = Nothing-    , _basLegendPosition = Nothing-    , _basSeries = Nothing-    , _basCompareMode = Nothing-    , _basChartType = Nothing-    , _basThreeDimensional = Nothing-    , _basDomains = Nothing-    , _basAxis = 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.)-basHeaderCount :: Lens' BasicChartSpec (Maybe Int32)-basHeaderCount-  = lens _basHeaderCount-      (\ s a -> s{_basHeaderCount = a})-      . mapping _Coerce---- | Gets whether all lines should be rendered smooth or straight by default.--- Applies to Line charts.-basLineSmoothing :: Lens' BasicChartSpec (Maybe Bool)-basLineSmoothing-  = lens _basLineSmoothing-      (\ s a -> s{_basLineSmoothing = a})---- | If some values in a series are missing, gaps may appear in the chart--- (e.g, segments of lines in a line chart will be missing). To eliminate--- these gaps set this to true. Applies to Line, Area, and Combo charts.-basInterpolateNulls :: Lens' BasicChartSpec (Maybe Bool)-basInterpolateNulls-  = lens _basInterpolateNulls-      (\ s a -> s{_basInterpolateNulls = a})---- | The stacked type for charts that support vertical stacking. Applies to--- Area, Bar, Column, Combo, and Stepped Area charts.-basStackedType :: Lens' BasicChartSpec (Maybe BasicChartSpecStackedType)-basStackedType-  = lens _basStackedType-      (\ s a -> s{_basStackedType = a})---- | The position of the chart legend.-basLegendPosition :: Lens' BasicChartSpec (Maybe BasicChartSpecLegendPosition)-basLegendPosition-  = lens _basLegendPosition-      (\ s a -> s{_basLegendPosition = a})---- | The data this chart is visualizing.-basSeries :: Lens' BasicChartSpec [BasicChartSeries]-basSeries-  = lens _basSeries (\ s a -> s{_basSeries = a}) .-      _Default-      . _Coerce---- | The behavior of tooltips and data highlighting when hovering on data and--- chart area.-basCompareMode :: Lens' BasicChartSpec (Maybe BasicChartSpecCompareMode)-basCompareMode-  = lens _basCompareMode-      (\ s a -> s{_basCompareMode = a})---- | The type of the chart.-basChartType :: Lens' BasicChartSpec (Maybe BasicChartSpecChartType)-basChartType-  = lens _basChartType (\ s a -> s{_basChartType = a})---- | True to make the chart 3D. Applies to Bar and Column charts.-basThreeDimensional :: Lens' BasicChartSpec (Maybe Bool)-basThreeDimensional-  = lens _basThreeDimensional-      (\ s a -> s{_basThreeDimensional = a})---- | The domain of data this is charting. Only a single domain is supported.-basDomains :: Lens' BasicChartSpec [BasicChartDomain]-basDomains-  = lens _basDomains (\ s a -> s{_basDomains = a}) .-      _Default-      . _Coerce---- | The axis on the chart.-basAxis :: Lens' BasicChartSpec [BasicChartAxis]-basAxis-  = lens _basAxis (\ s a -> s{_basAxis = a}) . _Default-      . _Coerce--instance FromJSON BasicChartSpec where-        parseJSON-          = withObject "BasicChartSpec"-              (\ o ->-                 BasicChartSpec' <$>-                   (o .:? "headerCount") <*> (o .:? "lineSmoothing") <*>-                     (o .:? "interpolateNulls")-                     <*> (o .:? "stackedType")-                     <*> (o .:? "legendPosition")-                     <*> (o .:? "series" .!= mempty)-                     <*> (o .:? "compareMode")-                     <*> (o .:? "chartType")-                     <*> (o .:? "threeDimensional")-                     <*> (o .:? "domains" .!= mempty)-                     <*> (o .:? "axis" .!= mempty))--instance ToJSON BasicChartSpec where-        toJSON BasicChartSpec'{..}-          = object-              (catMaybes-                 [("headerCount" .=) <$> _basHeaderCount,-                  ("lineSmoothing" .=) <$> _basLineSmoothing,-                  ("interpolateNulls" .=) <$> _basInterpolateNulls,-                  ("stackedType" .=) <$> _basStackedType,-                  ("legendPosition" .=) <$> _basLegendPosition,-                  ("series" .=) <$> _basSeries,-                  ("compareMode" .=) <$> _basCompareMode,-                  ("chartType" .=) <$> _basChartType,-                  ("threeDimensional" .=) <$> _basThreeDimensional,-                  ("domains" .=) <$> _basDomains,-                  ("axis" .=) <$> _basAxis])---- | A group name and a list of items from the source data that should be--- placed in the group with this name.------ /See:/ 'manualRuleGroup' smart constructor.-data ManualRuleGroup = ManualRuleGroup'-    { _mrgItems     :: !(Maybe [ExtendedValue])-    , _mrgGroupName :: !(Maybe ExtendedValue)-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'ManualRuleGroup' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'mrgItems'------ * 'mrgGroupName'-manualRuleGroup-    :: ManualRuleGroup-manualRuleGroup =-    ManualRuleGroup'-    { _mrgItems = Nothing-    , _mrgGroupName = Nothing-    }---- | The items in the source data that should be placed into this group. Each--- item may be a string, number, or boolean. Items may appear in at most--- one group within a given ManualRule. Items that do not appear in any--- group will appear on their own.-mrgItems :: Lens' ManualRuleGroup [ExtendedValue]-mrgItems-  = lens _mrgItems (\ s a -> s{_mrgItems = a}) .-      _Default-      . _Coerce---- | The group name, which must be a string. Each group in a given ManualRule--- must have a unique group name.-mrgGroupName :: Lens' ManualRuleGroup (Maybe ExtendedValue)-mrgGroupName-  = lens _mrgGroupName (\ s a -> s{_mrgGroupName = a})--instance FromJSON ManualRuleGroup where-        parseJSON-          = withObject "ManualRuleGroup"-              (\ o ->-                 ManualRuleGroup' <$>-                   (o .:? "items" .!= mempty) <*> (o .:? "groupName"))--instance ToJSON ManualRuleGroup where-        toJSON ManualRuleGroup'{..}-          = object-              (catMaybes-                 [("items" .=) <$> _mrgItems,-                  ("groupName" .=) <$> _mrgGroupName])---- | 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])---- | Developer metadata associated with a location or object in a--- spreadsheet. Developer metadata may be used to associate arbitrary data--- with various parts of a spreadsheet and will remain associated at those--- locations as they move around and the spreadsheet is edited. For--- example, if developer metadata is associated with row 5 and another row--- is then subsequently inserted above row 5, that original metadata will--- still be associated with the row it was first associated with (what is--- now row 6). If the associated object is deleted its metadata is deleted--- too.------ /See:/ 'developerMetadata' smart constructor.-data DeveloperMetadata = DeveloperMetadata'-    { _dmLocation      :: !(Maybe DeveloperMetadataLocation)-    , _dmMetadataId    :: !(Maybe (Textual Int32))-    , _dmVisibility    :: !(Maybe DeveloperMetadataVisibility)-    , _dmMetadataKey   :: !(Maybe Text)-    , _dmMetadataValue :: !(Maybe Text)-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'DeveloperMetadata' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'dmLocation'------ * 'dmMetadataId'------ * 'dmVisibility'------ * 'dmMetadataKey'------ * 'dmMetadataValue'-developerMetadata-    :: DeveloperMetadata-developerMetadata =-    DeveloperMetadata'-    { _dmLocation = Nothing-    , _dmMetadataId = Nothing-    , _dmVisibility = Nothing-    , _dmMetadataKey = Nothing-    , _dmMetadataValue = Nothing-    }---- | The location where the metadata is associated.-dmLocation :: Lens' DeveloperMetadata (Maybe DeveloperMetadataLocation)-dmLocation-  = lens _dmLocation (\ s a -> s{_dmLocation = a})---- | The spreadsheet-scoped unique ID that identifies the metadata. IDs may--- be specified when metadata is created, otherwise one will be randomly--- generated and assigned. Must be positive.-dmMetadataId :: Lens' DeveloperMetadata (Maybe Int32)-dmMetadataId-  = lens _dmMetadataId (\ s a -> s{_dmMetadataId = a})-      . mapping _Coerce---- | The metadata visibility. Developer metadata must always have a--- visibility specified.-dmVisibility :: Lens' DeveloperMetadata (Maybe DeveloperMetadataVisibility)-dmVisibility-  = lens _dmVisibility (\ s a -> s{_dmVisibility = a})---- | The metadata key. There may be multiple metadata in a spreadsheet with--- the same key. Developer metadata must always have a key specified.-dmMetadataKey :: Lens' DeveloperMetadata (Maybe Text)-dmMetadataKey-  = lens _dmMetadataKey-      (\ s a -> s{_dmMetadataKey = a})---- | Data associated with the metadata\'s key.-dmMetadataValue :: Lens' DeveloperMetadata (Maybe Text)-dmMetadataValue-  = lens _dmMetadataValue-      (\ s a -> s{_dmMetadataValue = a})--instance FromJSON DeveloperMetadata where-        parseJSON-          = withObject "DeveloperMetadata"-              (\ o ->-                 DeveloperMetadata' <$>-                   (o .:? "location") <*> (o .:? "metadataId") <*>-                     (o .:? "visibility")-                     <*> (o .:? "metadataKey")-                     <*> (o .:? "metadataValue"))--instance ToJSON DeveloperMetadata where-        toJSON DeveloperMetadata'{..}-          = object-              (catMaybes-                 [("location" .=) <$> _dmLocation,-                  ("metadataId" .=) <$> _dmMetadataId,-                  ("visibility" .=) <$> _dmVisibility,-                  ("metadataKey" .=) <$> _dmMetadataKey,-                  ("metadataValue" .=) <$> _dmMetadataValue])---- | A color scale for a treemap chart.------ /See:/ 'treemapChartColorScale' smart constructor.-data TreemapChartColorScale = TreemapChartColorScale'-    { _tccsMinValueColor :: !(Maybe Color)-    , _tccsNoDataColor   :: !(Maybe Color)-    , _tccsMaxValueColor :: !(Maybe Color)-    , _tccsMidValueColor :: !(Maybe Color)-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'TreemapChartColorScale' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'tccsMinValueColor'------ * 'tccsNoDataColor'------ * 'tccsMaxValueColor'------ * 'tccsMidValueColor'-treemapChartColorScale-    :: TreemapChartColorScale-treemapChartColorScale =-    TreemapChartColorScale'-    { _tccsMinValueColor = Nothing-    , _tccsNoDataColor = Nothing-    , _tccsMaxValueColor = Nothing-    , _tccsMidValueColor = Nothing-    }---- | The background color for cells with a color value less than or equal to--- minValue. Defaults to #dc3912 if not specified.-tccsMinValueColor :: Lens' TreemapChartColorScale (Maybe Color)-tccsMinValueColor-  = lens _tccsMinValueColor-      (\ s a -> s{_tccsMinValueColor = a})---- | The background color for cells that have no color data associated with--- them. Defaults to #000000 if not specified.-tccsNoDataColor :: Lens' TreemapChartColorScale (Maybe Color)-tccsNoDataColor-  = lens _tccsNoDataColor-      (\ s a -> s{_tccsNoDataColor = a})---- | The background color for cells with a color value greater than or equal--- to maxValue. Defaults to #109618 if not specified.-tccsMaxValueColor :: Lens' TreemapChartColorScale (Maybe Color)-tccsMaxValueColor-  = lens _tccsMaxValueColor-      (\ s a -> s{_tccsMaxValueColor = a})---- | The background color for cells with a color value at the midpoint--- between minValue and maxValue. Defaults to #efe6dc if not specified.-tccsMidValueColor :: Lens' TreemapChartColorScale (Maybe Color)-tccsMidValueColor-  = lens _tccsMidValueColor-      (\ s a -> s{_tccsMidValueColor = a})--instance FromJSON TreemapChartColorScale where-        parseJSON-          = withObject "TreemapChartColorScale"-              (\ o ->-                 TreemapChartColorScale' <$>-                   (o .:? "minValueColor") <*> (o .:? "noDataColor") <*>-                     (o .:? "maxValueColor")-                     <*> (o .:? "midValueColor"))--instance ToJSON TreemapChartColorScale where-        toJSON TreemapChartColorScale'{..}-          = object-              (catMaybes-                 [("minValueColor" .=) <$> _tccsMinValueColor,-                  ("noDataColor" .=) <$> _tccsNoDataColor,-                  ("maxValueColor" .=) <$> _tccsMaxValueColor,-                  ("midValueColor" .=) <$> _tccsMidValueColor])---- | 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])---- | A request to create developer metadata.------ /See:/ 'createDeveloperMetadataRequest' smart constructor.-newtype CreateDeveloperMetadataRequest = CreateDeveloperMetadataRequest'-    { _cDeveloperMetadata :: Maybe DeveloperMetadata-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'CreateDeveloperMetadataRequest' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'cDeveloperMetadata'-createDeveloperMetadataRequest-    :: CreateDeveloperMetadataRequest-createDeveloperMetadataRequest =-    CreateDeveloperMetadataRequest'-    { _cDeveloperMetadata = Nothing-    }---- | The developer metadata to create.-cDeveloperMetadata :: Lens' CreateDeveloperMetadataRequest (Maybe DeveloperMetadata)-cDeveloperMetadata-  = lens _cDeveloperMetadata-      (\ s a -> s{_cDeveloperMetadata = a})--instance FromJSON CreateDeveloperMetadataRequest-         where-        parseJSON-          = withObject "CreateDeveloperMetadataRequest"-              (\ o ->-                 CreateDeveloperMetadataRequest' <$>-                   (o .:? "developerMetadata"))--instance ToJSON CreateDeveloperMetadataRequest where-        toJSON CreateDeveloperMetadataRequest'{..}-          = object-              (catMaybes-                 [("developerMetadata" .=) <$> _cDeveloperMetadata])---- | The response when clearing a range of values in a spreadsheet.------ /See:/ 'batchClearValuesResponse' smart constructor.-data BatchClearValuesResponse = BatchClearValuesResponse'-    { _bcvrClearedRanges :: !(Maybe [Text])-    , _bcvrSpreadsheetId :: !(Maybe Text)-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'BatchClearValuesResponse' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'bcvrClearedRanges'------ * 'bcvrSpreadsheetId'-batchClearValuesResponse-    :: BatchClearValuesResponse-batchClearValuesResponse =-    BatchClearValuesResponse'-    { _bcvrClearedRanges = Nothing-    , _bcvrSpreadsheetId = Nothing-    }---- | The ranges that were cleared, in A1 notation. (If the requests were for--- an unbounded range or a ranger larger than the bounds of the sheet, this--- will be the actual ranges that were cleared, bounded to the sheet\'s--- limits.)-bcvrClearedRanges :: Lens' BatchClearValuesResponse [Text]-bcvrClearedRanges-  = lens _bcvrClearedRanges-      (\ s a -> s{_bcvrClearedRanges = a})-      . _Default-      . _Coerce---- | The spreadsheet the updates were applied to.-bcvrSpreadsheetId :: Lens' BatchClearValuesResponse (Maybe Text)-bcvrSpreadsheetId-  = lens _bcvrSpreadsheetId-      (\ s a -> s{_bcvrSpreadsheetId = a})--instance FromJSON BatchClearValuesResponse where-        parseJSON-          = withObject "BatchClearValuesResponse"-              (\ o ->-                 BatchClearValuesResponse' <$>-                   (o .:? "clearedRanges" .!= mempty) <*>-                     (o .:? "spreadsheetId"))--instance ToJSON BatchClearValuesResponse where-        toJSON BatchClearValuesResponse'{..}-          = object-              (catMaybes-                 [("clearedRanges" .=) <$> _bcvrClearedRanges,-                  ("spreadsheetId" .=) <$> _bcvrSpreadsheetId])---- | A value range that was matched by one or more data filers.------ /See:/ 'matchedValueRange' smart constructor.-data MatchedValueRange = MatchedValueRange'-    { _mvrValueRange  :: !(Maybe ValueRange)-    , _mvrDataFilters :: !(Maybe [DataFilter])-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'MatchedValueRange' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'mvrValueRange'------ * 'mvrDataFilters'-matchedValueRange-    :: MatchedValueRange-matchedValueRange =-    MatchedValueRange'-    { _mvrValueRange = Nothing-    , _mvrDataFilters = Nothing-    }---- | The values matched by the DataFilter.-mvrValueRange :: Lens' MatchedValueRange (Maybe ValueRange)-mvrValueRange-  = lens _mvrValueRange-      (\ s a -> s{_mvrValueRange = a})---- | The DataFilters from the request that matched the range of values.-mvrDataFilters :: Lens' MatchedValueRange [DataFilter]-mvrDataFilters-  = lens _mvrDataFilters-      (\ s a -> s{_mvrDataFilters = a})-      . _Default-      . _Coerce--instance FromJSON MatchedValueRange where-        parseJSON-          = withObject "MatchedValueRange"-              (\ o ->-                 MatchedValueRange' <$>-                   (o .:? "valueRange") <*>-                     (o .:? "dataFilters" .!= mempty))--instance ToJSON MatchedValueRange where-        toJSON MatchedValueRange'{..}-          = object-              (catMaybes-                 [("valueRange" .=) <$> _mvrValueRange,-                  ("dataFilters" .=) <$> _mvrDataFilters])---- | The domain of a chart. For example, if charting stock prices over time,--- this would be the date.------ /See:/ 'basicChartDomain' smart constructor.-data BasicChartDomain = BasicChartDomain'-    { _bcdReversed :: !(Maybe Bool)-    , _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:------ * 'bcdReversed'------ * 'bcdDomain'-basicChartDomain-    :: BasicChartDomain-basicChartDomain =-    BasicChartDomain'-    { _bcdReversed = Nothing-    , _bcdDomain = Nothing-    }---- | True to reverse the order of the domain values (horizontal axis).-bcdReversed :: Lens' BasicChartDomain (Maybe Bool)-bcdReversed-  = lens _bcdReversed (\ s a -> s{_bcdReversed = a})---- | 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 .:? "reversed") <*> (o .:? "domain"))--instance ToJSON BasicChartDomain where-        toJSON BasicChartDomain'{..}-          = object-              (catMaybes-                 [("reversed" .=) <$> _bcdReversed,-                  ("domain" .=) <$> _bcdDomain])---- | Allows you to organize the numeric values in a source data column into--- buckets of a constant size. All values from HistogramRule.start to--- HistogramRule.end are placed into groups of size HistogramRule.interval.--- In addition, all values below HistogramRule.start are placed in one--- group, and all values above HistogramRule.end are placed in another.--- Only HistogramRule.interval is required, though if HistogramRule.start--- and HistogramRule.end are both provided, HistogramRule.start must be--- less than HistogramRule.end. For example, a pivot table showing average--- purchase amount by age that has 50+ rows: +-----+-------------------+ |--- Age | AVERAGE of Amount | +-----+-------------------+ | 16 | $27.13 | |--- 17 | $5.24 | | 18 | $20.15 | ... +-----+-------------------+ could be--- turned into a pivot table that looks like the one below by applying a--- histogram group rule with a HistogramRule.start of 25, an--- HistogramRule.interval of 20, and an HistogramRule.end of 65.--- +-------------+-------------------+ | Grouped Age | AVERAGE of Amount |--- +-------------+-------------------+ | \< 25 | $19.34 | | 25-45 | $31.43--- | | 45-65 | $35.87 | | > 65 | $27.55 |--- +-------------+-------------------+ | Grand Total | $29.12 |--- +-------------+-------------------+------ /See:/ 'histogramRule' smart constructor.-data HistogramRule = HistogramRule'-    { _hrStart    :: !(Maybe (Textual Double))-    , _hrInterval :: !(Maybe (Textual Double))-    , _hrEnd      :: !(Maybe (Textual Double))-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'HistogramRule' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'hrStart'------ * 'hrInterval'------ * 'hrEnd'-histogramRule-    :: HistogramRule-histogramRule =-    HistogramRule'-    { _hrStart = Nothing-    , _hrInterval = Nothing-    , _hrEnd = Nothing-    }---- | The minimum value at which items are placed into buckets of constant--- size. Values below start are lumped into a single bucket. This field is--- optional.-hrStart :: Lens' HistogramRule (Maybe Double)-hrStart-  = lens _hrStart (\ s a -> s{_hrStart = a}) .-      mapping _Coerce---- | The size of the buckets that are created. Must be positive.-hrInterval :: Lens' HistogramRule (Maybe Double)-hrInterval-  = lens _hrInterval (\ s a -> s{_hrInterval = a}) .-      mapping _Coerce---- | The maximum value at which items are placed into buckets of constant--- size. Values above end are lumped into a single bucket. This field is--- optional.-hrEnd :: Lens' HistogramRule (Maybe Double)-hrEnd-  = lens _hrEnd (\ s a -> s{_hrEnd = a}) .-      mapping _Coerce--instance FromJSON HistogramRule where-        parseJSON-          = withObject "HistogramRule"-              (\ o ->-                 HistogramRule' <$>-                   (o .:? "start") <*> (o .:? "interval") <*>-                     (o .:? "end"))--instance ToJSON HistogramRule where-        toJSON HistogramRule'{..}-          = object-              (catMaybes-                 [("start" .=) <$> _hrStart,-                  ("interval" .=) <$> _hrInterval,-                  ("end" .=) <$> _hrEnd])---- | A developer metadata entry and the data filters specified in the--- original request that matched it.------ /See:/ 'matchedDeveloperMetadata' smart constructor.-data MatchedDeveloperMetadata = MatchedDeveloperMetadata'-    { _mdmDataFilters       :: !(Maybe [DataFilter])-    , _mdmDeveloperMetadata :: !(Maybe DeveloperMetadata)-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'MatchedDeveloperMetadata' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'mdmDataFilters'------ * 'mdmDeveloperMetadata'-matchedDeveloperMetadata-    :: MatchedDeveloperMetadata-matchedDeveloperMetadata =-    MatchedDeveloperMetadata'-    { _mdmDataFilters = Nothing-    , _mdmDeveloperMetadata = Nothing-    }---- | All filters matching the returned developer metadata.-mdmDataFilters :: Lens' MatchedDeveloperMetadata [DataFilter]-mdmDataFilters-  = lens _mdmDataFilters-      (\ s a -> s{_mdmDataFilters = a})-      . _Default-      . _Coerce---- | The developer metadata matching the specified filters.-mdmDeveloperMetadata :: Lens' MatchedDeveloperMetadata (Maybe DeveloperMetadata)-mdmDeveloperMetadata-  = lens _mdmDeveloperMetadata-      (\ s a -> s{_mdmDeveloperMetadata = a})--instance FromJSON MatchedDeveloperMetadata where-        parseJSON-          = withObject "MatchedDeveloperMetadata"-              (\ o ->-                 MatchedDeveloperMetadata' <$>-                   (o .:? "dataFilters" .!= mempty) <*>-                     (o .:? "developerMetadata"))--instance ToJSON MatchedDeveloperMetadata where-        toJSON MatchedDeveloperMetadata'{..}-          = object-              (catMaybes-                 [("dataFilters" .=) <$> _mdmDataFilters,-                  ("developerMetadata" .=) <$> _mdmDeveloperMetadata])---- | Inserts cells into a range, shifting the existing cells over or down.------ /See:/ 'insertRangeRequest' smart constructor.-data InsertRangeRequest = InsertRangeRequest'-    { _irrShiftDimension :: !(Maybe InsertRangeRequestShiftDimension)-    , _irrRange          :: !(Maybe GridRange)-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'InsertRangeRequest' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'irrShiftDimension'------ * 'irrRange'-insertRangeRequest-    :: InsertRangeRequest-insertRangeRequest =-    InsertRangeRequest'-    { _irrShiftDimension = Nothing-    , _irrRange = Nothing-    }---- | The dimension which will be shifted when inserting cells. If ROWS,--- existing cells will be shifted down. If COLUMNS, existing cells will be--- shifted right.-irrShiftDimension :: Lens' InsertRangeRequest (Maybe InsertRangeRequestShiftDimension)-irrShiftDimension-  = lens _irrShiftDimension-      (\ s a -> s{_irrShiftDimension = a})---- | The range to insert new cells into.-irrRange :: Lens' InsertRangeRequest (Maybe GridRange)-irrRange = lens _irrRange (\ s a -> s{_irrRange = a})--instance FromJSON InsertRangeRequest where-        parseJSON-          = withObject "InsertRangeRequest"-              (\ o ->-                 InsertRangeRequest' <$>-                   (o .:? "shiftDimension") <*> (o .:? "range"))--instance ToJSON InsertRangeRequest where-        toJSON InsertRangeRequest'{..}-          = object-              (catMaybes-                 [("shiftDimension" .=) <$> _irrShiftDimension,-                  ("range" .=) <$> _irrRange])---- | 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'-    { _csTitleTextPosition       :: !(Maybe TextPosition)-    , _csFontName                :: !(Maybe Text)-    , _csSubtitleTextPosition    :: !(Maybe TextPosition)-    , _csBackgRoundColor         :: !(Maybe Color)-    , _csCandlestickChart        :: !(Maybe CandlestickChartSpec)-    , _csWaterfallChart          :: !(Maybe WaterfallChartSpec)-    , _csTitleTextFormat         :: !(Maybe TextFormat)-    , _csSubtitle                :: !(Maybe Text)-    , _csAltText                 :: !(Maybe Text)-    , _csHistogramChart          :: !(Maybe HistogramChartSpec)-    , _csBubbleChart             :: !(Maybe BubbleChartSpec)-    , _csMaximized               :: !(Maybe Bool)-    , _csSubtitleTextFormat      :: !(Maybe TextFormat)-    , _csTitle                   :: !(Maybe Text)-    , _csPieChart                :: !(Maybe PieChartSpec)-    , _csOrgChart                :: !(Maybe OrgChartSpec)-    , _csTreemapChart            :: !(Maybe TreemapChartSpec)-    , _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:------ * 'csTitleTextPosition'------ * 'csFontName'------ * 'csSubtitleTextPosition'------ * 'csBackgRoundColor'------ * 'csCandlestickChart'------ * 'csWaterfallChart'------ * 'csTitleTextFormat'------ * 'csSubtitle'------ * 'csAltText'------ * 'csHistogramChart'------ * 'csBubbleChart'------ * 'csMaximized'------ * 'csSubtitleTextFormat'------ * 'csTitle'------ * 'csPieChart'------ * 'csOrgChart'------ * 'csTreemapChart'------ * 'csBasicChart'------ * 'csHiddenDimensionStrategy'-chartSpec-    :: ChartSpec-chartSpec =-    ChartSpec'-    { _csTitleTextPosition = Nothing-    , _csFontName = Nothing-    , _csSubtitleTextPosition = Nothing-    , _csBackgRoundColor = Nothing-    , _csCandlestickChart = Nothing-    , _csWaterfallChart = Nothing-    , _csTitleTextFormat = Nothing-    , _csSubtitle = Nothing-    , _csAltText = Nothing-    , _csHistogramChart = Nothing-    , _csBubbleChart = Nothing-    , _csMaximized = Nothing-    , _csSubtitleTextFormat = Nothing-    , _csTitle = Nothing-    , _csPieChart = Nothing-    , _csOrgChart = Nothing-    , _csTreemapChart = Nothing-    , _csBasicChart = Nothing-    , _csHiddenDimensionStrategy = Nothing-    }---- | The title text position. This field is optional.-csTitleTextPosition :: Lens' ChartSpec (Maybe TextPosition)-csTitleTextPosition-  = lens _csTitleTextPosition-      (\ s a -> s{_csTitleTextPosition = a})---- | The name of the font to use by default for all chart text (e.g. title,--- axis labels, legend). If a font is specified for a specific part of the--- chart it will override this font name.-csFontName :: Lens' ChartSpec (Maybe Text)-csFontName-  = lens _csFontName (\ s a -> s{_csFontName = a})---- | The subtitle text position. This field is optional.-csSubtitleTextPosition :: Lens' ChartSpec (Maybe TextPosition)-csSubtitleTextPosition-  = lens _csSubtitleTextPosition-      (\ s a -> s{_csSubtitleTextPosition = a})---- | The background color of the entire chart. Not applicable to Org charts.-csBackgRoundColor :: Lens' ChartSpec (Maybe Color)-csBackgRoundColor-  = lens _csBackgRoundColor-      (\ s a -> s{_csBackgRoundColor = a})---- | A candlestick chart specification.-csCandlestickChart :: Lens' ChartSpec (Maybe CandlestickChartSpec)-csCandlestickChart-  = lens _csCandlestickChart-      (\ s a -> s{_csCandlestickChart = a})---- | A waterfall chart specification.-csWaterfallChart :: Lens' ChartSpec (Maybe WaterfallChartSpec)-csWaterfallChart-  = lens _csWaterfallChart-      (\ s a -> s{_csWaterfallChart = a})---- | The title text format. Strikethrough and underline are not supported.-csTitleTextFormat :: Lens' ChartSpec (Maybe TextFormat)-csTitleTextFormat-  = lens _csTitleTextFormat-      (\ s a -> s{_csTitleTextFormat = a})---- | The subtitle of the chart.-csSubtitle :: Lens' ChartSpec (Maybe Text)-csSubtitle-  = lens _csSubtitle (\ s a -> s{_csSubtitle = a})---- | The alternative text that describes the chart. This is often used for--- accessibility.-csAltText :: Lens' ChartSpec (Maybe Text)-csAltText-  = lens _csAltText (\ s a -> s{_csAltText = a})---- | A histogram chart specification.-csHistogramChart :: Lens' ChartSpec (Maybe HistogramChartSpec)-csHistogramChart-  = lens _csHistogramChart-      (\ s a -> s{_csHistogramChart = a})---- | A bubble chart specification.-csBubbleChart :: Lens' ChartSpec (Maybe BubbleChartSpec)-csBubbleChart-  = lens _csBubbleChart-      (\ s a -> s{_csBubbleChart = a})---- | True to make a chart fill the entire space in which it\'s rendered with--- minimum padding. False to use the default padding. (Not applicable to--- Geo and Org charts.)-csMaximized :: Lens' ChartSpec (Maybe Bool)-csMaximized-  = lens _csMaximized (\ s a -> s{_csMaximized = a})---- | The subtitle text format. Strikethrough and underline are not supported.-csSubtitleTextFormat :: Lens' ChartSpec (Maybe TextFormat)-csSubtitleTextFormat-  = lens _csSubtitleTextFormat-      (\ s a -> s{_csSubtitleTextFormat = a})---- | 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})---- | An org chart specification.-csOrgChart :: Lens' ChartSpec (Maybe OrgChartSpec)-csOrgChart-  = lens _csOrgChart (\ s a -> s{_csOrgChart = a})---- | A treemap chart specification.-csTreemapChart :: Lens' ChartSpec (Maybe TreemapChartSpec)-csTreemapChart-  = lens _csTreemapChart-      (\ s a -> s{_csTreemapChart = 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 .:? "titleTextPosition") <*> (o .:? "fontName")-                     <*> (o .:? "subtitleTextPosition")-                     <*> (o .:? "backgroundColor")-                     <*> (o .:? "candlestickChart")-                     <*> (o .:? "waterfallChart")-                     <*> (o .:? "titleTextFormat")-                     <*> (o .:? "subtitle")-                     <*> (o .:? "altText")-                     <*> (o .:? "histogramChart")-                     <*> (o .:? "bubbleChart")-                     <*> (o .:? "maximized")-                     <*> (o .:? "subtitleTextFormat")-                     <*> (o .:? "title")-                     <*> (o .:? "pieChart")-                     <*> (o .:? "orgChart")-                     <*> (o .:? "treemapChart")-                     <*> (o .:? "basicChart")-                     <*> (o .:? "hiddenDimensionStrategy"))--instance ToJSON ChartSpec where-        toJSON ChartSpec'{..}-          = object-              (catMaybes-                 [("titleTextPosition" .=) <$> _csTitleTextPosition,-                  ("fontName" .=) <$> _csFontName,-                  ("subtitleTextPosition" .=) <$>-                    _csSubtitleTextPosition,-                  ("backgroundColor" .=) <$> _csBackgRoundColor,-                  ("candlestickChart" .=) <$> _csCandlestickChart,-                  ("waterfallChart" .=) <$> _csWaterfallChart,-                  ("titleTextFormat" .=) <$> _csTitleTextFormat,-                  ("subtitle" .=) <$> _csSubtitle,-                  ("altText" .=) <$> _csAltText,-                  ("histogramChart" .=) <$> _csHistogramChart,-                  ("bubbleChart" .=) <$> _csBubbleChart,-                  ("maximized" .=) <$> _csMaximized,-                  ("subtitleTextFormat" .=) <$> _csSubtitleTextFormat,-                  ("title" .=) <$> _csTitle,-                  ("pieChart" .=) <$> _csPieChart,-                  ("orgChart" .=) <$> _csOrgChart,-                  ("treemapChart" .=) <$> _csTreemapChart,-                  ("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)-    , _dpDeveloperMetadata :: !(Maybe [DeveloperMetadata])-    } 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'------ * 'dpDeveloperMetadata'-dimensionProperties-    :: DimensionProperties-dimensionProperties =-    DimensionProperties'-    { _dpHiddenByFilter = Nothing-    , _dpPixelSize = Nothing-    , _dpHiddenByUser = Nothing-    , _dpDeveloperMetadata = 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})---- | The developer metadata associated with a single row or column.-dpDeveloperMetadata :: Lens' DimensionProperties [DeveloperMetadata]-dpDeveloperMetadata-  = lens _dpDeveloperMetadata-      (\ s a -> s{_dpDeveloperMetadata = a})-      . _Default-      . _Coerce--instance FromJSON DimensionProperties where-        parseJSON-          = withObject "DimensionProperties"-              (\ o ->-                 DimensionProperties' <$>-                   (o .:? "hiddenByFilter") <*> (o .:? "pixelSize") <*>-                     (o .:? "hiddenByUser")-                     <*> (o .:? "developerMetadata" .!= mempty))--instance ToJSON DimensionProperties where-        toJSON DimensionProperties'{..}-          = object-              (catMaybes-                 [("hiddenByFilter" .=) <$> _dpHiddenByFilter,-                  ("pixelSize" .=) <$> _dpPixelSize,-                  ("hiddenByUser" .=) <$> _dpHiddenByUser,-                  ("developerMetadata" .=) <$> _dpDeveloperMetadata])---- | Updates properties of the supplied banded range.------ /See:/ 'updateBandingRequest' smart constructor.-data UpdateBandingRequest = UpdateBandingRequest'-    { _ubrBandedRange :: !(Maybe BandedRange)-    , _ubrFields      :: !(Maybe GFieldMask)-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'UpdateBandingRequest' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'ubrBandedRange'------ * 'ubrFields'-updateBandingRequest-    :: UpdateBandingRequest-updateBandingRequest =-    UpdateBandingRequest'-    { _ubrBandedRange = Nothing-    , _ubrFields = Nothing-    }---- | The banded range to update with the new properties.-ubrBandedRange :: Lens' UpdateBandingRequest (Maybe BandedRange)-ubrBandedRange-  = lens _ubrBandedRange-      (\ s a -> s{_ubrBandedRange = a})---- | The fields that should be updated. At least one field must be specified.--- The root \`bandedRange\` is implied and should not be specified. A--- single \`\"*\"\` can be used as short-hand for listing every field.-ubrFields :: Lens' UpdateBandingRequest (Maybe GFieldMask)-ubrFields-  = lens _ubrFields (\ s a -> s{_ubrFields = a})--instance FromJSON UpdateBandingRequest where-        parseJSON-          = withObject "UpdateBandingRequest"-              (\ o ->-                 UpdateBandingRequest' <$>-                   (o .:? "bandedRange") <*> (o .:? "fields"))--instance ToJSON UpdateBandingRequest where-        toJSON UpdateBandingRequest'{..}-          = object-              (catMaybes-                 [("bandedRange" .=) <$> _ubrBandedRange,-                  ("fields" .=) <$> _ubrFields])---- | 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])---- | Removes the banded range with the given ID from the spreadsheet.------ /See:/ 'deleteBandingRequest' smart constructor.-newtype DeleteBandingRequest = DeleteBandingRequest'-    { _dbrBandedRangeId :: Maybe (Textual Int32)-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'DeleteBandingRequest' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'dbrBandedRangeId'-deleteBandingRequest-    :: DeleteBandingRequest-deleteBandingRequest =-    DeleteBandingRequest'-    { _dbrBandedRangeId = Nothing-    }---- | The ID of the banded range to delete.-dbrBandedRangeId :: Lens' DeleteBandingRequest (Maybe Int32)-dbrBandedRangeId-  = lens _dbrBandedRangeId-      (\ s a -> s{_dbrBandedRangeId = a})-      . mapping _Coerce--instance FromJSON DeleteBandingRequest where-        parseJSON-          = withObject "DeleteBandingRequest"-              (\ o ->-                 DeleteBandingRequest' <$> (o .:? "bandedRangeId"))--instance ToJSON DeleteBandingRequest where-        toJSON DeleteBandingRequest'{..}-          = object-              (catMaybes-                 [("bandedRangeId" .=) <$> _dbrBandedRangeId])---- | The response from deleting developer metadata.------ /See:/ 'deleteDeveloperMetadataResponse' smart constructor.-newtype DeleteDeveloperMetadataResponse = DeleteDeveloperMetadataResponse'-    { _ddmrDeletedDeveloperMetadata :: Maybe [DeveloperMetadata]-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'DeleteDeveloperMetadataResponse' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'ddmrDeletedDeveloperMetadata'-deleteDeveloperMetadataResponse-    :: DeleteDeveloperMetadataResponse-deleteDeveloperMetadataResponse =-    DeleteDeveloperMetadataResponse'-    { _ddmrDeletedDeveloperMetadata = Nothing-    }---- | The metadata that was deleted.-ddmrDeletedDeveloperMetadata :: Lens' DeleteDeveloperMetadataResponse [DeveloperMetadata]-ddmrDeletedDeveloperMetadata-  = lens _ddmrDeletedDeveloperMetadata-      (\ s a -> s{_ddmrDeletedDeveloperMetadata = a})-      . _Default-      . _Coerce--instance FromJSON DeleteDeveloperMetadataResponse-         where-        parseJSON-          = withObject "DeleteDeveloperMetadataResponse"-              (\ o ->-                 DeleteDeveloperMetadataResponse' <$>-                   (o .:? "deletedDeveloperMetadata" .!= mempty))--instance ToJSON DeleteDeveloperMetadataResponse where-        toJSON DeleteDeveloperMetadataResponse'{..}-          = object-              (catMaybes-                 [("deletedDeveloperMetadata" .=) <$>-                    _ddmrDeletedDeveloperMetadata])---- | The response from updating developer metadata.------ /See:/ 'updateDeveloperMetadataResponse' smart constructor.-newtype UpdateDeveloperMetadataResponse = UpdateDeveloperMetadataResponse'-    { _uDeveloperMetadata :: Maybe [DeveloperMetadata]-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'UpdateDeveloperMetadataResponse' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'uDeveloperMetadata'-updateDeveloperMetadataResponse-    :: UpdateDeveloperMetadataResponse-updateDeveloperMetadataResponse =-    UpdateDeveloperMetadataResponse'-    { _uDeveloperMetadata = Nothing-    }---- | The updated developer metadata.-uDeveloperMetadata :: Lens' UpdateDeveloperMetadataResponse [DeveloperMetadata]-uDeveloperMetadata-  = lens _uDeveloperMetadata-      (\ s a -> s{_uDeveloperMetadata = a})-      . _Default-      . _Coerce--instance FromJSON UpdateDeveloperMetadataResponse-         where-        parseJSON-          = withObject "UpdateDeveloperMetadataResponse"-              (\ o ->-                 UpdateDeveloperMetadataResponse' <$>-                   (o .:? "developerMetadata" .!= mempty))--instance ToJSON UpdateDeveloperMetadataResponse where-        toJSON UpdateDeveloperMetadataResponse'{..}-          = object-              (catMaybes-                 [("developerMetadata" .=) <$> _uDeveloperMetadata])---- | 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)-    , _reqCreateDeveloperMetadata      :: !(Maybe CreateDeveloperMetadataRequest)-    , _reqDuplicateFilterView          :: !(Maybe DuplicateFilterViewRequest)-    , _reqAddConditionalFormatRule     :: !(Maybe AddConditionalFormatRuleRequest)-    , _reqRandomizeRange               :: !(Maybe RandomizeRangeRequest)-    , _reqSortRange                    :: !(Maybe SortRangeRequest)-    , _reqUpdateNamedRange             :: !(Maybe UpdateNamedRangeRequest)-    , _reqDeleteNamedRange             :: !(Maybe DeleteNamedRangeRequest)-    , _reqInsertRange                  :: !(Maybe InsertRangeRequest)-    , _reqDeleteBanding                :: !(Maybe DeleteBandingRequest)-    , _reqUpdateBanding                :: !(Maybe UpdateBandingRequest)-    , _reqClearBasicFilter             :: !(Maybe ClearBasicFilterRequest)-    , _reqAppendCells                  :: !(Maybe AppendCellsRequest)-    , _reqPasteData                    :: !(Maybe PasteDataRequest)-    , _reqUpdateEmbeddedObjectPosition :: !(Maybe UpdateEmbeddedObjectPositionRequest)-    , _reqDeleteRange                  :: !(Maybe DeleteRangeRequest)-    , _reqCopyPaste                    :: !(Maybe CopyPasteRequest)-    , _reqUpdateDimensionGroup         :: !(Maybe UpdateDimensionGroupRequest)-    , _reqDeleteDimensionGroup         :: !(Maybe DeleteDimensionGroupRequest)-    , _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)-    , _reqDeleteDeveloperMetadata      :: !(Maybe DeleteDeveloperMetadataRequest)-    , _reqUpdateDeveloperMetadata      :: !(Maybe UpdateDeveloperMetadataRequest)-    , _reqMergeCells                   :: !(Maybe MergeCellsRequest)-    , _reqAddNamedRange                :: !(Maybe AddNamedRangeRequest)-    , _reqAddChart                     :: !(Maybe AddChartRequest)-    , _reqAddBanding                   :: !(Maybe AddBandingRequest)-    , _reqDuplicateSheet               :: !(Maybe DuplicateSheetRequest)-    , _reqAutoFill                     :: !(Maybe AutoFillRequest)-    , _reqUpdateDimensionProperties    :: !(Maybe UpdateDimensionPropertiesRequest)-    , _reqUpdateChartSpec              :: !(Maybe UpdateChartSpecRequest)-    , _reqSetBasicFilter               :: !(Maybe SetBasicFilterRequest)-    , _reqTextToColumns                :: !(Maybe TextToColumnsRequest)-    , _reqAddDimensionGroup            :: !(Maybe AddDimensionGroupRequest)-    , _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'------ * 'reqCreateDeveloperMetadata'------ * 'reqDuplicateFilterView'------ * 'reqAddConditionalFormatRule'------ * 'reqRandomizeRange'------ * 'reqSortRange'------ * 'reqUpdateNamedRange'------ * 'reqDeleteNamedRange'------ * 'reqInsertRange'------ * 'reqDeleteBanding'------ * 'reqUpdateBanding'------ * 'reqClearBasicFilter'------ * 'reqAppendCells'------ * 'reqPasteData'------ * 'reqUpdateEmbeddedObjectPosition'------ * 'reqDeleteRange'------ * 'reqCopyPaste'------ * 'reqUpdateDimensionGroup'------ * 'reqDeleteDimensionGroup'------ * 'reqAutoResizeDimensions'------ * 'reqAddSheet'------ * 'reqFindReplace'------ * 'reqDeleteDimension'------ * 'reqCutPaste'------ * 'reqMoveDimension'------ * 'reqRepeatCell'------ * 'reqAddProtectedRange'------ * 'reqUpdateFilterView'------ * 'reqDeleteFilterView'------ * 'reqInsertDimension'------ * 'reqUpdateSheetProperties'------ * 'reqDeleteConditionalFormatRule'------ * 'reqUpdateConditionalFormatRule'------ * 'reqDeleteEmbeddedObject'------ * 'reqDeleteDeveloperMetadata'------ * 'reqUpdateDeveloperMetadata'------ * 'reqMergeCells'------ * 'reqAddNamedRange'------ * 'reqAddChart'------ * 'reqAddBanding'------ * 'reqDuplicateSheet'------ * 'reqAutoFill'------ * 'reqUpdateDimensionProperties'------ * 'reqUpdateChartSpec'------ * 'reqSetBasicFilter'------ * 'reqTextToColumns'------ * 'reqAddDimensionGroup'------ * 'reqUpdateSpreadsheetProperties'------ * 'reqDeleteSheet'------ * 'reqUnmergeCells'------ * 'reqUpdateBOrders'------ * 'reqAppendDimension'------ * 'reqSetDataValidation'-request'-    :: Request'-request' =-    Request''-    { _reqAddFilterView = Nothing-    , _reqDeleteProtectedRange = Nothing-    , _reqUpdateProtectedRange = Nothing-    , _reqUpdateCells = Nothing-    , _reqCreateDeveloperMetadata = Nothing-    , _reqDuplicateFilterView = Nothing-    , _reqAddConditionalFormatRule = Nothing-    , _reqRandomizeRange = Nothing-    , _reqSortRange = Nothing-    , _reqUpdateNamedRange = Nothing-    , _reqDeleteNamedRange = Nothing-    , _reqInsertRange = Nothing-    , _reqDeleteBanding = Nothing-    , _reqUpdateBanding = Nothing-    , _reqClearBasicFilter = Nothing-    , _reqAppendCells = Nothing-    , _reqPasteData = Nothing-    , _reqUpdateEmbeddedObjectPosition = Nothing-    , _reqDeleteRange = Nothing-    , _reqCopyPaste = Nothing-    , _reqUpdateDimensionGroup = Nothing-    , _reqDeleteDimensionGroup = 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-    , _reqDeleteDeveloperMetadata = Nothing-    , _reqUpdateDeveloperMetadata = Nothing-    , _reqMergeCells = Nothing-    , _reqAddNamedRange = Nothing-    , _reqAddChart = Nothing-    , _reqAddBanding = Nothing-    , _reqDuplicateSheet = Nothing-    , _reqAutoFill = Nothing-    , _reqUpdateDimensionProperties = Nothing-    , _reqUpdateChartSpec = Nothing-    , _reqSetBasicFilter = Nothing-    , _reqTextToColumns = Nothing-    , _reqAddDimensionGroup = 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})---- | Creates new developer metadata-reqCreateDeveloperMetadata :: Lens' Request' (Maybe CreateDeveloperMetadataRequest)-reqCreateDeveloperMetadata-  = lens _reqCreateDeveloperMetadata-      (\ s a -> s{_reqCreateDeveloperMetadata = 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})---- | Randomizes the order of the rows in a range.-reqRandomizeRange :: Lens' Request' (Maybe RandomizeRangeRequest)-reqRandomizeRange-  = lens _reqRandomizeRange-      (\ s a -> s{_reqRandomizeRange = 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})---- | Inserts new cells in a sheet, shifting the existing cells.-reqInsertRange :: Lens' Request' (Maybe InsertRangeRequest)-reqInsertRange-  = lens _reqInsertRange-      (\ s a -> s{_reqInsertRange = a})---- | Removes a banded range-reqDeleteBanding :: Lens' Request' (Maybe DeleteBandingRequest)-reqDeleteBanding-  = lens _reqDeleteBanding-      (\ s a -> s{_reqDeleteBanding = a})---- | Updates a banded range-reqUpdateBanding :: Lens' Request' (Maybe UpdateBandingRequest)-reqUpdateBanding-  = lens _reqUpdateBanding-      (\ s a -> s{_reqUpdateBanding = 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})---- | Deletes a range of cells from a sheet, shifting the remaining cells.-reqDeleteRange :: Lens' Request' (Maybe DeleteRangeRequest)-reqDeleteRange-  = lens _reqDeleteRange-      (\ s a -> s{_reqDeleteRange = a})---- | Copies data from one area and pastes it to another.-reqCopyPaste :: Lens' Request' (Maybe CopyPasteRequest)-reqCopyPaste-  = lens _reqCopyPaste (\ s a -> s{_reqCopyPaste = a})---- | Updates the state of the specified group.-reqUpdateDimensionGroup :: Lens' Request' (Maybe UpdateDimensionGroupRequest)-reqUpdateDimensionGroup-  = lens _reqUpdateDimensionGroup-      (\ s a -> s{_reqUpdateDimensionGroup = a})---- | Deletes a group over the specified range.-reqDeleteDimensionGroup :: Lens' Request' (Maybe DeleteDimensionGroupRequest)-reqDeleteDimensionGroup-  = lens _reqDeleteDimensionGroup-      (\ s a -> s{_reqDeleteDimensionGroup = 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})---- | Deletes developer metadata-reqDeleteDeveloperMetadata :: Lens' Request' (Maybe DeleteDeveloperMetadataRequest)-reqDeleteDeveloperMetadata-  = lens _reqDeleteDeveloperMetadata-      (\ s a -> s{_reqDeleteDeveloperMetadata = a})---- | Updates an existing developer metadata entry-reqUpdateDeveloperMetadata :: Lens' Request' (Maybe UpdateDeveloperMetadataRequest)-reqUpdateDeveloperMetadata-  = lens _reqUpdateDeveloperMetadata-      (\ s a -> s{_reqUpdateDeveloperMetadata = 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})---- | Adds a new banded range-reqAddBanding :: Lens' Request' (Maybe AddBandingRequest)-reqAddBanding-  = lens _reqAddBanding-      (\ s a -> s{_reqAddBanding = 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})---- | Creates a group over the specified range.-reqAddDimensionGroup :: Lens' Request' (Maybe AddDimensionGroupRequest)-reqAddDimensionGroup-  = lens _reqAddDimensionGroup-      (\ s a -> s{_reqAddDimensionGroup = 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 .:? "createDeveloperMetadata")-                     <*> (o .:? "duplicateFilterView")-                     <*> (o .:? "addConditionalFormatRule")-                     <*> (o .:? "randomizeRange")-                     <*> (o .:? "sortRange")-                     <*> (o .:? "updateNamedRange")-                     <*> (o .:? "deleteNamedRange")-                     <*> (o .:? "insertRange")-                     <*> (o .:? "deleteBanding")-                     <*> (o .:? "updateBanding")-                     <*> (o .:? "clearBasicFilter")-                     <*> (o .:? "appendCells")-                     <*> (o .:? "pasteData")-                     <*> (o .:? "updateEmbeddedObjectPosition")-                     <*> (o .:? "deleteRange")-                     <*> (o .:? "copyPaste")-                     <*> (o .:? "updateDimensionGroup")-                     <*> (o .:? "deleteDimensionGroup")-                     <*> (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 .:? "deleteDeveloperMetadata")-                     <*> (o .:? "updateDeveloperMetadata")-                     <*> (o .:? "mergeCells")-                     <*> (o .:? "addNamedRange")-                     <*> (o .:? "addChart")-                     <*> (o .:? "addBanding")-                     <*> (o .:? "duplicateSheet")-                     <*> (o .:? "autoFill")-                     <*> (o .:? "updateDimensionProperties")-                     <*> (o .:? "updateChartSpec")-                     <*> (o .:? "setBasicFilter")-                     <*> (o .:? "textToColumns")-                     <*> (o .:? "addDimensionGroup")-                     <*> (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,-                  ("createDeveloperMetadata" .=) <$>-                    _reqCreateDeveloperMetadata,-                  ("duplicateFilterView" .=) <$>-                    _reqDuplicateFilterView,-                  ("addConditionalFormatRule" .=) <$>-                    _reqAddConditionalFormatRule,-                  ("randomizeRange" .=) <$> _reqRandomizeRange,-                  ("sortRange" .=) <$> _reqSortRange,-                  ("updateNamedRange" .=) <$> _reqUpdateNamedRange,-                  ("deleteNamedRange" .=) <$> _reqDeleteNamedRange,-                  ("insertRange" .=) <$> _reqInsertRange,-                  ("deleteBanding" .=) <$> _reqDeleteBanding,-                  ("updateBanding" .=) <$> _reqUpdateBanding,-                  ("clearBasicFilter" .=) <$> _reqClearBasicFilter,-                  ("appendCells" .=) <$> _reqAppendCells,-                  ("pasteData" .=) <$> _reqPasteData,-                  ("updateEmbeddedObjectPosition" .=) <$>-                    _reqUpdateEmbeddedObjectPosition,-                  ("deleteRange" .=) <$> _reqDeleteRange,-                  ("copyPaste" .=) <$> _reqCopyPaste,-                  ("updateDimensionGroup" .=) <$>-                    _reqUpdateDimensionGroup,-                  ("deleteDimensionGroup" .=) <$>-                    _reqDeleteDimensionGroup,-                  ("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,-                  ("deleteDeveloperMetadata" .=) <$>-                    _reqDeleteDeveloperMetadata,-                  ("updateDeveloperMetadata" .=) <$>-                    _reqUpdateDeveloperMetadata,-                  ("mergeCells" .=) <$> _reqMergeCells,-                  ("addNamedRange" .=) <$> _reqAddNamedRange,-                  ("addChart" .=) <$> _reqAddChart,-                  ("addBanding" .=) <$> _reqAddBanding,-                  ("duplicateSheet" .=) <$> _reqDuplicateSheet,-                  ("autoFill" .=) <$> _reqAutoFill,-                  ("updateDimensionProperties" .=) <$>-                    _reqUpdateDimensionProperties,-                  ("updateChartSpec" .=) <$> _reqUpdateChartSpec,-                  ("setBasicFilter" .=) <$> _reqSetBasicFilter,-                  ("textToColumns" .=) <$> _reqTextToColumns,-                  ("addDimensionGroup" .=) <$> _reqAddDimensionGroup,-                  ("updateSpreadsheetProperties" .=) <$>-                    _reqUpdateSpreadsheetProperties,-                  ("deleteSheet" .=) <$> _reqDeleteSheet,-                  ("unmergeCells" .=) <$> _reqUnmergeCells,-                  ("updateBorders" .=) <$> _reqUpdateBOrders,-                  ("appendDimension" .=) <$> _reqAppendDimension,-                  ("setDataValidation" .=) <$> _reqSetDataValidation])---- | Properties that describe the style of a line.------ /See:/ 'lineStyle' smart constructor.-data LineStyle = LineStyle'-    { _lsWidth :: !(Maybe (Textual Int32))-    , _lsType  :: !(Maybe LineStyleType)-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'LineStyle' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'lsWidth'------ * 'lsType'-lineStyle-    :: LineStyle-lineStyle =-    LineStyle'-    { _lsWidth = Nothing-    , _lsType = Nothing-    }---- | The thickness of the line, in px.-lsWidth :: Lens' LineStyle (Maybe Int32)-lsWidth-  = lens _lsWidth (\ s a -> s{_lsWidth = a}) .-      mapping _Coerce---- | The dash type of the line.-lsType :: Lens' LineStyle (Maybe LineStyleType)-lsType = lens _lsType (\ s a -> s{_lsType = a})--instance FromJSON LineStyle where-        parseJSON-          = withObject "LineStyle"-              (\ o ->-                 LineStyle' <$> (o .:? "width") <*> (o .:? "type"))--instance ToJSON LineStyle where-        toJSON LineStyle'{..}-          = object-              (catMaybes-                 [("width" .=) <$> _lsWidth, ("type" .=) <$> _lsType])---- | 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-    }+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. When appending values, this field+-- represents the range to search for a table, after which values will be+-- appended.+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 GFieldMask)+    }+  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 GFieldMask)+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])++-- | The request for clearing more than one range of values in a spreadsheet.+--+-- /See:/ 'batchClearValuesRequest' smart constructor.+newtype BatchClearValuesRequest =+  BatchClearValuesRequest'+    { _bcvrRanges :: Maybe [Text]+    }+  deriving (Eq, Show, Data, Typeable, Generic)+++-- | Creates a value of 'BatchClearValuesRequest' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'bcvrRanges'+batchClearValuesRequest+    :: BatchClearValuesRequest+batchClearValuesRequest = BatchClearValuesRequest' {_bcvrRanges = Nothing}+++-- | The ranges to clear, in A1 notation.+bcvrRanges :: Lens' BatchClearValuesRequest [Text]+bcvrRanges+  = lens _bcvrRanges (\ s a -> s{_bcvrRanges = a}) .+      _Default+      . _Coerce++instance FromJSON BatchClearValuesRequest where+        parseJSON+          = withObject "BatchClearValuesRequest"+              (\ o ->+                 BatchClearValuesRequest' <$>+                   (o .:? "ranges" .!= mempty))++instance ToJSON BatchClearValuesRequest where+        toJSON BatchClearValuesRequest'{..}+          = object (catMaybes [("ranges" .=) <$> _bcvrRanges])++-- | The response from creating developer metadata.+--+-- /See:/ 'createDeveloperMetadataResponse' smart constructor.+newtype CreateDeveloperMetadataResponse =+  CreateDeveloperMetadataResponse'+    { _cdmrDeveloperMetadata :: Maybe DeveloperMetadata+    }+  deriving (Eq, Show, Data, Typeable, Generic)+++-- | Creates a value of 'CreateDeveloperMetadataResponse' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'cdmrDeveloperMetadata'+createDeveloperMetadataResponse+    :: CreateDeveloperMetadataResponse+createDeveloperMetadataResponse =+  CreateDeveloperMetadataResponse' {_cdmrDeveloperMetadata = Nothing}+++-- | The developer metadata that was created.+cdmrDeveloperMetadata :: Lens' CreateDeveloperMetadataResponse (Maybe DeveloperMetadata)+cdmrDeveloperMetadata+  = lens _cdmrDeveloperMetadata+      (\ s a -> s{_cdmrDeveloperMetadata = a})++instance FromJSON CreateDeveloperMetadataResponse+         where+        parseJSON+          = withObject "CreateDeveloperMetadataResponse"+              (\ o ->+                 CreateDeveloperMetadataResponse' <$>+                   (o .:? "developerMetadata"))++instance ToJSON CreateDeveloperMetadataResponse where+        toJSON CreateDeveloperMetadataResponse'{..}+          = object+              (catMaybes+                 [("developerMetadata" .=) <$>+                    _cdmrDeveloperMetadata])++-- | Allows you to organize the date-time values in a source data column into+-- buckets based on selected parts of their date or time values. For+-- example, consider a pivot table showing sales transactions by date:+-- +----------+--------------+ | Date | SUM of Sales |+-- +----------+--------------+ | 1\/1\/2017 | $621.14 | | 2\/3\/2017 |+-- $708.84 | | 5\/8\/2017 | $326.84 | ... +----------+--------------++-- Applying a date-time group rule with a DateTimeRuleType of YEAR_MONTH+-- results in the following pivot table. +--------------+--------------+ |+-- Grouped Date | SUM of Sales | +--------------+--------------+ | 2017-Jan+-- | $53,731.78 | | 2017-Feb | $83,475.32 | | 2017-Mar | $94,385.05 | ...+-- +--------------+--------------++--+-- /See:/ 'dateTimeRule' smart constructor.+newtype DateTimeRule =+  DateTimeRule'+    { _dtrType :: Maybe DateTimeRuleType+    }+  deriving (Eq, Show, Data, Typeable, Generic)+++-- | Creates a value of 'DateTimeRule' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'dtrType'+dateTimeRule+    :: DateTimeRule+dateTimeRule = DateTimeRule' {_dtrType = Nothing}+++-- | The type of date-time grouping to apply.+dtrType :: Lens' DateTimeRule (Maybe DateTimeRuleType)+dtrType = lens _dtrType (\ s a -> s{_dtrType = a})++instance FromJSON DateTimeRule where+        parseJSON+          = withObject "DateTimeRule"+              (\ o -> DateTimeRule' <$> (o .:? "type"))++instance ToJSON DateTimeRule where+        toJSON DateTimeRule'{..}+          = object (catMaybes [("type" .=) <$> _dtrType])++-- | Properties of a spreadsheet.+--+-- /See:/ 'spreadsheetProperties' smart constructor.+data SpreadsheetProperties =+  SpreadsheetProperties'+    { _spDefaultFormat                :: !(Maybe CellFormat)+    , _spLocale                       :: !(Maybe Text)+    , _spIterativeCalculationSettings :: !(Maybe IterativeCalculationSettings)+    , _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'+--+-- * 'spIterativeCalculationSettings'+--+-- * 'spAutoRecalc'+--+-- * 'spTitle'+--+-- * 'spTimeZone'+spreadsheetProperties+    :: SpreadsheetProperties+spreadsheetProperties =+  SpreadsheetProperties'+    { _spDefaultFormat = Nothing+    , _spLocale = Nothing+    , _spIterativeCalculationSettings = 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})++-- | Determines whether and how circular references are resolved with+-- iterative calculation. Absence of this field means that circular+-- references will result in calculation errors.+spIterativeCalculationSettings :: Lens' SpreadsheetProperties (Maybe IterativeCalculationSettings)+spIterativeCalculationSettings+  = lens _spIterativeCalculationSettings+      (\ s a -> s{_spIterativeCalculationSettings = 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 .:? "iterativeCalculationSettings")+                     <*> (o .:? "autoRecalc")+                     <*> (o .:? "title")+                     <*> (o .:? "timeZone"))++instance ToJSON SpreadsheetProperties where+        toJSON SpreadsheetProperties'{..}+          = object+              (catMaybes+                 [("defaultFormat" .=) <$> _spDefaultFormat,+                  ("locale" .=) <$> _spLocale,+                  ("iterativeCalculationSettings" .=) <$>+                    _spIterativeCalculationSettings,+                  ("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])++-- | The request for clearing more than one range selected by a DataFilter in+-- a spreadsheet.+--+-- /See:/ 'batchClearValuesByDataFilterRequest' smart constructor.+newtype BatchClearValuesByDataFilterRequest =+  BatchClearValuesByDataFilterRequest'+    { _bcvbdfrDataFilters :: Maybe [DataFilter]+    }+  deriving (Eq, Show, Data, Typeable, Generic)+++-- | Creates a value of 'BatchClearValuesByDataFilterRequest' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'bcvbdfrDataFilters'+batchClearValuesByDataFilterRequest+    :: BatchClearValuesByDataFilterRequest+batchClearValuesByDataFilterRequest =+  BatchClearValuesByDataFilterRequest' {_bcvbdfrDataFilters = Nothing}+++-- | The DataFilters used to determine which ranges to clear.+bcvbdfrDataFilters :: Lens' BatchClearValuesByDataFilterRequest [DataFilter]+bcvbdfrDataFilters+  = lens _bcvbdfrDataFilters+      (\ s a -> s{_bcvbdfrDataFilters = a})+      . _Default+      . _Coerce++instance FromJSON BatchClearValuesByDataFilterRequest+         where+        parseJSON+          = withObject "BatchClearValuesByDataFilterRequest"+              (\ o ->+                 BatchClearValuesByDataFilterRequest' <$>+                   (o .:? "dataFilters" .!= mempty))++instance ToJSON BatchClearValuesByDataFilterRequest+         where+        toJSON BatchClearValuesByDataFilterRequest'{..}+          = object+              (catMaybes+                 [("dataFilters" .=) <$> _bcvbdfrDataFilters])++-- | 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])++-- | Deletes a group over the specified range by decrementing the depth of+-- the dimensions in the range. For example, assume the sheet has a depth-1+-- group over B:E and a depth-2 group over C:D. Deleting a group over D:E+-- leaves the sheet with a depth-1 group over B:D and a depth-2 group over+-- C:C.+--+-- /See:/ 'deleteDimensionGroupRequest' smart constructor.+newtype DeleteDimensionGroupRequest =+  DeleteDimensionGroupRequest'+    { _ddgrRange :: Maybe DimensionRange+    }+  deriving (Eq, Show, Data, Typeable, Generic)+++-- | Creates a value of 'DeleteDimensionGroupRequest' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'ddgrRange'+deleteDimensionGroupRequest+    :: DeleteDimensionGroupRequest+deleteDimensionGroupRequest =+  DeleteDimensionGroupRequest' {_ddgrRange = Nothing}+++-- | The range of the group to be deleted.+ddgrRange :: Lens' DeleteDimensionGroupRequest (Maybe DimensionRange)+ddgrRange+  = lens _ddgrRange (\ s a -> s{_ddgrRange = a})++instance FromJSON DeleteDimensionGroupRequest where+        parseJSON+          = withObject "DeleteDimensionGroupRequest"+              (\ o ->+                 DeleteDimensionGroupRequest' <$> (o .:? "range"))++instance ToJSON DeleteDimensionGroupRequest where+        toJSON DeleteDimensionGroupRequest'{..}+          = object (catMaybes [("range" .=) <$> _ddgrRange])++-- | Updates the state of the specified group.+--+-- /See:/ 'updateDimensionGroupRequest' smart constructor.+data UpdateDimensionGroupRequest =+  UpdateDimensionGroupRequest'+    { _udgrDimensionGroup :: !(Maybe DimensionGroup)+    , _udgrFields         :: !(Maybe GFieldMask)+    }+  deriving (Eq, Show, Data, Typeable, Generic)+++-- | Creates a value of 'UpdateDimensionGroupRequest' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'udgrDimensionGroup'+--+-- * 'udgrFields'+updateDimensionGroupRequest+    :: UpdateDimensionGroupRequest+updateDimensionGroupRequest =+  UpdateDimensionGroupRequest'+    {_udgrDimensionGroup = Nothing, _udgrFields = Nothing}+++-- | The group whose state should be updated. The range and depth of the+-- group should specify a valid group on the sheet, and all other fields+-- updated.+udgrDimensionGroup :: Lens' UpdateDimensionGroupRequest (Maybe DimensionGroup)+udgrDimensionGroup+  = lens _udgrDimensionGroup+      (\ s a -> s{_udgrDimensionGroup = a})++-- | The fields that should be updated. At least one field must be specified.+-- The root \`dimensionGroup\` is implied and should not be specified. A+-- single \`\"*\"\` can be used as short-hand for listing every field.+udgrFields :: Lens' UpdateDimensionGroupRequest (Maybe GFieldMask)+udgrFields+  = lens _udgrFields (\ s a -> s{_udgrFields = a})++instance FromJSON UpdateDimensionGroupRequest where+        parseJSON+          = withObject "UpdateDimensionGroupRequest"+              (\ o ->+                 UpdateDimensionGroupRequest' <$>+                   (o .:? "dimensionGroup") <*> (o .:? "fields"))++instance ToJSON UpdateDimensionGroupRequest where+        toJSON UpdateDimensionGroupRequest'{..}+          = object+              (catMaybes+                 [("dimensionGroup" .=) <$> _udgrDimensionGroup,+                  ("fields" .=) <$> _udgrFields])++-- | 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.+-- The sheetId field is optional; if one is not set, an id will be randomly+-- generated. (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])++-- | A group over an interval of rows or columns on a sheet, which can+-- contain or be contained within other groups. A group can be collapsed or+-- expanded as a unit on the sheet.+--+-- /See:/ 'dimensionGroup' smart constructor.+data DimensionGroup =+  DimensionGroup'+    { _dgCollapsed :: !(Maybe Bool)+    , _dgRange     :: !(Maybe DimensionRange)+    , _dgDepth     :: !(Maybe (Textual Int32))+    }+  deriving (Eq, Show, Data, Typeable, Generic)+++-- | Creates a value of 'DimensionGroup' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'dgCollapsed'+--+-- * 'dgRange'+--+-- * 'dgDepth'+dimensionGroup+    :: DimensionGroup+dimensionGroup =+  DimensionGroup'+    {_dgCollapsed = Nothing, _dgRange = Nothing, _dgDepth = Nothing}+++-- | This field is true if this group is collapsed. A collapsed group remains+-- collapsed if an overlapping group at a shallower depth is expanded. A+-- true value does not imply that all dimensions within the group are+-- hidden, since a dimension\'s visibility can change independently from+-- this group property. However, when this property is updated, all+-- dimensions within it are set to hidden if this field is true, or set to+-- visible if this field is false.+dgCollapsed :: Lens' DimensionGroup (Maybe Bool)+dgCollapsed+  = lens _dgCollapsed (\ s a -> s{_dgCollapsed = a})++-- | The range over which this group exists.+dgRange :: Lens' DimensionGroup (Maybe DimensionRange)+dgRange = lens _dgRange (\ s a -> s{_dgRange = a})++-- | The depth of the group, representing how many groups have a range that+-- wholly contains the range of this group.+dgDepth :: Lens' DimensionGroup (Maybe Int32)+dgDepth+  = lens _dgDepth (\ s a -> s{_dgDepth = a}) .+      mapping _Coerce++instance FromJSON DimensionGroup where+        parseJSON+          = withObject "DimensionGroup"+              (\ o ->+                 DimensionGroup' <$>+                   (o .:? "collapsed") <*> (o .:? "range") <*>+                     (o .:? "depth"))++instance ToJSON DimensionGroup where+        toJSON DimensionGroup'{..}+          = object+              (catMaybes+                 [("collapsed" .=) <$> _dgCollapsed,+                  ("range" .=) <$> _dgRange,+                  ("depth" .=) <$> _dgDepth])++-- | 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.+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 </chart/interactive/docs/gallery/bubblechart bubble chart>.+--+-- /See:/ 'bubbleChartSpec' smart constructor.+data BubbleChartSpec =+  BubbleChartSpec'+    { _bcsBubbleTextStyle     :: !(Maybe TextFormat)+    , _bcsBubbleBOrderColor   :: !(Maybe Color)+    , _bcsLegendPosition      :: !(Maybe BubbleChartSpecLegendPosition)+    , _bcsDomain              :: !(Maybe ChartData)+    , _bcsSeries              :: !(Maybe ChartData)+    , _bcsBubbleLabels        :: !(Maybe ChartData)+    , _bcsGroupIds            :: !(Maybe ChartData)+    , _bcsBubbleMinRadiusSize :: !(Maybe (Textual Int32))+    , _bcsBubbleMaxRadiusSize :: !(Maybe (Textual Int32))+    , _bcsBubbleOpacity       :: !(Maybe (Textual Double))+    , _bcsBubbleSizes         :: !(Maybe ChartData)+    }+  deriving (Eq, Show, Data, Typeable, Generic)+++-- | Creates a value of 'BubbleChartSpec' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'bcsBubbleTextStyle'+--+-- * 'bcsBubbleBOrderColor'+--+-- * 'bcsLegendPosition'+--+-- * 'bcsDomain'+--+-- * 'bcsSeries'+--+-- * 'bcsBubbleLabels'+--+-- * 'bcsGroupIds'+--+-- * 'bcsBubbleMinRadiusSize'+--+-- * 'bcsBubbleMaxRadiusSize'+--+-- * 'bcsBubbleOpacity'+--+-- * 'bcsBubbleSizes'+bubbleChartSpec+    :: BubbleChartSpec+bubbleChartSpec =+  BubbleChartSpec'+    { _bcsBubbleTextStyle = Nothing+    , _bcsBubbleBOrderColor = Nothing+    , _bcsLegendPosition = Nothing+    , _bcsDomain = Nothing+    , _bcsSeries = Nothing+    , _bcsBubbleLabels = Nothing+    , _bcsGroupIds = Nothing+    , _bcsBubbleMinRadiusSize = Nothing+    , _bcsBubbleMaxRadiusSize = Nothing+    , _bcsBubbleOpacity = Nothing+    , _bcsBubbleSizes = Nothing+    }+++-- | The format of the text inside the bubbles. Underline and Strikethrough+-- are not supported.+bcsBubbleTextStyle :: Lens' BubbleChartSpec (Maybe TextFormat)+bcsBubbleTextStyle+  = lens _bcsBubbleTextStyle+      (\ s a -> s{_bcsBubbleTextStyle = a})++-- | The bubble border color.+bcsBubbleBOrderColor :: Lens' BubbleChartSpec (Maybe Color)+bcsBubbleBOrderColor+  = lens _bcsBubbleBOrderColor+      (\ s a -> s{_bcsBubbleBOrderColor = a})++-- | Where the legend of the chart should be drawn.+bcsLegendPosition :: Lens' BubbleChartSpec (Maybe BubbleChartSpecLegendPosition)+bcsLegendPosition+  = lens _bcsLegendPosition+      (\ s a -> s{_bcsLegendPosition = a})++-- | The data containing the bubble x-values. These values locate the bubbles+-- in the chart horizontally.+bcsDomain :: Lens' BubbleChartSpec (Maybe ChartData)+bcsDomain+  = lens _bcsDomain (\ s a -> s{_bcsDomain = a})++-- | The data contianing the bubble y-values. These values locate the bubbles+-- in the chart vertically.+bcsSeries :: Lens' BubbleChartSpec (Maybe ChartData)+bcsSeries+  = lens _bcsSeries (\ s a -> s{_bcsSeries = a})++-- | The data containing the bubble labels. These do not need to be unique.+bcsBubbleLabels :: Lens' BubbleChartSpec (Maybe ChartData)+bcsBubbleLabels+  = lens _bcsBubbleLabels+      (\ s a -> s{_bcsBubbleLabels = a})++-- | The data containing the bubble group IDs. All bubbles with the same+-- group ID are drawn in the same color. If bubble_sizes is specified then+-- this field must also be specified but may contain blank values. This+-- field is optional.+bcsGroupIds :: Lens' BubbleChartSpec (Maybe ChartData)+bcsGroupIds+  = lens _bcsGroupIds (\ s a -> s{_bcsGroupIds = a})++-- | The minimum radius size of the bubbles, in pixels. If specific, the+-- field must be a positive value.+bcsBubbleMinRadiusSize :: Lens' BubbleChartSpec (Maybe Int32)+bcsBubbleMinRadiusSize+  = lens _bcsBubbleMinRadiusSize+      (\ s a -> s{_bcsBubbleMinRadiusSize = a})+      . mapping _Coerce++-- | The max radius size of the bubbles, in pixels. If specified, the field+-- must be a positive value.+bcsBubbleMaxRadiusSize :: Lens' BubbleChartSpec (Maybe Int32)+bcsBubbleMaxRadiusSize+  = lens _bcsBubbleMaxRadiusSize+      (\ s a -> s{_bcsBubbleMaxRadiusSize = a})+      . mapping _Coerce++-- | The opacity of the bubbles between 0 and 1.0. 0 is fully transparent and+-- 1 is fully opaque.+bcsBubbleOpacity :: Lens' BubbleChartSpec (Maybe Double)+bcsBubbleOpacity+  = lens _bcsBubbleOpacity+      (\ s a -> s{_bcsBubbleOpacity = a})+      . mapping _Coerce++-- | The data contianing the bubble sizes. Bubble sizes are used to draw the+-- bubbles at different sizes relative to each other. If specified,+-- group_ids must also be specified. This field is optional.+bcsBubbleSizes :: Lens' BubbleChartSpec (Maybe ChartData)+bcsBubbleSizes+  = lens _bcsBubbleSizes+      (\ s a -> s{_bcsBubbleSizes = a})++instance FromJSON BubbleChartSpec where+        parseJSON+          = withObject "BubbleChartSpec"+              (\ o ->+                 BubbleChartSpec' <$>+                   (o .:? "bubbleTextStyle") <*>+                     (o .:? "bubbleBorderColor")+                     <*> (o .:? "legendPosition")+                     <*> (o .:? "domain")+                     <*> (o .:? "series")+                     <*> (o .:? "bubbleLabels")+                     <*> (o .:? "groupIds")+                     <*> (o .:? "bubbleMinRadiusSize")+                     <*> (o .:? "bubbleMaxRadiusSize")+                     <*> (o .:? "bubbleOpacity")+                     <*> (o .:? "bubbleSizes"))++instance ToJSON BubbleChartSpec where+        toJSON BubbleChartSpec'{..}+          = object+              (catMaybes+                 [("bubbleTextStyle" .=) <$> _bcsBubbleTextStyle,+                  ("bubbleBorderColor" .=) <$> _bcsBubbleBOrderColor,+                  ("legendPosition" .=) <$> _bcsLegendPosition,+                  ("domain" .=) <$> _bcsDomain,+                  ("series" .=) <$> _bcsSeries,+                  ("bubbleLabels" .=) <$> _bcsBubbleLabels,+                  ("groupIds" .=) <$> _bcsGroupIds,+                  ("bubbleMinRadiusSize" .=) <$>+                    _bcsBubbleMinRadiusSize,+                  ("bubbleMaxRadiusSize" .=) <$>+                    _bcsBubbleMaxRadiusSize,+                  ("bubbleOpacity" .=) <$> _bcsBubbleOpacity,+                  ("bubbleSizes" .=) <$> _bcsBubbleSizes])++-- | Deletes a range of cells, shifting other cells into the deleted area.+--+-- /See:/ 'deleteRangeRequest' smart constructor.+data DeleteRangeRequest =+  DeleteRangeRequest'+    { _drrShiftDimension :: !(Maybe DeleteRangeRequestShiftDimension)+    , _drrRange          :: !(Maybe GridRange)+    }+  deriving (Eq, Show, Data, Typeable, Generic)+++-- | Creates a value of 'DeleteRangeRequest' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'drrShiftDimension'+--+-- * 'drrRange'+deleteRangeRequest+    :: DeleteRangeRequest+deleteRangeRequest =+  DeleteRangeRequest' {_drrShiftDimension = Nothing, _drrRange = Nothing}+++-- | The dimension from which deleted cells will be replaced with. If ROWS,+-- existing cells will be shifted upward to replace the deleted cells. If+-- COLUMNS, existing cells will be shifted left to replace the deleted+-- cells.+drrShiftDimension :: Lens' DeleteRangeRequest (Maybe DeleteRangeRequestShiftDimension)+drrShiftDimension+  = lens _drrShiftDimension+      (\ s a -> s{_drrShiftDimension = a})++-- | The range of cells to delete.+drrRange :: Lens' DeleteRangeRequest (Maybe GridRange)+drrRange = lens _drrRange (\ s a -> s{_drrRange = a})++instance FromJSON DeleteRangeRequest where+        parseJSON+          = withObject "DeleteRangeRequest"+              (\ o ->+                 DeleteRangeRequest' <$>+                   (o .:? "shiftDimension") <*> (o .:? "range"))++instance ToJSON DeleteRangeRequest where+        toJSON DeleteRangeRequest'{..}+          = object+              (catMaybes+                 [("shiftDimension" .=) <$> _drrShiftDimension,+                  ("range" .=) <$> _drrRange])++-- | A sheet in a spreadsheet.+--+-- /See:/ 'sheet' smart constructor.+data Sheet =+  Sheet'+    { _sColumnGroups       :: !(Maybe [DimensionGroup])+    , _sData               :: !(Maybe [GridData])+    , _sMerges             :: !(Maybe [GridRange])+    , _sRowGroups          :: !(Maybe [DimensionGroup])+    , _sProtectedRanges    :: !(Maybe [ProtectedRange])+    , _sBandedRanges       :: !(Maybe [BandedRange])+    , _sCharts             :: !(Maybe [EmbeddedChart])+    , _sBasicFilter        :: !(Maybe BasicFilter)+    , _sDeveloperMetadata  :: !(Maybe [DeveloperMetadata])+    , _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:+--+-- * 'sColumnGroups'+--+-- * 'sData'+--+-- * 'sMerges'+--+-- * 'sRowGroups'+--+-- * 'sProtectedRanges'+--+-- * 'sBandedRanges'+--+-- * 'sCharts'+--+-- * 'sBasicFilter'+--+-- * 'sDeveloperMetadata'+--+-- * 'sConditionalFormats'+--+-- * 'sFilterViews'+--+-- * 'sProperties'+sheet+    :: Sheet+sheet =+  Sheet'+    { _sColumnGroups = Nothing+    , _sData = Nothing+    , _sMerges = Nothing+    , _sRowGroups = Nothing+    , _sProtectedRanges = Nothing+    , _sBandedRanges = Nothing+    , _sCharts = Nothing+    , _sBasicFilter = Nothing+    , _sDeveloperMetadata = Nothing+    , _sConditionalFormats = Nothing+    , _sFilterViews = Nothing+    , _sProperties = Nothing+    }+++-- | All column groups on this sheet, ordered by increasing range start+-- index, then by group depth.+sColumnGroups :: Lens' Sheet [DimensionGroup]+sColumnGroups+  = lens _sColumnGroups+      (\ s a -> s{_sColumnGroups = a})+      . _Default+      . _Coerce++-- | 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++-- | All row groups on this sheet, ordered by increasing range start index,+-- then by group depth.+sRowGroups :: Lens' Sheet [DimensionGroup]+sRowGroups+  = lens _sRowGroups (\ s a -> s{_sRowGroups = a}) .+      _Default+      . _Coerce++-- | The protected ranges in this sheet.+sProtectedRanges :: Lens' Sheet [ProtectedRange]+sProtectedRanges+  = lens _sProtectedRanges+      (\ s a -> s{_sProtectedRanges = a})+      . _Default+      . _Coerce++-- | The banded (alternating colors) ranges on this sheet.+sBandedRanges :: Lens' Sheet [BandedRange]+sBandedRanges+  = lens _sBandedRanges+      (\ s a -> s{_sBandedRanges = 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 developer metadata associated with a sheet.+sDeveloperMetadata :: Lens' Sheet [DeveloperMetadata]+sDeveloperMetadata+  = lens _sDeveloperMetadata+      (\ s a -> s{_sDeveloperMetadata = a})+      . _Default+      . _Coerce++-- | 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 .:? "columnGroups" .!= mempty) <*>+                     (o .:? "data" .!= mempty)+                     <*> (o .:? "merges" .!= mempty)+                     <*> (o .:? "rowGroups" .!= mempty)+                     <*> (o .:? "protectedRanges" .!= mempty)+                     <*> (o .:? "bandedRanges" .!= mempty)+                     <*> (o .:? "charts" .!= mempty)+                     <*> (o .:? "basicFilter")+                     <*> (o .:? "developerMetadata" .!= mempty)+                     <*> (o .:? "conditionalFormats" .!= mempty)+                     <*> (o .:? "filterViews" .!= mempty)+                     <*> (o .:? "properties"))++instance ToJSON Sheet where+        toJSON Sheet'{..}+          = object+              (catMaybes+                 [("columnGroups" .=) <$> _sColumnGroups,+                  ("data" .=) <$> _sData, ("merges" .=) <$> _sMerges,+                  ("rowGroups" .=) <$> _sRowGroups,+                  ("protectedRanges" .=) <$> _sProtectedRanges,+                  ("bandedRanges" .=) <$> _sBandedRanges,+                  ("charts" .=) <$> _sCharts,+                  ("basicFilter" .=) <$> _sBasicFilter,+                  ("developerMetadata" .=) <$> _sDeveloperMetadata,+                  ("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])++-- | The response when clearing a range of values in a spreadsheet.+--+-- /See:/ 'clearValuesResponse' smart constructor.+data ClearValuesResponse =+  ClearValuesResponse'+    { _cvrClearedRange  :: !(Maybe Text)+    , _cvrSpreadsheetId :: !(Maybe Text)+    }+  deriving (Eq, Show, Data, Typeable, Generic)+++-- | Creates a value of 'ClearValuesResponse' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'cvrClearedRange'+--+-- * 'cvrSpreadsheetId'+clearValuesResponse+    :: ClearValuesResponse+clearValuesResponse =+  ClearValuesResponse' {_cvrClearedRange = Nothing, _cvrSpreadsheetId = Nothing}+++-- | The range (in A1 notation) that was cleared. (If the request was for an+-- unbounded range or a ranger larger than the bounds of the sheet, this+-- will be the actual range that was cleared, bounded to the sheet\'s+-- limits.)+cvrClearedRange :: Lens' ClearValuesResponse (Maybe Text)+cvrClearedRange+  = lens _cvrClearedRange+      (\ s a -> s{_cvrClearedRange = a})++-- | The spreadsheet the updates were applied to.+cvrSpreadsheetId :: Lens' ClearValuesResponse (Maybe Text)+cvrSpreadsheetId+  = lens _cvrSpreadsheetId+      (\ s a -> s{_cvrSpreadsheetId = a})++instance FromJSON ClearValuesResponse where+        parseJSON+          = withObject "ClearValuesResponse"+              (\ o ->+                 ClearValuesResponse' <$>+                   (o .:? "clearedRange") <*> (o .:? "spreadsheetId"))++instance ToJSON ClearValuesResponse where+        toJSON ClearValuesResponse'{..}+          = object+              (catMaybes+                 [("clearedRange" .=) <$> _cvrClearedRange,+                  ("spreadsheetId" .=) <$> _cvrSpreadsheetId])++-- | 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 GFieldMask)+    }+  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 GFieldMask)+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 is 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])++-- | The response when retrieving more than one range of values in a+-- spreadsheet selected by DataFilters.+--+-- /See:/ 'batchGetValuesByDataFilterResponse' smart constructor.+data BatchGetValuesByDataFilterResponse =+  BatchGetValuesByDataFilterResponse'+    { _bgvbdfrSpreadsheetId :: !(Maybe Text)+    , _bgvbdfrValueRanges   :: !(Maybe [MatchedValueRange])+    }+  deriving (Eq, Show, Data, Typeable, Generic)+++-- | Creates a value of 'BatchGetValuesByDataFilterResponse' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'bgvbdfrSpreadsheetId'+--+-- * 'bgvbdfrValueRanges'+batchGetValuesByDataFilterResponse+    :: BatchGetValuesByDataFilterResponse+batchGetValuesByDataFilterResponse =+  BatchGetValuesByDataFilterResponse'+    {_bgvbdfrSpreadsheetId = Nothing, _bgvbdfrValueRanges = Nothing}+++-- | The ID of the spreadsheet the data was retrieved from.+bgvbdfrSpreadsheetId :: Lens' BatchGetValuesByDataFilterResponse (Maybe Text)+bgvbdfrSpreadsheetId+  = lens _bgvbdfrSpreadsheetId+      (\ s a -> s{_bgvbdfrSpreadsheetId = a})++-- | The requested values with the list of data filters that matched them.+bgvbdfrValueRanges :: Lens' BatchGetValuesByDataFilterResponse [MatchedValueRange]+bgvbdfrValueRanges+  = lens _bgvbdfrValueRanges+      (\ s a -> s{_bgvbdfrValueRanges = a})+      . _Default+      . _Coerce++instance FromJSON BatchGetValuesByDataFilterResponse+         where+        parseJSON+          = withObject "BatchGetValuesByDataFilterResponse"+              (\ o ->+                 BatchGetValuesByDataFilterResponse' <$>+                   (o .:? "spreadsheetId") <*>+                     (o .:? "valueRanges" .!= mempty))++instance ToJSON BatchGetValuesByDataFilterResponse+         where+        toJSON BatchGetValuesByDataFilterResponse'{..}+          = object+              (catMaybes+                 [("spreadsheetId" .=) <$> _bgvbdfrSpreadsheetId,+                  ("valueRanges" .=) <$> _bgvbdfrValueRanges])++-- | 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 GFieldMask)+    }+  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 GFieldMask)+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])++-- | The result of adding a group.+--+-- /See:/ 'addDimensionGroupResponse' smart constructor.+newtype AddDimensionGroupResponse =+  AddDimensionGroupResponse'+    { _adgrDimensionGroups :: Maybe [DimensionGroup]+    }+  deriving (Eq, Show, Data, Typeable, Generic)+++-- | Creates a value of 'AddDimensionGroupResponse' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'adgrDimensionGroups'+addDimensionGroupResponse+    :: AddDimensionGroupResponse+addDimensionGroupResponse =+  AddDimensionGroupResponse' {_adgrDimensionGroups = Nothing}+++-- | All groups of a dimension after adding a group to that dimension.+adgrDimensionGroups :: Lens' AddDimensionGroupResponse [DimensionGroup]+adgrDimensionGroups+  = lens _adgrDimensionGroups+      (\ s a -> s{_adgrDimensionGroups = a})+      . _Default+      . _Coerce++instance FromJSON AddDimensionGroupResponse where+        parseJSON+          = withObject "AddDimensionGroupResponse"+              (\ o ->+                 AddDimensionGroupResponse' <$>+                   (o .:? "dimensionGroups" .!= mempty))++instance ToJSON AddDimensionGroupResponse where+        toJSON AddDimensionGroupResponse'{..}+          = object+              (catMaybes+                 [("dimensionGroups" .=) <$> _adgrDimensionGroups])++-- | 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])++-- | The response when updating a range of values in a spreadsheet.+--+-- /See:/ 'batchUpdateValuesByDataFilterResponse' smart constructor.+data BatchUpdateValuesByDataFilterResponse =+  BatchUpdateValuesByDataFilterResponse'+    { _buvbdfrTotalUpdatedColumns :: !(Maybe (Textual Int32))+    , _buvbdfrResponses           :: !(Maybe [UpdateValuesByDataFilterResponse])+    , _buvbdfrSpreadsheetId       :: !(Maybe Text)+    , _buvbdfrTotalUpdatedSheets  :: !(Maybe (Textual Int32))+    , _buvbdfrTotalUpdatedCells   :: !(Maybe (Textual Int32))+    , _buvbdfrTotalUpdatedRows    :: !(Maybe (Textual Int32))+    }+  deriving (Eq, Show, Data, Typeable, Generic)+++-- | Creates a value of 'BatchUpdateValuesByDataFilterResponse' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'buvbdfrTotalUpdatedColumns'+--+-- * 'buvbdfrResponses'+--+-- * 'buvbdfrSpreadsheetId'+--+-- * 'buvbdfrTotalUpdatedSheets'+--+-- * 'buvbdfrTotalUpdatedCells'+--+-- * 'buvbdfrTotalUpdatedRows'+batchUpdateValuesByDataFilterResponse+    :: BatchUpdateValuesByDataFilterResponse+batchUpdateValuesByDataFilterResponse =+  BatchUpdateValuesByDataFilterResponse'+    { _buvbdfrTotalUpdatedColumns = Nothing+    , _buvbdfrResponses = Nothing+    , _buvbdfrSpreadsheetId = Nothing+    , _buvbdfrTotalUpdatedSheets = Nothing+    , _buvbdfrTotalUpdatedCells = Nothing+    , _buvbdfrTotalUpdatedRows = Nothing+    }+++-- | The total number of columns where at least one cell in the column was+-- updated.+buvbdfrTotalUpdatedColumns :: Lens' BatchUpdateValuesByDataFilterResponse (Maybe Int32)+buvbdfrTotalUpdatedColumns+  = lens _buvbdfrTotalUpdatedColumns+      (\ s a -> s{_buvbdfrTotalUpdatedColumns = a})+      . mapping _Coerce++-- | The response for each range updated.+buvbdfrResponses :: Lens' BatchUpdateValuesByDataFilterResponse [UpdateValuesByDataFilterResponse]+buvbdfrResponses+  = lens _buvbdfrResponses+      (\ s a -> s{_buvbdfrResponses = a})+      . _Default+      . _Coerce++-- | The spreadsheet the updates were applied to.+buvbdfrSpreadsheetId :: Lens' BatchUpdateValuesByDataFilterResponse (Maybe Text)+buvbdfrSpreadsheetId+  = lens _buvbdfrSpreadsheetId+      (\ s a -> s{_buvbdfrSpreadsheetId = a})++-- | The total number of sheets where at least one cell in the sheet was+-- updated.+buvbdfrTotalUpdatedSheets :: Lens' BatchUpdateValuesByDataFilterResponse (Maybe Int32)+buvbdfrTotalUpdatedSheets+  = lens _buvbdfrTotalUpdatedSheets+      (\ s a -> s{_buvbdfrTotalUpdatedSheets = a})+      . mapping _Coerce++-- | The total number of cells updated.+buvbdfrTotalUpdatedCells :: Lens' BatchUpdateValuesByDataFilterResponse (Maybe Int32)+buvbdfrTotalUpdatedCells+  = lens _buvbdfrTotalUpdatedCells+      (\ s a -> s{_buvbdfrTotalUpdatedCells = a})+      . mapping _Coerce++-- | The total number of rows where at least one cell in the row was updated.+buvbdfrTotalUpdatedRows :: Lens' BatchUpdateValuesByDataFilterResponse (Maybe Int32)+buvbdfrTotalUpdatedRows+  = lens _buvbdfrTotalUpdatedRows+      (\ s a -> s{_buvbdfrTotalUpdatedRows = a})+      . mapping _Coerce++instance FromJSON+           BatchUpdateValuesByDataFilterResponse+         where+        parseJSON+          = withObject "BatchUpdateValuesByDataFilterResponse"+              (\ o ->+                 BatchUpdateValuesByDataFilterResponse' <$>+                   (o .:? "totalUpdatedColumns") <*>+                     (o .:? "responses" .!= mempty)+                     <*> (o .:? "spreadsheetId")+                     <*> (o .:? "totalUpdatedSheets")+                     <*> (o .:? "totalUpdatedCells")+                     <*> (o .:? "totalUpdatedRows"))++instance ToJSON BatchUpdateValuesByDataFilterResponse+         where+        toJSON BatchUpdateValuesByDataFilterResponse'{..}+          = object+              (catMaybes+                 [("totalUpdatedColumns" .=) <$>+                    _buvbdfrTotalUpdatedColumns,+                  ("responses" .=) <$> _buvbdfrResponses,+                  ("spreadsheetId" .=) <$> _buvbdfrSpreadsheetId,+                  ("totalUpdatedSheets" .=) <$>+                    _buvbdfrTotalUpdatedSheets,+                  ("totalUpdatedCells" .=) <$>+                    _buvbdfrTotalUpdatedCells,+                  ("totalUpdatedRows" .=) <$>+                    _buvbdfrTotalUpdatedRows])++-- | The response when updating a range of values in a spreadsheet.+--+-- /See:/ 'appendValuesResponse' smart constructor.+data AppendValuesResponse =+  AppendValuesResponse'+    { _avrSpreadsheetId :: !(Maybe Text)+    , _avrUpdates       :: !(Maybe UpdateValuesResponse)+    , _avrTableRange    :: !(Maybe Text)+    }+  deriving (Eq, Show, Data, Typeable, Generic)+++-- | Creates a value of 'AppendValuesResponse' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'avrSpreadsheetId'+--+-- * 'avrUpdates'+--+-- * 'avrTableRange'+appendValuesResponse+    :: AppendValuesResponse+appendValuesResponse =+  AppendValuesResponse'+    { _avrSpreadsheetId = Nothing+    , _avrUpdates = Nothing+    , _avrTableRange = Nothing+    }+++-- | The spreadsheet the updates were applied to.+avrSpreadsheetId :: Lens' AppendValuesResponse (Maybe Text)+avrSpreadsheetId+  = lens _avrSpreadsheetId+      (\ s a -> s{_avrSpreadsheetId = a})++-- | Information about the updates that were applied.+avrUpdates :: Lens' AppendValuesResponse (Maybe UpdateValuesResponse)+avrUpdates+  = lens _avrUpdates (\ s a -> s{_avrUpdates = a})++-- | The range (in A1 notation) of the table that values are being appended+-- to (before the values were appended). Empty if no table was found.+avrTableRange :: Lens' AppendValuesResponse (Maybe Text)+avrTableRange+  = lens _avrTableRange+      (\ s a -> s{_avrTableRange = a})++instance FromJSON AppendValuesResponse where+        parseJSON+          = withObject "AppendValuesResponse"+              (\ o ->+                 AppendValuesResponse' <$>+                   (o .:? "spreadsheetId") <*> (o .:? "updates") <*>+                     (o .:? "tableRange"))++instance ToJSON AppendValuesResponse where+        toJSON AppendValuesResponse'{..}+          = object+              (catMaybes+                 [("spreadsheetId" .=) <$> _avrSpreadsheetId,+                  ("updates" .=) <$> _avrUpdates,+                  ("tableRange" .=) <$> _avrTableRange])++-- | 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. Note: this proto does not carry+-- information about the absolute color space that should be used to+-- interpret the RGB value (e.g. sRGB, Adobe RGB, DCI-P3, BT.2020, etc.).+-- By default, applications SHOULD assume the sRGB color space. 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 GFieldMask)+    }+  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 GFieldMask)+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'+    { _bTargetAxis :: !(Maybe BasicChartSeriesTargetAxis)+    , _bColor      :: !(Maybe Color)+    , _bSeries     :: !(Maybe ChartData)+    , _bType       :: !(Maybe BasicChartSeriesType)+    , _bLineStyle  :: !(Maybe LineStyle)+    }+  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:+--+-- * 'bTargetAxis'+--+-- * 'bColor'+--+-- * 'bSeries'+--+-- * 'bType'+--+-- * 'bLineStyle'+basicChartSeries+    :: BasicChartSeries+basicChartSeries =+  BasicChartSeries'+    { _bTargetAxis = Nothing+    , _bColor = Nothing+    , _bSeries = Nothing+    , _bType = Nothing+    , _bLineStyle = 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.+bTargetAxis :: Lens' BasicChartSeries (Maybe BasicChartSeriesTargetAxis)+bTargetAxis+  = lens _bTargetAxis (\ s a -> s{_bTargetAxis = a})++-- | The color for elements (i.e. bars, lines, points) associated with this+-- series. If empty, a default color is used.+bColor :: Lens' BasicChartSeries (Maybe Color)+bColor = lens _bColor (\ s a -> s{_bColor = a})++-- | The data being visualized in this chart series.+bSeries :: Lens' BasicChartSeries (Maybe ChartData)+bSeries = lens _bSeries (\ s a -> s{_bSeries = 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.+bType :: Lens' BasicChartSeries (Maybe BasicChartSeriesType)+bType = lens _bType (\ s a -> s{_bType = a})++-- | The line style of this series. Valid only if the chartType is AREA,+-- LINE, or SCATTER. COMBO charts are also supported if the series chart+-- type is AREA or LINE.+bLineStyle :: Lens' BasicChartSeries (Maybe LineStyle)+bLineStyle+  = lens _bLineStyle (\ s a -> s{_bLineStyle = a})++instance FromJSON BasicChartSeries where+        parseJSON+          = withObject "BasicChartSeries"+              (\ o ->+                 BasicChartSeries' <$>+                   (o .:? "targetAxis") <*> (o .:? "color") <*>+                     (o .:? "series")+                     <*> (o .:? "type")+                     <*> (o .:? "lineStyle"))++instance ToJSON BasicChartSeries where+        toJSON BasicChartSeries'{..}+          = object+              (catMaybes+                 [("targetAxis" .=) <$> _bTargetAxis,+                  ("color" .=) <$> _bColor, ("series" .=) <$> _bSeries,+                  ("type" .=) <$> _bType,+                  ("lineStyle" .=) <$> _bLineStyle])++-- | An optional setting on a PivotGroup that defines buckets for the values+-- in the source data column rather than breaking out each individual+-- value. Only one PivotGroup with a group rule may be added for each+-- column in the source data, though on any given column you may add both a+-- PivotGroup that has a rule and a PivotGroup that does not.+--+-- /See:/ 'pivotGroupRule' smart constructor.+data PivotGroupRule =+  PivotGroupRule'+    { _pgrDateTimeRule  :: !(Maybe DateTimeRule)+    , _pgrManualRule    :: !(Maybe ManualRule)+    , _pgrHistogramRule :: !(Maybe HistogramRule)+    }+  deriving (Eq, Show, Data, Typeable, Generic)+++-- | Creates a value of 'PivotGroupRule' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'pgrDateTimeRule'+--+-- * 'pgrManualRule'+--+-- * 'pgrHistogramRule'+pivotGroupRule+    :: PivotGroupRule+pivotGroupRule =+  PivotGroupRule'+    { _pgrDateTimeRule = Nothing+    , _pgrManualRule = Nothing+    , _pgrHistogramRule = Nothing+    }+++-- | A DateTimeRule.+pgrDateTimeRule :: Lens' PivotGroupRule (Maybe DateTimeRule)+pgrDateTimeRule+  = lens _pgrDateTimeRule+      (\ s a -> s{_pgrDateTimeRule = a})++-- | A ManualRule.+pgrManualRule :: Lens' PivotGroupRule (Maybe ManualRule)+pgrManualRule+  = lens _pgrManualRule+      (\ s a -> s{_pgrManualRule = a})++-- | A HistogramRule.+pgrHistogramRule :: Lens' PivotGroupRule (Maybe HistogramRule)+pgrHistogramRule+  = lens _pgrHistogramRule+      (\ s a -> s{_pgrHistogramRule = a})++instance FromJSON PivotGroupRule where+        parseJSON+          = withObject "PivotGroupRule"+              (\ o ->+                 PivotGroupRule' <$>+                   (o .:? "dateTimeRule") <*> (o .:? "manualRule") <*>+                     (o .:? "histogramRule"))++instance ToJSON PivotGroupRule where+        toJSON PivotGroupRule'{..}+          = object+              (catMaybes+                 [("dateTimeRule" .=) <$> _pgrDateTimeRule,+                  ("manualRule" .=) <$> _pgrManualRule,+                  ("histogramRule" .=) <$> _pgrHistogramRule])++-- | 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. The protectedRangeId field is optional;+-- if one is not set, an id will be randomly generated. (It is an error to+-- specify the ID of a range that already exists.)+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 GFieldMask)+    }+  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 GFieldMask)+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 is parsed as if the user+-- typed into a cell. Formulas are supported (and must begin with an \`=\`+-- or a \'+\').+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])++-- | The request for clearing a range of values in a spreadsheet.+--+-- /See:/ 'clearValuesRequest' smart constructor.+data ClearValuesRequest =+  ClearValuesRequest'+  deriving (Eq, Show, Data, Typeable, Generic)+++-- | Creates a value of 'ClearValuesRequest' with the minimum fields required to make a request.+--+clearValuesRequest+    :: ClearValuesRequest+clearValuesRequest = ClearValuesRequest'+++instance FromJSON ClearValuesRequest where+        parseJSON+          = withObject "ClearValuesRequest"+              (\ o -> pure ClearValuesRequest')++instance ToJSON ClearValuesRequest where+        toJSON = const emptyObject++-- | 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])++-- | The request for retrieving a range of values in a spreadsheet selected+-- by a set of DataFilters.+--+-- /See:/ 'batchGetValuesByDataFilterRequest' smart constructor.+data BatchGetValuesByDataFilterRequest =+  BatchGetValuesByDataFilterRequest'+    { _bgvbdfrValueRenderOption    :: !(Maybe BatchGetValuesByDataFilterRequestValueRenderOption)+    , _bgvbdfrDataFilters          :: !(Maybe [DataFilter])+    , _bgvbdfrDateTimeRenderOption :: !(Maybe BatchGetValuesByDataFilterRequestDateTimeRenderOption)+    , _bgvbdfrMajorDimension       :: !(Maybe BatchGetValuesByDataFilterRequestMajorDimension)+    }+  deriving (Eq, Show, Data, Typeable, Generic)+++-- | Creates a value of 'BatchGetValuesByDataFilterRequest' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'bgvbdfrValueRenderOption'+--+-- * 'bgvbdfrDataFilters'+--+-- * 'bgvbdfrDateTimeRenderOption'+--+-- * 'bgvbdfrMajorDimension'+batchGetValuesByDataFilterRequest+    :: BatchGetValuesByDataFilterRequest+batchGetValuesByDataFilterRequest =+  BatchGetValuesByDataFilterRequest'+    { _bgvbdfrValueRenderOption = Nothing+    , _bgvbdfrDataFilters = Nothing+    , _bgvbdfrDateTimeRenderOption = Nothing+    , _bgvbdfrMajorDimension = Nothing+    }+++-- | How values should be represented in the output. The default render+-- option is ValueRenderOption.FORMATTED_VALUE.+bgvbdfrValueRenderOption :: Lens' BatchGetValuesByDataFilterRequest (Maybe BatchGetValuesByDataFilterRequestValueRenderOption)+bgvbdfrValueRenderOption+  = lens _bgvbdfrValueRenderOption+      (\ s a -> s{_bgvbdfrValueRenderOption = a})++-- | The data filters used to match the ranges of values to retrieve. Ranges+-- that match any of the specified data filters will be included in the+-- response.+bgvbdfrDataFilters :: Lens' BatchGetValuesByDataFilterRequest [DataFilter]+bgvbdfrDataFilters+  = lens _bgvbdfrDataFilters+      (\ s a -> s{_bgvbdfrDataFilters = a})+      . _Default+      . _Coerce++-- | How dates, times, and durations should be represented in the output.+-- This is ignored if value_render_option is FORMATTED_VALUE. The default+-- dateTime render option is [DateTimeRenderOption.SERIAL_NUMBER].+bgvbdfrDateTimeRenderOption :: Lens' BatchGetValuesByDataFilterRequest (Maybe BatchGetValuesByDataFilterRequestDateTimeRenderOption)+bgvbdfrDateTimeRenderOption+  = lens _bgvbdfrDateTimeRenderOption+      (\ s a -> s{_bgvbdfrDateTimeRenderOption = a})++-- | The major dimension that results should use. For example, if the+-- spreadsheet data is: \`A1=1,B1=2,A2=3,B2=4\`, then a request that+-- selects that range and sets \`majorDimension=ROWS\` will return+-- \`[[1,2],[3,4]]\`, whereas a request that sets+-- \`majorDimension=COLUMNS\` will return \`[[1,3],[2,4]]\`.+bgvbdfrMajorDimension :: Lens' BatchGetValuesByDataFilterRequest (Maybe BatchGetValuesByDataFilterRequestMajorDimension)+bgvbdfrMajorDimension+  = lens _bgvbdfrMajorDimension+      (\ s a -> s{_bgvbdfrMajorDimension = a})++instance FromJSON BatchGetValuesByDataFilterRequest+         where+        parseJSON+          = withObject "BatchGetValuesByDataFilterRequest"+              (\ o ->+                 BatchGetValuesByDataFilterRequest' <$>+                   (o .:? "valueRenderOption") <*>+                     (o .:? "dataFilters" .!= mempty)+                     <*> (o .:? "dateTimeRenderOption")+                     <*> (o .:? "majorDimension"))++instance ToJSON BatchGetValuesByDataFilterRequest+         where+        toJSON BatchGetValuesByDataFilterRequest'{..}+          = object+              (catMaybes+                 [("valueRenderOption" .=) <$>+                    _bgvbdfrValueRenderOption,+                  ("dataFilters" .=) <$> _bgvbdfrDataFilters,+                  ("dateTimeRenderOption" .=) <$>+                    _bgvbdfrDateTimeRenderOption,+                  ("majorDimension" .=) <$> _bgvbdfrMajorDimension])++-- | 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 custom subtotal column for a waterfall chart series.+--+-- /See:/ 'waterfallChartCustomSubtotal' smart constructor.+data WaterfallChartCustomSubtotal =+  WaterfallChartCustomSubtotal'+    { _wccsDataIsSubtotal :: !(Maybe Bool)+    , _wccsSubtotalIndex  :: !(Maybe (Textual Int32))+    , _wccsLabel          :: !(Maybe Text)+    }+  deriving (Eq, Show, Data, Typeable, Generic)+++-- | Creates a value of 'WaterfallChartCustomSubtotal' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'wccsDataIsSubtotal'+--+-- * 'wccsSubtotalIndex'+--+-- * 'wccsLabel'+waterfallChartCustomSubtotal+    :: WaterfallChartCustomSubtotal+waterfallChartCustomSubtotal =+  WaterfallChartCustomSubtotal'+    { _wccsDataIsSubtotal = Nothing+    , _wccsSubtotalIndex = Nothing+    , _wccsLabel = Nothing+    }+++-- | True if the data point at subtotal_index is the subtotal. If false, the+-- subtotal will be computed and appear after the data point.+wccsDataIsSubtotal :: Lens' WaterfallChartCustomSubtotal (Maybe Bool)+wccsDataIsSubtotal+  = lens _wccsDataIsSubtotal+      (\ s a -> s{_wccsDataIsSubtotal = a})++-- | The 0-based index of a data point within the series. If data_is_subtotal+-- is true, the data point at this index is the subtotal. Otherwise, the+-- subtotal appears after the data point with this index. A series can have+-- multiple subtotals at arbitrary indices, but subtotals do not affect the+-- indices of the data points. For example, if a series has three data+-- points, their indices will always be 0, 1, and 2, regardless of how many+-- subtotals exist on the series or what data points they are associated+-- with.+wccsSubtotalIndex :: Lens' WaterfallChartCustomSubtotal (Maybe Int32)+wccsSubtotalIndex+  = lens _wccsSubtotalIndex+      (\ s a -> s{_wccsSubtotalIndex = a})+      . mapping _Coerce++-- | A label for the subtotal column.+wccsLabel :: Lens' WaterfallChartCustomSubtotal (Maybe Text)+wccsLabel+  = lens _wccsLabel (\ s a -> s{_wccsLabel = a})++instance FromJSON WaterfallChartCustomSubtotal where+        parseJSON+          = withObject "WaterfallChartCustomSubtotal"+              (\ o ->+                 WaterfallChartCustomSubtotal' <$>+                   (o .:? "dataIsSubtotal") <*> (o .:? "subtotalIndex")+                     <*> (o .:? "label"))++instance ToJSON WaterfallChartCustomSubtotal where+        toJSON WaterfallChartCustomSubtotal'{..}+          = object+              (catMaybes+                 [("dataIsSubtotal" .=) <$> _wccsDataIsSubtotal,+                  ("subtotalIndex" .=) <$> _wccsSubtotalIndex,+                  ("label" .=) <$> _wccsLabel])++-- | A single response from an update.+--+-- /See:/ 'response' smart constructor.+data Response =+  Response'+    { _rAddFilterView                :: !(Maybe AddFilterViewResponse)+    , _rCreateDeveloperMetadata      :: !(Maybe CreateDeveloperMetadataResponse)+    , _rDuplicateFilterView          :: !(Maybe DuplicateFilterViewResponse)+    , _rUpdateEmbeddedObjectPosition :: !(Maybe UpdateEmbeddedObjectPositionResponse)+    , _rDeleteDimensionGroup         :: !(Maybe DeleteDimensionGroupResponse)+    , _rAddSheet                     :: !(Maybe AddSheetResponse)+    , _rFindReplace                  :: !(Maybe FindReplaceResponse)+    , _rAddProtectedRange            :: !(Maybe AddProtectedRangeResponse)+    , _rDeleteConditionalFormatRule  :: !(Maybe DeleteConditionalFormatRuleResponse)+    , _rUpdateConditionalFormatRule  :: !(Maybe UpdateConditionalFormatRuleResponse)+    , _rDeleteDeveloperMetadata      :: !(Maybe DeleteDeveloperMetadataResponse)+    , _rUpdateDeveloperMetadata      :: !(Maybe UpdateDeveloperMetadataResponse)+    , _rAddNamedRange                :: !(Maybe AddNamedRangeResponse)+    , _rAddChart                     :: !(Maybe AddChartResponse)+    , _rAddBanding                   :: !(Maybe AddBandingResponse)+    , _rDuplicateSheet               :: !(Maybe DuplicateSheetResponse)+    , _rAddDimensionGroup            :: !(Maybe AddDimensionGroupResponse)+    }+  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'+--+-- * 'rCreateDeveloperMetadata'+--+-- * 'rDuplicateFilterView'+--+-- * 'rUpdateEmbeddedObjectPosition'+--+-- * 'rDeleteDimensionGroup'+--+-- * 'rAddSheet'+--+-- * 'rFindReplace'+--+-- * 'rAddProtectedRange'+--+-- * 'rDeleteConditionalFormatRule'+--+-- * 'rUpdateConditionalFormatRule'+--+-- * 'rDeleteDeveloperMetadata'+--+-- * 'rUpdateDeveloperMetadata'+--+-- * 'rAddNamedRange'+--+-- * 'rAddChart'+--+-- * 'rAddBanding'+--+-- * 'rDuplicateSheet'+--+-- * 'rAddDimensionGroup'+response+    :: Response+response =+  Response'+    { _rAddFilterView = Nothing+    , _rCreateDeveloperMetadata = Nothing+    , _rDuplicateFilterView = Nothing+    , _rUpdateEmbeddedObjectPosition = Nothing+    , _rDeleteDimensionGroup = Nothing+    , _rAddSheet = Nothing+    , _rFindReplace = Nothing+    , _rAddProtectedRange = Nothing+    , _rDeleteConditionalFormatRule = Nothing+    , _rUpdateConditionalFormatRule = Nothing+    , _rDeleteDeveloperMetadata = Nothing+    , _rUpdateDeveloperMetadata = Nothing+    , _rAddNamedRange = Nothing+    , _rAddChart = Nothing+    , _rAddBanding = Nothing+    , _rDuplicateSheet = Nothing+    , _rAddDimensionGroup = Nothing+    }+++-- | A reply from adding a filter view.+rAddFilterView :: Lens' Response (Maybe AddFilterViewResponse)+rAddFilterView+  = lens _rAddFilterView+      (\ s a -> s{_rAddFilterView = a})++-- | A reply from creating a developer metadata entry.+rCreateDeveloperMetadata :: Lens' Response (Maybe CreateDeveloperMetadataResponse)+rCreateDeveloperMetadata+  = lens _rCreateDeveloperMetadata+      (\ s a -> s{_rCreateDeveloperMetadata = 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 deleting a dimension group.+rDeleteDimensionGroup :: Lens' Response (Maybe DeleteDimensionGroupResponse)+rDeleteDimensionGroup+  = lens _rDeleteDimensionGroup+      (\ s a -> s{_rDeleteDimensionGroup = 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 deleting a developer metadata entry.+rDeleteDeveloperMetadata :: Lens' Response (Maybe DeleteDeveloperMetadataResponse)+rDeleteDeveloperMetadata+  = lens _rDeleteDeveloperMetadata+      (\ s a -> s{_rDeleteDeveloperMetadata = a})++-- | A reply from updating a developer metadata entry.+rUpdateDeveloperMetadata :: Lens' Response (Maybe UpdateDeveloperMetadataResponse)+rUpdateDeveloperMetadata+  = lens _rUpdateDeveloperMetadata+      (\ s a -> s{_rUpdateDeveloperMetadata = 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 adding a banded range.+rAddBanding :: Lens' Response (Maybe AddBandingResponse)+rAddBanding+  = lens _rAddBanding (\ s a -> s{_rAddBanding = a})++-- | A reply from duplicating a sheet.+rDuplicateSheet :: Lens' Response (Maybe DuplicateSheetResponse)+rDuplicateSheet+  = lens _rDuplicateSheet+      (\ s a -> s{_rDuplicateSheet = a})++-- | A reply from adding a dimension group.+rAddDimensionGroup :: Lens' Response (Maybe AddDimensionGroupResponse)+rAddDimensionGroup+  = lens _rAddDimensionGroup+      (\ s a -> s{_rAddDimensionGroup = a})++instance FromJSON Response where+        parseJSON+          = withObject "Response"+              (\ o ->+                 Response' <$>+                   (o .:? "addFilterView") <*>+                     (o .:? "createDeveloperMetadata")+                     <*> (o .:? "duplicateFilterView")+                     <*> (o .:? "updateEmbeddedObjectPosition")+                     <*> (o .:? "deleteDimensionGroup")+                     <*> (o .:? "addSheet")+                     <*> (o .:? "findReplace")+                     <*> (o .:? "addProtectedRange")+                     <*> (o .:? "deleteConditionalFormatRule")+                     <*> (o .:? "updateConditionalFormatRule")+                     <*> (o .:? "deleteDeveloperMetadata")+                     <*> (o .:? "updateDeveloperMetadata")+                     <*> (o .:? "addNamedRange")+                     <*> (o .:? "addChart")+                     <*> (o .:? "addBanding")+                     <*> (o .:? "duplicateSheet")+                     <*> (o .:? "addDimensionGroup"))++instance ToJSON Response where+        toJSON Response'{..}+          = object+              (catMaybes+                 [("addFilterView" .=) <$> _rAddFilterView,+                  ("createDeveloperMetadata" .=) <$>+                    _rCreateDeveloperMetadata,+                  ("duplicateFilterView" .=) <$> _rDuplicateFilterView,+                  ("updateEmbeddedObjectPosition" .=) <$>+                    _rUpdateEmbeddedObjectPosition,+                  ("deleteDimensionGroup" .=) <$>+                    _rDeleteDimensionGroup,+                  ("addSheet" .=) <$> _rAddSheet,+                  ("findReplace" .=) <$> _rFindReplace,+                  ("addProtectedRange" .=) <$> _rAddProtectedRange,+                  ("deleteConditionalFormatRule" .=) <$>+                    _rDeleteConditionalFormatRule,+                  ("updateConditionalFormatRule" .=) <$>+                    _rUpdateConditionalFormatRule,+                  ("deleteDeveloperMetadata" .=) <$>+                    _rDeleteDeveloperMetadata,+                  ("updateDeveloperMetadata" .=) <$>+                    _rUpdateDeveloperMetadata,+                  ("addNamedRange" .=) <$> _rAddNamedRange,+                  ("addChart" .=) <$> _rAddChart,+                  ("addBanding" .=) <$> _rAddBanding,+                  ("duplicateSheet" .=) <$> _rDuplicateSheet,+                  ("addDimensionGroup" .=) <$> _rAddDimensionGroup])++-- | 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])++-- | A request to update properties of developer metadata. Updates the+-- properties of the developer metadata selected by the filters to the+-- values provided in the DeveloperMetadata resource. Callers must specify+-- the properties they wish to update in the fields parameter, as well as+-- specify at least one DataFilter matching the metadata they wish to+-- update.+--+-- /See:/ 'updateDeveloperMetadataRequest' smart constructor.+data UpdateDeveloperMetadataRequest =+  UpdateDeveloperMetadataRequest'+    { _udmrDataFilters       :: !(Maybe [DataFilter])+    , _udmrDeveloperMetadata :: !(Maybe DeveloperMetadata)+    , _udmrFields            :: !(Maybe GFieldMask)+    }+  deriving (Eq, Show, Data, Typeable, Generic)+++-- | Creates a value of 'UpdateDeveloperMetadataRequest' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'udmrDataFilters'+--+-- * 'udmrDeveloperMetadata'+--+-- * 'udmrFields'+updateDeveloperMetadataRequest+    :: UpdateDeveloperMetadataRequest+updateDeveloperMetadataRequest =+  UpdateDeveloperMetadataRequest'+    { _udmrDataFilters = Nothing+    , _udmrDeveloperMetadata = Nothing+    , _udmrFields = Nothing+    }+++-- | The filters matching the developer metadata entries to update.+udmrDataFilters :: Lens' UpdateDeveloperMetadataRequest [DataFilter]+udmrDataFilters+  = lens _udmrDataFilters+      (\ s a -> s{_udmrDataFilters = a})+      . _Default+      . _Coerce++-- | The value that all metadata matched by the data filters will be updated+-- to.+udmrDeveloperMetadata :: Lens' UpdateDeveloperMetadataRequest (Maybe DeveloperMetadata)+udmrDeveloperMetadata+  = lens _udmrDeveloperMetadata+      (\ s a -> s{_udmrDeveloperMetadata = a})++-- | The fields that should be updated. At least one field must be specified.+-- The root \`developerMetadata\` is implied and should not be specified. A+-- single \`\"*\"\` can be used as short-hand for listing every field.+udmrFields :: Lens' UpdateDeveloperMetadataRequest (Maybe GFieldMask)+udmrFields+  = lens _udmrFields (\ s a -> s{_udmrFields = a})++instance FromJSON UpdateDeveloperMetadataRequest+         where+        parseJSON+          = withObject "UpdateDeveloperMetadataRequest"+              (\ o ->+                 UpdateDeveloperMetadataRequest' <$>+                   (o .:? "dataFilters" .!= mempty) <*>+                     (o .:? "developerMetadata")+                     <*> (o .:? "fields"))++instance ToJSON UpdateDeveloperMetadataRequest where+        toJSON UpdateDeveloperMetadataRequest'{..}+          = object+              (catMaybes+                 [("dataFilters" .=) <$> _udmrDataFilters,+                  ("developerMetadata" .=) <$> _udmrDeveloperMetadata,+                  ("fields" .=) <$> _udmrFields])++-- | A request to delete developer metadata.+--+-- /See:/ 'deleteDeveloperMetadataRequest' smart constructor.+newtype DeleteDeveloperMetadataRequest =+  DeleteDeveloperMetadataRequest'+    { _ddmrDataFilter :: Maybe DataFilter+    }+  deriving (Eq, Show, Data, Typeable, Generic)+++-- | Creates a value of 'DeleteDeveloperMetadataRequest' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'ddmrDataFilter'+deleteDeveloperMetadataRequest+    :: DeleteDeveloperMetadataRequest+deleteDeveloperMetadataRequest =+  DeleteDeveloperMetadataRequest' {_ddmrDataFilter = Nothing}+++-- | The data filter describing the criteria used to select which developer+-- metadata entry to delete.+ddmrDataFilter :: Lens' DeleteDeveloperMetadataRequest (Maybe DataFilter)+ddmrDataFilter+  = lens _ddmrDataFilter+      (\ s a -> s{_ddmrDataFilter = a})++instance FromJSON DeleteDeveloperMetadataRequest+         where+        parseJSON+          = withObject "DeleteDeveloperMetadataRequest"+              (\ o ->+                 DeleteDeveloperMetadataRequest' <$>+                   (o .:? "dataFilter"))++instance ToJSON DeleteDeveloperMetadataRequest where+        toJSON DeleteDeveloperMetadataRequest'{..}+          = object+              (catMaybes [("dataFilter" .=) <$> _ddmrDataFilter])++-- | A waterfall chart.+--+-- /See:/ 'waterfallChartSpec' smart constructor.+data WaterfallChartSpec =+  WaterfallChartSpec'+    { _wcsStackedType        :: !(Maybe WaterfallChartSpecStackedType)+    , _wcsConnectorLineStyle :: !(Maybe LineStyle)+    , _wcsDomain             :: !(Maybe WaterfallChartDomain)+    , _wcsSeries             :: !(Maybe [WaterfallChartSeries])+    , _wcsHideConnectorLines :: !(Maybe Bool)+    , _wcsFirstValueIsTotal  :: !(Maybe Bool)+    }+  deriving (Eq, Show, Data, Typeable, Generic)+++-- | Creates a value of 'WaterfallChartSpec' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'wcsStackedType'+--+-- * 'wcsConnectorLineStyle'+--+-- * 'wcsDomain'+--+-- * 'wcsSeries'+--+-- * 'wcsHideConnectorLines'+--+-- * 'wcsFirstValueIsTotal'+waterfallChartSpec+    :: WaterfallChartSpec+waterfallChartSpec =+  WaterfallChartSpec'+    { _wcsStackedType = Nothing+    , _wcsConnectorLineStyle = Nothing+    , _wcsDomain = Nothing+    , _wcsSeries = Nothing+    , _wcsHideConnectorLines = Nothing+    , _wcsFirstValueIsTotal = Nothing+    }+++-- | The stacked type.+wcsStackedType :: Lens' WaterfallChartSpec (Maybe WaterfallChartSpecStackedType)+wcsStackedType+  = lens _wcsStackedType+      (\ s a -> s{_wcsStackedType = a})++-- | The line style for the connector lines.+wcsConnectorLineStyle :: Lens' WaterfallChartSpec (Maybe LineStyle)+wcsConnectorLineStyle+  = lens _wcsConnectorLineStyle+      (\ s a -> s{_wcsConnectorLineStyle = a})++-- | The domain data (horizontal axis) for the waterfall chart.+wcsDomain :: Lens' WaterfallChartSpec (Maybe WaterfallChartDomain)+wcsDomain+  = lens _wcsDomain (\ s a -> s{_wcsDomain = a})++-- | The data this waterfall chart is visualizing.+wcsSeries :: Lens' WaterfallChartSpec [WaterfallChartSeries]+wcsSeries+  = lens _wcsSeries (\ s a -> s{_wcsSeries = a}) .+      _Default+      . _Coerce++-- | True to hide connector lines between columns.+wcsHideConnectorLines :: Lens' WaterfallChartSpec (Maybe Bool)+wcsHideConnectorLines+  = lens _wcsHideConnectorLines+      (\ s a -> s{_wcsHideConnectorLines = a})++-- | True to interpret the first value as a total.+wcsFirstValueIsTotal :: Lens' WaterfallChartSpec (Maybe Bool)+wcsFirstValueIsTotal+  = lens _wcsFirstValueIsTotal+      (\ s a -> s{_wcsFirstValueIsTotal = a})++instance FromJSON WaterfallChartSpec where+        parseJSON+          = withObject "WaterfallChartSpec"+              (\ o ->+                 WaterfallChartSpec' <$>+                   (o .:? "stackedType") <*>+                     (o .:? "connectorLineStyle")+                     <*> (o .:? "domain")+                     <*> (o .:? "series" .!= mempty)+                     <*> (o .:? "hideConnectorLines")+                     <*> (o .:? "firstValueIsTotal"))++instance ToJSON WaterfallChartSpec where+        toJSON WaterfallChartSpec'{..}+          = object+              (catMaybes+                 [("stackedType" .=) <$> _wcsStackedType,+                  ("connectorLineStyle" .=) <$> _wcsConnectorLineStyle,+                  ("domain" .=) <$> _wcsDomain,+                  ("series" .=) <$> _wcsSeries,+                  ("hideConnectorLines" .=) <$> _wcsHideConnectorLines,+                  ("firstValueIsTotal" .=) <$> _wcsFirstValueIsTotal])++-- | 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])++-- | A location where metadata may be associated in a spreadsheet.+--+-- /See:/ 'developerMetadataLocation' smart constructor.+data DeveloperMetadataLocation =+  DeveloperMetadataLocation'+    { _dmlSpreadsheet    :: !(Maybe Bool)+    , _dmlDimensionRange :: !(Maybe DimensionRange)+    , _dmlSheetId        :: !(Maybe (Textual Int32))+    , _dmlLocationType   :: !(Maybe DeveloperMetadataLocationLocationType)+    }+  deriving (Eq, Show, Data, Typeable, Generic)+++-- | Creates a value of 'DeveloperMetadataLocation' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'dmlSpreadsheet'+--+-- * 'dmlDimensionRange'+--+-- * 'dmlSheetId'+--+-- * 'dmlLocationType'+developerMetadataLocation+    :: DeveloperMetadataLocation+developerMetadataLocation =+  DeveloperMetadataLocation'+    { _dmlSpreadsheet = Nothing+    , _dmlDimensionRange = Nothing+    , _dmlSheetId = Nothing+    , _dmlLocationType = Nothing+    }+++-- | True when metadata is associated with an entire spreadsheet.+dmlSpreadsheet :: Lens' DeveloperMetadataLocation (Maybe Bool)+dmlSpreadsheet+  = lens _dmlSpreadsheet+      (\ s a -> s{_dmlSpreadsheet = a})++-- | Represents the row or column when metadata is associated with a+-- dimension. The specified DimensionRange must represent a single row or+-- column; it cannot be unbounded or span multiple rows or columns.+dmlDimensionRange :: Lens' DeveloperMetadataLocation (Maybe DimensionRange)+dmlDimensionRange+  = lens _dmlDimensionRange+      (\ s a -> s{_dmlDimensionRange = a})++-- | The ID of the sheet when metadata is associated with an entire sheet.+dmlSheetId :: Lens' DeveloperMetadataLocation (Maybe Int32)+dmlSheetId+  = lens _dmlSheetId (\ s a -> s{_dmlSheetId = a}) .+      mapping _Coerce++-- | The type of location this object represents. This field is read-only.+dmlLocationType :: Lens' DeveloperMetadataLocation (Maybe DeveloperMetadataLocationLocationType)+dmlLocationType+  = lens _dmlLocationType+      (\ s a -> s{_dmlLocationType = a})++instance FromJSON DeveloperMetadataLocation where+        parseJSON+          = withObject "DeveloperMetadataLocation"+              (\ o ->+                 DeveloperMetadataLocation' <$>+                   (o .:? "spreadsheet") <*> (o .:? "dimensionRange")+                     <*> (o .:? "sheetId")+                     <*> (o .:? "locationType"))++instance ToJSON DeveloperMetadataLocation where+        toJSON DeveloperMetadataLocation'{..}+          = object+              (catMaybes+                 [("spreadsheet" .=) <$> _dmlSpreadsheet,+                  ("dimensionRange" .=) <$> _dmlDimensionRange,+                  ("sheetId" .=) <$> _dmlSheetId,+                  ("locationType" .=) <$> _dmlLocationType])++-- | 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 is added or+-- moved to the end of the sheet list. When updating sheet indices or+-- inserting sheets, movement is considered in \"before the move\" indexes.+-- For example, if there were 3 sheets (S1, S2, S3) in order to move S1+-- ahead of S2 the index would have to be set to 2. A sheet index update+-- request is ignored if the requested index is identical to the sheets+-- current index or if the requested new index is equal to the current+-- sheet index + 1.+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 GFieldMask)+    , _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 GFieldMask)+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)+    , _sprSpreadsheetURL    :: !(Maybe Text)+    , _sprDeveloperMetadata :: !(Maybe [DeveloperMetadata])+    , _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'+--+-- * 'sprSpreadsheetURL'+--+-- * 'sprDeveloperMetadata'+--+-- * 'sprProperties'+spreadsheet+    :: Spreadsheet+spreadsheet =+  Spreadsheet'+    { _sprSheets = Nothing+    , _sprNamedRanges = Nothing+    , _sprSpreadsheetId = Nothing+    , _sprSpreadsheetURL = Nothing+    , _sprDeveloperMetadata = 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})++-- | The url of the spreadsheet. This field is read-only.+sprSpreadsheetURL :: Lens' Spreadsheet (Maybe Text)+sprSpreadsheetURL+  = lens _sprSpreadsheetURL+      (\ s a -> s{_sprSpreadsheetURL = a})++-- | The developer metadata associated with a spreadsheet.+sprDeveloperMetadata :: Lens' Spreadsheet [DeveloperMetadata]+sprDeveloperMetadata+  = lens _sprDeveloperMetadata+      (\ s a -> s{_sprDeveloperMetadata = a})+      . _Default+      . _Coerce++-- | 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 .:? "spreadsheetUrl")+                     <*> (o .:? "developerMetadata" .!= mempty)+                     <*> (o .:? "properties"))++instance ToJSON Spreadsheet where+        toJSON Spreadsheet'{..}+          = object+              (catMaybes+                 [("sheets" .=) <$> _sprSheets,+                  ("namedRanges" .=) <$> _sprNamedRanges,+                  ("spreadsheetId" .=) <$> _sprSpreadsheetId,+                  ("spreadsheetUrl" .=) <$> _sprSpreadsheetURL,+                  ("developerMetadata" .=) <$> _sprDeveloperMetadata,+                  ("properties" .=) <$> _sprProperties])++-- | A </chart/interactive/docs/gallery/candlestickchart candlestick chart>.+--+-- /See:/ 'candlestickChartSpec' smart constructor.+data CandlestickChartSpec =+  CandlestickChartSpec'+    { _ccsData   :: !(Maybe [CandlestickData])+    , _ccsDomain :: !(Maybe CandlestickDomain)+    }+  deriving (Eq, Show, Data, Typeable, Generic)+++-- | Creates a value of 'CandlestickChartSpec' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'ccsData'+--+-- * 'ccsDomain'+candlestickChartSpec+    :: CandlestickChartSpec+candlestickChartSpec =+  CandlestickChartSpec' {_ccsData = Nothing, _ccsDomain = Nothing}+++-- | The Candlestick chart data. Only one CandlestickData is supported.+ccsData :: Lens' CandlestickChartSpec [CandlestickData]+ccsData+  = lens _ccsData (\ s a -> s{_ccsData = a}) . _Default+      . _Coerce++-- | The domain data (horizontal axis) for the candlestick chart. String data+-- will be treated as discrete labels, other data will be treated as+-- continuous values.+ccsDomain :: Lens' CandlestickChartSpec (Maybe CandlestickDomain)+ccsDomain+  = lens _ccsDomain (\ s a -> s{_ccsDomain = a})++instance FromJSON CandlestickChartSpec where+        parseJSON+          = withObject "CandlestickChartSpec"+              (\ o ->+                 CandlestickChartSpec' <$>+                   (o .:? "data" .!= mempty) <*> (o .:? "domain"))++instance ToJSON CandlestickChartSpec where+        toJSON CandlestickChartSpec'{..}+          = object+              (catMaybes+                 [("data" .=) <$> _ccsData,+                  ("domain" .=) <$> _ccsDomain])++-- | 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 reply to a developer metadata search request.+--+-- /See:/ 'searchDeveloperMetadataResponse' smart constructor.+newtype SearchDeveloperMetadataResponse =+  SearchDeveloperMetadataResponse'+    { _sdmrMatchedDeveloperMetadata :: Maybe [MatchedDeveloperMetadata]+    }+  deriving (Eq, Show, Data, Typeable, Generic)+++-- | Creates a value of 'SearchDeveloperMetadataResponse' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'sdmrMatchedDeveloperMetadata'+searchDeveloperMetadataResponse+    :: SearchDeveloperMetadataResponse+searchDeveloperMetadataResponse =+  SearchDeveloperMetadataResponse' {_sdmrMatchedDeveloperMetadata = Nothing}+++-- | The metadata matching the criteria of the search request.+sdmrMatchedDeveloperMetadata :: Lens' SearchDeveloperMetadataResponse [MatchedDeveloperMetadata]+sdmrMatchedDeveloperMetadata+  = lens _sdmrMatchedDeveloperMetadata+      (\ s a -> s{_sdmrMatchedDeveloperMetadata = a})+      . _Default+      . _Coerce++instance FromJSON SearchDeveloperMetadataResponse+         where+        parseJSON+          = withObject "SearchDeveloperMetadataResponse"+              (\ o ->+                 SearchDeveloperMetadataResponse' <$>+                   (o .:? "matchedDeveloperMetadata" .!= mempty))++instance ToJSON SearchDeveloperMetadataResponse where+        toJSON SearchDeveloperMetadataResponse'{..}+          = object+              (catMaybes+                 [("matchedDeveloperMetadata" .=) <$>+                    _sdmrMatchedDeveloperMetadata])++-- | 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 are 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 in the+-- userEnteredValue.formulaValue field.)+cdHyperlink :: Lens' CellData (Maybe Text)+cdHyperlink+  = lens _cdHyperlink (\ s a -> s{_cdHyperlink = a})++-- | The effective value of the cell. For cells with formulas, this is the+-- calculated value. For cells with literals, this is 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 in order and+-- 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 domain of a waterfall chart.+--+-- /See:/ 'waterfallChartDomain' smart constructor.+data WaterfallChartDomain =+  WaterfallChartDomain'+    { _wcdReversed :: !(Maybe Bool)+    , _wcdData     :: !(Maybe ChartData)+    }+  deriving (Eq, Show, Data, Typeable, Generic)+++-- | Creates a value of 'WaterfallChartDomain' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'wcdReversed'+--+-- * 'wcdData'+waterfallChartDomain+    :: WaterfallChartDomain+waterfallChartDomain =+  WaterfallChartDomain' {_wcdReversed = Nothing, _wcdData = Nothing}+++-- | True to reverse the order of the domain values (horizontal axis).+wcdReversed :: Lens' WaterfallChartDomain (Maybe Bool)+wcdReversed+  = lens _wcdReversed (\ s a -> s{_wcdReversed = a})++-- | The data of the WaterfallChartDomain.+wcdData :: Lens' WaterfallChartDomain (Maybe ChartData)+wcdData = lens _wcdData (\ s a -> s{_wcdData = a})++instance FromJSON WaterfallChartDomain where+        parseJSON+          = withObject "WaterfallChartDomain"+              (\ o ->+                 WaterfallChartDomain' <$>+                   (o .:? "reversed") <*> (o .:? "data"))++instance ToJSON WaterfallChartDomain where+        toJSON WaterfallChartDomain'{..}+          = object+              (catMaybes+                 [("reversed" .=) <$> _wcdReversed,+                  ("data" .=) <$> _wcdData])++-- | 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])++-- | Settings to control how circular dependencies are resolved with+-- iterative calculation.+--+-- /See:/ 'iterativeCalculationSettings' smart constructor.+data IterativeCalculationSettings =+  IterativeCalculationSettings'+    { _icsMaxIterations        :: !(Maybe (Textual Int32))+    , _icsConvergenceThreshold :: !(Maybe (Textual Double))+    }+  deriving (Eq, Show, Data, Typeable, Generic)+++-- | Creates a value of 'IterativeCalculationSettings' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'icsMaxIterations'+--+-- * 'icsConvergenceThreshold'+iterativeCalculationSettings+    :: IterativeCalculationSettings+iterativeCalculationSettings =+  IterativeCalculationSettings'+    {_icsMaxIterations = Nothing, _icsConvergenceThreshold = Nothing}+++-- | When iterative calculation is enabled, the maximum number of calculation+-- rounds to perform.+icsMaxIterations :: Lens' IterativeCalculationSettings (Maybe Int32)+icsMaxIterations+  = lens _icsMaxIterations+      (\ s a -> s{_icsMaxIterations = a})+      . mapping _Coerce++-- | When iterative calculation is enabled and successive results differ by+-- less than this threshold value, the calculation rounds stop.+icsConvergenceThreshold :: Lens' IterativeCalculationSettings (Maybe Double)+icsConvergenceThreshold+  = lens _icsConvergenceThreshold+      (\ s a -> s{_icsConvergenceThreshold = a})+      . mapping _Coerce++instance FromJSON IterativeCalculationSettings where+        parseJSON+          = withObject "IterativeCalculationSettings"+              (\ o ->+                 IterativeCalculationSettings' <$>+                   (o .:? "maxIterations") <*>+                     (o .:? "convergenceThreshold"))++instance ToJSON IterativeCalculationSettings where+        toJSON IterativeCalculationSettings'{..}+          = object+              (catMaybes+                 [("maxIterations" .=) <$> _icsMaxIterations,+                  ("convergenceThreshold" .=) <$>+                    _icsConvergenceThreshold])++-- | The response when updating a range of values by a data filter in a+-- spreadsheet.+--+-- /See:/ 'updateValuesByDataFilterResponse' smart constructor.+data UpdateValuesByDataFilterResponse =+  UpdateValuesByDataFilterResponse'+    { _uvbdfrUpdatedCells   :: !(Maybe (Textual Int32))+    , _uvbdfrUpdatedRows    :: !(Maybe (Textual Int32))+    , _uvbdfrUpdatedRange   :: !(Maybe Text)+    , _uvbdfrUpdatedData    :: !(Maybe ValueRange)+    , _uvbdfrUpdatedColumns :: !(Maybe (Textual Int32))+    , _uvbdfrDataFilter     :: !(Maybe DataFilter)+    }+  deriving (Eq, Show, Data, Typeable, Generic)+++-- | Creates a value of 'UpdateValuesByDataFilterResponse' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'uvbdfrUpdatedCells'+--+-- * 'uvbdfrUpdatedRows'+--+-- * 'uvbdfrUpdatedRange'+--+-- * 'uvbdfrUpdatedData'+--+-- * 'uvbdfrUpdatedColumns'+--+-- * 'uvbdfrDataFilter'+updateValuesByDataFilterResponse+    :: UpdateValuesByDataFilterResponse+updateValuesByDataFilterResponse =+  UpdateValuesByDataFilterResponse'+    { _uvbdfrUpdatedCells = Nothing+    , _uvbdfrUpdatedRows = Nothing+    , _uvbdfrUpdatedRange = Nothing+    , _uvbdfrUpdatedData = Nothing+    , _uvbdfrUpdatedColumns = Nothing+    , _uvbdfrDataFilter = Nothing+    }+++-- | The number of cells updated.+uvbdfrUpdatedCells :: Lens' UpdateValuesByDataFilterResponse (Maybe Int32)+uvbdfrUpdatedCells+  = lens _uvbdfrUpdatedCells+      (\ s a -> s{_uvbdfrUpdatedCells = a})+      . mapping _Coerce++-- | The number of rows where at least one cell in the row was updated.+uvbdfrUpdatedRows :: Lens' UpdateValuesByDataFilterResponse (Maybe Int32)+uvbdfrUpdatedRows+  = lens _uvbdfrUpdatedRows+      (\ s a -> s{_uvbdfrUpdatedRows = a})+      . mapping _Coerce++-- | The range (in A1 notation) that updates were applied to.+uvbdfrUpdatedRange :: Lens' UpdateValuesByDataFilterResponse (Maybe Text)+uvbdfrUpdatedRange+  = lens _uvbdfrUpdatedRange+      (\ s a -> s{_uvbdfrUpdatedRange = a})++-- | The values of the cells in the range matched by the dataFilter after all+-- updates were applied. This is only included if the request\'s+-- \`includeValuesInResponse\` field was \`true\`.+uvbdfrUpdatedData :: Lens' UpdateValuesByDataFilterResponse (Maybe ValueRange)+uvbdfrUpdatedData+  = lens _uvbdfrUpdatedData+      (\ s a -> s{_uvbdfrUpdatedData = a})++-- | The number of columns where at least one cell in the column was updated.+uvbdfrUpdatedColumns :: Lens' UpdateValuesByDataFilterResponse (Maybe Int32)+uvbdfrUpdatedColumns+  = lens _uvbdfrUpdatedColumns+      (\ s a -> s{_uvbdfrUpdatedColumns = a})+      . mapping _Coerce++-- | The data filter that selected the range that was updated.+uvbdfrDataFilter :: Lens' UpdateValuesByDataFilterResponse (Maybe DataFilter)+uvbdfrDataFilter+  = lens _uvbdfrDataFilter+      (\ s a -> s{_uvbdfrDataFilter = a})++instance FromJSON UpdateValuesByDataFilterResponse+         where+        parseJSON+          = withObject "UpdateValuesByDataFilterResponse"+              (\ o ->+                 UpdateValuesByDataFilterResponse' <$>+                   (o .:? "updatedCells") <*> (o .:? "updatedRows") <*>+                     (o .:? "updatedRange")+                     <*> (o .:? "updatedData")+                     <*> (o .:? "updatedColumns")+                     <*> (o .:? "dataFilter"))++instance ToJSON UpdateValuesByDataFilterResponse+         where+        toJSON UpdateValuesByDataFilterResponse'{..}+          = object+              (catMaybes+                 [("updatedCells" .=) <$> _uvbdfrUpdatedCells,+                  ("updatedRows" .=) <$> _uvbdfrUpdatedRows,+                  ("updatedRange" .=) <$> _uvbdfrUpdatedRange,+                  ("updatedData" .=) <$> _uvbdfrUpdatedData,+                  ("updatedColumns" .=) <$> _uvbdfrUpdatedColumns,+                  ("dataFilter" .=) <$> _uvbdfrDataFilter])++-- | Properties of a grid.+--+-- /See:/ 'gridProperties' smart constructor.+data GridProperties =+  GridProperties'+    { _gpFrozenColumnCount       :: !(Maybe (Textual Int32))+    , _gpColumnCount             :: !(Maybe (Textual Int32))+    , _gpColumnGroupControlAfter :: !(Maybe Bool)+    , _gpHideGridlines           :: !(Maybe Bool)+    , _gpFrozenRowCount          :: !(Maybe (Textual Int32))+    , _gpRowGroupControlAfter    :: !(Maybe Bool)+    , _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'+--+-- * 'gpColumnGroupControlAfter'+--+-- * 'gpHideGridlines'+--+-- * 'gpFrozenRowCount'+--+-- * 'gpRowGroupControlAfter'+--+-- * 'gpRowCount'+gridProperties+    :: GridProperties+gridProperties =+  GridProperties'+    { _gpFrozenColumnCount = Nothing+    , _gpColumnCount = Nothing+    , _gpColumnGroupControlAfter = Nothing+    , _gpHideGridlines = Nothing+    , _gpFrozenRowCount = Nothing+    , _gpRowGroupControlAfter = 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 column grouping control toggle is shown after the group.+gpColumnGroupControlAfter :: Lens' GridProperties (Maybe Bool)+gpColumnGroupControlAfter+  = lens _gpColumnGroupControlAfter+      (\ s a -> s{_gpColumnGroupControlAfter = a})++-- | 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++-- | True if the row grouping control toggle is shown after the group.+gpRowGroupControlAfter :: Lens' GridProperties (Maybe Bool)+gpRowGroupControlAfter+  = lens _gpRowGroupControlAfter+      (\ s a -> s{_gpRowGroupControlAfter = a})++-- | 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 .:? "columnGroupControlAfter")+                     <*> (o .:? "hideGridlines")+                     <*> (o .:? "frozenRowCount")+                     <*> (o .:? "rowGroupControlAfter")+                     <*> (o .:? "rowCount"))++instance ToJSON GridProperties where+        toJSON GridProperties'{..}+          = object+              (catMaybes+                 [("frozenColumnCount" .=) <$> _gpFrozenColumnCount,+                  ("columnCount" .=) <$> _gpColumnCount,+                  ("columnGroupControlAfter" .=) <$>+                    _gpColumnGroupControlAfter,+                  ("hideGridlines" .=) <$> _gpHideGridlines,+                  ("frozenRowCount" .=) <$> _gpFrozenRowCount,+                  ("rowGroupControlAfter" .=) <$>+                    _gpRowGroupControlAfter,+                  ("rowCount" .=) <$> _gpRowCount])++-- | A </chart/interactive/docs/gallery/histogram histogram chart>. A+-- histogram chart groups data items into bins, displaying each bin as a+-- column of stacked items. Histograms are used to display the distribution+-- of a dataset. Each column of items represents a range into which those+-- items fall. The number of bins can be chosen automatically or specified+-- explicitly.+--+-- /See:/ 'histogramChartSpec' smart constructor.+data HistogramChartSpec =+  HistogramChartSpec'+    { _hcsLegendPosition    :: !(Maybe HistogramChartSpecLegendPosition)+    , _hcsSeries            :: !(Maybe [HistogramSeries])+    , _hcsShowItemDividers  :: !(Maybe Bool)+    , _hcsOutlierPercentile :: !(Maybe (Textual Double))+    , _hcsBucketSize        :: !(Maybe (Textual Double))+    }+  deriving (Eq, Show, Data, Typeable, Generic)+++-- | Creates a value of 'HistogramChartSpec' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'hcsLegendPosition'+--+-- * 'hcsSeries'+--+-- * 'hcsShowItemDividers'+--+-- * 'hcsOutlierPercentile'+--+-- * 'hcsBucketSize'+histogramChartSpec+    :: HistogramChartSpec+histogramChartSpec =+  HistogramChartSpec'+    { _hcsLegendPosition = Nothing+    , _hcsSeries = Nothing+    , _hcsShowItemDividers = Nothing+    , _hcsOutlierPercentile = Nothing+    , _hcsBucketSize = Nothing+    }+++-- | The position of the chart legend.+hcsLegendPosition :: Lens' HistogramChartSpec (Maybe HistogramChartSpecLegendPosition)+hcsLegendPosition+  = lens _hcsLegendPosition+      (\ s a -> s{_hcsLegendPosition = a})++-- | The series for a histogram may be either a single series of values to be+-- bucketed or multiple series, each of the same length, containing the+-- name of the series followed by the values to be bucketed for that+-- series.+hcsSeries :: Lens' HistogramChartSpec [HistogramSeries]+hcsSeries+  = lens _hcsSeries (\ s a -> s{_hcsSeries = a}) .+      _Default+      . _Coerce++-- | Whether horizontal divider lines should be displayed between items in+-- each column.+hcsShowItemDividers :: Lens' HistogramChartSpec (Maybe Bool)+hcsShowItemDividers+  = lens _hcsShowItemDividers+      (\ s a -> s{_hcsShowItemDividers = a})++-- | The outlier percentile is used to ensure that outliers do not adversely+-- affect the calculation of bucket sizes. For example, setting an outlier+-- percentile of 0.05 indicates that the top and bottom 5% of values when+-- calculating buckets. The values are still included in the chart, they+-- will be added to the first or last buckets instead of their own buckets.+-- Must be between 0.0 and 0.5.+hcsOutlierPercentile :: Lens' HistogramChartSpec (Maybe Double)+hcsOutlierPercentile+  = lens _hcsOutlierPercentile+      (\ s a -> s{_hcsOutlierPercentile = a})+      . mapping _Coerce++-- | By default the bucket size (the range of values stacked in a single+-- column) is chosen automatically, but it may be overridden here. E.g., A+-- bucket size of 1.5 results in buckets from 0 - 1.5, 1.5 - 3.0, etc.+-- Cannot be negative. This field is optional.+hcsBucketSize :: Lens' HistogramChartSpec (Maybe Double)+hcsBucketSize+  = lens _hcsBucketSize+      (\ s a -> s{_hcsBucketSize = a})+      . mapping _Coerce++instance FromJSON HistogramChartSpec where+        parseJSON+          = withObject "HistogramChartSpec"+              (\ o ->+                 HistogramChartSpec' <$>+                   (o .:? "legendPosition") <*>+                     (o .:? "series" .!= mempty)+                     <*> (o .:? "showItemDividers")+                     <*> (o .:? "outlierPercentile")+                     <*> (o .:? "bucketSize"))++instance ToJSON HistogramChartSpec where+        toJSON HistogramChartSpec'{..}+          = object+              (catMaybes+                 [("legendPosition" .=) <$> _hcsLegendPosition,+                  ("series" .=) <$> _hcsSeries,+                  ("showItemDividers" .=) <$> _hcsShowItemDividers,+                  ("outlierPercentile" .=) <$> _hcsOutlierPercentile,+                  ("bucketSize" .=) <$> _hcsBucketSize])++-- | 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++-- | Adds a new banded range to the spreadsheet.+--+-- /See:/ 'addBandingRequest' smart constructor.+newtype AddBandingRequest =+  AddBandingRequest'+    { _abrBandedRange :: Maybe BandedRange+    }+  deriving (Eq, Show, Data, Typeable, Generic)+++-- | Creates a value of 'AddBandingRequest' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'abrBandedRange'+addBandingRequest+    :: AddBandingRequest+addBandingRequest = AddBandingRequest' {_abrBandedRange = Nothing}+++-- | The banded range to add. The bandedRangeId field is optional; if one is+-- not set, an id will be randomly generated. (It is an error to specify+-- the ID of a range that already exists.)+abrBandedRange :: Lens' AddBandingRequest (Maybe BandedRange)+abrBandedRange+  = lens _abrBandedRange+      (\ s a -> s{_abrBandedRange = a})++instance FromJSON AddBandingRequest where+        parseJSON+          = withObject "AddBandingRequest"+              (\ o -> AddBandingRequest' <$> (o .:? "bandedRange"))++instance ToJSON AddBandingRequest where+        toJSON AddBandingRequest'{..}+          = object+              (catMaybes [("bandedRange" .=) <$> _abrBandedRange])++-- | Updates properties of dimensions within the specified range.+--+-- /See:/ 'updateDimensionPropertiesRequest' smart constructor.+data UpdateDimensionPropertiesRequest =+  UpdateDimensionPropertiesRequest'+    { _udprRange      :: !(Maybe DimensionRange)+    , _udprFields     :: !(Maybe GFieldMask)+    , _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 GFieldMask)+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 are+-- 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])++-- | Selects DeveloperMetadata that matches all of the specified fields. For+-- example, if only a metadata ID is specified this considers the+-- DeveloperMetadata with that particular unique ID. If a metadata key is+-- specified, this considers all developer metadata with that key. If a+-- key, visibility, and location type are all specified, this considers all+-- developer metadata with that key and visibility that are associated with+-- a location of that type. In general, this selects all DeveloperMetadata+-- that matches the intersection of all the specified fields; any field or+-- combination of fields may be specified.+--+-- /See:/ 'developerMetadataLookup' smart constructor.+data DeveloperMetadataLookup =+  DeveloperMetadataLookup'+    { _dLocationMatchingStrategy :: !(Maybe DeveloperMetadataLookupLocationMatchingStrategy)+    , _dMetadataId               :: !(Maybe (Textual Int32))+    , _dVisibility               :: !(Maybe DeveloperMetadataLookupVisibility)+    , _dMetadataKey              :: !(Maybe Text)+    , _dLocationType             :: !(Maybe DeveloperMetadataLookupLocationType)+    , _dMetadataLocation         :: !(Maybe DeveloperMetadataLocation)+    , _dMetadataValue            :: !(Maybe Text)+    }+  deriving (Eq, Show, Data, Typeable, Generic)+++-- | Creates a value of 'DeveloperMetadataLookup' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'dLocationMatchingStrategy'+--+-- * 'dMetadataId'+--+-- * 'dVisibility'+--+-- * 'dMetadataKey'+--+-- * 'dLocationType'+--+-- * 'dMetadataLocation'+--+-- * 'dMetadataValue'+developerMetadataLookup+    :: DeveloperMetadataLookup+developerMetadataLookup =+  DeveloperMetadataLookup'+    { _dLocationMatchingStrategy = Nothing+    , _dMetadataId = Nothing+    , _dVisibility = Nothing+    , _dMetadataKey = Nothing+    , _dLocationType = Nothing+    , _dMetadataLocation = Nothing+    , _dMetadataValue = Nothing+    }+++-- | Determines how this lookup matches the location. If this field is+-- specified as EXACT, only developer metadata associated on the exact+-- location specified is matched. If this field is specified to+-- INTERSECTING, developer metadata associated on intersecting locations is+-- also matched. If left unspecified, this field assumes a default value of+-- INTERSECTING. If this field is specified, a metadataLocation must also+-- be specified.+dLocationMatchingStrategy :: Lens' DeveloperMetadataLookup (Maybe DeveloperMetadataLookupLocationMatchingStrategy)+dLocationMatchingStrategy+  = lens _dLocationMatchingStrategy+      (\ s a -> s{_dLocationMatchingStrategy = a})++-- | Limits the selected developer metadata to that which has a matching+-- DeveloperMetadata.metadata_id.+dMetadataId :: Lens' DeveloperMetadataLookup (Maybe Int32)+dMetadataId+  = lens _dMetadataId (\ s a -> s{_dMetadataId = a}) .+      mapping _Coerce++-- | Limits the selected developer metadata to that which has a matching+-- DeveloperMetadata.visibility. If left unspecified, all developer+-- metadata visibile to the requesting project is considered.+dVisibility :: Lens' DeveloperMetadataLookup (Maybe DeveloperMetadataLookupVisibility)+dVisibility+  = lens _dVisibility (\ s a -> s{_dVisibility = a})++-- | Limits the selected developer metadata to that which has a matching+-- DeveloperMetadata.metadata_key.+dMetadataKey :: Lens' DeveloperMetadataLookup (Maybe Text)+dMetadataKey+  = lens _dMetadataKey (\ s a -> s{_dMetadataKey = a})++-- | Limits the selected developer metadata to those entries which are+-- associated with locations of the specified type. For example, when this+-- field is specified as ROW this lookup only considers developer metadata+-- associated on rows. If the field is left unspecified, all location types+-- are considered. This field cannot be specified as SPREADSHEET when the+-- locationMatchingStrategy is specified as INTERSECTING or when the+-- metadataLocation is specified as a non-spreadsheet location: spreadsheet+-- metadata cannot intersect any other developer metadata location. This+-- field also must be left unspecified when the locationMatchingStrategy is+-- specified as EXACT.+dLocationType :: Lens' DeveloperMetadataLookup (Maybe DeveloperMetadataLookupLocationType)+dLocationType+  = lens _dLocationType+      (\ s a -> s{_dLocationType = a})++-- | Limits the selected developer metadata to those entries associated with+-- the specified location. This field either matches exact locations or all+-- intersecting locations according the specified locationMatchingStrategy.+dMetadataLocation :: Lens' DeveloperMetadataLookup (Maybe DeveloperMetadataLocation)+dMetadataLocation+  = lens _dMetadataLocation+      (\ s a -> s{_dMetadataLocation = a})++-- | Limits the selected developer metadata to that which has a matching+-- DeveloperMetadata.metadata_value.+dMetadataValue :: Lens' DeveloperMetadataLookup (Maybe Text)+dMetadataValue+  = lens _dMetadataValue+      (\ s a -> s{_dMetadataValue = a})++instance FromJSON DeveloperMetadataLookup where+        parseJSON+          = withObject "DeveloperMetadataLookup"+              (\ o ->+                 DeveloperMetadataLookup' <$>+                   (o .:? "locationMatchingStrategy") <*>+                     (o .:? "metadataId")+                     <*> (o .:? "visibility")+                     <*> (o .:? "metadataKey")+                     <*> (o .:? "locationType")+                     <*> (o .:? "metadataLocation")+                     <*> (o .:? "metadataValue"))++instance ToJSON DeveloperMetadataLookup where+        toJSON DeveloperMetadataLookup'{..}+          = object+              (catMaybes+                 [("locationMatchingStrategy" .=) <$>+                    _dLocationMatchingStrategy,+                  ("metadataId" .=) <$> _dMetadataId,+                  ("visibility" .=) <$> _dVisibility,+                  ("metadataKey" .=) <$> _dMetadataKey,+                  ("locationType" .=) <$> _dLocationType,+                  ("metadataLocation" .=) <$> _dMetadataLocation,+                  ("metadataValue" .=) <$> _dMetadataValue])++-- | 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 rotation applied to text in a cell.+--+-- /See:/ 'textRotation' smart constructor.+data TextRotation =+  TextRotation'+    { _trAngle    :: !(Maybe (Textual Int32))+    , _trVertical :: !(Maybe Bool)+    }+  deriving (Eq, Show, Data, Typeable, Generic)+++-- | Creates a value of 'TextRotation' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'trAngle'+--+-- * 'trVertical'+textRotation+    :: TextRotation+textRotation = TextRotation' {_trAngle = Nothing, _trVertical = Nothing}+++-- | The angle between the standard orientation and the desired orientation.+-- Measured in degrees. Valid values are between -90 and 90. Positive+-- angles are angled upwards, negative are angled downwards. Note: For LTR+-- text direction positive angles are in the counterclockwise direction,+-- whereas for RTL they are in the clockwise direction+trAngle :: Lens' TextRotation (Maybe Int32)+trAngle+  = lens _trAngle (\ s a -> s{_trAngle = a}) .+      mapping _Coerce++-- | If true, text reads top to bottom, but the orientation of individual+-- characters is unchanged. For example: | V | | e | | r | | t | | i | | c+-- | | a | | l |+trVertical :: Lens' TextRotation (Maybe Bool)+trVertical+  = lens _trVertical (\ s a -> s{_trVertical = a})++instance FromJSON TextRotation where+        parseJSON+          = withObject "TextRotation"+              (\ o ->+                 TextRotation' <$>+                   (o .:? "angle") <*> (o .:? "vertical"))++instance ToJSON TextRotation where+        toJSON TextRotation'{..}+          = object+              (catMaybes+                 [("angle" .=) <$> _trAngle,+                  ("vertical" .=) <$> _trVertical])++-- | 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)+    , _buvrIncludeValuesInResponse      :: !(Maybe Bool)+    , _buvrResponseDateTimeRenderOption :: !(Maybe BatchUpdateValuesRequestResponseDateTimeRenderOption)+    , _buvrResponseValueRenderOption    :: !(Maybe BatchUpdateValuesRequestResponseValueRenderOption)+    }+  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'+--+-- * 'buvrIncludeValuesInResponse'+--+-- * 'buvrResponseDateTimeRenderOption'+--+-- * 'buvrResponseValueRenderOption'+batchUpdateValuesRequest+    :: BatchUpdateValuesRequest+batchUpdateValuesRequest =+  BatchUpdateValuesRequest'+    { _buvrData = Nothing+    , _buvrValueInputOption = Nothing+    , _buvrIncludeValuesInResponse = Nothing+    , _buvrResponseDateTimeRenderOption = Nothing+    , _buvrResponseValueRenderOption = 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})++-- | Determines if the update response should include the values of the cells+-- that were updated. By default, responses do not include the updated+-- values. The \`updatedData\` field within each of the+-- BatchUpdateValuesResponse.responses will contain the updated values. If+-- the range to write was larger than than the range actually written, the+-- response will include all values in the requested range (excluding+-- trailing empty rows and columns).+buvrIncludeValuesInResponse :: Lens' BatchUpdateValuesRequest (Maybe Bool)+buvrIncludeValuesInResponse+  = lens _buvrIncludeValuesInResponse+      (\ s a -> s{_buvrIncludeValuesInResponse = a})++-- | Determines how dates, times, and durations in the response should be+-- rendered. This is ignored if response_value_render_option is+-- FORMATTED_VALUE. The default dateTime render option is+-- DateTimeRenderOption.SERIAL_NUMBER.+buvrResponseDateTimeRenderOption :: Lens' BatchUpdateValuesRequest (Maybe BatchUpdateValuesRequestResponseDateTimeRenderOption)+buvrResponseDateTimeRenderOption+  = lens _buvrResponseDateTimeRenderOption+      (\ s a -> s{_buvrResponseDateTimeRenderOption = a})++-- | Determines how values in the response should be rendered. The default+-- render option is ValueRenderOption.FORMATTED_VALUE.+buvrResponseValueRenderOption :: Lens' BatchUpdateValuesRequest (Maybe BatchUpdateValuesRequestResponseValueRenderOption)+buvrResponseValueRenderOption+  = lens _buvrResponseValueRenderOption+      (\ s a -> s{_buvrResponseValueRenderOption = a})++instance FromJSON BatchUpdateValuesRequest where+        parseJSON+          = withObject "BatchUpdateValuesRequest"+              (\ o ->+                 BatchUpdateValuesRequest' <$>+                   (o .:? "data" .!= mempty) <*>+                     (o .:? "valueInputOption")+                     <*> (o .:? "includeValuesInResponse")+                     <*> (o .:? "responseDateTimeRenderOption")+                     <*> (o .:? "responseValueRenderOption"))++instance ToJSON BatchUpdateValuesRequest where+        toJSON BatchUpdateValuesRequest'{..}+          = object+              (catMaybes+                 [("data" .=) <$> _buvrData,+                  ("valueInputOption" .=) <$> _buvrValueInputOption,+                  ("includeValuesInResponse" .=) <$>+                    _buvrIncludeValuesInResponse,+                  ("responseDateTimeRenderOption" .=) <$>+                    _buvrResponseDateTimeRenderOption,+                  ("responseValueRenderOption" .=) <$>+                    _buvrResponseValueRenderOption])++-- | A range of values whose location is specified by a DataFilter.+--+-- /See:/ 'dataFilterValueRange' smart constructor.+data DataFilterValueRange =+  DataFilterValueRange'+    { _dfvrValues         :: !(Maybe [[JSONValue]])+    , _dfvrDataFilter     :: !(Maybe DataFilter)+    , _dfvrMajorDimension :: !(Maybe DataFilterValueRangeMajorDimension)+    }+  deriving (Eq, Show, Data, Typeable, Generic)+++-- | Creates a value of 'DataFilterValueRange' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'dfvrValues'+--+-- * 'dfvrDataFilter'+--+-- * 'dfvrMajorDimension'+dataFilterValueRange+    :: DataFilterValueRange+dataFilterValueRange =+  DataFilterValueRange'+    { _dfvrValues = Nothing+    , _dfvrDataFilter = Nothing+    , _dfvrMajorDimension = Nothing+    }+++-- | The data to be written. If the provided values exceed any of the ranges+-- matched by the data filter then the request will fail. If the provided+-- values are less than the matched ranges only the specified values will+-- be written, existing values in the matched ranges will remain+-- unaffected.+dfvrValues :: Lens' DataFilterValueRange [[JSONValue]]+dfvrValues+  = lens _dfvrValues (\ s a -> s{_dfvrValues = a}) .+      _Default+      . _Coerce++-- | The data filter describing the location of the values in the+-- spreadsheet.+dfvrDataFilter :: Lens' DataFilterValueRange (Maybe DataFilter)+dfvrDataFilter+  = lens _dfvrDataFilter+      (\ s a -> s{_dfvrDataFilter = a})++-- | The major dimension of the values.+dfvrMajorDimension :: Lens' DataFilterValueRange (Maybe DataFilterValueRangeMajorDimension)+dfvrMajorDimension+  = lens _dfvrMajorDimension+      (\ s a -> s{_dfvrMajorDimension = a})++instance FromJSON DataFilterValueRange where+        parseJSON+          = withObject "DataFilterValueRange"+              (\ o ->+                 DataFilterValueRange' <$>+                   (o .:? "values" .!= mempty) <*> (o .:? "dataFilter")+                     <*> (o .:? "majorDimension"))++instance ToJSON DataFilterValueRange where+        toJSON DataFilterValueRange'{..}+          = object+              (catMaybes+                 [("values" .=) <$> _dfvrValues,+                  ("dataFilter" .=) <$> _dfvrDataFilter,+                  ("majorDimension" .=) <$> _dfvrMajorDimension])++-- | 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. The chartId field is optional; if+-- one is not set, an id will be randomly generated. (It is an error to+-- specify the ID of a chart that already exists.)+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])++-- | Allows you to manually organize the values in a source data column into+-- buckets with names of your choosing. For example, a pivot table that+-- aggregates population by state: +-------+-------------------+ | State |+-- SUM of Population | +-------+-------------------+ | AK | 0.7 | | AL |+-- 4.8 | | AR | 2.9 | ... +-------+-------------------+ could be turned+-- into a pivot table that aggregates population by time zone by providing+-- a list of groups (for example, groupName = \'Central\', items = [\'AL\',+-- \'AR\', \'IA\', ...]) to a manual group rule. Note that a similar effect+-- could be achieved by adding a time zone column to the source data and+-- adjusting the pivot table. +-----------+-------------------+ | Time Zone+-- | SUM of Population | +-----------+-------------------+ | Central |+-- 106.3 | | Eastern | 151.9 | | Mountain | 17.4 | ...+-- +-----------+-------------------++--+-- /See:/ 'manualRule' smart constructor.+newtype ManualRule =+  ManualRule'+    { _mrGroups :: Maybe [ManualRuleGroup]+    }+  deriving (Eq, Show, Data, Typeable, Generic)+++-- | Creates a value of 'ManualRule' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'mrGroups'+manualRule+    :: ManualRule+manualRule = ManualRule' {_mrGroups = Nothing}+++-- | The list of group names and the corresponding items from the source data+-- that map to each group name.+mrGroups :: Lens' ManualRule [ManualRuleGroup]+mrGroups+  = lens _mrGroups (\ s a -> s{_mrGroups = a}) .+      _Default+      . _Coerce++instance FromJSON ManualRule where+        parseJSON+          = withObject "ManualRule"+              (\ o -> ManualRule' <$> (o .:? "groups" .!= mempty))++instance ToJSON ManualRule where+        toJSON ManualRule'{..}+          = object (catMaybes [("groups" .=) <$> _mrGroups])++-- | Position settings for text.+--+-- /See:/ 'textPosition' smart constructor.+newtype TextPosition =+  TextPosition'+    { _tpHorizontalAlignment :: Maybe TextPositionHorizontalAlignment+    }+  deriving (Eq, Show, Data, Typeable, Generic)+++-- | Creates a value of 'TextPosition' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'tpHorizontalAlignment'+textPosition+    :: TextPosition+textPosition = TextPosition' {_tpHorizontalAlignment = Nothing}+++-- | Horizontal alignment setting for the piece of text.+tpHorizontalAlignment :: Lens' TextPosition (Maybe TextPositionHorizontalAlignment)+tpHorizontalAlignment+  = lens _tpHorizontalAlignment+      (\ s a -> s{_tpHorizontalAlignment = a})++instance FromJSON TextPosition where+        parseJSON+          = withObject "TextPosition"+              (\ o ->+                 TextPosition' <$> (o .:? "horizontalAlignment"))++instance ToJSON TextPosition where+        toJSON TextPosition'{..}+          = object+              (catMaybes+                 [("horizontalAlignment" .=) <$>+                    _tpHorizontalAlignment])++-- | 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. Deprecated; the width is determined+-- by the \"style\" field.+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])++-- | A request to retrieve all developer metadata matching the set of+-- specified criteria.+--+-- /See:/ 'searchDeveloperMetadataRequest' smart constructor.+newtype SearchDeveloperMetadataRequest =+  SearchDeveloperMetadataRequest'+    { _sdmrDataFilters :: Maybe [DataFilter]+    }+  deriving (Eq, Show, Data, Typeable, Generic)+++-- | Creates a value of 'SearchDeveloperMetadataRequest' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'sdmrDataFilters'+searchDeveloperMetadataRequest+    :: SearchDeveloperMetadataRequest+searchDeveloperMetadataRequest =+  SearchDeveloperMetadataRequest' {_sdmrDataFilters = Nothing}+++-- | The data filters describing the criteria used to determine which+-- DeveloperMetadata entries to return. DeveloperMetadata matching any of+-- the specified filters will be included in the response.+sdmrDataFilters :: Lens' SearchDeveloperMetadataRequest [DataFilter]+sdmrDataFilters+  = lens _sdmrDataFilters+      (\ s a -> s{_sdmrDataFilters = a})+      . _Default+      . _Coerce++instance FromJSON SearchDeveloperMetadataRequest+         where+        parseJSON+          = withObject "SearchDeveloperMetadataRequest"+              (\ o ->+                 SearchDeveloperMetadataRequest' <$>+                   (o .:? "dataFilters" .!= mempty))++instance ToJSON SearchDeveloperMetadataRequest where+        toJSON SearchDeveloperMetadataRequest'{..}+          = object+              (catMaybes [("dataFilters" .=) <$> _sdmrDataFilters])++-- | The series of a CandlestickData.+--+-- /See:/ 'candlestickSeries' smart constructor.+newtype CandlestickSeries =+  CandlestickSeries'+    { _csData :: Maybe ChartData+    }+  deriving (Eq, Show, Data, Typeable, Generic)+++-- | Creates a value of 'CandlestickSeries' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'csData'+candlestickSeries+    :: CandlestickSeries+candlestickSeries = CandlestickSeries' {_csData = Nothing}+++-- | The data of the CandlestickSeries.+csData :: Lens' CandlestickSeries (Maybe ChartData)+csData = lens _csData (\ s a -> s{_csData = a})++instance FromJSON CandlestickSeries where+        parseJSON+          = withObject "CandlestickSeries"+              (\ o -> CandlestickSeries' <$> (o .:? "data"))++instance ToJSON CandlestickSeries where+        toJSON CandlestickSeries'{..}+          = object (catMaybes [("data" .=) <$> _csData])++-- | 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. The namedRangeId field is optional; if one is+-- not set, an id will be randomly generated. (It is an error to specify+-- the ID of a 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 GFieldMask)+    , _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 GFieldMask)+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 domain of a CandlestickChart.+--+-- /See:/ 'candlestickDomain' smart constructor.+data CandlestickDomain =+  CandlestickDomain'+    { _cdReversed :: !(Maybe Bool)+    , _cdData     :: !(Maybe ChartData)+    }+  deriving (Eq, Show, Data, Typeable, Generic)+++-- | Creates a value of 'CandlestickDomain' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'cdReversed'+--+-- * 'cdData'+candlestickDomain+    :: CandlestickDomain+candlestickDomain =+  CandlestickDomain' {_cdReversed = Nothing, _cdData = Nothing}+++-- | True to reverse the order of the domain values (horizontal axis).+cdReversed :: Lens' CandlestickDomain (Maybe Bool)+cdReversed+  = lens _cdReversed (\ s a -> s{_cdReversed = a})++-- | The data of the CandlestickDomain.+cdData :: Lens' CandlestickDomain (Maybe ChartData)+cdData = lens _cdData (\ s a -> s{_cdData = a})++instance FromJSON CandlestickDomain where+        parseJSON+          = withObject "CandlestickDomain"+              (\ o ->+                 CandlestickDomain' <$>+                   (o .:? "reversed") <*> (o .:? "data"))++instance ToJSON CandlestickDomain where+        toJSON CandlestickDomain'{..}+          = object+              (catMaybes+                 [("reversed" .=) <$> _cdReversed,+                  ("data" .=) <$> _cdData])++-- | 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)+    , _pvCalculatedDisplayType :: !(Maybe PivotValueCalculatedDisplayType)+    , _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'+--+-- * 'pvCalculatedDisplayType'+--+-- * 'pvSummarizeFunction'+pivotValue+    :: PivotValue+pivotValue =+  PivotValue'+    { _pvSourceColumnOffSet = Nothing+    , _pvFormula = Nothing+    , _pvName = Nothing+    , _pvCalculatedDisplayType = 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.+pvName :: Lens' PivotValue (Maybe Text)+pvName = lens _pvName (\ s a -> s{_pvName = a})++-- | If specified, indicates that pivot values should be displayed as the+-- result of a calculation with another pivot value. For example, if+-- calculated_display_type is specified as PERCENT_OF_GRAND_TOTAL, all the+-- pivot values are displayed as the percentage of the grand total. In the+-- Sheets UI, this is referred to as \"Show As\" in the value section of a+-- pivot table.+pvCalculatedDisplayType :: Lens' PivotValue (Maybe PivotValueCalculatedDisplayType)+pvCalculatedDisplayType+  = lens _pvCalculatedDisplayType+      (\ s a -> s{_pvCalculatedDisplayType = 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 .:? "calculatedDisplayType")+                     <*> (o .:? "summarizeFunction"))++instance ToJSON PivotValue where+        toJSON PivotValue'{..}+          = object+              (catMaybes+                 [("sourceColumnOffset" .=) <$> _pvSourceColumnOffSet,+                  ("formula" .=) <$> _pvFormula,+                  ("name" .=) <$> _pvName,+                  ("calculatedDisplayType" .=) <$>+                    _pvCalculatedDisplayType,+                  ("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])++-- | Creates a group over the specified range. If the requested range is a+-- superset of the range of an existing group G, then the depth of G is+-- incremented and this new group G\' has the depth of that group. For+-- example, a group [C:D, depth 1] + [B:E] results in groups [B:E, depth 1]+-- and [C:D, depth 2]. If the requested range is a subset of the range of+-- an existing group G, then the depth of the new group G\' becomes one+-- greater than the depth of G. For example, a group [B:E, depth 1] + [C:D]+-- results in groups [B:E, depth 1] and [C:D, depth 2]. If the requested+-- range starts before and ends within, or starts within and ends after,+-- the range of an existing group G, then the range of the existing group G+-- becomes the union of the ranges, and the new group G\' has depth one+-- greater than the depth of G and range as the intersection of the ranges.+-- For example, a group [B:D, depth 1] + [C:E] results in groups [B:E,+-- depth 1] and [C:D, depth 2].+--+-- /See:/ 'addDimensionGroupRequest' smart constructor.+newtype AddDimensionGroupRequest =+  AddDimensionGroupRequest'+    { _adgrRange :: Maybe DimensionRange+    }+  deriving (Eq, Show, Data, Typeable, Generic)+++-- | Creates a value of 'AddDimensionGroupRequest' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'adgrRange'+addDimensionGroupRequest+    :: AddDimensionGroupRequest+addDimensionGroupRequest = AddDimensionGroupRequest' {_adgrRange = Nothing}+++-- | The range over which to create a group.+adgrRange :: Lens' AddDimensionGroupRequest (Maybe DimensionRange)+adgrRange+  = lens _adgrRange (\ s a -> s{_adgrRange = a})++instance FromJSON AddDimensionGroupRequest where+        parseJSON+          = withObject "AddDimensionGroupRequest"+              (\ o ->+                 AddDimensionGroupRequest' <$> (o .:? "range"))++instance ToJSON AddDimensionGroupRequest where+        toJSON AddDimensionGroupRequest'{..}+          = object (catMaybes [("range" .=) <$> _adgrRange])++-- | Styles for a waterfall chart column.+--+-- /See:/ 'waterfallChartColumnStyle' smart constructor.+data WaterfallChartColumnStyle =+  WaterfallChartColumnStyle'+    { _wColor :: !(Maybe Color)+    , _wLabel :: !(Maybe Text)+    }+  deriving (Eq, Show, Data, Typeable, Generic)+++-- | Creates a value of 'WaterfallChartColumnStyle' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'wColor'+--+-- * 'wLabel'+waterfallChartColumnStyle+    :: WaterfallChartColumnStyle+waterfallChartColumnStyle =+  WaterfallChartColumnStyle' {_wColor = Nothing, _wLabel = Nothing}+++-- | The color of the column.+wColor :: Lens' WaterfallChartColumnStyle (Maybe Color)+wColor = lens _wColor (\ s a -> s{_wColor = a})++-- | The label of the column\'s legend.+wLabel :: Lens' WaterfallChartColumnStyle (Maybe Text)+wLabel = lens _wLabel (\ s a -> s{_wLabel = a})++instance FromJSON WaterfallChartColumnStyle where+        parseJSON+          = withObject "WaterfallChartColumnStyle"+              (\ o ->+                 WaterfallChartColumnStyle' <$>+                   (o .:? "color") <*> (o .:? "label"))++instance ToJSON WaterfallChartColumnStyle where+        toJSON WaterfallChartColumnStyle'{..}+          = object+              (catMaybes+                 [("color" .=) <$> _wColor, ("label" .=) <$> _wLabel])++-- | The Candlestick chart data, each containing the low, open, close, and+-- high values for a series.+--+-- /See:/ 'candlestickData' smart constructor.+data CandlestickData =+  CandlestickData'+    { _cdLowSeries   :: !(Maybe CandlestickSeries)+    , _cdHighSeries  :: !(Maybe CandlestickSeries)+    , _cdOpenSeries  :: !(Maybe CandlestickSeries)+    , _cdCloseSeries :: !(Maybe CandlestickSeries)+    }+  deriving (Eq, Show, Data, Typeable, Generic)+++-- | Creates a value of 'CandlestickData' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'cdLowSeries'+--+-- * 'cdHighSeries'+--+-- * 'cdOpenSeries'+--+-- * 'cdCloseSeries'+candlestickData+    :: CandlestickData+candlestickData =+  CandlestickData'+    { _cdLowSeries = Nothing+    , _cdHighSeries = Nothing+    , _cdOpenSeries = Nothing+    , _cdCloseSeries = Nothing+    }+++-- | The range data (vertical axis) for the low\/minimum value for each+-- candle. This is the bottom of the candle\'s center line.+cdLowSeries :: Lens' CandlestickData (Maybe CandlestickSeries)+cdLowSeries+  = lens _cdLowSeries (\ s a -> s{_cdLowSeries = a})++-- | The range data (vertical axis) for the high\/maximum value for each+-- candle. This is the top of the candle\'s center line.+cdHighSeries :: Lens' CandlestickData (Maybe CandlestickSeries)+cdHighSeries+  = lens _cdHighSeries (\ s a -> s{_cdHighSeries = a})++-- | The range data (vertical axis) for the open\/initial value for each+-- candle. This is the bottom of the candle body. If less than the close+-- value the candle will be filled. Otherwise the candle will be hollow.+cdOpenSeries :: Lens' CandlestickData (Maybe CandlestickSeries)+cdOpenSeries+  = lens _cdOpenSeries (\ s a -> s{_cdOpenSeries = a})++-- | The range data (vertical axis) for the close\/final value for each+-- candle. This is the top of the candle body. If greater than the open+-- value the candle will be filled. Otherwise the candle will be hollow.+cdCloseSeries :: Lens' CandlestickData (Maybe CandlestickSeries)+cdCloseSeries+  = lens _cdCloseSeries+      (\ s a -> s{_cdCloseSeries = a})++instance FromJSON CandlestickData where+        parseJSON+          = withObject "CandlestickData"+              (\ o ->+                 CandlestickData' <$>+                   (o .:? "lowSeries") <*> (o .:? "highSeries") <*>+                     (o .:? "openSeries")+                     <*> (o .:? "closeSeries"))++instance ToJSON CandlestickData where+        toJSON CandlestickData'{..}+          = object+              (catMaybes+                 [("lowSeries" .=) <$> _cdLowSeries,+                  ("highSeries" .=) <$> _cdHighSeries,+                  ("openSeries" .=) <$> _cdOpenSeries,+                  ("closeSeries" .=) <$> _cdCloseSeries])++-- | A banded (alternating colors) range in a sheet.+--+-- /See:/ 'bandedRange' smart constructor.+data BandedRange =+  BandedRange'+    { _brBandedRangeId    :: !(Maybe (Textual Int32))+    , _brRowProperties    :: !(Maybe BandingProperties)+    , _brRange            :: !(Maybe GridRange)+    , _brColumnProperties :: !(Maybe BandingProperties)+    }+  deriving (Eq, Show, Data, Typeable, Generic)+++-- | Creates a value of 'BandedRange' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'brBandedRangeId'+--+-- * 'brRowProperties'+--+-- * 'brRange'+--+-- * 'brColumnProperties'+bandedRange+    :: BandedRange+bandedRange =+  BandedRange'+    { _brBandedRangeId = Nothing+    , _brRowProperties = Nothing+    , _brRange = Nothing+    , _brColumnProperties = Nothing+    }+++-- | The id of the banded range.+brBandedRangeId :: Lens' BandedRange (Maybe Int32)+brBandedRangeId+  = lens _brBandedRangeId+      (\ s a -> s{_brBandedRangeId = a})+      . mapping _Coerce++-- | Properties for row bands. These properties are applied on a row-by-row+-- basis throughout all the rows in the range. At least one of+-- row_properties or column_properties must be specified.+brRowProperties :: Lens' BandedRange (Maybe BandingProperties)+brRowProperties+  = lens _brRowProperties+      (\ s a -> s{_brRowProperties = a})++-- | The range over which these properties are applied.+brRange :: Lens' BandedRange (Maybe GridRange)+brRange = lens _brRange (\ s a -> s{_brRange = a})++-- | Properties for column bands. These properties are applied on a column-+-- by-column basis throughout all the columns in the range. At least one of+-- row_properties or column_properties must be specified.+brColumnProperties :: Lens' BandedRange (Maybe BandingProperties)+brColumnProperties+  = lens _brColumnProperties+      (\ s a -> s{_brColumnProperties = a})++instance FromJSON BandedRange where+        parseJSON+          = withObject "BandedRange"+              (\ o ->+                 BandedRange' <$>+                   (o .:? "bandedRangeId") <*> (o .:? "rowProperties")+                     <*> (o .:? "range")+                     <*> (o .:? "columnProperties"))++instance ToJSON BandedRange where+        toJSON BandedRange'{..}+          = object+              (catMaybes+                 [("bandedRangeId" .=) <$> _brBandedRangeId,+                  ("rowProperties" .=) <$> _brRowProperties,+                  ("range" .=) <$> _brRange,+                  ("columnProperties" .=) <$> _brColumnProperties])++-- | 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])++-- | The request for updating more than one range of values in a spreadsheet.+--+-- /See:/ 'batchUpdateValuesByDataFilterRequest' smart constructor.+data BatchUpdateValuesByDataFilterRequest =+  BatchUpdateValuesByDataFilterRequest'+    { _buvbdfrData                         :: !(Maybe [DataFilterValueRange])+    , _buvbdfrValueInputOption             :: !(Maybe BatchUpdateValuesByDataFilterRequestValueInputOption)+    , _buvbdfrIncludeValuesInResponse      :: !(Maybe Bool)+    , _buvbdfrResponseDateTimeRenderOption :: !(Maybe BatchUpdateValuesByDataFilterRequestResponseDateTimeRenderOption)+    , _buvbdfrResponseValueRenderOption    :: !(Maybe BatchUpdateValuesByDataFilterRequestResponseValueRenderOption)+    }+  deriving (Eq, Show, Data, Typeable, Generic)+++-- | Creates a value of 'BatchUpdateValuesByDataFilterRequest' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'buvbdfrData'+--+-- * 'buvbdfrValueInputOption'+--+-- * 'buvbdfrIncludeValuesInResponse'+--+-- * 'buvbdfrResponseDateTimeRenderOption'+--+-- * 'buvbdfrResponseValueRenderOption'+batchUpdateValuesByDataFilterRequest+    :: BatchUpdateValuesByDataFilterRequest+batchUpdateValuesByDataFilterRequest =+  BatchUpdateValuesByDataFilterRequest'+    { _buvbdfrData = Nothing+    , _buvbdfrValueInputOption = Nothing+    , _buvbdfrIncludeValuesInResponse = Nothing+    , _buvbdfrResponseDateTimeRenderOption = Nothing+    , _buvbdfrResponseValueRenderOption = Nothing+    }+++-- | The new values to apply to the spreadsheet. If more than one range is+-- matched by the specified DataFilter the specified values will be applied+-- to all of those ranges.+buvbdfrData :: Lens' BatchUpdateValuesByDataFilterRequest [DataFilterValueRange]+buvbdfrData+  = lens _buvbdfrData (\ s a -> s{_buvbdfrData = a}) .+      _Default+      . _Coerce++-- | How the input data should be interpreted.+buvbdfrValueInputOption :: Lens' BatchUpdateValuesByDataFilterRequest (Maybe BatchUpdateValuesByDataFilterRequestValueInputOption)+buvbdfrValueInputOption+  = lens _buvbdfrValueInputOption+      (\ s a -> s{_buvbdfrValueInputOption = a})++-- | Determines if the update response should include the values of the cells+-- that were updated. By default, responses do not include the updated+-- values. The \`updatedData\` field within each of the+-- BatchUpdateValuesResponse.responses will contain the updated values. If+-- the range to write was larger than than the range actually written, the+-- response will include all values in the requested range (excluding+-- trailing empty rows and columns).+buvbdfrIncludeValuesInResponse :: Lens' BatchUpdateValuesByDataFilterRequest (Maybe Bool)+buvbdfrIncludeValuesInResponse+  = lens _buvbdfrIncludeValuesInResponse+      (\ s a -> s{_buvbdfrIncludeValuesInResponse = a})++-- | Determines how dates, times, and durations in the response should be+-- rendered. This is ignored if response_value_render_option is+-- FORMATTED_VALUE. The default dateTime render option is+-- DateTimeRenderOption.SERIAL_NUMBER.+buvbdfrResponseDateTimeRenderOption :: Lens' BatchUpdateValuesByDataFilterRequest (Maybe BatchUpdateValuesByDataFilterRequestResponseDateTimeRenderOption)+buvbdfrResponseDateTimeRenderOption+  = lens _buvbdfrResponseDateTimeRenderOption+      (\ s a ->+         s{_buvbdfrResponseDateTimeRenderOption = a})++-- | Determines how values in the response should be rendered. The default+-- render option is ValueRenderOption.FORMATTED_VALUE.+buvbdfrResponseValueRenderOption :: Lens' BatchUpdateValuesByDataFilterRequest (Maybe BatchUpdateValuesByDataFilterRequestResponseValueRenderOption)+buvbdfrResponseValueRenderOption+  = lens _buvbdfrResponseValueRenderOption+      (\ s a -> s{_buvbdfrResponseValueRenderOption = a})++instance FromJSON+           BatchUpdateValuesByDataFilterRequest+         where+        parseJSON+          = withObject "BatchUpdateValuesByDataFilterRequest"+              (\ o ->+                 BatchUpdateValuesByDataFilterRequest' <$>+                   (o .:? "data" .!= mempty) <*>+                     (o .:? "valueInputOption")+                     <*> (o .:? "includeValuesInResponse")+                     <*> (o .:? "responseDateTimeRenderOption")+                     <*> (o .:? "responseValueRenderOption"))++instance ToJSON BatchUpdateValuesByDataFilterRequest+         where+        toJSON BatchUpdateValuesByDataFilterRequest'{..}+          = object+              (catMaybes+                 [("data" .=) <$> _buvbdfrData,+                  ("valueInputOption" .=) <$> _buvbdfrValueInputOption,+                  ("includeValuesInResponse" .=) <$>+                    _buvbdfrIncludeValuesInResponse,+                  ("responseDateTimeRenderOption" .=) <$>+                    _buvbdfrResponseDateTimeRenderOption,+                  ("responseValueRenderOption" .=) <$>+                    _buvbdfrResponseValueRenderOption])++-- | 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 are+-- 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 is 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 retrieving a Spreadsheet.+--+-- /See:/ 'getSpreadsheetByDataFilterRequest' smart constructor.+data GetSpreadsheetByDataFilterRequest =+  GetSpreadsheetByDataFilterRequest'+    { _gsbdfrDataFilters     :: !(Maybe [DataFilter])+    , _gsbdfrIncludeGridData :: !(Maybe Bool)+    }+  deriving (Eq, Show, Data, Typeable, Generic)+++-- | Creates a value of 'GetSpreadsheetByDataFilterRequest' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'gsbdfrDataFilters'+--+-- * 'gsbdfrIncludeGridData'+getSpreadsheetByDataFilterRequest+    :: GetSpreadsheetByDataFilterRequest+getSpreadsheetByDataFilterRequest =+  GetSpreadsheetByDataFilterRequest'+    {_gsbdfrDataFilters = Nothing, _gsbdfrIncludeGridData = Nothing}+++-- | The DataFilters used to select which ranges to retrieve from the+-- spreadsheet.+gsbdfrDataFilters :: Lens' GetSpreadsheetByDataFilterRequest [DataFilter]+gsbdfrDataFilters+  = lens _gsbdfrDataFilters+      (\ s a -> s{_gsbdfrDataFilters = a})+      . _Default+      . _Coerce++-- | True if grid data should be returned. This parameter is ignored if a+-- field mask was set in the request.+gsbdfrIncludeGridData :: Lens' GetSpreadsheetByDataFilterRequest (Maybe Bool)+gsbdfrIncludeGridData+  = lens _gsbdfrIncludeGridData+      (\ s a -> s{_gsbdfrIncludeGridData = a})++instance FromJSON GetSpreadsheetByDataFilterRequest+         where+        parseJSON+          = withObject "GetSpreadsheetByDataFilterRequest"+              (\ o ->+                 GetSpreadsheetByDataFilterRequest' <$>+                   (o .:? "dataFilters" .!= mempty) <*>+                     (o .:? "includeGridData"))++instance ToJSON GetSpreadsheetByDataFilterRequest+         where+        toJSON GetSpreadsheetByDataFilterRequest'{..}+          = object+              (catMaybes+                 [("dataFilters" .=) <$> _gsbdfrDataFilters,+                  ("includeGridData" .=) <$> _gsbdfrIncludeGridData])++-- | The request for updating any aspect of a spreadsheet.+--+-- /See:/ 'batchUpdateSpreadsheetRequest' smart constructor.+data BatchUpdateSpreadsheetRequest =+  BatchUpdateSpreadsheetRequest'+    { _busrResponseIncludeGridData      :: !(Maybe Bool)+    , _busrResponseRanges               :: !(Maybe [Text])+    , _busrRequests                     :: !(Maybe [Request'])+    , _busrIncludeSpreadsheetInResponse :: !(Maybe Bool)+    }+  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:+--+-- * 'busrResponseIncludeGridData'+--+-- * 'busrResponseRanges'+--+-- * 'busrRequests'+--+-- * 'busrIncludeSpreadsheetInResponse'+batchUpdateSpreadsheetRequest+    :: BatchUpdateSpreadsheetRequest+batchUpdateSpreadsheetRequest =+  BatchUpdateSpreadsheetRequest'+    { _busrResponseIncludeGridData = Nothing+    , _busrResponseRanges = Nothing+    , _busrRequests = Nothing+    , _busrIncludeSpreadsheetInResponse = Nothing+    }+++-- | True if grid data should be returned. Meaningful only if if+-- include_spreadsheet_in_response is \'true\'. This parameter is ignored+-- if a field mask was set in the request.+busrResponseIncludeGridData :: Lens' BatchUpdateSpreadsheetRequest (Maybe Bool)+busrResponseIncludeGridData+  = lens _busrResponseIncludeGridData+      (\ s a -> s{_busrResponseIncludeGridData = a})++-- | Limits the ranges included in the response spreadsheet. Meaningful only+-- if include_spreadsheet_response is \'true\'.+busrResponseRanges :: Lens' BatchUpdateSpreadsheetRequest [Text]+busrResponseRanges+  = lens _busrResponseRanges+      (\ s a -> s{_busrResponseRanges = a})+      . _Default+      . _Coerce++-- | A list of updates to apply to the spreadsheet. Requests will be applied+-- in the order they are specified. If any request is not valid, no+-- requests will be applied.+busrRequests :: Lens' BatchUpdateSpreadsheetRequest [Request']+busrRequests+  = lens _busrRequests (\ s a -> s{_busrRequests = a})+      . _Default+      . _Coerce++-- | Determines if the update response should include the spreadsheet+-- resource.+busrIncludeSpreadsheetInResponse :: Lens' BatchUpdateSpreadsheetRequest (Maybe Bool)+busrIncludeSpreadsheetInResponse+  = lens _busrIncludeSpreadsheetInResponse+      (\ s a -> s{_busrIncludeSpreadsheetInResponse = a})++instance FromJSON BatchUpdateSpreadsheetRequest where+        parseJSON+          = withObject "BatchUpdateSpreadsheetRequest"+              (\ o ->+                 BatchUpdateSpreadsheetRequest' <$>+                   (o .:? "responseIncludeGridData") <*>+                     (o .:? "responseRanges" .!= mempty)+                     <*> (o .:? "requests" .!= mempty)+                     <*> (o .:? "includeSpreadsheetInResponse"))++instance ToJSON BatchUpdateSpreadsheetRequest where+        toJSON BatchUpdateSpreadsheetRequest'{..}+          = object+              (catMaybes+                 [("responseIncludeGridData" .=) <$>+                    _busrResponseIncludeGridData,+                  ("responseRanges" .=) <$> _busrResponseRanges,+                  ("requests" .=) <$> _busrRequests,+                  ("includeSpreadsheetInResponse" .=) <$>+                    _busrIncludeSpreadsheetInResponse])++-- | 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)+    , _uvrUpdatedData    :: !(Maybe ValueRange)+    , _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'+--+-- * 'uvrUpdatedData'+--+-- * 'uvrUpdatedColumns'+updateValuesResponse+    :: UpdateValuesResponse+updateValuesResponse =+  UpdateValuesResponse'+    { _uvrUpdatedCells = Nothing+    , _uvrSpreadsheetId = Nothing+    , _uvrUpdatedRows = Nothing+    , _uvrUpdatedRange = Nothing+    , _uvrUpdatedData = 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 values of the cells after updates were applied. This is only+-- included if the request\'s \`includeValuesInResponse\` field was+-- \`true\`.+uvrUpdatedData :: Lens' UpdateValuesResponse (Maybe ValueRange)+uvrUpdatedData+  = lens _uvrUpdatedData+      (\ s a -> s{_uvrUpdatedData = 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 .:? "updatedData")+                     <*> (o .:? "updatedColumns"))++instance ToJSON UpdateValuesResponse where+        toJSON UpdateValuesResponse'{..}+          = object+              (catMaybes+                 [("updatedCells" .=) <$> _uvrUpdatedCells,+                  ("spreadsheetId" .=) <$> _uvrSpreadsheetId,+                  ("updatedRows" .=) <$> _uvrUpdatedRows,+                  ("updatedRange" .=) <$> _uvrUpdatedRange,+                  ("updatedData" .=) <$> _uvrUpdatedData,+                  ("updatedColumns" .=) <$> _uvrUpdatedColumns])++-- | The result of deleting a group.+--+-- /See:/ 'deleteDimensionGroupResponse' smart constructor.+newtype DeleteDimensionGroupResponse =+  DeleteDimensionGroupResponse'+    { _ddgrDimensionGroups :: Maybe [DimensionGroup]+    }+  deriving (Eq, Show, Data, Typeable, Generic)+++-- | Creates a value of 'DeleteDimensionGroupResponse' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'ddgrDimensionGroups'+deleteDimensionGroupResponse+    :: DeleteDimensionGroupResponse+deleteDimensionGroupResponse =+  DeleteDimensionGroupResponse' {_ddgrDimensionGroups = Nothing}+++-- | All groups of a dimension after deleting a group from that dimension.+ddgrDimensionGroups :: Lens' DeleteDimensionGroupResponse [DimensionGroup]+ddgrDimensionGroups+  = lens _ddgrDimensionGroups+      (\ s a -> s{_ddgrDimensionGroups = a})+      . _Default+      . _Coerce++instance FromJSON DeleteDimensionGroupResponse where+        parseJSON+          = withObject "DeleteDimensionGroupResponse"+              (\ o ->+                 DeleteDimensionGroupResponse' <$>+                   (o .:? "dimensionGroups" .!= mempty))++instance ToJSON DeleteDimensionGroupResponse where+        toJSON DeleteDimensionGroupResponse'{..}+          = object+              (catMaybes+                 [("dimensionGroups" .=) <$> _ddgrDimensionGroups])++-- | 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. The filterViewId field is optional; if one is not+-- set, an id will be randomly generated. (It is an error to specify the ID+-- of a filter that already exists.)+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])++-- | The response when clearing a range of values selected with DataFilters+-- in a spreadsheet.+--+-- /See:/ 'batchClearValuesByDataFilterResponse' smart constructor.+data BatchClearValuesByDataFilterResponse =+  BatchClearValuesByDataFilterResponse'+    { _bcvbdfrClearedRanges :: !(Maybe [Text])+    , _bcvbdfrSpreadsheetId :: !(Maybe Text)+    }+  deriving (Eq, Show, Data, Typeable, Generic)+++-- | Creates a value of 'BatchClearValuesByDataFilterResponse' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'bcvbdfrClearedRanges'+--+-- * 'bcvbdfrSpreadsheetId'+batchClearValuesByDataFilterResponse+    :: BatchClearValuesByDataFilterResponse+batchClearValuesByDataFilterResponse =+  BatchClearValuesByDataFilterResponse'+    {_bcvbdfrClearedRanges = Nothing, _bcvbdfrSpreadsheetId = Nothing}+++-- | The ranges that were cleared, in A1 notation. (If the requests were for+-- an unbounded range or a ranger larger than the bounds of the sheet, this+-- will be the actual ranges that were cleared, bounded to the sheet\'s+-- limits.)+bcvbdfrClearedRanges :: Lens' BatchClearValuesByDataFilterResponse [Text]+bcvbdfrClearedRanges+  = lens _bcvbdfrClearedRanges+      (\ s a -> s{_bcvbdfrClearedRanges = a})+      . _Default+      . _Coerce++-- | The spreadsheet the updates were applied to.+bcvbdfrSpreadsheetId :: Lens' BatchClearValuesByDataFilterResponse (Maybe Text)+bcvbdfrSpreadsheetId+  = lens _bcvbdfrSpreadsheetId+      (\ s a -> s{_bcvbdfrSpreadsheetId = a})++instance FromJSON+           BatchClearValuesByDataFilterResponse+         where+        parseJSON+          = withObject "BatchClearValuesByDataFilterResponse"+              (\ o ->+                 BatchClearValuesByDataFilterResponse' <$>+                   (o .:? "clearedRanges" .!= mempty) <*>+                     (o .:? "spreadsheetId"))++instance ToJSON BatchClearValuesByDataFilterResponse+         where+        toJSON BatchClearValuesByDataFilterResponse'{..}+          = object+              (catMaybes+                 [("clearedRanges" .=) <$> _bcvbdfrClearedRanges,+                  ("spreadsheetId" .=) <$> _bcvbdfrSpreadsheetId])++-- | A single series of data for a waterfall chart.+--+-- /See:/ 'waterfallChartSeries' smart constructor.+data WaterfallChartSeries =+  WaterfallChartSeries'+    { _wcsData                 :: !(Maybe ChartData)+    , _wcsCustomSubtotals      :: !(Maybe [WaterfallChartCustomSubtotal])+    , _wcsNegativeColumnsStyle :: !(Maybe WaterfallChartColumnStyle)+    , _wcsHideTrailingSubtotal :: !(Maybe Bool)+    , _wcsSubtotalColumnsStyle :: !(Maybe WaterfallChartColumnStyle)+    , _wcsPositiveColumnsStyle :: !(Maybe WaterfallChartColumnStyle)+    }+  deriving (Eq, Show, Data, Typeable, Generic)+++-- | Creates a value of 'WaterfallChartSeries' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'wcsData'+--+-- * 'wcsCustomSubtotals'+--+-- * 'wcsNegativeColumnsStyle'+--+-- * 'wcsHideTrailingSubtotal'+--+-- * 'wcsSubtotalColumnsStyle'+--+-- * 'wcsPositiveColumnsStyle'+waterfallChartSeries+    :: WaterfallChartSeries+waterfallChartSeries =+  WaterfallChartSeries'+    { _wcsData = Nothing+    , _wcsCustomSubtotals = Nothing+    , _wcsNegativeColumnsStyle = Nothing+    , _wcsHideTrailingSubtotal = Nothing+    , _wcsSubtotalColumnsStyle = Nothing+    , _wcsPositiveColumnsStyle = Nothing+    }+++-- | The data being visualized in this series.+wcsData :: Lens' WaterfallChartSeries (Maybe ChartData)+wcsData = lens _wcsData (\ s a -> s{_wcsData = a})++-- | Custom subtotal columns appearing in this series. The order in which+-- subtotals are defined is not significant. Only one subtotal may be+-- defined for each data point.+wcsCustomSubtotals :: Lens' WaterfallChartSeries [WaterfallChartCustomSubtotal]+wcsCustomSubtotals+  = lens _wcsCustomSubtotals+      (\ s a -> s{_wcsCustomSubtotals = a})+      . _Default+      . _Coerce++-- | Styles for all columns in this series with negative values.+wcsNegativeColumnsStyle :: Lens' WaterfallChartSeries (Maybe WaterfallChartColumnStyle)+wcsNegativeColumnsStyle+  = lens _wcsNegativeColumnsStyle+      (\ s a -> s{_wcsNegativeColumnsStyle = a})++-- | True to hide the subtotal column from the end of the series. By default,+-- a subtotal column will appear at the end of each series. Setting this+-- field to true will hide that subtotal column for this series.+wcsHideTrailingSubtotal :: Lens' WaterfallChartSeries (Maybe Bool)+wcsHideTrailingSubtotal+  = lens _wcsHideTrailingSubtotal+      (\ s a -> s{_wcsHideTrailingSubtotal = a})++-- | Styles for all subtotal columns in this series.+wcsSubtotalColumnsStyle :: Lens' WaterfallChartSeries (Maybe WaterfallChartColumnStyle)+wcsSubtotalColumnsStyle+  = lens _wcsSubtotalColumnsStyle+      (\ s a -> s{_wcsSubtotalColumnsStyle = a})++-- | Styles for all columns in this series with positive values.+wcsPositiveColumnsStyle :: Lens' WaterfallChartSeries (Maybe WaterfallChartColumnStyle)+wcsPositiveColumnsStyle+  = lens _wcsPositiveColumnsStyle+      (\ s a -> s{_wcsPositiveColumnsStyle = a})++instance FromJSON WaterfallChartSeries where+        parseJSON+          = withObject "WaterfallChartSeries"+              (\ o ->+                 WaterfallChartSeries' <$>+                   (o .:? "data") <*>+                     (o .:? "customSubtotals" .!= mempty)+                     <*> (o .:? "negativeColumnsStyle")+                     <*> (o .:? "hideTrailingSubtotal")+                     <*> (o .:? "subtotalColumnsStyle")+                     <*> (o .:? "positiveColumnsStyle"))++instance ToJSON WaterfallChartSeries where+        toJSON WaterfallChartSeries'{..}+          = object+              (catMaybes+                 [("data" .=) <$> _wcsData,+                  ("customSubtotals" .=) <$> _wcsCustomSubtotals,+                  ("negativeColumnsStyle" .=) <$>+                    _wcsNegativeColumnsStyle,+                  ("hideTrailingSubtotal" .=) <$>+                    _wcsHideTrailingSubtotal,+                  ("subtotalColumnsStyle" .=) <$>+                    _wcsSubtotalColumnsStyle,+                  ("positiveColumnsStyle" .=) <$>+                    _wcsPositiveColumnsStyle])++-- | 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 GFieldMask)+    }+  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 GFieldMask)+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)+    , _cfTextRotation         :: !(Maybe TextRotation)+    , _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'+--+-- * 'cfTextRotation'+--+-- * 'cfHyperlinkDisplayType'+--+-- * 'cfWrapStrategy'+--+-- * 'cfNumberFormat'+--+-- * 'cfTextDirection'+--+-- * 'cfTextFormat'+--+-- * 'cfHorizontalAlignment'+--+-- * 'cfPadding'+cellFormat+    :: CellFormat+cellFormat =+  CellFormat'+    { _cfBOrders = Nothing+    , _cfVerticalAlignment = Nothing+    , _cfBackgRoundColor = Nothing+    , _cfTextRotation = 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})++-- | The rotation applied to text in a cell+cfTextRotation :: Lens' CellFormat (Maybe TextRotation)+cfTextRotation+  = lens _cfTextRotation+      (\ s a -> s{_cfTextRotation = 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 .:? "textRotation")+                     <*> (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,+                  ("textRotation" .=) <$> _cfTextRotation,+                  ("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 GFieldMask)+    }+  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.+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 GFieldMask)+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'+    { _bcaTitleTextPosition :: !(Maybe TextPosition)+    , _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:+--+-- * 'bcaTitleTextPosition'+--+-- * 'bcaFormat'+--+-- * 'bcaTitle'+--+-- * 'bcaPosition'+basicChartAxis+    :: BasicChartAxis+basicChartAxis =+  BasicChartAxis'+    { _bcaTitleTextPosition = Nothing+    , _bcaFormat = Nothing+    , _bcaTitle = Nothing+    , _bcaPosition = Nothing+    }+++-- | The axis title text position.+bcaTitleTextPosition :: Lens' BasicChartAxis (Maybe TextPosition)+bcaTitleTextPosition+  = lens _bcaTitleTextPosition+      (\ s a -> s{_bcaTitleTextPosition = a})++-- | 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 .:? "titleTextPosition") <*> (o .:? "format") <*>+                     (o .:? "title")+                     <*> (o .:? "position"))++instance ToJSON BasicChartAxis where+        toJSON BasicChartAxis'{..}+          = object+              (catMaybes+                 [("titleTextPosition" .=) <$> _bcaTitleTextPosition,+                  ("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. See+-- the [Date and Number Formats guide](\/sheets\/api\/guides\/formats) for+-- more information about the supported patterns.+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])+    , _busrUpdatedSpreadsheet :: !(Maybe Spreadsheet)+    }+  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'+--+-- * 'busrUpdatedSpreadsheet'+batchUpdateSpreadsheetResponse+    :: BatchUpdateSpreadsheetResponse+batchUpdateSpreadsheetResponse =+  BatchUpdateSpreadsheetResponse'+    { _busrSpreadsheetId = Nothing+    , _busrReplies = Nothing+    , _busrUpdatedSpreadsheet = 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++-- | The spreadsheet after updates were applied. This is only set if+-- [BatchUpdateSpreadsheetRequest.include_spreadsheet_in_response] is+-- \`true\`.+busrUpdatedSpreadsheet :: Lens' BatchUpdateSpreadsheetResponse (Maybe Spreadsheet)+busrUpdatedSpreadsheet+  = lens _busrUpdatedSpreadsheet+      (\ s a -> s{_busrUpdatedSpreadsheet = a})++instance FromJSON BatchUpdateSpreadsheetResponse+         where+        parseJSON+          = withObject "BatchUpdateSpreadsheetResponse"+              (\ o ->+                 BatchUpdateSpreadsheetResponse' <$>+                   (o .:? "spreadsheetId") <*>+                     (o .:? "replies" .!= mempty)+                     <*> (o .:? "updatedSpreadsheet"))++instance ToJSON BatchUpdateSpreadsheetResponse where+        toJSON BatchUpdateSpreadsheetResponse'{..}+          = object+              (catMaybes+                 [("spreadsheetId" .=) <$> _busrSpreadsheetId,+                  ("replies" .=) <$> _busrReplies,+                  ("updatedSpreadsheet" .=) <$>+                    _busrUpdatedSpreadsheet])++-- | Filter that describes what data should be selected or returned from a+-- request.+--+-- /See:/ 'dataFilter' smart constructor.+data DataFilter =+  DataFilter'+    { _dfGridRange               :: !(Maybe GridRange)+    , _dfA1Range                 :: !(Maybe Text)+    , _dfDeveloperMetadataLookup :: !(Maybe DeveloperMetadataLookup)+    }+  deriving (Eq, Show, Data, Typeable, Generic)+++-- | Creates a value of 'DataFilter' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'dfGridRange'+--+-- * 'dfA1Range'+--+-- * 'dfDeveloperMetadataLookup'+dataFilter+    :: DataFilter+dataFilter =+  DataFilter'+    { _dfGridRange = Nothing+    , _dfA1Range = Nothing+    , _dfDeveloperMetadataLookup = Nothing+    }+++-- | Selects data that matches the range described by the GridRange.+dfGridRange :: Lens' DataFilter (Maybe GridRange)+dfGridRange+  = lens _dfGridRange (\ s a -> s{_dfGridRange = a})++-- | Selects data that matches the specified A1 range.+dfA1Range :: Lens' DataFilter (Maybe Text)+dfA1Range+  = lens _dfA1Range (\ s a -> s{_dfA1Range = a})++-- | Selects data associated with the developer metadata matching the+-- criteria described by this DeveloperMetadataLookup.+dfDeveloperMetadataLookup :: Lens' DataFilter (Maybe DeveloperMetadataLookup)+dfDeveloperMetadataLookup+  = lens _dfDeveloperMetadataLookup+      (\ s a -> s{_dfDeveloperMetadataLookup = a})++instance FromJSON DataFilter where+        parseJSON+          = withObject "DataFilter"+              (\ o ->+                 DataFilter' <$>+                   (o .:? "gridRange") <*> (o .:? "a1Range") <*>+                     (o .:? "developerMetadataLookup"))++instance ToJSON DataFilter where+        toJSON DataFilter'{..}+          = object+              (catMaybes+                 [("gridRange" .=) <$> _dfGridRange,+                  ("a1Range" .=) <$> _dfA1Range,+                  ("developerMetadataLookup" .=) <$>+                    _dfDeveloperMetadataLookup])++-- | 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])++-- | Properties referring a single dimension (either row or column). If both+-- BandedRange.row_properties and BandedRange.column_properties are set,+-- the fill colors are applied to cells according to the following rules: *+-- header_color and footer_color take priority over band colors. *+-- first_band_color takes priority over second_band_color. * row_properties+-- takes priority over column_properties. For example, the first row color+-- takes priority over the first column color, but the first column color+-- takes priority over the second row color. Similarly, the row header+-- takes priority over the column header in the top left cell, but the+-- column header takes priority over the first row color if the row header+-- is not set.+--+-- /See:/ 'bandingProperties' smart constructor.+data BandingProperties =+  BandingProperties'+    { _bpSecondBandColor :: !(Maybe Color)+    , _bpHeaderColor     :: !(Maybe Color)+    , _bpFooterColor     :: !(Maybe Color)+    , _bpFirstBandColor  :: !(Maybe Color)+    }+  deriving (Eq, Show, Data, Typeable, Generic)+++-- | Creates a value of 'BandingProperties' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'bpSecondBandColor'+--+-- * 'bpHeaderColor'+--+-- * 'bpFooterColor'+--+-- * 'bpFirstBandColor'+bandingProperties+    :: BandingProperties+bandingProperties =+  BandingProperties'+    { _bpSecondBandColor = Nothing+    , _bpHeaderColor = Nothing+    , _bpFooterColor = Nothing+    , _bpFirstBandColor = Nothing+    }+++-- | The second color that is alternating. (Required)+bpSecondBandColor :: Lens' BandingProperties (Maybe Color)+bpSecondBandColor+  = lens _bpSecondBandColor+      (\ s a -> s{_bpSecondBandColor = a})++-- | The color of the first row or column. If this field is set, the first+-- row or column will be filled with this color and the colors will+-- alternate between first_band_color and second_band_color starting from+-- the second row or column. Otherwise, the first row or column will be+-- filled with first_band_color and the colors will proceed to alternate as+-- they normally would.+bpHeaderColor :: Lens' BandingProperties (Maybe Color)+bpHeaderColor+  = lens _bpHeaderColor+      (\ s a -> s{_bpHeaderColor = a})++-- | The color of the last row or column. If this field is not set, the last+-- row or column will be filled with either first_band_color or+-- second_band_color, depending on the color of the previous row or column.+bpFooterColor :: Lens' BandingProperties (Maybe Color)+bpFooterColor+  = lens _bpFooterColor+      (\ s a -> s{_bpFooterColor = a})++-- | The first color that is alternating. (Required)+bpFirstBandColor :: Lens' BandingProperties (Maybe Color)+bpFirstBandColor+  = lens _bpFirstBandColor+      (\ s a -> s{_bpFirstBandColor = a})++instance FromJSON BandingProperties where+        parseJSON+          = withObject "BandingProperties"+              (\ o ->+                 BandingProperties' <$>+                   (o .:? "secondBandColor") <*> (o .:? "headerColor")+                     <*> (o .:? "footerColor")+                     <*> (o .:? "firstBandColor"))++instance ToJSON BandingProperties where+        toJSON BandingProperties'{..}+          = object+              (catMaybes+                 [("secondBandColor" .=) <$> _bpSecondBandColor,+                  ("headerColor" .=) <$> _bpHeaderColor,+                  ("footerColor" .=) <$> _bpFooterColor,+                  ("firstBandColor" .=) <$> _bpFirstBandColor])++-- | 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'+    { _pgRepeatHeadings     :: !(Maybe Bool)+    , _pgValueMetadata      :: !(Maybe [PivotGroupValueMetadata])+    , _pgSourceColumnOffSet :: !(Maybe (Textual Int32))+    , _pgSortOrder          :: !(Maybe PivotGroupSortOrder)+    , _pgShowTotals         :: !(Maybe Bool)+    , _pgValueBucket        :: !(Maybe PivotGroupSortValueBucket)+    , _pgLabel              :: !(Maybe Text)+    , _pgGroupRule          :: !(Maybe PivotGroupRule)+    }+  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:+--+-- * 'pgRepeatHeadings'+--+-- * 'pgValueMetadata'+--+-- * 'pgSourceColumnOffSet'+--+-- * 'pgSortOrder'+--+-- * 'pgShowTotals'+--+-- * 'pgValueBucket'+--+-- * 'pgLabel'+--+-- * 'pgGroupRule'+pivotGroup+    :: PivotGroup+pivotGroup =+  PivotGroup'+    { _pgRepeatHeadings = Nothing+    , _pgValueMetadata = Nothing+    , _pgSourceColumnOffSet = Nothing+    , _pgSortOrder = Nothing+    , _pgShowTotals = Nothing+    , _pgValueBucket = Nothing+    , _pgLabel = Nothing+    , _pgGroupRule = Nothing+    }+++-- | True if the headings in this pivot group should be repeated. This is+-- only valid for row groupings and is ignored by columns. By default, we+-- minimize repitition of headings by not showing higher level headings+-- where they are the same. For example, even though the third row below+-- corresponds to \"Q1 Mar\", \"Q1\" is not shown because it is redundant+-- with previous rows. Setting repeat_headings to true would cause \"Q1\"+-- to be repeated for \"Feb\" and \"Mar\". +--------------+ | Q1 | Jan | |+-- | Feb | | | Mar | +--------+-----+ | Q1 Total | +--------------++pgRepeatHeadings :: Lens' PivotGroup (Maybe Bool)+pgRepeatHeadings+  = lens _pgRepeatHeadings+      (\ s a -> s{_pgRepeatHeadings = a})++-- | 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})++-- | The labels to use for the row\/column groups which can be customized.+-- For example, in the following pivot table, the row label is \`Region\`+-- (which could be renamed to \`State\`) and the column label is+-- \`Product\` (which could be renamed \`Item\`). Pivot tables created+-- before December 2017 do not have header labels. If you\'d like to add+-- header labels to an existing pivot table, please delete the existing+-- pivot table and then create a new pivot table with same parameters.+-- +--------------+---------+-------+ | SUM of Units | Product | | | Region+-- | Pen | Paper | +--------------+---------+-------+ | New York | 345 | 98+-- | | Oregon | 234 | 123 | | Tennessee | 531 | 415 |+-- +--------------+---------+-------+ | Grand Total | 1110 | 636 |+-- +--------------+---------+-------++pgLabel :: Lens' PivotGroup (Maybe Text)+pgLabel = lens _pgLabel (\ s a -> s{_pgLabel = a})++-- | The group rule to apply to this row\/column group.+pgGroupRule :: Lens' PivotGroup (Maybe PivotGroupRule)+pgGroupRule+  = lens _pgGroupRule (\ s a -> s{_pgGroupRule = a})++instance FromJSON PivotGroup where+        parseJSON+          = withObject "PivotGroup"+              (\ o ->+                 PivotGroup' <$>+                   (o .:? "repeatHeadings") <*>+                     (o .:? "valueMetadata" .!= mempty)+                     <*> (o .:? "sourceColumnOffset")+                     <*> (o .:? "sortOrder")+                     <*> (o .:? "showTotals")+                     <*> (o .:? "valueBucket")+                     <*> (o .:? "label")+                     <*> (o .:? "groupRule"))++instance ToJSON PivotGroup where+        toJSON PivotGroup'{..}+          = object+              (catMaybes+                 [("repeatHeadings" .=) <$> _pgRepeatHeadings,+                  ("valueMetadata" .=) <$> _pgValueMetadata,+                  ("sourceColumnOffset" .=) <$> _pgSourceColumnOffSet,+                  ("sortOrder" .=) <$> _pgSortOrder,+                  ("showTotals" .=) <$> _pgShowTotals,+                  ("valueBucket" .=) <$> _pgValueBucket,+                  ("label" .=) <$> _pgLabel,+                  ("groupRule" .=) <$> _pgGroupRule])++-- | The result of adding a banded range.+--+-- /See:/ 'addBandingResponse' smart constructor.+newtype AddBandingResponse =+  AddBandingResponse'+    { _aBandedRange :: Maybe BandedRange+    }+  deriving (Eq, Show, Data, Typeable, Generic)+++-- | Creates a value of 'AddBandingResponse' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'aBandedRange'+addBandingResponse+    :: AddBandingResponse+addBandingResponse = AddBandingResponse' {_aBandedRange = Nothing}+++-- | The banded range that was added.+aBandedRange :: Lens' AddBandingResponse (Maybe BandedRange)+aBandedRange+  = lens _aBandedRange (\ s a -> s{_aBandedRange = a})++instance FromJSON AddBandingResponse where+        parseJSON+          = withObject "AddBandingResponse"+              (\ o ->+                 AddBandingResponse' <$> (o .:? "bandedRange"))++instance ToJSON AddBandingResponse where+        toJSON AddBandingResponse'{..}+          = object+              (catMaybes [("bandedRange" .=) <$> _aBandedRange])++-- | An </chart/interactive/docs/gallery/orgchart org chart>. Org charts+-- require a unique set of labels in labels and may optionally include+-- parent_labels and tooltips. parent_labels contain, for each node, the+-- label identifying the parent node. tooltips contain, for each node, an+-- optional tooltip. For example, to describe an OrgChart with Alice as the+-- CEO, Bob as the President (reporting to Alice) and Cathy as VP of Sales+-- (also reporting to Alice), have labels contain \"Alice\", \"Bob\",+-- \"Cathy\", parent_labels contain \"\", \"Alice\", \"Alice\" and tooltips+-- contain \"CEO\", \"President\", \"VP Sales\".+--+-- /See:/ 'orgChartSpec' smart constructor.+data OrgChartSpec =+  OrgChartSpec'+    { _ocsNodeColor         :: !(Maybe Color)+    , _ocsNodeSize          :: !(Maybe OrgChartSpecNodeSize)+    , _ocsTooltips          :: !(Maybe ChartData)+    , _ocsSelectedNodeColor :: !(Maybe Color)+    , _ocsLabels            :: !(Maybe ChartData)+    , _ocsParentLabels      :: !(Maybe ChartData)+    }+  deriving (Eq, Show, Data, Typeable, Generic)+++-- | Creates a value of 'OrgChartSpec' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'ocsNodeColor'+--+-- * 'ocsNodeSize'+--+-- * 'ocsTooltips'+--+-- * 'ocsSelectedNodeColor'+--+-- * 'ocsLabels'+--+-- * 'ocsParentLabels'+orgChartSpec+    :: OrgChartSpec+orgChartSpec =+  OrgChartSpec'+    { _ocsNodeColor = Nothing+    , _ocsNodeSize = Nothing+    , _ocsTooltips = Nothing+    , _ocsSelectedNodeColor = Nothing+    , _ocsLabels = Nothing+    , _ocsParentLabels = Nothing+    }+++-- | The color of the org chart nodes.+ocsNodeColor :: Lens' OrgChartSpec (Maybe Color)+ocsNodeColor+  = lens _ocsNodeColor (\ s a -> s{_ocsNodeColor = a})++-- | The size of the org chart nodes.+ocsNodeSize :: Lens' OrgChartSpec (Maybe OrgChartSpecNodeSize)+ocsNodeSize+  = lens _ocsNodeSize (\ s a -> s{_ocsNodeSize = a})++-- | The data containing the tooltip for the corresponding node. A blank+-- value results in no tooltip being displayed for the node. This field is+-- optional.+ocsTooltips :: Lens' OrgChartSpec (Maybe ChartData)+ocsTooltips+  = lens _ocsTooltips (\ s a -> s{_ocsTooltips = a})++-- | The color of the selected org chart nodes.+ocsSelectedNodeColor :: Lens' OrgChartSpec (Maybe Color)+ocsSelectedNodeColor+  = lens _ocsSelectedNodeColor+      (\ s a -> s{_ocsSelectedNodeColor = a})++-- | The data containing the labels for all the nodes in the chart. Labels+-- must be unique.+ocsLabels :: Lens' OrgChartSpec (Maybe ChartData)+ocsLabels+  = lens _ocsLabels (\ s a -> s{_ocsLabels = a})++-- | The data containing the label of the parent for the corresponding node.+-- A blank value indicates that the node has no parent and is a top-level+-- node. This field is optional.+ocsParentLabels :: Lens' OrgChartSpec (Maybe ChartData)+ocsParentLabels+  = lens _ocsParentLabels+      (\ s a -> s{_ocsParentLabels = a})++instance FromJSON OrgChartSpec where+        parseJSON+          = withObject "OrgChartSpec"+              (\ o ->+                 OrgChartSpec' <$>+                   (o .:? "nodeColor") <*> (o .:? "nodeSize") <*>+                     (o .:? "tooltips")+                     <*> (o .:? "selectedNodeColor")+                     <*> (o .:? "labels")+                     <*> (o .:? "parentLabels"))++instance ToJSON OrgChartSpec where+        toJSON OrgChartSpec'{..}+          = object+              (catMaybes+                 [("nodeColor" .=) <$> _ocsNodeColor,+                  ("nodeSize" .=) <$> _ocsNodeSize,+                  ("tooltips" .=) <$> _ocsTooltips,+                  ("selectedNodeColor" .=) <$> _ocsSelectedNodeColor,+                  ("labels" .=) <$> _ocsLabels,+                  ("parentLabels" .=) <$> _ocsParentLabels])++-- | Randomizes the order of the rows in a range.+--+-- /See:/ 'randomizeRangeRequest' smart constructor.+newtype RandomizeRangeRequest =+  RandomizeRangeRequest'+    { _rrrRange :: Maybe GridRange+    }+  deriving (Eq, Show, Data, Typeable, Generic)+++-- | Creates a value of 'RandomizeRangeRequest' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'rrrRange'+randomizeRangeRequest+    :: RandomizeRangeRequest+randomizeRangeRequest = RandomizeRangeRequest' {_rrrRange = Nothing}+++-- | The range to randomize.+rrrRange :: Lens' RandomizeRangeRequest (Maybe GridRange)+rrrRange = lens _rrrRange (\ s a -> s{_rrrRange = a})++instance FromJSON RandomizeRangeRequest where+        parseJSON+          = withObject "RandomizeRangeRequest"+              (\ o -> RandomizeRangeRequest' <$> (o .:? "range"))++instance ToJSON RandomizeRangeRequest where+        toJSON RandomizeRangeRequest'{..}+          = object (catMaybes [("range" .=) <$> _rrrRange])++-- | A histogram series containing the series color and data.+--+-- /See:/ 'histogramSeries' smart constructor.+data HistogramSeries =+  HistogramSeries'+    { _hsBarColor :: !(Maybe Color)+    , _hsData     :: !(Maybe ChartData)+    }+  deriving (Eq, Show, Data, Typeable, Generic)+++-- | Creates a value of 'HistogramSeries' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'hsBarColor'+--+-- * 'hsData'+histogramSeries+    :: HistogramSeries+histogramSeries = HistogramSeries' {_hsBarColor = Nothing, _hsData = Nothing}+++-- | The color of the column representing this series in each bucket. This+-- field is optional.+hsBarColor :: Lens' HistogramSeries (Maybe Color)+hsBarColor+  = lens _hsBarColor (\ s a -> s{_hsBarColor = a})++-- | The data for this histogram series.+hsData :: Lens' HistogramSeries (Maybe ChartData)+hsData = lens _hsData (\ s a -> s{_hsData = a})++instance FromJSON HistogramSeries where+        parseJSON+          = withObject "HistogramSeries"+              (\ o ->+                 HistogramSeries' <$>+                   (o .:? "barColor") <*> (o .:? "data"))++instance ToJSON HistogramSeries where+        toJSON HistogramSeries'{..}+          = object+              (catMaybes+                 [("barColor" .=) <$> _hsBarColor,+                  ("data" .=) <$> _hsData])++-- | A </chart/interactive/docs/gallery/treemap Treemap chart>.+--+-- /See:/ 'treemapChartSpec' smart constructor.+data TreemapChartSpec =+  TreemapChartSpec'+    { _tcsHintedLevels :: !(Maybe (Textual Int32))+    , _tcsMaxValue     :: !(Maybe (Textual Double))+    , _tcsHeaderColor  :: !(Maybe Color)+    , _tcsSizeData     :: !(Maybe ChartData)+    , _tcsColorData    :: !(Maybe ChartData)+    , _tcsHideTooltips :: !(Maybe Bool)+    , _tcsLevels       :: !(Maybe (Textual Int32))+    , _tcsLabels       :: !(Maybe ChartData)+    , _tcsColorScale   :: !(Maybe TreemapChartColorScale)+    , _tcsTextFormat   :: !(Maybe TextFormat)+    , _tcsMinValue     :: !(Maybe (Textual Double))+    , _tcsParentLabels :: !(Maybe ChartData)+    }+  deriving (Eq, Show, Data, Typeable, Generic)+++-- | Creates a value of 'TreemapChartSpec' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'tcsHintedLevels'+--+-- * 'tcsMaxValue'+--+-- * 'tcsHeaderColor'+--+-- * 'tcsSizeData'+--+-- * 'tcsColorData'+--+-- * 'tcsHideTooltips'+--+-- * 'tcsLevels'+--+-- * 'tcsLabels'+--+-- * 'tcsColorScale'+--+-- * 'tcsTextFormat'+--+-- * 'tcsMinValue'+--+-- * 'tcsParentLabels'+treemapChartSpec+    :: TreemapChartSpec+treemapChartSpec =+  TreemapChartSpec'+    { _tcsHintedLevels = Nothing+    , _tcsMaxValue = Nothing+    , _tcsHeaderColor = Nothing+    , _tcsSizeData = Nothing+    , _tcsColorData = Nothing+    , _tcsHideTooltips = Nothing+    , _tcsLevels = Nothing+    , _tcsLabels = Nothing+    , _tcsColorScale = Nothing+    , _tcsTextFormat = Nothing+    , _tcsMinValue = Nothing+    , _tcsParentLabels = Nothing+    }+++-- | The number of additional data levels beyond the labeled levels to be+-- shown on the treemap chart. These levels are not interactive and are+-- shown without their labels. Defaults to 0 if not specified.+tcsHintedLevels :: Lens' TreemapChartSpec (Maybe Int32)+tcsHintedLevels+  = lens _tcsHintedLevels+      (\ s a -> s{_tcsHintedLevels = a})+      . mapping _Coerce++-- | The maximum possible data value. Cells with values greater than this+-- will have the same color as cells with this value. If not specified,+-- defaults to the actual maximum value from color_data, or the maximum+-- value from size_data if color_data is not specified.+tcsMaxValue :: Lens' TreemapChartSpec (Maybe Double)+tcsMaxValue+  = lens _tcsMaxValue (\ s a -> s{_tcsMaxValue = a}) .+      mapping _Coerce++-- | The background color for header cells.+tcsHeaderColor :: Lens' TreemapChartSpec (Maybe Color)+tcsHeaderColor+  = lens _tcsHeaderColor+      (\ s a -> s{_tcsHeaderColor = a})++-- | The data that determines the size of each treemap data cell. This data+-- is expected to be numeric. The cells corresponding to non-numeric or+-- missing data will not be rendered. If color_data is not specified, this+-- data is used to determine data cell background colors as well.+tcsSizeData :: Lens' TreemapChartSpec (Maybe ChartData)+tcsSizeData+  = lens _tcsSizeData (\ s a -> s{_tcsSizeData = a})++-- | The data that determines the background color of each treemap data cell.+-- This field is optional. If not specified, size_data is used to determine+-- background colors. If specified, the data is expected to be numeric.+-- color_scale will determine how the values in this data map to data cell+-- background colors.+tcsColorData :: Lens' TreemapChartSpec (Maybe ChartData)+tcsColorData+  = lens _tcsColorData (\ s a -> s{_tcsColorData = a})++-- | True to hide tooltips.+tcsHideTooltips :: Lens' TreemapChartSpec (Maybe Bool)+tcsHideTooltips+  = lens _tcsHideTooltips+      (\ s a -> s{_tcsHideTooltips = a})++-- | The number of data levels to show on the treemap chart. These levels are+-- interactive and are shown with their labels. Defaults to 2 if not+-- specified.+tcsLevels :: Lens' TreemapChartSpec (Maybe Int32)+tcsLevels+  = lens _tcsLevels (\ s a -> s{_tcsLevels = a}) .+      mapping _Coerce++-- | The data that contains the treemap cell labels.+tcsLabels :: Lens' TreemapChartSpec (Maybe ChartData)+tcsLabels+  = lens _tcsLabels (\ s a -> s{_tcsLabels = a})++-- | The color scale for data cells in the treemap chart. Data cells are+-- assigned colors based on their color values. These color values come+-- from color_data, or from size_data if color_data is not specified. Cells+-- with color values less than or equal to min_value will have+-- minValueColor as their background color. Cells with color values greater+-- than or equal to max_value will have maxValueColor as their background+-- color. Cells with color values between min_value and max_value will have+-- background colors on a gradient between minValueColor and maxValueColor,+-- the midpoint of the gradient being midValueColor. Cells with missing or+-- non-numeric color values will have noDataColor as their background+-- color.+tcsColorScale :: Lens' TreemapChartSpec (Maybe TreemapChartColorScale)+tcsColorScale+  = lens _tcsColorScale+      (\ s a -> s{_tcsColorScale = a})++-- | The text format for all labels on the chart.+tcsTextFormat :: Lens' TreemapChartSpec (Maybe TextFormat)+tcsTextFormat+  = lens _tcsTextFormat+      (\ s a -> s{_tcsTextFormat = a})++-- | The minimum possible data value. Cells with values less than this will+-- have the same color as cells with this value. If not specified, defaults+-- to the actual minimum value from color_data, or the minimum value from+-- size_data if color_data is not specified.+tcsMinValue :: Lens' TreemapChartSpec (Maybe Double)+tcsMinValue+  = lens _tcsMinValue (\ s a -> s{_tcsMinValue = a}) .+      mapping _Coerce++-- | The data the contains the treemap cells\' parent labels.+tcsParentLabels :: Lens' TreemapChartSpec (Maybe ChartData)+tcsParentLabels+  = lens _tcsParentLabels+      (\ s a -> s{_tcsParentLabels = a})++instance FromJSON TreemapChartSpec where+        parseJSON+          = withObject "TreemapChartSpec"+              (\ o ->+                 TreemapChartSpec' <$>+                   (o .:? "hintedLevels") <*> (o .:? "maxValue") <*>+                     (o .:? "headerColor")+                     <*> (o .:? "sizeData")+                     <*> (o .:? "colorData")+                     <*> (o .:? "hideTooltips")+                     <*> (o .:? "levels")+                     <*> (o .:? "labels")+                     <*> (o .:? "colorScale")+                     <*> (o .:? "textFormat")+                     <*> (o .:? "minValue")+                     <*> (o .:? "parentLabels"))++instance ToJSON TreemapChartSpec where+        toJSON TreemapChartSpec'{..}+          = object+              (catMaybes+                 [("hintedLevels" .=) <$> _tcsHintedLevels,+                  ("maxValue" .=) <$> _tcsMaxValue,+                  ("headerColor" .=) <$> _tcsHeaderColor,+                  ("sizeData" .=) <$> _tcsSizeData,+                  ("colorData" .=) <$> _tcsColorData,+                  ("hideTooltips" .=) <$> _tcsHideTooltips,+                  ("levels" .=) <$> _tcsLevels,+                  ("labels" .=) <$> _tcsLabels,+                  ("colorScale" .=) <$> _tcsColorScale,+                  ("textFormat" .=) <$> _tcsTextFormat,+                  ("minValue" .=) <$> _tcsMinValue,+                  ("parentLabels" .=) <$> _tcsParentLabels])++-- | 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 are 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'+    { _basHeaderCount      :: !(Maybe (Textual Int32))+    , _basLineSmoothing    :: !(Maybe Bool)+    , _basInterpolateNulls :: !(Maybe Bool)+    , _basStackedType      :: !(Maybe BasicChartSpecStackedType)+    , _basLegendPosition   :: !(Maybe BasicChartSpecLegendPosition)+    , _basSeries           :: !(Maybe [BasicChartSeries])+    , _basCompareMode      :: !(Maybe BasicChartSpecCompareMode)+    , _basChartType        :: !(Maybe BasicChartSpecChartType)+    , _basThreeDimensional :: !(Maybe Bool)+    , _basDomains          :: !(Maybe [BasicChartDomain])+    , _basAxis             :: !(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:+--+-- * 'basHeaderCount'+--+-- * 'basLineSmoothing'+--+-- * 'basInterpolateNulls'+--+-- * 'basStackedType'+--+-- * 'basLegendPosition'+--+-- * 'basSeries'+--+-- * 'basCompareMode'+--+-- * 'basChartType'+--+-- * 'basThreeDimensional'+--+-- * 'basDomains'+--+-- * 'basAxis'+basicChartSpec+    :: BasicChartSpec+basicChartSpec =+  BasicChartSpec'+    { _basHeaderCount = Nothing+    , _basLineSmoothing = Nothing+    , _basInterpolateNulls = Nothing+    , _basStackedType = Nothing+    , _basLegendPosition = Nothing+    , _basSeries = Nothing+    , _basCompareMode = Nothing+    , _basChartType = Nothing+    , _basThreeDimensional = Nothing+    , _basDomains = Nothing+    , _basAxis = 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.)+basHeaderCount :: Lens' BasicChartSpec (Maybe Int32)+basHeaderCount+  = lens _basHeaderCount+      (\ s a -> s{_basHeaderCount = a})+      . mapping _Coerce++-- | Gets whether all lines should be rendered smooth or straight by default.+-- Applies to Line charts.+basLineSmoothing :: Lens' BasicChartSpec (Maybe Bool)+basLineSmoothing+  = lens _basLineSmoothing+      (\ s a -> s{_basLineSmoothing = a})++-- | If some values in a series are missing, gaps may appear in the chart+-- (e.g, segments of lines in a line chart will be missing). To eliminate+-- these gaps set this to true. Applies to Line, Area, and Combo charts.+basInterpolateNulls :: Lens' BasicChartSpec (Maybe Bool)+basInterpolateNulls+  = lens _basInterpolateNulls+      (\ s a -> s{_basInterpolateNulls = a})++-- | The stacked type for charts that support vertical stacking. Applies to+-- Area, Bar, Column, Combo, and Stepped Area charts.+basStackedType :: Lens' BasicChartSpec (Maybe BasicChartSpecStackedType)+basStackedType+  = lens _basStackedType+      (\ s a -> s{_basStackedType = a})++-- | The position of the chart legend.+basLegendPosition :: Lens' BasicChartSpec (Maybe BasicChartSpecLegendPosition)+basLegendPosition+  = lens _basLegendPosition+      (\ s a -> s{_basLegendPosition = a})++-- | The data this chart is visualizing.+basSeries :: Lens' BasicChartSpec [BasicChartSeries]+basSeries+  = lens _basSeries (\ s a -> s{_basSeries = a}) .+      _Default+      . _Coerce++-- | The behavior of tooltips and data highlighting when hovering on data and+-- chart area.+basCompareMode :: Lens' BasicChartSpec (Maybe BasicChartSpecCompareMode)+basCompareMode+  = lens _basCompareMode+      (\ s a -> s{_basCompareMode = a})++-- | The type of the chart.+basChartType :: Lens' BasicChartSpec (Maybe BasicChartSpecChartType)+basChartType+  = lens _basChartType (\ s a -> s{_basChartType = a})++-- | True to make the chart 3D. Applies to Bar and Column charts.+basThreeDimensional :: Lens' BasicChartSpec (Maybe Bool)+basThreeDimensional+  = lens _basThreeDimensional+      (\ s a -> s{_basThreeDimensional = a})++-- | The domain of data this is charting. Only a single domain is supported.+basDomains :: Lens' BasicChartSpec [BasicChartDomain]+basDomains+  = lens _basDomains (\ s a -> s{_basDomains = a}) .+      _Default+      . _Coerce++-- | The axis on the chart.+basAxis :: Lens' BasicChartSpec [BasicChartAxis]+basAxis+  = lens _basAxis (\ s a -> s{_basAxis = a}) . _Default+      . _Coerce++instance FromJSON BasicChartSpec where+        parseJSON+          = withObject "BasicChartSpec"+              (\ o ->+                 BasicChartSpec' <$>+                   (o .:? "headerCount") <*> (o .:? "lineSmoothing") <*>+                     (o .:? "interpolateNulls")+                     <*> (o .:? "stackedType")+                     <*> (o .:? "legendPosition")+                     <*> (o .:? "series" .!= mempty)+                     <*> (o .:? "compareMode")+                     <*> (o .:? "chartType")+                     <*> (o .:? "threeDimensional")+                     <*> (o .:? "domains" .!= mempty)+                     <*> (o .:? "axis" .!= mempty))++instance ToJSON BasicChartSpec where+        toJSON BasicChartSpec'{..}+          = object+              (catMaybes+                 [("headerCount" .=) <$> _basHeaderCount,+                  ("lineSmoothing" .=) <$> _basLineSmoothing,+                  ("interpolateNulls" .=) <$> _basInterpolateNulls,+                  ("stackedType" .=) <$> _basStackedType,+                  ("legendPosition" .=) <$> _basLegendPosition,+                  ("series" .=) <$> _basSeries,+                  ("compareMode" .=) <$> _basCompareMode,+                  ("chartType" .=) <$> _basChartType,+                  ("threeDimensional" .=) <$> _basThreeDimensional,+                  ("domains" .=) <$> _basDomains,+                  ("axis" .=) <$> _basAxis])++-- | A group name and a list of items from the source data that should be+-- placed in the group with this name.+--+-- /See:/ 'manualRuleGroup' smart constructor.+data ManualRuleGroup =+  ManualRuleGroup'+    { _mrgItems     :: !(Maybe [ExtendedValue])+    , _mrgGroupName :: !(Maybe ExtendedValue)+    }+  deriving (Eq, Show, Data, Typeable, Generic)+++-- | Creates a value of 'ManualRuleGroup' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'mrgItems'+--+-- * 'mrgGroupName'+manualRuleGroup+    :: ManualRuleGroup+manualRuleGroup =+  ManualRuleGroup' {_mrgItems = Nothing, _mrgGroupName = Nothing}+++-- | The items in the source data that should be placed into this group. Each+-- item may be a string, number, or boolean. Items may appear in at most+-- one group within a given ManualRule. Items that do not appear in any+-- group will appear on their own.+mrgItems :: Lens' ManualRuleGroup [ExtendedValue]+mrgItems+  = lens _mrgItems (\ s a -> s{_mrgItems = a}) .+      _Default+      . _Coerce++-- | The group name, which must be a string. Each group in a given ManualRule+-- must have a unique group name.+mrgGroupName :: Lens' ManualRuleGroup (Maybe ExtendedValue)+mrgGroupName+  = lens _mrgGroupName (\ s a -> s{_mrgGroupName = a})++instance FromJSON ManualRuleGroup where+        parseJSON+          = withObject "ManualRuleGroup"+              (\ o ->+                 ManualRuleGroup' <$>+                   (o .:? "items" .!= mempty) <*> (o .:? "groupName"))++instance ToJSON ManualRuleGroup where+        toJSON ManualRuleGroup'{..}+          = object+              (catMaybes+                 [("items" .=) <$> _mrgItems,+                  ("groupName" .=) <$> _mrgGroupName])++-- | 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])++-- | Developer metadata associated with a location or object in a+-- spreadsheet. Developer metadata may be used to associate arbitrary data+-- with various parts of a spreadsheet and will remain associated at those+-- locations as they move around and the spreadsheet is edited. For+-- example, if developer metadata is associated with row 5 and another row+-- is then subsequently inserted above row 5, that original metadata will+-- still be associated with the row it was first associated with (what is+-- now row 6). If the associated object is deleted its metadata is deleted+-- too.+--+-- /See:/ 'developerMetadata' smart constructor.+data DeveloperMetadata =+  DeveloperMetadata'+    { _dmLocation      :: !(Maybe DeveloperMetadataLocation)+    , _dmMetadataId    :: !(Maybe (Textual Int32))+    , _dmVisibility    :: !(Maybe DeveloperMetadataVisibility)+    , _dmMetadataKey   :: !(Maybe Text)+    , _dmMetadataValue :: !(Maybe Text)+    }+  deriving (Eq, Show, Data, Typeable, Generic)+++-- | Creates a value of 'DeveloperMetadata' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'dmLocation'+--+-- * 'dmMetadataId'+--+-- * 'dmVisibility'+--+-- * 'dmMetadataKey'+--+-- * 'dmMetadataValue'+developerMetadata+    :: DeveloperMetadata+developerMetadata =+  DeveloperMetadata'+    { _dmLocation = Nothing+    , _dmMetadataId = Nothing+    , _dmVisibility = Nothing+    , _dmMetadataKey = Nothing+    , _dmMetadataValue = Nothing+    }+++-- | The location where the metadata is associated.+dmLocation :: Lens' DeveloperMetadata (Maybe DeveloperMetadataLocation)+dmLocation+  = lens _dmLocation (\ s a -> s{_dmLocation = a})++-- | The spreadsheet-scoped unique ID that identifies the metadata. IDs may+-- be specified when metadata is created, otherwise one will be randomly+-- generated and assigned. Must be positive.+dmMetadataId :: Lens' DeveloperMetadata (Maybe Int32)+dmMetadataId+  = lens _dmMetadataId (\ s a -> s{_dmMetadataId = a})+      . mapping _Coerce++-- | The metadata visibility. Developer metadata must always have a+-- visibility specified.+dmVisibility :: Lens' DeveloperMetadata (Maybe DeveloperMetadataVisibility)+dmVisibility+  = lens _dmVisibility (\ s a -> s{_dmVisibility = a})++-- | The metadata key. There may be multiple metadata in a spreadsheet with+-- the same key. Developer metadata must always have a key specified.+dmMetadataKey :: Lens' DeveloperMetadata (Maybe Text)+dmMetadataKey+  = lens _dmMetadataKey+      (\ s a -> s{_dmMetadataKey = a})++-- | Data associated with the metadata\'s key.+dmMetadataValue :: Lens' DeveloperMetadata (Maybe Text)+dmMetadataValue+  = lens _dmMetadataValue+      (\ s a -> s{_dmMetadataValue = a})++instance FromJSON DeveloperMetadata where+        parseJSON+          = withObject "DeveloperMetadata"+              (\ o ->+                 DeveloperMetadata' <$>+                   (o .:? "location") <*> (o .:? "metadataId") <*>+                     (o .:? "visibility")+                     <*> (o .:? "metadataKey")+                     <*> (o .:? "metadataValue"))++instance ToJSON DeveloperMetadata where+        toJSON DeveloperMetadata'{..}+          = object+              (catMaybes+                 [("location" .=) <$> _dmLocation,+                  ("metadataId" .=) <$> _dmMetadataId,+                  ("visibility" .=) <$> _dmVisibility,+                  ("metadataKey" .=) <$> _dmMetadataKey,+                  ("metadataValue" .=) <$> _dmMetadataValue])++-- | A color scale for a treemap chart.+--+-- /See:/ 'treemapChartColorScale' smart constructor.+data TreemapChartColorScale =+  TreemapChartColorScale'+    { _tccsMinValueColor :: !(Maybe Color)+    , _tccsNoDataColor   :: !(Maybe Color)+    , _tccsMaxValueColor :: !(Maybe Color)+    , _tccsMidValueColor :: !(Maybe Color)+    }+  deriving (Eq, Show, Data, Typeable, Generic)+++-- | Creates a value of 'TreemapChartColorScale' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'tccsMinValueColor'+--+-- * 'tccsNoDataColor'+--+-- * 'tccsMaxValueColor'+--+-- * 'tccsMidValueColor'+treemapChartColorScale+    :: TreemapChartColorScale+treemapChartColorScale =+  TreemapChartColorScale'+    { _tccsMinValueColor = Nothing+    , _tccsNoDataColor = Nothing+    , _tccsMaxValueColor = Nothing+    , _tccsMidValueColor = Nothing+    }+++-- | The background color for cells with a color value less than or equal to+-- minValue. Defaults to #dc3912 if not specified.+tccsMinValueColor :: Lens' TreemapChartColorScale (Maybe Color)+tccsMinValueColor+  = lens _tccsMinValueColor+      (\ s a -> s{_tccsMinValueColor = a})++-- | The background color for cells that have no color data associated with+-- them. Defaults to #000000 if not specified.+tccsNoDataColor :: Lens' TreemapChartColorScale (Maybe Color)+tccsNoDataColor+  = lens _tccsNoDataColor+      (\ s a -> s{_tccsNoDataColor = a})++-- | The background color for cells with a color value greater than or equal+-- to maxValue. Defaults to #109618 if not specified.+tccsMaxValueColor :: Lens' TreemapChartColorScale (Maybe Color)+tccsMaxValueColor+  = lens _tccsMaxValueColor+      (\ s a -> s{_tccsMaxValueColor = a})++-- | The background color for cells with a color value at the midpoint+-- between minValue and maxValue. Defaults to #efe6dc if not specified.+tccsMidValueColor :: Lens' TreemapChartColorScale (Maybe Color)+tccsMidValueColor+  = lens _tccsMidValueColor+      (\ s a -> s{_tccsMidValueColor = a})++instance FromJSON TreemapChartColorScale where+        parseJSON+          = withObject "TreemapChartColorScale"+              (\ o ->+                 TreemapChartColorScale' <$>+                   (o .:? "minValueColor") <*> (o .:? "noDataColor") <*>+                     (o .:? "maxValueColor")+                     <*> (o .:? "midValueColor"))++instance ToJSON TreemapChartColorScale where+        toJSON TreemapChartColorScale'{..}+          = object+              (catMaybes+                 [("minValueColor" .=) <$> _tccsMinValueColor,+                  ("noDataColor" .=) <$> _tccsNoDataColor,+                  ("maxValueColor" .=) <$> _tccsMaxValueColor,+                  ("midValueColor" .=) <$> _tccsMidValueColor])++-- | 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])++-- | A request to create developer metadata.+--+-- /See:/ 'createDeveloperMetadataRequest' smart constructor.+newtype CreateDeveloperMetadataRequest =+  CreateDeveloperMetadataRequest'+    { _cDeveloperMetadata :: Maybe DeveloperMetadata+    }+  deriving (Eq, Show, Data, Typeable, Generic)+++-- | Creates a value of 'CreateDeveloperMetadataRequest' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'cDeveloperMetadata'+createDeveloperMetadataRequest+    :: CreateDeveloperMetadataRequest+createDeveloperMetadataRequest =+  CreateDeveloperMetadataRequest' {_cDeveloperMetadata = Nothing}+++-- | The developer metadata to create.+cDeveloperMetadata :: Lens' CreateDeveloperMetadataRequest (Maybe DeveloperMetadata)+cDeveloperMetadata+  = lens _cDeveloperMetadata+      (\ s a -> s{_cDeveloperMetadata = a})++instance FromJSON CreateDeveloperMetadataRequest+         where+        parseJSON+          = withObject "CreateDeveloperMetadataRequest"+              (\ o ->+                 CreateDeveloperMetadataRequest' <$>+                   (o .:? "developerMetadata"))++instance ToJSON CreateDeveloperMetadataRequest where+        toJSON CreateDeveloperMetadataRequest'{..}+          = object+              (catMaybes+                 [("developerMetadata" .=) <$> _cDeveloperMetadata])++-- | The response when clearing a range of values in a spreadsheet.+--+-- /See:/ 'batchClearValuesResponse' smart constructor.+data BatchClearValuesResponse =+  BatchClearValuesResponse'+    { _bcvrClearedRanges :: !(Maybe [Text])+    , _bcvrSpreadsheetId :: !(Maybe Text)+    }+  deriving (Eq, Show, Data, Typeable, Generic)+++-- | Creates a value of 'BatchClearValuesResponse' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'bcvrClearedRanges'+--+-- * 'bcvrSpreadsheetId'+batchClearValuesResponse+    :: BatchClearValuesResponse+batchClearValuesResponse =+  BatchClearValuesResponse'+    {_bcvrClearedRanges = Nothing, _bcvrSpreadsheetId = Nothing}+++-- | The ranges that were cleared, in A1 notation. (If the requests were for+-- an unbounded range or a ranger larger than the bounds of the sheet, this+-- will be the actual ranges that were cleared, bounded to the sheet\'s+-- limits.)+bcvrClearedRanges :: Lens' BatchClearValuesResponse [Text]+bcvrClearedRanges+  = lens _bcvrClearedRanges+      (\ s a -> s{_bcvrClearedRanges = a})+      . _Default+      . _Coerce++-- | The spreadsheet the updates were applied to.+bcvrSpreadsheetId :: Lens' BatchClearValuesResponse (Maybe Text)+bcvrSpreadsheetId+  = lens _bcvrSpreadsheetId+      (\ s a -> s{_bcvrSpreadsheetId = a})++instance FromJSON BatchClearValuesResponse where+        parseJSON+          = withObject "BatchClearValuesResponse"+              (\ o ->+                 BatchClearValuesResponse' <$>+                   (o .:? "clearedRanges" .!= mempty) <*>+                     (o .:? "spreadsheetId"))++instance ToJSON BatchClearValuesResponse where+        toJSON BatchClearValuesResponse'{..}+          = object+              (catMaybes+                 [("clearedRanges" .=) <$> _bcvrClearedRanges,+                  ("spreadsheetId" .=) <$> _bcvrSpreadsheetId])++-- | A value range that was matched by one or more data filers.+--+-- /See:/ 'matchedValueRange' smart constructor.+data MatchedValueRange =+  MatchedValueRange'+    { _mvrValueRange  :: !(Maybe ValueRange)+    , _mvrDataFilters :: !(Maybe [DataFilter])+    }+  deriving (Eq, Show, Data, Typeable, Generic)+++-- | Creates a value of 'MatchedValueRange' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'mvrValueRange'+--+-- * 'mvrDataFilters'+matchedValueRange+    :: MatchedValueRange+matchedValueRange =+  MatchedValueRange' {_mvrValueRange = Nothing, _mvrDataFilters = Nothing}+++-- | The values matched by the DataFilter.+mvrValueRange :: Lens' MatchedValueRange (Maybe ValueRange)+mvrValueRange+  = lens _mvrValueRange+      (\ s a -> s{_mvrValueRange = a})++-- | The DataFilters from the request that matched the range of values.+mvrDataFilters :: Lens' MatchedValueRange [DataFilter]+mvrDataFilters+  = lens _mvrDataFilters+      (\ s a -> s{_mvrDataFilters = a})+      . _Default+      . _Coerce++instance FromJSON MatchedValueRange where+        parseJSON+          = withObject "MatchedValueRange"+              (\ o ->+                 MatchedValueRange' <$>+                   (o .:? "valueRange") <*>+                     (o .:? "dataFilters" .!= mempty))++instance ToJSON MatchedValueRange where+        toJSON MatchedValueRange'{..}+          = object+              (catMaybes+                 [("valueRange" .=) <$> _mvrValueRange,+                  ("dataFilters" .=) <$> _mvrDataFilters])++-- | The domain of a chart. For example, if charting stock prices over time,+-- this would be the date.+--+-- /See:/ 'basicChartDomain' smart constructor.+data BasicChartDomain =+  BasicChartDomain'+    { _bcdReversed :: !(Maybe Bool)+    , _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:+--+-- * 'bcdReversed'+--+-- * 'bcdDomain'+basicChartDomain+    :: BasicChartDomain+basicChartDomain =+  BasicChartDomain' {_bcdReversed = Nothing, _bcdDomain = Nothing}+++-- | True to reverse the order of the domain values (horizontal axis).+bcdReversed :: Lens' BasicChartDomain (Maybe Bool)+bcdReversed+  = lens _bcdReversed (\ s a -> s{_bcdReversed = a})++-- | 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 .:? "reversed") <*> (o .:? "domain"))++instance ToJSON BasicChartDomain where+        toJSON BasicChartDomain'{..}+          = object+              (catMaybes+                 [("reversed" .=) <$> _bcdReversed,+                  ("domain" .=) <$> _bcdDomain])++-- | Allows you to organize the numeric values in a source data column into+-- buckets of a constant size. All values from HistogramRule.start to+-- HistogramRule.end are placed into groups of size HistogramRule.interval.+-- In addition, all values below HistogramRule.start are placed in one+-- group, and all values above HistogramRule.end are placed in another.+-- Only HistogramRule.interval is required, though if HistogramRule.start+-- and HistogramRule.end are both provided, HistogramRule.start must be+-- less than HistogramRule.end. For example, a pivot table showing average+-- purchase amount by age that has 50+ rows: +-----+-------------------+ |+-- Age | AVERAGE of Amount | +-----+-------------------+ | 16 | $27.13 | |+-- 17 | $5.24 | | 18 | $20.15 | ... +-----+-------------------+ could be+-- turned into a pivot table that looks like the one below by applying a+-- histogram group rule with a HistogramRule.start of 25, an+-- HistogramRule.interval of 20, and an HistogramRule.end of 65.+-- +-------------+-------------------+ | Grouped Age | AVERAGE of Amount |+-- +-------------+-------------------+ | \< 25 | $19.34 | | 25-45 | $31.43+-- | | 45-65 | $35.87 | | > 65 | $27.55 |+-- +-------------+-------------------+ | Grand Total | $29.12 |+-- +-------------+-------------------++--+-- /See:/ 'histogramRule' smart constructor.+data HistogramRule =+  HistogramRule'+    { _hrStart    :: !(Maybe (Textual Double))+    , _hrInterval :: !(Maybe (Textual Double))+    , _hrEnd      :: !(Maybe (Textual Double))+    }+  deriving (Eq, Show, Data, Typeable, Generic)+++-- | Creates a value of 'HistogramRule' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'hrStart'+--+-- * 'hrInterval'+--+-- * 'hrEnd'+histogramRule+    :: HistogramRule+histogramRule =+  HistogramRule' {_hrStart = Nothing, _hrInterval = Nothing, _hrEnd = Nothing}+++-- | The minimum value at which items are placed into buckets of constant+-- size. Values below start are lumped into a single bucket. This field is+-- optional.+hrStart :: Lens' HistogramRule (Maybe Double)+hrStart+  = lens _hrStart (\ s a -> s{_hrStart = a}) .+      mapping _Coerce++-- | The size of the buckets that are created. Must be positive.+hrInterval :: Lens' HistogramRule (Maybe Double)+hrInterval+  = lens _hrInterval (\ s a -> s{_hrInterval = a}) .+      mapping _Coerce++-- | The maximum value at which items are placed into buckets of constant+-- size. Values above end are lumped into a single bucket. This field is+-- optional.+hrEnd :: Lens' HistogramRule (Maybe Double)+hrEnd+  = lens _hrEnd (\ s a -> s{_hrEnd = a}) .+      mapping _Coerce++instance FromJSON HistogramRule where+        parseJSON+          = withObject "HistogramRule"+              (\ o ->+                 HistogramRule' <$>+                   (o .:? "start") <*> (o .:? "interval") <*>+                     (o .:? "end"))++instance ToJSON HistogramRule where+        toJSON HistogramRule'{..}+          = object+              (catMaybes+                 [("start" .=) <$> _hrStart,+                  ("interval" .=) <$> _hrInterval,+                  ("end" .=) <$> _hrEnd])++-- | A developer metadata entry and the data filters specified in the+-- original request that matched it.+--+-- /See:/ 'matchedDeveloperMetadata' smart constructor.+data MatchedDeveloperMetadata =+  MatchedDeveloperMetadata'+    { _mdmDataFilters       :: !(Maybe [DataFilter])+    , _mdmDeveloperMetadata :: !(Maybe DeveloperMetadata)+    }+  deriving (Eq, Show, Data, Typeable, Generic)+++-- | Creates a value of 'MatchedDeveloperMetadata' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'mdmDataFilters'+--+-- * 'mdmDeveloperMetadata'+matchedDeveloperMetadata+    :: MatchedDeveloperMetadata+matchedDeveloperMetadata =+  MatchedDeveloperMetadata'+    {_mdmDataFilters = Nothing, _mdmDeveloperMetadata = Nothing}+++-- | All filters matching the returned developer metadata.+mdmDataFilters :: Lens' MatchedDeveloperMetadata [DataFilter]+mdmDataFilters+  = lens _mdmDataFilters+      (\ s a -> s{_mdmDataFilters = a})+      . _Default+      . _Coerce++-- | The developer metadata matching the specified filters.+mdmDeveloperMetadata :: Lens' MatchedDeveloperMetadata (Maybe DeveloperMetadata)+mdmDeveloperMetadata+  = lens _mdmDeveloperMetadata+      (\ s a -> s{_mdmDeveloperMetadata = a})++instance FromJSON MatchedDeveloperMetadata where+        parseJSON+          = withObject "MatchedDeveloperMetadata"+              (\ o ->+                 MatchedDeveloperMetadata' <$>+                   (o .:? "dataFilters" .!= mempty) <*>+                     (o .:? "developerMetadata"))++instance ToJSON MatchedDeveloperMetadata where+        toJSON MatchedDeveloperMetadata'{..}+          = object+              (catMaybes+                 [("dataFilters" .=) <$> _mdmDataFilters,+                  ("developerMetadata" .=) <$> _mdmDeveloperMetadata])++-- | Inserts cells into a range, shifting the existing cells over or down.+--+-- /See:/ 'insertRangeRequest' smart constructor.+data InsertRangeRequest =+  InsertRangeRequest'+    { _irrShiftDimension :: !(Maybe InsertRangeRequestShiftDimension)+    , _irrRange          :: !(Maybe GridRange)+    }+  deriving (Eq, Show, Data, Typeable, Generic)+++-- | Creates a value of 'InsertRangeRequest' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'irrShiftDimension'+--+-- * 'irrRange'+insertRangeRequest+    :: InsertRangeRequest+insertRangeRequest =+  InsertRangeRequest' {_irrShiftDimension = Nothing, _irrRange = Nothing}+++-- | The dimension which will be shifted when inserting cells. If ROWS,+-- existing cells will be shifted down. If COLUMNS, existing cells will be+-- shifted right.+irrShiftDimension :: Lens' InsertRangeRequest (Maybe InsertRangeRequestShiftDimension)+irrShiftDimension+  = lens _irrShiftDimension+      (\ s a -> s{_irrShiftDimension = a})++-- | The range to insert new cells into.+irrRange :: Lens' InsertRangeRequest (Maybe GridRange)+irrRange = lens _irrRange (\ s a -> s{_irrRange = a})++instance FromJSON InsertRangeRequest where+        parseJSON+          = withObject "InsertRangeRequest"+              (\ o ->+                 InsertRangeRequest' <$>+                   (o .:? "shiftDimension") <*> (o .:? "range"))++instance ToJSON InsertRangeRequest where+        toJSON InsertRangeRequest'{..}+          = object+              (catMaybes+                 [("shiftDimension" .=) <$> _irrShiftDimension,+                  ("range" .=) <$> _irrRange])++-- | 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'+    { _csTitleTextPosition       :: !(Maybe TextPosition)+    , _csFontName                :: !(Maybe Text)+    , _csSubtitleTextPosition    :: !(Maybe TextPosition)+    , _csBackgRoundColor         :: !(Maybe Color)+    , _csCandlestickChart        :: !(Maybe CandlestickChartSpec)+    , _csWaterfallChart          :: !(Maybe WaterfallChartSpec)+    , _csTitleTextFormat         :: !(Maybe TextFormat)+    , _csSubtitle                :: !(Maybe Text)+    , _csAltText                 :: !(Maybe Text)+    , _csHistogramChart          :: !(Maybe HistogramChartSpec)+    , _csBubbleChart             :: !(Maybe BubbleChartSpec)+    , _csMaximized               :: !(Maybe Bool)+    , _csSubtitleTextFormat      :: !(Maybe TextFormat)+    , _csTitle                   :: !(Maybe Text)+    , _csPieChart                :: !(Maybe PieChartSpec)+    , _csOrgChart                :: !(Maybe OrgChartSpec)+    , _csTreemapChart            :: !(Maybe TreemapChartSpec)+    , _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:+--+-- * 'csTitleTextPosition'+--+-- * 'csFontName'+--+-- * 'csSubtitleTextPosition'+--+-- * 'csBackgRoundColor'+--+-- * 'csCandlestickChart'+--+-- * 'csWaterfallChart'+--+-- * 'csTitleTextFormat'+--+-- * 'csSubtitle'+--+-- * 'csAltText'+--+-- * 'csHistogramChart'+--+-- * 'csBubbleChart'+--+-- * 'csMaximized'+--+-- * 'csSubtitleTextFormat'+--+-- * 'csTitle'+--+-- * 'csPieChart'+--+-- * 'csOrgChart'+--+-- * 'csTreemapChart'+--+-- * 'csBasicChart'+--+-- * 'csHiddenDimensionStrategy'+chartSpec+    :: ChartSpec+chartSpec =+  ChartSpec'+    { _csTitleTextPosition = Nothing+    , _csFontName = Nothing+    , _csSubtitleTextPosition = Nothing+    , _csBackgRoundColor = Nothing+    , _csCandlestickChart = Nothing+    , _csWaterfallChart = Nothing+    , _csTitleTextFormat = Nothing+    , _csSubtitle = Nothing+    , _csAltText = Nothing+    , _csHistogramChart = Nothing+    , _csBubbleChart = Nothing+    , _csMaximized = Nothing+    , _csSubtitleTextFormat = Nothing+    , _csTitle = Nothing+    , _csPieChart = Nothing+    , _csOrgChart = Nothing+    , _csTreemapChart = Nothing+    , _csBasicChart = Nothing+    , _csHiddenDimensionStrategy = Nothing+    }+++-- | The title text position. This field is optional.+csTitleTextPosition :: Lens' ChartSpec (Maybe TextPosition)+csTitleTextPosition+  = lens _csTitleTextPosition+      (\ s a -> s{_csTitleTextPosition = a})++-- | The name of the font to use by default for all chart text (e.g. title,+-- axis labels, legend). If a font is specified for a specific part of the+-- chart it will override this font name.+csFontName :: Lens' ChartSpec (Maybe Text)+csFontName+  = lens _csFontName (\ s a -> s{_csFontName = a})++-- | The subtitle text position. This field is optional.+csSubtitleTextPosition :: Lens' ChartSpec (Maybe TextPosition)+csSubtitleTextPosition+  = lens _csSubtitleTextPosition+      (\ s a -> s{_csSubtitleTextPosition = a})++-- | The background color of the entire chart. Not applicable to Org charts.+csBackgRoundColor :: Lens' ChartSpec (Maybe Color)+csBackgRoundColor+  = lens _csBackgRoundColor+      (\ s a -> s{_csBackgRoundColor = a})++-- | A candlestick chart specification.+csCandlestickChart :: Lens' ChartSpec (Maybe CandlestickChartSpec)+csCandlestickChart+  = lens _csCandlestickChart+      (\ s a -> s{_csCandlestickChart = a})++-- | A waterfall chart specification.+csWaterfallChart :: Lens' ChartSpec (Maybe WaterfallChartSpec)+csWaterfallChart+  = lens _csWaterfallChart+      (\ s a -> s{_csWaterfallChart = a})++-- | The title text format. Strikethrough and underline are not supported.+csTitleTextFormat :: Lens' ChartSpec (Maybe TextFormat)+csTitleTextFormat+  = lens _csTitleTextFormat+      (\ s a -> s{_csTitleTextFormat = a})++-- | The subtitle of the chart.+csSubtitle :: Lens' ChartSpec (Maybe Text)+csSubtitle+  = lens _csSubtitle (\ s a -> s{_csSubtitle = a})++-- | The alternative text that describes the chart. This is often used for+-- accessibility.+csAltText :: Lens' ChartSpec (Maybe Text)+csAltText+  = lens _csAltText (\ s a -> s{_csAltText = a})++-- | A histogram chart specification.+csHistogramChart :: Lens' ChartSpec (Maybe HistogramChartSpec)+csHistogramChart+  = lens _csHistogramChart+      (\ s a -> s{_csHistogramChart = a})++-- | A bubble chart specification.+csBubbleChart :: Lens' ChartSpec (Maybe BubbleChartSpec)+csBubbleChart+  = lens _csBubbleChart+      (\ s a -> s{_csBubbleChart = a})++-- | True to make a chart fill the entire space in which it\'s rendered with+-- minimum padding. False to use the default padding. (Not applicable to+-- Geo and Org charts.)+csMaximized :: Lens' ChartSpec (Maybe Bool)+csMaximized+  = lens _csMaximized (\ s a -> s{_csMaximized = a})++-- | The subtitle text format. Strikethrough and underline are not supported.+csSubtitleTextFormat :: Lens' ChartSpec (Maybe TextFormat)+csSubtitleTextFormat+  = lens _csSubtitleTextFormat+      (\ s a -> s{_csSubtitleTextFormat = a})++-- | 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})++-- | An org chart specification.+csOrgChart :: Lens' ChartSpec (Maybe OrgChartSpec)+csOrgChart+  = lens _csOrgChart (\ s a -> s{_csOrgChart = a})++-- | A treemap chart specification.+csTreemapChart :: Lens' ChartSpec (Maybe TreemapChartSpec)+csTreemapChart+  = lens _csTreemapChart+      (\ s a -> s{_csTreemapChart = 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 .:? "titleTextPosition") <*> (o .:? "fontName")+                     <*> (o .:? "subtitleTextPosition")+                     <*> (o .:? "backgroundColor")+                     <*> (o .:? "candlestickChart")+                     <*> (o .:? "waterfallChart")+                     <*> (o .:? "titleTextFormat")+                     <*> (o .:? "subtitle")+                     <*> (o .:? "altText")+                     <*> (o .:? "histogramChart")+                     <*> (o .:? "bubbleChart")+                     <*> (o .:? "maximized")+                     <*> (o .:? "subtitleTextFormat")+                     <*> (o .:? "title")+                     <*> (o .:? "pieChart")+                     <*> (o .:? "orgChart")+                     <*> (o .:? "treemapChart")+                     <*> (o .:? "basicChart")+                     <*> (o .:? "hiddenDimensionStrategy"))++instance ToJSON ChartSpec where+        toJSON ChartSpec'{..}+          = object+              (catMaybes+                 [("titleTextPosition" .=) <$> _csTitleTextPosition,+                  ("fontName" .=) <$> _csFontName,+                  ("subtitleTextPosition" .=) <$>+                    _csSubtitleTextPosition,+                  ("backgroundColor" .=) <$> _csBackgRoundColor,+                  ("candlestickChart" .=) <$> _csCandlestickChart,+                  ("waterfallChart" .=) <$> _csWaterfallChart,+                  ("titleTextFormat" .=) <$> _csTitleTextFormat,+                  ("subtitle" .=) <$> _csSubtitle,+                  ("altText" .=) <$> _csAltText,+                  ("histogramChart" .=) <$> _csHistogramChart,+                  ("bubbleChart" .=) <$> _csBubbleChart,+                  ("maximized" .=) <$> _csMaximized,+                  ("subtitleTextFormat" .=) <$> _csSubtitleTextFormat,+                  ("title" .=) <$> _csTitle,+                  ("pieChart" .=) <$> _csPieChart,+                  ("orgChart" .=) <$> _csOrgChart,+                  ("treemapChart" .=) <$> _csTreemapChart,+                  ("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)+    , _dpDeveloperMetadata :: !(Maybe [DeveloperMetadata])+    }+  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'+--+-- * 'dpDeveloperMetadata'+dimensionProperties+    :: DimensionProperties+dimensionProperties =+  DimensionProperties'+    { _dpHiddenByFilter = Nothing+    , _dpPixelSize = Nothing+    , _dpHiddenByUser = Nothing+    , _dpDeveloperMetadata = 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})++-- | The developer metadata associated with a single row or column.+dpDeveloperMetadata :: Lens' DimensionProperties [DeveloperMetadata]+dpDeveloperMetadata+  = lens _dpDeveloperMetadata+      (\ s a -> s{_dpDeveloperMetadata = a})+      . _Default+      . _Coerce++instance FromJSON DimensionProperties where+        parseJSON+          = withObject "DimensionProperties"+              (\ o ->+                 DimensionProperties' <$>+                   (o .:? "hiddenByFilter") <*> (o .:? "pixelSize") <*>+                     (o .:? "hiddenByUser")+                     <*> (o .:? "developerMetadata" .!= mempty))++instance ToJSON DimensionProperties where+        toJSON DimensionProperties'{..}+          = object+              (catMaybes+                 [("hiddenByFilter" .=) <$> _dpHiddenByFilter,+                  ("pixelSize" .=) <$> _dpPixelSize,+                  ("hiddenByUser" .=) <$> _dpHiddenByUser,+                  ("developerMetadata" .=) <$> _dpDeveloperMetadata])++-- | Updates properties of the supplied banded range.+--+-- /See:/ 'updateBandingRequest' smart constructor.+data UpdateBandingRequest =+  UpdateBandingRequest'+    { _ubrBandedRange :: !(Maybe BandedRange)+    , _ubrFields      :: !(Maybe GFieldMask)+    }+  deriving (Eq, Show, Data, Typeable, Generic)+++-- | Creates a value of 'UpdateBandingRequest' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'ubrBandedRange'+--+-- * 'ubrFields'+updateBandingRequest+    :: UpdateBandingRequest+updateBandingRequest =+  UpdateBandingRequest' {_ubrBandedRange = Nothing, _ubrFields = Nothing}+++-- | The banded range to update with the new properties.+ubrBandedRange :: Lens' UpdateBandingRequest (Maybe BandedRange)+ubrBandedRange+  = lens _ubrBandedRange+      (\ s a -> s{_ubrBandedRange = a})++-- | The fields that should be updated. At least one field must be specified.+-- The root \`bandedRange\` is implied and should not be specified. A+-- single \`\"*\"\` can be used as short-hand for listing every field.+ubrFields :: Lens' UpdateBandingRequest (Maybe GFieldMask)+ubrFields+  = lens _ubrFields (\ s a -> s{_ubrFields = a})++instance FromJSON UpdateBandingRequest where+        parseJSON+          = withObject "UpdateBandingRequest"+              (\ o ->+                 UpdateBandingRequest' <$>+                   (o .:? "bandedRange") <*> (o .:? "fields"))++instance ToJSON UpdateBandingRequest where+        toJSON UpdateBandingRequest'{..}+          = object+              (catMaybes+                 [("bandedRange" .=) <$> _ubrBandedRange,+                  ("fields" .=) <$> _ubrFields])++-- | 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])++-- | Removes the banded range with the given ID from the spreadsheet.+--+-- /See:/ 'deleteBandingRequest' smart constructor.+newtype DeleteBandingRequest =+  DeleteBandingRequest'+    { _dbrBandedRangeId :: Maybe (Textual Int32)+    }+  deriving (Eq, Show, Data, Typeable, Generic)+++-- | Creates a value of 'DeleteBandingRequest' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'dbrBandedRangeId'+deleteBandingRequest+    :: DeleteBandingRequest+deleteBandingRequest = DeleteBandingRequest' {_dbrBandedRangeId = Nothing}+++-- | The ID of the banded range to delete.+dbrBandedRangeId :: Lens' DeleteBandingRequest (Maybe Int32)+dbrBandedRangeId+  = lens _dbrBandedRangeId+      (\ s a -> s{_dbrBandedRangeId = a})+      . mapping _Coerce++instance FromJSON DeleteBandingRequest where+        parseJSON+          = withObject "DeleteBandingRequest"+              (\ o ->+                 DeleteBandingRequest' <$> (o .:? "bandedRangeId"))++instance ToJSON DeleteBandingRequest where+        toJSON DeleteBandingRequest'{..}+          = object+              (catMaybes+                 [("bandedRangeId" .=) <$> _dbrBandedRangeId])++-- | The response from deleting developer metadata.+--+-- /See:/ 'deleteDeveloperMetadataResponse' smart constructor.+newtype DeleteDeveloperMetadataResponse =+  DeleteDeveloperMetadataResponse'+    { _ddmrDeletedDeveloperMetadata :: Maybe [DeveloperMetadata]+    }+  deriving (Eq, Show, Data, Typeable, Generic)+++-- | Creates a value of 'DeleteDeveloperMetadataResponse' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'ddmrDeletedDeveloperMetadata'+deleteDeveloperMetadataResponse+    :: DeleteDeveloperMetadataResponse+deleteDeveloperMetadataResponse =+  DeleteDeveloperMetadataResponse' {_ddmrDeletedDeveloperMetadata = Nothing}+++-- | The metadata that was deleted.+ddmrDeletedDeveloperMetadata :: Lens' DeleteDeveloperMetadataResponse [DeveloperMetadata]+ddmrDeletedDeveloperMetadata+  = lens _ddmrDeletedDeveloperMetadata+      (\ s a -> s{_ddmrDeletedDeveloperMetadata = a})+      . _Default+      . _Coerce++instance FromJSON DeleteDeveloperMetadataResponse+         where+        parseJSON+          = withObject "DeleteDeveloperMetadataResponse"+              (\ o ->+                 DeleteDeveloperMetadataResponse' <$>+                   (o .:? "deletedDeveloperMetadata" .!= mempty))++instance ToJSON DeleteDeveloperMetadataResponse where+        toJSON DeleteDeveloperMetadataResponse'{..}+          = object+              (catMaybes+                 [("deletedDeveloperMetadata" .=) <$>+                    _ddmrDeletedDeveloperMetadata])++-- | The response from updating developer metadata.+--+-- /See:/ 'updateDeveloperMetadataResponse' smart constructor.+newtype UpdateDeveloperMetadataResponse =+  UpdateDeveloperMetadataResponse'+    { _uDeveloperMetadata :: Maybe [DeveloperMetadata]+    }+  deriving (Eq, Show, Data, Typeable, Generic)+++-- | Creates a value of 'UpdateDeveloperMetadataResponse' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'uDeveloperMetadata'+updateDeveloperMetadataResponse+    :: UpdateDeveloperMetadataResponse+updateDeveloperMetadataResponse =+  UpdateDeveloperMetadataResponse' {_uDeveloperMetadata = Nothing}+++-- | The updated developer metadata.+uDeveloperMetadata :: Lens' UpdateDeveloperMetadataResponse [DeveloperMetadata]+uDeveloperMetadata+  = lens _uDeveloperMetadata+      (\ s a -> s{_uDeveloperMetadata = a})+      . _Default+      . _Coerce++instance FromJSON UpdateDeveloperMetadataResponse+         where+        parseJSON+          = withObject "UpdateDeveloperMetadataResponse"+              (\ o ->+                 UpdateDeveloperMetadataResponse' <$>+                   (o .:? "developerMetadata" .!= mempty))++instance ToJSON UpdateDeveloperMetadataResponse where+        toJSON UpdateDeveloperMetadataResponse'{..}+          = object+              (catMaybes+                 [("developerMetadata" .=) <$> _uDeveloperMetadata])++-- | 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)+    , _reqCreateDeveloperMetadata      :: !(Maybe CreateDeveloperMetadataRequest)+    , _reqDuplicateFilterView          :: !(Maybe DuplicateFilterViewRequest)+    , _reqAddConditionalFormatRule     :: !(Maybe AddConditionalFormatRuleRequest)+    , _reqRandomizeRange               :: !(Maybe RandomizeRangeRequest)+    , _reqSortRange                    :: !(Maybe SortRangeRequest)+    , _reqUpdateNamedRange             :: !(Maybe UpdateNamedRangeRequest)+    , _reqDeleteNamedRange             :: !(Maybe DeleteNamedRangeRequest)+    , _reqInsertRange                  :: !(Maybe InsertRangeRequest)+    , _reqDeleteBanding                :: !(Maybe DeleteBandingRequest)+    , _reqUpdateBanding                :: !(Maybe UpdateBandingRequest)+    , _reqClearBasicFilter             :: !(Maybe ClearBasicFilterRequest)+    , _reqAppendCells                  :: !(Maybe AppendCellsRequest)+    , _reqPasteData                    :: !(Maybe PasteDataRequest)+    , _reqUpdateEmbeddedObjectPosition :: !(Maybe UpdateEmbeddedObjectPositionRequest)+    , _reqDeleteRange                  :: !(Maybe DeleteRangeRequest)+    , _reqCopyPaste                    :: !(Maybe CopyPasteRequest)+    , _reqUpdateDimensionGroup         :: !(Maybe UpdateDimensionGroupRequest)+    , _reqDeleteDimensionGroup         :: !(Maybe DeleteDimensionGroupRequest)+    , _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)+    , _reqDeleteDeveloperMetadata      :: !(Maybe DeleteDeveloperMetadataRequest)+    , _reqUpdateDeveloperMetadata      :: !(Maybe UpdateDeveloperMetadataRequest)+    , _reqMergeCells                   :: !(Maybe MergeCellsRequest)+    , _reqAddNamedRange                :: !(Maybe AddNamedRangeRequest)+    , _reqAddChart                     :: !(Maybe AddChartRequest)+    , _reqAddBanding                   :: !(Maybe AddBandingRequest)+    , _reqDuplicateSheet               :: !(Maybe DuplicateSheetRequest)+    , _reqAutoFill                     :: !(Maybe AutoFillRequest)+    , _reqUpdateDimensionProperties    :: !(Maybe UpdateDimensionPropertiesRequest)+    , _reqUpdateChartSpec              :: !(Maybe UpdateChartSpecRequest)+    , _reqSetBasicFilter               :: !(Maybe SetBasicFilterRequest)+    , _reqTextToColumns                :: !(Maybe TextToColumnsRequest)+    , _reqAddDimensionGroup            :: !(Maybe AddDimensionGroupRequest)+    , _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'+--+-- * 'reqCreateDeveloperMetadata'+--+-- * 'reqDuplicateFilterView'+--+-- * 'reqAddConditionalFormatRule'+--+-- * 'reqRandomizeRange'+--+-- * 'reqSortRange'+--+-- * 'reqUpdateNamedRange'+--+-- * 'reqDeleteNamedRange'+--+-- * 'reqInsertRange'+--+-- * 'reqDeleteBanding'+--+-- * 'reqUpdateBanding'+--+-- * 'reqClearBasicFilter'+--+-- * 'reqAppendCells'+--+-- * 'reqPasteData'+--+-- * 'reqUpdateEmbeddedObjectPosition'+--+-- * 'reqDeleteRange'+--+-- * 'reqCopyPaste'+--+-- * 'reqUpdateDimensionGroup'+--+-- * 'reqDeleteDimensionGroup'+--+-- * 'reqAutoResizeDimensions'+--+-- * 'reqAddSheet'+--+-- * 'reqFindReplace'+--+-- * 'reqDeleteDimension'+--+-- * 'reqCutPaste'+--+-- * 'reqMoveDimension'+--+-- * 'reqRepeatCell'+--+-- * 'reqAddProtectedRange'+--+-- * 'reqUpdateFilterView'+--+-- * 'reqDeleteFilterView'+--+-- * 'reqInsertDimension'+--+-- * 'reqUpdateSheetProperties'+--+-- * 'reqDeleteConditionalFormatRule'+--+-- * 'reqUpdateConditionalFormatRule'+--+-- * 'reqDeleteEmbeddedObject'+--+-- * 'reqDeleteDeveloperMetadata'+--+-- * 'reqUpdateDeveloperMetadata'+--+-- * 'reqMergeCells'+--+-- * 'reqAddNamedRange'+--+-- * 'reqAddChart'+--+-- * 'reqAddBanding'+--+-- * 'reqDuplicateSheet'+--+-- * 'reqAutoFill'+--+-- * 'reqUpdateDimensionProperties'+--+-- * 'reqUpdateChartSpec'+--+-- * 'reqSetBasicFilter'+--+-- * 'reqTextToColumns'+--+-- * 'reqAddDimensionGroup'+--+-- * 'reqUpdateSpreadsheetProperties'+--+-- * 'reqDeleteSheet'+--+-- * 'reqUnmergeCells'+--+-- * 'reqUpdateBOrders'+--+-- * 'reqAppendDimension'+--+-- * 'reqSetDataValidation'+request'+    :: Request'+request' =+  Request''+    { _reqAddFilterView = Nothing+    , _reqDeleteProtectedRange = Nothing+    , _reqUpdateProtectedRange = Nothing+    , _reqUpdateCells = Nothing+    , _reqCreateDeveloperMetadata = Nothing+    , _reqDuplicateFilterView = Nothing+    , _reqAddConditionalFormatRule = Nothing+    , _reqRandomizeRange = Nothing+    , _reqSortRange = Nothing+    , _reqUpdateNamedRange = Nothing+    , _reqDeleteNamedRange = Nothing+    , _reqInsertRange = Nothing+    , _reqDeleteBanding = Nothing+    , _reqUpdateBanding = Nothing+    , _reqClearBasicFilter = Nothing+    , _reqAppendCells = Nothing+    , _reqPasteData = Nothing+    , _reqUpdateEmbeddedObjectPosition = Nothing+    , _reqDeleteRange = Nothing+    , _reqCopyPaste = Nothing+    , _reqUpdateDimensionGroup = Nothing+    , _reqDeleteDimensionGroup = 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+    , _reqDeleteDeveloperMetadata = Nothing+    , _reqUpdateDeveloperMetadata = Nothing+    , _reqMergeCells = Nothing+    , _reqAddNamedRange = Nothing+    , _reqAddChart = Nothing+    , _reqAddBanding = Nothing+    , _reqDuplicateSheet = Nothing+    , _reqAutoFill = Nothing+    , _reqUpdateDimensionProperties = Nothing+    , _reqUpdateChartSpec = Nothing+    , _reqSetBasicFilter = Nothing+    , _reqTextToColumns = Nothing+    , _reqAddDimensionGroup = 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})++-- | Creates new developer metadata+reqCreateDeveloperMetadata :: Lens' Request' (Maybe CreateDeveloperMetadataRequest)+reqCreateDeveloperMetadata+  = lens _reqCreateDeveloperMetadata+      (\ s a -> s{_reqCreateDeveloperMetadata = 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})++-- | Randomizes the order of the rows in a range.+reqRandomizeRange :: Lens' Request' (Maybe RandomizeRangeRequest)+reqRandomizeRange+  = lens _reqRandomizeRange+      (\ s a -> s{_reqRandomizeRange = 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})++-- | Inserts new cells in a sheet, shifting the existing cells.+reqInsertRange :: Lens' Request' (Maybe InsertRangeRequest)+reqInsertRange+  = lens _reqInsertRange+      (\ s a -> s{_reqInsertRange = a})++-- | Removes a banded range+reqDeleteBanding :: Lens' Request' (Maybe DeleteBandingRequest)+reqDeleteBanding+  = lens _reqDeleteBanding+      (\ s a -> s{_reqDeleteBanding = a})++-- | Updates a banded range+reqUpdateBanding :: Lens' Request' (Maybe UpdateBandingRequest)+reqUpdateBanding+  = lens _reqUpdateBanding+      (\ s a -> s{_reqUpdateBanding = 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})++-- | Deletes a range of cells from a sheet, shifting the remaining cells.+reqDeleteRange :: Lens' Request' (Maybe DeleteRangeRequest)+reqDeleteRange+  = lens _reqDeleteRange+      (\ s a -> s{_reqDeleteRange = a})++-- | Copies data from one area and pastes it to another.+reqCopyPaste :: Lens' Request' (Maybe CopyPasteRequest)+reqCopyPaste+  = lens _reqCopyPaste (\ s a -> s{_reqCopyPaste = a})++-- | Updates the state of the specified group.+reqUpdateDimensionGroup :: Lens' Request' (Maybe UpdateDimensionGroupRequest)+reqUpdateDimensionGroup+  = lens _reqUpdateDimensionGroup+      (\ s a -> s{_reqUpdateDimensionGroup = a})++-- | Deletes a group over the specified range.+reqDeleteDimensionGroup :: Lens' Request' (Maybe DeleteDimensionGroupRequest)+reqDeleteDimensionGroup+  = lens _reqDeleteDimensionGroup+      (\ s a -> s{_reqDeleteDimensionGroup = 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})++-- | Deletes developer metadata+reqDeleteDeveloperMetadata :: Lens' Request' (Maybe DeleteDeveloperMetadataRequest)+reqDeleteDeveloperMetadata+  = lens _reqDeleteDeveloperMetadata+      (\ s a -> s{_reqDeleteDeveloperMetadata = a})++-- | Updates an existing developer metadata entry+reqUpdateDeveloperMetadata :: Lens' Request' (Maybe UpdateDeveloperMetadataRequest)+reqUpdateDeveloperMetadata+  = lens _reqUpdateDeveloperMetadata+      (\ s a -> s{_reqUpdateDeveloperMetadata = 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})++-- | Adds a new banded range+reqAddBanding :: Lens' Request' (Maybe AddBandingRequest)+reqAddBanding+  = lens _reqAddBanding+      (\ s a -> s{_reqAddBanding = 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})++-- | Creates a group over the specified range.+reqAddDimensionGroup :: Lens' Request' (Maybe AddDimensionGroupRequest)+reqAddDimensionGroup+  = lens _reqAddDimensionGroup+      (\ s a -> s{_reqAddDimensionGroup = 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 .:? "createDeveloperMetadata")+                     <*> (o .:? "duplicateFilterView")+                     <*> (o .:? "addConditionalFormatRule")+                     <*> (o .:? "randomizeRange")+                     <*> (o .:? "sortRange")+                     <*> (o .:? "updateNamedRange")+                     <*> (o .:? "deleteNamedRange")+                     <*> (o .:? "insertRange")+                     <*> (o .:? "deleteBanding")+                     <*> (o .:? "updateBanding")+                     <*> (o .:? "clearBasicFilter")+                     <*> (o .:? "appendCells")+                     <*> (o .:? "pasteData")+                     <*> (o .:? "updateEmbeddedObjectPosition")+                     <*> (o .:? "deleteRange")+                     <*> (o .:? "copyPaste")+                     <*> (o .:? "updateDimensionGroup")+                     <*> (o .:? "deleteDimensionGroup")+                     <*> (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 .:? "deleteDeveloperMetadata")+                     <*> (o .:? "updateDeveloperMetadata")+                     <*> (o .:? "mergeCells")+                     <*> (o .:? "addNamedRange")+                     <*> (o .:? "addChart")+                     <*> (o .:? "addBanding")+                     <*> (o .:? "duplicateSheet")+                     <*> (o .:? "autoFill")+                     <*> (o .:? "updateDimensionProperties")+                     <*> (o .:? "updateChartSpec")+                     <*> (o .:? "setBasicFilter")+                     <*> (o .:? "textToColumns")+                     <*> (o .:? "addDimensionGroup")+                     <*> (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,+                  ("createDeveloperMetadata" .=) <$>+                    _reqCreateDeveloperMetadata,+                  ("duplicateFilterView" .=) <$>+                    _reqDuplicateFilterView,+                  ("addConditionalFormatRule" .=) <$>+                    _reqAddConditionalFormatRule,+                  ("randomizeRange" .=) <$> _reqRandomizeRange,+                  ("sortRange" .=) <$> _reqSortRange,+                  ("updateNamedRange" .=) <$> _reqUpdateNamedRange,+                  ("deleteNamedRange" .=) <$> _reqDeleteNamedRange,+                  ("insertRange" .=) <$> _reqInsertRange,+                  ("deleteBanding" .=) <$> _reqDeleteBanding,+                  ("updateBanding" .=) <$> _reqUpdateBanding,+                  ("clearBasicFilter" .=) <$> _reqClearBasicFilter,+                  ("appendCells" .=) <$> _reqAppendCells,+                  ("pasteData" .=) <$> _reqPasteData,+                  ("updateEmbeddedObjectPosition" .=) <$>+                    _reqUpdateEmbeddedObjectPosition,+                  ("deleteRange" .=) <$> _reqDeleteRange,+                  ("copyPaste" .=) <$> _reqCopyPaste,+                  ("updateDimensionGroup" .=) <$>+                    _reqUpdateDimensionGroup,+                  ("deleteDimensionGroup" .=) <$>+                    _reqDeleteDimensionGroup,+                  ("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,+                  ("deleteDeveloperMetadata" .=) <$>+                    _reqDeleteDeveloperMetadata,+                  ("updateDeveloperMetadata" .=) <$>+                    _reqUpdateDeveloperMetadata,+                  ("mergeCells" .=) <$> _reqMergeCells,+                  ("addNamedRange" .=) <$> _reqAddNamedRange,+                  ("addChart" .=) <$> _reqAddChart,+                  ("addBanding" .=) <$> _reqAddBanding,+                  ("duplicateSheet" .=) <$> _reqDuplicateSheet,+                  ("autoFill" .=) <$> _reqAutoFill,+                  ("updateDimensionProperties" .=) <$>+                    _reqUpdateDimensionProperties,+                  ("updateChartSpec" .=) <$> _reqUpdateChartSpec,+                  ("setBasicFilter" .=) <$> _reqSetBasicFilter,+                  ("textToColumns" .=) <$> _reqTextToColumns,+                  ("addDimensionGroup" .=) <$> _reqAddDimensionGroup,+                  ("updateSpreadsheetProperties" .=) <$>+                    _reqUpdateSpreadsheetProperties,+                  ("deleteSheet" .=) <$> _reqDeleteSheet,+                  ("unmergeCells" .=) <$> _reqUnmergeCells,+                  ("updateBorders" .=) <$> _reqUpdateBOrders,+                  ("appendDimension" .=) <$> _reqAppendDimension,+                  ("setDataValidation" .=) <$> _reqSetDataValidation])++-- | Properties that describe the style of a line.+--+-- /See:/ 'lineStyle' smart constructor.+data LineStyle =+  LineStyle'+    { _lsWidth :: !(Maybe (Textual Int32))+    , _lsType  :: !(Maybe LineStyleType)+    }+  deriving (Eq, Show, Data, Typeable, Generic)+++-- | Creates a value of 'LineStyle' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'lsWidth'+--+-- * 'lsType'+lineStyle+    :: LineStyle+lineStyle = LineStyle' {_lsWidth = Nothing, _lsType = Nothing}+++-- | The thickness of the line, in px.+lsWidth :: Lens' LineStyle (Maybe Int32)+lsWidth+  = lens _lsWidth (\ s a -> s{_lsWidth = a}) .+      mapping _Coerce++-- | The dash type of the line.+lsType :: Lens' LineStyle (Maybe LineStyleType)+lsType = lens _lsType (\ s a -> s{_lsType = a})++instance FromJSON LineStyle where+        parseJSON+          = withObject "LineStyle"+              (\ o ->+                 LineStyle' <$> (o .:? "width") <*> (o .:? "type"))++instance ToJSON LineStyle where+        toJSON LineStyle'{..}+          = object+              (catMaybes+                 [("width" .=) <$> _lsWidth, ("type" .=) <$> _lsType])++-- | 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)
gogol-sheets.cabal view
@@ -1,5 +1,5 @@ name:                  gogol-sheets-version:               0.4.0+version:               0.5.0 synopsis:              Google Sheets SDK. homepage:              https://github.com/brendanhay/gogol bug-reports:           https://github.com/brendanhay/gogol/issues@@ -58,5 +58,5 @@         , Network.Google.Sheets.Types.Sum      build-depends:-          gogol-core == 0.4.0.*+          gogol-core == 0.5.0.*         , base       >= 4.7 && < 5