packages feed

gogol-sheets 0.3.0 → 0.4.0

raw patch · 22 files changed

+18180/−11049 lines, 22 filesdep ~gogol-corePVP ok

version bump matches the API change (PVP)

Dependency ranges changed: gogol-core

API changes (from Hackage documentation)

- Network.Google.Resource.Sheets.Spreadsheets.BatchUpdate: sbuBearerToken :: Lens' SpreadsheetsBatchUpdate (Maybe Text)
- Network.Google.Resource.Sheets.Spreadsheets.BatchUpdate: sbuPp :: Lens' SpreadsheetsBatchUpdate Bool
- Network.Google.Resource.Sheets.Spreadsheets.Create: scBearerToken :: Lens' SpreadsheetsCreate (Maybe Text)
- Network.Google.Resource.Sheets.Spreadsheets.Create: scPp :: Lens' SpreadsheetsCreate Bool
- Network.Google.Resource.Sheets.Spreadsheets.Get: sgBearerToken :: Lens' SpreadsheetsGet (Maybe Text)
- Network.Google.Resource.Sheets.Spreadsheets.Get: sgPp :: Lens' SpreadsheetsGet Bool
- Network.Google.Resource.Sheets.Spreadsheets.Sheets.CopyTo: ssctBearerToken :: Lens' SpreadsheetsSheetsCopyTo (Maybe Text)
- Network.Google.Resource.Sheets.Spreadsheets.Sheets.CopyTo: ssctPp :: Lens' SpreadsheetsSheetsCopyTo Bool
- Network.Google.Resource.Sheets.Spreadsheets.Values.Append: svaBearerToken :: Lens' SpreadsheetsValuesAppend (Maybe Text)
- Network.Google.Resource.Sheets.Spreadsheets.Values.Append: svaPp :: Lens' SpreadsheetsValuesAppend Bool
- Network.Google.Resource.Sheets.Spreadsheets.Values.BatchClear: svbcBearerToken :: Lens' SpreadsheetsValuesBatchClear (Maybe Text)
- Network.Google.Resource.Sheets.Spreadsheets.Values.BatchClear: svbcPp :: Lens' SpreadsheetsValuesBatchClear Bool
- Network.Google.Resource.Sheets.Spreadsheets.Values.BatchGet: svbgBearerToken :: Lens' SpreadsheetsValuesBatchGet (Maybe Text)
- Network.Google.Resource.Sheets.Spreadsheets.Values.BatchGet: svbgPp :: Lens' SpreadsheetsValuesBatchGet Bool
- Network.Google.Resource.Sheets.Spreadsheets.Values.BatchUpdate: svbuBearerToken :: Lens' SpreadsheetsValuesBatchUpdate (Maybe Text)
- Network.Google.Resource.Sheets.Spreadsheets.Values.BatchUpdate: svbuPp :: Lens' SpreadsheetsValuesBatchUpdate Bool
- Network.Google.Resource.Sheets.Spreadsheets.Values.Clear: svcBearerToken :: Lens' SpreadsheetsValuesClear (Maybe Text)
- Network.Google.Resource.Sheets.Spreadsheets.Values.Clear: svcPp :: Lens' SpreadsheetsValuesClear Bool
- Network.Google.Resource.Sheets.Spreadsheets.Values.Get: svgBearerToken :: Lens' SpreadsheetsValuesGet (Maybe Text)
- Network.Google.Resource.Sheets.Spreadsheets.Values.Get: svgPp :: Lens' SpreadsheetsValuesGet Bool
- Network.Google.Resource.Sheets.Spreadsheets.Values.Update: svuBearerToken :: Lens' SpreadsheetsValuesUpdate (Maybe Text)
- Network.Google.Resource.Sheets.Spreadsheets.Values.Update: svuPp :: Lens' SpreadsheetsValuesUpdate Bool
- Network.Google.Sheets: LabeledLegend :: PieChartSpecLegendPosition
- Network.Google.Sheets: OnChange :: SpreadsheetPropertiesAutoRecalc
- Network.Google.Sheets: PieChartLegendPositionUnspecified :: PieChartSpecLegendPosition
- Network.Google.Sheets: RecalculationIntervalUnspecified :: SpreadsheetPropertiesAutoRecalc
- Network.Google.Sheets: bAxis :: Lens' BasicChartSpec [BasicChartAxis]
- Network.Google.Sheets: bChartType :: Lens' BasicChartSpec (Maybe BasicChartSpecChartType)
- Network.Google.Sheets: bDomains :: Lens' BasicChartSpec [BasicChartDomain]
- Network.Google.Sheets: bHeaderCount :: Lens' BasicChartSpec (Maybe Int32)
- Network.Google.Sheets: bLegendPosition :: Lens' BasicChartSpec (Maybe BasicChartSpecLegendPosition)
- Network.Google.Sheets: bcsTargetAxis :: Lens' BasicChartSeries (Maybe BasicChartSeriesTargetAxis)
- Network.Google.Sheets: bcsType :: Lens' BasicChartSeries (Maybe BasicChartSeriesType)
- Network.Google.Sheets.Types: LabeledLegend :: PieChartSpecLegendPosition
- Network.Google.Sheets.Types: OnChange :: SpreadsheetPropertiesAutoRecalc
- Network.Google.Sheets.Types: PieChartLegendPositionUnspecified :: PieChartSpecLegendPosition
- Network.Google.Sheets.Types: RecalculationIntervalUnspecified :: SpreadsheetPropertiesAutoRecalc
- Network.Google.Sheets.Types: bAxis :: Lens' BasicChartSpec [BasicChartAxis]
- Network.Google.Sheets.Types: bChartType :: Lens' BasicChartSpec (Maybe BasicChartSpecChartType)
- Network.Google.Sheets.Types: bDomains :: Lens' BasicChartSpec [BasicChartDomain]
- Network.Google.Sheets.Types: bHeaderCount :: Lens' BasicChartSpec (Maybe Int32)
- Network.Google.Sheets.Types: bLegendPosition :: Lens' BasicChartSpec (Maybe BasicChartSpecLegendPosition)
- Network.Google.Sheets.Types: bcsTargetAxis :: Lens' BasicChartSeries (Maybe BasicChartSeriesTargetAxis)
- Network.Google.Sheets.Types: bcsType :: Lens' BasicChartSeries (Maybe BasicChartSeriesType)
+ Network.Google.Resource.Sheets.Spreadsheets.DeveloperMetadata.Get: data SpreadsheetsDeveloperMetadataGet
+ Network.Google.Resource.Sheets.Spreadsheets.DeveloperMetadata.Get: instance Data.Data.Data Network.Google.Resource.Sheets.Spreadsheets.DeveloperMetadata.Get.SpreadsheetsDeveloperMetadataGet
+ Network.Google.Resource.Sheets.Spreadsheets.DeveloperMetadata.Get: instance GHC.Classes.Eq Network.Google.Resource.Sheets.Spreadsheets.DeveloperMetadata.Get.SpreadsheetsDeveloperMetadataGet
+ Network.Google.Resource.Sheets.Spreadsheets.DeveloperMetadata.Get: instance GHC.Generics.Generic Network.Google.Resource.Sheets.Spreadsheets.DeveloperMetadata.Get.SpreadsheetsDeveloperMetadataGet
+ Network.Google.Resource.Sheets.Spreadsheets.DeveloperMetadata.Get: instance GHC.Show.Show Network.Google.Resource.Sheets.Spreadsheets.DeveloperMetadata.Get.SpreadsheetsDeveloperMetadataGet
+ Network.Google.Resource.Sheets.Spreadsheets.DeveloperMetadata.Get: instance Network.Google.Types.GoogleRequest Network.Google.Resource.Sheets.Spreadsheets.DeveloperMetadata.Get.SpreadsheetsDeveloperMetadataGet
+ Network.Google.Resource.Sheets.Spreadsheets.DeveloperMetadata.Get: sdmgAccessToken :: Lens' SpreadsheetsDeveloperMetadataGet (Maybe Text)
+ Network.Google.Resource.Sheets.Spreadsheets.DeveloperMetadata.Get: sdmgCallback :: Lens' SpreadsheetsDeveloperMetadataGet (Maybe Text)
+ Network.Google.Resource.Sheets.Spreadsheets.DeveloperMetadata.Get: sdmgMetadataId :: Lens' SpreadsheetsDeveloperMetadataGet Int32
+ Network.Google.Resource.Sheets.Spreadsheets.DeveloperMetadata.Get: sdmgSpreadsheetId :: Lens' SpreadsheetsDeveloperMetadataGet Text
+ Network.Google.Resource.Sheets.Spreadsheets.DeveloperMetadata.Get: sdmgUploadProtocol :: Lens' SpreadsheetsDeveloperMetadataGet (Maybe Text)
+ Network.Google.Resource.Sheets.Spreadsheets.DeveloperMetadata.Get: sdmgUploadType :: Lens' SpreadsheetsDeveloperMetadataGet (Maybe Text)
+ Network.Google.Resource.Sheets.Spreadsheets.DeveloperMetadata.Get: sdmgXgafv :: Lens' SpreadsheetsDeveloperMetadataGet (Maybe Xgafv)
+ Network.Google.Resource.Sheets.Spreadsheets.DeveloperMetadata.Get: spreadsheetsDeveloperMetadataGet :: Int32 -> Text -> SpreadsheetsDeveloperMetadataGet
+ Network.Google.Resource.Sheets.Spreadsheets.DeveloperMetadata.Get: type SpreadsheetsDeveloperMetadataGetResource = "v4" :> "spreadsheets" :> Capture "spreadsheetId" Text :> "developerMetadata" :> Capture "metadataId" (Textual Int32) :> QueryParam "$.xgafv" Xgafv :> QueryParam "upload_protocol" Text :> QueryParam "access_token" Text :> QueryParam "uploadType" Text :> QueryParam "callback" Text :> QueryParam "alt" AltJSON :> Get '[JSON] DeveloperMetadata
+ Network.Google.Resource.Sheets.Spreadsheets.DeveloperMetadata.Search: data SpreadsheetsDeveloperMetadataSearch
+ Network.Google.Resource.Sheets.Spreadsheets.DeveloperMetadata.Search: instance Data.Data.Data Network.Google.Resource.Sheets.Spreadsheets.DeveloperMetadata.Search.SpreadsheetsDeveloperMetadataSearch
+ Network.Google.Resource.Sheets.Spreadsheets.DeveloperMetadata.Search: instance GHC.Classes.Eq Network.Google.Resource.Sheets.Spreadsheets.DeveloperMetadata.Search.SpreadsheetsDeveloperMetadataSearch
+ Network.Google.Resource.Sheets.Spreadsheets.DeveloperMetadata.Search: instance GHC.Generics.Generic Network.Google.Resource.Sheets.Spreadsheets.DeveloperMetadata.Search.SpreadsheetsDeveloperMetadataSearch
+ Network.Google.Resource.Sheets.Spreadsheets.DeveloperMetadata.Search: instance GHC.Show.Show Network.Google.Resource.Sheets.Spreadsheets.DeveloperMetadata.Search.SpreadsheetsDeveloperMetadataSearch
+ Network.Google.Resource.Sheets.Spreadsheets.DeveloperMetadata.Search: instance Network.Google.Types.GoogleRequest Network.Google.Resource.Sheets.Spreadsheets.DeveloperMetadata.Search.SpreadsheetsDeveloperMetadataSearch
+ Network.Google.Resource.Sheets.Spreadsheets.DeveloperMetadata.Search: sdmsAccessToken :: Lens' SpreadsheetsDeveloperMetadataSearch (Maybe Text)
+ Network.Google.Resource.Sheets.Spreadsheets.DeveloperMetadata.Search: sdmsCallback :: Lens' SpreadsheetsDeveloperMetadataSearch (Maybe Text)
+ Network.Google.Resource.Sheets.Spreadsheets.DeveloperMetadata.Search: sdmsPayload :: Lens' SpreadsheetsDeveloperMetadataSearch SearchDeveloperMetadataRequest
+ Network.Google.Resource.Sheets.Spreadsheets.DeveloperMetadata.Search: sdmsSpreadsheetId :: Lens' SpreadsheetsDeveloperMetadataSearch Text
+ Network.Google.Resource.Sheets.Spreadsheets.DeveloperMetadata.Search: sdmsUploadProtocol :: Lens' SpreadsheetsDeveloperMetadataSearch (Maybe Text)
+ Network.Google.Resource.Sheets.Spreadsheets.DeveloperMetadata.Search: sdmsUploadType :: Lens' SpreadsheetsDeveloperMetadataSearch (Maybe Text)
+ Network.Google.Resource.Sheets.Spreadsheets.DeveloperMetadata.Search: sdmsXgafv :: Lens' SpreadsheetsDeveloperMetadataSearch (Maybe Xgafv)
+ Network.Google.Resource.Sheets.Spreadsheets.DeveloperMetadata.Search: spreadsheetsDeveloperMetadataSearch :: Text -> SearchDeveloperMetadataRequest -> SpreadsheetsDeveloperMetadataSearch
+ Network.Google.Resource.Sheets.Spreadsheets.DeveloperMetadata.Search: type SpreadsheetsDeveloperMetadataSearchResource = "v4" :> "spreadsheets" :> Capture "spreadsheetId" Text :> "developerMetadata:search" :> QueryParam "$.xgafv" Xgafv :> QueryParam "upload_protocol" Text :> QueryParam "access_token" Text :> QueryParam "uploadType" Text :> QueryParam "callback" Text :> QueryParam "alt" AltJSON :> ReqBody '[JSON] SearchDeveloperMetadataRequest :> Post '[JSON] SearchDeveloperMetadataResponse
+ Network.Google.Resource.Sheets.Spreadsheets.GetByDataFilter: data SpreadsheetsGetByDataFilter
+ Network.Google.Resource.Sheets.Spreadsheets.GetByDataFilter: instance Data.Data.Data Network.Google.Resource.Sheets.Spreadsheets.GetByDataFilter.SpreadsheetsGetByDataFilter
+ Network.Google.Resource.Sheets.Spreadsheets.GetByDataFilter: instance GHC.Classes.Eq Network.Google.Resource.Sheets.Spreadsheets.GetByDataFilter.SpreadsheetsGetByDataFilter
+ Network.Google.Resource.Sheets.Spreadsheets.GetByDataFilter: instance GHC.Generics.Generic Network.Google.Resource.Sheets.Spreadsheets.GetByDataFilter.SpreadsheetsGetByDataFilter
+ Network.Google.Resource.Sheets.Spreadsheets.GetByDataFilter: instance GHC.Show.Show Network.Google.Resource.Sheets.Spreadsheets.GetByDataFilter.SpreadsheetsGetByDataFilter
+ Network.Google.Resource.Sheets.Spreadsheets.GetByDataFilter: instance Network.Google.Types.GoogleRequest Network.Google.Resource.Sheets.Spreadsheets.GetByDataFilter.SpreadsheetsGetByDataFilter
+ Network.Google.Resource.Sheets.Spreadsheets.GetByDataFilter: sgbdfAccessToken :: Lens' SpreadsheetsGetByDataFilter (Maybe Text)
+ Network.Google.Resource.Sheets.Spreadsheets.GetByDataFilter: sgbdfCallback :: Lens' SpreadsheetsGetByDataFilter (Maybe Text)
+ Network.Google.Resource.Sheets.Spreadsheets.GetByDataFilter: sgbdfPayload :: Lens' SpreadsheetsGetByDataFilter GetSpreadsheetByDataFilterRequest
+ Network.Google.Resource.Sheets.Spreadsheets.GetByDataFilter: sgbdfSpreadsheetId :: Lens' SpreadsheetsGetByDataFilter Text
+ Network.Google.Resource.Sheets.Spreadsheets.GetByDataFilter: sgbdfUploadProtocol :: Lens' SpreadsheetsGetByDataFilter (Maybe Text)
+ Network.Google.Resource.Sheets.Spreadsheets.GetByDataFilter: sgbdfUploadType :: Lens' SpreadsheetsGetByDataFilter (Maybe Text)
+ Network.Google.Resource.Sheets.Spreadsheets.GetByDataFilter: sgbdfXgafv :: Lens' SpreadsheetsGetByDataFilter (Maybe Xgafv)
+ Network.Google.Resource.Sheets.Spreadsheets.GetByDataFilter: spreadsheetsGetByDataFilter :: Text -> GetSpreadsheetByDataFilterRequest -> SpreadsheetsGetByDataFilter
+ Network.Google.Resource.Sheets.Spreadsheets.GetByDataFilter: type SpreadsheetsGetByDataFilterResource = "v4" :> "spreadsheets" :> CaptureMode "spreadsheetId" "getByDataFilter" Text :> QueryParam "$.xgafv" Xgafv :> QueryParam "upload_protocol" Text :> QueryParam "access_token" Text :> QueryParam "uploadType" Text :> QueryParam "callback" Text :> QueryParam "alt" AltJSON :> ReqBody '[JSON] GetSpreadsheetByDataFilterRequest :> Post '[JSON] Spreadsheet
+ Network.Google.Resource.Sheets.Spreadsheets.Values.BatchClearByDataFilter: data SpreadsheetsValuesBatchClearByDataFilter
+ Network.Google.Resource.Sheets.Spreadsheets.Values.BatchClearByDataFilter: instance Data.Data.Data Network.Google.Resource.Sheets.Spreadsheets.Values.BatchClearByDataFilter.SpreadsheetsValuesBatchClearByDataFilter
+ Network.Google.Resource.Sheets.Spreadsheets.Values.BatchClearByDataFilter: instance GHC.Classes.Eq Network.Google.Resource.Sheets.Spreadsheets.Values.BatchClearByDataFilter.SpreadsheetsValuesBatchClearByDataFilter
+ Network.Google.Resource.Sheets.Spreadsheets.Values.BatchClearByDataFilter: instance GHC.Generics.Generic Network.Google.Resource.Sheets.Spreadsheets.Values.BatchClearByDataFilter.SpreadsheetsValuesBatchClearByDataFilter
+ Network.Google.Resource.Sheets.Spreadsheets.Values.BatchClearByDataFilter: instance GHC.Show.Show Network.Google.Resource.Sheets.Spreadsheets.Values.BatchClearByDataFilter.SpreadsheetsValuesBatchClearByDataFilter
+ Network.Google.Resource.Sheets.Spreadsheets.Values.BatchClearByDataFilter: instance Network.Google.Types.GoogleRequest Network.Google.Resource.Sheets.Spreadsheets.Values.BatchClearByDataFilter.SpreadsheetsValuesBatchClearByDataFilter
+ Network.Google.Resource.Sheets.Spreadsheets.Values.BatchClearByDataFilter: spreadsheetsValuesBatchClearByDataFilter :: Text -> BatchClearValuesByDataFilterRequest -> SpreadsheetsValuesBatchClearByDataFilter
+ Network.Google.Resource.Sheets.Spreadsheets.Values.BatchClearByDataFilter: svbcbdfAccessToken :: Lens' SpreadsheetsValuesBatchClearByDataFilter (Maybe Text)
+ Network.Google.Resource.Sheets.Spreadsheets.Values.BatchClearByDataFilter: svbcbdfCallback :: Lens' SpreadsheetsValuesBatchClearByDataFilter (Maybe Text)
+ Network.Google.Resource.Sheets.Spreadsheets.Values.BatchClearByDataFilter: svbcbdfPayload :: Lens' SpreadsheetsValuesBatchClearByDataFilter BatchClearValuesByDataFilterRequest
+ Network.Google.Resource.Sheets.Spreadsheets.Values.BatchClearByDataFilter: svbcbdfSpreadsheetId :: Lens' SpreadsheetsValuesBatchClearByDataFilter Text
+ Network.Google.Resource.Sheets.Spreadsheets.Values.BatchClearByDataFilter: svbcbdfUploadProtocol :: Lens' SpreadsheetsValuesBatchClearByDataFilter (Maybe Text)
+ Network.Google.Resource.Sheets.Spreadsheets.Values.BatchClearByDataFilter: svbcbdfUploadType :: Lens' SpreadsheetsValuesBatchClearByDataFilter (Maybe Text)
+ Network.Google.Resource.Sheets.Spreadsheets.Values.BatchClearByDataFilter: svbcbdfXgafv :: Lens' SpreadsheetsValuesBatchClearByDataFilter (Maybe Xgafv)
+ Network.Google.Resource.Sheets.Spreadsheets.Values.BatchClearByDataFilter: type SpreadsheetsValuesBatchClearByDataFilterResource = "v4" :> "spreadsheets" :> Capture "spreadsheetId" Text :> "values:batchClearByDataFilter" :> QueryParam "$.xgafv" Xgafv :> QueryParam "upload_protocol" Text :> QueryParam "access_token" Text :> QueryParam "uploadType" Text :> QueryParam "callback" Text :> QueryParam "alt" AltJSON :> ReqBody '[JSON] BatchClearValuesByDataFilterRequest :> Post '[JSON] BatchClearValuesByDataFilterResponse
+ Network.Google.Resource.Sheets.Spreadsheets.Values.BatchGetByDataFilter: data SpreadsheetsValuesBatchGetByDataFilter
+ Network.Google.Resource.Sheets.Spreadsheets.Values.BatchGetByDataFilter: instance Data.Data.Data Network.Google.Resource.Sheets.Spreadsheets.Values.BatchGetByDataFilter.SpreadsheetsValuesBatchGetByDataFilter
+ Network.Google.Resource.Sheets.Spreadsheets.Values.BatchGetByDataFilter: instance GHC.Classes.Eq Network.Google.Resource.Sheets.Spreadsheets.Values.BatchGetByDataFilter.SpreadsheetsValuesBatchGetByDataFilter
+ Network.Google.Resource.Sheets.Spreadsheets.Values.BatchGetByDataFilter: instance GHC.Generics.Generic Network.Google.Resource.Sheets.Spreadsheets.Values.BatchGetByDataFilter.SpreadsheetsValuesBatchGetByDataFilter
+ Network.Google.Resource.Sheets.Spreadsheets.Values.BatchGetByDataFilter: instance GHC.Show.Show Network.Google.Resource.Sheets.Spreadsheets.Values.BatchGetByDataFilter.SpreadsheetsValuesBatchGetByDataFilter
+ Network.Google.Resource.Sheets.Spreadsheets.Values.BatchGetByDataFilter: instance Network.Google.Types.GoogleRequest Network.Google.Resource.Sheets.Spreadsheets.Values.BatchGetByDataFilter.SpreadsheetsValuesBatchGetByDataFilter
+ Network.Google.Resource.Sheets.Spreadsheets.Values.BatchGetByDataFilter: spreadsheetsValuesBatchGetByDataFilter :: Text -> BatchGetValuesByDataFilterRequest -> SpreadsheetsValuesBatchGetByDataFilter
+ Network.Google.Resource.Sheets.Spreadsheets.Values.BatchGetByDataFilter: svbgbdfAccessToken :: Lens' SpreadsheetsValuesBatchGetByDataFilter (Maybe Text)
+ Network.Google.Resource.Sheets.Spreadsheets.Values.BatchGetByDataFilter: svbgbdfCallback :: Lens' SpreadsheetsValuesBatchGetByDataFilter (Maybe Text)
+ Network.Google.Resource.Sheets.Spreadsheets.Values.BatchGetByDataFilter: svbgbdfPayload :: Lens' SpreadsheetsValuesBatchGetByDataFilter BatchGetValuesByDataFilterRequest
+ Network.Google.Resource.Sheets.Spreadsheets.Values.BatchGetByDataFilter: svbgbdfSpreadsheetId :: Lens' SpreadsheetsValuesBatchGetByDataFilter Text
+ Network.Google.Resource.Sheets.Spreadsheets.Values.BatchGetByDataFilter: svbgbdfUploadProtocol :: Lens' SpreadsheetsValuesBatchGetByDataFilter (Maybe Text)
+ Network.Google.Resource.Sheets.Spreadsheets.Values.BatchGetByDataFilter: svbgbdfUploadType :: Lens' SpreadsheetsValuesBatchGetByDataFilter (Maybe Text)
+ Network.Google.Resource.Sheets.Spreadsheets.Values.BatchGetByDataFilter: svbgbdfXgafv :: Lens' SpreadsheetsValuesBatchGetByDataFilter (Maybe Xgafv)
+ Network.Google.Resource.Sheets.Spreadsheets.Values.BatchGetByDataFilter: type SpreadsheetsValuesBatchGetByDataFilterResource = "v4" :> "spreadsheets" :> Capture "spreadsheetId" Text :> "values:batchGetByDataFilter" :> QueryParam "$.xgafv" Xgafv :> QueryParam "upload_protocol" Text :> QueryParam "access_token" Text :> QueryParam "uploadType" Text :> QueryParam "callback" Text :> QueryParam "alt" AltJSON :> ReqBody '[JSON] BatchGetValuesByDataFilterRequest :> Post '[JSON] BatchGetValuesByDataFilterResponse
+ Network.Google.Resource.Sheets.Spreadsheets.Values.BatchUpdateByDataFilter: data SpreadsheetsValuesBatchUpdateByDataFilter
+ Network.Google.Resource.Sheets.Spreadsheets.Values.BatchUpdateByDataFilter: instance Data.Data.Data Network.Google.Resource.Sheets.Spreadsheets.Values.BatchUpdateByDataFilter.SpreadsheetsValuesBatchUpdateByDataFilter
+ Network.Google.Resource.Sheets.Spreadsheets.Values.BatchUpdateByDataFilter: instance GHC.Classes.Eq Network.Google.Resource.Sheets.Spreadsheets.Values.BatchUpdateByDataFilter.SpreadsheetsValuesBatchUpdateByDataFilter
+ Network.Google.Resource.Sheets.Spreadsheets.Values.BatchUpdateByDataFilter: instance GHC.Generics.Generic Network.Google.Resource.Sheets.Spreadsheets.Values.BatchUpdateByDataFilter.SpreadsheetsValuesBatchUpdateByDataFilter
+ Network.Google.Resource.Sheets.Spreadsheets.Values.BatchUpdateByDataFilter: instance GHC.Show.Show Network.Google.Resource.Sheets.Spreadsheets.Values.BatchUpdateByDataFilter.SpreadsheetsValuesBatchUpdateByDataFilter
+ Network.Google.Resource.Sheets.Spreadsheets.Values.BatchUpdateByDataFilter: instance Network.Google.Types.GoogleRequest Network.Google.Resource.Sheets.Spreadsheets.Values.BatchUpdateByDataFilter.SpreadsheetsValuesBatchUpdateByDataFilter
+ Network.Google.Resource.Sheets.Spreadsheets.Values.BatchUpdateByDataFilter: spreadsheetsValuesBatchUpdateByDataFilter :: Text -> BatchUpdateValuesByDataFilterRequest -> SpreadsheetsValuesBatchUpdateByDataFilter
+ Network.Google.Resource.Sheets.Spreadsheets.Values.BatchUpdateByDataFilter: svbubdfAccessToken :: Lens' SpreadsheetsValuesBatchUpdateByDataFilter (Maybe Text)
+ Network.Google.Resource.Sheets.Spreadsheets.Values.BatchUpdateByDataFilter: svbubdfCallback :: Lens' SpreadsheetsValuesBatchUpdateByDataFilter (Maybe Text)
+ Network.Google.Resource.Sheets.Spreadsheets.Values.BatchUpdateByDataFilter: svbubdfPayload :: Lens' SpreadsheetsValuesBatchUpdateByDataFilter BatchUpdateValuesByDataFilterRequest
+ Network.Google.Resource.Sheets.Spreadsheets.Values.BatchUpdateByDataFilter: svbubdfSpreadsheetId :: Lens' SpreadsheetsValuesBatchUpdateByDataFilter Text
+ Network.Google.Resource.Sheets.Spreadsheets.Values.BatchUpdateByDataFilter: svbubdfUploadProtocol :: Lens' SpreadsheetsValuesBatchUpdateByDataFilter (Maybe Text)
+ Network.Google.Resource.Sheets.Spreadsheets.Values.BatchUpdateByDataFilter: svbubdfUploadType :: Lens' SpreadsheetsValuesBatchUpdateByDataFilter (Maybe Text)
+ Network.Google.Resource.Sheets.Spreadsheets.Values.BatchUpdateByDataFilter: svbubdfXgafv :: Lens' SpreadsheetsValuesBatchUpdateByDataFilter (Maybe Xgafv)
+ Network.Google.Resource.Sheets.Spreadsheets.Values.BatchUpdateByDataFilter: type SpreadsheetsValuesBatchUpdateByDataFilterResource = "v4" :> "spreadsheets" :> Capture "spreadsheetId" Text :> "values:batchUpdateByDataFilter" :> QueryParam "$.xgafv" Xgafv :> QueryParam "upload_protocol" Text :> QueryParam "access_token" Text :> QueryParam "uploadType" Text :> QueryParam "callback" Text :> QueryParam "alt" AltJSON :> ReqBody '[JSON] BatchUpdateValuesByDataFilterRequest :> Post '[JSON] BatchUpdateValuesByDataFilterResponse
+ Network.Google.Sheets: BCSTSteppedArea :: BasicChartSeriesType
+ Network.Google.Sheets: BGVBDFRDTROFormattedString :: BatchGetValuesByDataFilterRequestDateTimeRenderOption
+ Network.Google.Sheets: BGVBDFRDTROSerialNumber :: BatchGetValuesByDataFilterRequestDateTimeRenderOption
+ Network.Google.Sheets: BGVBDFRMDColumns :: BatchGetValuesByDataFilterRequestMajorDimension
+ Network.Google.Sheets: BGVBDFRMDDimensionUnspecified :: BatchGetValuesByDataFilterRequestMajorDimension
+ Network.Google.Sheets: BGVBDFRMDRows :: BatchGetValuesByDataFilterRequestMajorDimension
+ Network.Google.Sheets: BUVBDFRRVROFormattedValue :: BatchUpdateValuesByDataFilterRequestResponseValueRenderOption
+ Network.Google.Sheets: BUVBDFRRVROFormula :: BatchUpdateValuesByDataFilterRequestResponseValueRenderOption
+ Network.Google.Sheets: BUVBDFRRVROUnformattedValue :: BatchUpdateValuesByDataFilterRequestResponseValueRenderOption
+ Network.Google.Sheets: BUVBDFRVIOInputValueOptionUnspecified :: BatchUpdateValuesByDataFilterRequestValueInputOption
+ Network.Google.Sheets: BUVBDFRVIORaw :: BatchUpdateValuesByDataFilterRequestValueInputOption
+ Network.Google.Sheets: BUVBDFRVIOUserEntered :: BatchUpdateValuesByDataFilterRequestValueInputOption
+ Network.Google.Sheets: BUVRRDTROFormattedString :: BatchUpdateValuesRequestResponseDateTimeRenderOption
+ Network.Google.Sheets: BUVRRDTROSerialNumber :: BatchUpdateValuesRequestResponseDateTimeRenderOption
+ Network.Google.Sheets: BUVRRVROFormattedValue :: BatchUpdateValuesRequestResponseValueRenderOption
+ Network.Google.Sheets: BUVRRVROFormula :: BatchUpdateValuesRequestResponseValueRenderOption
+ Network.Google.Sheets: BUVRRVROUnformattedValue :: BatchUpdateValuesRequestResponseValueRenderOption
+ Network.Google.Sheets: BasicChartCompareModeUnspecified :: BasicChartSpecCompareMode
+ Network.Google.Sheets: BasicChartStackedTypeUnspecified :: BasicChartSpecStackedType
+ Network.Google.Sheets: Boolean :: BooleanConditionType
+ Network.Google.Sheets: BubbleChartLegendPositionUnspecified :: BubbleChartSpecLegendPosition
+ Network.Google.Sheets: CFHACenter :: CellFormatHorizontalAlignment
+ Network.Google.Sheets: CFHAHorizontalAlignUnspecified :: CellFormatHorizontalAlignment
+ Network.Google.Sheets: CFHALeft' :: CellFormatHorizontalAlignment
+ Network.Google.Sheets: CFHARight' :: CellFormatHorizontalAlignment
+ Network.Google.Sheets: Category :: BasicChartSpecCompareMode
+ Network.Google.Sheets: DColumn :: DeveloperMetadataLookupLocationType
+ Network.Google.Sheets: DDeveloperMetadataLocationTypeUnspecified :: DeveloperMetadataLookupLocationType
+ Network.Google.Sheets: DFVRMDColumns :: DataFilterValueRangeMajorDimension
+ Network.Google.Sheets: DFVRMDDimensionUnspecified :: DataFilterValueRangeMajorDimension
+ Network.Google.Sheets: DFVRMDRows :: DataFilterValueRangeMajorDimension
+ Network.Google.Sheets: DMLLTColumn :: DeveloperMetadataLocationLocationType
+ Network.Google.Sheets: DMLLTDeveloperMetadataLocationTypeUnspecified :: DeveloperMetadataLocationLocationType
+ Network.Google.Sheets: DMLLTRow :: DeveloperMetadataLocationLocationType
+ Network.Google.Sheets: DMLLTSheet :: DeveloperMetadataLocationLocationType
+ Network.Google.Sheets: DMLLTSpreadsheet :: DeveloperMetadataLocationLocationType
+ Network.Google.Sheets: DMLVDeveloperMetadataVisibilityUnspecified :: DeveloperMetadataLookupVisibility
+ Network.Google.Sheets: DMLVDocument :: DeveloperMetadataLookupVisibility
+ Network.Google.Sheets: DMLVProject :: DeveloperMetadataLookupVisibility
+ Network.Google.Sheets: DRow :: DeveloperMetadataLookupLocationType
+ Network.Google.Sheets: DSheet :: DeveloperMetadataLookupLocationType
+ Network.Google.Sheets: DSpreadsheet :: DeveloperMetadataLookupLocationType
+ Network.Google.Sheets: DateTimeRuleTypeUnspecified :: DateTimeRuleType
+ Network.Google.Sheets: Datum :: BasicChartSpecCompareMode
+ Network.Google.Sheets: DayMonth :: DateTimeRuleType
+ Network.Google.Sheets: DayOfMonth :: DateTimeRuleType
+ Network.Google.Sheets: DayOfWeek :: DateTimeRuleType
+ Network.Google.Sheets: DayOfYear :: DateTimeRuleType
+ Network.Google.Sheets: DeveloperMetadataLocationMatchingStrategyUnspecified :: DeveloperMetadataLookupLocationMatchingStrategy
+ Network.Google.Sheets: DeveloperMetadataVisibilityUnspecified :: DeveloperMetadataVisibility
+ Network.Google.Sheets: Document :: DeveloperMetadataVisibility
+ Network.Google.Sheets: ExactLocation :: DeveloperMetadataLookupLocationMatchingStrategy
+ Network.Google.Sheets: HCSLPBottomLegend :: HistogramChartSpecLegendPosition
+ Network.Google.Sheets: HCSLPHistogramChartLegendPositionUnspecified :: HistogramChartSpecLegendPosition
+ Network.Google.Sheets: HCSLPInsideLegend :: HistogramChartSpecLegendPosition
+ Network.Google.Sheets: HCSLPLeftLegend :: HistogramChartSpecLegendPosition
+ Network.Google.Sheets: HCSLPNoLegend :: HistogramChartSpecLegendPosition
+ Network.Google.Sheets: HCSLPRightLegend :: HistogramChartSpecLegendPosition
+ Network.Google.Sheets: HCSLPTopLegend :: HistogramChartSpecLegendPosition
+ Network.Google.Sheets: HourMinute :: DateTimeRuleType
+ Network.Google.Sheets: HourMinuteAmpm :: DateTimeRuleType
+ Network.Google.Sheets: InsideLegend :: BubbleChartSpecLegendPosition
+ Network.Google.Sheets: IntersectingLocation :: DeveloperMetadataLookupLocationMatchingStrategy
+ Network.Google.Sheets: LSTCustom :: LineStyleType
+ Network.Google.Sheets: LSTDotted :: LineStyleType
+ Network.Google.Sheets: LSTInvisible :: LineStyleType
+ Network.Google.Sheets: LSTLineDashTypeUnspecified :: LineStyleType
+ Network.Google.Sheets: LSTLongDashed :: LineStyleType
+ Network.Google.Sheets: LSTLongDashedDotted :: LineStyleType
+ Network.Google.Sheets: LSTMediumDashed :: LineStyleType
+ Network.Google.Sheets: LSTMediumDashedDotted :: LineStyleType
+ Network.Google.Sheets: LSTSolid :: LineStyleType
+ Network.Google.Sheets: Large :: OrgChartSpecNodeSize
+ Network.Google.Sheets: Medium :: OrgChartSpecNodeSize
+ Network.Google.Sheets: Month :: DateTimeRuleType
+ Network.Google.Sheets: NotStacked :: BasicChartSpecStackedType
+ Network.Google.Sheets: OrgChartLabelSizeUnspecified :: OrgChartSpecNodeSize
+ Network.Google.Sheets: PCSLPBottomLegend :: PieChartSpecLegendPosition
+ Network.Google.Sheets: PCSLPLabeledLegend :: PieChartSpecLegendPosition
+ Network.Google.Sheets: PCSLPLeftLegend :: PieChartSpecLegendPosition
+ Network.Google.Sheets: PCSLPNoLegend :: PieChartSpecLegendPosition
+ Network.Google.Sheets: PCSLPPieChartLegendPositionUnspecified :: PieChartSpecLegendPosition
+ Network.Google.Sheets: PCSLPRightLegend :: PieChartSpecLegendPosition
+ Network.Google.Sheets: PCSLPTopLegend :: PieChartSpecLegendPosition
+ Network.Google.Sheets: PercentOfColumnTotal :: PivotValueCalculatedDisplayType
+ Network.Google.Sheets: PercentOfGrandTotal :: PivotValueCalculatedDisplayType
+ Network.Google.Sheets: PercentOfRowTotal :: PivotValueCalculatedDisplayType
+ Network.Google.Sheets: PercentStacked :: BasicChartSpecStackedType
+ Network.Google.Sheets: PivotValueCalculatedDisplayTypeUnspecified :: PivotValueCalculatedDisplayType
+ Network.Google.Sheets: Project :: DeveloperMetadataVisibility
+ Network.Google.Sheets: Quarter :: DateTimeRuleType
+ Network.Google.Sheets: SPARHour :: SpreadsheetPropertiesAutoRecalc
+ Network.Google.Sheets: SPARMinute :: SpreadsheetPropertiesAutoRecalc
+ Network.Google.Sheets: SPAROnChange :: SpreadsheetPropertiesAutoRecalc
+ Network.Google.Sheets: SPARRecalculationIntervalUnspecified :: SpreadsheetPropertiesAutoRecalc
+ Network.Google.Sheets: Second :: DateTimeRuleType
+ Network.Google.Sheets: Small :: OrgChartSpecNodeSize
+ Network.Google.Sheets: Stacked :: BasicChartSpecStackedType
+ Network.Google.Sheets: SteppedArea :: BasicChartSpecChartType
+ Network.Google.Sheets: TTCRDTAutodetect :: TextToColumnsRequestDelimiterType
+ Network.Google.Sheets: WCSSTSequential :: WaterfallChartSpecStackedType
+ Network.Google.Sheets: WCSSTStacked :: WaterfallChartSpecStackedType
+ Network.Google.Sheets: WCSSTWaterfallStackedTypeUnspecified :: WaterfallChartSpecStackedType
+ Network.Google.Sheets: Year :: DateTimeRuleType
+ Network.Google.Sheets: YearMonth :: DateTimeRuleType
+ Network.Google.Sheets: YearMonthDay :: DateTimeRuleType
+ Network.Google.Sheets: YearQuarter :: DateTimeRuleType
+ Network.Google.Sheets: addDimensionGroupRequest :: AddDimensionGroupRequest
+ Network.Google.Sheets: addDimensionGroupResponse :: AddDimensionGroupResponse
+ Network.Google.Sheets: adgrDimensionGroups :: Lens' AddDimensionGroupResponse [DimensionGroup]
+ Network.Google.Sheets: adgrRange :: Lens' AddDimensionGroupRequest (Maybe DimensionRange)
+ Network.Google.Sheets: bColor :: Lens' BasicChartSeries (Maybe Color)
+ Network.Google.Sheets: bLineStyle :: Lens' BasicChartSeries (Maybe LineStyle)
+ Network.Google.Sheets: bTargetAxis :: Lens' BasicChartSeries (Maybe BasicChartSeriesTargetAxis)
+ Network.Google.Sheets: bType :: Lens' BasicChartSeries (Maybe BasicChartSeriesType)
+ Network.Google.Sheets: basAxis :: Lens' BasicChartSpec [BasicChartAxis]
+ Network.Google.Sheets: basChartType :: Lens' BasicChartSpec (Maybe BasicChartSpecChartType)
+ Network.Google.Sheets: basCompareMode :: Lens' BasicChartSpec (Maybe BasicChartSpecCompareMode)
+ Network.Google.Sheets: basDomains :: Lens' BasicChartSpec [BasicChartDomain]
+ Network.Google.Sheets: basHeaderCount :: Lens' BasicChartSpec (Maybe Int32)
+ Network.Google.Sheets: basInterpolateNulls :: Lens' BasicChartSpec (Maybe Bool)
+ Network.Google.Sheets: basLegendPosition :: Lens' BasicChartSpec (Maybe BasicChartSpecLegendPosition)
+ Network.Google.Sheets: basLineSmoothing :: Lens' BasicChartSpec (Maybe Bool)
+ Network.Google.Sheets: basSeries :: Lens' BasicChartSpec [BasicChartSeries]
+ Network.Google.Sheets: basStackedType :: Lens' BasicChartSpec (Maybe BasicChartSpecStackedType)
+ Network.Google.Sheets: basThreeDimensional :: Lens' BasicChartSpec (Maybe Bool)
+ Network.Google.Sheets: batchClearValuesByDataFilterRequest :: BatchClearValuesByDataFilterRequest
+ Network.Google.Sheets: batchClearValuesByDataFilterResponse :: BatchClearValuesByDataFilterResponse
+ Network.Google.Sheets: batchGetValuesByDataFilterRequest :: BatchGetValuesByDataFilterRequest
+ Network.Google.Sheets: batchGetValuesByDataFilterResponse :: BatchGetValuesByDataFilterResponse
+ Network.Google.Sheets: batchUpdateValuesByDataFilterRequest :: BatchUpdateValuesByDataFilterRequest
+ Network.Google.Sheets: batchUpdateValuesByDataFilterResponse :: BatchUpdateValuesByDataFilterResponse
+ Network.Google.Sheets: bcaTitleTextPosition :: Lens' BasicChartAxis (Maybe TextPosition)
+ Network.Google.Sheets: bcdReversed :: Lens' BasicChartDomain (Maybe Bool)
+ Network.Google.Sheets: bcsBubbleBOrderColor :: Lens' BubbleChartSpec (Maybe Color)
+ Network.Google.Sheets: bcsBubbleLabels :: Lens' BubbleChartSpec (Maybe ChartData)
+ Network.Google.Sheets: bcsBubbleMaxRadiusSize :: Lens' BubbleChartSpec (Maybe Int32)
+ Network.Google.Sheets: bcsBubbleMinRadiusSize :: Lens' BubbleChartSpec (Maybe Int32)
+ Network.Google.Sheets: bcsBubbleOpacity :: Lens' BubbleChartSpec (Maybe Double)
+ Network.Google.Sheets: bcsBubbleSizes :: Lens' BubbleChartSpec (Maybe ChartData)
+ Network.Google.Sheets: bcsBubbleTextStyle :: Lens' BubbleChartSpec (Maybe TextFormat)
+ Network.Google.Sheets: bcsDomain :: Lens' BubbleChartSpec (Maybe ChartData)
+ Network.Google.Sheets: bcsGroupIds :: Lens' BubbleChartSpec (Maybe ChartData)
+ Network.Google.Sheets: bcsLegendPosition :: Lens' BubbleChartSpec (Maybe BubbleChartSpecLegendPosition)
+ Network.Google.Sheets: bcvbdfrClearedRanges :: Lens' BatchClearValuesByDataFilterResponse [Text]
+ Network.Google.Sheets: bcvbdfrDataFilters :: Lens' BatchClearValuesByDataFilterRequest [DataFilter]
+ Network.Google.Sheets: bcvbdfrSpreadsheetId :: Lens' BatchClearValuesByDataFilterResponse (Maybe Text)
+ Network.Google.Sheets: bgvbdfrDataFilters :: Lens' BatchGetValuesByDataFilterRequest [DataFilter]
+ Network.Google.Sheets: bgvbdfrDateTimeRenderOption :: Lens' BatchGetValuesByDataFilterRequest (Maybe BatchGetValuesByDataFilterRequestDateTimeRenderOption)
+ Network.Google.Sheets: bgvbdfrMajorDimension :: Lens' BatchGetValuesByDataFilterRequest (Maybe BatchGetValuesByDataFilterRequestMajorDimension)
+ Network.Google.Sheets: bgvbdfrSpreadsheetId :: Lens' BatchGetValuesByDataFilterResponse (Maybe Text)
+ Network.Google.Sheets: bgvbdfrValueRanges :: Lens' BatchGetValuesByDataFilterResponse [MatchedValueRange]
+ Network.Google.Sheets: bgvbdfrValueRenderOption :: Lens' BatchGetValuesByDataFilterRequest (Maybe BatchGetValuesByDataFilterRequestValueRenderOption)
+ Network.Google.Sheets: bubbleChartSpec :: BubbleChartSpec
+ Network.Google.Sheets: buvbdfrData :: Lens' BatchUpdateValuesByDataFilterRequest [DataFilterValueRange]
+ Network.Google.Sheets: buvbdfrIncludeValuesInResponse :: Lens' BatchUpdateValuesByDataFilterRequest (Maybe Bool)
+ Network.Google.Sheets: buvbdfrResponseDateTimeRenderOption :: Lens' BatchUpdateValuesByDataFilterRequest (Maybe BatchUpdateValuesByDataFilterRequestResponseDateTimeRenderOption)
+ Network.Google.Sheets: buvbdfrResponseValueRenderOption :: Lens' BatchUpdateValuesByDataFilterRequest (Maybe BatchUpdateValuesByDataFilterRequestResponseValueRenderOption)
+ Network.Google.Sheets: buvbdfrResponses :: Lens' BatchUpdateValuesByDataFilterResponse [UpdateValuesByDataFilterResponse]
+ Network.Google.Sheets: buvbdfrSpreadsheetId :: Lens' BatchUpdateValuesByDataFilterResponse (Maybe Text)
+ Network.Google.Sheets: buvbdfrTotalUpdatedCells :: Lens' BatchUpdateValuesByDataFilterResponse (Maybe Int32)
+ Network.Google.Sheets: buvbdfrTotalUpdatedColumns :: Lens' BatchUpdateValuesByDataFilterResponse (Maybe Int32)
+ Network.Google.Sheets: buvbdfrTotalUpdatedRows :: Lens' BatchUpdateValuesByDataFilterResponse (Maybe Int32)
+ Network.Google.Sheets: buvbdfrTotalUpdatedSheets :: Lens' BatchUpdateValuesByDataFilterResponse (Maybe Int32)
+ Network.Google.Sheets: buvbdfrValueInputOption :: Lens' BatchUpdateValuesByDataFilterRequest (Maybe BatchUpdateValuesByDataFilterRequestValueInputOption)
+ Network.Google.Sheets: cDeveloperMetadata :: Lens' CreateDeveloperMetadataRequest (Maybe DeveloperMetadata)
+ Network.Google.Sheets: candlestickChartSpec :: CandlestickChartSpec
+ Network.Google.Sheets: candlestickData :: CandlestickData
+ Network.Google.Sheets: candlestickDomain :: CandlestickDomain
+ Network.Google.Sheets: candlestickSeries :: CandlestickSeries
+ Network.Google.Sheets: ccsData :: Lens' CandlestickChartSpec [CandlestickData]
+ Network.Google.Sheets: ccsDomain :: Lens' CandlestickChartSpec (Maybe CandlestickDomain)
+ Network.Google.Sheets: cdCloseSeries :: Lens' CandlestickData (Maybe CandlestickSeries)
+ Network.Google.Sheets: cdData :: Lens' CandlestickDomain (Maybe ChartData)
+ Network.Google.Sheets: cdHighSeries :: Lens' CandlestickData (Maybe CandlestickSeries)
+ Network.Google.Sheets: cdLowSeries :: Lens' CandlestickData (Maybe CandlestickSeries)
+ Network.Google.Sheets: cdOpenSeries :: Lens' CandlestickData (Maybe CandlestickSeries)
+ Network.Google.Sheets: cdReversed :: Lens' CandlestickDomain (Maybe Bool)
+ Network.Google.Sheets: cdmrDeveloperMetadata :: Lens' CreateDeveloperMetadataResponse (Maybe DeveloperMetadata)
+ Network.Google.Sheets: cfTextRotation :: Lens' CellFormat (Maybe TextRotation)
+ Network.Google.Sheets: createDeveloperMetadataRequest :: CreateDeveloperMetadataRequest
+ Network.Google.Sheets: createDeveloperMetadataResponse :: CreateDeveloperMetadataResponse
+ Network.Google.Sheets: csAltText :: Lens' ChartSpec (Maybe Text)
+ Network.Google.Sheets: csBackgRoundColor :: Lens' ChartSpec (Maybe Color)
+ Network.Google.Sheets: csBubbleChart :: Lens' ChartSpec (Maybe BubbleChartSpec)
+ Network.Google.Sheets: csCandlestickChart :: Lens' ChartSpec (Maybe CandlestickChartSpec)
+ Network.Google.Sheets: csData :: Lens' CandlestickSeries (Maybe ChartData)
+ Network.Google.Sheets: csFontName :: Lens' ChartSpec (Maybe Text)
+ Network.Google.Sheets: csHistogramChart :: Lens' ChartSpec (Maybe HistogramChartSpec)
+ Network.Google.Sheets: csMaximized :: Lens' ChartSpec (Maybe Bool)
+ Network.Google.Sheets: csOrgChart :: Lens' ChartSpec (Maybe OrgChartSpec)
+ Network.Google.Sheets: csSubtitle :: Lens' ChartSpec (Maybe Text)
+ Network.Google.Sheets: csSubtitleTextFormat :: Lens' ChartSpec (Maybe TextFormat)
+ Network.Google.Sheets: csSubtitleTextPosition :: Lens' ChartSpec (Maybe TextPosition)
+ Network.Google.Sheets: csTitleTextFormat :: Lens' ChartSpec (Maybe TextFormat)
+ Network.Google.Sheets: csTitleTextPosition :: Lens' ChartSpec (Maybe TextPosition)
+ Network.Google.Sheets: csTreemapChart :: Lens' ChartSpec (Maybe TreemapChartSpec)
+ Network.Google.Sheets: csWaterfallChart :: Lens' ChartSpec (Maybe WaterfallChartSpec)
+ Network.Google.Sheets: dLocationMatchingStrategy :: Lens' DeveloperMetadataLookup (Maybe DeveloperMetadataLookupLocationMatchingStrategy)
+ Network.Google.Sheets: dLocationType :: Lens' DeveloperMetadataLookup (Maybe DeveloperMetadataLookupLocationType)
+ Network.Google.Sheets: dMetadataId :: Lens' DeveloperMetadataLookup (Maybe Int32)
+ Network.Google.Sheets: dMetadataKey :: Lens' DeveloperMetadataLookup (Maybe Text)
+ Network.Google.Sheets: dMetadataLocation :: Lens' DeveloperMetadataLookup (Maybe DeveloperMetadataLocation)
+ Network.Google.Sheets: dMetadataValue :: Lens' DeveloperMetadataLookup (Maybe Text)
+ Network.Google.Sheets: dVisibility :: Lens' DeveloperMetadataLookup (Maybe DeveloperMetadataLookupVisibility)
+ Network.Google.Sheets: data AddDimensionGroupRequest
+ Network.Google.Sheets: data AddDimensionGroupResponse
+ Network.Google.Sheets: data BasicChartSpecCompareMode
+ Network.Google.Sheets: data BasicChartSpecStackedType
+ Network.Google.Sheets: data BatchClearValuesByDataFilterRequest
+ Network.Google.Sheets: data BatchClearValuesByDataFilterResponse
+ Network.Google.Sheets: data BatchGetValuesByDataFilterRequest
+ Network.Google.Sheets: data BatchGetValuesByDataFilterRequestDateTimeRenderOption
+ Network.Google.Sheets: data BatchGetValuesByDataFilterRequestMajorDimension
+ Network.Google.Sheets: data BatchGetValuesByDataFilterRequestValueRenderOption
+ Network.Google.Sheets: data BatchGetValuesByDataFilterResponse
+ Network.Google.Sheets: data BatchUpdateValuesByDataFilterRequest
+ Network.Google.Sheets: data BatchUpdateValuesByDataFilterRequestResponseDateTimeRenderOption
+ Network.Google.Sheets: data BatchUpdateValuesByDataFilterRequestResponseValueRenderOption
+ Network.Google.Sheets: data BatchUpdateValuesByDataFilterRequestValueInputOption
+ Network.Google.Sheets: data BatchUpdateValuesByDataFilterResponse
+ Network.Google.Sheets: data BubbleChartSpec
+ Network.Google.Sheets: data BubbleChartSpecLegendPosition
+ Network.Google.Sheets: data CandlestickChartSpec
+ Network.Google.Sheets: data CandlestickData
+ Network.Google.Sheets: data CandlestickDomain
+ Network.Google.Sheets: data CandlestickSeries
+ Network.Google.Sheets: data CreateDeveloperMetadataRequest
+ Network.Google.Sheets: data CreateDeveloperMetadataResponse
+ Network.Google.Sheets: data DataFilter
+ Network.Google.Sheets: data DataFilterValueRange
+ Network.Google.Sheets: data DataFilterValueRangeMajorDimension
+ Network.Google.Sheets: data DateTimeRule
+ Network.Google.Sheets: data DateTimeRuleType
+ Network.Google.Sheets: data DeleteDeveloperMetadataRequest
+ Network.Google.Sheets: data DeleteDeveloperMetadataResponse
+ Network.Google.Sheets: data DeleteDimensionGroupRequest
+ Network.Google.Sheets: data DeleteDimensionGroupResponse
+ Network.Google.Sheets: data DeveloperMetadata
+ Network.Google.Sheets: data DeveloperMetadataLocation
+ Network.Google.Sheets: data DeveloperMetadataLocationLocationType
+ Network.Google.Sheets: data DeveloperMetadataLookup
+ Network.Google.Sheets: data DeveloperMetadataLookupLocationMatchingStrategy
+ Network.Google.Sheets: data DeveloperMetadataLookupLocationType
+ Network.Google.Sheets: data DeveloperMetadataLookupVisibility
+ Network.Google.Sheets: data DeveloperMetadataVisibility
+ Network.Google.Sheets: data DimensionGroup
+ Network.Google.Sheets: data GetSpreadsheetByDataFilterRequest
+ Network.Google.Sheets: data HistogramChartSpec
+ Network.Google.Sheets: data HistogramChartSpecLegendPosition
+ Network.Google.Sheets: data HistogramRule
+ Network.Google.Sheets: data HistogramSeries
+ Network.Google.Sheets: data IterativeCalculationSettings
+ Network.Google.Sheets: data LineStyle
+ Network.Google.Sheets: data LineStyleType
+ Network.Google.Sheets: data ManualRule
+ Network.Google.Sheets: data ManualRuleGroup
+ Network.Google.Sheets: data MatchedDeveloperMetadata
+ Network.Google.Sheets: data MatchedValueRange
+ Network.Google.Sheets: data OrgChartSpec
+ Network.Google.Sheets: data OrgChartSpecNodeSize
+ Network.Google.Sheets: data PivotGroupRule
+ Network.Google.Sheets: data PivotValueCalculatedDisplayType
+ Network.Google.Sheets: data RandomizeRangeRequest
+ Network.Google.Sheets: data SearchDeveloperMetadataRequest
+ Network.Google.Sheets: data SearchDeveloperMetadataResponse
+ Network.Google.Sheets: data TextPosition
+ Network.Google.Sheets: data TextPositionHorizontalAlignment
+ Network.Google.Sheets: data TextRotation
+ Network.Google.Sheets: data TreemapChartColorScale
+ Network.Google.Sheets: data TreemapChartSpec
+ Network.Google.Sheets: data UpdateDeveloperMetadataRequest
+ Network.Google.Sheets: data UpdateDeveloperMetadataResponse
+ Network.Google.Sheets: data UpdateDimensionGroupRequest
+ Network.Google.Sheets: data UpdateValuesByDataFilterResponse
+ Network.Google.Sheets: data WaterfallChartColumnStyle
+ Network.Google.Sheets: data WaterfallChartCustomSubtotal
+ Network.Google.Sheets: data WaterfallChartDomain
+ Network.Google.Sheets: data WaterfallChartSeries
+ Network.Google.Sheets: data WaterfallChartSpec
+ Network.Google.Sheets: data WaterfallChartSpecStackedType
+ Network.Google.Sheets: dataFilter :: DataFilter
+ Network.Google.Sheets: dataFilterValueRange :: DataFilterValueRange
+ Network.Google.Sheets: dateTimeRule :: DateTimeRule
+ Network.Google.Sheets: ddgrDimensionGroups :: Lens' DeleteDimensionGroupResponse [DimensionGroup]
+ Network.Google.Sheets: ddgrRange :: Lens' DeleteDimensionGroupRequest (Maybe DimensionRange)
+ Network.Google.Sheets: ddmrDataFilter :: Lens' DeleteDeveloperMetadataRequest (Maybe DataFilter)
+ Network.Google.Sheets: ddmrDeletedDeveloperMetadata :: Lens' DeleteDeveloperMetadataResponse [DeveloperMetadata]
+ Network.Google.Sheets: deleteDeveloperMetadataRequest :: DeleteDeveloperMetadataRequest
+ Network.Google.Sheets: deleteDeveloperMetadataResponse :: DeleteDeveloperMetadataResponse
+ Network.Google.Sheets: deleteDimensionGroupRequest :: DeleteDimensionGroupRequest
+ Network.Google.Sheets: deleteDimensionGroupResponse :: DeleteDimensionGroupResponse
+ Network.Google.Sheets: developerMetadata :: DeveloperMetadata
+ Network.Google.Sheets: developerMetadataLocation :: DeveloperMetadataLocation
+ Network.Google.Sheets: developerMetadataLookup :: DeveloperMetadataLookup
+ Network.Google.Sheets: dfA1Range :: Lens' DataFilter (Maybe Text)
+ Network.Google.Sheets: dfDeveloperMetadataLookup :: Lens' DataFilter (Maybe DeveloperMetadataLookup)
+ Network.Google.Sheets: dfGridRange :: Lens' DataFilter (Maybe GridRange)
+ Network.Google.Sheets: dfvrDataFilter :: Lens' DataFilterValueRange (Maybe DataFilter)
+ Network.Google.Sheets: dfvrMajorDimension :: Lens' DataFilterValueRange (Maybe DataFilterValueRangeMajorDimension)
+ Network.Google.Sheets: dfvrValues :: Lens' DataFilterValueRange [[JSONValue]]
+ Network.Google.Sheets: dgCollapsed :: Lens' DimensionGroup (Maybe Bool)
+ Network.Google.Sheets: dgDepth :: Lens' DimensionGroup (Maybe Int32)
+ Network.Google.Sheets: dgRange :: Lens' DimensionGroup (Maybe DimensionRange)
+ Network.Google.Sheets: dimensionGroup :: DimensionGroup
+ Network.Google.Sheets: dmLocation :: Lens' DeveloperMetadata (Maybe DeveloperMetadataLocation)
+ Network.Google.Sheets: dmMetadataId :: Lens' DeveloperMetadata (Maybe Int32)
+ Network.Google.Sheets: dmMetadataKey :: Lens' DeveloperMetadata (Maybe Text)
+ Network.Google.Sheets: dmMetadataValue :: Lens' DeveloperMetadata (Maybe Text)
+ Network.Google.Sheets: dmVisibility :: Lens' DeveloperMetadata (Maybe DeveloperMetadataVisibility)
+ Network.Google.Sheets: dmlDimensionRange :: Lens' DeveloperMetadataLocation (Maybe DimensionRange)
+ Network.Google.Sheets: dmlLocationType :: Lens' DeveloperMetadataLocation (Maybe DeveloperMetadataLocationLocationType)
+ Network.Google.Sheets: dmlSheetId :: Lens' DeveloperMetadataLocation (Maybe Int32)
+ Network.Google.Sheets: dmlSpreadsheet :: Lens' DeveloperMetadataLocation (Maybe Bool)
+ Network.Google.Sheets: dpDeveloperMetadata :: Lens' DimensionProperties [DeveloperMetadata]
+ Network.Google.Sheets: driveFileScope :: Proxy '["https://www.googleapis.com/auth/drive.file"]
+ Network.Google.Sheets: dtrType :: Lens' DateTimeRule (Maybe DateTimeRuleType)
+ Network.Google.Sheets: getSpreadsheetByDataFilterRequest :: GetSpreadsheetByDataFilterRequest
+ Network.Google.Sheets: gpColumnGroupControlAfter :: Lens' GridProperties (Maybe Bool)
+ Network.Google.Sheets: gpRowGroupControlAfter :: Lens' GridProperties (Maybe Bool)
+ Network.Google.Sheets: gsbdfrDataFilters :: Lens' GetSpreadsheetByDataFilterRequest [DataFilter]
+ Network.Google.Sheets: gsbdfrIncludeGridData :: Lens' GetSpreadsheetByDataFilterRequest (Maybe Bool)
+ Network.Google.Sheets: hcsBucketSize :: Lens' HistogramChartSpec (Maybe Double)
+ Network.Google.Sheets: hcsLegendPosition :: Lens' HistogramChartSpec (Maybe HistogramChartSpecLegendPosition)
+ Network.Google.Sheets: hcsOutlierPercentile :: Lens' HistogramChartSpec (Maybe Double)
+ Network.Google.Sheets: hcsSeries :: Lens' HistogramChartSpec [HistogramSeries]
+ Network.Google.Sheets: hcsShowItemDividers :: Lens' HistogramChartSpec (Maybe Bool)
+ Network.Google.Sheets: histogramChartSpec :: HistogramChartSpec
+ Network.Google.Sheets: histogramRule :: HistogramRule
+ Network.Google.Sheets: histogramSeries :: HistogramSeries
+ Network.Google.Sheets: hrEnd :: Lens' HistogramRule (Maybe Double)
+ Network.Google.Sheets: hrInterval :: Lens' HistogramRule (Maybe Double)
+ Network.Google.Sheets: hrStart :: Lens' HistogramRule (Maybe Double)
+ Network.Google.Sheets: hsBarColor :: Lens' HistogramSeries (Maybe Color)
+ Network.Google.Sheets: hsData :: Lens' HistogramSeries (Maybe ChartData)
+ Network.Google.Sheets: icsConvergenceThreshold :: Lens' IterativeCalculationSettings (Maybe Double)
+ Network.Google.Sheets: icsMaxIterations :: Lens' IterativeCalculationSettings (Maybe Int32)
+ Network.Google.Sheets: iterativeCalculationSettings :: IterativeCalculationSettings
+ Network.Google.Sheets: lineStyle :: LineStyle
+ Network.Google.Sheets: lsType :: Lens' LineStyle (Maybe LineStyleType)
+ Network.Google.Sheets: lsWidth :: Lens' LineStyle (Maybe Int32)
+ Network.Google.Sheets: manualRule :: ManualRule
+ Network.Google.Sheets: manualRuleGroup :: ManualRuleGroup
+ Network.Google.Sheets: matchedDeveloperMetadata :: MatchedDeveloperMetadata
+ Network.Google.Sheets: matchedValueRange :: MatchedValueRange
+ Network.Google.Sheets: mdmDataFilters :: Lens' MatchedDeveloperMetadata [DataFilter]
+ Network.Google.Sheets: mdmDeveloperMetadata :: Lens' MatchedDeveloperMetadata (Maybe DeveloperMetadata)
+ Network.Google.Sheets: mrGroups :: Lens' ManualRule [ManualRuleGroup]
+ Network.Google.Sheets: mrgGroupName :: Lens' ManualRuleGroup (Maybe ExtendedValue)
+ Network.Google.Sheets: mrgItems :: Lens' ManualRuleGroup [ExtendedValue]
+ Network.Google.Sheets: mvrDataFilters :: Lens' MatchedValueRange [DataFilter]
+ Network.Google.Sheets: mvrValueRange :: Lens' MatchedValueRange (Maybe ValueRange)
+ Network.Google.Sheets: ocsLabels :: Lens' OrgChartSpec (Maybe ChartData)
+ Network.Google.Sheets: ocsNodeColor :: Lens' OrgChartSpec (Maybe Color)
+ Network.Google.Sheets: ocsNodeSize :: Lens' OrgChartSpec (Maybe OrgChartSpecNodeSize)
+ Network.Google.Sheets: ocsParentLabels :: Lens' OrgChartSpec (Maybe ChartData)
+ Network.Google.Sheets: ocsSelectedNodeColor :: Lens' OrgChartSpec (Maybe Color)
+ Network.Google.Sheets: ocsTooltips :: Lens' OrgChartSpec (Maybe ChartData)
+ Network.Google.Sheets: orgChartSpec :: OrgChartSpec
+ Network.Google.Sheets: pgGroupRule :: Lens' PivotGroup (Maybe PivotGroupRule)
+ Network.Google.Sheets: pgLabel :: Lens' PivotGroup (Maybe Text)
+ Network.Google.Sheets: pgRepeatHeadings :: Lens' PivotGroup (Maybe Bool)
+ Network.Google.Sheets: pgrDateTimeRule :: Lens' PivotGroupRule (Maybe DateTimeRule)
+ Network.Google.Sheets: pgrHistogramRule :: Lens' PivotGroupRule (Maybe HistogramRule)
+ Network.Google.Sheets: pgrManualRule :: Lens' PivotGroupRule (Maybe ManualRule)
+ Network.Google.Sheets: pivotGroupRule :: PivotGroupRule
+ Network.Google.Sheets: pvCalculatedDisplayType :: Lens' PivotValue (Maybe PivotValueCalculatedDisplayType)
+ Network.Google.Sheets: rAddDimensionGroup :: Lens' Response (Maybe AddDimensionGroupResponse)
+ Network.Google.Sheets: rCreateDeveloperMetadata :: Lens' Response (Maybe CreateDeveloperMetadataResponse)
+ Network.Google.Sheets: rDeleteDeveloperMetadata :: Lens' Response (Maybe DeleteDeveloperMetadataResponse)
+ Network.Google.Sheets: rDeleteDimensionGroup :: Lens' Response (Maybe DeleteDimensionGroupResponse)
+ Network.Google.Sheets: rUpdateDeveloperMetadata :: Lens' Response (Maybe UpdateDeveloperMetadataResponse)
+ Network.Google.Sheets: randomizeRangeRequest :: RandomizeRangeRequest
+ Network.Google.Sheets: reqAddDimensionGroup :: Lens' Request' (Maybe AddDimensionGroupRequest)
+ Network.Google.Sheets: reqCreateDeveloperMetadata :: Lens' Request' (Maybe CreateDeveloperMetadataRequest)
+ Network.Google.Sheets: reqDeleteDeveloperMetadata :: Lens' Request' (Maybe DeleteDeveloperMetadataRequest)
+ Network.Google.Sheets: reqDeleteDimensionGroup :: Lens' Request' (Maybe DeleteDimensionGroupRequest)
+ Network.Google.Sheets: reqRandomizeRange :: Lens' Request' (Maybe RandomizeRangeRequest)
+ Network.Google.Sheets: reqUpdateDeveloperMetadata :: Lens' Request' (Maybe UpdateDeveloperMetadataRequest)
+ Network.Google.Sheets: reqUpdateDimensionGroup :: Lens' Request' (Maybe UpdateDimensionGroupRequest)
+ Network.Google.Sheets: rrrRange :: Lens' RandomizeRangeRequest (Maybe GridRange)
+ Network.Google.Sheets: sColumnGroups :: Lens' Sheet [DimensionGroup]
+ Network.Google.Sheets: sDeveloperMetadata :: Lens' Sheet [DeveloperMetadata]
+ Network.Google.Sheets: sRowGroups :: Lens' Sheet [DimensionGroup]
+ Network.Google.Sheets: sdmrDataFilters :: Lens' SearchDeveloperMetadataRequest [DataFilter]
+ Network.Google.Sheets: sdmrMatchedDeveloperMetadata :: Lens' SearchDeveloperMetadataResponse [MatchedDeveloperMetadata]
+ Network.Google.Sheets: searchDeveloperMetadataRequest :: SearchDeveloperMetadataRequest
+ Network.Google.Sheets: searchDeveloperMetadataResponse :: SearchDeveloperMetadataResponse
+ Network.Google.Sheets: spIterativeCalculationSettings :: Lens' SpreadsheetProperties (Maybe IterativeCalculationSettings)
+ Network.Google.Sheets: sprDeveloperMetadata :: Lens' Spreadsheet [DeveloperMetadata]
+ Network.Google.Sheets: tccsMaxValueColor :: Lens' TreemapChartColorScale (Maybe Color)
+ Network.Google.Sheets: tccsMidValueColor :: Lens' TreemapChartColorScale (Maybe Color)
+ Network.Google.Sheets: tccsMinValueColor :: Lens' TreemapChartColorScale (Maybe Color)
+ Network.Google.Sheets: tccsNoDataColor :: Lens' TreemapChartColorScale (Maybe Color)
+ Network.Google.Sheets: tcsColorData :: Lens' TreemapChartSpec (Maybe ChartData)
+ Network.Google.Sheets: tcsColorScale :: Lens' TreemapChartSpec (Maybe TreemapChartColorScale)
+ Network.Google.Sheets: tcsHeaderColor :: Lens' TreemapChartSpec (Maybe Color)
+ Network.Google.Sheets: tcsHideTooltips :: Lens' TreemapChartSpec (Maybe Bool)
+ Network.Google.Sheets: tcsHintedLevels :: Lens' TreemapChartSpec (Maybe Int32)
+ Network.Google.Sheets: tcsLabels :: Lens' TreemapChartSpec (Maybe ChartData)
+ Network.Google.Sheets: tcsLevels :: Lens' TreemapChartSpec (Maybe Int32)
+ Network.Google.Sheets: tcsMaxValue :: Lens' TreemapChartSpec (Maybe Double)
+ Network.Google.Sheets: tcsMinValue :: Lens' TreemapChartSpec (Maybe Double)
+ Network.Google.Sheets: tcsParentLabels :: Lens' TreemapChartSpec (Maybe ChartData)
+ Network.Google.Sheets: tcsSizeData :: Lens' TreemapChartSpec (Maybe ChartData)
+ Network.Google.Sheets: tcsTextFormat :: Lens' TreemapChartSpec (Maybe TextFormat)
+ Network.Google.Sheets: textPosition :: TextPosition
+ Network.Google.Sheets: textRotation :: TextRotation
+ Network.Google.Sheets: tpHorizontalAlignment :: Lens' TextPosition (Maybe TextPositionHorizontalAlignment)
+ Network.Google.Sheets: trAngle :: Lens' TextRotation (Maybe Int32)
+ Network.Google.Sheets: trVertical :: Lens' TextRotation (Maybe Bool)
+ Network.Google.Sheets: treemapChartColorScale :: TreemapChartColorScale
+ Network.Google.Sheets: treemapChartSpec :: TreemapChartSpec
+ Network.Google.Sheets: uDeveloperMetadata :: Lens' UpdateDeveloperMetadataResponse [DeveloperMetadata]
+ Network.Google.Sheets: udgrDimensionGroup :: Lens' UpdateDimensionGroupRequest (Maybe DimensionGroup)
+ Network.Google.Sheets: udgrFields :: Lens' UpdateDimensionGroupRequest (Maybe GFieldMask)
+ Network.Google.Sheets: udmrDataFilters :: Lens' UpdateDeveloperMetadataRequest [DataFilter]
+ Network.Google.Sheets: udmrDeveloperMetadata :: Lens' UpdateDeveloperMetadataRequest (Maybe DeveloperMetadata)
+ Network.Google.Sheets: udmrFields :: Lens' UpdateDeveloperMetadataRequest (Maybe GFieldMask)
+ Network.Google.Sheets: updateDeveloperMetadataRequest :: UpdateDeveloperMetadataRequest
+ Network.Google.Sheets: updateDeveloperMetadataResponse :: UpdateDeveloperMetadataResponse
+ Network.Google.Sheets: updateDimensionGroupRequest :: UpdateDimensionGroupRequest
+ Network.Google.Sheets: updateValuesByDataFilterResponse :: UpdateValuesByDataFilterResponse
+ Network.Google.Sheets: uvbdfrDataFilter :: Lens' UpdateValuesByDataFilterResponse (Maybe DataFilter)
+ Network.Google.Sheets: uvbdfrUpdatedCells :: Lens' UpdateValuesByDataFilterResponse (Maybe Int32)
+ Network.Google.Sheets: uvbdfrUpdatedColumns :: Lens' UpdateValuesByDataFilterResponse (Maybe Int32)
+ Network.Google.Sheets: uvbdfrUpdatedData :: Lens' UpdateValuesByDataFilterResponse (Maybe ValueRange)
+ Network.Google.Sheets: uvbdfrUpdatedRange :: Lens' UpdateValuesByDataFilterResponse (Maybe Text)
+ Network.Google.Sheets: uvbdfrUpdatedRows :: Lens' UpdateValuesByDataFilterResponse (Maybe Int32)
+ Network.Google.Sheets: wColor :: Lens' WaterfallChartColumnStyle (Maybe Color)
+ Network.Google.Sheets: wLabel :: Lens' WaterfallChartColumnStyle (Maybe Text)
+ Network.Google.Sheets: waterfallChartColumnStyle :: WaterfallChartColumnStyle
+ Network.Google.Sheets: waterfallChartCustomSubtotal :: WaterfallChartCustomSubtotal
+ Network.Google.Sheets: waterfallChartDomain :: WaterfallChartDomain
+ Network.Google.Sheets: waterfallChartSeries :: WaterfallChartSeries
+ Network.Google.Sheets: waterfallChartSpec :: WaterfallChartSpec
+ Network.Google.Sheets: wccsDataIsSubtotal :: Lens' WaterfallChartCustomSubtotal (Maybe Bool)
+ Network.Google.Sheets: wccsLabel :: Lens' WaterfallChartCustomSubtotal (Maybe Text)
+ Network.Google.Sheets: wccsSubtotalIndex :: Lens' WaterfallChartCustomSubtotal (Maybe Int32)
+ Network.Google.Sheets: wcdData :: Lens' WaterfallChartDomain (Maybe ChartData)
+ Network.Google.Sheets: wcdReversed :: Lens' WaterfallChartDomain (Maybe Bool)
+ Network.Google.Sheets: wcsConnectorLineStyle :: Lens' WaterfallChartSpec (Maybe LineStyle)
+ Network.Google.Sheets: wcsCustomSubtotals :: Lens' WaterfallChartSeries [WaterfallChartCustomSubtotal]
+ Network.Google.Sheets: wcsData :: Lens' WaterfallChartSeries (Maybe ChartData)
+ Network.Google.Sheets: wcsDomain :: Lens' WaterfallChartSpec (Maybe WaterfallChartDomain)
+ Network.Google.Sheets: wcsFirstValueIsTotal :: Lens' WaterfallChartSpec (Maybe Bool)
+ Network.Google.Sheets: wcsHideConnectorLines :: Lens' WaterfallChartSpec (Maybe Bool)
+ Network.Google.Sheets: wcsHideTrailingSubtotal :: Lens' WaterfallChartSeries (Maybe Bool)
+ Network.Google.Sheets: wcsNegativeColumnsStyle :: Lens' WaterfallChartSeries (Maybe WaterfallChartColumnStyle)
+ Network.Google.Sheets: wcsPositiveColumnsStyle :: Lens' WaterfallChartSeries (Maybe WaterfallChartColumnStyle)
+ Network.Google.Sheets: wcsSeries :: Lens' WaterfallChartSpec [WaterfallChartSeries]
+ Network.Google.Sheets: wcsStackedType :: Lens' WaterfallChartSpec (Maybe WaterfallChartSpecStackedType)
+ Network.Google.Sheets: wcsSubtotalColumnsStyle :: Lens' WaterfallChartSeries (Maybe WaterfallChartColumnStyle)
+ Network.Google.Sheets.Types: BCSTSteppedArea :: BasicChartSeriesType
+ Network.Google.Sheets.Types: BGVBDFRDTROFormattedString :: BatchGetValuesByDataFilterRequestDateTimeRenderOption
+ Network.Google.Sheets.Types: BGVBDFRDTROSerialNumber :: BatchGetValuesByDataFilterRequestDateTimeRenderOption
+ Network.Google.Sheets.Types: BGVBDFRMDColumns :: BatchGetValuesByDataFilterRequestMajorDimension
+ Network.Google.Sheets.Types: BGVBDFRMDDimensionUnspecified :: BatchGetValuesByDataFilterRequestMajorDimension
+ Network.Google.Sheets.Types: BGVBDFRMDRows :: BatchGetValuesByDataFilterRequestMajorDimension
+ Network.Google.Sheets.Types: BUVBDFRRVROFormattedValue :: BatchUpdateValuesByDataFilterRequestResponseValueRenderOption
+ Network.Google.Sheets.Types: BUVBDFRRVROFormula :: BatchUpdateValuesByDataFilterRequestResponseValueRenderOption
+ Network.Google.Sheets.Types: BUVBDFRRVROUnformattedValue :: BatchUpdateValuesByDataFilterRequestResponseValueRenderOption
+ Network.Google.Sheets.Types: BUVBDFRVIOInputValueOptionUnspecified :: BatchUpdateValuesByDataFilterRequestValueInputOption
+ Network.Google.Sheets.Types: BUVBDFRVIORaw :: BatchUpdateValuesByDataFilterRequestValueInputOption
+ Network.Google.Sheets.Types: BUVBDFRVIOUserEntered :: BatchUpdateValuesByDataFilterRequestValueInputOption
+ Network.Google.Sheets.Types: BUVRRDTROFormattedString :: BatchUpdateValuesRequestResponseDateTimeRenderOption
+ Network.Google.Sheets.Types: BUVRRDTROSerialNumber :: BatchUpdateValuesRequestResponseDateTimeRenderOption
+ Network.Google.Sheets.Types: BUVRRVROFormattedValue :: BatchUpdateValuesRequestResponseValueRenderOption
+ Network.Google.Sheets.Types: BUVRRVROFormula :: BatchUpdateValuesRequestResponseValueRenderOption
+ Network.Google.Sheets.Types: BUVRRVROUnformattedValue :: BatchUpdateValuesRequestResponseValueRenderOption
+ Network.Google.Sheets.Types: BasicChartCompareModeUnspecified :: BasicChartSpecCompareMode
+ Network.Google.Sheets.Types: BasicChartStackedTypeUnspecified :: BasicChartSpecStackedType
+ Network.Google.Sheets.Types: Boolean :: BooleanConditionType
+ Network.Google.Sheets.Types: BubbleChartLegendPositionUnspecified :: BubbleChartSpecLegendPosition
+ Network.Google.Sheets.Types: CFHACenter :: CellFormatHorizontalAlignment
+ Network.Google.Sheets.Types: CFHAHorizontalAlignUnspecified :: CellFormatHorizontalAlignment
+ Network.Google.Sheets.Types: CFHALeft' :: CellFormatHorizontalAlignment
+ Network.Google.Sheets.Types: CFHARight' :: CellFormatHorizontalAlignment
+ Network.Google.Sheets.Types: Category :: BasicChartSpecCompareMode
+ Network.Google.Sheets.Types: DColumn :: DeveloperMetadataLookupLocationType
+ Network.Google.Sheets.Types: DDeveloperMetadataLocationTypeUnspecified :: DeveloperMetadataLookupLocationType
+ Network.Google.Sheets.Types: DFVRMDColumns :: DataFilterValueRangeMajorDimension
+ Network.Google.Sheets.Types: DFVRMDDimensionUnspecified :: DataFilterValueRangeMajorDimension
+ Network.Google.Sheets.Types: DFVRMDRows :: DataFilterValueRangeMajorDimension
+ Network.Google.Sheets.Types: DMLLTColumn :: DeveloperMetadataLocationLocationType
+ Network.Google.Sheets.Types: DMLLTDeveloperMetadataLocationTypeUnspecified :: DeveloperMetadataLocationLocationType
+ Network.Google.Sheets.Types: DMLLTRow :: DeveloperMetadataLocationLocationType
+ Network.Google.Sheets.Types: DMLLTSheet :: DeveloperMetadataLocationLocationType
+ Network.Google.Sheets.Types: DMLLTSpreadsheet :: DeveloperMetadataLocationLocationType
+ Network.Google.Sheets.Types: DMLVDeveloperMetadataVisibilityUnspecified :: DeveloperMetadataLookupVisibility
+ Network.Google.Sheets.Types: DMLVDocument :: DeveloperMetadataLookupVisibility
+ Network.Google.Sheets.Types: DMLVProject :: DeveloperMetadataLookupVisibility
+ Network.Google.Sheets.Types: DRow :: DeveloperMetadataLookupLocationType
+ Network.Google.Sheets.Types: DSheet :: DeveloperMetadataLookupLocationType
+ Network.Google.Sheets.Types: DSpreadsheet :: DeveloperMetadataLookupLocationType
+ Network.Google.Sheets.Types: DateTimeRuleTypeUnspecified :: DateTimeRuleType
+ Network.Google.Sheets.Types: Datum :: BasicChartSpecCompareMode
+ Network.Google.Sheets.Types: DayMonth :: DateTimeRuleType
+ Network.Google.Sheets.Types: DayOfMonth :: DateTimeRuleType
+ Network.Google.Sheets.Types: DayOfWeek :: DateTimeRuleType
+ Network.Google.Sheets.Types: DayOfYear :: DateTimeRuleType
+ Network.Google.Sheets.Types: DeveloperMetadataLocationMatchingStrategyUnspecified :: DeveloperMetadataLookupLocationMatchingStrategy
+ Network.Google.Sheets.Types: DeveloperMetadataVisibilityUnspecified :: DeveloperMetadataVisibility
+ Network.Google.Sheets.Types: Document :: DeveloperMetadataVisibility
+ Network.Google.Sheets.Types: ExactLocation :: DeveloperMetadataLookupLocationMatchingStrategy
+ Network.Google.Sheets.Types: HCSLPBottomLegend :: HistogramChartSpecLegendPosition
+ Network.Google.Sheets.Types: HCSLPHistogramChartLegendPositionUnspecified :: HistogramChartSpecLegendPosition
+ Network.Google.Sheets.Types: HCSLPInsideLegend :: HistogramChartSpecLegendPosition
+ Network.Google.Sheets.Types: HCSLPLeftLegend :: HistogramChartSpecLegendPosition
+ Network.Google.Sheets.Types: HCSLPNoLegend :: HistogramChartSpecLegendPosition
+ Network.Google.Sheets.Types: HCSLPRightLegend :: HistogramChartSpecLegendPosition
+ Network.Google.Sheets.Types: HCSLPTopLegend :: HistogramChartSpecLegendPosition
+ Network.Google.Sheets.Types: HourMinute :: DateTimeRuleType
+ Network.Google.Sheets.Types: HourMinuteAmpm :: DateTimeRuleType
+ Network.Google.Sheets.Types: InsideLegend :: BubbleChartSpecLegendPosition
+ Network.Google.Sheets.Types: IntersectingLocation :: DeveloperMetadataLookupLocationMatchingStrategy
+ Network.Google.Sheets.Types: LSTCustom :: LineStyleType
+ Network.Google.Sheets.Types: LSTDotted :: LineStyleType
+ Network.Google.Sheets.Types: LSTInvisible :: LineStyleType
+ Network.Google.Sheets.Types: LSTLineDashTypeUnspecified :: LineStyleType
+ Network.Google.Sheets.Types: LSTLongDashed :: LineStyleType
+ Network.Google.Sheets.Types: LSTLongDashedDotted :: LineStyleType
+ Network.Google.Sheets.Types: LSTMediumDashed :: LineStyleType
+ Network.Google.Sheets.Types: LSTMediumDashedDotted :: LineStyleType
+ Network.Google.Sheets.Types: LSTSolid :: LineStyleType
+ Network.Google.Sheets.Types: Large :: OrgChartSpecNodeSize
+ Network.Google.Sheets.Types: Medium :: OrgChartSpecNodeSize
+ Network.Google.Sheets.Types: Month :: DateTimeRuleType
+ Network.Google.Sheets.Types: NotStacked :: BasicChartSpecStackedType
+ Network.Google.Sheets.Types: OrgChartLabelSizeUnspecified :: OrgChartSpecNodeSize
+ Network.Google.Sheets.Types: PCSLPBottomLegend :: PieChartSpecLegendPosition
+ Network.Google.Sheets.Types: PCSLPLabeledLegend :: PieChartSpecLegendPosition
+ Network.Google.Sheets.Types: PCSLPLeftLegend :: PieChartSpecLegendPosition
+ Network.Google.Sheets.Types: PCSLPNoLegend :: PieChartSpecLegendPosition
+ Network.Google.Sheets.Types: PCSLPPieChartLegendPositionUnspecified :: PieChartSpecLegendPosition
+ Network.Google.Sheets.Types: PCSLPRightLegend :: PieChartSpecLegendPosition
+ Network.Google.Sheets.Types: PCSLPTopLegend :: PieChartSpecLegendPosition
+ Network.Google.Sheets.Types: PercentOfColumnTotal :: PivotValueCalculatedDisplayType
+ Network.Google.Sheets.Types: PercentOfGrandTotal :: PivotValueCalculatedDisplayType
+ Network.Google.Sheets.Types: PercentOfRowTotal :: PivotValueCalculatedDisplayType
+ Network.Google.Sheets.Types: PercentStacked :: BasicChartSpecStackedType
+ Network.Google.Sheets.Types: PivotValueCalculatedDisplayTypeUnspecified :: PivotValueCalculatedDisplayType
+ Network.Google.Sheets.Types: Project :: DeveloperMetadataVisibility
+ Network.Google.Sheets.Types: Quarter :: DateTimeRuleType
+ Network.Google.Sheets.Types: SPARHour :: SpreadsheetPropertiesAutoRecalc
+ Network.Google.Sheets.Types: SPARMinute :: SpreadsheetPropertiesAutoRecalc
+ Network.Google.Sheets.Types: SPAROnChange :: SpreadsheetPropertiesAutoRecalc
+ Network.Google.Sheets.Types: SPARRecalculationIntervalUnspecified :: SpreadsheetPropertiesAutoRecalc
+ Network.Google.Sheets.Types: Second :: DateTimeRuleType
+ Network.Google.Sheets.Types: Small :: OrgChartSpecNodeSize
+ Network.Google.Sheets.Types: Stacked :: BasicChartSpecStackedType
+ Network.Google.Sheets.Types: SteppedArea :: BasicChartSpecChartType
+ Network.Google.Sheets.Types: TTCRDTAutodetect :: TextToColumnsRequestDelimiterType
+ Network.Google.Sheets.Types: WCSSTSequential :: WaterfallChartSpecStackedType
+ Network.Google.Sheets.Types: WCSSTStacked :: WaterfallChartSpecStackedType
+ Network.Google.Sheets.Types: WCSSTWaterfallStackedTypeUnspecified :: WaterfallChartSpecStackedType
+ Network.Google.Sheets.Types: Year :: DateTimeRuleType
+ Network.Google.Sheets.Types: YearMonth :: DateTimeRuleType
+ Network.Google.Sheets.Types: YearMonthDay :: DateTimeRuleType
+ Network.Google.Sheets.Types: YearQuarter :: DateTimeRuleType
+ Network.Google.Sheets.Types: addDimensionGroupRequest :: AddDimensionGroupRequest
+ Network.Google.Sheets.Types: addDimensionGroupResponse :: AddDimensionGroupResponse
+ Network.Google.Sheets.Types: adgrDimensionGroups :: Lens' AddDimensionGroupResponse [DimensionGroup]
+ Network.Google.Sheets.Types: adgrRange :: Lens' AddDimensionGroupRequest (Maybe DimensionRange)
+ Network.Google.Sheets.Types: bColor :: Lens' BasicChartSeries (Maybe Color)
+ Network.Google.Sheets.Types: bLineStyle :: Lens' BasicChartSeries (Maybe LineStyle)
+ Network.Google.Sheets.Types: bTargetAxis :: Lens' BasicChartSeries (Maybe BasicChartSeriesTargetAxis)
+ Network.Google.Sheets.Types: bType :: Lens' BasicChartSeries (Maybe BasicChartSeriesType)
+ Network.Google.Sheets.Types: basAxis :: Lens' BasicChartSpec [BasicChartAxis]
+ Network.Google.Sheets.Types: basChartType :: Lens' BasicChartSpec (Maybe BasicChartSpecChartType)
+ Network.Google.Sheets.Types: basCompareMode :: Lens' BasicChartSpec (Maybe BasicChartSpecCompareMode)
+ Network.Google.Sheets.Types: basDomains :: Lens' BasicChartSpec [BasicChartDomain]
+ Network.Google.Sheets.Types: basHeaderCount :: Lens' BasicChartSpec (Maybe Int32)
+ Network.Google.Sheets.Types: basInterpolateNulls :: Lens' BasicChartSpec (Maybe Bool)
+ Network.Google.Sheets.Types: basLegendPosition :: Lens' BasicChartSpec (Maybe BasicChartSpecLegendPosition)
+ Network.Google.Sheets.Types: basLineSmoothing :: Lens' BasicChartSpec (Maybe Bool)
+ Network.Google.Sheets.Types: basSeries :: Lens' BasicChartSpec [BasicChartSeries]
+ Network.Google.Sheets.Types: basStackedType :: Lens' BasicChartSpec (Maybe BasicChartSpecStackedType)
+ Network.Google.Sheets.Types: basThreeDimensional :: Lens' BasicChartSpec (Maybe Bool)
+ Network.Google.Sheets.Types: batchClearValuesByDataFilterRequest :: BatchClearValuesByDataFilterRequest
+ Network.Google.Sheets.Types: batchClearValuesByDataFilterResponse :: BatchClearValuesByDataFilterResponse
+ Network.Google.Sheets.Types: batchGetValuesByDataFilterRequest :: BatchGetValuesByDataFilterRequest
+ Network.Google.Sheets.Types: batchGetValuesByDataFilterResponse :: BatchGetValuesByDataFilterResponse
+ Network.Google.Sheets.Types: batchUpdateValuesByDataFilterRequest :: BatchUpdateValuesByDataFilterRequest
+ Network.Google.Sheets.Types: batchUpdateValuesByDataFilterResponse :: BatchUpdateValuesByDataFilterResponse
+ Network.Google.Sheets.Types: bcaTitleTextPosition :: Lens' BasicChartAxis (Maybe TextPosition)
+ Network.Google.Sheets.Types: bcdReversed :: Lens' BasicChartDomain (Maybe Bool)
+ Network.Google.Sheets.Types: bcsBubbleBOrderColor :: Lens' BubbleChartSpec (Maybe Color)
+ Network.Google.Sheets.Types: bcsBubbleLabels :: Lens' BubbleChartSpec (Maybe ChartData)
+ Network.Google.Sheets.Types: bcsBubbleMaxRadiusSize :: Lens' BubbleChartSpec (Maybe Int32)
+ Network.Google.Sheets.Types: bcsBubbleMinRadiusSize :: Lens' BubbleChartSpec (Maybe Int32)
+ Network.Google.Sheets.Types: bcsBubbleOpacity :: Lens' BubbleChartSpec (Maybe Double)
+ Network.Google.Sheets.Types: bcsBubbleSizes :: Lens' BubbleChartSpec (Maybe ChartData)
+ Network.Google.Sheets.Types: bcsBubbleTextStyle :: Lens' BubbleChartSpec (Maybe TextFormat)
+ Network.Google.Sheets.Types: bcsDomain :: Lens' BubbleChartSpec (Maybe ChartData)
+ Network.Google.Sheets.Types: bcsGroupIds :: Lens' BubbleChartSpec (Maybe ChartData)
+ Network.Google.Sheets.Types: bcsLegendPosition :: Lens' BubbleChartSpec (Maybe BubbleChartSpecLegendPosition)
+ Network.Google.Sheets.Types: bcvbdfrClearedRanges :: Lens' BatchClearValuesByDataFilterResponse [Text]
+ Network.Google.Sheets.Types: bcvbdfrDataFilters :: Lens' BatchClearValuesByDataFilterRequest [DataFilter]
+ Network.Google.Sheets.Types: bcvbdfrSpreadsheetId :: Lens' BatchClearValuesByDataFilterResponse (Maybe Text)
+ Network.Google.Sheets.Types: bgvbdfrDataFilters :: Lens' BatchGetValuesByDataFilterRequest [DataFilter]
+ Network.Google.Sheets.Types: bgvbdfrDateTimeRenderOption :: Lens' BatchGetValuesByDataFilterRequest (Maybe BatchGetValuesByDataFilterRequestDateTimeRenderOption)
+ Network.Google.Sheets.Types: bgvbdfrMajorDimension :: Lens' BatchGetValuesByDataFilterRequest (Maybe BatchGetValuesByDataFilterRequestMajorDimension)
+ Network.Google.Sheets.Types: bgvbdfrSpreadsheetId :: Lens' BatchGetValuesByDataFilterResponse (Maybe Text)
+ Network.Google.Sheets.Types: bgvbdfrValueRanges :: Lens' BatchGetValuesByDataFilterResponse [MatchedValueRange]
+ Network.Google.Sheets.Types: bgvbdfrValueRenderOption :: Lens' BatchGetValuesByDataFilterRequest (Maybe BatchGetValuesByDataFilterRequestValueRenderOption)
+ Network.Google.Sheets.Types: bubbleChartSpec :: BubbleChartSpec
+ Network.Google.Sheets.Types: buvbdfrData :: Lens' BatchUpdateValuesByDataFilterRequest [DataFilterValueRange]
+ Network.Google.Sheets.Types: buvbdfrIncludeValuesInResponse :: Lens' BatchUpdateValuesByDataFilterRequest (Maybe Bool)
+ Network.Google.Sheets.Types: buvbdfrResponseDateTimeRenderOption :: Lens' BatchUpdateValuesByDataFilterRequest (Maybe BatchUpdateValuesByDataFilterRequestResponseDateTimeRenderOption)
+ Network.Google.Sheets.Types: buvbdfrResponseValueRenderOption :: Lens' BatchUpdateValuesByDataFilterRequest (Maybe BatchUpdateValuesByDataFilterRequestResponseValueRenderOption)
+ Network.Google.Sheets.Types: buvbdfrResponses :: Lens' BatchUpdateValuesByDataFilterResponse [UpdateValuesByDataFilterResponse]
+ Network.Google.Sheets.Types: buvbdfrSpreadsheetId :: Lens' BatchUpdateValuesByDataFilterResponse (Maybe Text)
+ Network.Google.Sheets.Types: buvbdfrTotalUpdatedCells :: Lens' BatchUpdateValuesByDataFilterResponse (Maybe Int32)
+ Network.Google.Sheets.Types: buvbdfrTotalUpdatedColumns :: Lens' BatchUpdateValuesByDataFilterResponse (Maybe Int32)
+ Network.Google.Sheets.Types: buvbdfrTotalUpdatedRows :: Lens' BatchUpdateValuesByDataFilterResponse (Maybe Int32)
+ Network.Google.Sheets.Types: buvbdfrTotalUpdatedSheets :: Lens' BatchUpdateValuesByDataFilterResponse (Maybe Int32)
+ Network.Google.Sheets.Types: buvbdfrValueInputOption :: Lens' BatchUpdateValuesByDataFilterRequest (Maybe BatchUpdateValuesByDataFilterRequestValueInputOption)
+ Network.Google.Sheets.Types: cDeveloperMetadata :: Lens' CreateDeveloperMetadataRequest (Maybe DeveloperMetadata)
+ Network.Google.Sheets.Types: candlestickChartSpec :: CandlestickChartSpec
+ Network.Google.Sheets.Types: candlestickData :: CandlestickData
+ Network.Google.Sheets.Types: candlestickDomain :: CandlestickDomain
+ Network.Google.Sheets.Types: candlestickSeries :: CandlestickSeries
+ Network.Google.Sheets.Types: ccsData :: Lens' CandlestickChartSpec [CandlestickData]
+ Network.Google.Sheets.Types: ccsDomain :: Lens' CandlestickChartSpec (Maybe CandlestickDomain)
+ Network.Google.Sheets.Types: cdCloseSeries :: Lens' CandlestickData (Maybe CandlestickSeries)
+ Network.Google.Sheets.Types: cdData :: Lens' CandlestickDomain (Maybe ChartData)
+ Network.Google.Sheets.Types: cdHighSeries :: Lens' CandlestickData (Maybe CandlestickSeries)
+ Network.Google.Sheets.Types: cdLowSeries :: Lens' CandlestickData (Maybe CandlestickSeries)
+ Network.Google.Sheets.Types: cdOpenSeries :: Lens' CandlestickData (Maybe CandlestickSeries)
+ Network.Google.Sheets.Types: cdReversed :: Lens' CandlestickDomain (Maybe Bool)
+ Network.Google.Sheets.Types: cdmrDeveloperMetadata :: Lens' CreateDeveloperMetadataResponse (Maybe DeveloperMetadata)
+ Network.Google.Sheets.Types: cfTextRotation :: Lens' CellFormat (Maybe TextRotation)
+ Network.Google.Sheets.Types: createDeveloperMetadataRequest :: CreateDeveloperMetadataRequest
+ Network.Google.Sheets.Types: createDeveloperMetadataResponse :: CreateDeveloperMetadataResponse
+ Network.Google.Sheets.Types: csAltText :: Lens' ChartSpec (Maybe Text)
+ Network.Google.Sheets.Types: csBackgRoundColor :: Lens' ChartSpec (Maybe Color)
+ Network.Google.Sheets.Types: csBubbleChart :: Lens' ChartSpec (Maybe BubbleChartSpec)
+ Network.Google.Sheets.Types: csCandlestickChart :: Lens' ChartSpec (Maybe CandlestickChartSpec)
+ Network.Google.Sheets.Types: csData :: Lens' CandlestickSeries (Maybe ChartData)
+ Network.Google.Sheets.Types: csFontName :: Lens' ChartSpec (Maybe Text)
+ Network.Google.Sheets.Types: csHistogramChart :: Lens' ChartSpec (Maybe HistogramChartSpec)
+ Network.Google.Sheets.Types: csMaximized :: Lens' ChartSpec (Maybe Bool)
+ Network.Google.Sheets.Types: csOrgChart :: Lens' ChartSpec (Maybe OrgChartSpec)
+ Network.Google.Sheets.Types: csSubtitle :: Lens' ChartSpec (Maybe Text)
+ Network.Google.Sheets.Types: csSubtitleTextFormat :: Lens' ChartSpec (Maybe TextFormat)
+ Network.Google.Sheets.Types: csSubtitleTextPosition :: Lens' ChartSpec (Maybe TextPosition)
+ Network.Google.Sheets.Types: csTitleTextFormat :: Lens' ChartSpec (Maybe TextFormat)
+ Network.Google.Sheets.Types: csTitleTextPosition :: Lens' ChartSpec (Maybe TextPosition)
+ Network.Google.Sheets.Types: csTreemapChart :: Lens' ChartSpec (Maybe TreemapChartSpec)
+ Network.Google.Sheets.Types: csWaterfallChart :: Lens' ChartSpec (Maybe WaterfallChartSpec)
+ Network.Google.Sheets.Types: dLocationMatchingStrategy :: Lens' DeveloperMetadataLookup (Maybe DeveloperMetadataLookupLocationMatchingStrategy)
+ Network.Google.Sheets.Types: dLocationType :: Lens' DeveloperMetadataLookup (Maybe DeveloperMetadataLookupLocationType)
+ Network.Google.Sheets.Types: dMetadataId :: Lens' DeveloperMetadataLookup (Maybe Int32)
+ Network.Google.Sheets.Types: dMetadataKey :: Lens' DeveloperMetadataLookup (Maybe Text)
+ Network.Google.Sheets.Types: dMetadataLocation :: Lens' DeveloperMetadataLookup (Maybe DeveloperMetadataLocation)
+ Network.Google.Sheets.Types: dMetadataValue :: Lens' DeveloperMetadataLookup (Maybe Text)
+ Network.Google.Sheets.Types: dVisibility :: Lens' DeveloperMetadataLookup (Maybe DeveloperMetadataLookupVisibility)
+ Network.Google.Sheets.Types: data AddDimensionGroupRequest
+ Network.Google.Sheets.Types: data AddDimensionGroupResponse
+ Network.Google.Sheets.Types: data BasicChartSpecCompareMode
+ Network.Google.Sheets.Types: data BasicChartSpecStackedType
+ Network.Google.Sheets.Types: data BatchClearValuesByDataFilterRequest
+ Network.Google.Sheets.Types: data BatchClearValuesByDataFilterResponse
+ Network.Google.Sheets.Types: data BatchGetValuesByDataFilterRequest
+ Network.Google.Sheets.Types: data BatchGetValuesByDataFilterRequestDateTimeRenderOption
+ Network.Google.Sheets.Types: data BatchGetValuesByDataFilterRequestMajorDimension
+ Network.Google.Sheets.Types: data BatchGetValuesByDataFilterRequestValueRenderOption
+ Network.Google.Sheets.Types: data BatchGetValuesByDataFilterResponse
+ Network.Google.Sheets.Types: data BatchUpdateValuesByDataFilterRequest
+ Network.Google.Sheets.Types: data BatchUpdateValuesByDataFilterRequestResponseDateTimeRenderOption
+ Network.Google.Sheets.Types: data BatchUpdateValuesByDataFilterRequestResponseValueRenderOption
+ Network.Google.Sheets.Types: data BatchUpdateValuesByDataFilterRequestValueInputOption
+ Network.Google.Sheets.Types: data BatchUpdateValuesByDataFilterResponse
+ Network.Google.Sheets.Types: data BubbleChartSpec
+ Network.Google.Sheets.Types: data BubbleChartSpecLegendPosition
+ Network.Google.Sheets.Types: data CandlestickChartSpec
+ Network.Google.Sheets.Types: data CandlestickData
+ Network.Google.Sheets.Types: data CandlestickDomain
+ Network.Google.Sheets.Types: data CandlestickSeries
+ Network.Google.Sheets.Types: data CreateDeveloperMetadataRequest
+ Network.Google.Sheets.Types: data CreateDeveloperMetadataResponse
+ Network.Google.Sheets.Types: data DataFilter
+ Network.Google.Sheets.Types: data DataFilterValueRange
+ Network.Google.Sheets.Types: data DataFilterValueRangeMajorDimension
+ Network.Google.Sheets.Types: data DateTimeRule
+ Network.Google.Sheets.Types: data DateTimeRuleType
+ Network.Google.Sheets.Types: data DeleteDeveloperMetadataRequest
+ Network.Google.Sheets.Types: data DeleteDeveloperMetadataResponse
+ Network.Google.Sheets.Types: data DeleteDimensionGroupRequest
+ Network.Google.Sheets.Types: data DeleteDimensionGroupResponse
+ Network.Google.Sheets.Types: data DeveloperMetadata
+ Network.Google.Sheets.Types: data DeveloperMetadataLocation
+ Network.Google.Sheets.Types: data DeveloperMetadataLocationLocationType
+ Network.Google.Sheets.Types: data DeveloperMetadataLookup
+ Network.Google.Sheets.Types: data DeveloperMetadataLookupLocationMatchingStrategy
+ Network.Google.Sheets.Types: data DeveloperMetadataLookupLocationType
+ Network.Google.Sheets.Types: data DeveloperMetadataLookupVisibility
+ Network.Google.Sheets.Types: data DeveloperMetadataVisibility
+ Network.Google.Sheets.Types: data DimensionGroup
+ Network.Google.Sheets.Types: data GetSpreadsheetByDataFilterRequest
+ Network.Google.Sheets.Types: data HistogramChartSpec
+ Network.Google.Sheets.Types: data HistogramChartSpecLegendPosition
+ Network.Google.Sheets.Types: data HistogramRule
+ Network.Google.Sheets.Types: data HistogramSeries
+ Network.Google.Sheets.Types: data IterativeCalculationSettings
+ Network.Google.Sheets.Types: data LineStyle
+ Network.Google.Sheets.Types: data LineStyleType
+ Network.Google.Sheets.Types: data ManualRule
+ Network.Google.Sheets.Types: data ManualRuleGroup
+ Network.Google.Sheets.Types: data MatchedDeveloperMetadata
+ Network.Google.Sheets.Types: data MatchedValueRange
+ Network.Google.Sheets.Types: data OrgChartSpec
+ Network.Google.Sheets.Types: data OrgChartSpecNodeSize
+ Network.Google.Sheets.Types: data PivotGroupRule
+ Network.Google.Sheets.Types: data PivotValueCalculatedDisplayType
+ Network.Google.Sheets.Types: data RandomizeRangeRequest
+ Network.Google.Sheets.Types: data SearchDeveloperMetadataRequest
+ Network.Google.Sheets.Types: data SearchDeveloperMetadataResponse
+ Network.Google.Sheets.Types: data TextPosition
+ Network.Google.Sheets.Types: data TextPositionHorizontalAlignment
+ Network.Google.Sheets.Types: data TextRotation
+ Network.Google.Sheets.Types: data TreemapChartColorScale
+ Network.Google.Sheets.Types: data TreemapChartSpec
+ Network.Google.Sheets.Types: data UpdateDeveloperMetadataRequest
+ Network.Google.Sheets.Types: data UpdateDeveloperMetadataResponse
+ Network.Google.Sheets.Types: data UpdateDimensionGroupRequest
+ Network.Google.Sheets.Types: data UpdateValuesByDataFilterResponse
+ Network.Google.Sheets.Types: data WaterfallChartColumnStyle
+ Network.Google.Sheets.Types: data WaterfallChartCustomSubtotal
+ Network.Google.Sheets.Types: data WaterfallChartDomain
+ Network.Google.Sheets.Types: data WaterfallChartSeries
+ Network.Google.Sheets.Types: data WaterfallChartSpec
+ Network.Google.Sheets.Types: data WaterfallChartSpecStackedType
+ Network.Google.Sheets.Types: dataFilter :: DataFilter
+ Network.Google.Sheets.Types: dataFilterValueRange :: DataFilterValueRange
+ Network.Google.Sheets.Types: dateTimeRule :: DateTimeRule
+ Network.Google.Sheets.Types: ddgrDimensionGroups :: Lens' DeleteDimensionGroupResponse [DimensionGroup]
+ Network.Google.Sheets.Types: ddgrRange :: Lens' DeleteDimensionGroupRequest (Maybe DimensionRange)
+ Network.Google.Sheets.Types: ddmrDataFilter :: Lens' DeleteDeveloperMetadataRequest (Maybe DataFilter)
+ Network.Google.Sheets.Types: ddmrDeletedDeveloperMetadata :: Lens' DeleteDeveloperMetadataResponse [DeveloperMetadata]
+ Network.Google.Sheets.Types: deleteDeveloperMetadataRequest :: DeleteDeveloperMetadataRequest
+ Network.Google.Sheets.Types: deleteDeveloperMetadataResponse :: DeleteDeveloperMetadataResponse
+ Network.Google.Sheets.Types: deleteDimensionGroupRequest :: DeleteDimensionGroupRequest
+ Network.Google.Sheets.Types: deleteDimensionGroupResponse :: DeleteDimensionGroupResponse
+ Network.Google.Sheets.Types: developerMetadata :: DeveloperMetadata
+ Network.Google.Sheets.Types: developerMetadataLocation :: DeveloperMetadataLocation
+ Network.Google.Sheets.Types: developerMetadataLookup :: DeveloperMetadataLookup
+ Network.Google.Sheets.Types: dfA1Range :: Lens' DataFilter (Maybe Text)
+ Network.Google.Sheets.Types: dfDeveloperMetadataLookup :: Lens' DataFilter (Maybe DeveloperMetadataLookup)
+ Network.Google.Sheets.Types: dfGridRange :: Lens' DataFilter (Maybe GridRange)
+ Network.Google.Sheets.Types: dfvrDataFilter :: Lens' DataFilterValueRange (Maybe DataFilter)
+ Network.Google.Sheets.Types: dfvrMajorDimension :: Lens' DataFilterValueRange (Maybe DataFilterValueRangeMajorDimension)
+ Network.Google.Sheets.Types: dfvrValues :: Lens' DataFilterValueRange [[JSONValue]]
+ Network.Google.Sheets.Types: dgCollapsed :: Lens' DimensionGroup (Maybe Bool)
+ Network.Google.Sheets.Types: dgDepth :: Lens' DimensionGroup (Maybe Int32)
+ Network.Google.Sheets.Types: dgRange :: Lens' DimensionGroup (Maybe DimensionRange)
+ Network.Google.Sheets.Types: dimensionGroup :: DimensionGroup
+ Network.Google.Sheets.Types: dmLocation :: Lens' DeveloperMetadata (Maybe DeveloperMetadataLocation)
+ Network.Google.Sheets.Types: dmMetadataId :: Lens' DeveloperMetadata (Maybe Int32)
+ Network.Google.Sheets.Types: dmMetadataKey :: Lens' DeveloperMetadata (Maybe Text)
+ Network.Google.Sheets.Types: dmMetadataValue :: Lens' DeveloperMetadata (Maybe Text)
+ Network.Google.Sheets.Types: dmVisibility :: Lens' DeveloperMetadata (Maybe DeveloperMetadataVisibility)
+ Network.Google.Sheets.Types: dmlDimensionRange :: Lens' DeveloperMetadataLocation (Maybe DimensionRange)
+ Network.Google.Sheets.Types: dmlLocationType :: Lens' DeveloperMetadataLocation (Maybe DeveloperMetadataLocationLocationType)
+ Network.Google.Sheets.Types: dmlSheetId :: Lens' DeveloperMetadataLocation (Maybe Int32)
+ Network.Google.Sheets.Types: dmlSpreadsheet :: Lens' DeveloperMetadataLocation (Maybe Bool)
+ Network.Google.Sheets.Types: dpDeveloperMetadata :: Lens' DimensionProperties [DeveloperMetadata]
+ Network.Google.Sheets.Types: driveFileScope :: Proxy '["https://www.googleapis.com/auth/drive.file"]
+ Network.Google.Sheets.Types: dtrType :: Lens' DateTimeRule (Maybe DateTimeRuleType)
+ Network.Google.Sheets.Types: getSpreadsheetByDataFilterRequest :: GetSpreadsheetByDataFilterRequest
+ Network.Google.Sheets.Types: gpColumnGroupControlAfter :: Lens' GridProperties (Maybe Bool)
+ Network.Google.Sheets.Types: gpRowGroupControlAfter :: Lens' GridProperties (Maybe Bool)
+ Network.Google.Sheets.Types: gsbdfrDataFilters :: Lens' GetSpreadsheetByDataFilterRequest [DataFilter]
+ Network.Google.Sheets.Types: gsbdfrIncludeGridData :: Lens' GetSpreadsheetByDataFilterRequest (Maybe Bool)
+ Network.Google.Sheets.Types: hcsBucketSize :: Lens' HistogramChartSpec (Maybe Double)
+ Network.Google.Sheets.Types: hcsLegendPosition :: Lens' HistogramChartSpec (Maybe HistogramChartSpecLegendPosition)
+ Network.Google.Sheets.Types: hcsOutlierPercentile :: Lens' HistogramChartSpec (Maybe Double)
+ Network.Google.Sheets.Types: hcsSeries :: Lens' HistogramChartSpec [HistogramSeries]
+ Network.Google.Sheets.Types: hcsShowItemDividers :: Lens' HistogramChartSpec (Maybe Bool)
+ Network.Google.Sheets.Types: histogramChartSpec :: HistogramChartSpec
+ Network.Google.Sheets.Types: histogramRule :: HistogramRule
+ Network.Google.Sheets.Types: histogramSeries :: HistogramSeries
+ Network.Google.Sheets.Types: hrEnd :: Lens' HistogramRule (Maybe Double)
+ Network.Google.Sheets.Types: hrInterval :: Lens' HistogramRule (Maybe Double)
+ Network.Google.Sheets.Types: hrStart :: Lens' HistogramRule (Maybe Double)
+ Network.Google.Sheets.Types: hsBarColor :: Lens' HistogramSeries (Maybe Color)
+ Network.Google.Sheets.Types: hsData :: Lens' HistogramSeries (Maybe ChartData)
+ Network.Google.Sheets.Types: icsConvergenceThreshold :: Lens' IterativeCalculationSettings (Maybe Double)
+ Network.Google.Sheets.Types: icsMaxIterations :: Lens' IterativeCalculationSettings (Maybe Int32)
+ Network.Google.Sheets.Types: iterativeCalculationSettings :: IterativeCalculationSettings
+ Network.Google.Sheets.Types: lineStyle :: LineStyle
+ Network.Google.Sheets.Types: lsType :: Lens' LineStyle (Maybe LineStyleType)
+ Network.Google.Sheets.Types: lsWidth :: Lens' LineStyle (Maybe Int32)
+ Network.Google.Sheets.Types: manualRule :: ManualRule
+ Network.Google.Sheets.Types: manualRuleGroup :: ManualRuleGroup
+ Network.Google.Sheets.Types: matchedDeveloperMetadata :: MatchedDeveloperMetadata
+ Network.Google.Sheets.Types: matchedValueRange :: MatchedValueRange
+ Network.Google.Sheets.Types: mdmDataFilters :: Lens' MatchedDeveloperMetadata [DataFilter]
+ Network.Google.Sheets.Types: mdmDeveloperMetadata :: Lens' MatchedDeveloperMetadata (Maybe DeveloperMetadata)
+ Network.Google.Sheets.Types: mrGroups :: Lens' ManualRule [ManualRuleGroup]
+ Network.Google.Sheets.Types: mrgGroupName :: Lens' ManualRuleGroup (Maybe ExtendedValue)
+ Network.Google.Sheets.Types: mrgItems :: Lens' ManualRuleGroup [ExtendedValue]
+ Network.Google.Sheets.Types: mvrDataFilters :: Lens' MatchedValueRange [DataFilter]
+ Network.Google.Sheets.Types: mvrValueRange :: Lens' MatchedValueRange (Maybe ValueRange)
+ Network.Google.Sheets.Types: ocsLabels :: Lens' OrgChartSpec (Maybe ChartData)
+ Network.Google.Sheets.Types: ocsNodeColor :: Lens' OrgChartSpec (Maybe Color)
+ Network.Google.Sheets.Types: ocsNodeSize :: Lens' OrgChartSpec (Maybe OrgChartSpecNodeSize)
+ Network.Google.Sheets.Types: ocsParentLabels :: Lens' OrgChartSpec (Maybe ChartData)
+ Network.Google.Sheets.Types: ocsSelectedNodeColor :: Lens' OrgChartSpec (Maybe Color)
+ Network.Google.Sheets.Types: ocsTooltips :: Lens' OrgChartSpec (Maybe ChartData)
+ Network.Google.Sheets.Types: orgChartSpec :: OrgChartSpec
+ Network.Google.Sheets.Types: pgGroupRule :: Lens' PivotGroup (Maybe PivotGroupRule)
+ Network.Google.Sheets.Types: pgLabel :: Lens' PivotGroup (Maybe Text)
+ Network.Google.Sheets.Types: pgRepeatHeadings :: Lens' PivotGroup (Maybe Bool)
+ Network.Google.Sheets.Types: pgrDateTimeRule :: Lens' PivotGroupRule (Maybe DateTimeRule)
+ Network.Google.Sheets.Types: pgrHistogramRule :: Lens' PivotGroupRule (Maybe HistogramRule)
+ Network.Google.Sheets.Types: pgrManualRule :: Lens' PivotGroupRule (Maybe ManualRule)
+ Network.Google.Sheets.Types: pivotGroupRule :: PivotGroupRule
+ Network.Google.Sheets.Types: pvCalculatedDisplayType :: Lens' PivotValue (Maybe PivotValueCalculatedDisplayType)
+ Network.Google.Sheets.Types: rAddDimensionGroup :: Lens' Response (Maybe AddDimensionGroupResponse)
+ Network.Google.Sheets.Types: rCreateDeveloperMetadata :: Lens' Response (Maybe CreateDeveloperMetadataResponse)
+ Network.Google.Sheets.Types: rDeleteDeveloperMetadata :: Lens' Response (Maybe DeleteDeveloperMetadataResponse)
+ Network.Google.Sheets.Types: rDeleteDimensionGroup :: Lens' Response (Maybe DeleteDimensionGroupResponse)
+ Network.Google.Sheets.Types: rUpdateDeveloperMetadata :: Lens' Response (Maybe UpdateDeveloperMetadataResponse)
+ Network.Google.Sheets.Types: randomizeRangeRequest :: RandomizeRangeRequest
+ Network.Google.Sheets.Types: reqAddDimensionGroup :: Lens' Request' (Maybe AddDimensionGroupRequest)
+ Network.Google.Sheets.Types: reqCreateDeveloperMetadata :: Lens' Request' (Maybe CreateDeveloperMetadataRequest)
+ Network.Google.Sheets.Types: reqDeleteDeveloperMetadata :: Lens' Request' (Maybe DeleteDeveloperMetadataRequest)
+ Network.Google.Sheets.Types: reqDeleteDimensionGroup :: Lens' Request' (Maybe DeleteDimensionGroupRequest)
+ Network.Google.Sheets.Types: reqRandomizeRange :: Lens' Request' (Maybe RandomizeRangeRequest)
+ Network.Google.Sheets.Types: reqUpdateDeveloperMetadata :: Lens' Request' (Maybe UpdateDeveloperMetadataRequest)
+ Network.Google.Sheets.Types: reqUpdateDimensionGroup :: Lens' Request' (Maybe UpdateDimensionGroupRequest)
+ Network.Google.Sheets.Types: rrrRange :: Lens' RandomizeRangeRequest (Maybe GridRange)
+ Network.Google.Sheets.Types: sColumnGroups :: Lens' Sheet [DimensionGroup]
+ Network.Google.Sheets.Types: sDeveloperMetadata :: Lens' Sheet [DeveloperMetadata]
+ Network.Google.Sheets.Types: sRowGroups :: Lens' Sheet [DimensionGroup]
+ Network.Google.Sheets.Types: sdmrDataFilters :: Lens' SearchDeveloperMetadataRequest [DataFilter]
+ Network.Google.Sheets.Types: sdmrMatchedDeveloperMetadata :: Lens' SearchDeveloperMetadataResponse [MatchedDeveloperMetadata]
+ Network.Google.Sheets.Types: searchDeveloperMetadataRequest :: SearchDeveloperMetadataRequest
+ Network.Google.Sheets.Types: searchDeveloperMetadataResponse :: SearchDeveloperMetadataResponse
+ Network.Google.Sheets.Types: spIterativeCalculationSettings :: Lens' SpreadsheetProperties (Maybe IterativeCalculationSettings)
+ Network.Google.Sheets.Types: sprDeveloperMetadata :: Lens' Spreadsheet [DeveloperMetadata]
+ Network.Google.Sheets.Types: tccsMaxValueColor :: Lens' TreemapChartColorScale (Maybe Color)
+ Network.Google.Sheets.Types: tccsMidValueColor :: Lens' TreemapChartColorScale (Maybe Color)
+ Network.Google.Sheets.Types: tccsMinValueColor :: Lens' TreemapChartColorScale (Maybe Color)
+ Network.Google.Sheets.Types: tccsNoDataColor :: Lens' TreemapChartColorScale (Maybe Color)
+ Network.Google.Sheets.Types: tcsColorData :: Lens' TreemapChartSpec (Maybe ChartData)
+ Network.Google.Sheets.Types: tcsColorScale :: Lens' TreemapChartSpec (Maybe TreemapChartColorScale)
+ Network.Google.Sheets.Types: tcsHeaderColor :: Lens' TreemapChartSpec (Maybe Color)
+ Network.Google.Sheets.Types: tcsHideTooltips :: Lens' TreemapChartSpec (Maybe Bool)
+ Network.Google.Sheets.Types: tcsHintedLevels :: Lens' TreemapChartSpec (Maybe Int32)
+ Network.Google.Sheets.Types: tcsLabels :: Lens' TreemapChartSpec (Maybe ChartData)
+ Network.Google.Sheets.Types: tcsLevels :: Lens' TreemapChartSpec (Maybe Int32)
+ Network.Google.Sheets.Types: tcsMaxValue :: Lens' TreemapChartSpec (Maybe Double)
+ Network.Google.Sheets.Types: tcsMinValue :: Lens' TreemapChartSpec (Maybe Double)
+ Network.Google.Sheets.Types: tcsParentLabels :: Lens' TreemapChartSpec (Maybe ChartData)
+ Network.Google.Sheets.Types: tcsSizeData :: Lens' TreemapChartSpec (Maybe ChartData)
+ Network.Google.Sheets.Types: tcsTextFormat :: Lens' TreemapChartSpec (Maybe TextFormat)
+ Network.Google.Sheets.Types: textPosition :: TextPosition
+ Network.Google.Sheets.Types: textRotation :: TextRotation
+ Network.Google.Sheets.Types: tpHorizontalAlignment :: Lens' TextPosition (Maybe TextPositionHorizontalAlignment)
+ Network.Google.Sheets.Types: trAngle :: Lens' TextRotation (Maybe Int32)
+ Network.Google.Sheets.Types: trVertical :: Lens' TextRotation (Maybe Bool)
+ Network.Google.Sheets.Types: treemapChartColorScale :: TreemapChartColorScale
+ Network.Google.Sheets.Types: treemapChartSpec :: TreemapChartSpec
+ Network.Google.Sheets.Types: uDeveloperMetadata :: Lens' UpdateDeveloperMetadataResponse [DeveloperMetadata]
+ Network.Google.Sheets.Types: udgrDimensionGroup :: Lens' UpdateDimensionGroupRequest (Maybe DimensionGroup)
+ Network.Google.Sheets.Types: udgrFields :: Lens' UpdateDimensionGroupRequest (Maybe GFieldMask)
+ Network.Google.Sheets.Types: udmrDataFilters :: Lens' UpdateDeveloperMetadataRequest [DataFilter]
+ Network.Google.Sheets.Types: udmrDeveloperMetadata :: Lens' UpdateDeveloperMetadataRequest (Maybe DeveloperMetadata)
+ Network.Google.Sheets.Types: udmrFields :: Lens' UpdateDeveloperMetadataRequest (Maybe GFieldMask)
+ Network.Google.Sheets.Types: updateDeveloperMetadataRequest :: UpdateDeveloperMetadataRequest
+ Network.Google.Sheets.Types: updateDeveloperMetadataResponse :: UpdateDeveloperMetadataResponse
+ Network.Google.Sheets.Types: updateDimensionGroupRequest :: UpdateDimensionGroupRequest
+ Network.Google.Sheets.Types: updateValuesByDataFilterResponse :: UpdateValuesByDataFilterResponse
+ Network.Google.Sheets.Types: uvbdfrDataFilter :: Lens' UpdateValuesByDataFilterResponse (Maybe DataFilter)
+ Network.Google.Sheets.Types: uvbdfrUpdatedCells :: Lens' UpdateValuesByDataFilterResponse (Maybe Int32)
+ Network.Google.Sheets.Types: uvbdfrUpdatedColumns :: Lens' UpdateValuesByDataFilterResponse (Maybe Int32)
+ Network.Google.Sheets.Types: uvbdfrUpdatedData :: Lens' UpdateValuesByDataFilterResponse (Maybe ValueRange)
+ Network.Google.Sheets.Types: uvbdfrUpdatedRange :: Lens' UpdateValuesByDataFilterResponse (Maybe Text)
+ Network.Google.Sheets.Types: uvbdfrUpdatedRows :: Lens' UpdateValuesByDataFilterResponse (Maybe Int32)
+ Network.Google.Sheets.Types: wColor :: Lens' WaterfallChartColumnStyle (Maybe Color)
+ Network.Google.Sheets.Types: wLabel :: Lens' WaterfallChartColumnStyle (Maybe Text)
+ Network.Google.Sheets.Types: waterfallChartColumnStyle :: WaterfallChartColumnStyle
+ Network.Google.Sheets.Types: waterfallChartCustomSubtotal :: WaterfallChartCustomSubtotal
+ Network.Google.Sheets.Types: waterfallChartDomain :: WaterfallChartDomain
+ Network.Google.Sheets.Types: waterfallChartSeries :: WaterfallChartSeries
+ Network.Google.Sheets.Types: waterfallChartSpec :: WaterfallChartSpec
+ Network.Google.Sheets.Types: wccsDataIsSubtotal :: Lens' WaterfallChartCustomSubtotal (Maybe Bool)
+ Network.Google.Sheets.Types: wccsLabel :: Lens' WaterfallChartCustomSubtotal (Maybe Text)
+ Network.Google.Sheets.Types: wccsSubtotalIndex :: Lens' WaterfallChartCustomSubtotal (Maybe Int32)
+ Network.Google.Sheets.Types: wcdData :: Lens' WaterfallChartDomain (Maybe ChartData)
+ Network.Google.Sheets.Types: wcdReversed :: Lens' WaterfallChartDomain (Maybe Bool)
+ Network.Google.Sheets.Types: wcsConnectorLineStyle :: Lens' WaterfallChartSpec (Maybe LineStyle)
+ Network.Google.Sheets.Types: wcsCustomSubtotals :: Lens' WaterfallChartSeries [WaterfallChartCustomSubtotal]
+ Network.Google.Sheets.Types: wcsData :: Lens' WaterfallChartSeries (Maybe ChartData)
+ Network.Google.Sheets.Types: wcsDomain :: Lens' WaterfallChartSpec (Maybe WaterfallChartDomain)
+ Network.Google.Sheets.Types: wcsFirstValueIsTotal :: Lens' WaterfallChartSpec (Maybe Bool)
+ Network.Google.Sheets.Types: wcsHideConnectorLines :: Lens' WaterfallChartSpec (Maybe Bool)
+ Network.Google.Sheets.Types: wcsHideTrailingSubtotal :: Lens' WaterfallChartSeries (Maybe Bool)
+ Network.Google.Sheets.Types: wcsNegativeColumnsStyle :: Lens' WaterfallChartSeries (Maybe WaterfallChartColumnStyle)
+ Network.Google.Sheets.Types: wcsPositiveColumnsStyle :: Lens' WaterfallChartSeries (Maybe WaterfallChartColumnStyle)
+ Network.Google.Sheets.Types: wcsSeries :: Lens' WaterfallChartSpec [WaterfallChartSeries]
+ Network.Google.Sheets.Types: wcsStackedType :: Lens' WaterfallChartSpec (Maybe WaterfallChartSpecStackedType)
+ Network.Google.Sheets.Types: wcsSubtotalColumnsStyle :: Lens' WaterfallChartSeries (Maybe WaterfallChartColumnStyle)
- Network.Google.Resource.Sheets.Spreadsheets.BatchUpdate: type SpreadsheetsBatchUpdateResource = "v4" :> ("spreadsheets" :> (CaptureMode "spreadsheetId" "batchUpdate" Text :> (QueryParam "$.xgafv" Xgafv :> (QueryParam "upload_protocol" Text :> (QueryParam "pp" Bool :> (QueryParam "access_token" Text :> (QueryParam "uploadType" Text :> (QueryParam "bearer_token" Text :> (QueryParam "callback" Text :> (QueryParam "alt" AltJSON :> (ReqBody '[JSON] BatchUpdateSpreadsheetRequest :> Post '[JSON] BatchUpdateSpreadsheetResponse)))))))))))
+ Network.Google.Resource.Sheets.Spreadsheets.BatchUpdate: type SpreadsheetsBatchUpdateResource = "v4" :> "spreadsheets" :> CaptureMode "spreadsheetId" "batchUpdate" Text :> QueryParam "$.xgafv" Xgafv :> QueryParam "upload_protocol" Text :> QueryParam "access_token" Text :> QueryParam "uploadType" Text :> QueryParam "callback" Text :> QueryParam "alt" AltJSON :> ReqBody '[JSON] BatchUpdateSpreadsheetRequest :> Post '[JSON] BatchUpdateSpreadsheetResponse
- Network.Google.Resource.Sheets.Spreadsheets.Create: type SpreadsheetsCreateResource = "v4" :> ("spreadsheets" :> (QueryParam "$.xgafv" Xgafv :> (QueryParam "upload_protocol" Text :> (QueryParam "pp" Bool :> (QueryParam "access_token" Text :> (QueryParam "uploadType" Text :> (QueryParam "bearer_token" Text :> (QueryParam "callback" Text :> (QueryParam "alt" AltJSON :> (ReqBody '[JSON] Spreadsheet :> Post '[JSON] Spreadsheet))))))))))
+ Network.Google.Resource.Sheets.Spreadsheets.Create: type SpreadsheetsCreateResource = "v4" :> "spreadsheets" :> QueryParam "$.xgafv" Xgafv :> QueryParam "upload_protocol" Text :> QueryParam "access_token" Text :> QueryParam "uploadType" Text :> QueryParam "callback" Text :> QueryParam "alt" AltJSON :> ReqBody '[JSON] Spreadsheet :> Post '[JSON] Spreadsheet
- Network.Google.Resource.Sheets.Spreadsheets.Get: type SpreadsheetsGetResource = "v4" :> ("spreadsheets" :> (Capture "spreadsheetId" Text :> (QueryParam "$.xgafv" Xgafv :> (QueryParam "upload_protocol" Text :> (QueryParam "pp" Bool :> (QueryParam "access_token" Text :> (QueryParam "uploadType" Text :> (QueryParams "ranges" Text :> (QueryParam "includeGridData" Bool :> (QueryParam "bearer_token" Text :> (QueryParam "callback" Text :> (QueryParam "alt" AltJSON :> Get '[JSON] Spreadsheet))))))))))))
+ Network.Google.Resource.Sheets.Spreadsheets.Get: type SpreadsheetsGetResource = "v4" :> "spreadsheets" :> Capture "spreadsheetId" Text :> QueryParam "$.xgafv" Xgafv :> QueryParam "upload_protocol" Text :> QueryParam "access_token" Text :> QueryParam "uploadType" Text :> QueryParams "ranges" Text :> QueryParam "includeGridData" Bool :> QueryParam "callback" Text :> QueryParam "alt" AltJSON :> Get '[JSON] Spreadsheet
- Network.Google.Resource.Sheets.Spreadsheets.Sheets.CopyTo: type SpreadsheetsSheetsCopyToResource = "v4" :> ("spreadsheets" :> (Capture "spreadsheetId" Text :> ("sheets" :> (CaptureMode "sheetId" "copyTo" (Textual Int32) :> (QueryParam "$.xgafv" Xgafv :> (QueryParam "upload_protocol" Text :> (QueryParam "pp" Bool :> (QueryParam "access_token" Text :> (QueryParam "uploadType" Text :> (QueryParam "bearer_token" Text :> (QueryParam "callback" Text :> (QueryParam "alt" AltJSON :> (ReqBody '[JSON] CopySheetToAnotherSpreadsheetRequest :> Post '[JSON] SheetProperties)))))))))))))
+ Network.Google.Resource.Sheets.Spreadsheets.Sheets.CopyTo: type SpreadsheetsSheetsCopyToResource = "v4" :> "spreadsheets" :> Capture "spreadsheetId" Text :> "sheets" :> CaptureMode "sheetId" "copyTo" (Textual Int32) :> QueryParam "$.xgafv" Xgafv :> QueryParam "upload_protocol" Text :> QueryParam "access_token" Text :> QueryParam "uploadType" Text :> QueryParam "callback" Text :> QueryParam "alt" AltJSON :> ReqBody '[JSON] CopySheetToAnotherSpreadsheetRequest :> Post '[JSON] SheetProperties
- Network.Google.Resource.Sheets.Spreadsheets.Values.Append: type SpreadsheetsValuesAppendResource = "v4" :> ("spreadsheets" :> (Capture "spreadsheetId" Text :> ("values" :> (CaptureMode "range" "append" Text :> (QueryParam "$.xgafv" Xgafv :> (QueryParam "upload_protocol" Text :> (QueryParam "pp" Bool :> (QueryParam "access_token" Text :> (QueryParam "uploadType" Text :> (QueryParam "valueInputOption" Text :> (QueryParam "insertDataOption" Text :> (QueryParam "bearer_token" Text :> (QueryParam "includeValuesInResponse" Bool :> (QueryParam "responseDateTimeRenderOption" Text :> (QueryParam "callback" Text :> (QueryParam "responseValueRenderOption" Text :> (QueryParam "alt" AltJSON :> (ReqBody '[JSON] ValueRange :> Post '[JSON] AppendValuesResponse))))))))))))))))))
+ Network.Google.Resource.Sheets.Spreadsheets.Values.Append: type SpreadsheetsValuesAppendResource = "v4" :> "spreadsheets" :> Capture "spreadsheetId" Text :> "values" :> CaptureMode "range" "append" Text :> QueryParam "$.xgafv" Xgafv :> QueryParam "upload_protocol" Text :> QueryParam "access_token" Text :> QueryParam "uploadType" Text :> QueryParam "valueInputOption" Text :> QueryParam "insertDataOption" Text :> QueryParam "includeValuesInResponse" Bool :> QueryParam "responseDateTimeRenderOption" Text :> QueryParam "callback" Text :> QueryParam "responseValueRenderOption" Text :> QueryParam "alt" AltJSON :> ReqBody '[JSON] ValueRange :> Post '[JSON] AppendValuesResponse
- Network.Google.Resource.Sheets.Spreadsheets.Values.BatchClear: type SpreadsheetsValuesBatchClearResource = "v4" :> ("spreadsheets" :> (Capture "spreadsheetId" Text :> ("values:batchClear" :> (QueryParam "$.xgafv" Xgafv :> (QueryParam "upload_protocol" Text :> (QueryParam "pp" Bool :> (QueryParam "access_token" Text :> (QueryParam "uploadType" Text :> (QueryParam "bearer_token" Text :> (QueryParam "callback" Text :> (QueryParam "alt" AltJSON :> (ReqBody '[JSON] BatchClearValuesRequest :> Post '[JSON] BatchClearValuesResponse))))))))))))
+ Network.Google.Resource.Sheets.Spreadsheets.Values.BatchClear: type SpreadsheetsValuesBatchClearResource = "v4" :> "spreadsheets" :> Capture "spreadsheetId" Text :> "values:batchClear" :> QueryParam "$.xgafv" Xgafv :> QueryParam "upload_protocol" Text :> QueryParam "access_token" Text :> QueryParam "uploadType" Text :> QueryParam "callback" Text :> QueryParam "alt" AltJSON :> ReqBody '[JSON] BatchClearValuesRequest :> Post '[JSON] BatchClearValuesResponse
- Network.Google.Resource.Sheets.Spreadsheets.Values.BatchGet: type SpreadsheetsValuesBatchGetResource = "v4" :> ("spreadsheets" :> (Capture "spreadsheetId" Text :> ("values:batchGet" :> (QueryParam "$.xgafv" Xgafv :> (QueryParam "valueRenderOption" Text :> (QueryParam "upload_protocol" Text :> (QueryParam "pp" Bool :> (QueryParam "access_token" Text :> (QueryParam "uploadType" Text :> (QueryParams "ranges" Text :> (QueryParam "bearer_token" Text :> (QueryParam "dateTimeRenderOption" Text :> (QueryParam "majorDimension" Text :> (QueryParam "callback" Text :> (QueryParam "alt" AltJSON :> Get '[JSON] BatchGetValuesResponse)))))))))))))))
+ Network.Google.Resource.Sheets.Spreadsheets.Values.BatchGet: type SpreadsheetsValuesBatchGetResource = "v4" :> "spreadsheets" :> Capture "spreadsheetId" Text :> "values:batchGet" :> QueryParam "$.xgafv" Xgafv :> QueryParam "valueRenderOption" Text :> QueryParam "upload_protocol" Text :> QueryParam "access_token" Text :> QueryParam "uploadType" Text :> QueryParams "ranges" Text :> QueryParam "dateTimeRenderOption" Text :> QueryParam "majorDimension" Text :> QueryParam "callback" Text :> QueryParam "alt" AltJSON :> Get '[JSON] BatchGetValuesResponse
- Network.Google.Resource.Sheets.Spreadsheets.Values.BatchUpdate: type SpreadsheetsValuesBatchUpdateResource = "v4" :> ("spreadsheets" :> (Capture "spreadsheetId" Text :> ("values:batchUpdate" :> (QueryParam "$.xgafv" Xgafv :> (QueryParam "upload_protocol" Text :> (QueryParam "pp" Bool :> (QueryParam "access_token" Text :> (QueryParam "uploadType" Text :> (QueryParam "bearer_token" Text :> (QueryParam "callback" Text :> (QueryParam "alt" AltJSON :> (ReqBody '[JSON] BatchUpdateValuesRequest :> Post '[JSON] BatchUpdateValuesResponse))))))))))))
+ Network.Google.Resource.Sheets.Spreadsheets.Values.BatchUpdate: type SpreadsheetsValuesBatchUpdateResource = "v4" :> "spreadsheets" :> Capture "spreadsheetId" Text :> "values:batchUpdate" :> QueryParam "$.xgafv" Xgafv :> QueryParam "upload_protocol" Text :> QueryParam "access_token" Text :> QueryParam "uploadType" Text :> QueryParam "callback" Text :> QueryParam "alt" AltJSON :> ReqBody '[JSON] BatchUpdateValuesRequest :> Post '[JSON] BatchUpdateValuesResponse
- Network.Google.Resource.Sheets.Spreadsheets.Values.Clear: type SpreadsheetsValuesClearResource = "v4" :> ("spreadsheets" :> (Capture "spreadsheetId" Text :> ("values" :> (CaptureMode "range" "clear" Text :> (QueryParam "$.xgafv" Xgafv :> (QueryParam "upload_protocol" Text :> (QueryParam "pp" Bool :> (QueryParam "access_token" Text :> (QueryParam "uploadType" Text :> (QueryParam "bearer_token" Text :> (QueryParam "callback" Text :> (QueryParam "alt" AltJSON :> (ReqBody '[JSON] ClearValuesRequest :> Post '[JSON] ClearValuesResponse)))))))))))))
+ Network.Google.Resource.Sheets.Spreadsheets.Values.Clear: type SpreadsheetsValuesClearResource = "v4" :> "spreadsheets" :> Capture "spreadsheetId" Text :> "values" :> CaptureMode "range" "clear" Text :> QueryParam "$.xgafv" Xgafv :> QueryParam "upload_protocol" Text :> QueryParam "access_token" Text :> QueryParam "uploadType" Text :> QueryParam "callback" Text :> QueryParam "alt" AltJSON :> ReqBody '[JSON] ClearValuesRequest :> Post '[JSON] ClearValuesResponse
- Network.Google.Resource.Sheets.Spreadsheets.Values.Get: type SpreadsheetsValuesGetResource = "v4" :> ("spreadsheets" :> (Capture "spreadsheetId" Text :> ("values" :> (Capture "range" Text :> (QueryParam "$.xgafv" Xgafv :> (QueryParam "valueRenderOption" Text :> (QueryParam "upload_protocol" Text :> (QueryParam "pp" Bool :> (QueryParam "access_token" Text :> (QueryParam "uploadType" Text :> (QueryParam "bearer_token" Text :> (QueryParam "dateTimeRenderOption" Text :> (QueryParam "majorDimension" Text :> (QueryParam "callback" Text :> (QueryParam "alt" AltJSON :> Get '[JSON] ValueRange)))))))))))))))
+ Network.Google.Resource.Sheets.Spreadsheets.Values.Get: type SpreadsheetsValuesGetResource = "v4" :> "spreadsheets" :> Capture "spreadsheetId" Text :> "values" :> Capture "range" Text :> QueryParam "$.xgafv" Xgafv :> QueryParam "valueRenderOption" Text :> QueryParam "upload_protocol" Text :> QueryParam "access_token" Text :> QueryParam "uploadType" Text :> QueryParam "dateTimeRenderOption" Text :> QueryParam "majorDimension" Text :> QueryParam "callback" Text :> QueryParam "alt" AltJSON :> Get '[JSON] ValueRange
- Network.Google.Resource.Sheets.Spreadsheets.Values.Update: type SpreadsheetsValuesUpdateResource = "v4" :> ("spreadsheets" :> (Capture "spreadsheetId" Text :> ("values" :> (Capture "range" Text :> (QueryParam "$.xgafv" Xgafv :> (QueryParam "upload_protocol" Text :> (QueryParam "pp" Bool :> (QueryParam "access_token" Text :> (QueryParam "uploadType" Text :> (QueryParam "valueInputOption" Text :> (QueryParam "bearer_token" Text :> (QueryParam "includeValuesInResponse" Bool :> (QueryParam "responseDateTimeRenderOption" Text :> (QueryParam "callback" Text :> (QueryParam "responseValueRenderOption" Text :> (QueryParam "alt" AltJSON :> (ReqBody '[JSON] ValueRange :> Put '[JSON] UpdateValuesResponse)))))))))))))))))
+ Network.Google.Resource.Sheets.Spreadsheets.Values.Update: type SpreadsheetsValuesUpdateResource = "v4" :> "spreadsheets" :> Capture "spreadsheetId" Text :> "values" :> Capture "range" Text :> QueryParam "$.xgafv" Xgafv :> QueryParam "upload_protocol" Text :> QueryParam "access_token" Text :> QueryParam "uploadType" Text :> QueryParam "valueInputOption" Text :> QueryParam "includeValuesInResponse" Bool :> QueryParam "responseDateTimeRenderOption" Text :> QueryParam "callback" Text :> QueryParam "responseValueRenderOption" Text :> QueryParam "alt" AltJSON :> ReqBody '[JSON] ValueRange :> Put '[JSON] UpdateValuesResponse
- Network.Google.Sheets: BottomLegend :: PieChartSpecLegendPosition
+ Network.Google.Sheets: BottomLegend :: BubbleChartSpecLegendPosition
- Network.Google.Sheets: Center :: CellFormatHorizontalAlignment
+ Network.Google.Sheets: Center :: TextPositionHorizontalAlignment
- Network.Google.Sheets: FormattedString :: BatchUpdateValuesRequestResponseDateTimeRenderOption
+ Network.Google.Sheets: FormattedString :: BatchUpdateValuesByDataFilterRequestResponseDateTimeRenderOption
- Network.Google.Sheets: FormattedValue :: BatchUpdateValuesRequestResponseValueRenderOption
+ Network.Google.Sheets: FormattedValue :: BatchGetValuesByDataFilterRequestValueRenderOption
- Network.Google.Sheets: Formula :: BatchUpdateValuesRequestResponseValueRenderOption
+ Network.Google.Sheets: Formula :: BatchGetValuesByDataFilterRequestValueRenderOption
- Network.Google.Sheets: HorizontalAlignUnspecified :: CellFormatHorizontalAlignment
+ Network.Google.Sheets: HorizontalAlignUnspecified :: TextPositionHorizontalAlignment
- Network.Google.Sheets: Hour :: SpreadsheetPropertiesAutoRecalc
+ Network.Google.Sheets: Hour :: DateTimeRuleType
- Network.Google.Sheets: Left' :: CellFormatHorizontalAlignment
+ Network.Google.Sheets: Left' :: TextPositionHorizontalAlignment
- Network.Google.Sheets: LeftLegend :: PieChartSpecLegendPosition
+ Network.Google.Sheets: LeftLegend :: BubbleChartSpecLegendPosition
- Network.Google.Sheets: Minute :: SpreadsheetPropertiesAutoRecalc
+ Network.Google.Sheets: Minute :: DateTimeRuleType
- Network.Google.Sheets: NoLegend :: PieChartSpecLegendPosition
+ Network.Google.Sheets: NoLegend :: BubbleChartSpecLegendPosition
- Network.Google.Sheets: Right' :: CellFormatHorizontalAlignment
+ Network.Google.Sheets: Right' :: TextPositionHorizontalAlignment
- Network.Google.Sheets: RightLegend :: PieChartSpecLegendPosition
+ Network.Google.Sheets: RightLegend :: BubbleChartSpecLegendPosition
- Network.Google.Sheets: SerialNumber :: BatchUpdateValuesRequestResponseDateTimeRenderOption
+ Network.Google.Sheets: SerialNumber :: BatchUpdateValuesByDataFilterRequestResponseDateTimeRenderOption
- Network.Google.Sheets: TopLegend :: PieChartSpecLegendPosition
+ Network.Google.Sheets: TopLegend :: BubbleChartSpecLegendPosition
- Network.Google.Sheets: UnformattedValue :: BatchUpdateValuesRequestResponseValueRenderOption
+ Network.Google.Sheets: UnformattedValue :: BatchGetValuesByDataFilterRequestValueRenderOption
- Network.Google.Sheets: acrFields :: Lens' AppendCellsRequest (Maybe FieldMask)
+ Network.Google.Sheets: acrFields :: Lens' AppendCellsRequest (Maybe GFieldMask)
- Network.Google.Sheets: bSeries :: Lens' BasicChartSpec [BasicChartSeries]
+ Network.Google.Sheets: bSeries :: Lens' BasicChartSeries (Maybe ChartData)
- Network.Google.Sheets: bcsSeries :: Lens' BasicChartSeries (Maybe ChartData)
+ Network.Google.Sheets: bcsSeries :: Lens' BubbleChartSpec (Maybe ChartData)
- Network.Google.Sheets: rcrFields :: Lens' RepeatCellRequest (Maybe FieldMask)
+ Network.Google.Sheets: rcrFields :: Lens' RepeatCellRequest (Maybe GFieldMask)
- Network.Google.Sheets: type SheetsAPI = SpreadsheetsSheetsCopyToResource :<|> (SpreadsheetsValuesBatchClearResource :<|> (SpreadsheetsValuesGetResource :<|> (SpreadsheetsValuesClearResource :<|> (SpreadsheetsValuesBatchGetResource :<|> (SpreadsheetsValuesBatchUpdateResource :<|> (SpreadsheetsValuesAppendResource :<|> (SpreadsheetsValuesUpdateResource :<|> (SpreadsheetsGetResource :<|> (SpreadsheetsCreateResource :<|> SpreadsheetsBatchUpdateResource)))))))))
+ Network.Google.Sheets: type SheetsAPI = SpreadsheetsSheetsCopyToResource :<|> SpreadsheetsValuesBatchClearResource :<|> SpreadsheetsValuesBatchClearByDataFilterResource :<|> SpreadsheetsValuesGetResource :<|> SpreadsheetsValuesBatchGetByDataFilterResource :<|> SpreadsheetsValuesClearResource :<|> SpreadsheetsValuesBatchGetResource :<|> SpreadsheetsValuesBatchUpdateResource :<|> SpreadsheetsValuesAppendResource :<|> SpreadsheetsValuesBatchUpdateByDataFilterResource :<|> SpreadsheetsValuesUpdateResource :<|> SpreadsheetsDeveloperMetadataGetResource :<|> SpreadsheetsDeveloperMetadataSearchResource :<|> SpreadsheetsGetByDataFilterResource :<|> SpreadsheetsGetResource :<|> SpreadsheetsCreateResource :<|> SpreadsheetsBatchUpdateResource
- Network.Google.Sheets: uFields :: Lens' UpdateSpreadsheetPropertiesRequest (Maybe FieldMask)
+ Network.Google.Sheets: uFields :: Lens' UpdateSpreadsheetPropertiesRequest (Maybe GFieldMask)
- Network.Google.Sheets: ubrFields :: Lens' UpdateBandingRequest (Maybe FieldMask)
+ Network.Google.Sheets: ubrFields :: Lens' UpdateBandingRequest (Maybe GFieldMask)
- Network.Google.Sheets: udprFields :: Lens' UpdateDimensionPropertiesRequest (Maybe FieldMask)
+ Network.Google.Sheets: udprFields :: Lens' UpdateDimensionPropertiesRequest (Maybe GFieldMask)
- Network.Google.Sheets: ueoprFields :: Lens' UpdateEmbeddedObjectPositionRequest (Maybe FieldMask)
+ Network.Google.Sheets: ueoprFields :: Lens' UpdateEmbeddedObjectPositionRequest (Maybe GFieldMask)
- Network.Google.Sheets: ufvrFields :: Lens' UpdateFilterViewRequest (Maybe FieldMask)
+ Network.Google.Sheets: ufvrFields :: Lens' UpdateFilterViewRequest (Maybe GFieldMask)
- Network.Google.Sheets: unrrFields :: Lens' UpdateNamedRangeRequest (Maybe FieldMask)
+ Network.Google.Sheets: unrrFields :: Lens' UpdateNamedRangeRequest (Maybe GFieldMask)
- Network.Google.Sheets: updFields :: Lens' UpdateCellsRequest (Maybe FieldMask)
+ Network.Google.Sheets: updFields :: Lens' UpdateCellsRequest (Maybe GFieldMask)
- Network.Google.Sheets: uprrFields :: Lens' UpdateProtectedRangeRequest (Maybe FieldMask)
+ Network.Google.Sheets: uprrFields :: Lens' UpdateProtectedRangeRequest (Maybe GFieldMask)
- Network.Google.Sheets: usprFields :: Lens' UpdateSheetPropertiesRequest (Maybe FieldMask)
+ Network.Google.Sheets: usprFields :: Lens' UpdateSheetPropertiesRequest (Maybe GFieldMask)
- Network.Google.Sheets.Types: BottomLegend :: PieChartSpecLegendPosition
+ Network.Google.Sheets.Types: BottomLegend :: BubbleChartSpecLegendPosition
- Network.Google.Sheets.Types: Center :: CellFormatHorizontalAlignment
+ Network.Google.Sheets.Types: Center :: TextPositionHorizontalAlignment
- Network.Google.Sheets.Types: FormattedString :: BatchUpdateValuesRequestResponseDateTimeRenderOption
+ Network.Google.Sheets.Types: FormattedString :: BatchUpdateValuesByDataFilterRequestResponseDateTimeRenderOption
- Network.Google.Sheets.Types: FormattedValue :: BatchUpdateValuesRequestResponseValueRenderOption
+ Network.Google.Sheets.Types: FormattedValue :: BatchGetValuesByDataFilterRequestValueRenderOption
- Network.Google.Sheets.Types: Formula :: BatchUpdateValuesRequestResponseValueRenderOption
+ Network.Google.Sheets.Types: Formula :: BatchGetValuesByDataFilterRequestValueRenderOption
- Network.Google.Sheets.Types: HorizontalAlignUnspecified :: CellFormatHorizontalAlignment
+ Network.Google.Sheets.Types: HorizontalAlignUnspecified :: TextPositionHorizontalAlignment
- Network.Google.Sheets.Types: Hour :: SpreadsheetPropertiesAutoRecalc
+ Network.Google.Sheets.Types: Hour :: DateTimeRuleType
- Network.Google.Sheets.Types: Left' :: CellFormatHorizontalAlignment
+ Network.Google.Sheets.Types: Left' :: TextPositionHorizontalAlignment
- Network.Google.Sheets.Types: LeftLegend :: PieChartSpecLegendPosition
+ Network.Google.Sheets.Types: LeftLegend :: BubbleChartSpecLegendPosition
- Network.Google.Sheets.Types: Minute :: SpreadsheetPropertiesAutoRecalc
+ Network.Google.Sheets.Types: Minute :: DateTimeRuleType
- Network.Google.Sheets.Types: NoLegend :: PieChartSpecLegendPosition
+ Network.Google.Sheets.Types: NoLegend :: BubbleChartSpecLegendPosition
- Network.Google.Sheets.Types: Right' :: CellFormatHorizontalAlignment
+ Network.Google.Sheets.Types: Right' :: TextPositionHorizontalAlignment
- Network.Google.Sheets.Types: RightLegend :: PieChartSpecLegendPosition
+ Network.Google.Sheets.Types: RightLegend :: BubbleChartSpecLegendPosition
- Network.Google.Sheets.Types: SerialNumber :: BatchUpdateValuesRequestResponseDateTimeRenderOption
+ Network.Google.Sheets.Types: SerialNumber :: BatchUpdateValuesByDataFilterRequestResponseDateTimeRenderOption
- Network.Google.Sheets.Types: TopLegend :: PieChartSpecLegendPosition
+ Network.Google.Sheets.Types: TopLegend :: BubbleChartSpecLegendPosition
- Network.Google.Sheets.Types: UnformattedValue :: BatchUpdateValuesRequestResponseValueRenderOption
+ Network.Google.Sheets.Types: UnformattedValue :: BatchGetValuesByDataFilterRequestValueRenderOption
- Network.Google.Sheets.Types: acrFields :: Lens' AppendCellsRequest (Maybe FieldMask)
+ Network.Google.Sheets.Types: acrFields :: Lens' AppendCellsRequest (Maybe GFieldMask)
- Network.Google.Sheets.Types: bSeries :: Lens' BasicChartSpec [BasicChartSeries]
+ Network.Google.Sheets.Types: bSeries :: Lens' BasicChartSeries (Maybe ChartData)
- Network.Google.Sheets.Types: bcsSeries :: Lens' BasicChartSeries (Maybe ChartData)
+ Network.Google.Sheets.Types: bcsSeries :: Lens' BubbleChartSpec (Maybe ChartData)
- Network.Google.Sheets.Types: rcrFields :: Lens' RepeatCellRequest (Maybe FieldMask)
+ Network.Google.Sheets.Types: rcrFields :: Lens' RepeatCellRequest (Maybe GFieldMask)
- Network.Google.Sheets.Types: uFields :: Lens' UpdateSpreadsheetPropertiesRequest (Maybe FieldMask)
+ Network.Google.Sheets.Types: uFields :: Lens' UpdateSpreadsheetPropertiesRequest (Maybe GFieldMask)
- Network.Google.Sheets.Types: ubrFields :: Lens' UpdateBandingRequest (Maybe FieldMask)
+ Network.Google.Sheets.Types: ubrFields :: Lens' UpdateBandingRequest (Maybe GFieldMask)
- Network.Google.Sheets.Types: udprFields :: Lens' UpdateDimensionPropertiesRequest (Maybe FieldMask)
+ Network.Google.Sheets.Types: udprFields :: Lens' UpdateDimensionPropertiesRequest (Maybe GFieldMask)
- Network.Google.Sheets.Types: ueoprFields :: Lens' UpdateEmbeddedObjectPositionRequest (Maybe FieldMask)
+ Network.Google.Sheets.Types: ueoprFields :: Lens' UpdateEmbeddedObjectPositionRequest (Maybe GFieldMask)
- Network.Google.Sheets.Types: ufvrFields :: Lens' UpdateFilterViewRequest (Maybe FieldMask)
+ Network.Google.Sheets.Types: ufvrFields :: Lens' UpdateFilterViewRequest (Maybe GFieldMask)
- Network.Google.Sheets.Types: unrrFields :: Lens' UpdateNamedRangeRequest (Maybe FieldMask)
+ Network.Google.Sheets.Types: unrrFields :: Lens' UpdateNamedRangeRequest (Maybe GFieldMask)
- Network.Google.Sheets.Types: updFields :: Lens' UpdateCellsRequest (Maybe FieldMask)
+ Network.Google.Sheets.Types: updFields :: Lens' UpdateCellsRequest (Maybe GFieldMask)
- Network.Google.Sheets.Types: uprrFields :: Lens' UpdateProtectedRangeRequest (Maybe FieldMask)
+ Network.Google.Sheets.Types: uprrFields :: Lens' UpdateProtectedRangeRequest (Maybe GFieldMask)
- Network.Google.Sheets.Types: usprFields :: Lens' UpdateSheetPropertiesRequest (Maybe FieldMask)
+ Network.Google.Sheets.Types: usprFields :: Lens' UpdateSheetPropertiesRequest (Maybe GFieldMask)

Files

gen/Network/Google/Resource/Sheets/Spreadsheets/BatchUpdate.hs view
@@ -47,12 +47,10 @@     -- * Request Lenses     , sbuXgafv     , sbuUploadProtocol-    , sbuPp     , sbuAccessToken     , sbuSpreadsheetId     , sbuUploadType     , sbuPayload-    , sbuBearerToken     , sbuCallback     ) where @@ -67,14 +65,12 @@          CaptureMode "spreadsheetId" "batchUpdate" Text :>            QueryParam "$.xgafv" Xgafv :>              QueryParam "upload_protocol" Text :>-               QueryParam "pp" Bool :>-                 QueryParam "access_token" Text :>-                   QueryParam "uploadType" Text :>-                     QueryParam "bearer_token" Text :>-                       QueryParam "callback" Text :>-                         QueryParam "alt" AltJSON :>-                           ReqBody '[JSON] BatchUpdateSpreadsheetRequest :>-                             Post '[JSON] BatchUpdateSpreadsheetResponse+               QueryParam "access_token" Text :>+                 QueryParam "uploadType" Text :>+                   QueryParam "callback" Text :>+                     QueryParam "alt" AltJSON :>+                       ReqBody '[JSON] BatchUpdateSpreadsheetRequest :>+                         Post '[JSON] BatchUpdateSpreadsheetResponse  -- | Applies one or more updates to the spreadsheet. Each request is -- validated before being applied. If any request is not valid then the@@ -94,12 +90,10 @@ data SpreadsheetsBatchUpdate = SpreadsheetsBatchUpdate'     { _sbuXgafv          :: !(Maybe Xgafv)     , _sbuUploadProtocol :: !(Maybe Text)-    , _sbuPp             :: !Bool     , _sbuAccessToken    :: !(Maybe Text)     , _sbuSpreadsheetId  :: !Text     , _sbuUploadType     :: !(Maybe Text)     , _sbuPayload        :: !BatchUpdateSpreadsheetRequest-    , _sbuBearerToken    :: !(Maybe Text)     , _sbuCallback       :: !(Maybe Text)     } deriving (Eq,Show,Data,Typeable,Generic) @@ -111,8 +105,6 @@ -- -- * 'sbuUploadProtocol' ----- * 'sbuPp'--- -- * 'sbuAccessToken' -- -- * 'sbuSpreadsheetId'@@ -121,8 +113,6 @@ -- -- * 'sbuPayload' ----- * 'sbuBearerToken'--- -- * 'sbuCallback' spreadsheetsBatchUpdate     :: Text -- ^ 'sbuSpreadsheetId'@@ -132,12 +122,10 @@     SpreadsheetsBatchUpdate'     { _sbuXgafv = Nothing     , _sbuUploadProtocol = Nothing-    , _sbuPp = True     , _sbuAccessToken = Nothing     , _sbuSpreadsheetId = pSbuSpreadsheetId_     , _sbuUploadType = Nothing     , _sbuPayload = pSbuPayload_-    , _sbuBearerToken = Nothing     , _sbuCallback = Nothing     } @@ -151,10 +139,6 @@   = lens _sbuUploadProtocol       (\ s a -> s{_sbuUploadProtocol = a}) --- | Pretty-print response.-sbuPp :: Lens' SpreadsheetsBatchUpdate Bool-sbuPp = lens _sbuPp (\ s a -> s{_sbuPp = a})- -- | OAuth access token. sbuAccessToken :: Lens' SpreadsheetsBatchUpdate (Maybe Text) sbuAccessToken@@ -178,12 +162,6 @@ sbuPayload   = lens _sbuPayload (\ s a -> s{_sbuPayload = a}) --- | OAuth bearer token.-sbuBearerToken :: Lens' SpreadsheetsBatchUpdate (Maybe Text)-sbuBearerToken-  = lens _sbuBearerToken-      (\ s a -> s{_sbuBearerToken = a})- -- | JSONP sbuCallback :: Lens' SpreadsheetsBatchUpdate (Maybe Text) sbuCallback@@ -194,13 +172,12 @@              BatchUpdateSpreadsheetResponse         type Scopes SpreadsheetsBatchUpdate =              '["https://www.googleapis.com/auth/drive",+               "https://www.googleapis.com/auth/drive.file",                "https://www.googleapis.com/auth/spreadsheets"]         requestClient SpreadsheetsBatchUpdate'{..}           = go _sbuSpreadsheetId _sbuXgafv _sbuUploadProtocol-              (Just _sbuPp)               _sbuAccessToken               _sbuUploadType-              _sbuBearerToken               _sbuCallback               (Just AltJSON)               _sbuPayload
gen/Network/Google/Resource/Sheets/Spreadsheets/Create.hs view
@@ -35,11 +35,9 @@     -- * Request Lenses     , scXgafv     , scUploadProtocol-    , scPp     , scAccessToken     , scUploadType     , scPayload-    , scBearerToken     , scCallback     ) where @@ -53,14 +51,12 @@        "spreadsheets" :>          QueryParam "$.xgafv" Xgafv :>            QueryParam "upload_protocol" Text :>-             QueryParam "pp" Bool :>-               QueryParam "access_token" Text :>-                 QueryParam "uploadType" Text :>-                   QueryParam "bearer_token" Text :>-                     QueryParam "callback" Text :>-                       QueryParam "alt" AltJSON :>-                         ReqBody '[JSON] Spreadsheet :>-                           Post '[JSON] Spreadsheet+             QueryParam "access_token" Text :>+               QueryParam "uploadType" Text :>+                 QueryParam "callback" Text :>+                   QueryParam "alt" AltJSON :>+                     ReqBody '[JSON] Spreadsheet :>+                       Post '[JSON] Spreadsheet  -- | Creates a spreadsheet, returning the newly created spreadsheet. --@@ -68,11 +64,9 @@ data SpreadsheetsCreate = SpreadsheetsCreate'     { _scXgafv          :: !(Maybe Xgafv)     , _scUploadProtocol :: !(Maybe Text)-    , _scPp             :: !Bool     , _scAccessToken    :: !(Maybe Text)     , _scUploadType     :: !(Maybe Text)     , _scPayload        :: !Spreadsheet-    , _scBearerToken    :: !(Maybe Text)     , _scCallback       :: !(Maybe Text)     } deriving (Eq,Show,Data,Typeable,Generic) @@ -84,16 +78,12 @@ -- -- * 'scUploadProtocol' ----- * 'scPp'--- -- * 'scAccessToken' -- -- * 'scUploadType' -- -- * 'scPayload' ----- * 'scBearerToken'--- -- * 'scCallback' spreadsheetsCreate     :: Spreadsheet -- ^ 'scPayload'@@ -102,11 +92,9 @@     SpreadsheetsCreate'     { _scXgafv = Nothing     , _scUploadProtocol = Nothing-    , _scPp = True     , _scAccessToken = Nothing     , _scUploadType = Nothing     , _scPayload = pScPayload_-    , _scBearerToken = Nothing     , _scCallback = Nothing     } @@ -120,10 +108,6 @@   = lens _scUploadProtocol       (\ s a -> s{_scUploadProtocol = a}) --- | Pretty-print response.-scPp :: Lens' SpreadsheetsCreate Bool-scPp = lens _scPp (\ s a -> s{_scPp = a})- -- | OAuth access token. scAccessToken :: Lens' SpreadsheetsCreate (Maybe Text) scAccessToken@@ -140,12 +124,6 @@ scPayload   = lens _scPayload (\ s a -> s{_scPayload = a}) --- | OAuth bearer token.-scBearerToken :: Lens' SpreadsheetsCreate (Maybe Text)-scBearerToken-  = lens _scBearerToken-      (\ s a -> s{_scBearerToken = a})- -- | JSONP scCallback :: Lens' SpreadsheetsCreate (Maybe Text) scCallback@@ -155,12 +133,11 @@         type Rs SpreadsheetsCreate = Spreadsheet         type Scopes SpreadsheetsCreate =              '["https://www.googleapis.com/auth/drive",+               "https://www.googleapis.com/auth/drive.file",                "https://www.googleapis.com/auth/spreadsheets"]         requestClient SpreadsheetsCreate'{..}-          = go _scXgafv _scUploadProtocol (Just _scPp)-              _scAccessToken+          = go _scXgafv _scUploadProtocol _scAccessToken               _scUploadType-              _scBearerToken               _scCallback               (Just AltJSON)               _scPayload
+ gen/Network/Google/Resource/Sheets/Spreadsheets/DeveloperMetadata/Get.hs view
@@ -0,0 +1,174 @@+{-# LANGUAGE DataKinds          #-}+{-# LANGUAGE DeriveDataTypeable #-}+{-# LANGUAGE DeriveGeneric      #-}+{-# LANGUAGE FlexibleInstances  #-}+{-# LANGUAGE NoImplicitPrelude  #-}+{-# LANGUAGE OverloadedStrings  #-}+{-# LANGUAGE RecordWildCards    #-}+{-# LANGUAGE TypeFamilies       #-}+{-# LANGUAGE TypeOperators      #-}++{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}++-- |+-- Module      : Network.Google.Resource.Sheets.Spreadsheets.DeveloperMetadata.Get+-- Copyright   : (c) 2015-2016 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Returns the developer metadata with the specified ID. The caller must+-- specify the spreadsheet ID and the developer metadata\'s unique+-- metadataId.+--+-- /See:/ <https://developers.google.com/sheets/ Google Sheets API Reference> for @sheets.spreadsheets.developerMetadata.get@.+module Network.Google.Resource.Sheets.Spreadsheets.DeveloperMetadata.Get+    (+    -- * REST Resource+      SpreadsheetsDeveloperMetadataGetResource++    -- * Creating a Request+    , spreadsheetsDeveloperMetadataGet+    , SpreadsheetsDeveloperMetadataGet++    -- * Request Lenses+    , sdmgXgafv+    , sdmgUploadProtocol+    , sdmgMetadataId+    , sdmgAccessToken+    , sdmgSpreadsheetId+    , sdmgUploadType+    , sdmgCallback+    ) where++import           Network.Google.Prelude+import           Network.Google.Sheets.Types++-- | A resource alias for @sheets.spreadsheets.developerMetadata.get@ method which the+-- 'SpreadsheetsDeveloperMetadataGet' request conforms to.+type SpreadsheetsDeveloperMetadataGetResource =+     "v4" :>+       "spreadsheets" :>+         Capture "spreadsheetId" Text :>+           "developerMetadata" :>+             Capture "metadataId" (Textual Int32) :>+               QueryParam "$.xgafv" Xgafv :>+                 QueryParam "upload_protocol" Text :>+                   QueryParam "access_token" Text :>+                     QueryParam "uploadType" Text :>+                       QueryParam "callback" Text :>+                         QueryParam "alt" AltJSON :>+                           Get '[JSON] DeveloperMetadata++-- | Returns the developer metadata with the specified ID. The caller must+-- specify the spreadsheet ID and the developer metadata\'s unique+-- metadataId.+--+-- /See:/ 'spreadsheetsDeveloperMetadataGet' smart constructor.+data SpreadsheetsDeveloperMetadataGet = SpreadsheetsDeveloperMetadataGet'+    { _sdmgXgafv          :: !(Maybe Xgafv)+    , _sdmgUploadProtocol :: !(Maybe Text)+    , _sdmgMetadataId     :: !(Textual Int32)+    , _sdmgAccessToken    :: !(Maybe Text)+    , _sdmgSpreadsheetId  :: !Text+    , _sdmgUploadType     :: !(Maybe Text)+    , _sdmgCallback       :: !(Maybe Text)+    } 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:+--+-- * 'sdmgXgafv'+--+-- * 'sdmgUploadProtocol'+--+-- * 'sdmgMetadataId'+--+-- * 'sdmgAccessToken'+--+-- * 'sdmgSpreadsheetId'+--+-- * 'sdmgUploadType'+--+-- * 'sdmgCallback'+spreadsheetsDeveloperMetadataGet+    :: Int32 -- ^ 'sdmgMetadataId'+    -> Text -- ^ 'sdmgSpreadsheetId'+    -> SpreadsheetsDeveloperMetadataGet+spreadsheetsDeveloperMetadataGet pSdmgMetadataId_ pSdmgSpreadsheetId_ =+    SpreadsheetsDeveloperMetadataGet'+    { _sdmgXgafv = Nothing+    , _sdmgUploadProtocol = Nothing+    , _sdmgMetadataId = _Coerce # pSdmgMetadataId_+    , _sdmgAccessToken = Nothing+    , _sdmgSpreadsheetId = pSdmgSpreadsheetId_+    , _sdmgUploadType = Nothing+    , _sdmgCallback = Nothing+    }++-- | V1 error format.+sdmgXgafv :: Lens' SpreadsheetsDeveloperMetadataGet (Maybe Xgafv)+sdmgXgafv+  = lens _sdmgXgafv (\ s a -> s{_sdmgXgafv = a})++-- | Upload protocol for media (e.g. \"raw\", \"multipart\").+sdmgUploadProtocol :: Lens' SpreadsheetsDeveloperMetadataGet (Maybe Text)+sdmgUploadProtocol+  = lens _sdmgUploadProtocol+      (\ s a -> s{_sdmgUploadProtocol = a})++-- | The ID of the developer metadata to retrieve.+sdmgMetadataId :: Lens' SpreadsheetsDeveloperMetadataGet Int32+sdmgMetadataId+  = lens _sdmgMetadataId+      (\ s a -> s{_sdmgMetadataId = a})+      . _Coerce++-- | OAuth access token.+sdmgAccessToken :: Lens' SpreadsheetsDeveloperMetadataGet (Maybe Text)+sdmgAccessToken+  = lens _sdmgAccessToken+      (\ s a -> s{_sdmgAccessToken = a})++-- | The ID of the spreadsheet to retrieve metadata from.+sdmgSpreadsheetId :: Lens' SpreadsheetsDeveloperMetadataGet Text+sdmgSpreadsheetId+  = lens _sdmgSpreadsheetId+      (\ s a -> s{_sdmgSpreadsheetId = a})++-- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").+sdmgUploadType :: Lens' SpreadsheetsDeveloperMetadataGet (Maybe Text)+sdmgUploadType+  = lens _sdmgUploadType+      (\ s a -> s{_sdmgUploadType = a})++-- | JSONP+sdmgCallback :: Lens' SpreadsheetsDeveloperMetadataGet (Maybe Text)+sdmgCallback+  = lens _sdmgCallback (\ s a -> s{_sdmgCallback = a})++instance GoogleRequest+         SpreadsheetsDeveloperMetadataGet where+        type Rs SpreadsheetsDeveloperMetadataGet =+             DeveloperMetadata+        type Scopes SpreadsheetsDeveloperMetadataGet =+             '["https://www.googleapis.com/auth/drive",+               "https://www.googleapis.com/auth/drive.file",+               "https://www.googleapis.com/auth/spreadsheets"]+        requestClient SpreadsheetsDeveloperMetadataGet'{..}+          = go _sdmgSpreadsheetId _sdmgMetadataId _sdmgXgafv+              _sdmgUploadProtocol+              _sdmgAccessToken+              _sdmgUploadType+              _sdmgCallback+              (Just AltJSON)+              sheetsService+          where go+                  = buildClient+                      (Proxy ::+                         Proxy SpreadsheetsDeveloperMetadataGetResource)+                      mempty
+ gen/Network/Google/Resource/Sheets/Spreadsheets/DeveloperMetadata/Search.hs view
@@ -0,0 +1,178 @@+{-# LANGUAGE DataKinds          #-}+{-# LANGUAGE DeriveDataTypeable #-}+{-# LANGUAGE DeriveGeneric      #-}+{-# LANGUAGE FlexibleInstances  #-}+{-# LANGUAGE NoImplicitPrelude  #-}+{-# LANGUAGE OverloadedStrings  #-}+{-# LANGUAGE RecordWildCards    #-}+{-# LANGUAGE TypeFamilies       #-}+{-# LANGUAGE TypeOperators      #-}++{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}++-- |+-- Module      : Network.Google.Resource.Sheets.Spreadsheets.DeveloperMetadata.Search+-- Copyright   : (c) 2015-2016 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Returns all developer metadata matching the specified DataFilter. If the+-- provided DataFilter represents a DeveloperMetadataLookup object, this+-- will return all DeveloperMetadata entries selected by it. If the+-- DataFilter represents a location in a spreadsheet, this will return all+-- developer metadata associated with locations intersecting that region.+--+-- /See:/ <https://developers.google.com/sheets/ Google Sheets API Reference> for @sheets.spreadsheets.developerMetadata.search@.+module Network.Google.Resource.Sheets.Spreadsheets.DeveloperMetadata.Search+    (+    -- * REST Resource+      SpreadsheetsDeveloperMetadataSearchResource++    -- * Creating a Request+    , spreadsheetsDeveloperMetadataSearch+    , SpreadsheetsDeveloperMetadataSearch++    -- * Request Lenses+    , sdmsXgafv+    , sdmsUploadProtocol+    , sdmsAccessToken+    , sdmsSpreadsheetId+    , sdmsUploadType+    , sdmsPayload+    , sdmsCallback+    ) where++import           Network.Google.Prelude+import           Network.Google.Sheets.Types++-- | A resource alias for @sheets.spreadsheets.developerMetadata.search@ method which the+-- 'SpreadsheetsDeveloperMetadataSearch' request conforms to.+type SpreadsheetsDeveloperMetadataSearchResource =+     "v4" :>+       "spreadsheets" :>+         Capture "spreadsheetId" Text :>+           "developerMetadata:search" :>+             QueryParam "$.xgafv" Xgafv :>+               QueryParam "upload_protocol" Text :>+                 QueryParam "access_token" Text :>+                   QueryParam "uploadType" Text :>+                     QueryParam "callback" Text :>+                       QueryParam "alt" AltJSON :>+                         ReqBody '[JSON] SearchDeveloperMetadataRequest :>+                           Post '[JSON] SearchDeveloperMetadataResponse++-- | Returns all developer metadata matching the specified DataFilter. If the+-- provided DataFilter represents a DeveloperMetadataLookup object, this+-- will return all DeveloperMetadata entries selected by it. If the+-- DataFilter represents a location in a spreadsheet, this will return all+-- developer metadata associated with locations intersecting that region.+--+-- /See:/ 'spreadsheetsDeveloperMetadataSearch' smart constructor.+data SpreadsheetsDeveloperMetadataSearch = SpreadsheetsDeveloperMetadataSearch'+    { _sdmsXgafv          :: !(Maybe Xgafv)+    , _sdmsUploadProtocol :: !(Maybe Text)+    , _sdmsAccessToken    :: !(Maybe Text)+    , _sdmsSpreadsheetId  :: !Text+    , _sdmsUploadType     :: !(Maybe Text)+    , _sdmsPayload        :: !SearchDeveloperMetadataRequest+    , _sdmsCallback       :: !(Maybe Text)+    } 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:+--+-- * 'sdmsXgafv'+--+-- * 'sdmsUploadProtocol'+--+-- * 'sdmsAccessToken'+--+-- * 'sdmsSpreadsheetId'+--+-- * 'sdmsUploadType'+--+-- * 'sdmsPayload'+--+-- * 'sdmsCallback'+spreadsheetsDeveloperMetadataSearch+    :: Text -- ^ 'sdmsSpreadsheetId'+    -> SearchDeveloperMetadataRequest -- ^ 'sdmsPayload'+    -> SpreadsheetsDeveloperMetadataSearch+spreadsheetsDeveloperMetadataSearch pSdmsSpreadsheetId_ pSdmsPayload_ =+    SpreadsheetsDeveloperMetadataSearch'+    { _sdmsXgafv = Nothing+    , _sdmsUploadProtocol = Nothing+    , _sdmsAccessToken = Nothing+    , _sdmsSpreadsheetId = pSdmsSpreadsheetId_+    , _sdmsUploadType = Nothing+    , _sdmsPayload = pSdmsPayload_+    , _sdmsCallback = Nothing+    }++-- | V1 error format.+sdmsXgafv :: Lens' SpreadsheetsDeveloperMetadataSearch (Maybe Xgafv)+sdmsXgafv+  = lens _sdmsXgafv (\ s a -> s{_sdmsXgafv = a})++-- | Upload protocol for media (e.g. \"raw\", \"multipart\").+sdmsUploadProtocol :: Lens' SpreadsheetsDeveloperMetadataSearch (Maybe Text)+sdmsUploadProtocol+  = lens _sdmsUploadProtocol+      (\ s a -> s{_sdmsUploadProtocol = a})++-- | OAuth access token.+sdmsAccessToken :: Lens' SpreadsheetsDeveloperMetadataSearch (Maybe Text)+sdmsAccessToken+  = lens _sdmsAccessToken+      (\ s a -> s{_sdmsAccessToken = a})++-- | The ID of the spreadsheet to retrieve metadata from.+sdmsSpreadsheetId :: Lens' SpreadsheetsDeveloperMetadataSearch Text+sdmsSpreadsheetId+  = lens _sdmsSpreadsheetId+      (\ s a -> s{_sdmsSpreadsheetId = a})++-- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").+sdmsUploadType :: Lens' SpreadsheetsDeveloperMetadataSearch (Maybe Text)+sdmsUploadType+  = lens _sdmsUploadType+      (\ s a -> s{_sdmsUploadType = a})++-- | Multipart request metadata.+sdmsPayload :: Lens' SpreadsheetsDeveloperMetadataSearch SearchDeveloperMetadataRequest+sdmsPayload+  = lens _sdmsPayload (\ s a -> s{_sdmsPayload = a})++-- | JSONP+sdmsCallback :: Lens' SpreadsheetsDeveloperMetadataSearch (Maybe Text)+sdmsCallback+  = lens _sdmsCallback (\ s a -> s{_sdmsCallback = a})++instance GoogleRequest+         SpreadsheetsDeveloperMetadataSearch where+        type Rs SpreadsheetsDeveloperMetadataSearch =+             SearchDeveloperMetadataResponse+        type Scopes SpreadsheetsDeveloperMetadataSearch =+             '["https://www.googleapis.com/auth/drive",+               "https://www.googleapis.com/auth/drive.file",+               "https://www.googleapis.com/auth/spreadsheets"]+        requestClient+          SpreadsheetsDeveloperMetadataSearch'{..}+          = go _sdmsSpreadsheetId _sdmsXgafv+              _sdmsUploadProtocol+              _sdmsAccessToken+              _sdmsUploadType+              _sdmsCallback+              (Just AltJSON)+              _sdmsPayload+              sheetsService+          where go+                  = buildClient+                      (Proxy ::+                         Proxy SpreadsheetsDeveloperMetadataSearchResource)+                      mempty
gen/Network/Google/Resource/Sheets/Spreadsheets/Get.hs view
@@ -45,13 +45,11 @@     -- * Request Lenses     , sgXgafv     , sgUploadProtocol-    , sgPp     , sgAccessToken     , sgSpreadsheetId     , sgUploadType     , sgRanges     , sgIncludeGridData-    , sgBearerToken     , sgCallback     ) where @@ -66,14 +64,12 @@          Capture "spreadsheetId" Text :>            QueryParam "$.xgafv" Xgafv :>              QueryParam "upload_protocol" Text :>-               QueryParam "pp" Bool :>-                 QueryParam "access_token" Text :>-                   QueryParam "uploadType" Text :>-                     QueryParams "ranges" Text :>-                       QueryParam "includeGridData" Bool :>-                         QueryParam "bearer_token" Text :>-                           QueryParam "callback" Text :>-                             QueryParam "alt" AltJSON :> Get '[JSON] Spreadsheet+               QueryParam "access_token" Text :>+                 QueryParam "uploadType" Text :>+                   QueryParams "ranges" Text :>+                     QueryParam "includeGridData" Bool :>+                       QueryParam "callback" Text :>+                         QueryParam "alt" AltJSON :> Get '[JSON] Spreadsheet  -- | Returns the spreadsheet at the given ID. The caller must specify the -- spreadsheet ID. By default, data within grids will not be returned. You@@ -91,13 +87,11 @@ data SpreadsheetsGet = SpreadsheetsGet'     { _sgXgafv           :: !(Maybe Xgafv)     , _sgUploadProtocol  :: !(Maybe Text)-    , _sgPp              :: !Bool     , _sgAccessToken     :: !(Maybe Text)     , _sgSpreadsheetId   :: !Text     , _sgUploadType      :: !(Maybe Text)     , _sgRanges          :: !(Maybe [Text])     , _sgIncludeGridData :: !(Maybe Bool)-    , _sgBearerToken     :: !(Maybe Text)     , _sgCallback        :: !(Maybe Text)     } deriving (Eq,Show,Data,Typeable,Generic) @@ -109,8 +103,6 @@ -- -- * 'sgUploadProtocol' ----- * 'sgPp'--- -- * 'sgAccessToken' -- -- * 'sgSpreadsheetId'@@ -121,8 +113,6 @@ -- -- * 'sgIncludeGridData' ----- * 'sgBearerToken'--- -- * 'sgCallback' spreadsheetsGet     :: Text -- ^ 'sgSpreadsheetId'@@ -131,13 +121,11 @@     SpreadsheetsGet'     { _sgXgafv = Nothing     , _sgUploadProtocol = Nothing-    , _sgPp = True     , _sgAccessToken = Nothing     , _sgSpreadsheetId = pSgSpreadsheetId_     , _sgUploadType = Nothing     , _sgRanges = Nothing     , _sgIncludeGridData = Nothing-    , _sgBearerToken = Nothing     , _sgCallback = Nothing     } @@ -151,10 +139,6 @@   = lens _sgUploadProtocol       (\ s a -> s{_sgUploadProtocol = a}) --- | Pretty-print response.-sgPp :: Lens' SpreadsheetsGet Bool-sgPp = lens _sgPp (\ s a -> s{_sgPp = a})- -- | OAuth access token. sgAccessToken :: Lens' SpreadsheetsGet (Maybe Text) sgAccessToken@@ -186,12 +170,6 @@   = lens _sgIncludeGridData       (\ s a -> s{_sgIncludeGridData = a}) --- | OAuth bearer token.-sgBearerToken :: Lens' SpreadsheetsGet (Maybe Text)-sgBearerToken-  = lens _sgBearerToken-      (\ s a -> s{_sgBearerToken = a})- -- | JSONP sgCallback :: Lens' SpreadsheetsGet (Maybe Text) sgCallback@@ -201,17 +179,16 @@         type Rs SpreadsheetsGet = Spreadsheet         type Scopes SpreadsheetsGet =              '["https://www.googleapis.com/auth/drive",+               "https://www.googleapis.com/auth/drive.file",                "https://www.googleapis.com/auth/drive.readonly",                "https://www.googleapis.com/auth/spreadsheets",                "https://www.googleapis.com/auth/spreadsheets.readonly"]         requestClient SpreadsheetsGet'{..}           = go _sgSpreadsheetId _sgXgafv _sgUploadProtocol-              (Just _sgPp)               _sgAccessToken               _sgUploadType               (_sgRanges ^. _Default)               _sgIncludeGridData-              _sgBearerToken               _sgCallback               (Just AltJSON)               sheetsService
+ gen/Network/Google/Resource/Sheets/Spreadsheets/GetByDataFilter.hs view
@@ -0,0 +1,189 @@+{-# LANGUAGE DataKinds          #-}+{-# LANGUAGE DeriveDataTypeable #-}+{-# LANGUAGE DeriveGeneric      #-}+{-# LANGUAGE FlexibleInstances  #-}+{-# LANGUAGE NoImplicitPrelude  #-}+{-# LANGUAGE OverloadedStrings  #-}+{-# LANGUAGE RecordWildCards    #-}+{-# LANGUAGE TypeFamilies       #-}+{-# LANGUAGE TypeOperators      #-}++{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}++-- |+-- Module      : Network.Google.Resource.Sheets.Spreadsheets.GetByDataFilter+-- Copyright   : (c) 2015-2016 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Returns the spreadsheet at the given ID. The caller must specify the+-- spreadsheet ID. This method differs from GetSpreadsheet in that it+-- allows selecting which subsets of spreadsheet data to return by+-- specifying a dataFilters parameter. Multiple DataFilters can be+-- specified. Specifying one or more data filters will return the portions+-- of the spreadsheet that intersect ranges matched by any of the filters.+-- By default, data within grids will not be returned. You can include grid+-- data one of two ways: * Specify a field mask listing your desired fields+-- using the \`fields\` URL parameter in HTTP * Set the includeGridData+-- parameter to true. If a field mask is set, the \`includeGridData\`+-- parameter is ignored For large spreadsheets, it is recommended to+-- retrieve only the specific fields of the spreadsheet that you want.+--+-- /See:/ <https://developers.google.com/sheets/ Google Sheets API Reference> for @sheets.spreadsheets.getByDataFilter@.+module Network.Google.Resource.Sheets.Spreadsheets.GetByDataFilter+    (+    -- * REST Resource+      SpreadsheetsGetByDataFilterResource++    -- * Creating a Request+    , spreadsheetsGetByDataFilter+    , SpreadsheetsGetByDataFilter++    -- * Request Lenses+    , sgbdfXgafv+    , sgbdfUploadProtocol+    , sgbdfAccessToken+    , sgbdfSpreadsheetId+    , sgbdfUploadType+    , sgbdfPayload+    , sgbdfCallback+    ) where++import           Network.Google.Prelude+import           Network.Google.Sheets.Types++-- | A resource alias for @sheets.spreadsheets.getByDataFilter@ method which the+-- 'SpreadsheetsGetByDataFilter' request conforms to.+type SpreadsheetsGetByDataFilterResource =+     "v4" :>+       "spreadsheets" :>+         CaptureMode "spreadsheetId" "getByDataFilter" Text :>+           QueryParam "$.xgafv" Xgafv :>+             QueryParam "upload_protocol" Text :>+               QueryParam "access_token" Text :>+                 QueryParam "uploadType" Text :>+                   QueryParam "callback" Text :>+                     QueryParam "alt" AltJSON :>+                       ReqBody '[JSON] GetSpreadsheetByDataFilterRequest :>+                         Post '[JSON] Spreadsheet++-- | Returns the spreadsheet at the given ID. The caller must specify the+-- spreadsheet ID. This method differs from GetSpreadsheet in that it+-- allows selecting which subsets of spreadsheet data to return by+-- specifying a dataFilters parameter. Multiple DataFilters can be+-- specified. Specifying one or more data filters will return the portions+-- of the spreadsheet that intersect ranges matched by any of the filters.+-- By default, data within grids will not be returned. You can include grid+-- data one of two ways: * Specify a field mask listing your desired fields+-- using the \`fields\` URL parameter in HTTP * Set the includeGridData+-- parameter to true. If a field mask is set, the \`includeGridData\`+-- parameter is ignored For large spreadsheets, it is recommended to+-- retrieve only the specific fields of the spreadsheet that you want.+--+-- /See:/ 'spreadsheetsGetByDataFilter' smart constructor.+data SpreadsheetsGetByDataFilter = SpreadsheetsGetByDataFilter'+    { _sgbdfXgafv          :: !(Maybe Xgafv)+    , _sgbdfUploadProtocol :: !(Maybe Text)+    , _sgbdfAccessToken    :: !(Maybe Text)+    , _sgbdfSpreadsheetId  :: !Text+    , _sgbdfUploadType     :: !(Maybe Text)+    , _sgbdfPayload        :: !GetSpreadsheetByDataFilterRequest+    , _sgbdfCallback       :: !(Maybe Text)+    } 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:+--+-- * 'sgbdfXgafv'+--+-- * 'sgbdfUploadProtocol'+--+-- * 'sgbdfAccessToken'+--+-- * 'sgbdfSpreadsheetId'+--+-- * 'sgbdfUploadType'+--+-- * 'sgbdfPayload'+--+-- * 'sgbdfCallback'+spreadsheetsGetByDataFilter+    :: Text -- ^ 'sgbdfSpreadsheetId'+    -> GetSpreadsheetByDataFilterRequest -- ^ 'sgbdfPayload'+    -> SpreadsheetsGetByDataFilter+spreadsheetsGetByDataFilter pSgbdfSpreadsheetId_ pSgbdfPayload_ =+    SpreadsheetsGetByDataFilter'+    { _sgbdfXgafv = Nothing+    , _sgbdfUploadProtocol = Nothing+    , _sgbdfAccessToken = Nothing+    , _sgbdfSpreadsheetId = pSgbdfSpreadsheetId_+    , _sgbdfUploadType = Nothing+    , _sgbdfPayload = pSgbdfPayload_+    , _sgbdfCallback = Nothing+    }++-- | V1 error format.+sgbdfXgafv :: Lens' SpreadsheetsGetByDataFilter (Maybe Xgafv)+sgbdfXgafv+  = lens _sgbdfXgafv (\ s a -> s{_sgbdfXgafv = a})++-- | Upload protocol for media (e.g. \"raw\", \"multipart\").+sgbdfUploadProtocol :: Lens' SpreadsheetsGetByDataFilter (Maybe Text)+sgbdfUploadProtocol+  = lens _sgbdfUploadProtocol+      (\ s a -> s{_sgbdfUploadProtocol = a})++-- | OAuth access token.+sgbdfAccessToken :: Lens' SpreadsheetsGetByDataFilter (Maybe Text)+sgbdfAccessToken+  = lens _sgbdfAccessToken+      (\ s a -> s{_sgbdfAccessToken = a})++-- | The spreadsheet to request.+sgbdfSpreadsheetId :: Lens' SpreadsheetsGetByDataFilter Text+sgbdfSpreadsheetId+  = lens _sgbdfSpreadsheetId+      (\ s a -> s{_sgbdfSpreadsheetId = a})++-- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").+sgbdfUploadType :: Lens' SpreadsheetsGetByDataFilter (Maybe Text)+sgbdfUploadType+  = lens _sgbdfUploadType+      (\ s a -> s{_sgbdfUploadType = a})++-- | Multipart request metadata.+sgbdfPayload :: Lens' SpreadsheetsGetByDataFilter GetSpreadsheetByDataFilterRequest+sgbdfPayload+  = lens _sgbdfPayload (\ s a -> s{_sgbdfPayload = a})++-- | JSONP+sgbdfCallback :: Lens' SpreadsheetsGetByDataFilter (Maybe Text)+sgbdfCallback+  = lens _sgbdfCallback+      (\ s a -> s{_sgbdfCallback = a})++instance GoogleRequest SpreadsheetsGetByDataFilter+         where+        type Rs SpreadsheetsGetByDataFilter = Spreadsheet+        type Scopes SpreadsheetsGetByDataFilter =+             '["https://www.googleapis.com/auth/drive",+               "https://www.googleapis.com/auth/drive.file",+               "https://www.googleapis.com/auth/spreadsheets"]+        requestClient SpreadsheetsGetByDataFilter'{..}+          = go _sgbdfSpreadsheetId _sgbdfXgafv+              _sgbdfUploadProtocol+              _sgbdfAccessToken+              _sgbdfUploadType+              _sgbdfCallback+              (Just AltJSON)+              _sgbdfPayload+              sheetsService+          where go+                  = buildClient+                      (Proxy :: Proxy SpreadsheetsGetByDataFilterResource)+                      mempty
gen/Network/Google/Resource/Sheets/Spreadsheets/Sheets/CopyTo.hs view
@@ -36,12 +36,10 @@     -- * Request Lenses     , ssctXgafv     , ssctUploadProtocol-    , ssctPp     , ssctAccessToken     , ssctSpreadsheetId     , ssctUploadType     , ssctPayload-    , ssctBearerToken     , ssctSheetId     , ssctCallback     ) where@@ -59,15 +57,12 @@              CaptureMode "sheetId" "copyTo" (Textual Int32) :>                QueryParam "$.xgafv" Xgafv :>                  QueryParam "upload_protocol" Text :>-                   QueryParam "pp" Bool :>-                     QueryParam "access_token" Text :>-                       QueryParam "uploadType" Text :>-                         QueryParam "bearer_token" Text :>-                           QueryParam "callback" Text :>-                             QueryParam "alt" AltJSON :>-                               ReqBody '[JSON]-                                 CopySheetToAnotherSpreadsheetRequest-                                 :> Post '[JSON] SheetProperties+                   QueryParam "access_token" Text :>+                     QueryParam "uploadType" Text :>+                       QueryParam "callback" Text :>+                         QueryParam "alt" AltJSON :>+                           ReqBody '[JSON] CopySheetToAnotherSpreadsheetRequest+                             :> Post '[JSON] SheetProperties  -- | Copies a single sheet from a spreadsheet to another spreadsheet. Returns -- the properties of the newly created sheet.@@ -76,12 +71,10 @@ data SpreadsheetsSheetsCopyTo = SpreadsheetsSheetsCopyTo'     { _ssctXgafv          :: !(Maybe Xgafv)     , _ssctUploadProtocol :: !(Maybe Text)-    , _ssctPp             :: !Bool     , _ssctAccessToken    :: !(Maybe Text)     , _ssctSpreadsheetId  :: !Text     , _ssctUploadType     :: !(Maybe Text)     , _ssctPayload        :: !CopySheetToAnotherSpreadsheetRequest-    , _ssctBearerToken    :: !(Maybe Text)     , _ssctSheetId        :: !(Textual Int32)     , _ssctCallback       :: !(Maybe Text)     } deriving (Eq,Show,Data,Typeable,Generic)@@ -94,8 +87,6 @@ -- -- * 'ssctUploadProtocol' ----- * 'ssctPp'--- -- * 'ssctAccessToken' -- -- * 'ssctSpreadsheetId'@@ -104,8 +95,6 @@ -- -- * 'ssctPayload' ----- * 'ssctBearerToken'--- -- * 'ssctSheetId' -- -- * 'ssctCallback'@@ -118,12 +107,10 @@     SpreadsheetsSheetsCopyTo'     { _ssctXgafv = Nothing     , _ssctUploadProtocol = Nothing-    , _ssctPp = True     , _ssctAccessToken = Nothing     , _ssctSpreadsheetId = pSsctSpreadsheetId_     , _ssctUploadType = Nothing     , _ssctPayload = pSsctPayload_-    , _ssctBearerToken = Nothing     , _ssctSheetId = _Coerce # pSsctSheetId_     , _ssctCallback = Nothing     }@@ -139,10 +126,6 @@   = lens _ssctUploadProtocol       (\ s a -> s{_ssctUploadProtocol = a}) --- | Pretty-print response.-ssctPp :: Lens' SpreadsheetsSheetsCopyTo Bool-ssctPp = lens _ssctPp (\ s a -> s{_ssctPp = a})- -- | OAuth access token. ssctAccessToken :: Lens' SpreadsheetsSheetsCopyTo (Maybe Text) ssctAccessToken@@ -166,12 +149,6 @@ ssctPayload   = lens _ssctPayload (\ s a -> s{_ssctPayload = a}) --- | OAuth bearer token.-ssctBearerToken :: Lens' SpreadsheetsSheetsCopyTo (Maybe Text)-ssctBearerToken-  = lens _ssctBearerToken-      (\ s a -> s{_ssctBearerToken = a})- -- | The ID of the sheet to copy. ssctSheetId :: Lens' SpreadsheetsSheetsCopyTo Int32 ssctSheetId@@ -187,14 +164,13 @@         type Rs SpreadsheetsSheetsCopyTo = SheetProperties         type Scopes SpreadsheetsSheetsCopyTo =              '["https://www.googleapis.com/auth/drive",+               "https://www.googleapis.com/auth/drive.file",                "https://www.googleapis.com/auth/spreadsheets"]         requestClient SpreadsheetsSheetsCopyTo'{..}           = go _ssctSpreadsheetId _ssctSheetId _ssctXgafv               _ssctUploadProtocol-              (Just _ssctPp)               _ssctAccessToken               _ssctUploadType-              _ssctBearerToken               _ssctCallback               (Just AltJSON)               _ssctPayload
gen/Network/Google/Resource/Sheets/Spreadsheets/Values/Append.hs view
@@ -23,8 +23,9 @@ -- Appends values to a spreadsheet. The input range is used to search for -- existing data and find a \"table\" within that range. Values will be -- appended to the next row of the table, starting with the first column of--- the table. See the [guide](\/sheets\/guides\/values#appending_values)--- and [sample code](\/sheets\/samples\/writing#append_values) for specific+-- the table. See the+-- [guide](\/sheets\/api\/guides\/values#appending_values) and [sample+-- code](\/sheets\/api\/samples\/writing#append_values) for specific -- details of how tables are detected and data is appended. The caller must -- specify the spreadsheet ID, range, and a valueInputOption. The -- \`valueInputOption\` only controls how the input data will be added to@@ -44,14 +45,12 @@     -- * Request Lenses     , svaXgafv     , svaUploadProtocol-    , svaPp     , svaAccessToken     , svaSpreadsheetId     , svaUploadType     , svaValueInputOption     , svaPayload     , svaInsertDataOption-    , svaBearerToken     , svaRange     , svaIncludeValuesInResponse     , svaResponseDateTimeRenderOption@@ -72,27 +71,24 @@              CaptureMode "range" "append" Text :>                QueryParam "$.xgafv" Xgafv :>                  QueryParam "upload_protocol" Text :>-                   QueryParam "pp" Bool :>-                     QueryParam "access_token" Text :>-                       QueryParam "uploadType" Text :>-                         QueryParam "valueInputOption" Text :>-                           QueryParam "insertDataOption" Text :>-                             QueryParam "bearer_token" Text :>-                               QueryParam "includeValuesInResponse" Bool :>-                                 QueryParam "responseDateTimeRenderOption" Text-                                   :>-                                   QueryParam "callback" Text :>-                                     QueryParam "responseValueRenderOption" Text-                                       :>-                                       QueryParam "alt" AltJSON :>-                                         ReqBody '[JSON] ValueRange :>-                                           Post '[JSON] AppendValuesResponse+                   QueryParam "access_token" Text :>+                     QueryParam "uploadType" Text :>+                       QueryParam "valueInputOption" Text :>+                         QueryParam "insertDataOption" Text :>+                           QueryParam "includeValuesInResponse" Bool :>+                             QueryParam "responseDateTimeRenderOption" Text :>+                               QueryParam "callback" Text :>+                                 QueryParam "responseValueRenderOption" Text :>+                                   QueryParam "alt" AltJSON :>+                                     ReqBody '[JSON] ValueRange :>+                                       Post '[JSON] AppendValuesResponse  -- | Appends values to a spreadsheet. The input range is used to search for -- existing data and find a \"table\" within that range. Values will be -- appended to the next row of the table, starting with the first column of--- the table. See the [guide](\/sheets\/guides\/values#appending_values)--- and [sample code](\/sheets\/samples\/writing#append_values) for specific+-- the table. See the+-- [guide](\/sheets\/api\/guides\/values#appending_values) and [sample+-- code](\/sheets\/api\/samples\/writing#append_values) for specific -- details of how tables are detected and data is appended. The caller must -- specify the spreadsheet ID, range, and a valueInputOption. The -- \`valueInputOption\` only controls how the input data will be added to@@ -103,14 +99,12 @@ data SpreadsheetsValuesAppend = SpreadsheetsValuesAppend'     { _svaXgafv                        :: !(Maybe Xgafv)     , _svaUploadProtocol               :: !(Maybe Text)-    , _svaPp                           :: !Bool     , _svaAccessToken                  :: !(Maybe Text)     , _svaSpreadsheetId                :: !Text     , _svaUploadType                   :: !(Maybe Text)     , _svaValueInputOption             :: !(Maybe Text)     , _svaPayload                      :: !ValueRange     , _svaInsertDataOption             :: !(Maybe Text)-    , _svaBearerToken                  :: !(Maybe Text)     , _svaRange                        :: !Text     , _svaIncludeValuesInResponse      :: !(Maybe Bool)     , _svaResponseDateTimeRenderOption :: !(Maybe Text)@@ -126,8 +120,6 @@ -- -- * 'svaUploadProtocol' ----- * 'svaPp'--- -- * 'svaAccessToken' -- -- * 'svaSpreadsheetId'@@ -140,8 +132,6 @@ -- -- * 'svaInsertDataOption' ----- * 'svaBearerToken'--- -- * 'svaRange' -- -- * 'svaIncludeValuesInResponse'@@ -160,14 +150,12 @@     SpreadsheetsValuesAppend'     { _svaXgafv = Nothing     , _svaUploadProtocol = Nothing-    , _svaPp = True     , _svaAccessToken = Nothing     , _svaSpreadsheetId = pSvaSpreadsheetId_     , _svaUploadType = Nothing     , _svaValueInputOption = Nothing     , _svaPayload = pSvaPayload_     , _svaInsertDataOption = Nothing-    , _svaBearerToken = Nothing     , _svaRange = pSvaRange_     , _svaIncludeValuesInResponse = Nothing     , _svaResponseDateTimeRenderOption = Nothing@@ -185,10 +173,6 @@   = lens _svaUploadProtocol       (\ s a -> s{_svaUploadProtocol = a}) --- | Pretty-print response.-svaPp :: Lens' SpreadsheetsValuesAppend Bool-svaPp = lens _svaPp (\ s a -> s{_svaPp = a})- -- | OAuth access token. svaAccessToken :: Lens' SpreadsheetsValuesAppend (Maybe Text) svaAccessToken@@ -224,12 +208,6 @@   = lens _svaInsertDataOption       (\ s a -> s{_svaInsertDataOption = a}) --- | OAuth bearer token.-svaBearerToken :: Lens' SpreadsheetsValuesAppend (Maybe Text)-svaBearerToken-  = lens _svaBearerToken-      (\ s a -> s{_svaBearerToken = a})- -- | The A1 notation of a range to search for a logical table of data. Values -- will be appended after the last row of the table. svaRange :: Lens' SpreadsheetsValuesAppend Text@@ -269,16 +247,15 @@              AppendValuesResponse         type Scopes SpreadsheetsValuesAppend =              '["https://www.googleapis.com/auth/drive",+               "https://www.googleapis.com/auth/drive.file",                "https://www.googleapis.com/auth/spreadsheets"]         requestClient SpreadsheetsValuesAppend'{..}           = go _svaSpreadsheetId _svaRange _svaXgafv               _svaUploadProtocol-              (Just _svaPp)               _svaAccessToken               _svaUploadType               _svaValueInputOption               _svaInsertDataOption-              _svaBearerToken               _svaIncludeValuesInResponse               _svaResponseDateTimeRenderOption               _svaCallback
gen/Network/Google/Resource/Sheets/Spreadsheets/Values/BatchClear.hs view
@@ -38,12 +38,10 @@     -- * Request Lenses     , svbcXgafv     , svbcUploadProtocol-    , svbcPp     , svbcAccessToken     , svbcSpreadsheetId     , svbcUploadType     , svbcPayload-    , svbcBearerToken     , svbcCallback     ) where @@ -59,14 +57,12 @@            "values:batchClear" :>              QueryParam "$.xgafv" Xgafv :>                QueryParam "upload_protocol" Text :>-                 QueryParam "pp" Bool :>-                   QueryParam "access_token" Text :>-                     QueryParam "uploadType" Text :>-                       QueryParam "bearer_token" Text :>-                         QueryParam "callback" Text :>-                           QueryParam "alt" AltJSON :>-                             ReqBody '[JSON] BatchClearValuesRequest :>-                               Post '[JSON] BatchClearValuesResponse+                 QueryParam "access_token" Text :>+                   QueryParam "uploadType" Text :>+                     QueryParam "callback" Text :>+                       QueryParam "alt" AltJSON :>+                         ReqBody '[JSON] BatchClearValuesRequest :>+                           Post '[JSON] BatchClearValuesResponse  -- | Clears one or more ranges of values from a spreadsheet. The caller must -- specify the spreadsheet ID and one or more ranges. Only values are@@ -77,12 +73,10 @@ data SpreadsheetsValuesBatchClear = SpreadsheetsValuesBatchClear'     { _svbcXgafv          :: !(Maybe Xgafv)     , _svbcUploadProtocol :: !(Maybe Text)-    , _svbcPp             :: !Bool     , _svbcAccessToken    :: !(Maybe Text)     , _svbcSpreadsheetId  :: !Text     , _svbcUploadType     :: !(Maybe Text)     , _svbcPayload        :: !BatchClearValuesRequest-    , _svbcBearerToken    :: !(Maybe Text)     , _svbcCallback       :: !(Maybe Text)     } deriving (Eq,Show,Data,Typeable,Generic) @@ -94,8 +88,6 @@ -- -- * 'svbcUploadProtocol' ----- * 'svbcPp'--- -- * 'svbcAccessToken' -- -- * 'svbcSpreadsheetId'@@ -104,8 +96,6 @@ -- -- * 'svbcPayload' ----- * 'svbcBearerToken'--- -- * 'svbcCallback' spreadsheetsValuesBatchClear     :: Text -- ^ 'svbcSpreadsheetId'@@ -115,12 +105,10 @@     SpreadsheetsValuesBatchClear'     { _svbcXgafv = Nothing     , _svbcUploadProtocol = Nothing-    , _svbcPp = True     , _svbcAccessToken = Nothing     , _svbcSpreadsheetId = pSvbcSpreadsheetId_     , _svbcUploadType = Nothing     , _svbcPayload = pSvbcPayload_-    , _svbcBearerToken = Nothing     , _svbcCallback = Nothing     } @@ -135,10 +123,6 @@   = lens _svbcUploadProtocol       (\ s a -> s{_svbcUploadProtocol = a}) --- | Pretty-print response.-svbcPp :: Lens' SpreadsheetsValuesBatchClear Bool-svbcPp = lens _svbcPp (\ s a -> s{_svbcPp = a})- -- | OAuth access token. svbcAccessToken :: Lens' SpreadsheetsValuesBatchClear (Maybe Text) svbcAccessToken@@ -162,12 +146,6 @@ svbcPayload   = lens _svbcPayload (\ s a -> s{_svbcPayload = a}) --- | OAuth bearer token.-svbcBearerToken :: Lens' SpreadsheetsValuesBatchClear (Maybe Text)-svbcBearerToken-  = lens _svbcBearerToken-      (\ s a -> s{_svbcBearerToken = a})- -- | JSONP svbcCallback :: Lens' SpreadsheetsValuesBatchClear (Maybe Text) svbcCallback@@ -179,14 +157,13 @@              BatchClearValuesResponse         type Scopes SpreadsheetsValuesBatchClear =              '["https://www.googleapis.com/auth/drive",+               "https://www.googleapis.com/auth/drive.file",                "https://www.googleapis.com/auth/spreadsheets"]         requestClient SpreadsheetsValuesBatchClear'{..}           = go _svbcSpreadsheetId _svbcXgafv               _svbcUploadProtocol-              (Just _svbcPp)               _svbcAccessToken               _svbcUploadType-              _svbcBearerToken               _svbcCallback               (Just AltJSON)               _svbcPayload
+ gen/Network/Google/Resource/Sheets/Spreadsheets/Values/BatchClearByDataFilter.hs view
@@ -0,0 +1,183 @@+{-# LANGUAGE DataKinds          #-}+{-# LANGUAGE DeriveDataTypeable #-}+{-# LANGUAGE DeriveGeneric      #-}+{-# LANGUAGE FlexibleInstances  #-}+{-# LANGUAGE NoImplicitPrelude  #-}+{-# LANGUAGE OverloadedStrings  #-}+{-# LANGUAGE RecordWildCards    #-}+{-# LANGUAGE TypeFamilies       #-}+{-# LANGUAGE TypeOperators      #-}++{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}++-- |+-- Module      : Network.Google.Resource.Sheets.Spreadsheets.Values.BatchClearByDataFilter+-- Copyright   : (c) 2015-2016 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Clears one or more ranges of values from a spreadsheet. The caller must+-- specify the spreadsheet ID and one or more DataFilters. Ranges matching+-- any of the specified data filters will be cleared. Only values are+-- cleared -- all other properties of the cell (such as formatting, data+-- validation, etc..) are kept.+--+-- /See:/ <https://developers.google.com/sheets/ Google Sheets API Reference> for @sheets.spreadsheets.values.batchClearByDataFilter@.+module Network.Google.Resource.Sheets.Spreadsheets.Values.BatchClearByDataFilter+    (+    -- * REST Resource+      SpreadsheetsValuesBatchClearByDataFilterResource++    -- * Creating a Request+    , spreadsheetsValuesBatchClearByDataFilter+    , SpreadsheetsValuesBatchClearByDataFilter++    -- * Request Lenses+    , svbcbdfXgafv+    , svbcbdfUploadProtocol+    , svbcbdfAccessToken+    , svbcbdfSpreadsheetId+    , svbcbdfUploadType+    , svbcbdfPayload+    , svbcbdfCallback+    ) where++import           Network.Google.Prelude+import           Network.Google.Sheets.Types++-- | A resource alias for @sheets.spreadsheets.values.batchClearByDataFilter@ method which the+-- 'SpreadsheetsValuesBatchClearByDataFilter' request conforms to.+type SpreadsheetsValuesBatchClearByDataFilterResource+     =+     "v4" :>+       "spreadsheets" :>+         Capture "spreadsheetId" Text :>+           "values:batchClearByDataFilter" :>+             QueryParam "$.xgafv" Xgafv :>+               QueryParam "upload_protocol" Text :>+                 QueryParam "access_token" Text :>+                   QueryParam "uploadType" Text :>+                     QueryParam "callback" Text :>+                       QueryParam "alt" AltJSON :>+                         ReqBody '[JSON] BatchClearValuesByDataFilterRequest+                           :> Post '[JSON] BatchClearValuesByDataFilterResponse++-- | Clears one or more ranges of values from a spreadsheet. The caller must+-- specify the spreadsheet ID and one or more DataFilters. Ranges matching+-- any of the specified data filters will be cleared. Only values are+-- cleared -- all other properties of the cell (such as formatting, data+-- validation, etc..) are kept.+--+-- /See:/ 'spreadsheetsValuesBatchClearByDataFilter' smart constructor.+data SpreadsheetsValuesBatchClearByDataFilter = SpreadsheetsValuesBatchClearByDataFilter'+    { _svbcbdfXgafv          :: !(Maybe Xgafv)+    , _svbcbdfUploadProtocol :: !(Maybe Text)+    , _svbcbdfAccessToken    :: !(Maybe Text)+    , _svbcbdfSpreadsheetId  :: !Text+    , _svbcbdfUploadType     :: !(Maybe Text)+    , _svbcbdfPayload        :: !BatchClearValuesByDataFilterRequest+    , _svbcbdfCallback       :: !(Maybe Text)+    } 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:+--+-- * 'svbcbdfXgafv'+--+-- * 'svbcbdfUploadProtocol'+--+-- * 'svbcbdfAccessToken'+--+-- * 'svbcbdfSpreadsheetId'+--+-- * 'svbcbdfUploadType'+--+-- * 'svbcbdfPayload'+--+-- * 'svbcbdfCallback'+spreadsheetsValuesBatchClearByDataFilter+    :: Text -- ^ 'svbcbdfSpreadsheetId'+    -> BatchClearValuesByDataFilterRequest -- ^ 'svbcbdfPayload'+    -> SpreadsheetsValuesBatchClearByDataFilter+spreadsheetsValuesBatchClearByDataFilter pSvbcbdfSpreadsheetId_ pSvbcbdfPayload_ =+    SpreadsheetsValuesBatchClearByDataFilter'+    { _svbcbdfXgafv = Nothing+    , _svbcbdfUploadProtocol = Nothing+    , _svbcbdfAccessToken = Nothing+    , _svbcbdfSpreadsheetId = pSvbcbdfSpreadsheetId_+    , _svbcbdfUploadType = Nothing+    , _svbcbdfPayload = pSvbcbdfPayload_+    , _svbcbdfCallback = Nothing+    }++-- | V1 error format.+svbcbdfXgafv :: Lens' SpreadsheetsValuesBatchClearByDataFilter (Maybe Xgafv)+svbcbdfXgafv+  = lens _svbcbdfXgafv (\ s a -> s{_svbcbdfXgafv = a})++-- | Upload protocol for media (e.g. \"raw\", \"multipart\").+svbcbdfUploadProtocol :: Lens' SpreadsheetsValuesBatchClearByDataFilter (Maybe Text)+svbcbdfUploadProtocol+  = lens _svbcbdfUploadProtocol+      (\ s a -> s{_svbcbdfUploadProtocol = a})++-- | OAuth access token.+svbcbdfAccessToken :: Lens' SpreadsheetsValuesBatchClearByDataFilter (Maybe Text)+svbcbdfAccessToken+  = lens _svbcbdfAccessToken+      (\ s a -> s{_svbcbdfAccessToken = a})++-- | The ID of the spreadsheet to update.+svbcbdfSpreadsheetId :: Lens' SpreadsheetsValuesBatchClearByDataFilter Text+svbcbdfSpreadsheetId+  = lens _svbcbdfSpreadsheetId+      (\ s a -> s{_svbcbdfSpreadsheetId = a})++-- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").+svbcbdfUploadType :: Lens' SpreadsheetsValuesBatchClearByDataFilter (Maybe Text)+svbcbdfUploadType+  = lens _svbcbdfUploadType+      (\ s a -> s{_svbcbdfUploadType = a})++-- | Multipart request metadata.+svbcbdfPayload :: Lens' SpreadsheetsValuesBatchClearByDataFilter BatchClearValuesByDataFilterRequest+svbcbdfPayload+  = lens _svbcbdfPayload+      (\ s a -> s{_svbcbdfPayload = a})++-- | JSONP+svbcbdfCallback :: Lens' SpreadsheetsValuesBatchClearByDataFilter (Maybe Text)+svbcbdfCallback+  = lens _svbcbdfCallback+      (\ s a -> s{_svbcbdfCallback = a})++instance GoogleRequest+         SpreadsheetsValuesBatchClearByDataFilter where+        type Rs SpreadsheetsValuesBatchClearByDataFilter =+             BatchClearValuesByDataFilterResponse+        type Scopes SpreadsheetsValuesBatchClearByDataFilter+             =+             '["https://www.googleapis.com/auth/drive",+               "https://www.googleapis.com/auth/drive.file",+               "https://www.googleapis.com/auth/spreadsheets"]+        requestClient+          SpreadsheetsValuesBatchClearByDataFilter'{..}+          = go _svbcbdfSpreadsheetId _svbcbdfXgafv+              _svbcbdfUploadProtocol+              _svbcbdfAccessToken+              _svbcbdfUploadType+              _svbcbdfCallback+              (Just AltJSON)+              _svbcbdfPayload+              sheetsService+          where go+                  = buildClient+                      (Proxy ::+                         Proxy+                           SpreadsheetsValuesBatchClearByDataFilterResource)+                      mempty
gen/Network/Google/Resource/Sheets/Spreadsheets/Values/BatchGet.hs view
@@ -37,12 +37,10 @@     , svbgXgafv     , svbgValueRenderOption     , svbgUploadProtocol-    , svbgPp     , svbgAccessToken     , svbgSpreadsheetId     , svbgUploadType     , svbgRanges-    , svbgBearerToken     , svbgDateTimeRenderOption     , svbgMajorDimension     , svbgCallback@@ -61,16 +59,14 @@              QueryParam "$.xgafv" Xgafv :>                QueryParam "valueRenderOption" Text :>                  QueryParam "upload_protocol" Text :>-                   QueryParam "pp" Bool :>-                     QueryParam "access_token" Text :>-                       QueryParam "uploadType" Text :>-                         QueryParams "ranges" Text :>-                           QueryParam "bearer_token" Text :>-                             QueryParam "dateTimeRenderOption" Text :>-                               QueryParam "majorDimension" Text :>-                                 QueryParam "callback" Text :>-                                   QueryParam "alt" AltJSON :>-                                     Get '[JSON] BatchGetValuesResponse+                   QueryParam "access_token" Text :>+                     QueryParam "uploadType" Text :>+                       QueryParams "ranges" Text :>+                         QueryParam "dateTimeRenderOption" Text :>+                           QueryParam "majorDimension" Text :>+                             QueryParam "callback" Text :>+                               QueryParam "alt" AltJSON :>+                                 Get '[JSON] BatchGetValuesResponse  -- | Returns one or more ranges of values from a spreadsheet. The caller must -- specify the spreadsheet ID and one or more ranges.@@ -80,12 +76,10 @@     { _svbgXgafv                :: !(Maybe Xgafv)     , _svbgValueRenderOption    :: !(Maybe Text)     , _svbgUploadProtocol       :: !(Maybe Text)-    , _svbgPp                   :: !Bool     , _svbgAccessToken          :: !(Maybe Text)     , _svbgSpreadsheetId        :: !Text     , _svbgUploadType           :: !(Maybe Text)     , _svbgRanges               :: !(Maybe [Text])-    , _svbgBearerToken          :: !(Maybe Text)     , _svbgDateTimeRenderOption :: !(Maybe Text)     , _svbgMajorDimension       :: !(Maybe Text)     , _svbgCallback             :: !(Maybe Text)@@ -101,8 +95,6 @@ -- -- * 'svbgUploadProtocol' ----- * 'svbgPp'--- -- * 'svbgAccessToken' -- -- * 'svbgSpreadsheetId'@@ -111,8 +103,6 @@ -- -- * 'svbgRanges' ----- * 'svbgBearerToken'--- -- * 'svbgDateTimeRenderOption' -- -- * 'svbgMajorDimension'@@ -126,12 +116,10 @@     { _svbgXgafv = Nothing     , _svbgValueRenderOption = Nothing     , _svbgUploadProtocol = Nothing-    , _svbgPp = True     , _svbgAccessToken = Nothing     , _svbgSpreadsheetId = pSvbgSpreadsheetId_     , _svbgUploadType = Nothing     , _svbgRanges = Nothing-    , _svbgBearerToken = Nothing     , _svbgDateTimeRenderOption = Nothing     , _svbgMajorDimension = Nothing     , _svbgCallback = Nothing@@ -155,10 +143,6 @@   = lens _svbgUploadProtocol       (\ s a -> s{_svbgUploadProtocol = a}) --- | Pretty-print response.-svbgPp :: Lens' SpreadsheetsValuesBatchGet Bool-svbgPp = lens _svbgPp (\ s a -> s{_svbgPp = a})- -- | OAuth access token. svbgAccessToken :: Lens' SpreadsheetsValuesBatchGet (Maybe Text) svbgAccessToken@@ -184,12 +168,6 @@       _Default       . _Coerce --- | OAuth bearer token.-svbgBearerToken :: Lens' SpreadsheetsValuesBatchGet (Maybe Text)-svbgBearerToken-  = lens _svbgBearerToken-      (\ s a -> s{_svbgBearerToken = a})- -- | How dates, times, and durations should be represented in the output. -- This is ignored if value_render_option is FORMATTED_VALUE. The default -- dateTime render option is [DateTimeRenderOption.SERIAL_NUMBER].@@ -219,6 +197,7 @@              BatchGetValuesResponse         type Scopes SpreadsheetsValuesBatchGet =              '["https://www.googleapis.com/auth/drive",+               "https://www.googleapis.com/auth/drive.file",                "https://www.googleapis.com/auth/drive.readonly",                "https://www.googleapis.com/auth/spreadsheets",                "https://www.googleapis.com/auth/spreadsheets.readonly"]@@ -226,11 +205,9 @@           = go _svbgSpreadsheetId _svbgXgafv               _svbgValueRenderOption               _svbgUploadProtocol-              (Just _svbgPp)               _svbgAccessToken               _svbgUploadType               (_svbgRanges ^. _Default)-              _svbgBearerToken               _svbgDateTimeRenderOption               _svbgMajorDimension               _svbgCallback
+ gen/Network/Google/Resource/Sheets/Spreadsheets/Values/BatchGetByDataFilter.hs view
@@ -0,0 +1,178 @@+{-# LANGUAGE DataKinds          #-}+{-# LANGUAGE DeriveDataTypeable #-}+{-# LANGUAGE DeriveGeneric      #-}+{-# LANGUAGE FlexibleInstances  #-}+{-# LANGUAGE NoImplicitPrelude  #-}+{-# LANGUAGE OverloadedStrings  #-}+{-# LANGUAGE RecordWildCards    #-}+{-# LANGUAGE TypeFamilies       #-}+{-# LANGUAGE TypeOperators      #-}++{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}++-- |+-- Module      : Network.Google.Resource.Sheets.Spreadsheets.Values.BatchGetByDataFilter+-- Copyright   : (c) 2015-2016 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Returns one or more ranges of values that match the specified data+-- filters. The caller must specify the spreadsheet ID and one or more+-- DataFilters. Ranges that match any of the data filters in the request+-- will be returned.+--+-- /See:/ <https://developers.google.com/sheets/ Google Sheets API Reference> for @sheets.spreadsheets.values.batchGetByDataFilter@.+module Network.Google.Resource.Sheets.Spreadsheets.Values.BatchGetByDataFilter+    (+    -- * REST Resource+      SpreadsheetsValuesBatchGetByDataFilterResource++    -- * Creating a Request+    , spreadsheetsValuesBatchGetByDataFilter+    , SpreadsheetsValuesBatchGetByDataFilter++    -- * Request Lenses+    , svbgbdfXgafv+    , svbgbdfUploadProtocol+    , svbgbdfAccessToken+    , svbgbdfSpreadsheetId+    , svbgbdfUploadType+    , svbgbdfPayload+    , svbgbdfCallback+    ) where++import           Network.Google.Prelude+import           Network.Google.Sheets.Types++-- | A resource alias for @sheets.spreadsheets.values.batchGetByDataFilter@ method which the+-- 'SpreadsheetsValuesBatchGetByDataFilter' request conforms to.+type SpreadsheetsValuesBatchGetByDataFilterResource =+     "v4" :>+       "spreadsheets" :>+         Capture "spreadsheetId" Text :>+           "values:batchGetByDataFilter" :>+             QueryParam "$.xgafv" Xgafv :>+               QueryParam "upload_protocol" Text :>+                 QueryParam "access_token" Text :>+                   QueryParam "uploadType" Text :>+                     QueryParam "callback" Text :>+                       QueryParam "alt" AltJSON :>+                         ReqBody '[JSON] BatchGetValuesByDataFilterRequest :>+                           Post '[JSON] BatchGetValuesByDataFilterResponse++-- | Returns one or more ranges of values that match the specified data+-- filters. The caller must specify the spreadsheet ID and one or more+-- DataFilters. Ranges that match any of the data filters in the request+-- will be returned.+--+-- /See:/ 'spreadsheetsValuesBatchGetByDataFilter' smart constructor.+data SpreadsheetsValuesBatchGetByDataFilter = SpreadsheetsValuesBatchGetByDataFilter'+    { _svbgbdfXgafv          :: !(Maybe Xgafv)+    , _svbgbdfUploadProtocol :: !(Maybe Text)+    , _svbgbdfAccessToken    :: !(Maybe Text)+    , _svbgbdfSpreadsheetId  :: !Text+    , _svbgbdfUploadType     :: !(Maybe Text)+    , _svbgbdfPayload        :: !BatchGetValuesByDataFilterRequest+    , _svbgbdfCallback       :: !(Maybe Text)+    } 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:+--+-- * 'svbgbdfXgafv'+--+-- * 'svbgbdfUploadProtocol'+--+-- * 'svbgbdfAccessToken'+--+-- * 'svbgbdfSpreadsheetId'+--+-- * 'svbgbdfUploadType'+--+-- * 'svbgbdfPayload'+--+-- * 'svbgbdfCallback'+spreadsheetsValuesBatchGetByDataFilter+    :: Text -- ^ 'svbgbdfSpreadsheetId'+    -> BatchGetValuesByDataFilterRequest -- ^ 'svbgbdfPayload'+    -> SpreadsheetsValuesBatchGetByDataFilter+spreadsheetsValuesBatchGetByDataFilter pSvbgbdfSpreadsheetId_ pSvbgbdfPayload_ =+    SpreadsheetsValuesBatchGetByDataFilter'+    { _svbgbdfXgafv = Nothing+    , _svbgbdfUploadProtocol = Nothing+    , _svbgbdfAccessToken = Nothing+    , _svbgbdfSpreadsheetId = pSvbgbdfSpreadsheetId_+    , _svbgbdfUploadType = Nothing+    , _svbgbdfPayload = pSvbgbdfPayload_+    , _svbgbdfCallback = Nothing+    }++-- | V1 error format.+svbgbdfXgafv :: Lens' SpreadsheetsValuesBatchGetByDataFilter (Maybe Xgafv)+svbgbdfXgafv+  = lens _svbgbdfXgafv (\ s a -> s{_svbgbdfXgafv = a})++-- | Upload protocol for media (e.g. \"raw\", \"multipart\").+svbgbdfUploadProtocol :: Lens' SpreadsheetsValuesBatchGetByDataFilter (Maybe Text)+svbgbdfUploadProtocol+  = lens _svbgbdfUploadProtocol+      (\ s a -> s{_svbgbdfUploadProtocol = a})++-- | OAuth access token.+svbgbdfAccessToken :: Lens' SpreadsheetsValuesBatchGetByDataFilter (Maybe Text)+svbgbdfAccessToken+  = lens _svbgbdfAccessToken+      (\ s a -> s{_svbgbdfAccessToken = a})++-- | The ID of the spreadsheet to retrieve data from.+svbgbdfSpreadsheetId :: Lens' SpreadsheetsValuesBatchGetByDataFilter Text+svbgbdfSpreadsheetId+  = lens _svbgbdfSpreadsheetId+      (\ s a -> s{_svbgbdfSpreadsheetId = a})++-- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").+svbgbdfUploadType :: Lens' SpreadsheetsValuesBatchGetByDataFilter (Maybe Text)+svbgbdfUploadType+  = lens _svbgbdfUploadType+      (\ s a -> s{_svbgbdfUploadType = a})++-- | Multipart request metadata.+svbgbdfPayload :: Lens' SpreadsheetsValuesBatchGetByDataFilter BatchGetValuesByDataFilterRequest+svbgbdfPayload+  = lens _svbgbdfPayload+      (\ s a -> s{_svbgbdfPayload = a})++-- | JSONP+svbgbdfCallback :: Lens' SpreadsheetsValuesBatchGetByDataFilter (Maybe Text)+svbgbdfCallback+  = lens _svbgbdfCallback+      (\ s a -> s{_svbgbdfCallback = a})++instance GoogleRequest+         SpreadsheetsValuesBatchGetByDataFilter where+        type Rs SpreadsheetsValuesBatchGetByDataFilter =+             BatchGetValuesByDataFilterResponse+        type Scopes SpreadsheetsValuesBatchGetByDataFilter =+             '["https://www.googleapis.com/auth/drive",+               "https://www.googleapis.com/auth/drive.file",+               "https://www.googleapis.com/auth/spreadsheets"]+        requestClient+          SpreadsheetsValuesBatchGetByDataFilter'{..}+          = go _svbgbdfSpreadsheetId _svbgbdfXgafv+              _svbgbdfUploadProtocol+              _svbgbdfAccessToken+              _svbgbdfUploadType+              _svbgbdfCallback+              (Just AltJSON)+              _svbgbdfPayload+              sheetsService+          where go+                  = buildClient+                      (Proxy ::+                         Proxy SpreadsheetsValuesBatchGetByDataFilterResource)+                      mempty
gen/Network/Google/Resource/Sheets/Spreadsheets/Values/BatchUpdate.hs view
@@ -37,12 +37,10 @@     -- * Request Lenses     , svbuXgafv     , svbuUploadProtocol-    , svbuPp     , svbuAccessToken     , svbuSpreadsheetId     , svbuUploadType     , svbuPayload-    , svbuBearerToken     , svbuCallback     ) where @@ -58,14 +56,12 @@            "values:batchUpdate" :>              QueryParam "$.xgafv" Xgafv :>                QueryParam "upload_protocol" Text :>-                 QueryParam "pp" Bool :>-                   QueryParam "access_token" Text :>-                     QueryParam "uploadType" Text :>-                       QueryParam "bearer_token" Text :>-                         QueryParam "callback" Text :>-                           QueryParam "alt" AltJSON :>-                             ReqBody '[JSON] BatchUpdateValuesRequest :>-                               Post '[JSON] BatchUpdateValuesResponse+                 QueryParam "access_token" Text :>+                   QueryParam "uploadType" Text :>+                     QueryParam "callback" Text :>+                       QueryParam "alt" AltJSON :>+                         ReqBody '[JSON] BatchUpdateValuesRequest :>+                           Post '[JSON] BatchUpdateValuesResponse  -- | Sets values in one or more ranges of a spreadsheet. The caller must -- specify the spreadsheet ID, a valueInputOption, and one or more@@ -75,12 +71,10 @@ data SpreadsheetsValuesBatchUpdate = SpreadsheetsValuesBatchUpdate'     { _svbuXgafv          :: !(Maybe Xgafv)     , _svbuUploadProtocol :: !(Maybe Text)-    , _svbuPp             :: !Bool     , _svbuAccessToken    :: !(Maybe Text)     , _svbuSpreadsheetId  :: !Text     , _svbuUploadType     :: !(Maybe Text)     , _svbuPayload        :: !BatchUpdateValuesRequest-    , _svbuBearerToken    :: !(Maybe Text)     , _svbuCallback       :: !(Maybe Text)     } deriving (Eq,Show,Data,Typeable,Generic) @@ -92,8 +86,6 @@ -- -- * 'svbuUploadProtocol' ----- * 'svbuPp'--- -- * 'svbuAccessToken' -- -- * 'svbuSpreadsheetId'@@ -102,8 +94,6 @@ -- -- * 'svbuPayload' ----- * 'svbuBearerToken'--- -- * 'svbuCallback' spreadsheetsValuesBatchUpdate     :: Text -- ^ 'svbuSpreadsheetId'@@ -113,12 +103,10 @@     SpreadsheetsValuesBatchUpdate'     { _svbuXgafv = Nothing     , _svbuUploadProtocol = Nothing-    , _svbuPp = True     , _svbuAccessToken = Nothing     , _svbuSpreadsheetId = pSvbuSpreadsheetId_     , _svbuUploadType = Nothing     , _svbuPayload = pSvbuPayload_-    , _svbuBearerToken = Nothing     , _svbuCallback = Nothing     } @@ -133,10 +121,6 @@   = lens _svbuUploadProtocol       (\ s a -> s{_svbuUploadProtocol = a}) --- | Pretty-print response.-svbuPp :: Lens' SpreadsheetsValuesBatchUpdate Bool-svbuPp = lens _svbuPp (\ s a -> s{_svbuPp = a})- -- | OAuth access token. svbuAccessToken :: Lens' SpreadsheetsValuesBatchUpdate (Maybe Text) svbuAccessToken@@ -160,12 +144,6 @@ svbuPayload   = lens _svbuPayload (\ s a -> s{_svbuPayload = a}) --- | OAuth bearer token.-svbuBearerToken :: Lens' SpreadsheetsValuesBatchUpdate (Maybe Text)-svbuBearerToken-  = lens _svbuBearerToken-      (\ s a -> s{_svbuBearerToken = a})- -- | JSONP svbuCallback :: Lens' SpreadsheetsValuesBatchUpdate (Maybe Text) svbuCallback@@ -177,14 +155,13 @@              BatchUpdateValuesResponse         type Scopes SpreadsheetsValuesBatchUpdate =              '["https://www.googleapis.com/auth/drive",+               "https://www.googleapis.com/auth/drive.file",                "https://www.googleapis.com/auth/spreadsheets"]         requestClient SpreadsheetsValuesBatchUpdate'{..}           = go _svbuSpreadsheetId _svbuXgafv               _svbuUploadProtocol-              (Just _svbuPp)               _svbuAccessToken               _svbuUploadType-              _svbuBearerToken               _svbuCallback               (Just AltJSON)               _svbuPayload
+ gen/Network/Google/Resource/Sheets/Spreadsheets/Values/BatchUpdateByDataFilter.hs view
@@ -0,0 +1,179 @@+{-# LANGUAGE DataKinds          #-}+{-# LANGUAGE DeriveDataTypeable #-}+{-# LANGUAGE DeriveGeneric      #-}+{-# LANGUAGE FlexibleInstances  #-}+{-# LANGUAGE NoImplicitPrelude  #-}+{-# LANGUAGE OverloadedStrings  #-}+{-# LANGUAGE RecordWildCards    #-}+{-# LANGUAGE TypeFamilies       #-}+{-# LANGUAGE TypeOperators      #-}++{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}++-- |+-- Module      : Network.Google.Resource.Sheets.Spreadsheets.Values.BatchUpdateByDataFilter+-- Copyright   : (c) 2015-2016 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Sets values in one or more ranges of a spreadsheet. The caller must+-- specify the spreadsheet ID, a valueInputOption, and one or more+-- DataFilterValueRanges.+--+-- /See:/ <https://developers.google.com/sheets/ Google Sheets API Reference> for @sheets.spreadsheets.values.batchUpdateByDataFilter@.+module Network.Google.Resource.Sheets.Spreadsheets.Values.BatchUpdateByDataFilter+    (+    -- * REST Resource+      SpreadsheetsValuesBatchUpdateByDataFilterResource++    -- * Creating a Request+    , spreadsheetsValuesBatchUpdateByDataFilter+    , SpreadsheetsValuesBatchUpdateByDataFilter++    -- * Request Lenses+    , svbubdfXgafv+    , svbubdfUploadProtocol+    , svbubdfAccessToken+    , svbubdfSpreadsheetId+    , svbubdfUploadType+    , svbubdfPayload+    , svbubdfCallback+    ) where++import           Network.Google.Prelude+import           Network.Google.Sheets.Types++-- | A resource alias for @sheets.spreadsheets.values.batchUpdateByDataFilter@ method which the+-- 'SpreadsheetsValuesBatchUpdateByDataFilter' request conforms to.+type SpreadsheetsValuesBatchUpdateByDataFilterResource+     =+     "v4" :>+       "spreadsheets" :>+         Capture "spreadsheetId" Text :>+           "values:batchUpdateByDataFilter" :>+             QueryParam "$.xgafv" Xgafv :>+               QueryParam "upload_protocol" Text :>+                 QueryParam "access_token" Text :>+                   QueryParam "uploadType" Text :>+                     QueryParam "callback" Text :>+                       QueryParam "alt" AltJSON :>+                         ReqBody '[JSON] BatchUpdateValuesByDataFilterRequest+                           :> Post '[JSON] BatchUpdateValuesByDataFilterResponse++-- | Sets values in one or more ranges of a spreadsheet. The caller must+-- specify the spreadsheet ID, a valueInputOption, and one or more+-- DataFilterValueRanges.+--+-- /See:/ 'spreadsheetsValuesBatchUpdateByDataFilter' smart constructor.+data SpreadsheetsValuesBatchUpdateByDataFilter = SpreadsheetsValuesBatchUpdateByDataFilter'+    { _svbubdfXgafv          :: !(Maybe Xgafv)+    , _svbubdfUploadProtocol :: !(Maybe Text)+    , _svbubdfAccessToken    :: !(Maybe Text)+    , _svbubdfSpreadsheetId  :: !Text+    , _svbubdfUploadType     :: !(Maybe Text)+    , _svbubdfPayload        :: !BatchUpdateValuesByDataFilterRequest+    , _svbubdfCallback       :: !(Maybe Text)+    } 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:+--+-- * 'svbubdfXgafv'+--+-- * 'svbubdfUploadProtocol'+--+-- * 'svbubdfAccessToken'+--+-- * 'svbubdfSpreadsheetId'+--+-- * 'svbubdfUploadType'+--+-- * 'svbubdfPayload'+--+-- * 'svbubdfCallback'+spreadsheetsValuesBatchUpdateByDataFilter+    :: Text -- ^ 'svbubdfSpreadsheetId'+    -> BatchUpdateValuesByDataFilterRequest -- ^ 'svbubdfPayload'+    -> SpreadsheetsValuesBatchUpdateByDataFilter+spreadsheetsValuesBatchUpdateByDataFilter pSvbubdfSpreadsheetId_ pSvbubdfPayload_ =+    SpreadsheetsValuesBatchUpdateByDataFilter'+    { _svbubdfXgafv = Nothing+    , _svbubdfUploadProtocol = Nothing+    , _svbubdfAccessToken = Nothing+    , _svbubdfSpreadsheetId = pSvbubdfSpreadsheetId_+    , _svbubdfUploadType = Nothing+    , _svbubdfPayload = pSvbubdfPayload_+    , _svbubdfCallback = Nothing+    }++-- | V1 error format.+svbubdfXgafv :: Lens' SpreadsheetsValuesBatchUpdateByDataFilter (Maybe Xgafv)+svbubdfXgafv+  = lens _svbubdfXgafv (\ s a -> s{_svbubdfXgafv = a})++-- | Upload protocol for media (e.g. \"raw\", \"multipart\").+svbubdfUploadProtocol :: Lens' SpreadsheetsValuesBatchUpdateByDataFilter (Maybe Text)+svbubdfUploadProtocol+  = lens _svbubdfUploadProtocol+      (\ s a -> s{_svbubdfUploadProtocol = a})++-- | OAuth access token.+svbubdfAccessToken :: Lens' SpreadsheetsValuesBatchUpdateByDataFilter (Maybe Text)+svbubdfAccessToken+  = lens _svbubdfAccessToken+      (\ s a -> s{_svbubdfAccessToken = a})++-- | The ID of the spreadsheet to update.+svbubdfSpreadsheetId :: Lens' SpreadsheetsValuesBatchUpdateByDataFilter Text+svbubdfSpreadsheetId+  = lens _svbubdfSpreadsheetId+      (\ s a -> s{_svbubdfSpreadsheetId = a})++-- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").+svbubdfUploadType :: Lens' SpreadsheetsValuesBatchUpdateByDataFilter (Maybe Text)+svbubdfUploadType+  = lens _svbubdfUploadType+      (\ s a -> s{_svbubdfUploadType = a})++-- | Multipart request metadata.+svbubdfPayload :: Lens' SpreadsheetsValuesBatchUpdateByDataFilter BatchUpdateValuesByDataFilterRequest+svbubdfPayload+  = lens _svbubdfPayload+      (\ s a -> s{_svbubdfPayload = a})++-- | JSONP+svbubdfCallback :: Lens' SpreadsheetsValuesBatchUpdateByDataFilter (Maybe Text)+svbubdfCallback+  = lens _svbubdfCallback+      (\ s a -> s{_svbubdfCallback = a})++instance GoogleRequest+         SpreadsheetsValuesBatchUpdateByDataFilter where+        type Rs SpreadsheetsValuesBatchUpdateByDataFilter =+             BatchUpdateValuesByDataFilterResponse+        type Scopes SpreadsheetsValuesBatchUpdateByDataFilter+             =+             '["https://www.googleapis.com/auth/drive",+               "https://www.googleapis.com/auth/drive.file",+               "https://www.googleapis.com/auth/spreadsheets"]+        requestClient+          SpreadsheetsValuesBatchUpdateByDataFilter'{..}+          = go _svbubdfSpreadsheetId _svbubdfXgafv+              _svbubdfUploadProtocol+              _svbubdfAccessToken+              _svbubdfUploadType+              _svbubdfCallback+              (Just AltJSON)+              _svbubdfPayload+              sheetsService+          where go+                  = buildClient+                      (Proxy ::+                         Proxy+                           SpreadsheetsValuesBatchUpdateByDataFilterResource)+                      mempty
gen/Network/Google/Resource/Sheets/Spreadsheets/Values/Clear.hs view
@@ -38,12 +38,10 @@     -- * Request Lenses     , svcXgafv     , svcUploadProtocol-    , svcPp     , svcAccessToken     , svcSpreadsheetId     , svcUploadType     , svcPayload-    , svcBearerToken     , svcRange     , svcCallback     ) where@@ -61,14 +59,12 @@              CaptureMode "range" "clear" Text :>                QueryParam "$.xgafv" Xgafv :>                  QueryParam "upload_protocol" Text :>-                   QueryParam "pp" Bool :>-                     QueryParam "access_token" Text :>-                       QueryParam "uploadType" Text :>-                         QueryParam "bearer_token" Text :>-                           QueryParam "callback" Text :>-                             QueryParam "alt" AltJSON :>-                               ReqBody '[JSON] ClearValuesRequest :>-                                 Post '[JSON] ClearValuesResponse+                   QueryParam "access_token" Text :>+                     QueryParam "uploadType" Text :>+                       QueryParam "callback" Text :>+                         QueryParam "alt" AltJSON :>+                           ReqBody '[JSON] ClearValuesRequest :>+                             Post '[JSON] ClearValuesResponse  -- | Clears values from a spreadsheet. The caller must specify the -- spreadsheet ID and range. Only values are cleared -- all other@@ -79,12 +75,10 @@ data SpreadsheetsValuesClear = SpreadsheetsValuesClear'     { _svcXgafv          :: !(Maybe Xgafv)     , _svcUploadProtocol :: !(Maybe Text)-    , _svcPp             :: !Bool     , _svcAccessToken    :: !(Maybe Text)     , _svcSpreadsheetId  :: !Text     , _svcUploadType     :: !(Maybe Text)     , _svcPayload        :: !ClearValuesRequest-    , _svcBearerToken    :: !(Maybe Text)     , _svcRange          :: !Text     , _svcCallback       :: !(Maybe Text)     } deriving (Eq,Show,Data,Typeable,Generic)@@ -97,8 +91,6 @@ -- -- * 'svcUploadProtocol' ----- * 'svcPp'--- -- * 'svcAccessToken' -- -- * 'svcSpreadsheetId'@@ -107,8 +99,6 @@ -- -- * 'svcPayload' ----- * 'svcBearerToken'--- -- * 'svcRange' -- -- * 'svcCallback'@@ -121,12 +111,10 @@     SpreadsheetsValuesClear'     { _svcXgafv = Nothing     , _svcUploadProtocol = Nothing-    , _svcPp = True     , _svcAccessToken = Nothing     , _svcSpreadsheetId = pSvcSpreadsheetId_     , _svcUploadType = Nothing     , _svcPayload = pSvcPayload_-    , _svcBearerToken = Nothing     , _svcRange = pSvcRange_     , _svcCallback = Nothing     }@@ -141,10 +129,6 @@   = lens _svcUploadProtocol       (\ s a -> s{_svcUploadProtocol = a}) --- | Pretty-print response.-svcPp :: Lens' SpreadsheetsValuesClear Bool-svcPp = lens _svcPp (\ s a -> s{_svcPp = a})- -- | OAuth access token. svcAccessToken :: Lens' SpreadsheetsValuesClear (Maybe Text) svcAccessToken@@ -168,12 +152,6 @@ svcPayload   = lens _svcPayload (\ s a -> s{_svcPayload = a}) --- | OAuth bearer token.-svcBearerToken :: Lens' SpreadsheetsValuesClear (Maybe Text)-svcBearerToken-  = lens _svcBearerToken-      (\ s a -> s{_svcBearerToken = a})- -- | The A1 notation of the values to clear. svcRange :: Lens' SpreadsheetsValuesClear Text svcRange = lens _svcRange (\ s a -> s{_svcRange = a})@@ -187,14 +165,13 @@         type Rs SpreadsheetsValuesClear = ClearValuesResponse         type Scopes SpreadsheetsValuesClear =              '["https://www.googleapis.com/auth/drive",+               "https://www.googleapis.com/auth/drive.file",                "https://www.googleapis.com/auth/spreadsheets"]         requestClient SpreadsheetsValuesClear'{..}           = go _svcSpreadsheetId _svcRange _svcXgafv               _svcUploadProtocol-              (Just _svcPp)               _svcAccessToken               _svcUploadType-              _svcBearerToken               _svcCallback               (Just AltJSON)               _svcPayload
gen/Network/Google/Resource/Sheets/Spreadsheets/Values/Get.hs view
@@ -37,11 +37,9 @@     , svgXgafv     , svgValueRenderOption     , svgUploadProtocol-    , svgPp     , svgAccessToken     , svgSpreadsheetId     , svgUploadType-    , svgBearerToken     , svgRange     , svgDateTimeRenderOption     , svgMajorDimension@@ -62,15 +60,13 @@                QueryParam "$.xgafv" Xgafv :>                  QueryParam "valueRenderOption" Text :>                    QueryParam "upload_protocol" Text :>-                     QueryParam "pp" Bool :>-                       QueryParam "access_token" Text :>-                         QueryParam "uploadType" Text :>-                           QueryParam "bearer_token" Text :>-                             QueryParam "dateTimeRenderOption" Text :>-                               QueryParam "majorDimension" Text :>-                                 QueryParam "callback" Text :>-                                   QueryParam "alt" AltJSON :>-                                     Get '[JSON] ValueRange+                     QueryParam "access_token" Text :>+                       QueryParam "uploadType" Text :>+                         QueryParam "dateTimeRenderOption" Text :>+                           QueryParam "majorDimension" Text :>+                             QueryParam "callback" Text :>+                               QueryParam "alt" AltJSON :>+                                 Get '[JSON] ValueRange  -- | Returns a range of values from a spreadsheet. The caller must specify -- the spreadsheet ID and a range.@@ -80,11 +76,9 @@     { _svgXgafv                :: !(Maybe Xgafv)     , _svgValueRenderOption    :: !(Maybe Text)     , _svgUploadProtocol       :: !(Maybe Text)-    , _svgPp                   :: !Bool     , _svgAccessToken          :: !(Maybe Text)     , _svgSpreadsheetId        :: !Text     , _svgUploadType           :: !(Maybe Text)-    , _svgBearerToken          :: !(Maybe Text)     , _svgRange                :: !Text     , _svgDateTimeRenderOption :: !(Maybe Text)     , _svgMajorDimension       :: !(Maybe Text)@@ -101,16 +95,12 @@ -- -- * 'svgUploadProtocol' ----- * 'svgPp'--- -- * 'svgAccessToken' -- -- * 'svgSpreadsheetId' -- -- * 'svgUploadType' ----- * 'svgBearerToken'--- -- * 'svgRange' -- -- * 'svgDateTimeRenderOption'@@ -127,11 +117,9 @@     { _svgXgafv = Nothing     , _svgValueRenderOption = Nothing     , _svgUploadProtocol = Nothing-    , _svgPp = True     , _svgAccessToken = Nothing     , _svgSpreadsheetId = pSvgSpreadsheetId_     , _svgUploadType = Nothing-    , _svgBearerToken = Nothing     , _svgRange = pSvgRange_     , _svgDateTimeRenderOption = Nothing     , _svgMajorDimension = Nothing@@ -155,10 +143,6 @@   = lens _svgUploadProtocol       (\ s a -> s{_svgUploadProtocol = a}) --- | Pretty-print response.-svgPp :: Lens' SpreadsheetsValuesGet Bool-svgPp = lens _svgPp (\ s a -> s{_svgPp = a})- -- | OAuth access token. svgAccessToken :: Lens' SpreadsheetsValuesGet (Maybe Text) svgAccessToken@@ -177,12 +161,6 @@   = lens _svgUploadType       (\ s a -> s{_svgUploadType = a}) --- | OAuth bearer token.-svgBearerToken :: Lens' SpreadsheetsValuesGet (Maybe Text)-svgBearerToken-  = lens _svgBearerToken-      (\ s a -> s{_svgBearerToken = a})- -- | The A1 notation of the values to retrieve. svgRange :: Lens' SpreadsheetsValuesGet Text svgRange = lens _svgRange (\ s a -> s{_svgRange = a})@@ -214,6 +192,7 @@         type Rs SpreadsheetsValuesGet = ValueRange         type Scopes SpreadsheetsValuesGet =              '["https://www.googleapis.com/auth/drive",+               "https://www.googleapis.com/auth/drive.file",                "https://www.googleapis.com/auth/drive.readonly",                "https://www.googleapis.com/auth/spreadsheets",                "https://www.googleapis.com/auth/spreadsheets.readonly"]@@ -221,10 +200,8 @@           = go _svgSpreadsheetId _svgRange _svgXgafv               _svgValueRenderOption               _svgUploadProtocol-              (Just _svgPp)               _svgAccessToken               _svgUploadType-              _svgBearerToken               _svgDateTimeRenderOption               _svgMajorDimension               _svgCallback
gen/Network/Google/Resource/Sheets/Spreadsheets/Values/Update.hs view
@@ -36,13 +36,11 @@     -- * Request Lenses     , svuXgafv     , svuUploadProtocol-    , svuPp     , svuAccessToken     , svuSpreadsheetId     , svuUploadType     , svuValueInputOption     , svuPayload-    , svuBearerToken     , svuRange     , svuIncludeValuesInResponse     , svuResponseDateTimeRenderOption@@ -63,19 +61,16 @@              Capture "range" Text :>                QueryParam "$.xgafv" Xgafv :>                  QueryParam "upload_protocol" Text :>-                   QueryParam "pp" Bool :>-                     QueryParam "access_token" Text :>-                       QueryParam "uploadType" Text :>-                         QueryParam "valueInputOption" Text :>-                           QueryParam "bearer_token" Text :>-                             QueryParam "includeValuesInResponse" Bool :>-                               QueryParam "responseDateTimeRenderOption" Text :>-                                 QueryParam "callback" Text :>-                                   QueryParam "responseValueRenderOption" Text-                                     :>-                                     QueryParam "alt" AltJSON :>-                                       ReqBody '[JSON] ValueRange :>-                                         Put '[JSON] UpdateValuesResponse+                   QueryParam "access_token" Text :>+                     QueryParam "uploadType" Text :>+                       QueryParam "valueInputOption" Text :>+                         QueryParam "includeValuesInResponse" Bool :>+                           QueryParam "responseDateTimeRenderOption" Text :>+                             QueryParam "callback" Text :>+                               QueryParam "responseValueRenderOption" Text :>+                                 QueryParam "alt" AltJSON :>+                                   ReqBody '[JSON] ValueRange :>+                                     Put '[JSON] UpdateValuesResponse  -- | Sets values in a range of a spreadsheet. The caller must specify the -- spreadsheet ID, range, and a valueInputOption.@@ -84,13 +79,11 @@ data SpreadsheetsValuesUpdate = SpreadsheetsValuesUpdate'     { _svuXgafv                        :: !(Maybe Xgafv)     , _svuUploadProtocol               :: !(Maybe Text)-    , _svuPp                           :: !Bool     , _svuAccessToken                  :: !(Maybe Text)     , _svuSpreadsheetId                :: !Text     , _svuUploadType                   :: !(Maybe Text)     , _svuValueInputOption             :: !(Maybe Text)     , _svuPayload                      :: !ValueRange-    , _svuBearerToken                  :: !(Maybe Text)     , _svuRange                        :: !Text     , _svuIncludeValuesInResponse      :: !(Maybe Bool)     , _svuResponseDateTimeRenderOption :: !(Maybe Text)@@ -106,8 +99,6 @@ -- -- * 'svuUploadProtocol' ----- * 'svuPp'--- -- * 'svuAccessToken' -- -- * 'svuSpreadsheetId'@@ -118,8 +109,6 @@ -- -- * 'svuPayload' ----- * 'svuBearerToken'--- -- * 'svuRange' -- -- * 'svuIncludeValuesInResponse'@@ -138,13 +127,11 @@     SpreadsheetsValuesUpdate'     { _svuXgafv = Nothing     , _svuUploadProtocol = Nothing-    , _svuPp = True     , _svuAccessToken = Nothing     , _svuSpreadsheetId = pSvuSpreadsheetId_     , _svuUploadType = Nothing     , _svuValueInputOption = Nothing     , _svuPayload = pSvuPayload_-    , _svuBearerToken = Nothing     , _svuRange = pSvuRange_     , _svuIncludeValuesInResponse = Nothing     , _svuResponseDateTimeRenderOption = Nothing@@ -162,10 +149,6 @@   = lens _svuUploadProtocol       (\ s a -> s{_svuUploadProtocol = a}) --- | Pretty-print response.-svuPp :: Lens' SpreadsheetsValuesUpdate Bool-svuPp = lens _svuPp (\ s a -> s{_svuPp = a})- -- | OAuth access token. svuAccessToken :: Lens' SpreadsheetsValuesUpdate (Maybe Text) svuAccessToken@@ -195,12 +178,6 @@ svuPayload   = lens _svuPayload (\ s a -> s{_svuPayload = a}) --- | OAuth bearer token.-svuBearerToken :: Lens' SpreadsheetsValuesUpdate (Maybe Text)-svuBearerToken-  = lens _svuBearerToken-      (\ s a -> s{_svuBearerToken = a})- -- | The A1 notation of the values to update. svuRange :: Lens' SpreadsheetsValuesUpdate Text svuRange = lens _svuRange (\ s a -> s{_svuRange = a})@@ -218,7 +195,7 @@ -- | 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].+-- DateTimeRenderOption.SERIAL_NUMBER. svuResponseDateTimeRenderOption :: Lens' SpreadsheetsValuesUpdate (Maybe Text) svuResponseDateTimeRenderOption   = lens _svuResponseDateTimeRenderOption@@ -241,15 +218,14 @@              UpdateValuesResponse         type Scopes SpreadsheetsValuesUpdate =              '["https://www.googleapis.com/auth/drive",+               "https://www.googleapis.com/auth/drive.file",                "https://www.googleapis.com/auth/spreadsheets"]         requestClient SpreadsheetsValuesUpdate'{..}           = go _svuSpreadsheetId _svuRange _svuXgafv               _svuUploadProtocol-              (Just _svuPp)               _svuAccessToken               _svuUploadType               _svuValueInputOption-              _svuBearerToken               _svuIncludeValuesInResponse               _svuResponseDateTimeRenderOption               _svuCallback
gen/Network/Google/Sheets.hs view
@@ -25,6 +25,7 @@     , spreadsheetsReadOnlyScope     , driveReadOnlyScope     , driveScope+    , driveFileScope     , spreadsheetsScope      -- * API Declaration@@ -38,9 +39,18 @@     -- ** sheets.spreadsheets.create     , module Network.Google.Resource.Sheets.Spreadsheets.Create +    -- ** sheets.spreadsheets.developerMetadata.get+    , module Network.Google.Resource.Sheets.Spreadsheets.DeveloperMetadata.Get++    -- ** sheets.spreadsheets.developerMetadata.search+    , module Network.Google.Resource.Sheets.Spreadsheets.DeveloperMetadata.Search+     -- ** sheets.spreadsheets.get     , module Network.Google.Resource.Sheets.Spreadsheets.Get +    -- ** sheets.spreadsheets.getByDataFilter+    , module Network.Google.Resource.Sheets.Spreadsheets.GetByDataFilter+     -- ** sheets.spreadsheets.sheets.copyTo     , module Network.Google.Resource.Sheets.Spreadsheets.Sheets.CopyTo @@ -50,12 +60,21 @@     -- ** sheets.spreadsheets.values.batchClear     , module Network.Google.Resource.Sheets.Spreadsheets.Values.BatchClear +    -- ** sheets.spreadsheets.values.batchClearByDataFilter+    , module Network.Google.Resource.Sheets.Spreadsheets.Values.BatchClearByDataFilter+     -- ** sheets.spreadsheets.values.batchGet     , module Network.Google.Resource.Sheets.Spreadsheets.Values.BatchGet +    -- ** sheets.spreadsheets.values.batchGetByDataFilter+    , module Network.Google.Resource.Sheets.Spreadsheets.Values.BatchGetByDataFilter+     -- ** sheets.spreadsheets.values.batchUpdate     , module Network.Google.Resource.Sheets.Spreadsheets.Values.BatchUpdate +    -- ** sheets.spreadsheets.values.batchUpdateByDataFilter+    , module Network.Google.Resource.Sheets.Spreadsheets.Values.BatchUpdateByDataFilter+     -- ** sheets.spreadsheets.values.clear     , module Network.Google.Resource.Sheets.Spreadsheets.Values.Clear @@ -67,6 +86,9 @@      -- * Types +    -- ** BasicChartSpecStackedType+    , BasicChartSpecStackedType (..)+     -- ** PivotGroupSortValueBucket     , PivotGroupSortValueBucket     , pivotGroupSortValueBucket@@ -89,6 +111,12 @@     -- ** CopyPasteRequestPasteType     , CopyPasteRequestPasteType (..) +    -- ** DeveloperMetadataLookupLocationMatchingStrategy+    , DeveloperMetadataLookupLocationMatchingStrategy (..)++    -- ** BatchUpdateValuesByDataFilterRequestResponseDateTimeRenderOption+    , BatchUpdateValuesByDataFilterRequestResponseDateTimeRenderOption (..)+     -- ** DeleteNamedRangeRequest     , DeleteNamedRangeRequest     , deleteNamedRangeRequest@@ -113,17 +141,31 @@     , batchClearValuesRequest     , bcvrRanges +    -- ** CreateDeveloperMetadataResponse+    , CreateDeveloperMetadataResponse+    , createDeveloperMetadataResponse+    , cdmrDeveloperMetadata++    -- ** DateTimeRule+    , DateTimeRule+    , dateTimeRule+    , dtrType+     -- ** DeleteRangeRequestShiftDimension     , DeleteRangeRequestShiftDimension (..)      -- ** BasicChartSeriesTargetAxis     , BasicChartSeriesTargetAxis (..) +    -- ** DataFilterValueRangeMajorDimension+    , DataFilterValueRangeMajorDimension (..)+     -- ** SpreadsheetProperties     , SpreadsheetProperties     , spreadsheetProperties     , spDefaultFormat     , spLocale+    , spIterativeCalculationSettings     , spAutoRecalc     , spTitle     , spTimeZone@@ -136,12 +178,31 @@     , boRight     , boTop +    -- ** BatchClearValuesByDataFilterRequest+    , BatchClearValuesByDataFilterRequest+    , batchClearValuesByDataFilterRequest+    , bcvbdfrDataFilters+     -- ** TextFormatRun     , TextFormatRun     , textFormatRun     , tfrFormat     , tfrStartIndex +    -- ** DeleteDimensionGroupRequest+    , DeleteDimensionGroupRequest+    , deleteDimensionGroupRequest+    , ddgrRange++    -- ** UpdateDimensionGroupRequest+    , UpdateDimensionGroupRequest+    , updateDimensionGroupRequest+    , udgrDimensionGroup+    , udgrFields++    -- ** BubbleChartSpecLegendPosition+    , BubbleChartSpecLegendPosition (..)+     -- ** AddSheetRequest     , AddSheetRequest     , addSheetRequest@@ -153,6 +214,13 @@     , ssSortOrder     , ssDimensionIndex +    -- ** DimensionGroup+    , DimensionGroup+    , dimensionGroup+    , dgCollapsed+    , dgRange+    , dgDepth+     -- ** BatchUpdateValuesRequestResponseDateTimeRenderOption     , BatchUpdateValuesRequestResponseDateTimeRenderOption (..) @@ -195,6 +263,21 @@     , autoResizeDimensionsRequest     , ardrDimensions +    -- ** BubbleChartSpec+    , BubbleChartSpec+    , bubbleChartSpec+    , bcsBubbleTextStyle+    , bcsBubbleBOrderColor+    , bcsLegendPosition+    , bcsDomain+    , bcsSeries+    , bcsBubbleLabels+    , bcsGroupIds+    , bcsBubbleMinRadiusSize+    , bcsBubbleMaxRadiusSize+    , bcsBubbleOpacity+    , bcsBubbleSizes+     -- ** DeleteRangeRequest     , DeleteRangeRequest     , deleteRangeRequest@@ -204,12 +287,15 @@     -- ** Sheet     , Sheet     , sheet+    , sColumnGroups     , sData     , sMerges+    , sRowGroups     , sProtectedRanges     , sBandedRanges     , sCharts     , sBasicFilter+    , sDeveloperMetadata     , sConditionalFormats     , sFilterViews     , sProperties@@ -232,6 +318,9 @@     , clearBasicFilterRequest     , cbfrSheetId +    -- ** BatchGetValuesByDataFilterRequestValueRenderOption+    , BatchGetValuesByDataFilterRequestValueRenderOption (..)+     -- ** UpdateEmbeddedObjectPositionRequest     , UpdateEmbeddedObjectPositionRequest     , updateEmbeddedObjectPositionRequest@@ -251,6 +340,12 @@     -- ** CellFormatWrapStrategy     , CellFormatWrapStrategy (..) +    -- ** BatchGetValuesByDataFilterResponse+    , BatchGetValuesByDataFilterResponse+    , batchGetValuesByDataFilterResponse+    , bgvbdfrSpreadsheetId+    , bgvbdfrValueRanges+     -- ** SourceAndDestination     , SourceAndDestination     , sourceAndDestination@@ -286,6 +381,11 @@     , frrSheetsChanged     , frrOccurrencesChanged +    -- ** AddDimensionGroupResponse+    , AddDimensionGroupResponse+    , addDimensionGroupResponse+    , adgrDimensionGroups+     -- ** PieChartSpec     , PieChartSpec     , pieChartSpec@@ -295,6 +395,19 @@     , pcsSeries     , pcsThreeDimensional +    -- ** BatchUpdateValuesByDataFilterResponse+    , BatchUpdateValuesByDataFilterResponse+    , batchUpdateValuesByDataFilterResponse+    , buvbdfrTotalUpdatedColumns+    , buvbdfrResponses+    , buvbdfrSpreadsheetId+    , buvbdfrTotalUpdatedSheets+    , buvbdfrTotalUpdatedCells+    , buvbdfrTotalUpdatedRows++    -- ** TextPositionHorizontalAlignment+    , TextPositionHorizontalAlignment (..)+     -- ** AppendValuesResponse     , AppendValuesResponse     , appendValuesResponse@@ -302,6 +415,9 @@     , avrUpdates     , avrTableRange +    -- ** DeveloperMetadataVisibility+    , DeveloperMetadataVisibility (..)+     -- ** BatchUpdateValuesRequestResponseValueRenderOption     , BatchUpdateValuesRequestResponseValueRenderOption (..) @@ -345,10 +461,19 @@     -- ** BasicChartSeries     , BasicChartSeries     , basicChartSeries-    , bcsTargetAxis-    , bcsSeries-    , bcsType+    , bTargetAxis+    , bColor+    , bSeries+    , bType+    , bLineStyle +    -- ** PivotGroupRule+    , PivotGroupRule+    , pivotGroupRule+    , pgrDateTimeRule+    , pgrManualRule+    , pgrHistogramRule+     -- ** AddProtectedRangeRequest     , AddProtectedRangeRequest     , addProtectedRangeRequest@@ -398,6 +523,14 @@     , mdrDestinationIndex     , mdrSource +    -- ** BatchGetValuesByDataFilterRequest+    , BatchGetValuesByDataFilterRequest+    , batchGetValuesByDataFilterRequest+    , bgvbdfrValueRenderOption+    , bgvbdfrDataFilters+    , bgvbdfrDateTimeRenderOption+    , bgvbdfrMajorDimension+     -- ** CellFormatVerticalAlignment     , CellFormatVerticalAlignment (..) @@ -426,21 +559,36 @@     -- ** ConditionValueRelativeDate     , ConditionValueRelativeDate (..) +    -- ** WaterfallChartCustomSubtotal+    , WaterfallChartCustomSubtotal+    , waterfallChartCustomSubtotal+    , wccsDataIsSubtotal+    , wccsSubtotalIndex+    , wccsLabel++    -- ** DeveloperMetadataLocationLocationType+    , DeveloperMetadataLocationLocationType (..)+     -- ** Response     , Response     , response     , rAddFilterView+    , rCreateDeveloperMetadata     , rDuplicateFilterView     , rUpdateEmbeddedObjectPosition+    , rDeleteDimensionGroup     , rAddSheet     , rFindReplace     , rAddProtectedRange     , rDeleteConditionalFormatRule     , rUpdateConditionalFormatRule+    , rDeleteDeveloperMetadata+    , rUpdateDeveloperMetadata     , rAddNamedRange     , rAddChart     , rAddBanding     , rDuplicateSheet+    , rAddDimensionGroup      -- ** FilterCriteria     , FilterCriteria@@ -468,9 +616,31 @@     , dcfrrSheetId     , dcfrrIndex +    -- ** UpdateDeveloperMetadataRequest+    , UpdateDeveloperMetadataRequest+    , updateDeveloperMetadataRequest+    , udmrDataFilters+    , udmrDeveloperMetadata+    , udmrFields+     -- ** SortSpecSortOrder     , SortSpecSortOrder (..) +    -- ** DeleteDeveloperMetadataRequest+    , DeleteDeveloperMetadataRequest+    , deleteDeveloperMetadataRequest+    , ddmrDataFilter++    -- ** WaterfallChartSpec+    , WaterfallChartSpec+    , waterfallChartSpec+    , wcsStackedType+    , wcsConnectorLineStyle+    , wcsDomain+    , wcsSeries+    , wcsHideConnectorLines+    , wcsFirstValueIsTotal+     -- ** OverlayPosition     , OverlayPosition     , overlayPosition@@ -485,6 +655,14 @@     , deleteEmbeddedObjectRequest     , deorObjectId +    -- ** DeveloperMetadataLocation+    , DeveloperMetadataLocation+    , developerMetadataLocation+    , dmlSpreadsheet+    , dmlDimensionRange+    , dmlSheetId+    , dmlLocationType+     -- ** SheetProperties     , SheetProperties     , sheetProperties@@ -525,14 +703,26 @@     , sprNamedRanges     , sprSpreadsheetId     , sprSpreadsheetURL+    , sprDeveloperMetadata     , sprProperties +    -- ** CandlestickChartSpec+    , CandlestickChartSpec+    , candlestickChartSpec+    , ccsData+    , ccsDomain+     -- ** InsertDimensionRequest     , InsertDimensionRequest     , insertDimensionRequest     , idrRange     , idrInheritFromBefore +    -- ** SearchDeveloperMetadataResponse+    , SearchDeveloperMetadataResponse+    , searchDeveloperMetadataResponse+    , sdmrMatchedDeveloperMetadata+     -- ** PivotValueSummarizeFunction     , PivotValueSummarizeFunction (..) @@ -543,6 +733,9 @@     , ipValue     , ipType +    -- ** OrgChartSpecNodeSize+    , OrgChartSpecNodeSize (..)+     -- ** CellData     , CellData     , cellData@@ -557,6 +750,9 @@     , cdHyperlink     , cdEffectiveValue +    -- ** BatchUpdateValuesByDataFilterRequestResponseValueRenderOption+    , BatchUpdateValuesByDataFilterRequestResponseValueRenderOption (..)+     -- ** ChartSourceRange     , ChartSourceRange     , chartSourceRange@@ -567,6 +763,12 @@     , addNamedRangeResponse     , anrrNamedRange +    -- ** WaterfallChartDomain+    , WaterfallChartDomain+    , waterfallChartDomain+    , wcdReversed+    , wcdData+     -- ** AddChartResponse     , AddChartResponse     , addChartResponse@@ -583,18 +785,51 @@     , setBasicFilterRequest     , sbfrFilter +    -- ** IterativeCalculationSettings+    , IterativeCalculationSettings+    , iterativeCalculationSettings+    , icsMaxIterations+    , icsConvergenceThreshold++    -- ** UpdateValuesByDataFilterResponse+    , UpdateValuesByDataFilterResponse+    , updateValuesByDataFilterResponse+    , uvbdfrUpdatedCells+    , uvbdfrUpdatedRows+    , uvbdfrUpdatedRange+    , uvbdfrUpdatedData+    , uvbdfrUpdatedColumns+    , uvbdfrDataFilter+     -- ** GridProperties     , GridProperties     , gridProperties     , gpFrozenColumnCount     , gpColumnCount+    , gpColumnGroupControlAfter     , gpHideGridlines     , gpFrozenRowCount+    , gpRowGroupControlAfter     , gpRowCount +    -- ** LineStyleType+    , LineStyleType (..)++    -- ** HistogramChartSpec+    , HistogramChartSpec+    , histogramChartSpec+    , hcsLegendPosition+    , hcsSeries+    , hcsShowItemDividers+    , hcsOutlierPercentile+    , hcsBucketSize+     -- ** CellFormatHyperlinkDisplayType     , CellFormatHyperlinkDisplayType (..) +    -- ** BatchUpdateValuesByDataFilterRequestValueInputOption+    , BatchUpdateValuesByDataFilterRequestValueInputOption (..)+     -- ** BasicFilterCriteria     , BasicFilterCriteria     , basicFilterCriteria@@ -624,6 +859,20 @@     , afrUseAlternateSeries     , afrRange +    -- ** DeveloperMetadataLookup+    , DeveloperMetadataLookup+    , developerMetadataLookup+    , dLocationMatchingStrategy+    , dMetadataId+    , dVisibility+    , dMetadataKey+    , dLocationType+    , dMetadataLocation+    , dMetadataValue++    -- ** HistogramChartSpecLegendPosition+    , HistogramChartSpecLegendPosition (..)+     -- ** DuplicateSheetRequest     , DuplicateSheetRequest     , duplicateSheetRequest@@ -632,6 +881,12 @@     , dsrSourceSheetId     , dsrNewSheetId +    -- ** TextRotation+    , TextRotation+    , textRotation+    , trAngle+    , trVertical+     -- ** DuplicateFilterViewResponse     , DuplicateFilterViewResponse     , duplicateFilterViewResponse@@ -649,6 +904,13 @@     , buvrResponseDateTimeRenderOption     , buvrResponseValueRenderOption +    -- ** DataFilterValueRange+    , DataFilterValueRange+    , dataFilterValueRange+    , dfvrValues+    , dfvrDataFilter+    , dfvrMajorDimension+     -- ** AddChartRequest     , AddChartRequest     , addChartRequest@@ -661,15 +923,28 @@     , nrName     , nrRange +    -- ** DeveloperMetadataLookupLocationType+    , DeveloperMetadataLookupLocationType (..)+     -- ** MergeCellsRequest     , MergeCellsRequest     , mergeCellsRequest     , mcrMergeType     , mcrRange +    -- ** ManualRule+    , ManualRule+    , manualRule+    , mrGroups+     -- ** MergeCellsRequestMergeType     , MergeCellsRequestMergeType (..) +    -- ** TextPosition+    , TextPosition+    , textPosition+    , tpHorizontalAlignment+     -- ** CellFormatHorizontalAlignment     , CellFormatHorizontalAlignment (..) @@ -680,6 +955,16 @@     , boColor     , boWidth +    -- ** SearchDeveloperMetadataRequest+    , SearchDeveloperMetadataRequest+    , searchDeveloperMetadataRequest+    , sdmrDataFilters++    -- ** CandlestickSeries+    , CandlestickSeries+    , candlestickSeries+    , csData+     -- ** ExtendedValue     , ExtendedValue     , extendedValue@@ -694,6 +979,9 @@     , addNamedRangeRequest     , aNamedRange +    -- ** WaterfallChartSpecStackedType+    , WaterfallChartSpecStackedType (..)+     -- ** PivotFilterCriteria     , PivotFilterCriteria     , pivotFilterCriteria@@ -713,6 +1001,18 @@     , uFields     , uProperties +    -- ** DateTimeRuleType+    , DateTimeRuleType (..)++    -- ** DeveloperMetadataLookupVisibility+    , DeveloperMetadataLookupVisibility (..)++    -- ** CandlestickDomain+    , CandlestickDomain+    , candlestickDomain+    , cdReversed+    , cdData+     -- ** AddProtectedRangeResponse     , AddProtectedRangeResponse     , addProtectedRangeResponse@@ -731,8 +1031,12 @@     , pvSourceColumnOffSet     , pvFormula     , pvName+    , pvCalculatedDisplayType     , pvSummarizeFunction +    -- ** BasicChartSpecCompareMode+    , BasicChartSpecCompareMode (..)+     -- ** UnmergeCellsRequest     , UnmergeCellsRequest     , unmergeCellsRequest@@ -746,6 +1050,25 @@     -- ** BooleanConditionType     , BooleanConditionType (..) +    -- ** AddDimensionGroupRequest+    , AddDimensionGroupRequest+    , addDimensionGroupRequest+    , adgrRange++    -- ** WaterfallChartColumnStyle+    , WaterfallChartColumnStyle+    , waterfallChartColumnStyle+    , wColor+    , wLabel++    -- ** CandlestickData+    , CandlestickData+    , candlestickData+    , cdLowSeries+    , cdHighSeries+    , cdOpenSeries+    , cdCloseSeries+     -- ** BandedRange     , BandedRange     , bandedRange@@ -768,6 +1091,15 @@     -- ** ValueRangeMajorDimension     , ValueRangeMajorDimension (..) +    -- ** BatchUpdateValuesByDataFilterRequest+    , BatchUpdateValuesByDataFilterRequest+    , batchUpdateValuesByDataFilterRequest+    , buvbdfrData+    , buvbdfrValueInputOption+    , buvbdfrIncludeValuesInResponse+    , buvbdfrResponseDateTimeRenderOption+    , buvbdfrResponseValueRenderOption+     -- ** PivotGroupSortOrder     , PivotGroupSortOrder (..) @@ -833,6 +1165,12 @@     -- ** CopyPasteRequestPasteOrientation     , CopyPasteRequestPasteOrientation (..) +    -- ** GetSpreadsheetByDataFilterRequest+    , GetSpreadsheetByDataFilterRequest+    , getSpreadsheetByDataFilterRequest+    , gsbdfrDataFilters+    , gsbdfrIncludeGridData+     -- ** BatchUpdateSpreadsheetRequest     , BatchUpdateSpreadsheetRequest     , batchUpdateSpreadsheetRequest@@ -854,6 +1192,11 @@     , uvrUpdatedData     , uvrUpdatedColumns +    -- ** DeleteDimensionGroupResponse+    , DeleteDimensionGroupResponse+    , deleteDimensionGroupResponse+    , ddgrDimensionGroups+     -- ** CopySheetToAnotherSpreadsheetRequest     , CopySheetToAnotherSpreadsheetRequest     , copySheetToAnotherSpreadsheetRequest@@ -873,6 +1216,22 @@     -- ** CellFormatTextDirection     , CellFormatTextDirection (..) +    -- ** BatchClearValuesByDataFilterResponse+    , BatchClearValuesByDataFilterResponse+    , batchClearValuesByDataFilterResponse+    , bcvbdfrClearedRanges+    , bcvbdfrSpreadsheetId++    -- ** WaterfallChartSeries+    , WaterfallChartSeries+    , waterfallChartSeries+    , wcsData+    , wcsCustomSubtotals+    , wcsNegativeColumnsStyle+    , wcsHideTrailingSubtotal+    , wcsSubtotalColumnsStyle+    , wcsPositiveColumnsStyle+     -- ** BasicChartSeriesType     , BasicChartSeriesType (..) @@ -890,6 +1249,7 @@     , cfBOrders     , cfVerticalAlignment     , cfBackgRoundColor+    , cfTextRotation     , cfHyperlinkDisplayType     , cfWrapStrategy     , cfNumberFormat@@ -926,9 +1286,13 @@     , prRequestingUserCanEdit     , prDescription +    -- ** PivotValueCalculatedDisplayType+    , PivotValueCalculatedDisplayType (..)+     -- ** BasicChartAxis     , BasicChartAxis     , basicChartAxis+    , bcaTitleTextPosition     , bcaFormat     , bcaTitle     , bcaPosition@@ -948,6 +1312,9 @@     , nfPattern     , nfType +    -- ** BatchGetValuesByDataFilterRequestDateTimeRenderOption+    , BatchGetValuesByDataFilterRequestDateTimeRenderOption (..)+     -- ** BatchUpdateSpreadsheetResponse     , BatchUpdateSpreadsheetResponse     , batchUpdateSpreadsheetResponse@@ -955,6 +1322,13 @@     , busrReplies     , busrUpdatedSpreadsheet +    -- ** DataFilter+    , DataFilter+    , dataFilter+    , dfGridRange+    , dfA1Range+    , dfDeveloperMetadataLookup+     -- ** SetDataValidationRequest     , SetDataValidationRequest     , setDataValidationRequest@@ -983,17 +1357,30 @@     -- ** PivotGroup     , PivotGroup     , pivotGroup+    , pgRepeatHeadings     , pgValueMetadata     , pgSourceColumnOffSet     , pgSortOrder     , pgShowTotals     , pgValueBucket+    , pgLabel+    , pgGroupRule      -- ** AddBandingResponse     , AddBandingResponse     , addBandingResponse     , aBandedRange +    -- ** OrgChartSpec+    , OrgChartSpec+    , orgChartSpec+    , ocsNodeColor+    , ocsNodeSize+    , ocsTooltips+    , ocsSelectedNodeColor+    , ocsLabels+    , ocsParentLabels+     -- ** CutPasteRequestPasteType     , CutPasteRequestPasteType (..) @@ -1003,6 +1390,33 @@     -- ** ErrorValueType     , ErrorValueType (..) +    -- ** RandomizeRangeRequest+    , RandomizeRangeRequest+    , randomizeRangeRequest+    , rrrRange++    -- ** HistogramSeries+    , HistogramSeries+    , histogramSeries+    , hsBarColor+    , hsData++    -- ** TreemapChartSpec+    , TreemapChartSpec+    , treemapChartSpec+    , tcsHintedLevels+    , tcsMaxValue+    , tcsHeaderColor+    , tcsSizeData+    , tcsColorData+    , tcsHideTooltips+    , tcsLevels+    , tcsLabels+    , tcsColorScale+    , tcsTextFormat+    , tcsMinValue+    , tcsParentLabels+     -- ** ConditionalFormatRule     , ConditionalFormatRule     , conditionalFormatRule@@ -1013,19 +1427,50 @@     -- ** BasicChartSpec     , BasicChartSpec     , basicChartSpec-    , bHeaderCount-    , bLegendPosition-    , bSeries-    , bChartType-    , bDomains-    , bAxis+    , basHeaderCount+    , basLineSmoothing+    , basInterpolateNulls+    , basStackedType+    , basLegendPosition+    , basSeries+    , basCompareMode+    , basChartType+    , basThreeDimensional+    , basDomains+    , basAxis +    -- ** ManualRuleGroup+    , ManualRuleGroup+    , manualRuleGroup+    , mrgItems+    , mrgGroupName++    -- ** BatchGetValuesByDataFilterRequestMajorDimension+    , BatchGetValuesByDataFilterRequestMajorDimension (..)+     -- ** AddConditionalFormatRuleRequest     , AddConditionalFormatRuleRequest     , addConditionalFormatRuleRequest     , acfrrRule     , acfrrIndex +    -- ** DeveloperMetadata+    , DeveloperMetadata+    , developerMetadata+    , dmLocation+    , dmMetadataId+    , dmVisibility+    , dmMetadataKey+    , dmMetadataValue++    -- ** TreemapChartColorScale+    , TreemapChartColorScale+    , treemapChartColorScale+    , tccsMinValueColor+    , tccsNoDataColor+    , tccsMaxValueColor+    , tccsMidValueColor+     -- ** PivotTableValueLayout     , PivotTableValueLayout (..) @@ -1045,20 +1490,45 @@     , tfBold     , tfStrikethrough +    -- ** CreateDeveloperMetadataRequest+    , CreateDeveloperMetadataRequest+    , createDeveloperMetadataRequest+    , cDeveloperMetadata+     -- ** BatchClearValuesResponse     , BatchClearValuesResponse     , batchClearValuesResponse     , bcvrClearedRanges     , bcvrSpreadsheetId +    -- ** MatchedValueRange+    , MatchedValueRange+    , matchedValueRange+    , mvrValueRange+    , mvrDataFilters+     -- ** BasicChartDomain     , BasicChartDomain     , basicChartDomain+    , bcdReversed     , bcdDomain      -- ** InterpolationPointType     , InterpolationPointType (..) +    -- ** HistogramRule+    , HistogramRule+    , histogramRule+    , hrStart+    , hrInterval+    , hrEnd++    -- ** MatchedDeveloperMetadata+    , MatchedDeveloperMetadata+    , matchedDeveloperMetadata+    , mdmDataFilters+    , mdmDeveloperMetadata+     -- ** TextToColumnsRequestDelimiterType     , TextToColumnsRequestDelimiterType (..) @@ -1082,8 +1552,23 @@     -- ** ChartSpec     , ChartSpec     , chartSpec+    , csTitleTextPosition+    , csFontName+    , csSubtitleTextPosition+    , csBackgRoundColor+    , csCandlestickChart+    , csWaterfallChart+    , csTitleTextFormat+    , csSubtitle+    , csAltText+    , csHistogramChart+    , csBubbleChart+    , csMaximized+    , csSubtitleTextFormat     , csTitle     , csPieChart+    , csOrgChart+    , csTreemapChart     , csBasicChart     , csHiddenDimensionStrategy @@ -1093,6 +1578,7 @@     , dpHiddenByFilter     , dpPixelSize     , dpHiddenByUser+    , dpDeveloperMetadata      -- ** UpdateBandingRequest     , UpdateBandingRequest@@ -1111,6 +1597,16 @@     , deleteBandingRequest     , dbrBandedRangeId +    -- ** DeleteDeveloperMetadataResponse+    , DeleteDeveloperMetadataResponse+    , deleteDeveloperMetadataResponse+    , ddmrDeletedDeveloperMetadata++    -- ** UpdateDeveloperMetadataResponse+    , UpdateDeveloperMetadataResponse+    , updateDeveloperMetadataResponse+    , uDeveloperMetadata+     -- ** Request'     , Request'     , request'@@ -1118,8 +1614,10 @@     , reqDeleteProtectedRange     , reqUpdateProtectedRange     , reqUpdateCells+    , reqCreateDeveloperMetadata     , reqDuplicateFilterView     , reqAddConditionalFormatRule+    , reqRandomizeRange     , reqSortRange     , reqUpdateNamedRange     , reqDeleteNamedRange@@ -1132,6 +1630,8 @@     , reqUpdateEmbeddedObjectPosition     , reqDeleteRange     , reqCopyPaste+    , reqUpdateDimensionGroup+    , reqDeleteDimensionGroup     , reqAutoResizeDimensions     , reqAddSheet     , reqFindReplace@@ -1147,6 +1647,8 @@     , reqDeleteConditionalFormatRule     , reqUpdateConditionalFormatRule     , reqDeleteEmbeddedObject+    , reqDeleteDeveloperMetadata+    , reqUpdateDeveloperMetadata     , reqMergeCells     , reqAddNamedRange     , reqAddChart@@ -1157,6 +1659,7 @@     , reqUpdateChartSpec     , reqSetBasicFilter     , reqTextToColumns+    , reqAddDimensionGroup     , reqUpdateSpreadsheetProperties     , reqDeleteSheet     , reqUnmergeCells@@ -1164,6 +1667,12 @@     , reqAppendDimension     , reqSetDataValidation +    -- ** LineStyle+    , LineStyle+    , lineStyle+    , lsWidth+    , lsType+     -- ** DeleteConditionalFormatRuleResponse     , DeleteConditionalFormatRuleResponse     , deleteConditionalFormatRuleResponse@@ -1181,12 +1690,18 @@ import           Network.Google.Prelude import           Network.Google.Resource.Sheets.Spreadsheets.BatchUpdate import           Network.Google.Resource.Sheets.Spreadsheets.Create+import           Network.Google.Resource.Sheets.Spreadsheets.DeveloperMetadata.Get+import           Network.Google.Resource.Sheets.Spreadsheets.DeveloperMetadata.Search import           Network.Google.Resource.Sheets.Spreadsheets.Get+import           Network.Google.Resource.Sheets.Spreadsheets.GetByDataFilter import           Network.Google.Resource.Sheets.Spreadsheets.Sheets.CopyTo import           Network.Google.Resource.Sheets.Spreadsheets.Values.Append import           Network.Google.Resource.Sheets.Spreadsheets.Values.BatchClear+import           Network.Google.Resource.Sheets.Spreadsheets.Values.BatchClearByDataFilter import           Network.Google.Resource.Sheets.Spreadsheets.Values.BatchGet+import           Network.Google.Resource.Sheets.Spreadsheets.Values.BatchGetByDataFilter import           Network.Google.Resource.Sheets.Spreadsheets.Values.BatchUpdate+import           Network.Google.Resource.Sheets.Spreadsheets.Values.BatchUpdateByDataFilter import           Network.Google.Resource.Sheets.Spreadsheets.Values.Clear import           Network.Google.Resource.Sheets.Spreadsheets.Values.Get import           Network.Google.Resource.Sheets.Spreadsheets.Values.Update@@ -1200,12 +1715,19 @@ type SheetsAPI =      SpreadsheetsSheetsCopyToResource :<|>        SpreadsheetsValuesBatchClearResource+       :<|> SpreadsheetsValuesBatchClearByDataFilterResource        :<|> SpreadsheetsValuesGetResource+       :<|> SpreadsheetsValuesBatchGetByDataFilterResource        :<|> SpreadsheetsValuesClearResource        :<|> SpreadsheetsValuesBatchGetResource        :<|> SpreadsheetsValuesBatchUpdateResource        :<|> SpreadsheetsValuesAppendResource+       :<|>+       SpreadsheetsValuesBatchUpdateByDataFilterResource        :<|> SpreadsheetsValuesUpdateResource+       :<|> SpreadsheetsDeveloperMetadataGetResource+       :<|> SpreadsheetsDeveloperMetadataSearchResource+       :<|> SpreadsheetsGetByDataFilterResource        :<|> SpreadsheetsGetResource        :<|> SpreadsheetsCreateResource        :<|> SpreadsheetsBatchUpdateResource
gen/Network/Google/Sheets/Types.hs view
@@ -23,8 +23,12 @@     , spreadsheetsReadOnlyScope     , driveReadOnlyScope     , driveScope+    , driveFileScope     , spreadsheetsScope +    -- * BasicChartSpecStackedType+    , BasicChartSpecStackedType (..)+     -- * PivotGroupSortValueBucket     , PivotGroupSortValueBucket     , pivotGroupSortValueBucket@@ -47,6 +51,12 @@     -- * CopyPasteRequestPasteType     , CopyPasteRequestPasteType (..) +    -- * DeveloperMetadataLookupLocationMatchingStrategy+    , DeveloperMetadataLookupLocationMatchingStrategy (..)++    -- * BatchUpdateValuesByDataFilterRequestResponseDateTimeRenderOption+    , BatchUpdateValuesByDataFilterRequestResponseDateTimeRenderOption (..)+     -- * DeleteNamedRangeRequest     , DeleteNamedRangeRequest     , deleteNamedRangeRequest@@ -71,17 +81,31 @@     , batchClearValuesRequest     , bcvrRanges +    -- * CreateDeveloperMetadataResponse+    , CreateDeveloperMetadataResponse+    , createDeveloperMetadataResponse+    , cdmrDeveloperMetadata++    -- * DateTimeRule+    , DateTimeRule+    , dateTimeRule+    , dtrType+     -- * DeleteRangeRequestShiftDimension     , DeleteRangeRequestShiftDimension (..)      -- * BasicChartSeriesTargetAxis     , BasicChartSeriesTargetAxis (..) +    -- * DataFilterValueRangeMajorDimension+    , DataFilterValueRangeMajorDimension (..)+     -- * SpreadsheetProperties     , SpreadsheetProperties     , spreadsheetProperties     , spDefaultFormat     , spLocale+    , spIterativeCalculationSettings     , spAutoRecalc     , spTitle     , spTimeZone@@ -94,12 +118,31 @@     , boRight     , boTop +    -- * BatchClearValuesByDataFilterRequest+    , BatchClearValuesByDataFilterRequest+    , batchClearValuesByDataFilterRequest+    , bcvbdfrDataFilters+     -- * TextFormatRun     , TextFormatRun     , textFormatRun     , tfrFormat     , tfrStartIndex +    -- * DeleteDimensionGroupRequest+    , DeleteDimensionGroupRequest+    , deleteDimensionGroupRequest+    , ddgrRange++    -- * UpdateDimensionGroupRequest+    , UpdateDimensionGroupRequest+    , updateDimensionGroupRequest+    , udgrDimensionGroup+    , udgrFields++    -- * BubbleChartSpecLegendPosition+    , BubbleChartSpecLegendPosition (..)+     -- * AddSheetRequest     , AddSheetRequest     , addSheetRequest@@ -111,6 +154,13 @@     , ssSortOrder     , ssDimensionIndex +    -- * DimensionGroup+    , DimensionGroup+    , dimensionGroup+    , dgCollapsed+    , dgRange+    , dgDepth+     -- * BatchUpdateValuesRequestResponseDateTimeRenderOption     , BatchUpdateValuesRequestResponseDateTimeRenderOption (..) @@ -153,6 +203,21 @@     , autoResizeDimensionsRequest     , ardrDimensions +    -- * BubbleChartSpec+    , BubbleChartSpec+    , bubbleChartSpec+    , bcsBubbleTextStyle+    , bcsBubbleBOrderColor+    , bcsLegendPosition+    , bcsDomain+    , bcsSeries+    , bcsBubbleLabels+    , bcsGroupIds+    , bcsBubbleMinRadiusSize+    , bcsBubbleMaxRadiusSize+    , bcsBubbleOpacity+    , bcsBubbleSizes+     -- * DeleteRangeRequest     , DeleteRangeRequest     , deleteRangeRequest@@ -162,12 +227,15 @@     -- * Sheet     , Sheet     , sheet+    , sColumnGroups     , sData     , sMerges+    , sRowGroups     , sProtectedRanges     , sBandedRanges     , sCharts     , sBasicFilter+    , sDeveloperMetadata     , sConditionalFormats     , sFilterViews     , sProperties@@ -190,6 +258,9 @@     , clearBasicFilterRequest     , cbfrSheetId +    -- * BatchGetValuesByDataFilterRequestValueRenderOption+    , BatchGetValuesByDataFilterRequestValueRenderOption (..)+     -- * UpdateEmbeddedObjectPositionRequest     , UpdateEmbeddedObjectPositionRequest     , updateEmbeddedObjectPositionRequest@@ -209,6 +280,12 @@     -- * CellFormatWrapStrategy     , CellFormatWrapStrategy (..) +    -- * BatchGetValuesByDataFilterResponse+    , BatchGetValuesByDataFilterResponse+    , batchGetValuesByDataFilterResponse+    , bgvbdfrSpreadsheetId+    , bgvbdfrValueRanges+     -- * SourceAndDestination     , SourceAndDestination     , sourceAndDestination@@ -244,6 +321,11 @@     , frrSheetsChanged     , frrOccurrencesChanged +    -- * AddDimensionGroupResponse+    , AddDimensionGroupResponse+    , addDimensionGroupResponse+    , adgrDimensionGroups+     -- * PieChartSpec     , PieChartSpec     , pieChartSpec@@ -253,6 +335,19 @@     , pcsSeries     , pcsThreeDimensional +    -- * BatchUpdateValuesByDataFilterResponse+    , BatchUpdateValuesByDataFilterResponse+    , batchUpdateValuesByDataFilterResponse+    , buvbdfrTotalUpdatedColumns+    , buvbdfrResponses+    , buvbdfrSpreadsheetId+    , buvbdfrTotalUpdatedSheets+    , buvbdfrTotalUpdatedCells+    , buvbdfrTotalUpdatedRows++    -- * TextPositionHorizontalAlignment+    , TextPositionHorizontalAlignment (..)+     -- * AppendValuesResponse     , AppendValuesResponse     , appendValuesResponse@@ -260,6 +355,9 @@     , avrUpdates     , avrTableRange +    -- * DeveloperMetadataVisibility+    , DeveloperMetadataVisibility (..)+     -- * BatchUpdateValuesRequestResponseValueRenderOption     , BatchUpdateValuesRequestResponseValueRenderOption (..) @@ -303,10 +401,19 @@     -- * BasicChartSeries     , BasicChartSeries     , basicChartSeries-    , bcsTargetAxis-    , bcsSeries-    , bcsType+    , bTargetAxis+    , bColor+    , bSeries+    , bType+    , bLineStyle +    -- * PivotGroupRule+    , PivotGroupRule+    , pivotGroupRule+    , pgrDateTimeRule+    , pgrManualRule+    , pgrHistogramRule+     -- * AddProtectedRangeRequest     , AddProtectedRangeRequest     , addProtectedRangeRequest@@ -356,6 +463,14 @@     , mdrDestinationIndex     , mdrSource +    -- * BatchGetValuesByDataFilterRequest+    , BatchGetValuesByDataFilterRequest+    , batchGetValuesByDataFilterRequest+    , bgvbdfrValueRenderOption+    , bgvbdfrDataFilters+    , bgvbdfrDateTimeRenderOption+    , bgvbdfrMajorDimension+     -- * CellFormatVerticalAlignment     , CellFormatVerticalAlignment (..) @@ -384,21 +499,36 @@     -- * ConditionValueRelativeDate     , ConditionValueRelativeDate (..) +    -- * WaterfallChartCustomSubtotal+    , WaterfallChartCustomSubtotal+    , waterfallChartCustomSubtotal+    , wccsDataIsSubtotal+    , wccsSubtotalIndex+    , wccsLabel++    -- * DeveloperMetadataLocationLocationType+    , DeveloperMetadataLocationLocationType (..)+     -- * Response     , Response     , response     , rAddFilterView+    , rCreateDeveloperMetadata     , rDuplicateFilterView     , rUpdateEmbeddedObjectPosition+    , rDeleteDimensionGroup     , rAddSheet     , rFindReplace     , rAddProtectedRange     , rDeleteConditionalFormatRule     , rUpdateConditionalFormatRule+    , rDeleteDeveloperMetadata+    , rUpdateDeveloperMetadata     , rAddNamedRange     , rAddChart     , rAddBanding     , rDuplicateSheet+    , rAddDimensionGroup      -- * FilterCriteria     , FilterCriteria@@ -426,9 +556,31 @@     , dcfrrSheetId     , dcfrrIndex +    -- * UpdateDeveloperMetadataRequest+    , UpdateDeveloperMetadataRequest+    , updateDeveloperMetadataRequest+    , udmrDataFilters+    , udmrDeveloperMetadata+    , udmrFields+     -- * SortSpecSortOrder     , SortSpecSortOrder (..) +    -- * DeleteDeveloperMetadataRequest+    , DeleteDeveloperMetadataRequest+    , deleteDeveloperMetadataRequest+    , ddmrDataFilter++    -- * WaterfallChartSpec+    , WaterfallChartSpec+    , waterfallChartSpec+    , wcsStackedType+    , wcsConnectorLineStyle+    , wcsDomain+    , wcsSeries+    , wcsHideConnectorLines+    , wcsFirstValueIsTotal+     -- * OverlayPosition     , OverlayPosition     , overlayPosition@@ -443,6 +595,14 @@     , deleteEmbeddedObjectRequest     , deorObjectId +    -- * DeveloperMetadataLocation+    , DeveloperMetadataLocation+    , developerMetadataLocation+    , dmlSpreadsheet+    , dmlDimensionRange+    , dmlSheetId+    , dmlLocationType+     -- * SheetProperties     , SheetProperties     , sheetProperties@@ -483,14 +643,26 @@     , sprNamedRanges     , sprSpreadsheetId     , sprSpreadsheetURL+    , sprDeveloperMetadata     , sprProperties +    -- * CandlestickChartSpec+    , CandlestickChartSpec+    , candlestickChartSpec+    , ccsData+    , ccsDomain+     -- * InsertDimensionRequest     , InsertDimensionRequest     , insertDimensionRequest     , idrRange     , idrInheritFromBefore +    -- * SearchDeveloperMetadataResponse+    , SearchDeveloperMetadataResponse+    , searchDeveloperMetadataResponse+    , sdmrMatchedDeveloperMetadata+     -- * PivotValueSummarizeFunction     , PivotValueSummarizeFunction (..) @@ -501,6 +673,9 @@     , ipValue     , ipType +    -- * OrgChartSpecNodeSize+    , OrgChartSpecNodeSize (..)+     -- * CellData     , CellData     , cellData@@ -515,6 +690,9 @@     , cdHyperlink     , cdEffectiveValue +    -- * BatchUpdateValuesByDataFilterRequestResponseValueRenderOption+    , BatchUpdateValuesByDataFilterRequestResponseValueRenderOption (..)+     -- * ChartSourceRange     , ChartSourceRange     , chartSourceRange@@ -525,6 +703,12 @@     , addNamedRangeResponse     , anrrNamedRange +    -- * WaterfallChartDomain+    , WaterfallChartDomain+    , waterfallChartDomain+    , wcdReversed+    , wcdData+     -- * AddChartResponse     , AddChartResponse     , addChartResponse@@ -541,18 +725,51 @@     , setBasicFilterRequest     , sbfrFilter +    -- * IterativeCalculationSettings+    , IterativeCalculationSettings+    , iterativeCalculationSettings+    , icsMaxIterations+    , icsConvergenceThreshold++    -- * UpdateValuesByDataFilterResponse+    , UpdateValuesByDataFilterResponse+    , updateValuesByDataFilterResponse+    , uvbdfrUpdatedCells+    , uvbdfrUpdatedRows+    , uvbdfrUpdatedRange+    , uvbdfrUpdatedData+    , uvbdfrUpdatedColumns+    , uvbdfrDataFilter+     -- * GridProperties     , GridProperties     , gridProperties     , gpFrozenColumnCount     , gpColumnCount+    , gpColumnGroupControlAfter     , gpHideGridlines     , gpFrozenRowCount+    , gpRowGroupControlAfter     , gpRowCount +    -- * LineStyleType+    , LineStyleType (..)++    -- * HistogramChartSpec+    , HistogramChartSpec+    , histogramChartSpec+    , hcsLegendPosition+    , hcsSeries+    , hcsShowItemDividers+    , hcsOutlierPercentile+    , hcsBucketSize+     -- * CellFormatHyperlinkDisplayType     , CellFormatHyperlinkDisplayType (..) +    -- * BatchUpdateValuesByDataFilterRequestValueInputOption+    , BatchUpdateValuesByDataFilterRequestValueInputOption (..)+     -- * BasicFilterCriteria     , BasicFilterCriteria     , basicFilterCriteria@@ -582,6 +799,20 @@     , afrUseAlternateSeries     , afrRange +    -- * DeveloperMetadataLookup+    , DeveloperMetadataLookup+    , developerMetadataLookup+    , dLocationMatchingStrategy+    , dMetadataId+    , dVisibility+    , dMetadataKey+    , dLocationType+    , dMetadataLocation+    , dMetadataValue++    -- * HistogramChartSpecLegendPosition+    , HistogramChartSpecLegendPosition (..)+     -- * DuplicateSheetRequest     , DuplicateSheetRequest     , duplicateSheetRequest@@ -590,6 +821,12 @@     , dsrSourceSheetId     , dsrNewSheetId +    -- * TextRotation+    , TextRotation+    , textRotation+    , trAngle+    , trVertical+     -- * DuplicateFilterViewResponse     , DuplicateFilterViewResponse     , duplicateFilterViewResponse@@ -607,6 +844,13 @@     , buvrResponseDateTimeRenderOption     , buvrResponseValueRenderOption +    -- * DataFilterValueRange+    , DataFilterValueRange+    , dataFilterValueRange+    , dfvrValues+    , dfvrDataFilter+    , dfvrMajorDimension+     -- * AddChartRequest     , AddChartRequest     , addChartRequest@@ -619,15 +863,28 @@     , nrName     , nrRange +    -- * DeveloperMetadataLookupLocationType+    , DeveloperMetadataLookupLocationType (..)+     -- * MergeCellsRequest     , MergeCellsRequest     , mergeCellsRequest     , mcrMergeType     , mcrRange +    -- * ManualRule+    , ManualRule+    , manualRule+    , mrGroups+     -- * MergeCellsRequestMergeType     , MergeCellsRequestMergeType (..) +    -- * TextPosition+    , TextPosition+    , textPosition+    , tpHorizontalAlignment+     -- * CellFormatHorizontalAlignment     , CellFormatHorizontalAlignment (..) @@ -638,6 +895,16 @@     , boColor     , boWidth +    -- * SearchDeveloperMetadataRequest+    , SearchDeveloperMetadataRequest+    , searchDeveloperMetadataRequest+    , sdmrDataFilters++    -- * CandlestickSeries+    , CandlestickSeries+    , candlestickSeries+    , csData+     -- * ExtendedValue     , ExtendedValue     , extendedValue@@ -652,6 +919,9 @@     , addNamedRangeRequest     , aNamedRange +    -- * WaterfallChartSpecStackedType+    , WaterfallChartSpecStackedType (..)+     -- * PivotFilterCriteria     , PivotFilterCriteria     , pivotFilterCriteria@@ -671,6 +941,18 @@     , uFields     , uProperties +    -- * DateTimeRuleType+    , DateTimeRuleType (..)++    -- * DeveloperMetadataLookupVisibility+    , DeveloperMetadataLookupVisibility (..)++    -- * CandlestickDomain+    , CandlestickDomain+    , candlestickDomain+    , cdReversed+    , cdData+     -- * AddProtectedRangeResponse     , AddProtectedRangeResponse     , addProtectedRangeResponse@@ -689,8 +971,12 @@     , pvSourceColumnOffSet     , pvFormula     , pvName+    , pvCalculatedDisplayType     , pvSummarizeFunction +    -- * BasicChartSpecCompareMode+    , BasicChartSpecCompareMode (..)+     -- * UnmergeCellsRequest     , UnmergeCellsRequest     , unmergeCellsRequest@@ -704,6 +990,25 @@     -- * BooleanConditionType     , BooleanConditionType (..) +    -- * AddDimensionGroupRequest+    , AddDimensionGroupRequest+    , addDimensionGroupRequest+    , adgrRange++    -- * WaterfallChartColumnStyle+    , WaterfallChartColumnStyle+    , waterfallChartColumnStyle+    , wColor+    , wLabel++    -- * CandlestickData+    , CandlestickData+    , candlestickData+    , cdLowSeries+    , cdHighSeries+    , cdOpenSeries+    , cdCloseSeries+     -- * BandedRange     , BandedRange     , bandedRange@@ -726,6 +1031,15 @@     -- * ValueRangeMajorDimension     , ValueRangeMajorDimension (..) +    -- * BatchUpdateValuesByDataFilterRequest+    , BatchUpdateValuesByDataFilterRequest+    , batchUpdateValuesByDataFilterRequest+    , buvbdfrData+    , buvbdfrValueInputOption+    , buvbdfrIncludeValuesInResponse+    , buvbdfrResponseDateTimeRenderOption+    , buvbdfrResponseValueRenderOption+     -- * PivotGroupSortOrder     , PivotGroupSortOrder (..) @@ -791,6 +1105,12 @@     -- * CopyPasteRequestPasteOrientation     , CopyPasteRequestPasteOrientation (..) +    -- * GetSpreadsheetByDataFilterRequest+    , GetSpreadsheetByDataFilterRequest+    , getSpreadsheetByDataFilterRequest+    , gsbdfrDataFilters+    , gsbdfrIncludeGridData+     -- * BatchUpdateSpreadsheetRequest     , BatchUpdateSpreadsheetRequest     , batchUpdateSpreadsheetRequest@@ -812,6 +1132,11 @@     , uvrUpdatedData     , uvrUpdatedColumns +    -- * DeleteDimensionGroupResponse+    , DeleteDimensionGroupResponse+    , deleteDimensionGroupResponse+    , ddgrDimensionGroups+     -- * CopySheetToAnotherSpreadsheetRequest     , CopySheetToAnotherSpreadsheetRequest     , copySheetToAnotherSpreadsheetRequest@@ -831,6 +1156,22 @@     -- * CellFormatTextDirection     , CellFormatTextDirection (..) +    -- * BatchClearValuesByDataFilterResponse+    , BatchClearValuesByDataFilterResponse+    , batchClearValuesByDataFilterResponse+    , bcvbdfrClearedRanges+    , bcvbdfrSpreadsheetId++    -- * WaterfallChartSeries+    , WaterfallChartSeries+    , waterfallChartSeries+    , wcsData+    , wcsCustomSubtotals+    , wcsNegativeColumnsStyle+    , wcsHideTrailingSubtotal+    , wcsSubtotalColumnsStyle+    , wcsPositiveColumnsStyle+     -- * BasicChartSeriesType     , BasicChartSeriesType (..) @@ -848,6 +1189,7 @@     , cfBOrders     , cfVerticalAlignment     , cfBackgRoundColor+    , cfTextRotation     , cfHyperlinkDisplayType     , cfWrapStrategy     , cfNumberFormat@@ -884,9 +1226,13 @@     , prRequestingUserCanEdit     , prDescription +    -- * PivotValueCalculatedDisplayType+    , PivotValueCalculatedDisplayType (..)+     -- * BasicChartAxis     , BasicChartAxis     , basicChartAxis+    , bcaTitleTextPosition     , bcaFormat     , bcaTitle     , bcaPosition@@ -906,6 +1252,9 @@     , nfPattern     , nfType +    -- * BatchGetValuesByDataFilterRequestDateTimeRenderOption+    , BatchGetValuesByDataFilterRequestDateTimeRenderOption (..)+     -- * BatchUpdateSpreadsheetResponse     , BatchUpdateSpreadsheetResponse     , batchUpdateSpreadsheetResponse@@ -913,6 +1262,13 @@     , busrReplies     , busrUpdatedSpreadsheet +    -- * DataFilter+    , DataFilter+    , dataFilter+    , dfGridRange+    , dfA1Range+    , dfDeveloperMetadataLookup+     -- * SetDataValidationRequest     , SetDataValidationRequest     , setDataValidationRequest@@ -941,17 +1297,30 @@     -- * PivotGroup     , PivotGroup     , pivotGroup+    , pgRepeatHeadings     , pgValueMetadata     , pgSourceColumnOffSet     , pgSortOrder     , pgShowTotals     , pgValueBucket+    , pgLabel+    , pgGroupRule      -- * AddBandingResponse     , AddBandingResponse     , addBandingResponse     , aBandedRange +    -- * OrgChartSpec+    , OrgChartSpec+    , orgChartSpec+    , ocsNodeColor+    , ocsNodeSize+    , ocsTooltips+    , ocsSelectedNodeColor+    , ocsLabels+    , ocsParentLabels+     -- * CutPasteRequestPasteType     , CutPasteRequestPasteType (..) @@ -961,6 +1330,33 @@     -- * ErrorValueType     , ErrorValueType (..) +    -- * RandomizeRangeRequest+    , RandomizeRangeRequest+    , randomizeRangeRequest+    , rrrRange++    -- * HistogramSeries+    , HistogramSeries+    , histogramSeries+    , hsBarColor+    , hsData++    -- * TreemapChartSpec+    , TreemapChartSpec+    , treemapChartSpec+    , tcsHintedLevels+    , tcsMaxValue+    , tcsHeaderColor+    , tcsSizeData+    , tcsColorData+    , tcsHideTooltips+    , tcsLevels+    , tcsLabels+    , tcsColorScale+    , tcsTextFormat+    , tcsMinValue+    , tcsParentLabels+     -- * ConditionalFormatRule     , ConditionalFormatRule     , conditionalFormatRule@@ -971,19 +1367,50 @@     -- * BasicChartSpec     , BasicChartSpec     , basicChartSpec-    , bHeaderCount-    , bLegendPosition-    , bSeries-    , bChartType-    , bDomains-    , bAxis+    , basHeaderCount+    , basLineSmoothing+    , basInterpolateNulls+    , basStackedType+    , basLegendPosition+    , basSeries+    , basCompareMode+    , basChartType+    , basThreeDimensional+    , basDomains+    , basAxis +    -- * ManualRuleGroup+    , ManualRuleGroup+    , manualRuleGroup+    , mrgItems+    , mrgGroupName++    -- * BatchGetValuesByDataFilterRequestMajorDimension+    , BatchGetValuesByDataFilterRequestMajorDimension (..)+     -- * AddConditionalFormatRuleRequest     , AddConditionalFormatRuleRequest     , addConditionalFormatRuleRequest     , acfrrRule     , acfrrIndex +    -- * DeveloperMetadata+    , DeveloperMetadata+    , developerMetadata+    , dmLocation+    , dmMetadataId+    , dmVisibility+    , dmMetadataKey+    , dmMetadataValue++    -- * TreemapChartColorScale+    , TreemapChartColorScale+    , treemapChartColorScale+    , tccsMinValueColor+    , tccsNoDataColor+    , tccsMaxValueColor+    , tccsMidValueColor+     -- * PivotTableValueLayout     , PivotTableValueLayout (..) @@ -1003,20 +1430,45 @@     , tfBold     , tfStrikethrough +    -- * CreateDeveloperMetadataRequest+    , CreateDeveloperMetadataRequest+    , createDeveloperMetadataRequest+    , cDeveloperMetadata+     -- * BatchClearValuesResponse     , BatchClearValuesResponse     , batchClearValuesResponse     , bcvrClearedRanges     , bcvrSpreadsheetId +    -- * MatchedValueRange+    , MatchedValueRange+    , matchedValueRange+    , mvrValueRange+    , mvrDataFilters+     -- * BasicChartDomain     , BasicChartDomain     , basicChartDomain+    , bcdReversed     , bcdDomain      -- * InterpolationPointType     , InterpolationPointType (..) +    -- * HistogramRule+    , HistogramRule+    , histogramRule+    , hrStart+    , hrInterval+    , hrEnd++    -- * MatchedDeveloperMetadata+    , MatchedDeveloperMetadata+    , matchedDeveloperMetadata+    , mdmDataFilters+    , mdmDeveloperMetadata+     -- * TextToColumnsRequestDelimiterType     , TextToColumnsRequestDelimiterType (..) @@ -1040,8 +1492,23 @@     -- * ChartSpec     , ChartSpec     , chartSpec+    , csTitleTextPosition+    , csFontName+    , csSubtitleTextPosition+    , csBackgRoundColor+    , csCandlestickChart+    , csWaterfallChart+    , csTitleTextFormat+    , csSubtitle+    , csAltText+    , csHistogramChart+    , csBubbleChart+    , csMaximized+    , csSubtitleTextFormat     , csTitle     , csPieChart+    , csOrgChart+    , csTreemapChart     , csBasicChart     , csHiddenDimensionStrategy @@ -1051,6 +1518,7 @@     , dpHiddenByFilter     , dpPixelSize     , dpHiddenByUser+    , dpDeveloperMetadata      -- * UpdateBandingRequest     , UpdateBandingRequest@@ -1069,6 +1537,16 @@     , deleteBandingRequest     , dbrBandedRangeId +    -- * DeleteDeveloperMetadataResponse+    , DeleteDeveloperMetadataResponse+    , deleteDeveloperMetadataResponse+    , ddmrDeletedDeveloperMetadata++    -- * UpdateDeveloperMetadataResponse+    , UpdateDeveloperMetadataResponse+    , updateDeveloperMetadataResponse+    , uDeveloperMetadata+     -- * Request'     , Request'     , request'@@ -1076,8 +1554,10 @@     , reqDeleteProtectedRange     , reqUpdateProtectedRange     , reqUpdateCells+    , reqCreateDeveloperMetadata     , reqDuplicateFilterView     , reqAddConditionalFormatRule+    , reqRandomizeRange     , reqSortRange     , reqUpdateNamedRange     , reqDeleteNamedRange@@ -1090,6 +1570,8 @@     , reqUpdateEmbeddedObjectPosition     , reqDeleteRange     , reqCopyPaste+    , reqUpdateDimensionGroup+    , reqDeleteDimensionGroup     , reqAutoResizeDimensions     , reqAddSheet     , reqFindReplace@@ -1105,6 +1587,8 @@     , reqDeleteConditionalFormatRule     , reqUpdateConditionalFormatRule     , reqDeleteEmbeddedObject+    , reqDeleteDeveloperMetadata+    , reqUpdateDeveloperMetadata     , reqMergeCells     , reqAddNamedRange     , reqAddChart@@ -1115,6 +1599,7 @@     , reqUpdateChartSpec     , reqSetBasicFilter     , reqTextToColumns+    , reqAddDimensionGroup     , reqUpdateSpreadsheetProperties     , reqDeleteSheet     , reqUnmergeCells@@ -1122,6 +1607,12 @@     , reqAppendDimension     , reqSetDataValidation +    -- * LineStyle+    , LineStyle+    , lineStyle+    , lsWidth+    , lsType+     -- * DeleteConditionalFormatRuleResponse     , DeleteConditionalFormatRuleResponse     , deleteConditionalFormatRuleResponse@@ -1150,14 +1641,19 @@ spreadsheetsReadOnlyScope :: Proxy '["https://www.googleapis.com/auth/spreadsheets.readonly"] spreadsheetsReadOnlyScope = Proxy; --- | View the files in your Google Drive+-- | See and download all your Google Drive files driveReadOnlyScope :: Proxy '["https://www.googleapis.com/auth/drive.readonly"] driveReadOnlyScope = Proxy; --- | View and manage the files in your Google Drive+-- | See, edit, create, and delete all of your Google Drive files driveScope :: Proxy '["https://www.googleapis.com/auth/drive"] driveScope = Proxy; --- | View and manage your spreadsheets in Google Drive+-- | 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;++-- | See, edit, create, and delete your spreadsheets in Google Drive spreadsheetsScope :: Proxy '["https://www.googleapis.com/auth/spreadsheets"] spreadsheetsScope = Proxy;
gen/Network/Google/Sheets/Types/Product.hs view
@@ -250,8741 +250,12978 @@ -- /See:/ 'updateNamedRangeRequest' smart constructor. data UpdateNamedRangeRequest = UpdateNamedRangeRequest'     { _unrrNamedRange :: !(Maybe NamedRange)-    , _unrrFields     :: !(Maybe FieldMask)-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'UpdateNamedRangeRequest' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'unrrNamedRange'------ * 'unrrFields'-updateNamedRangeRequest-    :: UpdateNamedRangeRequest-updateNamedRangeRequest =-    UpdateNamedRangeRequest'-    { _unrrNamedRange = Nothing-    , _unrrFields = Nothing-    }---- | The named range to update with the new properties.-unrrNamedRange :: Lens' UpdateNamedRangeRequest (Maybe NamedRange)-unrrNamedRange-  = lens _unrrNamedRange-      (\ s a -> s{_unrrNamedRange = a})---- | The fields that should be updated. At least one field must be specified.--- The root \`namedRange\` is implied and should not be specified. A single--- \`\"*\"\` can be used as short-hand for listing every field.-unrrFields :: Lens' UpdateNamedRangeRequest (Maybe FieldMask)-unrrFields-  = lens _unrrFields (\ s a -> s{_unrrFields = a})--instance FromJSON UpdateNamedRangeRequest where-        parseJSON-          = withObject "UpdateNamedRangeRequest"-              (\ o ->-                 UpdateNamedRangeRequest' <$>-                   (o .:? "namedRange") <*> (o .:? "fields"))--instance ToJSON UpdateNamedRangeRequest where-        toJSON UpdateNamedRangeRequest'{..}-          = object-              (catMaybes-                 [("namedRange" .=) <$> _unrrNamedRange,-                  ("fields" .=) <$> _unrrFields])---- | The data included in a domain or series.------ /See:/ 'chartData' smart constructor.-newtype ChartData = ChartData'-    { _cdSourceRange :: Maybe ChartSourceRange-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'ChartData' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'cdSourceRange'-chartData-    :: ChartData-chartData =-    ChartData'-    { _cdSourceRange = Nothing-    }---- | The source ranges of the data.-cdSourceRange :: Lens' ChartData (Maybe ChartSourceRange)-cdSourceRange-  = lens _cdSourceRange-      (\ s a -> s{_cdSourceRange = a})--instance FromJSON ChartData where-        parseJSON-          = withObject "ChartData"-              (\ o -> ChartData' <$> (o .:? "sourceRange"))--instance ToJSON ChartData where-        toJSON ChartData'{..}-          = object-              (catMaybes [("sourceRange" .=) <$> _cdSourceRange])---- | 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])---- | Properties of a spreadsheet.------ /See:/ 'spreadsheetProperties' smart constructor.-data SpreadsheetProperties = SpreadsheetProperties'-    { _spDefaultFormat :: !(Maybe CellFormat)-    , _spLocale        :: !(Maybe Text)-    , _spAutoRecalc    :: !(Maybe SpreadsheetPropertiesAutoRecalc)-    , _spTitle         :: !(Maybe Text)-    , _spTimeZone      :: !(Maybe Text)-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'SpreadsheetProperties' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'spDefaultFormat'------ * 'spLocale'------ * 'spAutoRecalc'------ * 'spTitle'------ * 'spTimeZone'-spreadsheetProperties-    :: SpreadsheetProperties-spreadsheetProperties =-    SpreadsheetProperties'-    { _spDefaultFormat = Nothing-    , _spLocale = Nothing-    , _spAutoRecalc = Nothing-    , _spTitle = Nothing-    , _spTimeZone = Nothing-    }---- | The default format of all cells in the spreadsheet.--- CellData.effectiveFormat will not be set if the cell\'s format is equal--- to this default format. This field is read-only.-spDefaultFormat :: Lens' SpreadsheetProperties (Maybe CellFormat)-spDefaultFormat-  = lens _spDefaultFormat-      (\ s a -> s{_spDefaultFormat = a})---- | The locale of the spreadsheet in one of the following formats: * an ISO--- 639-1 language code such as \`en\` * an ISO 639-2 language code such as--- \`fil\`, if no 639-1 code exists * a combination of the ISO language--- code and country code, such as \`en_US\` Note: when updating this field,--- not all locales\/languages are supported.-spLocale :: Lens' SpreadsheetProperties (Maybe Text)-spLocale = lens _spLocale (\ s a -> s{_spLocale = a})---- | The amount of time to wait before volatile functions are recalculated.-spAutoRecalc :: Lens' SpreadsheetProperties (Maybe SpreadsheetPropertiesAutoRecalc)-spAutoRecalc-  = lens _spAutoRecalc (\ s a -> s{_spAutoRecalc = a})---- | The title of the spreadsheet.-spTitle :: Lens' SpreadsheetProperties (Maybe Text)-spTitle = lens _spTitle (\ s a -> s{_spTitle = a})---- | The time zone of the spreadsheet, in CLDR format such as--- \`America\/New_York\`. If the time zone isn\'t recognized, this may be a--- custom time zone such as \`GMT-07:00\`.-spTimeZone :: Lens' SpreadsheetProperties (Maybe Text)-spTimeZone-  = lens _spTimeZone (\ s a -> s{_spTimeZone = a})--instance FromJSON SpreadsheetProperties where-        parseJSON-          = withObject "SpreadsheetProperties"-              (\ o ->-                 SpreadsheetProperties' <$>-                   (o .:? "defaultFormat") <*> (o .:? "locale") <*>-                     (o .:? "autoRecalc")-                     <*> (o .:? "title")-                     <*> (o .:? "timeZone"))--instance ToJSON SpreadsheetProperties where-        toJSON SpreadsheetProperties'{..}-          = object-              (catMaybes-                 [("defaultFormat" .=) <$> _spDefaultFormat,-                  ("locale" .=) <$> _spLocale,-                  ("autoRecalc" .=) <$> _spAutoRecalc,-                  ("title" .=) <$> _spTitle,-                  ("timeZone" .=) <$> _spTimeZone])---- | The borders of the cell.------ /See:/ 'bOrders' smart constructor.-data BOrders = BOrders'-    { _boBottom :: !(Maybe BOrder)-    , _boLeft   :: !(Maybe BOrder)-    , _boRight  :: !(Maybe BOrder)-    , _boTop    :: !(Maybe BOrder)-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'BOrders' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'boBottom'------ * 'boLeft'------ * 'boRight'------ * 'boTop'-bOrders-    :: BOrders-bOrders =-    BOrders'-    { _boBottom = Nothing-    , _boLeft = Nothing-    , _boRight = Nothing-    , _boTop = Nothing-    }---- | The bottom border of the cell.-boBottom :: Lens' BOrders (Maybe BOrder)-boBottom = lens _boBottom (\ s a -> s{_boBottom = a})---- | The left border of the cell.-boLeft :: Lens' BOrders (Maybe BOrder)-boLeft = lens _boLeft (\ s a -> s{_boLeft = a})---- | The right border of the cell.-boRight :: Lens' BOrders (Maybe BOrder)-boRight = lens _boRight (\ s a -> s{_boRight = a})---- | The top border of the cell.-boTop :: Lens' BOrders (Maybe BOrder)-boTop = lens _boTop (\ s a -> s{_boTop = a})--instance FromJSON BOrders where-        parseJSON-          = withObject "BOrders"-              (\ o ->-                 BOrders' <$>-                   (o .:? "bottom") <*> (o .:? "left") <*>-                     (o .:? "right")-                     <*> (o .:? "top"))--instance ToJSON BOrders where-        toJSON BOrders'{..}-          = object-              (catMaybes-                 [("bottom" .=) <$> _boBottom,-                  ("left" .=) <$> _boLeft, ("right" .=) <$> _boRight,-                  ("top" .=) <$> _boTop])---- | A run of a text format. The format of this run continues until the start--- index of the next run. When updating, all fields must be set.------ /See:/ 'textFormatRun' smart constructor.-data TextFormatRun = TextFormatRun'-    { _tfrFormat     :: !(Maybe TextFormat)-    , _tfrStartIndex :: !(Maybe (Textual Int32))-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'TextFormatRun' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'tfrFormat'------ * 'tfrStartIndex'-textFormatRun-    :: TextFormatRun-textFormatRun =-    TextFormatRun'-    { _tfrFormat = Nothing-    , _tfrStartIndex = Nothing-    }---- | The format of this run. Absent values inherit the cell\'s format.-tfrFormat :: Lens' TextFormatRun (Maybe TextFormat)-tfrFormat-  = lens _tfrFormat (\ s a -> s{_tfrFormat = a})---- | The character index where this run starts.-tfrStartIndex :: Lens' TextFormatRun (Maybe Int32)-tfrStartIndex-  = lens _tfrStartIndex-      (\ s a -> s{_tfrStartIndex = a})-      . mapping _Coerce--instance FromJSON TextFormatRun where-        parseJSON-          = withObject "TextFormatRun"-              (\ o ->-                 TextFormatRun' <$>-                   (o .:? "format") <*> (o .:? "startIndex"))--instance ToJSON TextFormatRun where-        toJSON TextFormatRun'{..}-          = object-              (catMaybes-                 [("format" .=) <$> _tfrFormat,-                  ("startIndex" .=) <$> _tfrStartIndex])---- | Adds a new sheet. When a sheet is added at a given index, all subsequent--- sheets\' indexes are incremented. To add an object sheet, use--- AddChartRequest instead and specify EmbeddedObjectPosition.sheetId or--- EmbeddedObjectPosition.newSheet.------ /See:/ 'addSheetRequest' smart constructor.-newtype AddSheetRequest = AddSheetRequest'-    { _asrProperties :: Maybe SheetProperties-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'AddSheetRequest' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'asrProperties'-addSheetRequest-    :: AddSheetRequest-addSheetRequest =-    AddSheetRequest'-    { _asrProperties = Nothing-    }---- | The properties the new sheet should have. All properties are optional.--- 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])---- | Copies data from the source to the destination.------ /See:/ 'copyPasteRequest' smart constructor.-data CopyPasteRequest = CopyPasteRequest'-    { _cprDestination      :: !(Maybe GridRange)-    , _cprSource           :: !(Maybe GridRange)-    , _cprPasteOrientation :: !(Maybe CopyPasteRequestPasteOrientation)-    , _cprPasteType        :: !(Maybe CopyPasteRequestPasteType)-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'CopyPasteRequest' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'cprDestination'------ * 'cprSource'------ * 'cprPasteOrientation'------ * 'cprPasteType'-copyPasteRequest-    :: CopyPasteRequest-copyPasteRequest =-    CopyPasteRequest'-    { _cprDestination = Nothing-    , _cprSource = Nothing-    , _cprPasteOrientation = Nothing-    , _cprPasteType = Nothing-    }---- | The location to paste to. If the range covers a span that\'s a multiple--- of the source\'s height or width, then the data will be repeated to fill--- in the destination range. If the range is smaller than the source range,--- the entire source data will still be copied (beyond the end of the--- destination range).-cprDestination :: Lens' CopyPasteRequest (Maybe GridRange)-cprDestination-  = lens _cprDestination-      (\ s a -> s{_cprDestination = a})---- | The source range to copy.-cprSource :: Lens' CopyPasteRequest (Maybe GridRange)-cprSource-  = lens _cprSource (\ s a -> s{_cprSource = a})---- | How that data should be oriented when pasting.-cprPasteOrientation :: Lens' CopyPasteRequest (Maybe CopyPasteRequestPasteOrientation)-cprPasteOrientation-  = lens _cprPasteOrientation-      (\ s a -> s{_cprPasteOrientation = a})---- | What kind of data to paste.-cprPasteType :: Lens' CopyPasteRequest (Maybe CopyPasteRequestPasteType)-cprPasteType-  = lens _cprPasteType (\ s a -> s{_cprPasteType = a})--instance FromJSON CopyPasteRequest where-        parseJSON-          = withObject "CopyPasteRequest"-              (\ o ->-                 CopyPasteRequest' <$>-                   (o .:? "destination") <*> (o .:? "source") <*>-                     (o .:? "pasteOrientation")-                     <*> (o .:? "pasteType"))--instance ToJSON CopyPasteRequest where-        toJSON CopyPasteRequest'{..}-          = object-              (catMaybes-                 [("destination" .=) <$> _cprDestination,-                  ("source" .=) <$> _cprSource,-                  ("pasteOrientation" .=) <$> _cprPasteOrientation,-                  ("pasteType" .=) <$> _cprPasteType])---- | A range on a sheet. All indexes are zero-based. Indexes are half open,--- e.g the start index is inclusive and the end index is exclusive ----- [start_index, end_index). Missing indexes indicate the range is--- unbounded on that side. For example, if \`\"Sheet1\"\` is sheet ID 0,--- then: \`Sheet1!A1:A1 == sheet_id: 0, start_row_index: 0, end_row_index:--- 1, start_column_index: 0, end_column_index: 1\` \`Sheet1!A3:B4 ==--- sheet_id: 0, start_row_index: 2, end_row_index: 4, start_column_index:--- 0, end_column_index: 2\` \`Sheet1!A:B == sheet_id: 0,--- start_column_index: 0, end_column_index: 2\` \`Sheet1!A5:B == sheet_id:--- 0, start_row_index: 4, start_column_index: 0, end_column_index: 2\`--- \`Sheet1 == sheet_id:0\` The start index must always be less than or--- equal to the end index. If the start index equals the end index, then--- the range is empty. Empty ranges are typically not meaningful and are--- usually rendered in the UI as \`#REF!\`.------ /See:/ 'gridRange' smart constructor.-data GridRange = GridRange'-    { _grEndColumnIndex   :: !(Maybe (Textual Int32))-    , _grStartColumnIndex :: !(Maybe (Textual Int32))-    , _grEndRowIndex      :: !(Maybe (Textual Int32))-    , _grStartRowIndex    :: !(Maybe (Textual Int32))-    , _grSheetId          :: !(Maybe (Textual Int32))-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'GridRange' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'grEndColumnIndex'------ * 'grStartColumnIndex'------ * 'grEndRowIndex'------ * 'grStartRowIndex'------ * 'grSheetId'-gridRange-    :: GridRange-gridRange =-    GridRange'-    { _grEndColumnIndex = Nothing-    , _grStartColumnIndex = Nothing-    , _grEndRowIndex = Nothing-    , _grStartRowIndex = Nothing-    , _grSheetId = Nothing-    }---- | The end column (exclusive) of the range, or not set if unbounded.-grEndColumnIndex :: Lens' GridRange (Maybe Int32)-grEndColumnIndex-  = lens _grEndColumnIndex-      (\ s a -> s{_grEndColumnIndex = a})-      . mapping _Coerce---- | The start column (inclusive) of the range, or not set if unbounded.-grStartColumnIndex :: Lens' GridRange (Maybe Int32)-grStartColumnIndex-  = lens _grStartColumnIndex-      (\ s a -> s{_grStartColumnIndex = a})-      . mapping _Coerce---- | The end row (exclusive) of the range, or not set if unbounded.-grEndRowIndex :: Lens' GridRange (Maybe Int32)-grEndRowIndex-  = lens _grEndRowIndex-      (\ s a -> s{_grEndRowIndex = a})-      . mapping _Coerce---- | The start row (inclusive) of the range, or not set if unbounded.-grStartRowIndex :: Lens' GridRange (Maybe Int32)-grStartRowIndex-  = lens _grStartRowIndex-      (\ s a -> s{_grStartRowIndex = a})-      . mapping _Coerce---- | The sheet this range is on.-grSheetId :: Lens' GridRange (Maybe Int32)-grSheetId-  = lens _grSheetId (\ s a -> s{_grSheetId = a}) .-      mapping _Coerce--instance FromJSON GridRange where-        parseJSON-          = withObject "GridRange"-              (\ o ->-                 GridRange' <$>-                   (o .:? "endColumnIndex") <*>-                     (o .:? "startColumnIndex")-                     <*> (o .:? "endRowIndex")-                     <*> (o .:? "startRowIndex")-                     <*> (o .:? "sheetId"))--instance ToJSON GridRange where-        toJSON GridRange'{..}-          = object-              (catMaybes-                 [("endColumnIndex" .=) <$> _grEndColumnIndex,-                  ("startColumnIndex" .=) <$> _grStartColumnIndex,-                  ("endRowIndex" .=) <$> _grEndRowIndex,-                  ("startRowIndex" .=) <$> _grStartRowIndex,-                  ("sheetId" .=) <$> _grSheetId])---- | The result of adding a filter view.------ /See:/ 'addFilterViewResponse' smart constructor.-newtype AddFilterViewResponse = AddFilterViewResponse'-    { _afvrFilter :: Maybe FilterView-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'AddFilterViewResponse' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'afvrFilter'-addFilterViewResponse-    :: AddFilterViewResponse-addFilterViewResponse =-    AddFilterViewResponse'-    { _afvrFilter = Nothing-    }---- | The newly added filter view.-afvrFilter :: Lens' AddFilterViewResponse (Maybe FilterView)-afvrFilter-  = lens _afvrFilter (\ s a -> s{_afvrFilter = a})--instance FromJSON AddFilterViewResponse where-        parseJSON-          = withObject "AddFilterViewResponse"-              (\ o -> AddFilterViewResponse' <$> (o .:? "filter"))--instance ToJSON AddFilterViewResponse where-        toJSON AddFilterViewResponse'{..}-          = object (catMaybes [("filter" .=) <$> _afvrFilter])---- | A condition that can evaluate to true or false. BooleanConditions are--- used by conditional formatting, data validation, and the criteria in--- filters.------ /See:/ 'booleanCondition' smart constructor.-data BooleanCondition = BooleanCondition'-    { _bcValues :: !(Maybe [ConditionValue])-    , _bcType   :: !(Maybe BooleanConditionType)-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'BooleanCondition' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'bcValues'------ * 'bcType'-booleanCondition-    :: BooleanCondition-booleanCondition =-    BooleanCondition'-    { _bcValues = Nothing-    , _bcType = Nothing-    }---- | The values of the condition. The number of supported values depends on--- the condition type. Some support zero values, others one or two values,--- and ConditionType.ONE_OF_LIST supports an arbitrary number of values.-bcValues :: Lens' BooleanCondition [ConditionValue]-bcValues-  = lens _bcValues (\ s a -> s{_bcValues = a}) .-      _Default-      . _Coerce---- | The type of condition.-bcType :: Lens' BooleanCondition (Maybe BooleanConditionType)-bcType = lens _bcType (\ s a -> s{_bcType = a})--instance FromJSON BooleanCondition where-        parseJSON-          = withObject "BooleanCondition"-              (\ o ->-                 BooleanCondition' <$>-                   (o .:? "values" .!= mempty) <*> (o .:? "type"))--instance ToJSON BooleanCondition where-        toJSON BooleanCondition'{..}-          = object-              (catMaybes-                 [("values" .=) <$> _bcValues,-                  ("type" .=) <$> _bcType])---- | Automatically resizes one or more dimensions based on the contents of--- the cells in that dimension.------ /See:/ 'autoResizeDimensionsRequest' smart constructor.-newtype AutoResizeDimensionsRequest = AutoResizeDimensionsRequest'-    { _ardrDimensions :: Maybe DimensionRange-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'AutoResizeDimensionsRequest' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'ardrDimensions'-autoResizeDimensionsRequest-    :: AutoResizeDimensionsRequest-autoResizeDimensionsRequest =-    AutoResizeDimensionsRequest'-    { _ardrDimensions = Nothing-    }---- | The dimensions to automatically resize. Only COLUMNS are supported.-ardrDimensions :: Lens' AutoResizeDimensionsRequest (Maybe DimensionRange)-ardrDimensions-  = lens _ardrDimensions-      (\ s a -> s{_ardrDimensions = a})--instance FromJSON AutoResizeDimensionsRequest where-        parseJSON-          = withObject "AutoResizeDimensionsRequest"-              (\ o ->-                 AutoResizeDimensionsRequest' <$>-                   (o .:? "dimensions"))--instance ToJSON AutoResizeDimensionsRequest where-        toJSON AutoResizeDimensionsRequest'{..}-          = object-              (catMaybes [("dimensions" .=) <$> _ardrDimensions])---- | 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'-    { _sData               :: !(Maybe [GridData])-    , _sMerges             :: !(Maybe [GridRange])-    , _sProtectedRanges    :: !(Maybe [ProtectedRange])-    , _sBandedRanges       :: !(Maybe [BandedRange])-    , _sCharts             :: !(Maybe [EmbeddedChart])-    , _sBasicFilter        :: !(Maybe BasicFilter)-    , _sConditionalFormats :: !(Maybe [ConditionalFormatRule])-    , _sFilterViews        :: !(Maybe [FilterView])-    , _sProperties         :: !(Maybe SheetProperties)-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'Sheet' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'sData'------ * 'sMerges'------ * 'sProtectedRanges'------ * 'sBandedRanges'------ * 'sCharts'------ * 'sBasicFilter'------ * 'sConditionalFormats'------ * 'sFilterViews'------ * 'sProperties'-sheet-    :: Sheet-sheet =-    Sheet'-    { _sData = Nothing-    , _sMerges = Nothing-    , _sProtectedRanges = Nothing-    , _sBandedRanges = Nothing-    , _sCharts = Nothing-    , _sBasicFilter = Nothing-    , _sConditionalFormats = Nothing-    , _sFilterViews = Nothing-    , _sProperties = Nothing-    }---- | Data in the grid, if this is a grid sheet. The number of GridData--- objects returned is dependent on the number of ranges requested on this--- sheet. For example, if this is representing \`Sheet1\`, and the--- spreadsheet was requested with ranges \`Sheet1!A1:C10\` and--- \`Sheet1!D15:E20\`, then the first GridData will have a--- startRow\/startColumn of \`0\`, while the second one will have--- \`startRow 14\` (zero-based row 15), and \`startColumn 3\` (zero-based--- column D).-sData :: Lens' Sheet [GridData]-sData-  = lens _sData (\ s a -> s{_sData = a}) . _Default .-      _Coerce---- | The ranges that are merged together.-sMerges :: Lens' Sheet [GridRange]-sMerges-  = lens _sMerges (\ s a -> s{_sMerges = a}) . _Default-      . _Coerce---- | The protected ranges in this sheet.-sProtectedRanges :: Lens' Sheet [ProtectedRange]-sProtectedRanges-  = lens _sProtectedRanges-      (\ s a -> s{_sProtectedRanges = a})-      . _Default-      . _Coerce---- | The banded (i.e. 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 conditional format rules in this sheet.-sConditionalFormats :: Lens' Sheet [ConditionalFormatRule]-sConditionalFormats-  = lens _sConditionalFormats-      (\ s a -> s{_sConditionalFormats = a})-      . _Default-      . _Coerce---- | The filter views in this sheet.-sFilterViews :: Lens' Sheet [FilterView]-sFilterViews-  = lens _sFilterViews (\ s a -> s{_sFilterViews = a})-      . _Default-      . _Coerce---- | The properties of the sheet.-sProperties :: Lens' Sheet (Maybe SheetProperties)-sProperties-  = lens _sProperties (\ s a -> s{_sProperties = a})--instance FromJSON Sheet where-        parseJSON-          = withObject "Sheet"-              (\ o ->-                 Sheet' <$>-                   (o .:? "data" .!= mempty) <*>-                     (o .:? "merges" .!= mempty)-                     <*> (o .:? "protectedRanges" .!= mempty)-                     <*> (o .:? "bandedRanges" .!= mempty)-                     <*> (o .:? "charts" .!= mempty)-                     <*> (o .:? "basicFilter")-                     <*> (o .:? "conditionalFormats" .!= mempty)-                     <*> (o .:? "filterViews" .!= mempty)-                     <*> (o .:? "properties"))--instance ToJSON Sheet where-        toJSON Sheet'{..}-          = object-              (catMaybes-                 [("data" .=) <$> _sData, ("merges" .=) <$> _sMerges,-                  ("protectedRanges" .=) <$> _sProtectedRanges,-                  ("bandedRanges" .=) <$> _sBandedRanges,-                  ("charts" .=) <$> _sCharts,-                  ("basicFilter" .=) <$> _sBasicFilter,-                  ("conditionalFormats" .=) <$> _sConditionalFormats,-                  ("filterViews" .=) <$> _sFilterViews,-                  ("properties" .=) <$> _sProperties])---- | A coordinate in a sheet. All indexes are zero-based.------ /See:/ 'gridCoordinate' smart constructor.-data GridCoordinate = GridCoordinate'-    { _gcColumnIndex :: !(Maybe (Textual Int32))-    , _gcRowIndex    :: !(Maybe (Textual Int32))-    , _gcSheetId     :: !(Maybe (Textual Int32))-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'GridCoordinate' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'gcColumnIndex'------ * 'gcRowIndex'------ * 'gcSheetId'-gridCoordinate-    :: GridCoordinate-gridCoordinate =-    GridCoordinate'-    { _gcColumnIndex = Nothing-    , _gcRowIndex = Nothing-    , _gcSheetId = Nothing-    }---- | The column index of the coordinate.-gcColumnIndex :: Lens' GridCoordinate (Maybe Int32)-gcColumnIndex-  = lens _gcColumnIndex-      (\ s a -> s{_gcColumnIndex = a})-      . mapping _Coerce---- | The row index of the coordinate.-gcRowIndex :: Lens' GridCoordinate (Maybe Int32)-gcRowIndex-  = lens _gcRowIndex (\ s a -> s{_gcRowIndex = a}) .-      mapping _Coerce---- | The sheet this coordinate is on.-gcSheetId :: Lens' GridCoordinate (Maybe Int32)-gcSheetId-  = lens _gcSheetId (\ s a -> s{_gcSheetId = a}) .-      mapping _Coerce--instance FromJSON GridCoordinate where-        parseJSON-          = withObject "GridCoordinate"-              (\ o ->-                 GridCoordinate' <$>-                   (o .:? "columnIndex") <*> (o .:? "rowIndex") <*>-                     (o .:? "sheetId"))--instance ToJSON GridCoordinate where-        toJSON GridCoordinate'{..}-          = object-              (catMaybes-                 [("columnIndex" .=) <$> _gcColumnIndex,-                  ("rowIndex" .=) <$> _gcRowIndex,-                  ("sheetId" .=) <$> _gcSheetId])---- | 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 FieldMask)-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'UpdateEmbeddedObjectPositionRequest' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'ueoprNewPosition'------ * 'ueoprObjectId'------ * 'ueoprFields'-updateEmbeddedObjectPositionRequest-    :: UpdateEmbeddedObjectPositionRequest-updateEmbeddedObjectPositionRequest =-    UpdateEmbeddedObjectPositionRequest'-    { _ueoprNewPosition = Nothing-    , _ueoprObjectId = Nothing-    , _ueoprFields = Nothing-    }---- | An explicit position to move the embedded object to. If--- newPosition.sheetId is set, a new sheet with that ID will be created. If--- newPosition.newSheet is set to true, a new sheet will be created with an--- ID that will be chosen for you.-ueoprNewPosition :: Lens' UpdateEmbeddedObjectPositionRequest (Maybe EmbeddedObjectPosition)-ueoprNewPosition-  = lens _ueoprNewPosition-      (\ s a -> s{_ueoprNewPosition = a})---- | The ID of the object to moved.-ueoprObjectId :: Lens' UpdateEmbeddedObjectPositionRequest (Maybe Int32)-ueoprObjectId-  = lens _ueoprObjectId-      (\ s a -> s{_ueoprObjectId = a})-      . mapping _Coerce---- | The fields of OverlayPosition that should be updated when setting a new--- position. Used only if newPosition.overlayPosition is set, in which case--- at least one field must be specified. The root--- \`newPosition.overlayPosition\` is implied and should not be specified.--- A single \`\"*\"\` can be used as short-hand for listing every field.-ueoprFields :: Lens' UpdateEmbeddedObjectPositionRequest (Maybe FieldMask)-ueoprFields-  = lens _ueoprFields (\ s a -> s{_ueoprFields = a})--instance FromJSON UpdateEmbeddedObjectPositionRequest-         where-        parseJSON-          = withObject "UpdateEmbeddedObjectPositionRequest"-              (\ o ->-                 UpdateEmbeddedObjectPositionRequest' <$>-                   (o .:? "newPosition") <*> (o .:? "objectId") <*>-                     (o .:? "fields"))--instance ToJSON UpdateEmbeddedObjectPositionRequest-         where-        toJSON UpdateEmbeddedObjectPositionRequest'{..}-          = object-              (catMaybes-                 [("newPosition" .=) <$> _ueoprNewPosition,-                  ("objectId" .=) <$> _ueoprObjectId,-                  ("fields" .=) <$> _ueoprFields])---- | A rule that may or may not match, depending on the condition.------ /See:/ 'booleanRule' smart constructor.-data BooleanRule = BooleanRule'-    { _brFormat    :: !(Maybe CellFormat)-    , _brCondition :: !(Maybe BooleanCondition)-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'BooleanRule' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'brFormat'------ * 'brCondition'-booleanRule-    :: BooleanRule-booleanRule =-    BooleanRule'-    { _brFormat = Nothing-    , _brCondition = Nothing-    }---- | The format to apply. Conditional formatting can only apply a subset of--- formatting: bold, italic, strikethrough, foreground color & background--- color.-brFormat :: Lens' BooleanRule (Maybe CellFormat)-brFormat = lens _brFormat (\ s a -> s{_brFormat = a})---- | The condition of the rule. If the condition evaluates to true, the--- format will be applied.-brCondition :: Lens' BooleanRule (Maybe BooleanCondition)-brCondition-  = lens _brCondition (\ s a -> s{_brCondition = a})--instance FromJSON BooleanRule where-        parseJSON-          = withObject "BooleanRule"-              (\ o ->-                 BooleanRule' <$>-                   (o .:? "format") <*> (o .:? "condition"))--instance ToJSON BooleanRule where-        toJSON BooleanRule'{..}-          = object-              (catMaybes-                 [("format" .=) <$> _brFormat,-                  ("condition" .=) <$> _brCondition])---- | A combination of a source range and how to extend that source.------ /See:/ 'sourceAndDestination' smart constructor.-data SourceAndDestination = SourceAndDestination'-    { _sadDimension  :: !(Maybe SourceAndDestinationDimension)-    , _sadSource     :: !(Maybe GridRange)-    , _sadFillLength :: !(Maybe (Textual Int32))-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'SourceAndDestination' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'sadDimension'------ * 'sadSource'------ * 'sadFillLength'-sourceAndDestination-    :: SourceAndDestination-sourceAndDestination =-    SourceAndDestination'-    { _sadDimension = Nothing-    , _sadSource = Nothing-    , _sadFillLength = Nothing-    }---- | The dimension that data should be filled into.-sadDimension :: Lens' SourceAndDestination (Maybe SourceAndDestinationDimension)-sadDimension-  = lens _sadDimension (\ s a -> s{_sadDimension = a})---- | The location of the data to use as the source of the autofill.-sadSource :: Lens' SourceAndDestination (Maybe GridRange)-sadSource-  = lens _sadSource (\ s a -> s{_sadSource = a})---- | The number of rows or columns that data should be filled into. Positive--- numbers expand beyond the last row or last column of the source.--- Negative numbers expand before the first row or first column of the--- source.-sadFillLength :: Lens' SourceAndDestination (Maybe Int32)-sadFillLength-  = lens _sadFillLength-      (\ s a -> s{_sadFillLength = a})-      . mapping _Coerce--instance FromJSON SourceAndDestination where-        parseJSON-          = withObject "SourceAndDestination"-              (\ o ->-                 SourceAndDestination' <$>-                   (o .:? "dimension") <*> (o .:? "source") <*>-                     (o .:? "fillLength"))--instance ToJSON SourceAndDestination where-        toJSON SourceAndDestination'{..}-          = object-              (catMaybes-                 [("dimension" .=) <$> _sadDimension,-                  ("source" .=) <$> _sadSource,-                  ("fillLength" .=) <$> _sadFillLength])---- | Inserts data into the spreadsheet starting at the specified coordinate.------ /See:/ 'pasteDataRequest' smart constructor.-data PasteDataRequest = PasteDataRequest'-    { _pdrData       :: !(Maybe Text)-    , _pdrCoordinate :: !(Maybe GridCoordinate)-    , _pdrHTML       :: !(Maybe Bool)-    , _pdrType       :: !(Maybe PasteDataRequestType)-    , _pdrDelimiter  :: !(Maybe Text)-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'PasteDataRequest' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'pdrData'------ * 'pdrCoordinate'------ * 'pdrHTML'------ * 'pdrType'------ * 'pdrDelimiter'-pasteDataRequest-    :: PasteDataRequest-pasteDataRequest =-    PasteDataRequest'-    { _pdrData = Nothing-    , _pdrCoordinate = Nothing-    , _pdrHTML = Nothing-    , _pdrType = Nothing-    , _pdrDelimiter = Nothing-    }---- | The data to insert.-pdrData :: Lens' PasteDataRequest (Maybe Text)-pdrData = lens _pdrData (\ s a -> s{_pdrData = a})---- | The coordinate at which the data should start being inserted.-pdrCoordinate :: Lens' PasteDataRequest (Maybe GridCoordinate)-pdrCoordinate-  = lens _pdrCoordinate-      (\ s a -> s{_pdrCoordinate = a})---- | True if the data is HTML.-pdrHTML :: Lens' PasteDataRequest (Maybe Bool)-pdrHTML = lens _pdrHTML (\ s a -> s{_pdrHTML = a})---- | How the data should be pasted.-pdrType :: Lens' PasteDataRequest (Maybe PasteDataRequestType)-pdrType = lens _pdrType (\ s a -> s{_pdrType = a})---- | The delimiter in the data.-pdrDelimiter :: Lens' PasteDataRequest (Maybe Text)-pdrDelimiter-  = lens _pdrDelimiter (\ s a -> s{_pdrDelimiter = a})--instance FromJSON PasteDataRequest where-        parseJSON-          = withObject "PasteDataRequest"-              (\ o ->-                 PasteDataRequest' <$>-                   (o .:? "data") <*> (o .:? "coordinate") <*>-                     (o .:? "html")-                     <*> (o .:? "type")-                     <*> (o .:? "delimiter"))--instance ToJSON PasteDataRequest where-        toJSON PasteDataRequest'{..}-          = object-              (catMaybes-                 [("data" .=) <$> _pdrData,-                  ("coordinate" .=) <$> _pdrCoordinate,-                  ("html" .=) <$> _pdrHTML, ("type" .=) <$> _pdrType,-                  ("delimiter" .=) <$> _pdrDelimiter])---- | Adds new cells after the last row with data in a sheet, inserting new--- rows into the sheet if necessary.------ /See:/ 'appendCellsRequest' smart constructor.-data AppendCellsRequest = AppendCellsRequest'-    { _acrRows    :: !(Maybe [RowData])-    , _acrSheetId :: !(Maybe (Textual Int32))-    , _acrFields  :: !(Maybe FieldMask)-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'AppendCellsRequest' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'acrRows'------ * 'acrSheetId'------ * 'acrFields'-appendCellsRequest-    :: AppendCellsRequest-appendCellsRequest =-    AppendCellsRequest'-    { _acrRows = Nothing-    , _acrSheetId = Nothing-    , _acrFields = Nothing-    }---- | The data to append.-acrRows :: Lens' AppendCellsRequest [RowData]-acrRows-  = lens _acrRows (\ s a -> s{_acrRows = a}) . _Default-      . _Coerce---- | The sheet ID to append the data to.-acrSheetId :: Lens' AppendCellsRequest (Maybe Int32)-acrSheetId-  = lens _acrSheetId (\ s a -> s{_acrSheetId = a}) .-      mapping _Coerce---- | The fields of CellData that should be updated. At least one field must--- be specified. The root is the CellData; \'row.values.\' should not be--- specified. A single \`\"*\"\` can be used as short-hand for listing--- every field.-acrFields :: Lens' AppendCellsRequest (Maybe FieldMask)-acrFields-  = lens _acrFields (\ s a -> s{_acrFields = a})--instance FromJSON AppendCellsRequest where-        parseJSON-          = withObject "AppendCellsRequest"-              (\ o ->-                 AppendCellsRequest' <$>-                   (o .:? "rows" .!= mempty) <*> (o .:? "sheetId") <*>-                     (o .:? "fields"))--instance ToJSON AppendCellsRequest where-        toJSON AppendCellsRequest'{..}-          = object-              (catMaybes-                 [("rows" .=) <$> _acrRows,-                  ("sheetId" .=) <$> _acrSheetId,-                  ("fields" .=) <$> _acrFields])---- | The result of the find\/replace.------ /See:/ 'findReplaceResponse' smart constructor.-data FindReplaceResponse = FindReplaceResponse'-    { _frrValuesChanged      :: !(Maybe (Textual Int32))-    , _frrFormulasChanged    :: !(Maybe (Textual Int32))-    , _frrRowsChanged        :: !(Maybe (Textual Int32))-    , _frrSheetsChanged      :: !(Maybe (Textual Int32))-    , _frrOccurrencesChanged :: !(Maybe (Textual Int32))-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'FindReplaceResponse' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'frrValuesChanged'------ * 'frrFormulasChanged'------ * 'frrRowsChanged'------ * 'frrSheetsChanged'------ * 'frrOccurrencesChanged'-findReplaceResponse-    :: FindReplaceResponse-findReplaceResponse =-    FindReplaceResponse'-    { _frrValuesChanged = Nothing-    , _frrFormulasChanged = Nothing-    , _frrRowsChanged = Nothing-    , _frrSheetsChanged = Nothing-    , _frrOccurrencesChanged = Nothing-    }---- | The number of non-formula cells changed.-frrValuesChanged :: Lens' FindReplaceResponse (Maybe Int32)-frrValuesChanged-  = lens _frrValuesChanged-      (\ s a -> s{_frrValuesChanged = a})-      . mapping _Coerce---- | The number of formula cells changed.-frrFormulasChanged :: Lens' FindReplaceResponse (Maybe Int32)-frrFormulasChanged-  = lens _frrFormulasChanged-      (\ s a -> s{_frrFormulasChanged = a})-      . mapping _Coerce---- | The number of rows changed.-frrRowsChanged :: Lens' FindReplaceResponse (Maybe Int32)-frrRowsChanged-  = lens _frrRowsChanged-      (\ s a -> s{_frrRowsChanged = a})-      . mapping _Coerce---- | The number of sheets changed.-frrSheetsChanged :: Lens' FindReplaceResponse (Maybe Int32)-frrSheetsChanged-  = lens _frrSheetsChanged-      (\ s a -> s{_frrSheetsChanged = a})-      . mapping _Coerce---- | The number of occurrences (possibly multiple within a cell) changed. For--- example, if replacing \`\"e\"\` with \`\"o\"\` in \`\"Google Sheets\"\`,--- this would be \`\"3\"\` because \`\"Google Sheets\"\` -> \`\"Googlo--- Shoots\"\`.-frrOccurrencesChanged :: Lens' FindReplaceResponse (Maybe Int32)-frrOccurrencesChanged-  = lens _frrOccurrencesChanged-      (\ s a -> s{_frrOccurrencesChanged = a})-      . mapping _Coerce--instance FromJSON FindReplaceResponse where-        parseJSON-          = withObject "FindReplaceResponse"-              (\ o ->-                 FindReplaceResponse' <$>-                   (o .:? "valuesChanged") <*> (o .:? "formulasChanged")-                     <*> (o .:? "rowsChanged")-                     <*> (o .:? "sheetsChanged")-                     <*> (o .:? "occurrencesChanged"))--instance ToJSON FindReplaceResponse where-        toJSON FindReplaceResponse'{..}-          = object-              (catMaybes-                 [("valuesChanged" .=) <$> _frrValuesChanged,-                  ("formulasChanged" .=) <$> _frrFormulasChanged,-                  ("rowsChanged" .=) <$> _frrRowsChanged,-                  ("sheetsChanged" .=) <$> _frrSheetsChanged,-                  ("occurrencesChanged" .=) <$>-                    _frrOccurrencesChanged])---- | A </chart/interactive/docs/gallery/piechart pie chart>.------ /See:/ 'pieChartSpec' smart constructor.-data PieChartSpec = PieChartSpec'-    { _pcsPieHole          :: !(Maybe (Textual Double))-    , _pcsLegendPosition   :: !(Maybe PieChartSpecLegendPosition)-    , _pcsDomain           :: !(Maybe ChartData)-    , _pcsSeries           :: !(Maybe ChartData)-    , _pcsThreeDimensional :: !(Maybe Bool)-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'PieChartSpec' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'pcsPieHole'------ * 'pcsLegendPosition'------ * 'pcsDomain'------ * 'pcsSeries'------ * 'pcsThreeDimensional'-pieChartSpec-    :: PieChartSpec-pieChartSpec =-    PieChartSpec'-    { _pcsPieHole = Nothing-    , _pcsLegendPosition = Nothing-    , _pcsDomain = Nothing-    , _pcsSeries = Nothing-    , _pcsThreeDimensional = Nothing-    }---- | The size of the hole in the pie chart.-pcsPieHole :: Lens' PieChartSpec (Maybe Double)-pcsPieHole-  = lens _pcsPieHole (\ s a -> s{_pcsPieHole = a}) .-      mapping _Coerce---- | Where the legend of the pie chart should be drawn.-pcsLegendPosition :: Lens' PieChartSpec (Maybe PieChartSpecLegendPosition)-pcsLegendPosition-  = lens _pcsLegendPosition-      (\ s a -> s{_pcsLegendPosition = a})---- | The data that covers the domain of the pie chart.-pcsDomain :: Lens' PieChartSpec (Maybe ChartData)-pcsDomain-  = lens _pcsDomain (\ s a -> s{_pcsDomain = a})---- | The data that covers the one and only series of the pie chart.-pcsSeries :: Lens' PieChartSpec (Maybe ChartData)-pcsSeries-  = lens _pcsSeries (\ s a -> s{_pcsSeries = a})---- | True if the pie is three dimensional.-pcsThreeDimensional :: Lens' PieChartSpec (Maybe Bool)-pcsThreeDimensional-  = lens _pcsThreeDimensional-      (\ s a -> s{_pcsThreeDimensional = a})--instance FromJSON PieChartSpec where-        parseJSON-          = withObject "PieChartSpec"-              (\ o ->-                 PieChartSpec' <$>-                   (o .:? "pieHole") <*> (o .:? "legendPosition") <*>-                     (o .:? "domain")-                     <*> (o .:? "series")-                     <*> (o .:? "threeDimensional"))--instance ToJSON PieChartSpec where-        toJSON PieChartSpec'{..}-          = object-              (catMaybes-                 [("pieHole" .=) <$> _pcsPieHole,-                  ("legendPosition" .=) <$> _pcsLegendPosition,-                  ("domain" .=) <$> _pcsDomain,-                  ("series" .=) <$> _pcsSeries,-                  ("threeDimensional" .=) <$> _pcsThreeDimensional])---- | 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 FieldMask)-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'UpdateFilterViewRequest' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'ufvrFilter'------ * 'ufvrFields'-updateFilterViewRequest-    :: UpdateFilterViewRequest-updateFilterViewRequest =-    UpdateFilterViewRequest'-    { _ufvrFilter = Nothing-    , _ufvrFields = Nothing-    }---- | The new properties of the filter view.-ufvrFilter :: Lens' UpdateFilterViewRequest (Maybe FilterView)-ufvrFilter-  = lens _ufvrFilter (\ s a -> s{_ufvrFilter = a})---- | The fields that should be updated. At least one field must be specified.--- The root \`filter\` is implied and should not be specified. A single--- \`\"*\"\` can be used as short-hand for listing every field.-ufvrFields :: Lens' UpdateFilterViewRequest (Maybe FieldMask)-ufvrFields-  = lens _ufvrFields (\ s a -> s{_ufvrFields = a})--instance FromJSON UpdateFilterViewRequest where-        parseJSON-          = withObject "UpdateFilterViewRequest"-              (\ o ->-                 UpdateFilterViewRequest' <$>-                   (o .:? "filter") <*> (o .:? "fields"))--instance ToJSON UpdateFilterViewRequest where-        toJSON UpdateFilterViewRequest'{..}-          = object-              (catMaybes-                 [("filter" .=) <$> _ufvrFilter,-                  ("fields" .=) <$> _ufvrFields])---- | A single series of data in a chart. For example, if charting stock--- prices over time, multiple series may exist, one for the \"Open Price\",--- \"High Price\", \"Low Price\" and \"Close Price\".------ /See:/ 'basicChartSeries' smart constructor.-data BasicChartSeries = BasicChartSeries'-    { _bcsTargetAxis :: !(Maybe BasicChartSeriesTargetAxis)-    , _bcsSeries     :: !(Maybe ChartData)-    , _bcsType       :: !(Maybe BasicChartSeriesType)-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'BasicChartSeries' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'bcsTargetAxis'------ * 'bcsSeries'------ * 'bcsType'-basicChartSeries-    :: BasicChartSeries-basicChartSeries =-    BasicChartSeries'-    { _bcsTargetAxis = Nothing-    , _bcsSeries = Nothing-    , _bcsType = Nothing-    }---- | The minor axis that will specify the range of values for this series.--- For example, if charting stocks over time, the \"Volume\" series may--- want to be pinned to the right with the prices pinned to the left,--- because the scale of trading volume is different than the scale of--- prices. It is an error to specify an axis that isn\'t a valid minor axis--- for the chart\'s type.-bcsTargetAxis :: Lens' BasicChartSeries (Maybe BasicChartSeriesTargetAxis)-bcsTargetAxis-  = lens _bcsTargetAxis-      (\ s a -> s{_bcsTargetAxis = a})---- | The data being visualized in this chart series.-bcsSeries :: Lens' BasicChartSeries (Maybe ChartData)-bcsSeries-  = lens _bcsSeries (\ s a -> s{_bcsSeries = a})---- | The type of this series. Valid only if the chartType is COMBO. Different--- types will change the way the series is visualized. Only LINE, AREA, and--- COLUMN are supported.-bcsType :: Lens' BasicChartSeries (Maybe BasicChartSeriesType)-bcsType = lens _bcsType (\ s a -> s{_bcsType = a})--instance FromJSON BasicChartSeries where-        parseJSON-          = withObject "BasicChartSeries"-              (\ o ->-                 BasicChartSeries' <$>-                   (o .:? "targetAxis") <*> (o .:? "series") <*>-                     (o .:? "type"))--instance ToJSON BasicChartSeries where-        toJSON BasicChartSeries'{..}-          = object-              (catMaybes-                 [("targetAxis" .=) <$> _bcsTargetAxis,-                  ("series" .=) <$> _bcsSeries,-                  ("type" .=) <$> _bcsType])---- | Adds a new protected range.------ /See:/ 'addProtectedRangeRequest' smart constructor.-newtype AddProtectedRangeRequest = AddProtectedRangeRequest'-    { _aprrProtectedRange :: Maybe ProtectedRange-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'AddProtectedRangeRequest' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'aprrProtectedRange'-addProtectedRangeRequest-    :: AddProtectedRangeRequest-addProtectedRangeRequest =-    AddProtectedRangeRequest'-    { _aprrProtectedRange = Nothing-    }---- | The protected range to be added. 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 FieldMask)-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'RepeatCellRequest' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'rcrCell'------ * 'rcrRange'------ * 'rcrFields'-repeatCellRequest-    :: RepeatCellRequest-repeatCellRequest =-    RepeatCellRequest'-    { _rcrCell = Nothing-    , _rcrRange = Nothing-    , _rcrFields = Nothing-    }---- | The data to write.-rcrCell :: Lens' RepeatCellRequest (Maybe CellData)-rcrCell = lens _rcrCell (\ s a -> s{_rcrCell = a})---- | The range to repeat the cell in.-rcrRange :: Lens' RepeatCellRequest (Maybe GridRange)-rcrRange = lens _rcrRange (\ s a -> s{_rcrRange = a})---- | The fields that should be updated. At least one field must be specified.--- The root \`cell\` is implied and should not be specified. A single--- \`\"*\"\` can be used as short-hand for listing every field.-rcrFields :: Lens' RepeatCellRequest (Maybe FieldMask)-rcrFields-  = lens _rcrFields (\ s a -> s{_rcrFields = a})--instance FromJSON RepeatCellRequest where-        parseJSON-          = withObject "RepeatCellRequest"-              (\ o ->-                 RepeatCellRequest' <$>-                   (o .:? "cell") <*> (o .:? "range") <*>-                     (o .:? "fields"))--instance ToJSON RepeatCellRequest where-        toJSON RepeatCellRequest'{..}-          = object-              (catMaybes-                 [("cell" .=) <$> _rcrCell,-                  ("range" .=) <$> _rcrRange,-                  ("fields" .=) <$> _rcrFields])---- | The value of the condition.------ /See:/ 'conditionValue' smart constructor.-data ConditionValue = ConditionValue'-    { _cvRelativeDate     :: !(Maybe ConditionValueRelativeDate)-    , _cvUserEnteredValue :: !(Maybe Text)-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'ConditionValue' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'cvRelativeDate'------ * 'cvUserEnteredValue'-conditionValue-    :: ConditionValue-conditionValue =-    ConditionValue'-    { _cvRelativeDate = Nothing-    , _cvUserEnteredValue = Nothing-    }---- | A relative date (based on the current date). Valid only if the type is--- DATE_BEFORE, DATE_AFTER, DATE_ON_OR_BEFORE or DATE_ON_OR_AFTER. Relative--- dates are not supported in data validation. They are supported only in--- conditional formatting and conditional filters.-cvRelativeDate :: Lens' ConditionValue (Maybe ConditionValueRelativeDate)-cvRelativeDate-  = lens _cvRelativeDate-      (\ s a -> s{_cvRelativeDate = a})---- | A value the condition is based on. The value will be parsed as if the--- user typed into a cell. Formulas are supported (and must begin with an--- \`=\`).-cvUserEnteredValue :: Lens' ConditionValue (Maybe Text)-cvUserEnteredValue-  = lens _cvUserEnteredValue-      (\ s a -> s{_cvUserEnteredValue = a})--instance FromJSON ConditionValue where-        parseJSON-          = withObject "ConditionValue"-              (\ o ->-                 ConditionValue' <$>-                   (o .:? "relativeDate") <*>-                     (o .:? "userEnteredValue"))--instance ToJSON ConditionValue where-        toJSON ConditionValue'{..}-          = object-              (catMaybes-                 [("relativeDate" .=) <$> _cvRelativeDate,-                  ("userEnteredValue" .=) <$> _cvUserEnteredValue])---- | Deletes the dimensions from the sheet.------ /See:/ 'deleteDimensionRequest' smart constructor.-newtype DeleteDimensionRequest = DeleteDimensionRequest'-    { _ddrRange :: Maybe DimensionRange-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'DeleteDimensionRequest' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'ddrRange'-deleteDimensionRequest-    :: DeleteDimensionRequest-deleteDimensionRequest =-    DeleteDimensionRequest'-    { _ddrRange = Nothing-    }---- | The dimensions to delete from the sheet.-ddrRange :: Lens' DeleteDimensionRequest (Maybe DimensionRange)-ddrRange = lens _ddrRange (\ s a -> s{_ddrRange = a})--instance FromJSON DeleteDimensionRequest where-        parseJSON-          = withObject "DeleteDimensionRequest"-              (\ o -> DeleteDimensionRequest' <$> (o .:? "range"))--instance ToJSON DeleteDimensionRequest where-        toJSON DeleteDimensionRequest'{..}-          = object (catMaybes [("range" .=) <$> _ddrRange])---- | 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])---- | A rule that applies a gradient color scale format, based on the--- interpolation points listed. The format of a cell will vary based on its--- contents as compared to the values of the interpolation points.------ /See:/ 'gradientRule' smart constructor.-data GradientRule = GradientRule'-    { _grMidpoint :: !(Maybe InterpolationPoint)-    , _grMaxpoint :: !(Maybe InterpolationPoint)-    , _grMinpoint :: !(Maybe InterpolationPoint)-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'GradientRule' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'grMidpoint'------ * 'grMaxpoint'------ * 'grMinpoint'-gradientRule-    :: GradientRule-gradientRule =-    GradientRule'-    { _grMidpoint = Nothing-    , _grMaxpoint = Nothing-    , _grMinpoint = Nothing-    }---- | An optional midway interpolation point.-grMidpoint :: Lens' GradientRule (Maybe InterpolationPoint)-grMidpoint-  = lens _grMidpoint (\ s a -> s{_grMidpoint = a})---- | The final interpolation point.-grMaxpoint :: Lens' GradientRule (Maybe InterpolationPoint)-grMaxpoint-  = lens _grMaxpoint (\ s a -> s{_grMaxpoint = a})---- | The starting interpolation point.-grMinpoint :: Lens' GradientRule (Maybe InterpolationPoint)-grMinpoint-  = lens _grMinpoint (\ s a -> s{_grMinpoint = a})--instance FromJSON GradientRule where-        parseJSON-          = withObject "GradientRule"-              (\ o ->-                 GradientRule' <$>-                   (o .:? "midpoint") <*> (o .:? "maxpoint") <*>-                     (o .:? "minpoint"))--instance ToJSON GradientRule where-        toJSON GradientRule'{..}-          = object-              (catMaybes-                 [("midpoint" .=) <$> _grMidpoint,-                  ("maxpoint" .=) <$> _grMaxpoint,-                  ("minpoint" .=) <$> _grMinpoint])---- | Moves data from the source to the destination.------ /See:/ 'cutPasteRequest' smart constructor.-data CutPasteRequest = CutPasteRequest'-    { _cDestination :: !(Maybe GridCoordinate)-    , _cSource      :: !(Maybe GridRange)-    , _cPasteType   :: !(Maybe CutPasteRequestPasteType)-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'CutPasteRequest' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'cDestination'------ * 'cSource'------ * 'cPasteType'-cutPasteRequest-    :: CutPasteRequest-cutPasteRequest =-    CutPasteRequest'-    { _cDestination = Nothing-    , _cSource = Nothing-    , _cPasteType = Nothing-    }---- | The top-left coordinate where the data should be pasted.-cDestination :: Lens' CutPasteRequest (Maybe GridCoordinate)-cDestination-  = lens _cDestination (\ s a -> s{_cDestination = a})---- | The source data to cut.-cSource :: Lens' CutPasteRequest (Maybe GridRange)-cSource = lens _cSource (\ s a -> s{_cSource = a})---- | What kind of data to paste. All the source data will be cut, regardless--- of what is pasted.-cPasteType :: Lens' CutPasteRequest (Maybe CutPasteRequestPasteType)-cPasteType-  = lens _cPasteType (\ s a -> s{_cPasteType = a})--instance FromJSON CutPasteRequest where-        parseJSON-          = withObject "CutPasteRequest"-              (\ o ->-                 CutPasteRequest' <$>-                   (o .:? "destination") <*> (o .:? "source") <*>-                     (o .:? "pasteType"))--instance ToJSON CutPasteRequest where-        toJSON CutPasteRequest'{..}-          = object-              (catMaybes-                 [("destination" .=) <$> _cDestination,-                  ("source" .=) <$> _cSource,-                  ("pasteType" .=) <$> _cPasteType])---- | The result of updating an embedded object\'s position.------ /See:/ 'updateEmbeddedObjectPositionResponse' smart constructor.-newtype UpdateEmbeddedObjectPositionResponse = UpdateEmbeddedObjectPositionResponse'-    { _ueoprPosition :: Maybe EmbeddedObjectPosition-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'UpdateEmbeddedObjectPositionResponse' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'ueoprPosition'-updateEmbeddedObjectPositionResponse-    :: UpdateEmbeddedObjectPositionResponse-updateEmbeddedObjectPositionResponse =-    UpdateEmbeddedObjectPositionResponse'-    { _ueoprPosition = Nothing-    }---- | The new position of the embedded object.-ueoprPosition :: Lens' UpdateEmbeddedObjectPositionResponse (Maybe EmbeddedObjectPosition)-ueoprPosition-  = lens _ueoprPosition-      (\ s a -> s{_ueoprPosition = a})--instance FromJSON-         UpdateEmbeddedObjectPositionResponse where-        parseJSON-          = withObject "UpdateEmbeddedObjectPositionResponse"-              (\ o ->-                 UpdateEmbeddedObjectPositionResponse' <$>-                   (o .:? "position"))--instance ToJSON UpdateEmbeddedObjectPositionResponse-         where-        toJSON UpdateEmbeddedObjectPositionResponse'{..}-          = object-              (catMaybes [("position" .=) <$> _ueoprPosition])---- | A single response from an update.------ /See:/ 'response' smart constructor.-data Response = Response'-    { _rAddFilterView                :: !(Maybe AddFilterViewResponse)-    , _rDuplicateFilterView          :: !(Maybe DuplicateFilterViewResponse)-    , _rUpdateEmbeddedObjectPosition :: !(Maybe UpdateEmbeddedObjectPositionResponse)-    , _rAddSheet                     :: !(Maybe AddSheetResponse)-    , _rFindReplace                  :: !(Maybe FindReplaceResponse)-    , _rAddProtectedRange            :: !(Maybe AddProtectedRangeResponse)-    , _rDeleteConditionalFormatRule  :: !(Maybe DeleteConditionalFormatRuleResponse)-    , _rUpdateConditionalFormatRule  :: !(Maybe UpdateConditionalFormatRuleResponse)-    , _rAddNamedRange                :: !(Maybe AddNamedRangeResponse)-    , _rAddChart                     :: !(Maybe AddChartResponse)-    , _rAddBanding                   :: !(Maybe AddBandingResponse)-    , _rDuplicateSheet               :: !(Maybe DuplicateSheetResponse)-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'Response' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'rAddFilterView'------ * 'rDuplicateFilterView'------ * 'rUpdateEmbeddedObjectPosition'------ * 'rAddSheet'------ * 'rFindReplace'------ * 'rAddProtectedRange'------ * 'rDeleteConditionalFormatRule'------ * 'rUpdateConditionalFormatRule'------ * 'rAddNamedRange'------ * 'rAddChart'------ * 'rAddBanding'------ * 'rDuplicateSheet'-response-    :: Response-response =-    Response'-    { _rAddFilterView = Nothing-    , _rDuplicateFilterView = Nothing-    , _rUpdateEmbeddedObjectPosition = Nothing-    , _rAddSheet = Nothing-    , _rFindReplace = Nothing-    , _rAddProtectedRange = Nothing-    , _rDeleteConditionalFormatRule = Nothing-    , _rUpdateConditionalFormatRule = Nothing-    , _rAddNamedRange = Nothing-    , _rAddChart = Nothing-    , _rAddBanding = Nothing-    , _rDuplicateSheet = Nothing-    }---- | A reply from adding a filter view.-rAddFilterView :: Lens' Response (Maybe AddFilterViewResponse)-rAddFilterView-  = lens _rAddFilterView-      (\ s a -> s{_rAddFilterView = a})---- | A reply from duplicating a filter view.-rDuplicateFilterView :: Lens' Response (Maybe DuplicateFilterViewResponse)-rDuplicateFilterView-  = lens _rDuplicateFilterView-      (\ s a -> s{_rDuplicateFilterView = a})---- | A reply from updating an embedded object\'s position.-rUpdateEmbeddedObjectPosition :: Lens' Response (Maybe UpdateEmbeddedObjectPositionResponse)-rUpdateEmbeddedObjectPosition-  = lens _rUpdateEmbeddedObjectPosition-      (\ s a -> s{_rUpdateEmbeddedObjectPosition = a})---- | A reply from adding a sheet.-rAddSheet :: Lens' Response (Maybe AddSheetResponse)-rAddSheet-  = lens _rAddSheet (\ s a -> s{_rAddSheet = a})---- | A reply from doing a find\/replace.-rFindReplace :: Lens' Response (Maybe FindReplaceResponse)-rFindReplace-  = lens _rFindReplace (\ s a -> s{_rFindReplace = a})---- | A reply from adding a protected range.-rAddProtectedRange :: Lens' Response (Maybe AddProtectedRangeResponse)-rAddProtectedRange-  = lens _rAddProtectedRange-      (\ s a -> s{_rAddProtectedRange = a})---- | A reply from deleting a conditional format rule.-rDeleteConditionalFormatRule :: Lens' Response (Maybe DeleteConditionalFormatRuleResponse)-rDeleteConditionalFormatRule-  = lens _rDeleteConditionalFormatRule-      (\ s a -> s{_rDeleteConditionalFormatRule = a})---- | A reply from updating a conditional format rule.-rUpdateConditionalFormatRule :: Lens' Response (Maybe UpdateConditionalFormatRuleResponse)-rUpdateConditionalFormatRule-  = lens _rUpdateConditionalFormatRule-      (\ s a -> s{_rUpdateConditionalFormatRule = a})---- | A reply from adding a named range.-rAddNamedRange :: Lens' Response (Maybe AddNamedRangeResponse)-rAddNamedRange-  = lens _rAddNamedRange-      (\ s a -> s{_rAddNamedRange = a})---- | A reply from adding a chart.-rAddChart :: Lens' Response (Maybe AddChartResponse)-rAddChart-  = lens _rAddChart (\ s a -> s{_rAddChart = a})---- | A reply from 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})--instance FromJSON Response where-        parseJSON-          = withObject "Response"-              (\ o ->-                 Response' <$>-                   (o .:? "addFilterView") <*>-                     (o .:? "duplicateFilterView")-                     <*> (o .:? "updateEmbeddedObjectPosition")-                     <*> (o .:? "addSheet")-                     <*> (o .:? "findReplace")-                     <*> (o .:? "addProtectedRange")-                     <*> (o .:? "deleteConditionalFormatRule")-                     <*> (o .:? "updateConditionalFormatRule")-                     <*> (o .:? "addNamedRange")-                     <*> (o .:? "addChart")-                     <*> (o .:? "addBanding")-                     <*> (o .:? "duplicateSheet"))--instance ToJSON Response where-        toJSON Response'{..}-          = object-              (catMaybes-                 [("addFilterView" .=) <$> _rAddFilterView,-                  ("duplicateFilterView" .=) <$> _rDuplicateFilterView,-                  ("updateEmbeddedObjectPosition" .=) <$>-                    _rUpdateEmbeddedObjectPosition,-                  ("addSheet" .=) <$> _rAddSheet,-                  ("findReplace" .=) <$> _rFindReplace,-                  ("addProtectedRange" .=) <$> _rAddProtectedRange,-                  ("deleteConditionalFormatRule" .=) <$>-                    _rDeleteConditionalFormatRule,-                  ("updateConditionalFormatRule" .=) <$>-                    _rUpdateConditionalFormatRule,-                  ("addNamedRange" .=) <$> _rAddNamedRange,-                  ("addChart" .=) <$> _rAddChart,-                  ("addBanding" .=) <$> _rAddBanding,-                  ("duplicateSheet" .=) <$> _rDuplicateSheet])---- | Criteria for showing\/hiding rows in a filter or filter view.------ /See:/ 'filterCriteria' smart constructor.-data FilterCriteria = FilterCriteria'-    { _fcHiddenValues :: !(Maybe [Text])-    , _fcCondition    :: !(Maybe BooleanCondition)-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'FilterCriteria' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'fcHiddenValues'------ * 'fcCondition'-filterCriteria-    :: FilterCriteria-filterCriteria =-    FilterCriteria'-    { _fcHiddenValues = Nothing-    , _fcCondition = Nothing-    }---- | Values that should be hidden.-fcHiddenValues :: Lens' FilterCriteria [Text]-fcHiddenValues-  = lens _fcHiddenValues-      (\ s a -> s{_fcHiddenValues = a})-      . _Default-      . _Coerce---- | A condition that must be true for values to be shown. (This does not--- override hiddenValues -- if a value is listed there, it will still be--- hidden.)-fcCondition :: Lens' FilterCriteria (Maybe BooleanCondition)-fcCondition-  = lens _fcCondition (\ s a -> s{_fcCondition = a})--instance FromJSON FilterCriteria where-        parseJSON-          = withObject "FilterCriteria"-              (\ o ->-                 FilterCriteria' <$>-                   (o .:? "hiddenValues" .!= mempty) <*>-                     (o .:? "condition"))--instance ToJSON FilterCriteria where-        toJSON FilterCriteria'{..}-          = object-              (catMaybes-                 [("hiddenValues" .=) <$> _fcHiddenValues,-                  ("condition" .=) <$> _fcCondition])---- | An error in a cell.------ /See:/ 'errorValue' smart constructor.-data ErrorValue = ErrorValue'-    { _evType    :: !(Maybe ErrorValueType)-    , _evMessage :: !(Maybe Text)-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'ErrorValue' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'evType'------ * 'evMessage'-errorValue-    :: ErrorValue-errorValue =-    ErrorValue'-    { _evType = Nothing-    , _evMessage = Nothing-    }---- | The type of error.-evType :: Lens' ErrorValue (Maybe ErrorValueType)-evType = lens _evType (\ s a -> s{_evType = a})---- | A message with more information about the error (in the spreadsheet\'s--- locale).-evMessage :: Lens' ErrorValue (Maybe Text)-evMessage-  = lens _evMessage (\ s a -> s{_evMessage = a})--instance FromJSON ErrorValue where-        parseJSON-          = withObject "ErrorValue"-              (\ o ->-                 ErrorValue' <$> (o .:? "type") <*> (o .:? "message"))--instance ToJSON ErrorValue where-        toJSON ErrorValue'{..}-          = object-              (catMaybes-                 [("type" .=) <$> _evType,-                  ("message" .=) <$> _evMessage])---- | Updates a conditional format rule at the given index, or moves a--- conditional format rule to another index.------ /See:/ 'updateConditionalFormatRuleRequest' smart constructor.-data UpdateConditionalFormatRuleRequest = UpdateConditionalFormatRuleRequest'-    { _ucfrrRule     :: !(Maybe ConditionalFormatRule)-    , _ucfrrNewIndex :: !(Maybe (Textual Int32))-    , _ucfrrSheetId  :: !(Maybe (Textual Int32))-    , _ucfrrIndex    :: !(Maybe (Textual Int32))-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'UpdateConditionalFormatRuleRequest' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'ucfrrRule'------ * 'ucfrrNewIndex'------ * 'ucfrrSheetId'------ * 'ucfrrIndex'-updateConditionalFormatRuleRequest-    :: UpdateConditionalFormatRuleRequest-updateConditionalFormatRuleRequest =-    UpdateConditionalFormatRuleRequest'-    { _ucfrrRule = Nothing-    , _ucfrrNewIndex = Nothing-    , _ucfrrSheetId = Nothing-    , _ucfrrIndex = Nothing-    }---- | The rule that should replace the rule at the given index.-ucfrrRule :: Lens' UpdateConditionalFormatRuleRequest (Maybe ConditionalFormatRule)-ucfrrRule-  = lens _ucfrrRule (\ s a -> s{_ucfrrRule = a})---- | The zero-based new index the rule should end up at.-ucfrrNewIndex :: Lens' UpdateConditionalFormatRuleRequest (Maybe Int32)-ucfrrNewIndex-  = lens _ucfrrNewIndex-      (\ s a -> s{_ucfrrNewIndex = a})-      . mapping _Coerce---- | The sheet of the rule to move. Required if new_index is set, unused--- otherwise.-ucfrrSheetId :: Lens' UpdateConditionalFormatRuleRequest (Maybe Int32)-ucfrrSheetId-  = lens _ucfrrSheetId (\ s a -> s{_ucfrrSheetId = a})-      . mapping _Coerce---- | The zero-based index of the rule that should be replaced or moved.-ucfrrIndex :: Lens' UpdateConditionalFormatRuleRequest (Maybe Int32)-ucfrrIndex-  = lens _ucfrrIndex (\ s a -> s{_ucfrrIndex = a}) .-      mapping _Coerce--instance FromJSON UpdateConditionalFormatRuleRequest-         where-        parseJSON-          = withObject "UpdateConditionalFormatRuleRequest"-              (\ o ->-                 UpdateConditionalFormatRuleRequest' <$>-                   (o .:? "rule") <*> (o .:? "newIndex") <*>-                     (o .:? "sheetId")-                     <*> (o .:? "index"))--instance ToJSON UpdateConditionalFormatRuleRequest-         where-        toJSON UpdateConditionalFormatRuleRequest'{..}-          = object-              (catMaybes-                 [("rule" .=) <$> _ucfrrRule,-                  ("newIndex" .=) <$> _ucfrrNewIndex,-                  ("sheetId" .=) <$> _ucfrrSheetId,-                  ("index" .=) <$> _ucfrrIndex])---- | Deletes a conditional format rule at the given index. All subsequent--- rules\' indexes are decremented.------ /See:/ 'deleteConditionalFormatRuleRequest' smart constructor.-data DeleteConditionalFormatRuleRequest = DeleteConditionalFormatRuleRequest'-    { _dcfrrSheetId :: !(Maybe (Textual Int32))-    , _dcfrrIndex   :: !(Maybe (Textual Int32))-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'DeleteConditionalFormatRuleRequest' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'dcfrrSheetId'------ * 'dcfrrIndex'-deleteConditionalFormatRuleRequest-    :: DeleteConditionalFormatRuleRequest-deleteConditionalFormatRuleRequest =-    DeleteConditionalFormatRuleRequest'-    { _dcfrrSheetId = Nothing-    , _dcfrrIndex = Nothing-    }---- | The sheet the rule is being deleted from.-dcfrrSheetId :: Lens' DeleteConditionalFormatRuleRequest (Maybe Int32)-dcfrrSheetId-  = lens _dcfrrSheetId (\ s a -> s{_dcfrrSheetId = a})-      . mapping _Coerce---- | The zero-based index of the rule to be deleted.-dcfrrIndex :: Lens' DeleteConditionalFormatRuleRequest (Maybe Int32)-dcfrrIndex-  = lens _dcfrrIndex (\ s a -> s{_dcfrrIndex = a}) .-      mapping _Coerce--instance FromJSON DeleteConditionalFormatRuleRequest-         where-        parseJSON-          = withObject "DeleteConditionalFormatRuleRequest"-              (\ o ->-                 DeleteConditionalFormatRuleRequest' <$>-                   (o .:? "sheetId") <*> (o .:? "index"))--instance ToJSON DeleteConditionalFormatRuleRequest-         where-        toJSON DeleteConditionalFormatRuleRequest'{..}-          = object-              (catMaybes-                 [("sheetId" .=) <$> _dcfrrSheetId,-                  ("index" .=) <$> _dcfrrIndex])---- | The location an object is overlaid on top of a grid.------ /See:/ 'overlayPosition' smart constructor.-data OverlayPosition = OverlayPosition'-    { _opHeightPixels  :: !(Maybe (Textual Int32))-    , _opOffSetYPixels :: !(Maybe (Textual Int32))-    , _opAnchorCell    :: !(Maybe GridCoordinate)-    , _opWidthPixels   :: !(Maybe (Textual Int32))-    , _opOffSetXPixels :: !(Maybe (Textual Int32))-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'OverlayPosition' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'opHeightPixels'------ * 'opOffSetYPixels'------ * 'opAnchorCell'------ * 'opWidthPixels'------ * 'opOffSetXPixels'-overlayPosition-    :: OverlayPosition-overlayPosition =-    OverlayPosition'-    { _opHeightPixels = Nothing-    , _opOffSetYPixels = Nothing-    , _opAnchorCell = Nothing-    , _opWidthPixels = Nothing-    , _opOffSetXPixels = Nothing-    }---- | The height of the object, in pixels. Defaults to 371.-opHeightPixels :: Lens' OverlayPosition (Maybe Int32)-opHeightPixels-  = lens _opHeightPixels-      (\ s a -> s{_opHeightPixels = a})-      . mapping _Coerce---- | The vertical offset, in pixels, that the object is offset from the--- anchor cell.-opOffSetYPixels :: Lens' OverlayPosition (Maybe Int32)-opOffSetYPixels-  = lens _opOffSetYPixels-      (\ s a -> s{_opOffSetYPixels = a})-      . mapping _Coerce---- | The cell the object is anchored to.-opAnchorCell :: Lens' OverlayPosition (Maybe GridCoordinate)-opAnchorCell-  = lens _opAnchorCell (\ s a -> s{_opAnchorCell = a})---- | The width of the object, in pixels. Defaults to 600.-opWidthPixels :: Lens' OverlayPosition (Maybe Int32)-opWidthPixels-  = lens _opWidthPixels-      (\ s a -> s{_opWidthPixels = a})-      . mapping _Coerce---- | The horizontal offset, in pixels, that the object is offset from the--- anchor cell.-opOffSetXPixels :: Lens' OverlayPosition (Maybe Int32)-opOffSetXPixels-  = lens _opOffSetXPixels-      (\ s a -> s{_opOffSetXPixels = a})-      . mapping _Coerce--instance FromJSON OverlayPosition where-        parseJSON-          = withObject "OverlayPosition"-              (\ o ->-                 OverlayPosition' <$>-                   (o .:? "heightPixels") <*> (o .:? "offsetYPixels")-                     <*> (o .:? "anchorCell")-                     <*> (o .:? "widthPixels")-                     <*> (o .:? "offsetXPixels"))--instance ToJSON OverlayPosition where-        toJSON OverlayPosition'{..}-          = object-              (catMaybes-                 [("heightPixels" .=) <$> _opHeightPixels,-                  ("offsetYPixels" .=) <$> _opOffSetYPixels,-                  ("anchorCell" .=) <$> _opAnchorCell,-                  ("widthPixels" .=) <$> _opWidthPixels,-                  ("offsetXPixels" .=) <$> _opOffSetXPixels])---- | Deletes the embedded object with the given ID.------ /See:/ 'deleteEmbeddedObjectRequest' smart constructor.-newtype DeleteEmbeddedObjectRequest = DeleteEmbeddedObjectRequest'-    { _deorObjectId :: Maybe (Textual Int32)-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'DeleteEmbeddedObjectRequest' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'deorObjectId'-deleteEmbeddedObjectRequest-    :: DeleteEmbeddedObjectRequest-deleteEmbeddedObjectRequest =-    DeleteEmbeddedObjectRequest'-    { _deorObjectId = Nothing-    }---- | The ID of the embedded object to delete.-deorObjectId :: Lens' DeleteEmbeddedObjectRequest (Maybe Int32)-deorObjectId-  = lens _deorObjectId (\ s a -> s{_deorObjectId = a})-      . mapping _Coerce--instance FromJSON DeleteEmbeddedObjectRequest where-        parseJSON-          = withObject "DeleteEmbeddedObjectRequest"-              (\ o ->-                 DeleteEmbeddedObjectRequest' <$> (o .:? "objectId"))--instance ToJSON DeleteEmbeddedObjectRequest where-        toJSON DeleteEmbeddedObjectRequest'{..}-          = object-              (catMaybes [("objectId" .=) <$> _deorObjectId])---- | Properties of a sheet.------ /See:/ 'sheetProperties' smart constructor.-data SheetProperties = SheetProperties'-    { _sTabColor       :: !(Maybe Color)-    , _sGridProperties :: !(Maybe GridProperties)-    , _sSheetType      :: !(Maybe SheetPropertiesSheetType)-    , _sHidden         :: !(Maybe Bool)-    , _sSheetId        :: !(Maybe (Textual Int32))-    , _sTitle          :: !(Maybe Text)-    , _sRightToLeft    :: !(Maybe Bool)-    , _sIndex          :: !(Maybe (Textual Int32))-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'SheetProperties' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'sTabColor'------ * 'sGridProperties'------ * 'sSheetType'------ * 'sHidden'------ * 'sSheetId'------ * 'sTitle'------ * 'sRightToLeft'------ * 'sIndex'-sheetProperties-    :: SheetProperties-sheetProperties =-    SheetProperties'-    { _sTabColor = Nothing-    , _sGridProperties = Nothing-    , _sSheetType = Nothing-    , _sHidden = Nothing-    , _sSheetId = Nothing-    , _sTitle = Nothing-    , _sRightToLeft = Nothing-    , _sIndex = Nothing-    }---- | The color of the tab in the UI.-sTabColor :: Lens' SheetProperties (Maybe Color)-sTabColor-  = lens _sTabColor (\ s a -> s{_sTabColor = a})---- | Additional properties of the sheet if this sheet is a grid. (If the--- sheet is an object sheet, containing a chart or image, then this field--- will be absent.) When writing it is an error to set any grid properties--- on non-grid sheets.-sGridProperties :: Lens' SheetProperties (Maybe GridProperties)-sGridProperties-  = lens _sGridProperties-      (\ s a -> s{_sGridProperties = a})---- | The type of sheet. Defaults to GRID. This field cannot be changed once--- set.-sSheetType :: Lens' SheetProperties (Maybe SheetPropertiesSheetType)-sSheetType-  = lens _sSheetType (\ s a -> s{_sSheetType = a})---- | True if the sheet is hidden in the UI, false if it\'s visible.-sHidden :: Lens' SheetProperties (Maybe Bool)-sHidden = lens _sHidden (\ s a -> s{_sHidden = a})---- | The ID of the sheet. Must be non-negative. This field cannot be changed--- once set.-sSheetId :: Lens' SheetProperties (Maybe Int32)-sSheetId-  = lens _sSheetId (\ s a -> s{_sSheetId = a}) .-      mapping _Coerce---- | The name of the sheet.-sTitle :: Lens' SheetProperties (Maybe Text)-sTitle = lens _sTitle (\ s a -> s{_sTitle = a})---- | True if the sheet is an RTL sheet instead of an LTR sheet.-sRightToLeft :: Lens' SheetProperties (Maybe Bool)-sRightToLeft-  = lens _sRightToLeft (\ s a -> s{_sRightToLeft = a})---- | The index of the sheet within the spreadsheet. When adding or updating--- sheet properties, if this field is excluded then the sheet will be added--- or moved to the end of the sheet list. 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 will be 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 FieldMask)-    , _usprProperties :: !(Maybe SheetProperties)-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'UpdateSheetPropertiesRequest' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'usprFields'------ * 'usprProperties'-updateSheetPropertiesRequest-    :: UpdateSheetPropertiesRequest-updateSheetPropertiesRequest =-    UpdateSheetPropertiesRequest'-    { _usprFields = Nothing-    , _usprProperties = Nothing-    }---- | The fields that should be updated. At least one field must be specified.--- The root \`properties\` is implied and should not be specified. A single--- \`\"*\"\` can be used as short-hand for listing every field.-usprFields :: Lens' UpdateSheetPropertiesRequest (Maybe FieldMask)-usprFields-  = lens _usprFields (\ s a -> s{_usprFields = a})---- | The properties to update.-usprProperties :: Lens' UpdateSheetPropertiesRequest (Maybe SheetProperties)-usprProperties-  = lens _usprProperties-      (\ s a -> s{_usprProperties = a})--instance FromJSON UpdateSheetPropertiesRequest where-        parseJSON-          = withObject "UpdateSheetPropertiesRequest"-              (\ o ->-                 UpdateSheetPropertiesRequest' <$>-                   (o .:? "fields") <*> (o .:? "properties"))--instance ToJSON UpdateSheetPropertiesRequest where-        toJSON UpdateSheetPropertiesRequest'{..}-          = object-              (catMaybes-                 [("fields" .=) <$> _usprFields,-                  ("properties" .=) <$> _usprProperties])---- | Resource that represents a spreadsheet.------ /See:/ 'spreadsheet' smart constructor.-data Spreadsheet = Spreadsheet'-    { _sprSheets         :: !(Maybe [Sheet])-    , _sprNamedRanges    :: !(Maybe [NamedRange])-    , _sprSpreadsheetId  :: !(Maybe Text)-    , _sprSpreadsheetURL :: !(Maybe Text)-    , _sprProperties     :: !(Maybe SpreadsheetProperties)-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'Spreadsheet' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'sprSheets'------ * 'sprNamedRanges'------ * 'sprSpreadsheetId'------ * 'sprSpreadsheetURL'------ * 'sprProperties'-spreadsheet-    :: Spreadsheet-spreadsheet =-    Spreadsheet'-    { _sprSheets = Nothing-    , _sprNamedRanges = Nothing-    , _sprSpreadsheetId = Nothing-    , _sprSpreadsheetURL = 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})---- | 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 .:? "properties"))--instance ToJSON Spreadsheet where-        toJSON Spreadsheet'{..}-          = object-              (catMaybes-                 [("sheets" .=) <$> _sprSheets,-                  ("namedRanges" .=) <$> _sprNamedRanges,-                  ("spreadsheetId" .=) <$> _sprSpreadsheetId,-                  ("spreadsheetUrl" .=) <$> _sprSpreadsheetURL,-                  ("properties" .=) <$> _sprProperties])---- | Inserts rows or columns in a sheet at a particular index.------ /See:/ 'insertDimensionRequest' smart constructor.-data InsertDimensionRequest = InsertDimensionRequest'-    { _idrRange             :: !(Maybe DimensionRange)-    , _idrInheritFromBefore :: !(Maybe Bool)-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'InsertDimensionRequest' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'idrRange'------ * 'idrInheritFromBefore'-insertDimensionRequest-    :: InsertDimensionRequest-insertDimensionRequest =-    InsertDimensionRequest'-    { _idrRange = Nothing-    , _idrInheritFromBefore = Nothing-    }---- | The dimensions to insert. Both the start and end indexes must be--- bounded.-idrRange :: Lens' InsertDimensionRequest (Maybe DimensionRange)-idrRange = lens _idrRange (\ s a -> s{_idrRange = a})---- | Whether dimension properties should be extended from the dimensions--- before or after the newly inserted dimensions. True to inherit from the--- dimensions before (in which case the start index must be greater than--- 0), and false to inherit from the dimensions after. For example, if row--- index 0 has red background and row index 1 has a green background, then--- inserting 2 rows at index 1 can inherit either the green or red--- background. If \`inheritFromBefore\` is true, the two new rows will be--- red (because the row before the insertion point was red), whereas if--- \`inheritFromBefore\` is false, the two new rows will be green (because--- the row after the insertion point was green).-idrInheritFromBefore :: Lens' InsertDimensionRequest (Maybe Bool)-idrInheritFromBefore-  = lens _idrInheritFromBefore-      (\ s a -> s{_idrInheritFromBefore = a})--instance FromJSON InsertDimensionRequest where-        parseJSON-          = withObject "InsertDimensionRequest"-              (\ o ->-                 InsertDimensionRequest' <$>-                   (o .:? "range") <*> (o .:? "inheritFromBefore"))--instance ToJSON InsertDimensionRequest where-        toJSON InsertDimensionRequest'{..}-          = object-              (catMaybes-                 [("range" .=) <$> _idrRange,-                  ("inheritFromBefore" .=) <$> _idrInheritFromBefore])---- | A single interpolation point on a gradient conditional format. These pin--- the gradient color scale according to the color, type and value chosen.------ /See:/ 'interpolationPoint' smart constructor.-data InterpolationPoint = InterpolationPoint'-    { _ipColor :: !(Maybe Color)-    , _ipValue :: !(Maybe Text)-    , _ipType  :: !(Maybe InterpolationPointType)-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'InterpolationPoint' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'ipColor'------ * 'ipValue'------ * 'ipType'-interpolationPoint-    :: InterpolationPoint-interpolationPoint =-    InterpolationPoint'-    { _ipColor = Nothing-    , _ipValue = Nothing-    , _ipType = Nothing-    }---- | The color this interpolation point should use.-ipColor :: Lens' InterpolationPoint (Maybe Color)-ipColor = lens _ipColor (\ s a -> s{_ipColor = a})---- | The value this interpolation point uses. May be a formula. Unused if--- type is MIN or MAX.-ipValue :: Lens' InterpolationPoint (Maybe Text)-ipValue = lens _ipValue (\ s a -> s{_ipValue = a})---- | How the value should be interpreted.-ipType :: Lens' InterpolationPoint (Maybe InterpolationPointType)-ipType = lens _ipType (\ s a -> s{_ipType = a})--instance FromJSON InterpolationPoint where-        parseJSON-          = withObject "InterpolationPoint"-              (\ o ->-                 InterpolationPoint' <$>-                   (o .:? "color") <*> (o .:? "value") <*>-                     (o .:? "type"))--instance ToJSON InterpolationPoint where-        toJSON InterpolationPoint'{..}-          = object-              (catMaybes-                 [("color" .=) <$> _ipColor,-                  ("value" .=) <$> _ipValue, ("type" .=) <$> _ipType])---- | Data about a specific cell.------ /See:/ 'cellData' smart constructor.-data CellData = CellData'-    { _cdTextFormatRuns    :: !(Maybe [TextFormatRun])-    , _cdNote              :: !(Maybe Text)-    , _cdUserEnteredValue  :: !(Maybe ExtendedValue)-    , _cdUserEnteredFormat :: !(Maybe CellFormat)-    , _cdEffectiveFormat   :: !(Maybe CellFormat)-    , _cdPivotTable        :: !(Maybe PivotTable)-    , _cdFormattedValue    :: !(Maybe Text)-    , _cdDataValidation    :: !(Maybe DataValidationRule)-    , _cdHyperlink         :: !(Maybe Text)-    , _cdEffectiveValue    :: !(Maybe ExtendedValue)-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'CellData' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'cdTextFormatRuns'------ * 'cdNote'------ * 'cdUserEnteredValue'------ * 'cdUserEnteredFormat'------ * 'cdEffectiveFormat'------ * 'cdPivotTable'------ * 'cdFormattedValue'------ * 'cdDataValidation'------ * 'cdHyperlink'------ * 'cdEffectiveValue'-cellData-    :: CellData-cellData =-    CellData'-    { _cdTextFormatRuns = Nothing-    , _cdNote = Nothing-    , _cdUserEnteredValue = Nothing-    , _cdUserEnteredFormat = Nothing-    , _cdEffectiveFormat = Nothing-    , _cdPivotTable = Nothing-    , _cdFormattedValue = Nothing-    , _cdDataValidation = Nothing-    , _cdHyperlink = Nothing-    , _cdEffectiveValue = Nothing-    }---- | Runs of rich text applied to subsections of the cell. Runs are only--- valid on user entered strings, not formulas, bools, or numbers. Runs--- start at specific indexes in the text and continue until the next run.--- Properties of a run will continue unless explicitly changed in a--- subsequent run (and properties of the first run will continue the--- properties of the cell unless explicitly changed). When writing, the new--- runs will overwrite any prior runs. When writing a new--- user_entered_value, previous runs will be erased.-cdTextFormatRuns :: Lens' CellData [TextFormatRun]-cdTextFormatRuns-  = lens _cdTextFormatRuns-      (\ s a -> s{_cdTextFormatRuns = a})-      . _Default-      . _Coerce---- | Any note on the cell.-cdNote :: Lens' CellData (Maybe Text)-cdNote = lens _cdNote (\ s a -> s{_cdNote = a})---- | The value the user entered in the cell. e.g, \`1234\`, \`\'Hello\'\`, or--- \`=NOW()\` Note: Dates, Times and DateTimes are represented as doubles--- in serial number format.-cdUserEnteredValue :: Lens' CellData (Maybe ExtendedValue)-cdUserEnteredValue-  = lens _cdUserEnteredValue-      (\ s a -> s{_cdUserEnteredValue = a})---- | The format the user entered for the cell. When writing, the new format--- will be merged with the existing format.-cdUserEnteredFormat :: Lens' CellData (Maybe CellFormat)-cdUserEnteredFormat-  = lens _cdUserEnteredFormat-      (\ s a -> s{_cdUserEnteredFormat = a})---- | The effective format being used by the cell. This includes the results--- of applying any conditional formatting and, if the cell contains a--- formula, the computed number format. If the effective format is the--- default format, effective format will not be written. This field is--- read-only.-cdEffectiveFormat :: Lens' CellData (Maybe CellFormat)-cdEffectiveFormat-  = lens _cdEffectiveFormat-      (\ s a -> s{_cdEffectiveFormat = a})---- | A pivot table anchored at this cell. The size of pivot table itself is--- computed dynamically based on its data, grouping, filters, values, etc.--- Only the top-left cell of the pivot table contains the pivot table--- definition. The other cells will contain the calculated values of the--- results of the pivot in their effective_value fields.-cdPivotTable :: Lens' CellData (Maybe PivotTable)-cdPivotTable-  = lens _cdPivotTable (\ s a -> s{_cdPivotTable = a})---- | The formatted value of the cell. This is the value as it\'s shown to the--- user. This field is read-only.-cdFormattedValue :: Lens' CellData (Maybe Text)-cdFormattedValue-  = lens _cdFormattedValue-      (\ s a -> s{_cdFormattedValue = a})---- | A data validation rule on the cell, if any. When writing, the new data--- validation rule will overwrite any prior rule.-cdDataValidation :: Lens' CellData (Maybe DataValidationRule)-cdDataValidation-  = lens _cdDataValidation-      (\ s a -> s{_cdDataValidation = a})---- | A hyperlink this cell points to, if any. This field is read-only. (To--- set it, use a \`=HYPERLINK\` formula.)-cdHyperlink :: Lens' CellData (Maybe Text)-cdHyperlink-  = lens _cdHyperlink (\ s a -> s{_cdHyperlink = a})---- | The effective value of the cell. For cells with formulas, this will be--- the calculated value. For cells with literals, this will be the same as--- the user_entered_value. This field is read-only.-cdEffectiveValue :: Lens' CellData (Maybe ExtendedValue)-cdEffectiveValue-  = lens _cdEffectiveValue-      (\ s a -> s{_cdEffectiveValue = a})--instance FromJSON CellData where-        parseJSON-          = withObject "CellData"-              (\ o ->-                 CellData' <$>-                   (o .:? "textFormatRuns" .!= mempty) <*>-                     (o .:? "note")-                     <*> (o .:? "userEnteredValue")-                     <*> (o .:? "userEnteredFormat")-                     <*> (o .:? "effectiveFormat")-                     <*> (o .:? "pivotTable")-                     <*> (o .:? "formattedValue")-                     <*> (o .:? "dataValidation")-                     <*> (o .:? "hyperlink")-                     <*> (o .:? "effectiveValue"))--instance ToJSON CellData where-        toJSON CellData'{..}-          = object-              (catMaybes-                 [("textFormatRuns" .=) <$> _cdTextFormatRuns,-                  ("note" .=) <$> _cdNote,-                  ("userEnteredValue" .=) <$> _cdUserEnteredValue,-                  ("userEnteredFormat" .=) <$> _cdUserEnteredFormat,-                  ("effectiveFormat" .=) <$> _cdEffectiveFormat,-                  ("pivotTable" .=) <$> _cdPivotTable,-                  ("formattedValue" .=) <$> _cdFormattedValue,-                  ("dataValidation" .=) <$> _cdDataValidation,-                  ("hyperlink" .=) <$> _cdHyperlink,-                  ("effectiveValue" .=) <$> _cdEffectiveValue])---- | Source ranges for a chart.------ /See:/ 'chartSourceRange' smart constructor.-newtype ChartSourceRange = ChartSourceRange'-    { _csrSources :: Maybe [GridRange]-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'ChartSourceRange' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'csrSources'-chartSourceRange-    :: ChartSourceRange-chartSourceRange =-    ChartSourceRange'-    { _csrSources = Nothing-    }---- | The ranges of data for a series or domain. Exactly one dimension must--- have a length of 1, and all sources in the list must have the same--- dimension with length 1. The domain (if it exists) & all series must--- have the same number of source ranges. If using more than one source--- range, then the source range at a given offset must be contiguous across--- the domain and series. For example, these are valid configurations:--- domain sources: A1:A5 series1 sources: B1:B5 series2 sources: D6:D10--- domain sources: A1:A5, C10:C12 series1 sources: B1:B5, D10:D12 series2--- sources: C1:C5, E10:E12-csrSources :: Lens' ChartSourceRange [GridRange]-csrSources-  = lens _csrSources (\ s a -> s{_csrSources = a}) .-      _Default-      . _Coerce--instance FromJSON ChartSourceRange where-        parseJSON-          = withObject "ChartSourceRange"-              (\ o ->-                 ChartSourceRange' <$> (o .:? "sources" .!= mempty))--instance ToJSON ChartSourceRange where-        toJSON ChartSourceRange'{..}-          = object (catMaybes [("sources" .=) <$> _csrSources])---- | The result of adding a named range.------ /See:/ 'addNamedRangeResponse' smart constructor.-newtype AddNamedRangeResponse = AddNamedRangeResponse'-    { _anrrNamedRange :: Maybe NamedRange-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'AddNamedRangeResponse' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'anrrNamedRange'-addNamedRangeResponse-    :: AddNamedRangeResponse-addNamedRangeResponse =-    AddNamedRangeResponse'-    { _anrrNamedRange = Nothing-    }---- | The named range to add.-anrrNamedRange :: Lens' AddNamedRangeResponse (Maybe NamedRange)-anrrNamedRange-  = lens _anrrNamedRange-      (\ s a -> s{_anrrNamedRange = a})--instance FromJSON AddNamedRangeResponse where-        parseJSON-          = withObject "AddNamedRangeResponse"-              (\ o ->-                 AddNamedRangeResponse' <$> (o .:? "namedRange"))--instance ToJSON AddNamedRangeResponse where-        toJSON AddNamedRangeResponse'{..}-          = object-              (catMaybes [("namedRange" .=) <$> _anrrNamedRange])---- | The result of adding a chart to a spreadsheet.------ /See:/ 'addChartResponse' smart constructor.-newtype AddChartResponse = AddChartResponse'-    { _acrChart :: Maybe EmbeddedChart-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'AddChartResponse' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'acrChart'-addChartResponse-    :: AddChartResponse-addChartResponse =-    AddChartResponse'-    { _acrChart = Nothing-    }---- | The newly added chart.-acrChart :: Lens' AddChartResponse (Maybe EmbeddedChart)-acrChart = lens _acrChart (\ s a -> s{_acrChart = a})--instance FromJSON AddChartResponse where-        parseJSON-          = withObject "AddChartResponse"-              (\ o -> AddChartResponse' <$> (o .:? "chart"))--instance ToJSON AddChartResponse where-        toJSON AddChartResponse'{..}-          = object (catMaybes [("chart" .=) <$> _acrChart])---- | Updates a chart\'s specifications. (This does not move or resize a--- chart. To move or resize a chart, use--- UpdateEmbeddedObjectPositionRequest.)------ /See:/ 'updateChartSpecRequest' smart constructor.-data UpdateChartSpecRequest = UpdateChartSpecRequest'-    { _ucsrSpec    :: !(Maybe ChartSpec)-    , _ucsrChartId :: !(Maybe (Textual Int32))-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'UpdateChartSpecRequest' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'ucsrSpec'------ * 'ucsrChartId'-updateChartSpecRequest-    :: UpdateChartSpecRequest-updateChartSpecRequest =-    UpdateChartSpecRequest'-    { _ucsrSpec = Nothing-    , _ucsrChartId = Nothing-    }---- | The specification to apply to the chart.-ucsrSpec :: Lens' UpdateChartSpecRequest (Maybe ChartSpec)-ucsrSpec = lens _ucsrSpec (\ s a -> s{_ucsrSpec = a})---- | The ID of the chart to update.-ucsrChartId :: Lens' UpdateChartSpecRequest (Maybe Int32)-ucsrChartId-  = lens _ucsrChartId (\ s a -> s{_ucsrChartId = a}) .-      mapping _Coerce--instance FromJSON UpdateChartSpecRequest where-        parseJSON-          = withObject "UpdateChartSpecRequest"-              (\ o ->-                 UpdateChartSpecRequest' <$>-                   (o .:? "spec") <*> (o .:? "chartId"))--instance ToJSON UpdateChartSpecRequest where-        toJSON UpdateChartSpecRequest'{..}-          = object-              (catMaybes-                 [("spec" .=) <$> _ucsrSpec,-                  ("chartId" .=) <$> _ucsrChartId])---- | Sets the basic filter associated with a sheet.------ /See:/ 'setBasicFilterRequest' smart constructor.-newtype SetBasicFilterRequest = SetBasicFilterRequest'-    { _sbfrFilter :: Maybe BasicFilter-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'SetBasicFilterRequest' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'sbfrFilter'-setBasicFilterRequest-    :: SetBasicFilterRequest-setBasicFilterRequest =-    SetBasicFilterRequest'-    { _sbfrFilter = Nothing-    }---- | The filter to set.-sbfrFilter :: Lens' SetBasicFilterRequest (Maybe BasicFilter)-sbfrFilter-  = lens _sbfrFilter (\ s a -> s{_sbfrFilter = a})--instance FromJSON SetBasicFilterRequest where-        parseJSON-          = withObject "SetBasicFilterRequest"-              (\ o -> SetBasicFilterRequest' <$> (o .:? "filter"))--instance ToJSON SetBasicFilterRequest where-        toJSON SetBasicFilterRequest'{..}-          = object (catMaybes [("filter" .=) <$> _sbfrFilter])---- | Properties of a grid.------ /See:/ 'gridProperties' smart constructor.-data GridProperties = GridProperties'-    { _gpFrozenColumnCount :: !(Maybe (Textual Int32))-    , _gpColumnCount       :: !(Maybe (Textual Int32))-    , _gpHideGridlines     :: !(Maybe Bool)-    , _gpFrozenRowCount    :: !(Maybe (Textual Int32))-    , _gpRowCount          :: !(Maybe (Textual Int32))-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'GridProperties' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'gpFrozenColumnCount'------ * 'gpColumnCount'------ * 'gpHideGridlines'------ * 'gpFrozenRowCount'------ * 'gpRowCount'-gridProperties-    :: GridProperties-gridProperties =-    GridProperties'-    { _gpFrozenColumnCount = Nothing-    , _gpColumnCount = Nothing-    , _gpHideGridlines = Nothing-    , _gpFrozenRowCount = Nothing-    , _gpRowCount = Nothing-    }---- | The number of columns that are frozen in the grid.-gpFrozenColumnCount :: Lens' GridProperties (Maybe Int32)-gpFrozenColumnCount-  = lens _gpFrozenColumnCount-      (\ s a -> s{_gpFrozenColumnCount = a})-      . mapping _Coerce---- | The number of columns in the grid.-gpColumnCount :: Lens' GridProperties (Maybe Int32)-gpColumnCount-  = lens _gpColumnCount-      (\ s a -> s{_gpColumnCount = a})-      . mapping _Coerce---- | True if the grid isn\'t showing gridlines in the UI.-gpHideGridlines :: Lens' GridProperties (Maybe Bool)-gpHideGridlines-  = lens _gpHideGridlines-      (\ s a -> s{_gpHideGridlines = a})---- | The number of rows that are frozen in the grid.-gpFrozenRowCount :: Lens' GridProperties (Maybe Int32)-gpFrozenRowCount-  = lens _gpFrozenRowCount-      (\ s a -> s{_gpFrozenRowCount = a})-      . mapping _Coerce---- | The number of rows in the grid.-gpRowCount :: Lens' GridProperties (Maybe Int32)-gpRowCount-  = lens _gpRowCount (\ s a -> s{_gpRowCount = a}) .-      mapping _Coerce--instance FromJSON GridProperties where-        parseJSON-          = withObject "GridProperties"-              (\ o ->-                 GridProperties' <$>-                   (o .:? "frozenColumnCount") <*> (o .:? "columnCount")-                     <*> (o .:? "hideGridlines")-                     <*> (o .:? "frozenRowCount")-                     <*> (o .:? "rowCount"))--instance ToJSON GridProperties where-        toJSON GridProperties'{..}-          = object-              (catMaybes-                 [("frozenColumnCount" .=) <$> _gpFrozenColumnCount,-                  ("columnCount" .=) <$> _gpColumnCount,-                  ("hideGridlines" .=) <$> _gpHideGridlines,-                  ("frozenRowCount" .=) <$> _gpFrozenRowCount,-                  ("rowCount" .=) <$> _gpRowCount])---- | The criteria for showing\/hiding values per column. The map\'s key is--- the column index, and the value is the criteria for that column.------ /See:/ 'basicFilterCriteria' smart constructor.-newtype BasicFilterCriteria = BasicFilterCriteria'-    { _bfcAddtional :: HashMap Text FilterCriteria-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'BasicFilterCriteria' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'bfcAddtional'-basicFilterCriteria-    :: HashMap Text FilterCriteria -- ^ 'bfcAddtional'-    -> BasicFilterCriteria-basicFilterCriteria pBfcAddtional_ =-    BasicFilterCriteria'-    { _bfcAddtional = _Coerce # pBfcAddtional_-    }--bfcAddtional :: Lens' BasicFilterCriteria (HashMap Text FilterCriteria)-bfcAddtional-  = lens _bfcAddtional (\ s a -> s{_bfcAddtional = a})-      . _Coerce--instance FromJSON BasicFilterCriteria where-        parseJSON-          = withObject "BasicFilterCriteria"-              (\ o -> BasicFilterCriteria' <$> (parseJSONObject o))--instance ToJSON BasicFilterCriteria where-        toJSON = toJSON . _bfcAddtional---- | 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 FieldMask)-    , _udprProperties :: !(Maybe DimensionProperties)-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'UpdateDimensionPropertiesRequest' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'udprRange'------ * 'udprFields'------ * 'udprProperties'-updateDimensionPropertiesRequest-    :: UpdateDimensionPropertiesRequest-updateDimensionPropertiesRequest =-    UpdateDimensionPropertiesRequest'-    { _udprRange = Nothing-    , _udprFields = Nothing-    , _udprProperties = Nothing-    }---- | The rows or columns to update.-udprRange :: Lens' UpdateDimensionPropertiesRequest (Maybe DimensionRange)-udprRange-  = lens _udprRange (\ s a -> s{_udprRange = a})---- | The fields that should be updated. At least one field must be specified.--- The root \`properties\` is implied and should not be specified. A single--- \`\"*\"\` can be used as short-hand for listing every field.-udprFields :: Lens' UpdateDimensionPropertiesRequest (Maybe FieldMask)-udprFields-  = lens _udprFields (\ s a -> s{_udprFields = a})---- | Properties to update.-udprProperties :: Lens' UpdateDimensionPropertiesRequest (Maybe DimensionProperties)-udprProperties-  = lens _udprProperties-      (\ s a -> s{_udprProperties = a})--instance FromJSON UpdateDimensionPropertiesRequest-         where-        parseJSON-          = withObject "UpdateDimensionPropertiesRequest"-              (\ o ->-                 UpdateDimensionPropertiesRequest' <$>-                   (o .:? "range") <*> (o .:? "fields") <*>-                     (o .:? "properties"))--instance ToJSON UpdateDimensionPropertiesRequest-         where-        toJSON UpdateDimensionPropertiesRequest'{..}-          = object-              (catMaybes-                 [("range" .=) <$> _udprRange,-                  ("fields" .=) <$> _udprFields,-                  ("properties" .=) <$> _udprProperties])---- | An optional mapping of filters per source column offset. The filters--- will be applied before aggregating data into the pivot table. The map\'s--- key is the column offset of the source range that you want to filter,--- and the value is the criteria for that column. For example, if the--- source was \`C10:E15\`, a key of \`0\` will have the filter for column--- \`C\`, whereas the key \`1\` is for column \`D\`.------ /See:/ 'pivotTableCriteria' smart constructor.-newtype PivotTableCriteria = PivotTableCriteria'-    { _ptcAddtional :: HashMap Text PivotFilterCriteria-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'PivotTableCriteria' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'ptcAddtional'-pivotTableCriteria-    :: HashMap Text PivotFilterCriteria -- ^ 'ptcAddtional'-    -> PivotTableCriteria-pivotTableCriteria pPtcAddtional_ =-    PivotTableCriteria'-    { _ptcAddtional = _Coerce # pPtcAddtional_-    }--ptcAddtional :: Lens' PivotTableCriteria (HashMap Text PivotFilterCriteria)-ptcAddtional-  = lens _ptcAddtional (\ s a -> s{_ptcAddtional = a})-      . _Coerce--instance FromJSON PivotTableCriteria where-        parseJSON-          = withObject "PivotTableCriteria"-              (\ o -> PivotTableCriteria' <$> (parseJSONObject o))--instance ToJSON PivotTableCriteria where-        toJSON = toJSON . _ptcAddtional---- | Fills in more data based on existing data.------ /See:/ 'autoFillRequest' smart constructor.-data AutoFillRequest = AutoFillRequest'-    { _afrSourceAndDestination :: !(Maybe SourceAndDestination)-    , _afrUseAlternateSeries   :: !(Maybe Bool)-    , _afrRange                :: !(Maybe GridRange)-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'AutoFillRequest' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'afrSourceAndDestination'------ * 'afrUseAlternateSeries'------ * 'afrRange'-autoFillRequest-    :: AutoFillRequest-autoFillRequest =-    AutoFillRequest'-    { _afrSourceAndDestination = Nothing-    , _afrUseAlternateSeries = Nothing-    , _afrRange = Nothing-    }---- | The source and destination areas to autofill. This explicitly lists the--- source of the autofill and where to extend that data.-afrSourceAndDestination :: Lens' AutoFillRequest (Maybe SourceAndDestination)-afrSourceAndDestination-  = lens _afrSourceAndDestination-      (\ s a -> s{_afrSourceAndDestination = a})---- | True if we should generate data with the \"alternate\" series. This--- differs based on the type and amount of source data.-afrUseAlternateSeries :: Lens' AutoFillRequest (Maybe Bool)-afrUseAlternateSeries-  = lens _afrUseAlternateSeries-      (\ s a -> s{_afrUseAlternateSeries = a})---- | The range to autofill. This will examine the range and detect the--- location that has data and automatically fill that data in to the rest--- of the range.-afrRange :: Lens' AutoFillRequest (Maybe GridRange)-afrRange = lens _afrRange (\ s a -> s{_afrRange = a})--instance FromJSON AutoFillRequest where-        parseJSON-          = withObject "AutoFillRequest"-              (\ o ->-                 AutoFillRequest' <$>-                   (o .:? "sourceAndDestination") <*>-                     (o .:? "useAlternateSeries")-                     <*> (o .:? "range"))--instance ToJSON AutoFillRequest where-        toJSON AutoFillRequest'{..}-          = object-              (catMaybes-                 [("sourceAndDestination" .=) <$>-                    _afrSourceAndDestination,-                  ("useAlternateSeries" .=) <$> _afrUseAlternateSeries,-                  ("range" .=) <$> _afrRange])---- | Duplicates the contents of a sheet.------ /See:/ 'duplicateSheetRequest' smart constructor.-data DuplicateSheetRequest = DuplicateSheetRequest'-    { _dsrNewSheetName     :: !(Maybe Text)-    , _dsrInsertSheetIndex :: !(Maybe (Textual Int32))-    , _dsrSourceSheetId    :: !(Maybe (Textual Int32))-    , _dsrNewSheetId       :: !(Maybe (Textual Int32))-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'DuplicateSheetRequest' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'dsrNewSheetName'------ * 'dsrInsertSheetIndex'------ * 'dsrSourceSheetId'------ * 'dsrNewSheetId'-duplicateSheetRequest-    :: DuplicateSheetRequest-duplicateSheetRequest =-    DuplicateSheetRequest'-    { _dsrNewSheetName = Nothing-    , _dsrInsertSheetIndex = Nothing-    , _dsrSourceSheetId = Nothing-    , _dsrNewSheetId = Nothing-    }---- | The name of the new sheet. If empty, a new name is chosen for you.-dsrNewSheetName :: Lens' DuplicateSheetRequest (Maybe Text)-dsrNewSheetName-  = lens _dsrNewSheetName-      (\ s a -> s{_dsrNewSheetName = a})---- | The zero-based index where the new sheet should be inserted. The index--- of all sheets after this are incremented.-dsrInsertSheetIndex :: Lens' DuplicateSheetRequest (Maybe Int32)-dsrInsertSheetIndex-  = lens _dsrInsertSheetIndex-      (\ s a -> s{_dsrInsertSheetIndex = a})-      . mapping _Coerce---- | The sheet to duplicate.-dsrSourceSheetId :: Lens' DuplicateSheetRequest (Maybe Int32)-dsrSourceSheetId-  = lens _dsrSourceSheetId-      (\ s a -> s{_dsrSourceSheetId = a})-      . mapping _Coerce---- | If set, the ID of the new sheet. If not set, an ID is chosen. If set,--- the ID must not conflict with any existing sheet ID. If set, it must be--- non-negative.-dsrNewSheetId :: Lens' DuplicateSheetRequest (Maybe Int32)-dsrNewSheetId-  = lens _dsrNewSheetId-      (\ s a -> s{_dsrNewSheetId = a})-      . mapping _Coerce--instance FromJSON DuplicateSheetRequest where-        parseJSON-          = withObject "DuplicateSheetRequest"-              (\ o ->-                 DuplicateSheetRequest' <$>-                   (o .:? "newSheetName") <*> (o .:? "insertSheetIndex")-                     <*> (o .:? "sourceSheetId")-                     <*> (o .:? "newSheetId"))--instance ToJSON DuplicateSheetRequest where-        toJSON DuplicateSheetRequest'{..}-          = object-              (catMaybes-                 [("newSheetName" .=) <$> _dsrNewSheetName,-                  ("insertSheetIndex" .=) <$> _dsrInsertSheetIndex,-                  ("sourceSheetId" .=) <$> _dsrSourceSheetId,-                  ("newSheetId" .=) <$> _dsrNewSheetId])---- | The result of a filter view being duplicated.------ /See:/ 'duplicateFilterViewResponse' smart constructor.-newtype DuplicateFilterViewResponse = DuplicateFilterViewResponse'-    { _dfvrFilter :: Maybe FilterView-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'DuplicateFilterViewResponse' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'dfvrFilter'-duplicateFilterViewResponse-    :: DuplicateFilterViewResponse-duplicateFilterViewResponse =-    DuplicateFilterViewResponse'-    { _dfvrFilter = Nothing-    }---- | The newly created filter.-dfvrFilter :: Lens' DuplicateFilterViewResponse (Maybe FilterView)-dfvrFilter-  = lens _dfvrFilter (\ s a -> s{_dfvrFilter = a})--instance FromJSON DuplicateFilterViewResponse where-        parseJSON-          = withObject "DuplicateFilterViewResponse"-              (\ o ->-                 DuplicateFilterViewResponse' <$> (o .:? "filter"))--instance ToJSON DuplicateFilterViewResponse where-        toJSON DuplicateFilterViewResponse'{..}-          = object (catMaybes [("filter" .=) <$> _dfvrFilter])---- | The request for updating more than one range of values in a spreadsheet.------ /See:/ 'batchUpdateValuesRequest' smart constructor.-data BatchUpdateValuesRequest = BatchUpdateValuesRequest'-    { _buvrData                         :: !(Maybe [ValueRange])-    , _buvrValueInputOption             :: !(Maybe BatchUpdateValuesRequestValueInputOption)-    , _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])---- | 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])---- | 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])---- | 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 FieldMask)-    , _uProperties :: !(Maybe SpreadsheetProperties)-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'UpdateSpreadsheetPropertiesRequest' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'uFields'------ * 'uProperties'-updateSpreadsheetPropertiesRequest-    :: UpdateSpreadsheetPropertiesRequest-updateSpreadsheetPropertiesRequest =-    UpdateSpreadsheetPropertiesRequest'-    { _uFields = Nothing-    , _uProperties = Nothing-    }---- | The fields that should be updated. At least one field must be specified.--- The root \'properties\' is implied and should not be specified. A single--- \`\"*\"\` can be used as short-hand for listing every field.-uFields :: Lens' UpdateSpreadsheetPropertiesRequest (Maybe FieldMask)-uFields = lens _uFields (\ s a -> s{_uFields = a})---- | The properties to update.-uProperties :: Lens' UpdateSpreadsheetPropertiesRequest (Maybe SpreadsheetProperties)-uProperties-  = lens _uProperties (\ s a -> s{_uProperties = a})--instance FromJSON UpdateSpreadsheetPropertiesRequest-         where-        parseJSON-          = withObject "UpdateSpreadsheetPropertiesRequest"-              (\ o ->-                 UpdateSpreadsheetPropertiesRequest' <$>-                   (o .:? "fields") <*> (o .:? "properties"))--instance ToJSON UpdateSpreadsheetPropertiesRequest-         where-        toJSON UpdateSpreadsheetPropertiesRequest'{..}-          = object-              (catMaybes-                 [("fields" .=) <$> _uFields,-                  ("properties" .=) <$> _uProperties])---- | The result of adding a new protected range.------ /See:/ 'addProtectedRangeResponse' smart constructor.-newtype AddProtectedRangeResponse = AddProtectedRangeResponse'-    { _aProtectedRange :: Maybe ProtectedRange-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'AddProtectedRangeResponse' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'aProtectedRange'-addProtectedRangeResponse-    :: AddProtectedRangeResponse-addProtectedRangeResponse =-    AddProtectedRangeResponse'-    { _aProtectedRange = Nothing-    }---- | The newly added protected range.-aProtectedRange :: Lens' AddProtectedRangeResponse (Maybe ProtectedRange)-aProtectedRange-  = lens _aProtectedRange-      (\ s a -> s{_aProtectedRange = a})--instance FromJSON AddProtectedRangeResponse where-        parseJSON-          = withObject "AddProtectedRangeResponse"-              (\ o ->-                 AddProtectedRangeResponse' <$>-                   (o .:? "protectedRange"))--instance ToJSON AddProtectedRangeResponse where-        toJSON AddProtectedRangeResponse'{..}-          = object-              (catMaybes-                 [("protectedRange" .=) <$> _aProtectedRange])---- | Appends rows or columns to the end of a sheet.------ /See:/ 'appendDimensionRequest' smart constructor.-data AppendDimensionRequest = AppendDimensionRequest'-    { _adrLength    :: !(Maybe (Textual Int32))-    , _adrDimension :: !(Maybe AppendDimensionRequestDimension)-    , _adrSheetId   :: !(Maybe (Textual Int32))-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'AppendDimensionRequest' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'adrLength'------ * 'adrDimension'------ * 'adrSheetId'-appendDimensionRequest-    :: AppendDimensionRequest-appendDimensionRequest =-    AppendDimensionRequest'-    { _adrLength = Nothing-    , _adrDimension = Nothing-    , _adrSheetId = Nothing-    }---- | The number of rows or columns to append.-adrLength :: Lens' AppendDimensionRequest (Maybe Int32)-adrLength-  = lens _adrLength (\ s a -> s{_adrLength = a}) .-      mapping _Coerce---- | Whether rows or columns should be appended.-adrDimension :: Lens' AppendDimensionRequest (Maybe AppendDimensionRequestDimension)-adrDimension-  = lens _adrDimension (\ s a -> s{_adrDimension = a})---- | The sheet to append rows or columns to.-adrSheetId :: Lens' AppendDimensionRequest (Maybe Int32)-adrSheetId-  = lens _adrSheetId (\ s a -> s{_adrSheetId = a}) .-      mapping _Coerce--instance FromJSON AppendDimensionRequest where-        parseJSON-          = withObject "AppendDimensionRequest"-              (\ o ->-                 AppendDimensionRequest' <$>-                   (o .:? "length") <*> (o .:? "dimension") <*>-                     (o .:? "sheetId"))--instance ToJSON AppendDimensionRequest where-        toJSON AppendDimensionRequest'{..}-          = object-              (catMaybes-                 [("length" .=) <$> _adrLength,-                  ("dimension" .=) <$> _adrDimension,-                  ("sheetId" .=) <$> _adrSheetId])---- | The definition of how a value in a pivot table should be calculated.------ /See:/ 'pivotValue' smart constructor.-data PivotValue = PivotValue'-    { _pvSourceColumnOffSet :: !(Maybe (Textual Int32))-    , _pvFormula            :: !(Maybe Text)-    , _pvName               :: !(Maybe Text)-    , _pvSummarizeFunction  :: !(Maybe PivotValueSummarizeFunction)-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'PivotValue' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'pvSourceColumnOffSet'------ * 'pvFormula'------ * 'pvName'------ * 'pvSummarizeFunction'-pivotValue-    :: PivotValue-pivotValue =-    PivotValue'-    { _pvSourceColumnOffSet = Nothing-    , _pvFormula = Nothing-    , _pvName = Nothing-    , _pvSummarizeFunction = Nothing-    }---- | The column offset of the source range that this value reads from. For--- example, if the source was \`C10:E15\`, a \`sourceColumnOffset\` of--- \`0\` means this value refers to column \`C\`, whereas the offset \`1\`--- would refer to column \`D\`.-pvSourceColumnOffSet :: Lens' PivotValue (Maybe Int32)-pvSourceColumnOffSet-  = lens _pvSourceColumnOffSet-      (\ s a -> s{_pvSourceColumnOffSet = a})-      . mapping _Coerce---- | A custom formula to calculate the value. The formula must start with an--- \`=\` character.-pvFormula :: Lens' PivotValue (Maybe Text)-pvFormula-  = lens _pvFormula (\ s a -> s{_pvFormula = a})---- | A name to use for the value. This is only used if formula was set.--- Otherwise, the column name is used.-pvName :: Lens' PivotValue (Maybe Text)-pvName = lens _pvName (\ s a -> s{_pvName = a})---- | A function to summarize the value. If formula is set, the only supported--- values are SUM and CUSTOM. If sourceColumnOffset is set, then \`CUSTOM\`--- is not supported.-pvSummarizeFunction :: Lens' PivotValue (Maybe PivotValueSummarizeFunction)-pvSummarizeFunction-  = lens _pvSummarizeFunction-      (\ s a -> s{_pvSummarizeFunction = a})--instance FromJSON PivotValue where-        parseJSON-          = withObject "PivotValue"-              (\ o ->-                 PivotValue' <$>-                   (o .:? "sourceColumnOffset") <*> (o .:? "formula")-                     <*> (o .:? "name")-                     <*> (o .:? "summarizeFunction"))--instance ToJSON PivotValue where-        toJSON PivotValue'{..}-          = object-              (catMaybes-                 [("sourceColumnOffset" .=) <$> _pvSourceColumnOffSet,-                  ("formula" .=) <$> _pvFormula,-                  ("name" .=) <$> _pvName,-                  ("summarizeFunction" .=) <$> _pvSummarizeFunction])---- | Unmerges cells in the given range.------ /See:/ 'unmergeCellsRequest' smart constructor.-newtype UnmergeCellsRequest = UnmergeCellsRequest'-    { _ucrRange :: Maybe GridRange-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'UnmergeCellsRequest' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'ucrRange'-unmergeCellsRequest-    :: UnmergeCellsRequest-unmergeCellsRequest =-    UnmergeCellsRequest'-    { _ucrRange = Nothing-    }---- | The range within which all cells should be unmerged. If the range spans--- multiple merges, all will be unmerged. The range must not partially span--- any merge.-ucrRange :: Lens' UnmergeCellsRequest (Maybe GridRange)-ucrRange = lens _ucrRange (\ s a -> s{_ucrRange = a})--instance FromJSON UnmergeCellsRequest where-        parseJSON-          = withObject "UnmergeCellsRequest"-              (\ o -> UnmergeCellsRequest' <$> (o .:? "range"))--instance ToJSON UnmergeCellsRequest where-        toJSON UnmergeCellsRequest'{..}-          = object (catMaybes [("range" .=) <$> _ucrRange])---- | Deletes the requested sheet.------ /See:/ 'deleteSheetRequest' smart constructor.-newtype DeleteSheetRequest = DeleteSheetRequest'-    { _dsrSheetId :: Maybe (Textual Int32)-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'DeleteSheetRequest' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'dsrSheetId'-deleteSheetRequest-    :: DeleteSheetRequest-deleteSheetRequest =-    DeleteSheetRequest'-    { _dsrSheetId = Nothing-    }---- | The ID of the sheet to delete.-dsrSheetId :: Lens' DeleteSheetRequest (Maybe Int32)-dsrSheetId-  = lens _dsrSheetId (\ s a -> s{_dsrSheetId = a}) .-      mapping _Coerce--instance FromJSON DeleteSheetRequest where-        parseJSON-          = withObject "DeleteSheetRequest"-              (\ o -> DeleteSheetRequest' <$> (o .:? "sheetId"))--instance ToJSON DeleteSheetRequest where-        toJSON DeleteSheetRequest'{..}-          = object (catMaybes [("sheetId" .=) <$> _dsrSheetId])---- | 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 will be 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 will be 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])---- | A chart embedded in a sheet.------ /See:/ 'embeddedChart' smart constructor.-data EmbeddedChart = EmbeddedChart'-    { _ecSpec     :: !(Maybe ChartSpec)-    , _ecPosition :: !(Maybe EmbeddedObjectPosition)-    , _ecChartId  :: !(Maybe (Textual Int32))-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'EmbeddedChart' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'ecSpec'------ * 'ecPosition'------ * 'ecChartId'-embeddedChart-    :: EmbeddedChart-embeddedChart =-    EmbeddedChart'-    { _ecSpec = Nothing-    , _ecPosition = Nothing-    , _ecChartId = Nothing-    }---- | The specification of the chart.-ecSpec :: Lens' EmbeddedChart (Maybe ChartSpec)-ecSpec = lens _ecSpec (\ s a -> s{_ecSpec = a})---- | The position of the chart.-ecPosition :: Lens' EmbeddedChart (Maybe EmbeddedObjectPosition)-ecPosition-  = lens _ecPosition (\ s a -> s{_ecPosition = a})---- | The ID of the chart.-ecChartId :: Lens' EmbeddedChart (Maybe Int32)-ecChartId-  = lens _ecChartId (\ s a -> s{_ecChartId = a}) .-      mapping _Coerce--instance FromJSON EmbeddedChart where-        parseJSON-          = withObject "EmbeddedChart"-              (\ o ->-                 EmbeddedChart' <$>-                   (o .:? "spec") <*> (o .:? "position") <*>-                     (o .:? "chartId"))--instance ToJSON EmbeddedChart where-        toJSON EmbeddedChart'{..}-          = object-              (catMaybes-                 [("spec" .=) <$> _ecSpec,-                  ("position" .=) <$> _ecPosition,-                  ("chartId" .=) <$> _ecChartId])---- | Data about each cell in a row.------ /See:/ 'rowData' smart constructor.-newtype RowData = RowData'-    { _rdValues :: Maybe [CellData]-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'RowData' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'rdValues'-rowData-    :: RowData-rowData =-    RowData'-    { _rdValues = Nothing-    }---- | The values in the row, one per column.-rdValues :: Lens' RowData [CellData]-rdValues-  = lens _rdValues (\ s a -> s{_rdValues = a}) .-      _Default-      . _Coerce--instance FromJSON RowData where-        parseJSON-          = withObject "RowData"-              (\ o -> RowData' <$> (o .:? "values" .!= mempty))--instance ToJSON RowData where-        toJSON RowData'{..}-          = object (catMaybes [("values" .=) <$> _rdValues])---- | The editors of a protected range.------ /See:/ 'editors' smart constructor.-data Editors = Editors'-    { _eGroups             :: !(Maybe [Text])-    , _eUsers              :: !(Maybe [Text])-    , _eDomainUsersCanEdit :: !(Maybe Bool)-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'Editors' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'eGroups'------ * 'eUsers'------ * 'eDomainUsersCanEdit'-editors-    :: Editors-editors =-    Editors'-    { _eGroups = Nothing-    , _eUsers = Nothing-    , _eDomainUsersCanEdit = Nothing-    }---- | The email addresses of groups with edit access to the protected range.-eGroups :: Lens' Editors [Text]-eGroups-  = lens _eGroups (\ s a -> s{_eGroups = a}) . _Default-      . _Coerce---- | The email addresses of users with edit access to the protected range.-eUsers :: Lens' Editors [Text]-eUsers-  = lens _eUsers (\ s a -> s{_eUsers = a}) . _Default .-      _Coerce---- | True if anyone in the document\'s domain has edit access to the--- protected range. Domain protection is only supported on documents within--- a domain.-eDomainUsersCanEdit :: Lens' Editors (Maybe Bool)-eDomainUsersCanEdit-  = lens _eDomainUsersCanEdit-      (\ s a -> s{_eDomainUsersCanEdit = a})--instance FromJSON Editors where-        parseJSON-          = withObject "Editors"-              (\ o ->-                 Editors' <$>-                   (o .:? "groups" .!= mempty) <*>-                     (o .:? "users" .!= mempty)-                     <*> (o .:? "domainUsersCanEdit"))--instance ToJSON Editors where-        toJSON Editors'{..}-          = object-              (catMaybes-                 [("groups" .=) <$> _eGroups,-                  ("users" .=) <$> _eUsers,-                  ("domainUsersCanEdit" .=) <$> _eDomainUsersCanEdit])---- | A pivot table.------ /See:/ 'pivotTable' smart constructor.-data PivotTable = PivotTable'-    { _ptValues      :: !(Maybe [PivotValue])-    , _ptValueLayout :: !(Maybe PivotTableValueLayout)-    , _ptRows        :: !(Maybe [PivotGroup])-    , _ptSource      :: !(Maybe GridRange)-    , _ptColumns     :: !(Maybe [PivotGroup])-    , _ptCriteria    :: !(Maybe PivotTableCriteria)-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'PivotTable' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'ptValues'------ * 'ptValueLayout'------ * 'ptRows'------ * 'ptSource'------ * 'ptColumns'------ * 'ptCriteria'-pivotTable-    :: PivotTable-pivotTable =-    PivotTable'-    { _ptValues = Nothing-    , _ptValueLayout = Nothing-    , _ptRows = Nothing-    , _ptSource = Nothing-    , _ptColumns = Nothing-    , _ptCriteria = Nothing-    }---- | A list of values to include in the pivot table.-ptValues :: Lens' PivotTable [PivotValue]-ptValues-  = lens _ptValues (\ s a -> s{_ptValues = a}) .-      _Default-      . _Coerce---- | Whether values should be listed horizontally (as columns) or vertically--- (as rows).-ptValueLayout :: Lens' PivotTable (Maybe PivotTableValueLayout)-ptValueLayout-  = lens _ptValueLayout-      (\ s a -> s{_ptValueLayout = a})---- | Each row grouping in the pivot table.-ptRows :: Lens' PivotTable [PivotGroup]-ptRows-  = lens _ptRows (\ s a -> s{_ptRows = a}) . _Default .-      _Coerce---- | The range the pivot table is reading data from.-ptSource :: Lens' PivotTable (Maybe GridRange)-ptSource = lens _ptSource (\ s a -> s{_ptSource = a})---- | Each column grouping in the pivot table.-ptColumns :: Lens' PivotTable [PivotGroup]-ptColumns-  = lens _ptColumns (\ s a -> s{_ptColumns = a}) .-      _Default-      . _Coerce---- | An optional mapping of filters per source column offset. The filters--- will be applied before aggregating data into the pivot table. The map\'s--- key is the column offset of the source range that you want to filter,--- and the value is the criteria for that column. For example, if the--- source was \`C10:E15\`, a key of \`0\` will have the filter for column--- \`C\`, whereas the key \`1\` is for column \`D\`.-ptCriteria :: Lens' PivotTable (Maybe PivotTableCriteria)-ptCriteria-  = lens _ptCriteria (\ s a -> s{_ptCriteria = a})--instance FromJSON PivotTable where-        parseJSON-          = withObject "PivotTable"-              (\ o ->-                 PivotTable' <$>-                   (o .:? "values" .!= mempty) <*> (o .:? "valueLayout")-                     <*> (o .:? "rows" .!= mempty)-                     <*> (o .:? "source")-                     <*> (o .:? "columns" .!= mempty)-                     <*> (o .:? "criteria"))--instance ToJSON PivotTable where-        toJSON PivotTable'{..}-          = object-              (catMaybes-                 [("values" .=) <$> _ptValues,-                  ("valueLayout" .=) <$> _ptValueLayout,-                  ("rows" .=) <$> _ptRows, ("source" .=) <$> _ptSource,-                  ("columns" .=) <$> _ptColumns,-                  ("criteria" .=) <$> _ptCriteria])---- | The position of an embedded object such as a chart.------ /See:/ 'embeddedObjectPosition' smart constructor.-data EmbeddedObjectPosition = EmbeddedObjectPosition'-    { _eopOverlayPosition :: !(Maybe OverlayPosition)-    , _eopSheetId         :: !(Maybe (Textual Int32))-    , _eopNewSheet        :: !(Maybe Bool)-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'EmbeddedObjectPosition' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'eopOverlayPosition'------ * 'eopSheetId'------ * 'eopNewSheet'-embeddedObjectPosition-    :: EmbeddedObjectPosition-embeddedObjectPosition =-    EmbeddedObjectPosition'-    { _eopOverlayPosition = Nothing-    , _eopSheetId = Nothing-    , _eopNewSheet = Nothing-    }---- | The position at which the object is overlaid on top of a grid.-eopOverlayPosition :: Lens' EmbeddedObjectPosition (Maybe OverlayPosition)-eopOverlayPosition-  = lens _eopOverlayPosition-      (\ s a -> s{_eopOverlayPosition = a})---- | The sheet this is on. Set only if the embedded object is on its own--- sheet. Must be non-negative.-eopSheetId :: Lens' EmbeddedObjectPosition (Maybe Int32)-eopSheetId-  = lens _eopSheetId (\ s a -> s{_eopSheetId = a}) .-      mapping _Coerce---- | If true, the embedded object will be put on a new sheet whose ID is--- chosen for you. Used only when writing.-eopNewSheet :: Lens' EmbeddedObjectPosition (Maybe Bool)-eopNewSheet-  = lens _eopNewSheet (\ s a -> s{_eopNewSheet = a})--instance FromJSON EmbeddedObjectPosition where-        parseJSON-          = withObject "EmbeddedObjectPosition"-              (\ o ->-                 EmbeddedObjectPosition' <$>-                   (o .:? "overlayPosition") <*> (o .:? "sheetId") <*>-                     (o .:? "newSheet"))--instance ToJSON EmbeddedObjectPosition where-        toJSON EmbeddedObjectPosition'{..}-          = object-              (catMaybes-                 [("overlayPosition" .=) <$> _eopOverlayPosition,-                  ("sheetId" .=) <$> _eopSheetId,-                  ("newSheet" .=) <$> _eopNewSheet])---- | The default filter associated with a sheet.------ /See:/ 'basicFilter' smart constructor.-data BasicFilter = BasicFilter'-    { _bfSortSpecs :: !(Maybe [SortSpec])-    , _bfRange     :: !(Maybe GridRange)-    , _bfCriteria  :: !(Maybe BasicFilterCriteria)-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'BasicFilter' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'bfSortSpecs'------ * 'bfRange'------ * 'bfCriteria'-basicFilter-    :: BasicFilter-basicFilter =-    BasicFilter'-    { _bfSortSpecs = Nothing-    , _bfRange = Nothing-    , _bfCriteria = Nothing-    }---- | The sort order per column. Later specifications are used when values are--- equal in the earlier specifications.-bfSortSpecs :: Lens' BasicFilter [SortSpec]-bfSortSpecs-  = lens _bfSortSpecs (\ s a -> s{_bfSortSpecs = a}) .-      _Default-      . _Coerce---- | The range the filter covers.-bfRange :: Lens' BasicFilter (Maybe GridRange)-bfRange = lens _bfRange (\ s a -> s{_bfRange = a})---- | The criteria for showing\/hiding values per column. The map\'s key is--- the column index, and the value is the criteria for that column.-bfCriteria :: Lens' BasicFilter (Maybe BasicFilterCriteria)-bfCriteria-  = lens _bfCriteria (\ s a -> s{_bfCriteria = a})--instance FromJSON BasicFilter where-        parseJSON-          = withObject "BasicFilter"-              (\ o ->-                 BasicFilter' <$>-                   (o .:? "sortSpecs" .!= mempty) <*> (o .:? "range")-                     <*> (o .:? "criteria"))--instance ToJSON BasicFilter where-        toJSON BasicFilter'{..}-          = object-              (catMaybes-                 [("sortSpecs" .=) <$> _bfSortSpecs,-                  ("range" .=) <$> _bfRange,-                  ("criteria" .=) <$> _bfCriteria])---- | Splits a column of text into multiple columns, based on a delimiter in--- each cell.------ /See:/ 'textToColumnsRequest' smart constructor.-data TextToColumnsRequest = TextToColumnsRequest'-    { _ttcrDelimiterType :: !(Maybe TextToColumnsRequestDelimiterType)-    , _ttcrSource        :: !(Maybe GridRange)-    , _ttcrDelimiter     :: !(Maybe Text)-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'TextToColumnsRequest' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'ttcrDelimiterType'------ * 'ttcrSource'------ * 'ttcrDelimiter'-textToColumnsRequest-    :: TextToColumnsRequest-textToColumnsRequest =-    TextToColumnsRequest'-    { _ttcrDelimiterType = Nothing-    , _ttcrSource = Nothing-    , _ttcrDelimiter = Nothing-    }---- | The delimiter type to use.-ttcrDelimiterType :: Lens' TextToColumnsRequest (Maybe TextToColumnsRequestDelimiterType)-ttcrDelimiterType-  = lens _ttcrDelimiterType-      (\ s a -> s{_ttcrDelimiterType = a})---- | The source data range. This must span exactly one column.-ttcrSource :: Lens' TextToColumnsRequest (Maybe GridRange)-ttcrSource-  = lens _ttcrSource (\ s a -> s{_ttcrSource = a})---- | The delimiter to use. Used only if delimiterType is CUSTOM.-ttcrDelimiter :: Lens' TextToColumnsRequest (Maybe Text)-ttcrDelimiter-  = lens _ttcrDelimiter-      (\ s a -> s{_ttcrDelimiter = a})--instance FromJSON TextToColumnsRequest where-        parseJSON-          = withObject "TextToColumnsRequest"-              (\ o ->-                 TextToColumnsRequest' <$>-                   (o .:? "delimiterType") <*> (o .:? "source") <*>-                     (o .:? "delimiter"))--instance ToJSON TextToColumnsRequest where-        toJSON TextToColumnsRequest'{..}-          = object-              (catMaybes-                 [("delimiterType" .=) <$> _ttcrDelimiterType,-                  ("source" .=) <$> _ttcrSource,-                  ("delimiter" .=) <$> _ttcrDelimiter])---- | The request for updating any aspect of a spreadsheet.------ /See:/ 'batchUpdateSpreadsheetRequest' smart constructor.-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_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.-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 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])---- | Updates all cells in a range with new data.------ /See:/ 'updateCellsRequest' smart constructor.-data UpdateCellsRequest = UpdateCellsRequest'-    { _updStart  :: !(Maybe GridCoordinate)-    , _updRows   :: !(Maybe [RowData])-    , _updRange  :: !(Maybe GridRange)-    , _updFields :: !(Maybe FieldMask)-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'UpdateCellsRequest' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'updStart'------ * 'updRows'------ * 'updRange'------ * 'updFields'-updateCellsRequest-    :: UpdateCellsRequest-updateCellsRequest =-    UpdateCellsRequest'-    { _updStart = Nothing-    , _updRows = Nothing-    , _updRange = Nothing-    , _updFields = Nothing-    }---- | The coordinate to start writing data at. Any number of rows and columns--- (including a different number of columns per row) may be written.-updStart :: Lens' UpdateCellsRequest (Maybe GridCoordinate)-updStart = lens _updStart (\ s a -> s{_updStart = a})---- | The data to write.-updRows :: Lens' UpdateCellsRequest [RowData]-updRows-  = lens _updRows (\ s a -> s{_updRows = a}) . _Default-      . _Coerce---- | The range to write data to. If the data in rows does not cover the--- entire requested range, the fields matching those set in fields will be--- cleared.-updRange :: Lens' UpdateCellsRequest (Maybe GridRange)-updRange = lens _updRange (\ s a -> s{_updRange = a})---- | The fields of CellData that should be updated. At least one field must--- be specified. The root is the CellData; \'row.values.\' should not be--- specified. A single \`\"*\"\` can be used as short-hand for listing--- every field.-updFields :: Lens' UpdateCellsRequest (Maybe FieldMask)-updFields-  = lens _updFields (\ s a -> s{_updFields = a})--instance FromJSON UpdateCellsRequest where-        parseJSON-          = withObject "UpdateCellsRequest"-              (\ o ->-                 UpdateCellsRequest' <$>-                   (o .:? "start") <*> (o .:? "rows" .!= mempty) <*>-                     (o .:? "range")-                     <*> (o .:? "fields"))--instance ToJSON UpdateCellsRequest where-        toJSON UpdateCellsRequest'{..}-          = object-              (catMaybes-                 [("start" .=) <$> _updStart,-                  ("rows" .=) <$> _updRows, ("range" .=) <$> _updRange,-                  ("fields" .=) <$> _updFields])---- | The format of a cell.------ /See:/ 'cellFormat' smart constructor.-data CellFormat = CellFormat'-    { _cfBOrders              :: !(Maybe BOrders)-    , _cfVerticalAlignment    :: !(Maybe CellFormatVerticalAlignment)-    , _cfBackgRoundColor      :: !(Maybe Color)-    , _cfHyperlinkDisplayType :: !(Maybe CellFormatHyperlinkDisplayType)-    , _cfWrapStrategy         :: !(Maybe CellFormatWrapStrategy)-    , _cfNumberFormat         :: !(Maybe NumberFormat)-    , _cfTextDirection        :: !(Maybe CellFormatTextDirection)-    , _cfTextFormat           :: !(Maybe TextFormat)-    , _cfHorizontalAlignment  :: !(Maybe CellFormatHorizontalAlignment)-    , _cfPadding              :: !(Maybe Padding)-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'CellFormat' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'cfBOrders'------ * 'cfVerticalAlignment'------ * 'cfBackgRoundColor'------ * 'cfHyperlinkDisplayType'------ * 'cfWrapStrategy'------ * 'cfNumberFormat'------ * 'cfTextDirection'------ * 'cfTextFormat'------ * 'cfHorizontalAlignment'------ * 'cfPadding'-cellFormat-    :: CellFormat-cellFormat =-    CellFormat'-    { _cfBOrders = Nothing-    , _cfVerticalAlignment = Nothing-    , _cfBackgRoundColor = Nothing-    , _cfHyperlinkDisplayType = Nothing-    , _cfWrapStrategy = Nothing-    , _cfNumberFormat = Nothing-    , _cfTextDirection = Nothing-    , _cfTextFormat = Nothing-    , _cfHorizontalAlignment = Nothing-    , _cfPadding = Nothing-    }---- | The borders of the cell.-cfBOrders :: Lens' CellFormat (Maybe BOrders)-cfBOrders-  = lens _cfBOrders (\ s a -> s{_cfBOrders = a})---- | The vertical alignment of the value in the cell.-cfVerticalAlignment :: Lens' CellFormat (Maybe CellFormatVerticalAlignment)-cfVerticalAlignment-  = lens _cfVerticalAlignment-      (\ s a -> s{_cfVerticalAlignment = a})---- | The background color of the cell.-cfBackgRoundColor :: Lens' CellFormat (Maybe Color)-cfBackgRoundColor-  = lens _cfBackgRoundColor-      (\ s a -> s{_cfBackgRoundColor = a})---- | How a hyperlink, if it exists, should be displayed in the cell.-cfHyperlinkDisplayType :: Lens' CellFormat (Maybe CellFormatHyperlinkDisplayType)-cfHyperlinkDisplayType-  = lens _cfHyperlinkDisplayType-      (\ s a -> s{_cfHyperlinkDisplayType = a})---- | The wrap strategy for the value in the cell.-cfWrapStrategy :: Lens' CellFormat (Maybe CellFormatWrapStrategy)-cfWrapStrategy-  = lens _cfWrapStrategy-      (\ s a -> s{_cfWrapStrategy = a})---- | A format describing how number values should be represented to the user.-cfNumberFormat :: Lens' CellFormat (Maybe NumberFormat)-cfNumberFormat-  = lens _cfNumberFormat-      (\ s a -> s{_cfNumberFormat = a})---- | The direction of the text in the cell.-cfTextDirection :: Lens' CellFormat (Maybe CellFormatTextDirection)-cfTextDirection-  = lens _cfTextDirection-      (\ s a -> s{_cfTextDirection = a})---- | The format of the text in the cell (unless overridden by a format run).-cfTextFormat :: Lens' CellFormat (Maybe TextFormat)-cfTextFormat-  = lens _cfTextFormat (\ s a -> s{_cfTextFormat = a})---- | The horizontal alignment of the value in the cell.-cfHorizontalAlignment :: Lens' CellFormat (Maybe CellFormatHorizontalAlignment)-cfHorizontalAlignment-  = lens _cfHorizontalAlignment-      (\ s a -> s{_cfHorizontalAlignment = a})---- | The padding of the cell.-cfPadding :: Lens' CellFormat (Maybe Padding)-cfPadding-  = lens _cfPadding (\ s a -> s{_cfPadding = a})--instance FromJSON CellFormat where-        parseJSON-          = withObject "CellFormat"-              (\ o ->-                 CellFormat' <$>-                   (o .:? "borders") <*> (o .:? "verticalAlignment") <*>-                     (o .:? "backgroundColor")-                     <*> (o .:? "hyperlinkDisplayType")-                     <*> (o .:? "wrapStrategy")-                     <*> (o .:? "numberFormat")-                     <*> (o .:? "textDirection")-                     <*> (o .:? "textFormat")-                     <*> (o .:? "horizontalAlignment")-                     <*> (o .:? "padding"))--instance ToJSON CellFormat where-        toJSON CellFormat'{..}-          = object-              (catMaybes-                 [("borders" .=) <$> _cfBOrders,-                  ("verticalAlignment" .=) <$> _cfVerticalAlignment,-                  ("backgroundColor" .=) <$> _cfBackgRoundColor,-                  ("hyperlinkDisplayType" .=) <$>-                    _cfHyperlinkDisplayType,-                  ("wrapStrategy" .=) <$> _cfWrapStrategy,-                  ("numberFormat" .=) <$> _cfNumberFormat,-                  ("textDirection" .=) <$> _cfTextDirection,-                  ("textFormat" .=) <$> _cfTextFormat,-                  ("horizontalAlignment" .=) <$>-                    _cfHorizontalAlignment,-                  ("padding" .=) <$> _cfPadding])---- | Deletes the protected range with the given ID.------ /See:/ 'deleteProtectedRangeRequest' smart constructor.-newtype DeleteProtectedRangeRequest = DeleteProtectedRangeRequest'-    { _dprrProtectedRangeId :: Maybe (Textual Int32)-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'DeleteProtectedRangeRequest' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'dprrProtectedRangeId'-deleteProtectedRangeRequest-    :: DeleteProtectedRangeRequest-deleteProtectedRangeRequest =-    DeleteProtectedRangeRequest'-    { _dprrProtectedRangeId = Nothing-    }---- | The ID of the protected range to delete.-dprrProtectedRangeId :: Lens' DeleteProtectedRangeRequest (Maybe Int32)-dprrProtectedRangeId-  = lens _dprrProtectedRangeId-      (\ s a -> s{_dprrProtectedRangeId = a})-      . mapping _Coerce--instance FromJSON DeleteProtectedRangeRequest where-        parseJSON-          = withObject "DeleteProtectedRangeRequest"-              (\ o ->-                 DeleteProtectedRangeRequest' <$>-                   (o .:? "protectedRangeId"))--instance ToJSON DeleteProtectedRangeRequest where-        toJSON DeleteProtectedRangeRequest'{..}-          = object-              (catMaybes-                 [("protectedRangeId" .=) <$> _dprrProtectedRangeId])---- | Updates an existing protected range with the specified protectedRangeId.------ /See:/ 'updateProtectedRangeRequest' smart constructor.-data UpdateProtectedRangeRequest = UpdateProtectedRangeRequest'-    { _uprrProtectedRange :: !(Maybe ProtectedRange)-    , _uprrFields         :: !(Maybe FieldMask)-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'UpdateProtectedRangeRequest' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'uprrProtectedRange'------ * 'uprrFields'-updateProtectedRangeRequest-    :: UpdateProtectedRangeRequest-updateProtectedRangeRequest =-    UpdateProtectedRangeRequest'-    { _uprrProtectedRange = Nothing-    , _uprrFields = Nothing-    }---- | The protected range to update with the new properties.-uprrProtectedRange :: Lens' UpdateProtectedRangeRequest (Maybe ProtectedRange)-uprrProtectedRange-  = lens _uprrProtectedRange-      (\ s a -> s{_uprrProtectedRange = a})---- | The fields that should be updated. At least one field must be specified.--- The root \`protectedRange\` is implied and should not be specified. A--- single \`\"*\"\` can be used as short-hand for listing every field.-uprrFields :: Lens' UpdateProtectedRangeRequest (Maybe FieldMask)-uprrFields-  = lens _uprrFields (\ s a -> s{_uprrFields = a})--instance FromJSON UpdateProtectedRangeRequest where-        parseJSON-          = withObject "UpdateProtectedRangeRequest"-              (\ o ->-                 UpdateProtectedRangeRequest' <$>-                   (o .:? "protectedRange") <*> (o .:? "fields"))--instance ToJSON UpdateProtectedRangeRequest where-        toJSON UpdateProtectedRangeRequest'{..}-          = object-              (catMaybes-                 [("protectedRange" .=) <$> _uprrProtectedRange,-                  ("fields" .=) <$> _uprrFields])---- | The result of adding a sheet.------ /See:/ 'addSheetResponse' smart constructor.-newtype AddSheetResponse = AddSheetResponse'-    { _aProperties :: Maybe SheetProperties-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'AddSheetResponse' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'aProperties'-addSheetResponse-    :: AddSheetResponse-addSheetResponse =-    AddSheetResponse'-    { _aProperties = Nothing-    }---- | The properties of the newly added sheet.-aProperties :: Lens' AddSheetResponse (Maybe SheetProperties)-aProperties-  = lens _aProperties (\ s a -> s{_aProperties = a})--instance FromJSON AddSheetResponse where-        parseJSON-          = withObject "AddSheetResponse"-              (\ o -> AddSheetResponse' <$> (o .:? "properties"))--instance ToJSON AddSheetResponse where-        toJSON AddSheetResponse'{..}-          = object-              (catMaybes [("properties" .=) <$> _aProperties])---- | A protected range.------ /See:/ 'protectedRange' smart constructor.-data ProtectedRange = ProtectedRange'-    { _prProtectedRangeId      :: !(Maybe (Textual Int32))-    , _prWarningOnly           :: !(Maybe Bool)-    , _prNamedRangeId          :: !(Maybe Text)-    , _prRange                 :: !(Maybe GridRange)-    , _prEditors               :: !(Maybe Editors)-    , _prUnprotectedRanges     :: !(Maybe [GridRange])-    , _prRequestingUserCanEdit :: !(Maybe Bool)-    , _prDescription           :: !(Maybe Text)-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'ProtectedRange' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'prProtectedRangeId'------ * 'prWarningOnly'------ * 'prNamedRangeId'------ * 'prRange'------ * 'prEditors'------ * 'prUnprotectedRanges'------ * 'prRequestingUserCanEdit'------ * 'prDescription'-protectedRange-    :: ProtectedRange-protectedRange =-    ProtectedRange'-    { _prProtectedRangeId = Nothing-    , _prWarningOnly = Nothing-    , _prNamedRangeId = Nothing-    , _prRange = Nothing-    , _prEditors = Nothing-    , _prUnprotectedRanges = Nothing-    , _prRequestingUserCanEdit = Nothing-    , _prDescription = Nothing-    }---- | The ID of the protected range. This field is read-only.-prProtectedRangeId :: Lens' ProtectedRange (Maybe Int32)-prProtectedRangeId-  = lens _prProtectedRangeId-      (\ s a -> s{_prProtectedRangeId = a})-      . mapping _Coerce---- | True if this protected range will show a warning when editing.--- Warning-based protection means that every user can edit data in the--- protected range, except editing will prompt a warning asking the user to--- confirm the edit. When writing: if this field is true, then editors is--- ignored. Additionally, if this field is changed from true to false and--- the \`editors\` field is not set (nor included in the field mask), then--- the editors will be set to all the editors in the document.-prWarningOnly :: Lens' ProtectedRange (Maybe Bool)-prWarningOnly-  = lens _prWarningOnly-      (\ s a -> s{_prWarningOnly = a})---- | The named range this protected range is backed by, if any. When writing,--- only one of range or named_range_id may be set.-prNamedRangeId :: Lens' ProtectedRange (Maybe Text)-prNamedRangeId-  = lens _prNamedRangeId-      (\ s a -> s{_prNamedRangeId = a})---- | The range that is being protected. The range may be fully unbounded, in--- which case this is considered a protected sheet. When writing, only one--- of range or named_range_id may be set.-prRange :: Lens' ProtectedRange (Maybe GridRange)-prRange = lens _prRange (\ s a -> s{_prRange = a})---- | The users and groups with edit access to the protected range. This field--- is only visible to users with edit access to the protected range and the--- document. Editors are not supported with warning_only protection.-prEditors :: Lens' ProtectedRange (Maybe Editors)-prEditors-  = lens _prEditors (\ s a -> s{_prEditors = a})---- | The list of unprotected ranges within a protected sheet. Unprotected--- ranges are only supported on protected sheets.-prUnprotectedRanges :: Lens' ProtectedRange [GridRange]-prUnprotectedRanges-  = lens _prUnprotectedRanges-      (\ s a -> s{_prUnprotectedRanges = a})-      . _Default-      . _Coerce---- | True if the user who requested this protected range can edit the--- protected area. This field is read-only.-prRequestingUserCanEdit :: Lens' ProtectedRange (Maybe Bool)-prRequestingUserCanEdit-  = lens _prRequestingUserCanEdit-      (\ s a -> s{_prRequestingUserCanEdit = a})---- | The description of this protected range.-prDescription :: Lens' ProtectedRange (Maybe Text)-prDescription-  = lens _prDescription-      (\ s a -> s{_prDescription = a})--instance FromJSON ProtectedRange where-        parseJSON-          = withObject "ProtectedRange"-              (\ o ->-                 ProtectedRange' <$>-                   (o .:? "protectedRangeId") <*> (o .:? "warningOnly")-                     <*> (o .:? "namedRangeId")-                     <*> (o .:? "range")-                     <*> (o .:? "editors")-                     <*> (o .:? "unprotectedRanges" .!= mempty)-                     <*> (o .:? "requestingUserCanEdit")-                     <*> (o .:? "description"))--instance ToJSON ProtectedRange where-        toJSON ProtectedRange'{..}-          = object-              (catMaybes-                 [("protectedRangeId" .=) <$> _prProtectedRangeId,-                  ("warningOnly" .=) <$> _prWarningOnly,-                  ("namedRangeId" .=) <$> _prNamedRangeId,-                  ("range" .=) <$> _prRange,-                  ("editors" .=) <$> _prEditors,-                  ("unprotectedRanges" .=) <$> _prUnprotectedRanges,-                  ("requestingUserCanEdit" .=) <$>-                    _prRequestingUserCanEdit,-                  ("description" .=) <$> _prDescription])---- | An axis of the chart. A chart may not have more than one axis per axis--- position.------ /See:/ 'basicChartAxis' smart constructor.-data BasicChartAxis = BasicChartAxis'-    { _bcaFormat   :: !(Maybe TextFormat)-    , _bcaTitle    :: !(Maybe Text)-    , _bcaPosition :: !(Maybe BasicChartAxisPosition)-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'BasicChartAxis' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'bcaFormat'------ * 'bcaTitle'------ * 'bcaPosition'-basicChartAxis-    :: BasicChartAxis-basicChartAxis =-    BasicChartAxis'-    { _bcaFormat = Nothing-    , _bcaTitle = Nothing-    , _bcaPosition = Nothing-    }---- | The format of the title. Only valid if the axis is not associated with--- the domain.-bcaFormat :: Lens' BasicChartAxis (Maybe TextFormat)-bcaFormat-  = lens _bcaFormat (\ s a -> s{_bcaFormat = a})---- | The title of this axis. If set, this overrides any title inferred from--- headers of the data.-bcaTitle :: Lens' BasicChartAxis (Maybe Text)-bcaTitle = lens _bcaTitle (\ s a -> s{_bcaTitle = a})---- | The position of this axis.-bcaPosition :: Lens' BasicChartAxis (Maybe BasicChartAxisPosition)-bcaPosition-  = lens _bcaPosition (\ s a -> s{_bcaPosition = a})--instance FromJSON BasicChartAxis where-        parseJSON-          = withObject "BasicChartAxis"-              (\ o ->-                 BasicChartAxis' <$>-                   (o .:? "format") <*> (o .:? "title") <*>-                     (o .:? "position"))--instance ToJSON BasicChartAxis where-        toJSON BasicChartAxis'{..}-          = object-              (catMaybes-                 [("format" .=) <$> _bcaFormat,-                  ("title" .=) <$> _bcaTitle,-                  ("position" .=) <$> _bcaPosition])---- | Data in the grid, as well as metadata about the dimensions.------ /See:/ 'gridData' smart constructor.-data GridData = GridData'-    { _gdRowMetadata    :: !(Maybe [DimensionProperties])-    , _gdStartRow       :: !(Maybe (Textual Int32))-    , _gdRowData        :: !(Maybe [RowData])-    , _gdColumnMetadata :: !(Maybe [DimensionProperties])-    , _gdStartColumn    :: !(Maybe (Textual Int32))-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'GridData' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'gdRowMetadata'------ * 'gdStartRow'------ * 'gdRowData'------ * 'gdColumnMetadata'------ * 'gdStartColumn'-gridData-    :: GridData-gridData =-    GridData'-    { _gdRowMetadata = Nothing-    , _gdStartRow = Nothing-    , _gdRowData = Nothing-    , _gdColumnMetadata = Nothing-    , _gdStartColumn = Nothing-    }---- | Metadata about the requested rows in the grid, starting with the row in--- start_row.-gdRowMetadata :: Lens' GridData [DimensionProperties]-gdRowMetadata-  = lens _gdRowMetadata-      (\ s a -> s{_gdRowMetadata = a})-      . _Default-      . _Coerce---- | The first row this GridData refers to, zero-based.-gdStartRow :: Lens' GridData (Maybe Int32)-gdStartRow-  = lens _gdStartRow (\ s a -> s{_gdStartRow = a}) .-      mapping _Coerce---- | The data in the grid, one entry per row, starting with the row in--- startRow. The values in RowData will correspond to columns starting at--- start_column.-gdRowData :: Lens' GridData [RowData]-gdRowData-  = lens _gdRowData (\ s a -> s{_gdRowData = a}) .-      _Default-      . _Coerce---- | Metadata about the requested columns in the grid, starting with the--- column in start_column.-gdColumnMetadata :: Lens' GridData [DimensionProperties]-gdColumnMetadata-  = lens _gdColumnMetadata-      (\ s a -> s{_gdColumnMetadata = a})-      . _Default-      . _Coerce---- | The first column this GridData refers to, zero-based.-gdStartColumn :: Lens' GridData (Maybe Int32)-gdStartColumn-  = lens _gdStartColumn-      (\ s a -> s{_gdStartColumn = a})-      . mapping _Coerce--instance FromJSON GridData where-        parseJSON-          = withObject "GridData"-              (\ o ->-                 GridData' <$>-                   (o .:? "rowMetadata" .!= mempty) <*>-                     (o .:? "startRow")-                     <*> (o .:? "rowData" .!= mempty)-                     <*> (o .:? "columnMetadata" .!= mempty)-                     <*> (o .:? "startColumn"))--instance ToJSON GridData where-        toJSON GridData'{..}-          = object-              (catMaybes-                 [("rowMetadata" .=) <$> _gdRowMetadata,-                  ("startRow" .=) <$> _gdStartRow,-                  ("rowData" .=) <$> _gdRowData,-                  ("columnMetadata" .=) <$> _gdColumnMetadata,-                  ("startColumn" .=) <$> _gdStartColumn])---- | The number format of a cell.------ /See:/ 'numberFormat' smart constructor.-data NumberFormat = NumberFormat'-    { _nfPattern :: !(Maybe Text)-    , _nfType    :: !(Maybe NumberFormatType)-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'NumberFormat' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'nfPattern'------ * 'nfType'-numberFormat-    :: NumberFormat-numberFormat =-    NumberFormat'-    { _nfPattern = Nothing-    , _nfType = Nothing-    }---- | Pattern string used for formatting. If not set, a default pattern based--- on the user\'s locale will be used if necessary for the given type. See--- the [Date and Number Formats guide](\/sheets\/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])---- | 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'-    { _pgValueMetadata      :: !(Maybe [PivotGroupValueMetadata])-    , _pgSourceColumnOffSet :: !(Maybe (Textual Int32))-    , _pgSortOrder          :: !(Maybe PivotGroupSortOrder)-    , _pgShowTotals         :: !(Maybe Bool)-    , _pgValueBucket        :: !(Maybe PivotGroupSortValueBucket)-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'PivotGroup' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'pgValueMetadata'------ * 'pgSourceColumnOffSet'------ * 'pgSortOrder'------ * 'pgShowTotals'------ * 'pgValueBucket'-pivotGroup-    :: PivotGroup-pivotGroup =-    PivotGroup'-    { _pgValueMetadata = Nothing-    , _pgSourceColumnOffSet = Nothing-    , _pgSortOrder = Nothing-    , _pgShowTotals = Nothing-    , _pgValueBucket = Nothing-    }---- | Metadata about values in the grouping.-pgValueMetadata :: Lens' PivotGroup [PivotGroupValueMetadata]-pgValueMetadata-  = lens _pgValueMetadata-      (\ s a -> s{_pgValueMetadata = a})-      . _Default-      . _Coerce---- | The column offset of the source range that this grouping is based on.--- For example, if the source was \`C10:E15\`, a \`sourceColumnOffset\` of--- \`0\` means this group refers to column \`C\`, whereas the offset \`1\`--- would refer to column \`D\`.-pgSourceColumnOffSet :: Lens' PivotGroup (Maybe Int32)-pgSourceColumnOffSet-  = lens _pgSourceColumnOffSet-      (\ s a -> s{_pgSourceColumnOffSet = a})-      . mapping _Coerce---- | The order the values in this group should be sorted.-pgSortOrder :: Lens' PivotGroup (Maybe PivotGroupSortOrder)-pgSortOrder-  = lens _pgSortOrder (\ s a -> s{_pgSortOrder = a})---- | True if the pivot table should include the totals for this grouping.-pgShowTotals :: Lens' PivotGroup (Maybe Bool)-pgShowTotals-  = lens _pgShowTotals (\ s a -> s{_pgShowTotals = a})---- | The bucket of the opposite pivot group to sort by. If not specified,--- sorting is alphabetical by this group\'s values.-pgValueBucket :: Lens' PivotGroup (Maybe PivotGroupSortValueBucket)-pgValueBucket-  = lens _pgValueBucket-      (\ s a -> s{_pgValueBucket = a})--instance FromJSON PivotGroup where-        parseJSON-          = withObject "PivotGroup"-              (\ o ->-                 PivotGroup' <$>-                   (o .:? "valueMetadata" .!= mempty) <*>-                     (o .:? "sourceColumnOffset")-                     <*> (o .:? "sortOrder")-                     <*> (o .:? "showTotals")-                     <*> (o .:? "valueBucket"))--instance ToJSON PivotGroup where-        toJSON PivotGroup'{..}-          = object-              (catMaybes-                 [("valueMetadata" .=) <$> _pgValueMetadata,-                  ("sourceColumnOffset" .=) <$> _pgSourceColumnOffSet,-                  ("sortOrder" .=) <$> _pgSortOrder,-                  ("showTotals" .=) <$> _pgShowTotals,-                  ("valueBucket" .=) <$> _pgValueBucket])---- | 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])---- | A rule describing a conditional format.------ /See:/ 'conditionalFormatRule' smart constructor.-data ConditionalFormatRule = ConditionalFormatRule'-    { _cfrBooleanRule  :: !(Maybe BooleanRule)-    , _cfrGradientRule :: !(Maybe GradientRule)-    , _cfrRanges       :: !(Maybe [GridRange])-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'ConditionalFormatRule' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'cfrBooleanRule'------ * 'cfrGradientRule'------ * 'cfrRanges'-conditionalFormatRule-    :: ConditionalFormatRule-conditionalFormatRule =-    ConditionalFormatRule'-    { _cfrBooleanRule = Nothing-    , _cfrGradientRule = Nothing-    , _cfrRanges = Nothing-    }---- | The formatting is either \"on\" or \"off\" according to the rule.-cfrBooleanRule :: Lens' ConditionalFormatRule (Maybe BooleanRule)-cfrBooleanRule-  = lens _cfrBooleanRule-      (\ s a -> s{_cfrBooleanRule = a})---- | The formatting will vary based on the gradients in the rule.-cfrGradientRule :: Lens' ConditionalFormatRule (Maybe GradientRule)-cfrGradientRule-  = lens _cfrGradientRule-      (\ s a -> s{_cfrGradientRule = a})---- | The ranges that will be formatted if the condition is true. All the--- ranges must be on the same grid.-cfrRanges :: Lens' ConditionalFormatRule [GridRange]-cfrRanges-  = lens _cfrRanges (\ s a -> s{_cfrRanges = a}) .-      _Default-      . _Coerce--instance FromJSON ConditionalFormatRule where-        parseJSON-          = withObject "ConditionalFormatRule"-              (\ o ->-                 ConditionalFormatRule' <$>-                   (o .:? "booleanRule") <*> (o .:? "gradientRule") <*>-                     (o .:? "ranges" .!= mempty))--instance ToJSON ConditionalFormatRule where-        toJSON ConditionalFormatRule'{..}-          = object-              (catMaybes-                 [("booleanRule" .=) <$> _cfrBooleanRule,-                  ("gradientRule" .=) <$> _cfrGradientRule,-                  ("ranges" .=) <$> _cfrRanges])---- | The specification for a basic chart. See BasicChartType for the list of--- charts this supports.------ /See:/ 'basicChartSpec' smart constructor.-data BasicChartSpec = BasicChartSpec'-    { _bHeaderCount    :: !(Maybe (Textual Int32))-    , _bLegendPosition :: !(Maybe BasicChartSpecLegendPosition)-    , _bSeries         :: !(Maybe [BasicChartSeries])-    , _bChartType      :: !(Maybe BasicChartSpecChartType)-    , _bDomains        :: !(Maybe [BasicChartDomain])-    , _bAxis           :: !(Maybe [BasicChartAxis])-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'BasicChartSpec' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'bHeaderCount'------ * 'bLegendPosition'------ * 'bSeries'------ * 'bChartType'------ * 'bDomains'------ * 'bAxis'-basicChartSpec-    :: BasicChartSpec-basicChartSpec =-    BasicChartSpec'-    { _bHeaderCount = Nothing-    , _bLegendPosition = Nothing-    , _bSeries = Nothing-    , _bChartType = Nothing-    , _bDomains = Nothing-    , _bAxis = Nothing-    }---- | The number of rows or columns in the data that are \"headers\". If not--- set, Google Sheets will guess how many rows are headers based on the--- data. (Note that BasicChartAxis.title may override the axis title--- inferred from the header values.)-bHeaderCount :: Lens' BasicChartSpec (Maybe Int32)-bHeaderCount-  = lens _bHeaderCount (\ s a -> s{_bHeaderCount = a})-      . mapping _Coerce---- | The position of the chart legend.-bLegendPosition :: Lens' BasicChartSpec (Maybe BasicChartSpecLegendPosition)-bLegendPosition-  = lens _bLegendPosition-      (\ s a -> s{_bLegendPosition = a})---- | The data this chart is visualizing.-bSeries :: Lens' BasicChartSpec [BasicChartSeries]-bSeries-  = lens _bSeries (\ s a -> s{_bSeries = a}) . _Default-      . _Coerce---- | The type of the chart.-bChartType :: Lens' BasicChartSpec (Maybe BasicChartSpecChartType)-bChartType-  = lens _bChartType (\ s a -> s{_bChartType = a})---- | The domain of data this is charting. Only a single domain is currently--- supported.-bDomains :: Lens' BasicChartSpec [BasicChartDomain]-bDomains-  = lens _bDomains (\ s a -> s{_bDomains = a}) .-      _Default-      . _Coerce---- | The axis on the chart.-bAxis :: Lens' BasicChartSpec [BasicChartAxis]-bAxis-  = lens _bAxis (\ s a -> s{_bAxis = a}) . _Default .-      _Coerce--instance FromJSON BasicChartSpec where-        parseJSON-          = withObject "BasicChartSpec"-              (\ o ->-                 BasicChartSpec' <$>-                   (o .:? "headerCount") <*> (o .:? "legendPosition")-                     <*> (o .:? "series" .!= mempty)-                     <*> (o .:? "chartType")-                     <*> (o .:? "domains" .!= mempty)-                     <*> (o .:? "axis" .!= mempty))--instance ToJSON BasicChartSpec where-        toJSON BasicChartSpec'{..}-          = object-              (catMaybes-                 [("headerCount" .=) <$> _bHeaderCount,-                  ("legendPosition" .=) <$> _bLegendPosition,-                  ("series" .=) <$> _bSeries,-                  ("chartType" .=) <$> _bChartType,-                  ("domains" .=) <$> _bDomains,-                  ("axis" .=) <$> _bAxis])---- | Adds a new conditional format rule at the given index. All subsequent--- rules\' indexes are incremented.------ /See:/ 'addConditionalFormatRuleRequest' smart constructor.-data AddConditionalFormatRuleRequest = AddConditionalFormatRuleRequest'-    { _acfrrRule  :: !(Maybe ConditionalFormatRule)-    , _acfrrIndex :: !(Maybe (Textual Int32))-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'AddConditionalFormatRuleRequest' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'acfrrRule'------ * 'acfrrIndex'-addConditionalFormatRuleRequest-    :: AddConditionalFormatRuleRequest-addConditionalFormatRuleRequest =-    AddConditionalFormatRuleRequest'-    { _acfrrRule = Nothing-    , _acfrrIndex = Nothing-    }---- | The rule to add.-acfrrRule :: Lens' AddConditionalFormatRuleRequest (Maybe ConditionalFormatRule)-acfrrRule-  = lens _acfrrRule (\ s a -> s{_acfrrRule = a})---- | The zero-based index where the rule should be inserted.-acfrrIndex :: Lens' AddConditionalFormatRuleRequest (Maybe Int32)-acfrrIndex-  = lens _acfrrIndex (\ s a -> s{_acfrrIndex = a}) .-      mapping _Coerce--instance FromJSON AddConditionalFormatRuleRequest-         where-        parseJSON-          = withObject "AddConditionalFormatRuleRequest"-              (\ o ->-                 AddConditionalFormatRuleRequest' <$>-                   (o .:? "rule") <*> (o .:? "index"))--instance ToJSON AddConditionalFormatRuleRequest where-        toJSON AddConditionalFormatRuleRequest'{..}-          = object-              (catMaybes-                 [("rule" .=) <$> _acfrrRule,-                  ("index" .=) <$> _acfrrIndex])---- | The result of duplicating a sheet.------ /See:/ 'duplicateSheetResponse' smart constructor.-newtype DuplicateSheetResponse = DuplicateSheetResponse'-    { _dsrProperties :: Maybe SheetProperties-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'DuplicateSheetResponse' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'dsrProperties'-duplicateSheetResponse-    :: DuplicateSheetResponse-duplicateSheetResponse =-    DuplicateSheetResponse'-    { _dsrProperties = Nothing-    }---- | The properties of the duplicate sheet.-dsrProperties :: Lens' DuplicateSheetResponse (Maybe SheetProperties)-dsrProperties-  = lens _dsrProperties-      (\ s a -> s{_dsrProperties = a})--instance FromJSON DuplicateSheetResponse where-        parseJSON-          = withObject "DuplicateSheetResponse"-              (\ o ->-                 DuplicateSheetResponse' <$> (o .:? "properties"))--instance ToJSON DuplicateSheetResponse where-        toJSON DuplicateSheetResponse'{..}-          = object-              (catMaybes [("properties" .=) <$> _dsrProperties])---- | The format of a run of text in a cell. Absent values indicate that the--- field isn\'t specified.------ /See:/ 'textFormat' smart constructor.-data TextFormat = TextFormat'-    { _tfFontFamily      :: !(Maybe Text)-    , _tfForegRoundColor :: !(Maybe Color)-    , _tfFontSize        :: !(Maybe (Textual Int32))-    , _tfUnderline       :: !(Maybe Bool)-    , _tfItalic          :: !(Maybe Bool)-    , _tfBold            :: !(Maybe Bool)-    , _tfStrikethrough   :: !(Maybe Bool)-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'TextFormat' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'tfFontFamily'------ * 'tfForegRoundColor'------ * 'tfFontSize'------ * 'tfUnderline'------ * 'tfItalic'------ * 'tfBold'------ * 'tfStrikethrough'-textFormat-    :: TextFormat-textFormat =-    TextFormat'-    { _tfFontFamily = Nothing-    , _tfForegRoundColor = Nothing-    , _tfFontSize = Nothing-    , _tfUnderline = Nothing-    , _tfItalic = Nothing-    , _tfBold = Nothing-    , _tfStrikethrough = Nothing-    }---- | The font family.-tfFontFamily :: Lens' TextFormat (Maybe Text)-tfFontFamily-  = lens _tfFontFamily (\ s a -> s{_tfFontFamily = a})---- | The foreground color of the text.-tfForegRoundColor :: Lens' TextFormat (Maybe Color)-tfForegRoundColor-  = lens _tfForegRoundColor-      (\ s a -> s{_tfForegRoundColor = a})---- | The size of the font.-tfFontSize :: Lens' TextFormat (Maybe Int32)-tfFontSize-  = lens _tfFontSize (\ s a -> s{_tfFontSize = a}) .-      mapping _Coerce---- | True if the text is underlined.-tfUnderline :: Lens' TextFormat (Maybe Bool)-tfUnderline-  = lens _tfUnderline (\ s a -> s{_tfUnderline = a})---- | True if the text is italicized.-tfItalic :: Lens' TextFormat (Maybe Bool)-tfItalic = lens _tfItalic (\ s a -> s{_tfItalic = a})---- | True if the text is bold.-tfBold :: Lens' TextFormat (Maybe Bool)-tfBold = lens _tfBold (\ s a -> s{_tfBold = a})---- | True if the text has a strikethrough.-tfStrikethrough :: Lens' TextFormat (Maybe Bool)-tfStrikethrough-  = lens _tfStrikethrough-      (\ s a -> s{_tfStrikethrough = a})--instance FromJSON TextFormat where-        parseJSON-          = withObject "TextFormat"-              (\ o ->-                 TextFormat' <$>-                   (o .:? "fontFamily") <*> (o .:? "foregroundColor")-                     <*> (o .:? "fontSize")-                     <*> (o .:? "underline")-                     <*> (o .:? "italic")-                     <*> (o .:? "bold")-                     <*> (o .:? "strikethrough"))--instance ToJSON TextFormat where-        toJSON TextFormat'{..}-          = object-              (catMaybes-                 [("fontFamily" .=) <$> _tfFontFamily,-                  ("foregroundColor" .=) <$> _tfForegRoundColor,-                  ("fontSize" .=) <$> _tfFontSize,-                  ("underline" .=) <$> _tfUnderline,-                  ("italic" .=) <$> _tfItalic, ("bold" .=) <$> _tfBold,-                  ("strikethrough" .=) <$> _tfStrikethrough])---- | The response when updating 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])---- | The domain of a chart. For example, if charting stock prices over time,--- this would be the date.------ /See:/ 'basicChartDomain' smart constructor.-newtype BasicChartDomain = BasicChartDomain'-    { _bcdDomain :: Maybe ChartData-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'BasicChartDomain' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'bcdDomain'-basicChartDomain-    :: BasicChartDomain-basicChartDomain =-    BasicChartDomain'-    { _bcdDomain = Nothing-    }---- | The data of the domain. For example, if charting stock prices over time,--- this is the data representing the dates.-bcdDomain :: Lens' BasicChartDomain (Maybe ChartData)-bcdDomain-  = lens _bcdDomain (\ s a -> s{_bcdDomain = a})--instance FromJSON BasicChartDomain where-        parseJSON-          = withObject "BasicChartDomain"-              (\ o -> BasicChartDomain' <$> (o .:? "domain"))--instance ToJSON BasicChartDomain where-        toJSON BasicChartDomain'{..}-          = object (catMaybes [("domain" .=) <$> _bcdDomain])---- | 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'-    { _csTitle                   :: !(Maybe Text)-    , _csPieChart                :: !(Maybe PieChartSpec)-    , _csBasicChart              :: !(Maybe BasicChartSpec)-    , _csHiddenDimensionStrategy :: !(Maybe ChartSpecHiddenDimensionStrategy)-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'ChartSpec' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'csTitle'------ * 'csPieChart'------ * 'csBasicChart'------ * 'csHiddenDimensionStrategy'-chartSpec-    :: ChartSpec-chartSpec =-    ChartSpec'-    { _csTitle = Nothing-    , _csPieChart = Nothing-    , _csBasicChart = Nothing-    , _csHiddenDimensionStrategy = Nothing-    }---- | The title of the chart.-csTitle :: Lens' ChartSpec (Maybe Text)-csTitle = lens _csTitle (\ s a -> s{_csTitle = a})---- | A pie chart specification.-csPieChart :: Lens' ChartSpec (Maybe PieChartSpec)-csPieChart-  = lens _csPieChart (\ s a -> s{_csPieChart = a})---- | A basic chart specification, can be one of many kinds of charts. See--- BasicChartType for the list of all charts this supports.-csBasicChart :: Lens' ChartSpec (Maybe BasicChartSpec)-csBasicChart-  = lens _csBasicChart (\ s a -> s{_csBasicChart = a})---- | Determines how the charts will use hidden rows or columns.-csHiddenDimensionStrategy :: Lens' ChartSpec (Maybe ChartSpecHiddenDimensionStrategy)-csHiddenDimensionStrategy-  = lens _csHiddenDimensionStrategy-      (\ s a -> s{_csHiddenDimensionStrategy = a})--instance FromJSON ChartSpec where-        parseJSON-          = withObject "ChartSpec"-              (\ o ->-                 ChartSpec' <$>-                   (o .:? "title") <*> (o .:? "pieChart") <*>-                     (o .:? "basicChart")-                     <*> (o .:? "hiddenDimensionStrategy"))--instance ToJSON ChartSpec where-        toJSON ChartSpec'{..}-          = object-              (catMaybes-                 [("title" .=) <$> _csTitle,-                  ("pieChart" .=) <$> _csPieChart,-                  ("basicChart" .=) <$> _csBasicChart,-                  ("hiddenDimensionStrategy" .=) <$>-                    _csHiddenDimensionStrategy])---- | Properties about a dimension.------ /See:/ 'dimensionProperties' smart constructor.-data DimensionProperties = DimensionProperties'-    { _dpHiddenByFilter :: !(Maybe Bool)-    , _dpPixelSize      :: !(Maybe (Textual Int32))-    , _dpHiddenByUser   :: !(Maybe Bool)-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'DimensionProperties' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'dpHiddenByFilter'------ * 'dpPixelSize'------ * 'dpHiddenByUser'-dimensionProperties-    :: DimensionProperties-dimensionProperties =-    DimensionProperties'-    { _dpHiddenByFilter = Nothing-    , _dpPixelSize = Nothing-    , _dpHiddenByUser = Nothing-    }---- | True if this dimension is being filtered. This field is read-only.-dpHiddenByFilter :: Lens' DimensionProperties (Maybe Bool)-dpHiddenByFilter-  = lens _dpHiddenByFilter-      (\ s a -> s{_dpHiddenByFilter = a})---- | The height (if a row) or width (if a column) of the dimension in pixels.-dpPixelSize :: Lens' DimensionProperties (Maybe Int32)-dpPixelSize-  = lens _dpPixelSize (\ s a -> s{_dpPixelSize = a}) .-      mapping _Coerce---- | True if this dimension is explicitly hidden.-dpHiddenByUser :: Lens' DimensionProperties (Maybe Bool)-dpHiddenByUser-  = lens _dpHiddenByUser-      (\ s a -> s{_dpHiddenByUser = a})--instance FromJSON DimensionProperties where-        parseJSON-          = withObject "DimensionProperties"-              (\ o ->-                 DimensionProperties' <$>-                   (o .:? "hiddenByFilter") <*> (o .:? "pixelSize") <*>-                     (o .:? "hiddenByUser"))--instance ToJSON DimensionProperties where-        toJSON DimensionProperties'{..}-          = object-              (catMaybes-                 [("hiddenByFilter" .=) <$> _dpHiddenByFilter,-                  ("pixelSize" .=) <$> _dpPixelSize,-                  ("hiddenByUser" .=) <$> _dpHiddenByUser])---- | Updates properties of the supplied banded range.------ /See:/ 'updateBandingRequest' smart constructor.-data UpdateBandingRequest = UpdateBandingRequest'-    { _ubrBandedRange :: !(Maybe BandedRange)-    , _ubrFields      :: !(Maybe FieldMask)-    } 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 FieldMask)-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])---- | A single kind of update to apply to a spreadsheet.------ /See:/ 'request'' smart constructor.-data Request' = Request''-    { _reqAddFilterView                :: !(Maybe AddFilterViewRequest)-    , _reqDeleteProtectedRange         :: !(Maybe DeleteProtectedRangeRequest)-    , _reqUpdateProtectedRange         :: !(Maybe UpdateProtectedRangeRequest)-    , _reqUpdateCells                  :: !(Maybe UpdateCellsRequest)-    , _reqDuplicateFilterView          :: !(Maybe DuplicateFilterViewRequest)-    , _reqAddConditionalFormatRule     :: !(Maybe AddConditionalFormatRuleRequest)-    , _reqSortRange                    :: !(Maybe SortRangeRequest)-    , _reqUpdateNamedRange             :: !(Maybe UpdateNamedRangeRequest)-    , _reqDeleteNamedRange             :: !(Maybe DeleteNamedRangeRequest)-    , _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)-    , _reqAutoResizeDimensions         :: !(Maybe AutoResizeDimensionsRequest)-    , _reqAddSheet                     :: !(Maybe AddSheetRequest)-    , _reqFindReplace                  :: !(Maybe FindReplaceRequest)-    , _reqDeleteDimension              :: !(Maybe DeleteDimensionRequest)-    , _reqCutPaste                     :: !(Maybe CutPasteRequest)-    , _reqMoveDimension                :: !(Maybe MoveDimensionRequest)-    , _reqRepeatCell                   :: !(Maybe RepeatCellRequest)-    , _reqAddProtectedRange            :: !(Maybe AddProtectedRangeRequest)-    , _reqUpdateFilterView             :: !(Maybe UpdateFilterViewRequest)-    , _reqDeleteFilterView             :: !(Maybe DeleteFilterViewRequest)-    , _reqInsertDimension              :: !(Maybe InsertDimensionRequest)-    , _reqUpdateSheetProperties        :: !(Maybe UpdateSheetPropertiesRequest)-    , _reqDeleteConditionalFormatRule  :: !(Maybe DeleteConditionalFormatRuleRequest)-    , _reqUpdateConditionalFormatRule  :: !(Maybe UpdateConditionalFormatRuleRequest)-    , _reqDeleteEmbeddedObject         :: !(Maybe DeleteEmbeddedObjectRequest)-    , _reqMergeCells                   :: !(Maybe MergeCellsRequest)-    , _reqAddNamedRange                :: !(Maybe AddNamedRangeRequest)-    , _reqAddChart                     :: !(Maybe AddChartRequest)-    , _reqAddBanding                   :: !(Maybe AddBandingRequest)-    , _reqDuplicateSheet               :: !(Maybe DuplicateSheetRequest)-    , _reqAutoFill                     :: !(Maybe AutoFillRequest)-    , _reqUpdateDimensionProperties    :: !(Maybe UpdateDimensionPropertiesRequest)-    , _reqUpdateChartSpec              :: !(Maybe UpdateChartSpecRequest)-    , _reqSetBasicFilter               :: !(Maybe SetBasicFilterRequest)-    , _reqTextToColumns                :: !(Maybe TextToColumnsRequest)-    , _reqUpdateSpreadsheetProperties  :: !(Maybe UpdateSpreadsheetPropertiesRequest)-    , _reqDeleteSheet                  :: !(Maybe DeleteSheetRequest)-    , _reqUnmergeCells                 :: !(Maybe UnmergeCellsRequest)-    , _reqUpdateBOrders                :: !(Maybe UpdateBOrdersRequest)-    , _reqAppendDimension              :: !(Maybe AppendDimensionRequest)-    , _reqSetDataValidation            :: !(Maybe SetDataValidationRequest)-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'Request' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'reqAddFilterView'------ * 'reqDeleteProtectedRange'------ * 'reqUpdateProtectedRange'------ * 'reqUpdateCells'------ * 'reqDuplicateFilterView'------ * 'reqAddConditionalFormatRule'------ * 'reqSortRange'------ * 'reqUpdateNamedRange'------ * 'reqDeleteNamedRange'------ * 'reqInsertRange'------ * 'reqDeleteBanding'------ * 'reqUpdateBanding'------ * 'reqClearBasicFilter'------ * 'reqAppendCells'------ * 'reqPasteData'------ * 'reqUpdateEmbeddedObjectPosition'------ * 'reqDeleteRange'------ * 'reqCopyPaste'------ * 'reqAutoResizeDimensions'------ * 'reqAddSheet'------ * 'reqFindReplace'------ * 'reqDeleteDimension'------ * 'reqCutPaste'------ * 'reqMoveDimension'------ * 'reqRepeatCell'------ * 'reqAddProtectedRange'------ * 'reqUpdateFilterView'------ * 'reqDeleteFilterView'------ * 'reqInsertDimension'------ * 'reqUpdateSheetProperties'------ * 'reqDeleteConditionalFormatRule'------ * 'reqUpdateConditionalFormatRule'------ * 'reqDeleteEmbeddedObject'------ * 'reqMergeCells'------ * 'reqAddNamedRange'------ * 'reqAddChart'------ * 'reqAddBanding'------ * 'reqDuplicateSheet'------ * 'reqAutoFill'------ * 'reqUpdateDimensionProperties'------ * 'reqUpdateChartSpec'------ * 'reqSetBasicFilter'------ * 'reqTextToColumns'------ * 'reqUpdateSpreadsheetProperties'------ * 'reqDeleteSheet'------ * 'reqUnmergeCells'------ * 'reqUpdateBOrders'------ * 'reqAppendDimension'------ * 'reqSetDataValidation'-request'-    :: Request'-request' =-    Request''-    { _reqAddFilterView = Nothing-    , _reqDeleteProtectedRange = Nothing-    , _reqUpdateProtectedRange = Nothing-    , _reqUpdateCells = Nothing-    , _reqDuplicateFilterView = Nothing-    , _reqAddConditionalFormatRule = Nothing-    , _reqSortRange = Nothing-    , _reqUpdateNamedRange = Nothing-    , _reqDeleteNamedRange = Nothing-    , _reqInsertRange = Nothing-    , _reqDeleteBanding = Nothing-    , _reqUpdateBanding = Nothing-    , _reqClearBasicFilter = Nothing-    , _reqAppendCells = Nothing-    , _reqPasteData = Nothing-    , _reqUpdateEmbeddedObjectPosition = Nothing-    , _reqDeleteRange = Nothing-    , _reqCopyPaste = Nothing-    , _reqAutoResizeDimensions = Nothing-    , _reqAddSheet = Nothing-    , _reqFindReplace = Nothing-    , _reqDeleteDimension = Nothing-    , _reqCutPaste = Nothing-    , _reqMoveDimension = Nothing-    , _reqRepeatCell = Nothing-    , _reqAddProtectedRange = Nothing-    , _reqUpdateFilterView = Nothing-    , _reqDeleteFilterView = Nothing-    , _reqInsertDimension = Nothing-    , _reqUpdateSheetProperties = Nothing-    , _reqDeleteConditionalFormatRule = Nothing-    , _reqUpdateConditionalFormatRule = Nothing-    , _reqDeleteEmbeddedObject = Nothing-    , _reqMergeCells = Nothing-    , _reqAddNamedRange = Nothing-    , _reqAddChart = Nothing-    , _reqAddBanding = Nothing-    , _reqDuplicateSheet = Nothing-    , _reqAutoFill = Nothing-    , _reqUpdateDimensionProperties = Nothing-    , _reqUpdateChartSpec = Nothing-    , _reqSetBasicFilter = Nothing-    , _reqTextToColumns = Nothing-    , _reqUpdateSpreadsheetProperties = Nothing-    , _reqDeleteSheet = Nothing-    , _reqUnmergeCells = Nothing-    , _reqUpdateBOrders = Nothing-    , _reqAppendDimension = Nothing-    , _reqSetDataValidation = Nothing-    }---- | Adds a filter view.-reqAddFilterView :: Lens' Request' (Maybe AddFilterViewRequest)-reqAddFilterView-  = lens _reqAddFilterView-      (\ s a -> s{_reqAddFilterView = a})---- | Deletes a protected range.-reqDeleteProtectedRange :: Lens' Request' (Maybe DeleteProtectedRangeRequest)-reqDeleteProtectedRange-  = lens _reqDeleteProtectedRange-      (\ s a -> s{_reqDeleteProtectedRange = a})---- | Updates a protected range.-reqUpdateProtectedRange :: Lens' Request' (Maybe UpdateProtectedRangeRequest)-reqUpdateProtectedRange-  = lens _reqUpdateProtectedRange-      (\ s a -> s{_reqUpdateProtectedRange = a})---- | Updates many cells at once.-reqUpdateCells :: Lens' Request' (Maybe UpdateCellsRequest)-reqUpdateCells-  = lens _reqUpdateCells-      (\ s a -> s{_reqUpdateCells = a})---- | Duplicates a filter view.-reqDuplicateFilterView :: Lens' Request' (Maybe DuplicateFilterViewRequest)-reqDuplicateFilterView-  = lens _reqDuplicateFilterView-      (\ s a -> s{_reqDuplicateFilterView = a})---- | Adds a new conditional format rule.-reqAddConditionalFormatRule :: Lens' Request' (Maybe AddConditionalFormatRuleRequest)-reqAddConditionalFormatRule-  = lens _reqAddConditionalFormatRule-      (\ s a -> s{_reqAddConditionalFormatRule = a})---- | Sorts data in a range.-reqSortRange :: Lens' Request' (Maybe SortRangeRequest)-reqSortRange-  = lens _reqSortRange (\ s a -> s{_reqSortRange = a})---- | Updates a named range.-reqUpdateNamedRange :: Lens' Request' (Maybe UpdateNamedRangeRequest)-reqUpdateNamedRange-  = lens _reqUpdateNamedRange-      (\ s a -> s{_reqUpdateNamedRange = a})---- | Deletes a named range.-reqDeleteNamedRange :: Lens' Request' (Maybe DeleteNamedRangeRequest)-reqDeleteNamedRange-  = lens _reqDeleteNamedRange-      (\ s a -> s{_reqDeleteNamedRange = a})---- | 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})---- | Automatically resizes one or more dimensions based on the contents of--- the cells in that dimension.-reqAutoResizeDimensions :: Lens' Request' (Maybe AutoResizeDimensionsRequest)-reqAutoResizeDimensions-  = lens _reqAutoResizeDimensions-      (\ s a -> s{_reqAutoResizeDimensions = a})---- | Adds a sheet.-reqAddSheet :: Lens' Request' (Maybe AddSheetRequest)-reqAddSheet-  = lens _reqAddSheet (\ s a -> s{_reqAddSheet = a})---- | Finds and replaces occurrences of some text with other text.-reqFindReplace :: Lens' Request' (Maybe FindReplaceRequest)-reqFindReplace-  = lens _reqFindReplace-      (\ s a -> s{_reqFindReplace = a})---- | Deletes rows or columns in a sheet.-reqDeleteDimension :: Lens' Request' (Maybe DeleteDimensionRequest)-reqDeleteDimension-  = lens _reqDeleteDimension-      (\ s a -> s{_reqDeleteDimension = a})---- | Cuts data from one area and pastes it to another.-reqCutPaste :: Lens' Request' (Maybe CutPasteRequest)-reqCutPaste-  = lens _reqCutPaste (\ s a -> s{_reqCutPaste = a})---- | Moves rows or columns to another location in a sheet.-reqMoveDimension :: Lens' Request' (Maybe MoveDimensionRequest)-reqMoveDimension-  = lens _reqMoveDimension-      (\ s a -> s{_reqMoveDimension = a})---- | Repeats a single cell across a range.-reqRepeatCell :: Lens' Request' (Maybe RepeatCellRequest)-reqRepeatCell-  = lens _reqRepeatCell-      (\ s a -> s{_reqRepeatCell = a})---- | Adds a protected range.-reqAddProtectedRange :: Lens' Request' (Maybe AddProtectedRangeRequest)-reqAddProtectedRange-  = lens _reqAddProtectedRange-      (\ s a -> s{_reqAddProtectedRange = a})---- | Updates the properties of a filter view.-reqUpdateFilterView :: Lens' Request' (Maybe UpdateFilterViewRequest)-reqUpdateFilterView-  = lens _reqUpdateFilterView-      (\ s a -> s{_reqUpdateFilterView = a})---- | Deletes a filter view from a sheet.-reqDeleteFilterView :: Lens' Request' (Maybe DeleteFilterViewRequest)-reqDeleteFilterView-  = lens _reqDeleteFilterView-      (\ s a -> s{_reqDeleteFilterView = a})---- | Inserts new rows or columns in a sheet.-reqInsertDimension :: Lens' Request' (Maybe InsertDimensionRequest)-reqInsertDimension-  = lens _reqInsertDimension-      (\ s a -> s{_reqInsertDimension = a})---- | Updates a sheet\'s properties.-reqUpdateSheetProperties :: Lens' Request' (Maybe UpdateSheetPropertiesRequest)-reqUpdateSheetProperties-  = lens _reqUpdateSheetProperties-      (\ s a -> s{_reqUpdateSheetProperties = a})---- | Deletes an existing conditional format rule.-reqDeleteConditionalFormatRule :: Lens' Request' (Maybe DeleteConditionalFormatRuleRequest)-reqDeleteConditionalFormatRule-  = lens _reqDeleteConditionalFormatRule-      (\ s a -> s{_reqDeleteConditionalFormatRule = a})---- | Updates an existing conditional format rule.-reqUpdateConditionalFormatRule :: Lens' Request' (Maybe UpdateConditionalFormatRuleRequest)-reqUpdateConditionalFormatRule-  = lens _reqUpdateConditionalFormatRule-      (\ s a -> s{_reqUpdateConditionalFormatRule = a})---- | Deletes an embedded object (e.g, chart, image) in a sheet.-reqDeleteEmbeddedObject :: Lens' Request' (Maybe DeleteEmbeddedObjectRequest)-reqDeleteEmbeddedObject-  = lens _reqDeleteEmbeddedObject-      (\ s a -> s{_reqDeleteEmbeddedObject = a})---- | Merges cells together.-reqMergeCells :: Lens' Request' (Maybe MergeCellsRequest)-reqMergeCells-  = lens _reqMergeCells-      (\ s a -> s{_reqMergeCells = a})---- | Adds a named range.-reqAddNamedRange :: Lens' Request' (Maybe AddNamedRangeRequest)-reqAddNamedRange-  = lens _reqAddNamedRange-      (\ s a -> s{_reqAddNamedRange = a})---- | Adds a chart.-reqAddChart :: Lens' Request' (Maybe AddChartRequest)-reqAddChart-  = lens _reqAddChart (\ s a -> s{_reqAddChart = a})---- | 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})---- | Updates the spreadsheet\'s properties.-reqUpdateSpreadsheetProperties :: Lens' Request' (Maybe UpdateSpreadsheetPropertiesRequest)-reqUpdateSpreadsheetProperties-  = lens _reqUpdateSpreadsheetProperties-      (\ s a -> s{_reqUpdateSpreadsheetProperties = a})---- | Deletes a sheet.-reqDeleteSheet :: Lens' Request' (Maybe DeleteSheetRequest)-reqDeleteSheet-  = lens _reqDeleteSheet-      (\ s a -> s{_reqDeleteSheet = a})---- | Unmerges merged cells.-reqUnmergeCells :: Lens' Request' (Maybe UnmergeCellsRequest)-reqUnmergeCells-  = lens _reqUnmergeCells-      (\ s a -> s{_reqUnmergeCells = a})---- | Updates the borders in a range of cells.-reqUpdateBOrders :: Lens' Request' (Maybe UpdateBOrdersRequest)-reqUpdateBOrders-  = lens _reqUpdateBOrders-      (\ s a -> s{_reqUpdateBOrders = a})---- | Appends dimensions to the end of a sheet.-reqAppendDimension :: Lens' Request' (Maybe AppendDimensionRequest)-reqAppendDimension-  = lens _reqAppendDimension-      (\ s a -> s{_reqAppendDimension = a})---- | Sets data validation for one or more cells.-reqSetDataValidation :: Lens' Request' (Maybe SetDataValidationRequest)-reqSetDataValidation-  = lens _reqSetDataValidation-      (\ s a -> s{_reqSetDataValidation = a})--instance FromJSON Request' where-        parseJSON-          = withObject "Request"-              (\ o ->-                 Request'' <$>-                   (o .:? "addFilterView") <*>-                     (o .:? "deleteProtectedRange")-                     <*> (o .:? "updateProtectedRange")-                     <*> (o .:? "updateCells")-                     <*> (o .:? "duplicateFilterView")-                     <*> (o .:? "addConditionalFormatRule")-                     <*> (o .:? "sortRange")-                     <*> (o .:? "updateNamedRange")-                     <*> (o .:? "deleteNamedRange")-                     <*> (o .:? "insertRange")-                     <*> (o .:? "deleteBanding")-                     <*> (o .:? "updateBanding")-                     <*> (o .:? "clearBasicFilter")-                     <*> (o .:? "appendCells")-                     <*> (o .:? "pasteData")-                     <*> (o .:? "updateEmbeddedObjectPosition")-                     <*> (o .:? "deleteRange")-                     <*> (o .:? "copyPaste")-                     <*> (o .:? "autoResizeDimensions")-                     <*> (o .:? "addSheet")-                     <*> (o .:? "findReplace")-                     <*> (o .:? "deleteDimension")-                     <*> (o .:? "cutPaste")-                     <*> (o .:? "moveDimension")-                     <*> (o .:? "repeatCell")-                     <*> (o .:? "addProtectedRange")-                     <*> (o .:? "updateFilterView")-                     <*> (o .:? "deleteFilterView")-                     <*> (o .:? "insertDimension")-                     <*> (o .:? "updateSheetProperties")-                     <*> (o .:? "deleteConditionalFormatRule")-                     <*> (o .:? "updateConditionalFormatRule")-                     <*> (o .:? "deleteEmbeddedObject")-                     <*> (o .:? "mergeCells")-                     <*> (o .:? "addNamedRange")-                     <*> (o .:? "addChart")-                     <*> (o .:? "addBanding")-                     <*> (o .:? "duplicateSheet")-                     <*> (o .:? "autoFill")-                     <*> (o .:? "updateDimensionProperties")-                     <*> (o .:? "updateChartSpec")-                     <*> (o .:? "setBasicFilter")-                     <*> (o .:? "textToColumns")-                     <*> (o .:? "updateSpreadsheetProperties")-                     <*> (o .:? "deleteSheet")-                     <*> (o .:? "unmergeCells")-                     <*> (o .:? "updateBorders")-                     <*> (o .:? "appendDimension")-                     <*> (o .:? "setDataValidation"))--instance ToJSON Request' where-        toJSON Request''{..}-          = object-              (catMaybes-                 [("addFilterView" .=) <$> _reqAddFilterView,-                  ("deleteProtectedRange" .=) <$>-                    _reqDeleteProtectedRange,-                  ("updateProtectedRange" .=) <$>-                    _reqUpdateProtectedRange,-                  ("updateCells" .=) <$> _reqUpdateCells,-                  ("duplicateFilterView" .=) <$>-                    _reqDuplicateFilterView,-                  ("addConditionalFormatRule" .=) <$>-                    _reqAddConditionalFormatRule,-                  ("sortRange" .=) <$> _reqSortRange,-                  ("updateNamedRange" .=) <$> _reqUpdateNamedRange,-                  ("deleteNamedRange" .=) <$> _reqDeleteNamedRange,-                  ("insertRange" .=) <$> _reqInsertRange,-                  ("deleteBanding" .=) <$> _reqDeleteBanding,-                  ("updateBanding" .=) <$> _reqUpdateBanding,-                  ("clearBasicFilter" .=) <$> _reqClearBasicFilter,-                  ("appendCells" .=) <$> _reqAppendCells,-                  ("pasteData" .=) <$> _reqPasteData,-                  ("updateEmbeddedObjectPosition" .=) <$>-                    _reqUpdateEmbeddedObjectPosition,-                  ("deleteRange" .=) <$> _reqDeleteRange,-                  ("copyPaste" .=) <$> _reqCopyPaste,-                  ("autoResizeDimensions" .=) <$>-                    _reqAutoResizeDimensions,-                  ("addSheet" .=) <$> _reqAddSheet,-                  ("findReplace" .=) <$> _reqFindReplace,-                  ("deleteDimension" .=) <$> _reqDeleteDimension,-                  ("cutPaste" .=) <$> _reqCutPaste,-                  ("moveDimension" .=) <$> _reqMoveDimension,-                  ("repeatCell" .=) <$> _reqRepeatCell,-                  ("addProtectedRange" .=) <$> _reqAddProtectedRange,-                  ("updateFilterView" .=) <$> _reqUpdateFilterView,-                  ("deleteFilterView" .=) <$> _reqDeleteFilterView,-                  ("insertDimension" .=) <$> _reqInsertDimension,-                  ("updateSheetProperties" .=) <$>-                    _reqUpdateSheetProperties,-                  ("deleteConditionalFormatRule" .=) <$>-                    _reqDeleteConditionalFormatRule,-                  ("updateConditionalFormatRule" .=) <$>-                    _reqUpdateConditionalFormatRule,-                  ("deleteEmbeddedObject" .=) <$>-                    _reqDeleteEmbeddedObject,-                  ("mergeCells" .=) <$> _reqMergeCells,-                  ("addNamedRange" .=) <$> _reqAddNamedRange,-                  ("addChart" .=) <$> _reqAddChart,-                  ("addBanding" .=) <$> _reqAddBanding,-                  ("duplicateSheet" .=) <$> _reqDuplicateSheet,-                  ("autoFill" .=) <$> _reqAutoFill,-                  ("updateDimensionProperties" .=) <$>-                    _reqUpdateDimensionProperties,-                  ("updateChartSpec" .=) <$> _reqUpdateChartSpec,-                  ("setBasicFilter" .=) <$> _reqSetBasicFilter,-                  ("textToColumns" .=) <$> _reqTextToColumns,-                  ("updateSpreadsheetProperties" .=) <$>-                    _reqUpdateSpreadsheetProperties,-                  ("deleteSheet" .=) <$> _reqDeleteSheet,-                  ("unmergeCells" .=) <$> _reqUnmergeCells,-                  ("updateBorders" .=) <$> _reqUpdateBOrders,-                  ("appendDimension" .=) <$> _reqAppendDimension,-                  ("setDataValidation" .=) <$> _reqSetDataValidation])+    , _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. --
gen/Network/Google/Sheets/Types/Sum.hs view
@@ -16,1945 +16,2989 @@ -- module Network.Google.Sheets.Types.Sum where -import           Network.Google.Prelude---- | What kind of data to paste.-data CopyPasteRequestPasteType-    = PasteNormal-      -- ^ @PASTE_NORMAL@-      -- Paste values, formulas, formats, and merges.-    | PasteValues-      -- ^ @PASTE_VALUES@-      -- Paste the values ONLY without formats, formulas, or merges.-    | PasteFormat-      -- ^ @PASTE_FORMAT@-      -- Paste the format and data validation only.-    | PasteNoBOrders-      -- ^ @PASTE_NO_BORDERS@-      -- Like PASTE_NORMAL but without borders.-    | PasteFormula-      -- ^ @PASTE_FORMULA@-      -- Paste the formulas only.-    | PasteDataValidation-      -- ^ @PASTE_DATA_VALIDATION@-      -- Paste the data validation only.-    | PasteConditionalFormatting-      -- ^ @PASTE_CONDITIONAL_FORMATTING@-      -- Paste the conditional formatting rules only.-      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)--instance Hashable CopyPasteRequestPasteType--instance FromHttpApiData CopyPasteRequestPasteType where-    parseQueryParam = \case-        "PASTE_NORMAL" -> Right PasteNormal-        "PASTE_VALUES" -> Right PasteValues-        "PASTE_FORMAT" -> Right PasteFormat-        "PASTE_NO_BORDERS" -> Right PasteNoBOrders-        "PASTE_FORMULA" -> Right PasteFormula-        "PASTE_DATA_VALIDATION" -> Right PasteDataValidation-        "PASTE_CONDITIONAL_FORMATTING" -> Right PasteConditionalFormatting-        x -> Left ("Unable to parse CopyPasteRequestPasteType from: " <> x)--instance ToHttpApiData CopyPasteRequestPasteType where-    toQueryParam = \case-        PasteNormal -> "PASTE_NORMAL"-        PasteValues -> "PASTE_VALUES"-        PasteFormat -> "PASTE_FORMAT"-        PasteNoBOrders -> "PASTE_NO_BORDERS"-        PasteFormula -> "PASTE_FORMULA"-        PasteDataValidation -> "PASTE_DATA_VALIDATION"-        PasteConditionalFormatting -> "PASTE_CONDITIONAL_FORMATTING"--instance FromJSON CopyPasteRequestPasteType where-    parseJSON = parseJSONText "CopyPasteRequestPasteType"--instance ToJSON CopyPasteRequestPasteType where-    toJSON = toJSONText---- | The position of this axis.-data BasicChartAxisPosition-    = BasicChartAxisPositionUnspecified-      -- ^ @BASIC_CHART_AXIS_POSITION_UNSPECIFIED@-      -- Default value, do not use.-    | BottomAxis-      -- ^ @BOTTOM_AXIS@-      -- The axis rendered at the bottom of a chart. For most charts, this is the-      -- standard major axis. For bar charts, this is a minor axis.-    | LeftAxis-      -- ^ @LEFT_AXIS@-      -- The axis rendered at the left of a chart. For most charts, this is a-      -- minor axis. For bar charts, this is the standard major axis.-    | RightAxis-      -- ^ @RIGHT_AXIS@-      -- The axis rendered at the right of a chart. For most charts, this is a-      -- minor axis. For bar charts, this is an unusual major axis.-      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)--instance Hashable BasicChartAxisPosition--instance FromHttpApiData BasicChartAxisPosition where-    parseQueryParam = \case-        "BASIC_CHART_AXIS_POSITION_UNSPECIFIED" -> Right BasicChartAxisPositionUnspecified-        "BOTTOM_AXIS" -> Right BottomAxis-        "LEFT_AXIS" -> Right LeftAxis-        "RIGHT_AXIS" -> Right RightAxis-        x -> Left ("Unable to parse BasicChartAxisPosition from: " <> x)--instance ToHttpApiData BasicChartAxisPosition where-    toQueryParam = \case-        BasicChartAxisPositionUnspecified -> "BASIC_CHART_AXIS_POSITION_UNSPECIFIED"-        BottomAxis -> "BOTTOM_AXIS"-        LeftAxis -> "LEFT_AXIS"-        RightAxis -> "RIGHT_AXIS"--instance FromJSON BasicChartAxisPosition where-    parseJSON = parseJSONText "BasicChartAxisPosition"--instance ToJSON BasicChartAxisPosition where-    toJSON = toJSONText---- | The 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.-data DeleteRangeRequestShiftDimension-    = DimensionUnspecified-      -- ^ @DIMENSION_UNSPECIFIED@-      -- The default value, do not use.-    | Rows-      -- ^ @ROWS@-      -- Operates on the rows of a sheet.-    | Columns-      -- ^ @COLUMNS@-      -- Operates on the columns of a sheet.-      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)--instance Hashable DeleteRangeRequestShiftDimension--instance FromHttpApiData DeleteRangeRequestShiftDimension where-    parseQueryParam = \case-        "DIMENSION_UNSPECIFIED" -> Right DimensionUnspecified-        "ROWS" -> Right Rows-        "COLUMNS" -> Right Columns-        x -> Left ("Unable to parse DeleteRangeRequestShiftDimension from: " <> x)--instance ToHttpApiData DeleteRangeRequestShiftDimension where-    toQueryParam = \case-        DimensionUnspecified -> "DIMENSION_UNSPECIFIED"-        Rows -> "ROWS"-        Columns -> "COLUMNS"--instance FromJSON DeleteRangeRequestShiftDimension where-    parseJSON = parseJSONText "DeleteRangeRequestShiftDimension"--instance ToJSON DeleteRangeRequestShiftDimension where-    toJSON = toJSONText---- | The minor axis that will specify the range of values for this series.--- For example, if charting stocks over time, the \"Volume\" series may--- want to be pinned to the right with the prices pinned to the left,--- because the scale of trading volume is different than the scale of--- prices. It is an error to specify an axis that isn\'t a valid minor axis--- for the chart\'s type.-data BasicChartSeriesTargetAxis-    = BCSTABasicChartAxisPositionUnspecified-      -- ^ @BASIC_CHART_AXIS_POSITION_UNSPECIFIED@-      -- Default value, do not use.-    | BCSTABottomAxis-      -- ^ @BOTTOM_AXIS@-      -- The axis rendered at the bottom of a chart. For most charts, this is the-      -- standard major axis. For bar charts, this is a minor axis.-    | BCSTALeftAxis-      -- ^ @LEFT_AXIS@-      -- The axis rendered at the left of a chart. For most charts, this is a-      -- minor axis. For bar charts, this is the standard major axis.-    | BCSTARightAxis-      -- ^ @RIGHT_AXIS@-      -- The axis rendered at the right of a chart. For most charts, this is a-      -- minor axis. For bar charts, this is an unusual major axis.-      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)--instance Hashable BasicChartSeriesTargetAxis--instance FromHttpApiData BasicChartSeriesTargetAxis where-    parseQueryParam = \case-        "BASIC_CHART_AXIS_POSITION_UNSPECIFIED" -> Right BCSTABasicChartAxisPositionUnspecified-        "BOTTOM_AXIS" -> Right BCSTABottomAxis-        "LEFT_AXIS" -> Right BCSTALeftAxis-        "RIGHT_AXIS" -> Right BCSTARightAxis-        x -> Left ("Unable to parse BasicChartSeriesTargetAxis from: " <> x)--instance ToHttpApiData BasicChartSeriesTargetAxis where-    toQueryParam = \case-        BCSTABasicChartAxisPositionUnspecified -> "BASIC_CHART_AXIS_POSITION_UNSPECIFIED"-        BCSTABottomAxis -> "BOTTOM_AXIS"-        BCSTALeftAxis -> "LEFT_AXIS"-        BCSTARightAxis -> "RIGHT_AXIS"--instance FromJSON BasicChartSeriesTargetAxis where-    parseJSON = parseJSONText "BasicChartSeriesTargetAxis"--instance ToJSON BasicChartSeriesTargetAxis where-    toJSON = toJSONText---- | 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].-data BatchUpdateValuesRequestResponseDateTimeRenderOption-    = SerialNumber-      -- ^ @SERIAL_NUMBER@-      -- Instructs date, time, datetime, and duration fields to be output as-      -- doubles in \"serial number\" format, as popularized by Lotus 1-2-3. Days-      -- are counted from December 31st 1899 and are incremented by 1, and times-      -- are fractions of a day. For example, January 1st 1900 at noon would be-      -- 1.5, 1 because it\'s 1 day offset from December 31st 1899, and .5-      -- because noon is half a day. February 1st 1900 at 3pm would be 32.625.-      -- This correctly treats the year 1900 as not a leap year.-    | FormattedString-      -- ^ @FORMATTED_STRING@-      -- Instructs date, time, datetime, and duration fields to be output as-      -- strings in their given number format (which is dependent on the-      -- spreadsheet locale).-      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)--instance Hashable BatchUpdateValuesRequestResponseDateTimeRenderOption--instance FromHttpApiData BatchUpdateValuesRequestResponseDateTimeRenderOption where-    parseQueryParam = \case-        "SERIAL_NUMBER" -> Right SerialNumber-        "FORMATTED_STRING" -> Right FormattedString-        x -> Left ("Unable to parse BatchUpdateValuesRequestResponseDateTimeRenderOption from: " <> x)--instance ToHttpApiData BatchUpdateValuesRequestResponseDateTimeRenderOption where-    toQueryParam = \case-        SerialNumber -> "SERIAL_NUMBER"-        FormattedString -> "FORMATTED_STRING"--instance FromJSON BatchUpdateValuesRequestResponseDateTimeRenderOption where-    parseJSON = parseJSONText "BatchUpdateValuesRequestResponseDateTimeRenderOption"--instance ToJSON BatchUpdateValuesRequestResponseDateTimeRenderOption where-    toJSON = toJSONText---- | Whether rows or columns should be appended.-data AppendDimensionRequestDimension-    = ADRDDimensionUnspecified-      -- ^ @DIMENSION_UNSPECIFIED@-      -- The default value, do not use.-    | ADRDRows-      -- ^ @ROWS@-      -- Operates on the rows of a sheet.-    | ADRDColumns-      -- ^ @COLUMNS@-      -- Operates on the columns of a sheet.-      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)--instance Hashable AppendDimensionRequestDimension--instance FromHttpApiData AppendDimensionRequestDimension where-    parseQueryParam = \case-        "DIMENSION_UNSPECIFIED" -> Right ADRDDimensionUnspecified-        "ROWS" -> Right ADRDRows-        "COLUMNS" -> Right ADRDColumns-        x -> Left ("Unable to parse AppendDimensionRequestDimension from: " <> x)--instance ToHttpApiData AppendDimensionRequestDimension where-    toQueryParam = \case-        ADRDDimensionUnspecified -> "DIMENSION_UNSPECIFIED"-        ADRDRows -> "ROWS"-        ADRDColumns -> "COLUMNS"--instance FromJSON AppendDimensionRequestDimension where-    parseJSON = parseJSONText "AppendDimensionRequestDimension"--instance ToJSON AppendDimensionRequestDimension where-    toJSON = toJSONText---- | The dimension of the span.-data DimensionRangeDimension-    = DRDDimensionUnspecified-      -- ^ @DIMENSION_UNSPECIFIED@-      -- The default value, do not use.-    | DRDRows-      -- ^ @ROWS@-      -- Operates on the rows of a sheet.-    | DRDColumns-      -- ^ @COLUMNS@-      -- Operates on the columns of a sheet.-      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)--instance Hashable DimensionRangeDimension--instance FromHttpApiData DimensionRangeDimension where-    parseQueryParam = \case-        "DIMENSION_UNSPECIFIED" -> Right DRDDimensionUnspecified-        "ROWS" -> Right DRDRows-        "COLUMNS" -> Right DRDColumns-        x -> Left ("Unable to parse DimensionRangeDimension from: " <> x)--instance ToHttpApiData DimensionRangeDimension where-    toQueryParam = \case-        DRDDimensionUnspecified -> "DIMENSION_UNSPECIFIED"-        DRDRows -> "ROWS"-        DRDColumns -> "COLUMNS"--instance FromJSON DimensionRangeDimension where-    parseJSON = parseJSONText "DimensionRangeDimension"--instance ToJSON DimensionRangeDimension where-    toJSON = toJSONText---- | The dimension that data should be filled into.-data SourceAndDestinationDimension-    = SADDDimensionUnspecified-      -- ^ @DIMENSION_UNSPECIFIED@-      -- The default value, do not use.-    | SADDRows-      -- ^ @ROWS@-      -- Operates on the rows of a sheet.-    | SADDColumns-      -- ^ @COLUMNS@-      -- Operates on the columns of a sheet.-      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)--instance Hashable SourceAndDestinationDimension--instance FromHttpApiData SourceAndDestinationDimension where-    parseQueryParam = \case-        "DIMENSION_UNSPECIFIED" -> Right SADDDimensionUnspecified-        "ROWS" -> Right SADDRows-        "COLUMNS" -> Right SADDColumns-        x -> Left ("Unable to parse SourceAndDestinationDimension from: " <> x)--instance ToHttpApiData SourceAndDestinationDimension where-    toQueryParam = \case-        SADDDimensionUnspecified -> "DIMENSION_UNSPECIFIED"-        SADDRows -> "ROWS"-        SADDColumns -> "COLUMNS"--instance FromJSON SourceAndDestinationDimension where-    parseJSON = parseJSONText "SourceAndDestinationDimension"--instance ToJSON SourceAndDestinationDimension where-    toJSON = toJSONText---- | The wrap strategy for the value in the cell.-data CellFormatWrapStrategy-    = WrapStrategyUnspecified-      -- ^ @WRAP_STRATEGY_UNSPECIFIED@-      -- The default value, do not use.-    | OverflowCell-      -- ^ @OVERFLOW_CELL@-      -- Lines that are longer than the cell width will be written in the next-      -- cell over, so long as that cell is empty. If the next cell over is-      -- non-empty, this behaves the same as CLIP. The text will never wrap to-      -- the next line unless the user manually inserts a new line. Example: |-      -- First sentence. | | Manual newline that is very long. \<- Text continues-      -- into next cell | Next newline. |-    | LegacyWrap-      -- ^ @LEGACY_WRAP@-      -- This wrap strategy represents the old Google Sheets wrap strategy where-      -- words that are longer than a line are clipped rather than broken. This-      -- strategy is not supported on all platforms and is being phased out.-      -- Example: | Cell has a | | loooooooooo| \<- Word is clipped. | word. |-    | Clip-      -- ^ @CLIP@-      -- Lines that are longer than the cell width will be clipped. The text will-      -- never wrap to the next line unless the user manually inserts a new line.-      -- Example: | First sentence. | | Manual newline t| \<- Text is clipped |-      -- Next newline. |-    | Wrap-      -- ^ @WRAP@-      -- Words that are longer than a line are wrapped at the character level-      -- rather than clipped. Example: | Cell has a | | loooooooooo| \<- Word is-      -- broken. | ong word. |-      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)--instance Hashable CellFormatWrapStrategy--instance FromHttpApiData CellFormatWrapStrategy where-    parseQueryParam = \case-        "WRAP_STRATEGY_UNSPECIFIED" -> Right WrapStrategyUnspecified-        "OVERFLOW_CELL" -> Right OverflowCell-        "LEGACY_WRAP" -> Right LegacyWrap-        "CLIP" -> Right Clip-        "WRAP" -> Right Wrap-        x -> Left ("Unable to parse CellFormatWrapStrategy from: " <> x)--instance ToHttpApiData CellFormatWrapStrategy where-    toQueryParam = \case-        WrapStrategyUnspecified -> "WRAP_STRATEGY_UNSPECIFIED"-        OverflowCell -> "OVERFLOW_CELL"-        LegacyWrap -> "LEGACY_WRAP"-        Clip -> "CLIP"-        Wrap -> "WRAP"--instance FromJSON CellFormatWrapStrategy where-    parseJSON = parseJSONText "CellFormatWrapStrategy"--instance ToJSON CellFormatWrapStrategy where-    toJSON = toJSONText---- | How the input data should be interpreted.-data BatchUpdateValuesRequestValueInputOption-    = InputValueOptionUnspecified-      -- ^ @INPUT_VALUE_OPTION_UNSPECIFIED@-      -- Default input value. This value must not be used.-    | Raw-      -- ^ @RAW@-      -- The values the user has entered will not be parsed and will be stored-      -- as-is.-    | UserEntered-      -- ^ @USER_ENTERED@-      -- The values will be parsed as if the user typed them into the UI. Numbers-      -- will stay as numbers, but strings may be converted to numbers, dates,-      -- etc. following the same rules that are applied when entering text into a-      -- cell via the Google Sheets UI.-      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)--instance Hashable BatchUpdateValuesRequestValueInputOption--instance FromHttpApiData BatchUpdateValuesRequestValueInputOption where-    parseQueryParam = \case-        "INPUT_VALUE_OPTION_UNSPECIFIED" -> Right InputValueOptionUnspecified-        "RAW" -> Right Raw-        "USER_ENTERED" -> Right UserEntered-        x -> Left ("Unable to parse BatchUpdateValuesRequestValueInputOption from: " <> x)--instance ToHttpApiData BatchUpdateValuesRequestValueInputOption where-    toQueryParam = \case-        InputValueOptionUnspecified -> "INPUT_VALUE_OPTION_UNSPECIFIED"-        Raw -> "RAW"-        UserEntered -> "USER_ENTERED"--instance FromJSON BatchUpdateValuesRequestValueInputOption where-    parseJSON = parseJSONText "BatchUpdateValuesRequestValueInputOption"--instance ToJSON BatchUpdateValuesRequestValueInputOption where-    toJSON = toJSONText---- | Determines how values in the response should be rendered. The default--- render option is ValueRenderOption.FORMATTED_VALUE.-data BatchUpdateValuesRequestResponseValueRenderOption-    = FormattedValue-      -- ^ @FORMATTED_VALUE@-      -- Values will be calculated & formatted in the reply according to the-      -- cell\'s formatting. Formatting is based on the spreadsheet\'s locale,-      -- not the requesting user\'s locale. For example, if \`A1\` is \`1.23\`-      -- and \`A2\` is \`=A1\` and formatted as currency, then \`A2\` would-      -- return \`\"$1.23\"\`.-    | UnformattedValue-      -- ^ @UNFORMATTED_VALUE@-      -- Values will be calculated, but not formatted in the reply. For example,-      -- if \`A1\` is \`1.23\` and \`A2\` is \`=A1\` and formatted as currency,-      -- then \`A2\` would return the number \`1.23\`.-    | Formula-      -- ^ @FORMULA@-      -- Values will not be calculated. The reply will include the formulas. For-      -- example, if \`A1\` is \`1.23\` and \`A2\` is \`=A1\` and formatted as-      -- currency, then A2 would return \`\"=A1\"\`.-      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)--instance Hashable BatchUpdateValuesRequestResponseValueRenderOption--instance FromHttpApiData BatchUpdateValuesRequestResponseValueRenderOption where-    parseQueryParam = \case-        "FORMATTED_VALUE" -> Right FormattedValue-        "UNFORMATTED_VALUE" -> Right UnformattedValue-        "FORMULA" -> Right Formula-        x -> Left ("Unable to parse BatchUpdateValuesRequestResponseValueRenderOption from: " <> x)--instance ToHttpApiData BatchUpdateValuesRequestResponseValueRenderOption where-    toQueryParam = \case-        FormattedValue -> "FORMATTED_VALUE"-        UnformattedValue -> "UNFORMATTED_VALUE"-        Formula -> "FORMULA"--instance FromJSON BatchUpdateValuesRequestResponseValueRenderOption where-    parseJSON = parseJSONText "BatchUpdateValuesRequestResponseValueRenderOption"--instance ToJSON BatchUpdateValuesRequestResponseValueRenderOption where-    toJSON = toJSONText---- | Where the legend of the pie chart should be drawn.-data PieChartSpecLegendPosition-    = PieChartLegendPositionUnspecified-      -- ^ @PIE_CHART_LEGEND_POSITION_UNSPECIFIED@-      -- Default value, do not use.-    | BottomLegend-      -- ^ @BOTTOM_LEGEND@-      -- The legend is rendered on the bottom of the chart.-    | LeftLegend-      -- ^ @LEFT_LEGEND@-      -- The legend is rendered on the left of the chart.-    | RightLegend-      -- ^ @RIGHT_LEGEND@-      -- The legend is rendered on the right of the chart.-    | TopLegend-      -- ^ @TOP_LEGEND@-      -- The legend is rendered on the top of the chart.-    | NoLegend-      -- ^ @NO_LEGEND@-      -- No legend is rendered.-    | LabeledLegend-      -- ^ @LABELED_LEGEND@-      -- Each pie slice has a label attached to it.-      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)--instance Hashable PieChartSpecLegendPosition--instance FromHttpApiData PieChartSpecLegendPosition where-    parseQueryParam = \case-        "PIE_CHART_LEGEND_POSITION_UNSPECIFIED" -> Right PieChartLegendPositionUnspecified-        "BOTTOM_LEGEND" -> Right BottomLegend-        "LEFT_LEGEND" -> Right LeftLegend-        "RIGHT_LEGEND" -> Right RightLegend-        "TOP_LEGEND" -> Right TopLegend-        "NO_LEGEND" -> Right NoLegend-        "LABELED_LEGEND" -> Right LabeledLegend-        x -> Left ("Unable to parse PieChartSpecLegendPosition from: " <> x)--instance ToHttpApiData PieChartSpecLegendPosition where-    toQueryParam = \case-        PieChartLegendPositionUnspecified -> "PIE_CHART_LEGEND_POSITION_UNSPECIFIED"-        BottomLegend -> "BOTTOM_LEGEND"-        LeftLegend -> "LEFT_LEGEND"-        RightLegend -> "RIGHT_LEGEND"-        TopLegend -> "TOP_LEGEND"-        NoLegend -> "NO_LEGEND"-        LabeledLegend -> "LABELED_LEGEND"--instance FromJSON PieChartSpecLegendPosition where-    parseJSON = parseJSONText "PieChartSpecLegendPosition"--instance ToJSON PieChartSpecLegendPosition where-    toJSON = toJSONText---- | The vertical alignment of the value in the cell.-data CellFormatVerticalAlignment-    = VerticalAlignUnspecified-      -- ^ @VERTICAL_ALIGN_UNSPECIFIED@-      -- The vertical alignment is not specified. Do not use this.-    | Top-      -- ^ @TOP@-      -- The text is explicitly aligned to the top of the cell.-    | Middle-      -- ^ @MIDDLE@-      -- The text is explicitly aligned to the middle of the cell.-    | Bottom-      -- ^ @BOTTOM@-      -- The text is explicitly aligned to the bottom of the cell.-      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)--instance Hashable CellFormatVerticalAlignment--instance FromHttpApiData CellFormatVerticalAlignment where-    parseQueryParam = \case-        "VERTICAL_ALIGN_UNSPECIFIED" -> Right VerticalAlignUnspecified-        "TOP" -> Right Top-        "MIDDLE" -> Right Middle-        "BOTTOM" -> Right Bottom-        x -> Left ("Unable to parse CellFormatVerticalAlignment from: " <> x)--instance ToHttpApiData CellFormatVerticalAlignment where-    toQueryParam = \case-        VerticalAlignUnspecified -> "VERTICAL_ALIGN_UNSPECIFIED"-        Top -> "TOP"-        Middle -> "MIDDLE"-        Bottom -> "BOTTOM"--instance FromJSON CellFormatVerticalAlignment where-    parseJSON = parseJSONText "CellFormatVerticalAlignment"--instance ToJSON CellFormatVerticalAlignment where-    toJSON = toJSONText---- | The type of the number format. When writing, this field must be set.-data NumberFormatType-    = NumberFormatTypeUnspecified-      -- ^ @NUMBER_FORMAT_TYPE_UNSPECIFIED@-      -- The number format is not specified and is based on the contents of the-      -- cell. Do not explicitly use this.-    | Text-      -- ^ @TEXT@-      -- Text formatting, e.g \`1000.12\`-    | Number-      -- ^ @NUMBER@-      -- Number formatting, e.g, \`1,000.12\`-    | Percent-      -- ^ @PERCENT@-      -- Percent formatting, e.g \`10.12%\`-    | Currency-      -- ^ @CURRENCY@-      -- Currency formatting, e.g \`$1,000.12\`-    | Date-      -- ^ @DATE@-      -- Date formatting, e.g \`9\/26\/2008\`-    | Time-      -- ^ @TIME@-      -- Time formatting, e.g \`3:59:00 PM\`-    | DateTime-      -- ^ @DATE_TIME@-      -- Date+Time formatting, e.g \`9\/26\/08 15:59:00\`-    | Scientific-      -- ^ @SCIENTIFIC@-      -- Scientific number formatting, e.g \`1.01E+03\`-      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)--instance Hashable NumberFormatType--instance FromHttpApiData NumberFormatType where-    parseQueryParam = \case-        "NUMBER_FORMAT_TYPE_UNSPECIFIED" -> Right NumberFormatTypeUnspecified-        "TEXT" -> Right Text-        "NUMBER" -> Right Number-        "PERCENT" -> Right Percent-        "CURRENCY" -> Right Currency-        "DATE" -> Right Date-        "TIME" -> Right Time-        "DATE_TIME" -> Right DateTime-        "SCIENTIFIC" -> Right Scientific-        x -> Left ("Unable to parse NumberFormatType from: " <> x)--instance ToHttpApiData NumberFormatType where-    toQueryParam = \case-        NumberFormatTypeUnspecified -> "NUMBER_FORMAT_TYPE_UNSPECIFIED"-        Text -> "TEXT"-        Number -> "NUMBER"-        Percent -> "PERCENT"-        Currency -> "CURRENCY"-        Date -> "DATE"-        Time -> "TIME"-        DateTime -> "DATE_TIME"-        Scientific -> "SCIENTIFIC"--instance FromJSON NumberFormatType where-    parseJSON = parseJSONText "NumberFormatType"--instance ToJSON NumberFormatType where-    toJSON = toJSONText---- | A relative date (based on the current date). Valid only if the type is--- DATE_BEFORE, DATE_AFTER, DATE_ON_OR_BEFORE or DATE_ON_OR_AFTER. Relative--- dates are not supported in data validation. They are supported only in--- conditional formatting and conditional filters.-data ConditionValueRelativeDate-    = RelativeDateUnspecified-      -- ^ @RELATIVE_DATE_UNSPECIFIED@-      -- Default value, do not use.-    | PastYear-      -- ^ @PAST_YEAR@-      -- The value is one year before today.-    | PastMonth-      -- ^ @PAST_MONTH@-      -- The value is one month before today.-    | PastWeek-      -- ^ @PAST_WEEK@-      -- The value is one week before today.-    | Yesterday-      -- ^ @YESTERDAY@-      -- The value is yesterday.-    | Today-      -- ^ @TODAY@-      -- The value is today.-    | Tomorrow-      -- ^ @TOMORROW@-      -- The value is tomorrow.-      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)--instance Hashable ConditionValueRelativeDate--instance FromHttpApiData ConditionValueRelativeDate where-    parseQueryParam = \case-        "RELATIVE_DATE_UNSPECIFIED" -> Right RelativeDateUnspecified-        "PAST_YEAR" -> Right PastYear-        "PAST_MONTH" -> Right PastMonth-        "PAST_WEEK" -> Right PastWeek-        "YESTERDAY" -> Right Yesterday-        "TODAY" -> Right Today-        "TOMORROW" -> Right Tomorrow-        x -> Left ("Unable to parse ConditionValueRelativeDate from: " <> x)--instance ToHttpApiData ConditionValueRelativeDate where-    toQueryParam = \case-        RelativeDateUnspecified -> "RELATIVE_DATE_UNSPECIFIED"-        PastYear -> "PAST_YEAR"-        PastMonth -> "PAST_MONTH"-        PastWeek -> "PAST_WEEK"-        Yesterday -> "YESTERDAY"-        Today -> "TODAY"-        Tomorrow -> "TOMORROW"--instance FromJSON ConditionValueRelativeDate where-    parseJSON = parseJSONText "ConditionValueRelativeDate"--instance ToJSON ConditionValueRelativeDate where-    toJSON = toJSONText---- | The order data should be sorted.-data SortSpecSortOrder-    = SortOrderUnspecified-      -- ^ @SORT_ORDER_UNSPECIFIED@-      -- Default value, do not use this.-    | Ascending-      -- ^ @ASCENDING@-      -- Sort ascending.-    | Descending-      -- ^ @DESCENDING@-      -- Sort descending.-      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)--instance Hashable SortSpecSortOrder--instance FromHttpApiData SortSpecSortOrder where-    parseQueryParam = \case-        "SORT_ORDER_UNSPECIFIED" -> Right SortOrderUnspecified-        "ASCENDING" -> Right Ascending-        "DESCENDING" -> Right Descending-        x -> Left ("Unable to parse SortSpecSortOrder from: " <> x)--instance ToHttpApiData SortSpecSortOrder where-    toQueryParam = \case-        SortOrderUnspecified -> "SORT_ORDER_UNSPECIFIED"-        Ascending -> "ASCENDING"-        Descending -> "DESCENDING"--instance FromJSON SortSpecSortOrder where-    parseJSON = parseJSONText "SortSpecSortOrder"--instance ToJSON SortSpecSortOrder where-    toJSON = toJSONText---- | A function to summarize the value. If formula is set, the only supported--- values are SUM and CUSTOM. If sourceColumnOffset is set, then \`CUSTOM\`--- is not supported.-data PivotValueSummarizeFunction-    = PivotStandardValueFunctionUnspecified-      -- ^ @PIVOT_STANDARD_VALUE_FUNCTION_UNSPECIFIED@-      -- The default, do not use.-    | Sum-      -- ^ @SUM@-      -- Corresponds to the \`SUM\` function.-    | Counta-      -- ^ @COUNTA@-      -- Corresponds to the \`COUNTA\` function.-    | Count-      -- ^ @COUNT@-      -- Corresponds to the \`COUNT\` function.-    | Countunique-      -- ^ @COUNTUNIQUE@-      -- Corresponds to the \`COUNTUNIQUE\` function.-    | Average-      -- ^ @AVERAGE@-      -- Corresponds to the \`AVERAGE\` function.-    | Max-      -- ^ @MAX@-      -- Corresponds to the \`MAX\` function.-    | Min-      -- ^ @MIN@-      -- Corresponds to the \`MIN\` function.-    | Median-      -- ^ @MEDIAN@-      -- Corresponds to the \`MEDIAN\` function.-    | Product-      -- ^ @PRODUCT@-      -- Corresponds to the \`PRODUCT\` function.-    | Stdev-      -- ^ @STDEV@-      -- Corresponds to the \`STDEV\` function.-    | Stdevp-      -- ^ @STDEVP@-      -- Corresponds to the \`STDEVP\` function.-    | Var-      -- ^ @VAR@-      -- Corresponds to the \`VAR\` function.-    | Varp-      -- ^ @VARP@-      -- Corresponds to the \`VARP\` function.-    | Custom-      -- ^ @CUSTOM@-      -- Indicates the formula should be used as-is. Only valid if-      -- PivotValue.formula was set.-      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)--instance Hashable PivotValueSummarizeFunction--instance FromHttpApiData PivotValueSummarizeFunction where-    parseQueryParam = \case-        "PIVOT_STANDARD_VALUE_FUNCTION_UNSPECIFIED" -> Right PivotStandardValueFunctionUnspecified-        "SUM" -> Right Sum-        "COUNTA" -> Right Counta-        "COUNT" -> Right Count-        "COUNTUNIQUE" -> Right Countunique-        "AVERAGE" -> Right Average-        "MAX" -> Right Max-        "MIN" -> Right Min-        "MEDIAN" -> Right Median-        "PRODUCT" -> Right Product-        "STDEV" -> Right Stdev-        "STDEVP" -> Right Stdevp-        "VAR" -> Right Var-        "VARP" -> Right Varp-        "CUSTOM" -> Right Custom-        x -> Left ("Unable to parse PivotValueSummarizeFunction from: " <> x)--instance ToHttpApiData PivotValueSummarizeFunction where-    toQueryParam = \case-        PivotStandardValueFunctionUnspecified -> "PIVOT_STANDARD_VALUE_FUNCTION_UNSPECIFIED"-        Sum -> "SUM"-        Counta -> "COUNTA"-        Count -> "COUNT"-        Countunique -> "COUNTUNIQUE"-        Average -> "AVERAGE"-        Max -> "MAX"-        Min -> "MIN"-        Median -> "MEDIAN"-        Product -> "PRODUCT"-        Stdev -> "STDEV"-        Stdevp -> "STDEVP"-        Var -> "VAR"-        Varp -> "VARP"-        Custom -> "CUSTOM"--instance FromJSON PivotValueSummarizeFunction where-    parseJSON = parseJSONText "PivotValueSummarizeFunction"--instance ToJSON PivotValueSummarizeFunction where-    toJSON = toJSONText---- | How a hyperlink, if it exists, should be displayed in the cell.-data CellFormatHyperlinkDisplayType-    = HyperlinkDisplayTypeUnspecified-      -- ^ @HYPERLINK_DISPLAY_TYPE_UNSPECIFIED@-      -- The default value: the hyperlink is rendered. Do not use this.-    | Linked-      -- ^ @LINKED@-      -- A hyperlink should be explicitly rendered.-    | PlainText-      -- ^ @PLAIN_TEXT@-      -- A hyperlink should not be rendered.-      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)--instance Hashable CellFormatHyperlinkDisplayType--instance FromHttpApiData CellFormatHyperlinkDisplayType where-    parseQueryParam = \case-        "HYPERLINK_DISPLAY_TYPE_UNSPECIFIED" -> Right HyperlinkDisplayTypeUnspecified-        "LINKED" -> Right Linked-        "PLAIN_TEXT" -> Right PlainText-        x -> Left ("Unable to parse CellFormatHyperlinkDisplayType from: " <> x)--instance ToHttpApiData CellFormatHyperlinkDisplayType where-    toQueryParam = \case-        HyperlinkDisplayTypeUnspecified -> "HYPERLINK_DISPLAY_TYPE_UNSPECIFIED"-        Linked -> "LINKED"-        PlainText -> "PLAIN_TEXT"--instance FromJSON CellFormatHyperlinkDisplayType where-    parseJSON = parseJSONText "CellFormatHyperlinkDisplayType"--instance ToJSON CellFormatHyperlinkDisplayType where-    toJSON = toJSONText---- | The type of sheet. Defaults to GRID. This field cannot be changed once--- set.-data SheetPropertiesSheetType-    = SheetTypeUnspecified-      -- ^ @SHEET_TYPE_UNSPECIFIED@-      -- Default value, do not use.-    | Grid-      -- ^ @GRID@-      -- The sheet is a grid.-    | Object-      -- ^ @OBJECT@-      -- The sheet has no grid and instead has an object like a chart or image.-      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)--instance Hashable SheetPropertiesSheetType--instance FromHttpApiData SheetPropertiesSheetType where-    parseQueryParam = \case-        "SHEET_TYPE_UNSPECIFIED" -> Right SheetTypeUnspecified-        "GRID" -> Right Grid-        "OBJECT" -> Right Object-        x -> Left ("Unable to parse SheetPropertiesSheetType from: " <> x)--instance ToHttpApiData SheetPropertiesSheetType where-    toQueryParam = \case-        SheetTypeUnspecified -> "SHEET_TYPE_UNSPECIFIED"-        Grid -> "GRID"-        Object -> "OBJECT"--instance FromJSON SheetPropertiesSheetType where-    parseJSON = parseJSONText "SheetPropertiesSheetType"--instance ToJSON SheetPropertiesSheetType where-    toJSON = toJSONText---- | How the cells should be merged.-data MergeCellsRequestMergeType-    = MergeAll-      -- ^ @MERGE_ALL@-      -- Create a single merge from the range-    | MergeColumns-      -- ^ @MERGE_COLUMNS@-      -- Create a merge for each column in the range-    | MergeRows-      -- ^ @MERGE_ROWS@-      -- Create a merge for each row in the range-      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)--instance Hashable MergeCellsRequestMergeType--instance FromHttpApiData MergeCellsRequestMergeType where-    parseQueryParam = \case-        "MERGE_ALL" -> Right MergeAll-        "MERGE_COLUMNS" -> Right MergeColumns-        "MERGE_ROWS" -> Right MergeRows-        x -> Left ("Unable to parse MergeCellsRequestMergeType from: " <> x)--instance ToHttpApiData MergeCellsRequestMergeType where-    toQueryParam = \case-        MergeAll -> "MERGE_ALL"-        MergeColumns -> "MERGE_COLUMNS"-        MergeRows -> "MERGE_ROWS"--instance FromJSON MergeCellsRequestMergeType where-    parseJSON = parseJSONText "MergeCellsRequestMergeType"--instance ToJSON MergeCellsRequestMergeType where-    toJSON = toJSONText---- | The horizontal alignment of the value in the cell.-data CellFormatHorizontalAlignment-    = HorizontalAlignUnspecified-      -- ^ @HORIZONTAL_ALIGN_UNSPECIFIED@-      -- The horizontal alignment is not specified. Do not use this.-    | Left'-      -- ^ @LEFT@-      -- The text is explicitly aligned to the left of the cell.-    | Center-      -- ^ @CENTER@-      -- The text is explicitly aligned to the center of the cell.-    | Right'-      -- ^ @RIGHT@-      -- The text is explicitly aligned to the right of the cell.-      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)--instance Hashable CellFormatHorizontalAlignment--instance FromHttpApiData CellFormatHorizontalAlignment where-    parseQueryParam = \case-        "HORIZONTAL_ALIGN_UNSPECIFIED" -> Right HorizontalAlignUnspecified-        "LEFT" -> Right Left'-        "CENTER" -> Right Center-        "RIGHT" -> Right Right'-        x -> Left ("Unable to parse CellFormatHorizontalAlignment from: " <> x)--instance ToHttpApiData CellFormatHorizontalAlignment where-    toQueryParam = \case-        HorizontalAlignUnspecified -> "HORIZONTAL_ALIGN_UNSPECIFIED"-        Left' -> "LEFT"-        Center -> "CENTER"-        Right' -> "RIGHT"--instance FromJSON CellFormatHorizontalAlignment where-    parseJSON = parseJSONText "CellFormatHorizontalAlignment"--instance ToJSON CellFormatHorizontalAlignment where-    toJSON = toJSONText---- | The type of condition.-data BooleanConditionType-    = ConditionTypeUnspecified-      -- ^ @CONDITION_TYPE_UNSPECIFIED@-      -- The default value, do not use.-    | NumberGreater-      -- ^ @NUMBER_GREATER@-      -- The cell\'s value must be greater than the condition\'s value. Supported-      -- by data validation, conditional formatting and filters. Requires a-      -- single ConditionValue.-    | NumberGreaterThanEQ-      -- ^ @NUMBER_GREATER_THAN_EQ@-      -- The cell\'s value must be greater than or equal to the condition\'s-      -- value. Supported by data validation, conditional formatting and filters.-      -- Requires a single ConditionValue.-    | NumberLess-      -- ^ @NUMBER_LESS@-      -- The cell\'s value must be less than the condition\'s value. Supported by-      -- data validation, conditional formatting and filters. Requires a single-      -- ConditionValue.-    | NumberLessThanEQ-      -- ^ @NUMBER_LESS_THAN_EQ@-      -- The cell\'s value must be less than or equal to the condition\'s value.-      -- Supported by data validation, conditional formatting and filters.-      -- Requires a single ConditionValue.-    | NumberEQ-      -- ^ @NUMBER_EQ@-      -- The cell\'s value must be equal to the condition\'s value. Supported by-      -- data validation, conditional formatting and filters. Requires a single-      -- ConditionValue.-    | NumberNotEQ-      -- ^ @NUMBER_NOT_EQ@-      -- The cell\'s value must be not equal to the condition\'s value. Supported-      -- by data validation, conditional formatting and filters. Requires a-      -- single ConditionValue.-    | NumberBetween-      -- ^ @NUMBER_BETWEEN@-      -- The cell\'s value must be between the two condition values. Supported by-      -- data validation, conditional formatting and filters. Requires exactly-      -- two ConditionValues.-    | NumberNotBetween-      -- ^ @NUMBER_NOT_BETWEEN@-      -- The cell\'s value must not be between the two condition values.-      -- Supported by data validation, conditional formatting and filters.-      -- Requires exactly two ConditionValues.-    | TextContains-      -- ^ @TEXT_CONTAINS@-      -- The cell\'s value must contain the condition\'s value. Supported by data-      -- validation, conditional formatting and filters. Requires a single-      -- ConditionValue.-    | TextNotContains-      -- ^ @TEXT_NOT_CONTAINS@-      -- The cell\'s value must not contain the condition\'s value. Supported by-      -- data validation, conditional formatting and filters. Requires a single-      -- ConditionValue.-    | TextStartsWith-      -- ^ @TEXT_STARTS_WITH@-      -- The cell\'s value must start with the condition\'s value. Supported by-      -- conditional formatting and filters. Requires a single ConditionValue.-    | TextEndsWith-      -- ^ @TEXT_ENDS_WITH@-      -- The cell\'s value must end with the condition\'s value. Supported by-      -- conditional formatting and filters. Requires a single ConditionValue.-    | TextEQ-      -- ^ @TEXT_EQ@-      -- The cell\'s value must be exactly the condition\'s value. Supported by-      -- data validation, conditional formatting and filters. Requires a single-      -- ConditionValue.-    | TextIsEmail-      -- ^ @TEXT_IS_EMAIL@-      -- The cell\'s value must be a valid email address. Supported by data-      -- validation. Requires no ConditionValues.-    | TextIsURL-      -- ^ @TEXT_IS_URL@-      -- The cell\'s value must be a valid URL. Supported by data validation.-      -- Requires no ConditionValues.-    | DateEQ-      -- ^ @DATE_EQ@-      -- The cell\'s value must be the same date as the condition\'s value.-      -- Supported by data validation, conditional formatting and filters.-      -- Requires a single ConditionValue.-    | DateBefore-      -- ^ @DATE_BEFORE@-      -- The cell\'s value must be before the date of the condition\'s value.-      -- Supported by data validation, conditional formatting and filters.-      -- Requires a single ConditionValue that may be a relative date.-    | DateAfter-      -- ^ @DATE_AFTER@-      -- The cell\'s value must be after the date of the condition\'s value.-      -- Supported by data validation, conditional formatting and filters.-      -- Requires a single ConditionValue that may be a relative date.-    | DateOnOrBefore-      -- ^ @DATE_ON_OR_BEFORE@-      -- The cell\'s value must be on or before the date of the condition\'s-      -- value. Supported by data validation. Requires a single ConditionValue-      -- that may be a relative date.-    | DateOnOrAfter-      -- ^ @DATE_ON_OR_AFTER@-      -- The cell\'s value must be on or after the date of the condition\'s-      -- value. Supported by data validation. Requires a single ConditionValue-      -- that may be a relative date.-    | DateBetween-      -- ^ @DATE_BETWEEN@-      -- The cell\'s value must be between the dates of the two condition values.-      -- Supported by data validation. Requires exactly two ConditionValues.-    | DateNotBetween-      -- ^ @DATE_NOT_BETWEEN@-      -- The cell\'s value must be outside the dates of the two condition values.-      -- Supported by data validation. Requires exactly two ConditionValues.-    | DateIsValid-      -- ^ @DATE_IS_VALID@-      -- The cell\'s value must be a date. Supported by data validation. Requires-      -- no ConditionValues.-    | OneOfRange-      -- ^ @ONE_OF_RANGE@-      -- The cell\'s value must be listed in the grid in condition value\'s-      -- range. Supported by data validation. Requires a single ConditionValue,-      -- and the value must be a valid range in A1 notation.-    | OneOfList-      -- ^ @ONE_OF_LIST@-      -- The cell\'s value must in the list of condition values. Supported by-      -- data validation. Supports any number of condition values, one per item-      -- in the list. Formulas are not supported in the values.-    | Blank-      -- ^ @BLANK@-      -- The cell\'s value must be empty. Supported by conditional formatting and-      -- filters. Requires no ConditionValues.-    | NotBlank-      -- ^ @NOT_BLANK@-      -- The cell\'s value must not be empty. Supported by conditional formatting-      -- and filters. Requires no ConditionValues.-    | CustomFormula-      -- ^ @CUSTOM_FORMULA@-      -- The condition\'s formula must evaluate to true. Supported by data-      -- validation, conditional formatting and filters. Requires a single-      -- ConditionValue.-      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)--instance Hashable BooleanConditionType--instance FromHttpApiData BooleanConditionType where-    parseQueryParam = \case-        "CONDITION_TYPE_UNSPECIFIED" -> Right ConditionTypeUnspecified-        "NUMBER_GREATER" -> Right NumberGreater-        "NUMBER_GREATER_THAN_EQ" -> Right NumberGreaterThanEQ-        "NUMBER_LESS" -> Right NumberLess-        "NUMBER_LESS_THAN_EQ" -> Right NumberLessThanEQ-        "NUMBER_EQ" -> Right NumberEQ-        "NUMBER_NOT_EQ" -> Right NumberNotEQ-        "NUMBER_BETWEEN" -> Right NumberBetween-        "NUMBER_NOT_BETWEEN" -> Right NumberNotBetween-        "TEXT_CONTAINS" -> Right TextContains-        "TEXT_NOT_CONTAINS" -> Right TextNotContains-        "TEXT_STARTS_WITH" -> Right TextStartsWith-        "TEXT_ENDS_WITH" -> Right TextEndsWith-        "TEXT_EQ" -> Right TextEQ-        "TEXT_IS_EMAIL" -> Right TextIsEmail-        "TEXT_IS_URL" -> Right TextIsURL-        "DATE_EQ" -> Right DateEQ-        "DATE_BEFORE" -> Right DateBefore-        "DATE_AFTER" -> Right DateAfter-        "DATE_ON_OR_BEFORE" -> Right DateOnOrBefore-        "DATE_ON_OR_AFTER" -> Right DateOnOrAfter-        "DATE_BETWEEN" -> Right DateBetween-        "DATE_NOT_BETWEEN" -> Right DateNotBetween-        "DATE_IS_VALID" -> Right DateIsValid-        "ONE_OF_RANGE" -> Right OneOfRange-        "ONE_OF_LIST" -> Right OneOfList-        "BLANK" -> Right Blank-        "NOT_BLANK" -> Right NotBlank-        "CUSTOM_FORMULA" -> Right CustomFormula-        x -> Left ("Unable to parse BooleanConditionType from: " <> x)--instance ToHttpApiData BooleanConditionType where-    toQueryParam = \case-        ConditionTypeUnspecified -> "CONDITION_TYPE_UNSPECIFIED"-        NumberGreater -> "NUMBER_GREATER"-        NumberGreaterThanEQ -> "NUMBER_GREATER_THAN_EQ"-        NumberLess -> "NUMBER_LESS"-        NumberLessThanEQ -> "NUMBER_LESS_THAN_EQ"-        NumberEQ -> "NUMBER_EQ"-        NumberNotEQ -> "NUMBER_NOT_EQ"-        NumberBetween -> "NUMBER_BETWEEN"-        NumberNotBetween -> "NUMBER_NOT_BETWEEN"-        TextContains -> "TEXT_CONTAINS"-        TextNotContains -> "TEXT_NOT_CONTAINS"-        TextStartsWith -> "TEXT_STARTS_WITH"-        TextEndsWith -> "TEXT_ENDS_WITH"-        TextEQ -> "TEXT_EQ"-        TextIsEmail -> "TEXT_IS_EMAIL"-        TextIsURL -> "TEXT_IS_URL"-        DateEQ -> "DATE_EQ"-        DateBefore -> "DATE_BEFORE"-        DateAfter -> "DATE_AFTER"-        DateOnOrBefore -> "DATE_ON_OR_BEFORE"-        DateOnOrAfter -> "DATE_ON_OR_AFTER"-        DateBetween -> "DATE_BETWEEN"-        DateNotBetween -> "DATE_NOT_BETWEEN"-        DateIsValid -> "DATE_IS_VALID"-        OneOfRange -> "ONE_OF_RANGE"-        OneOfList -> "ONE_OF_LIST"-        Blank -> "BLANK"-        NotBlank -> "NOT_BLANK"-        CustomFormula -> "CUSTOM_FORMULA"--instance FromJSON BooleanConditionType where-    parseJSON = parseJSONText "BooleanConditionType"--instance ToJSON BooleanConditionType where-    toJSON = toJSONText---- | The major dimension of the values. For output, if the spreadsheet data--- is: \`A1=1,B1=2,A2=3,B2=4\`, then requesting--- \`range=A1:B2,majorDimension=ROWS\` will return \`[[1,2],[3,4]]\`,--- whereas requesting \`range=A1:B2,majorDimension=COLUMNS\` will return--- \`[[1,3],[2,4]]\`. For input, with \`range=A1:B2,majorDimension=ROWS\`--- then \`[[1,2],[3,4]]\` will set \`A1=1,B1=2,A2=3,B2=4\`. With--- \`range=A1:B2,majorDimension=COLUMNS\` then \`[[1,2],[3,4]]\` will set--- \`A1=1,B1=3,A2=2,B2=4\`. When writing, if this field is not set, it--- defaults to ROWS.-data ValueRangeMajorDimension-    = VRMDDimensionUnspecified-      -- ^ @DIMENSION_UNSPECIFIED@-      -- The default value, do not use.-    | VRMDRows-      -- ^ @ROWS@-      -- Operates on the rows of a sheet.-    | VRMDColumns-      -- ^ @COLUMNS@-      -- Operates on the columns of a sheet.-      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)--instance Hashable ValueRangeMajorDimension--instance FromHttpApiData ValueRangeMajorDimension where-    parseQueryParam = \case-        "DIMENSION_UNSPECIFIED" -> Right VRMDDimensionUnspecified-        "ROWS" -> Right VRMDRows-        "COLUMNS" -> Right VRMDColumns-        x -> Left ("Unable to parse ValueRangeMajorDimension from: " <> x)--instance ToHttpApiData ValueRangeMajorDimension where-    toQueryParam = \case-        VRMDDimensionUnspecified -> "DIMENSION_UNSPECIFIED"-        VRMDRows -> "ROWS"-        VRMDColumns -> "COLUMNS"--instance FromJSON ValueRangeMajorDimension where-    parseJSON = parseJSONText "ValueRangeMajorDimension"--instance ToJSON ValueRangeMajorDimension where-    toJSON = toJSONText---- | The order the values in this group should be sorted.-data PivotGroupSortOrder-    = PGSOSortOrderUnspecified-      -- ^ @SORT_ORDER_UNSPECIFIED@-      -- Default value, do not use this.-    | PGSOAscending-      -- ^ @ASCENDING@-      -- Sort ascending.-    | PGSODescending-      -- ^ @DESCENDING@-      -- Sort descending.-      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)--instance Hashable PivotGroupSortOrder--instance FromHttpApiData PivotGroupSortOrder where-    parseQueryParam = \case-        "SORT_ORDER_UNSPECIFIED" -> Right PGSOSortOrderUnspecified-        "ASCENDING" -> Right PGSOAscending-        "DESCENDING" -> Right PGSODescending-        x -> Left ("Unable to parse PivotGroupSortOrder from: " <> x)--instance ToHttpApiData PivotGroupSortOrder where-    toQueryParam = \case-        PGSOSortOrderUnspecified -> "SORT_ORDER_UNSPECIFIED"-        PGSOAscending -> "ASCENDING"-        PGSODescending -> "DESCENDING"--instance FromJSON PivotGroupSortOrder where-    parseJSON = parseJSONText "PivotGroupSortOrder"--instance ToJSON PivotGroupSortOrder where-    toJSON = toJSONText---- | The type of the chart.-data BasicChartSpecChartType-    = BasicChartTypeUnspecified-      -- ^ @BASIC_CHART_TYPE_UNSPECIFIED@-      -- Default value, do not use.-    | Bar-      -- ^ @BAR@-      -- A </chart/interactive/docs/gallery/barchart bar chart>.-    | Line-      -- ^ @LINE@-      -- A </chart/interactive/docs/gallery/linechart line chart>.-    | Area-      -- ^ @AREA@-      -- An </chart/interactive/docs/gallery/areachart area chart>.-    | Column-      -- ^ @COLUMN@-      -- A </chart/interactive/docs/gallery/columnchart column chart>.-    | Scatter-      -- ^ @SCATTER@-      -- A </chart/interactive/docs/gallery/scatterchart scatter chart>.-    | Combo-      -- ^ @COMBO@-      -- A </chart/interactive/docs/gallery/combochart combo chart>.-      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)--instance Hashable BasicChartSpecChartType--instance FromHttpApiData BasicChartSpecChartType where-    parseQueryParam = \case-        "BASIC_CHART_TYPE_UNSPECIFIED" -> Right BasicChartTypeUnspecified-        "BAR" -> Right Bar-        "LINE" -> Right Line-        "AREA" -> Right Area-        "COLUMN" -> Right Column-        "SCATTER" -> Right Scatter-        "COMBO" -> Right Combo-        x -> Left ("Unable to parse BasicChartSpecChartType from: " <> x)--instance ToHttpApiData BasicChartSpecChartType where-    toQueryParam = \case-        BasicChartTypeUnspecified -> "BASIC_CHART_TYPE_UNSPECIFIED"-        Bar -> "BAR"-        Line -> "LINE"-        Area -> "AREA"-        Column -> "COLUMN"-        Scatter -> "SCATTER"-        Combo -> "COMBO"--instance FromJSON BasicChartSpecChartType where-    parseJSON = parseJSONText "BasicChartSpecChartType"--instance ToJSON BasicChartSpecChartType where-    toJSON = toJSONText---- | V1 error format.-data Xgafv-    = X1-      -- ^ @1@-      -- v1 error format-    | X2-      -- ^ @2@-      -- v2 error format-      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)--instance Hashable Xgafv--instance FromHttpApiData Xgafv where-    parseQueryParam = \case-        "1" -> Right X1-        "2" -> Right X2-        x -> Left ("Unable to parse Xgafv from: " <> x)--instance ToHttpApiData Xgafv where-    toQueryParam = \case-        X1 -> "1"-        X2 -> "2"--instance FromJSON Xgafv where-    parseJSON = parseJSONText "Xgafv"--instance ToJSON Xgafv where-    toJSON = toJSONText---- | The amount of time to wait before volatile functions are recalculated.-data SpreadsheetPropertiesAutoRecalc-    = RecalculationIntervalUnspecified-      -- ^ @RECALCULATION_INTERVAL_UNSPECIFIED@-      -- Default value. This value must not be used.-    | OnChange-      -- ^ @ON_CHANGE@-      -- Volatile functions are updated on every change.-    | Minute-      -- ^ @MINUTE@-      -- Volatile functions are updated on every change and every minute.-    | Hour-      -- ^ @HOUR@-      -- Volatile functions are updated on every change and hourly.-      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)--instance Hashable SpreadsheetPropertiesAutoRecalc--instance FromHttpApiData SpreadsheetPropertiesAutoRecalc where-    parseQueryParam = \case-        "RECALCULATION_INTERVAL_UNSPECIFIED" -> Right RecalculationIntervalUnspecified-        "ON_CHANGE" -> Right OnChange-        "MINUTE" -> Right Minute-        "HOUR" -> Right Hour-        x -> Left ("Unable to parse SpreadsheetPropertiesAutoRecalc from: " <> x)--instance ToHttpApiData SpreadsheetPropertiesAutoRecalc where-    toQueryParam = \case-        RecalculationIntervalUnspecified -> "RECALCULATION_INTERVAL_UNSPECIFIED"-        OnChange -> "ON_CHANGE"-        Minute -> "MINUTE"-        Hour -> "HOUR"--instance FromJSON SpreadsheetPropertiesAutoRecalc where-    parseJSON = parseJSONText "SpreadsheetPropertiesAutoRecalc"--instance ToJSON SpreadsheetPropertiesAutoRecalc where-    toJSON = toJSONText---- | How that data should be oriented when pasting.-data CopyPasteRequestPasteOrientation-    = Normal-      -- ^ @NORMAL@-      -- Paste normally.-    | Transpose-      -- ^ @TRANSPOSE@-      -- Paste transposed, where all rows become columns and vice versa.-      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)--instance Hashable CopyPasteRequestPasteOrientation--instance FromHttpApiData CopyPasteRequestPasteOrientation where-    parseQueryParam = \case-        "NORMAL" -> Right Normal-        "TRANSPOSE" -> Right Transpose-        x -> Left ("Unable to parse CopyPasteRequestPasteOrientation from: " <> x)--instance ToHttpApiData CopyPasteRequestPasteOrientation where-    toQueryParam = \case-        Normal -> "NORMAL"-        Transpose -> "TRANSPOSE"--instance FromJSON CopyPasteRequestPasteOrientation where-    parseJSON = parseJSONText "CopyPasteRequestPasteOrientation"--instance ToJSON CopyPasteRequestPasteOrientation where-    toJSON = toJSONText---- | How the data should be pasted.-data PasteDataRequestType-    = PDRTPasteNormal-      -- ^ @PASTE_NORMAL@-      -- Paste values, formulas, formats, and merges.-    | PDRTPasteValues-      -- ^ @PASTE_VALUES@-      -- Paste the values ONLY without formats, formulas, or merges.-    | PDRTPasteFormat-      -- ^ @PASTE_FORMAT@-      -- Paste the format and data validation only.-    | PDRTPasteNoBOrders-      -- ^ @PASTE_NO_BORDERS@-      -- Like PASTE_NORMAL but without borders.-    | PDRTPasteFormula-      -- ^ @PASTE_FORMULA@-      -- Paste the formulas only.-    | PDRTPasteDataValidation-      -- ^ @PASTE_DATA_VALIDATION@-      -- Paste the data validation only.-    | PDRTPasteConditionalFormatting-      -- ^ @PASTE_CONDITIONAL_FORMATTING@-      -- Paste the conditional formatting rules only.-      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)--instance Hashable PasteDataRequestType--instance FromHttpApiData PasteDataRequestType where-    parseQueryParam = \case-        "PASTE_NORMAL" -> Right PDRTPasteNormal-        "PASTE_VALUES" -> Right PDRTPasteValues-        "PASTE_FORMAT" -> Right PDRTPasteFormat-        "PASTE_NO_BORDERS" -> Right PDRTPasteNoBOrders-        "PASTE_FORMULA" -> Right PDRTPasteFormula-        "PASTE_DATA_VALIDATION" -> Right PDRTPasteDataValidation-        "PASTE_CONDITIONAL_FORMATTING" -> Right PDRTPasteConditionalFormatting-        x -> Left ("Unable to parse PasteDataRequestType from: " <> x)--instance ToHttpApiData PasteDataRequestType where-    toQueryParam = \case-        PDRTPasteNormal -> "PASTE_NORMAL"-        PDRTPasteValues -> "PASTE_VALUES"-        PDRTPasteFormat -> "PASTE_FORMAT"-        PDRTPasteNoBOrders -> "PASTE_NO_BORDERS"-        PDRTPasteFormula -> "PASTE_FORMULA"-        PDRTPasteDataValidation -> "PASTE_DATA_VALIDATION"-        PDRTPasteConditionalFormatting -> "PASTE_CONDITIONAL_FORMATTING"--instance FromJSON PasteDataRequestType where-    parseJSON = parseJSONText "PasteDataRequestType"--instance ToJSON PasteDataRequestType where-    toJSON = toJSONText---- | The direction of the text in the cell.-data CellFormatTextDirection-    = TextDirectionUnspecified-      -- ^ @TEXT_DIRECTION_UNSPECIFIED@-      -- The text direction is not specified. Do not use this.-    | LeftToRight-      -- ^ @LEFT_TO_RIGHT@-      -- The text direction of left-to-right was set by the user.-    | RightToLeft-      -- ^ @RIGHT_TO_LEFT@-      -- The text direction of right-to-left was set by the user.-      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)--instance Hashable CellFormatTextDirection--instance FromHttpApiData CellFormatTextDirection where-    parseQueryParam = \case-        "TEXT_DIRECTION_UNSPECIFIED" -> Right TextDirectionUnspecified-        "LEFT_TO_RIGHT" -> Right LeftToRight-        "RIGHT_TO_LEFT" -> Right RightToLeft-        x -> Left ("Unable to parse CellFormatTextDirection from: " <> x)--instance ToHttpApiData CellFormatTextDirection where-    toQueryParam = \case-        TextDirectionUnspecified -> "TEXT_DIRECTION_UNSPECIFIED"-        LeftToRight -> "LEFT_TO_RIGHT"-        RightToLeft -> "RIGHT_TO_LEFT"--instance FromJSON CellFormatTextDirection where-    parseJSON = parseJSONText "CellFormatTextDirection"--instance ToJSON CellFormatTextDirection where-    toJSON = toJSONText---- | The type of this series. Valid only if the chartType is COMBO. Different--- types will change the way the series is visualized. Only LINE, AREA, and--- COLUMN are supported.-data BasicChartSeriesType-    = BCSTBasicChartTypeUnspecified-      -- ^ @BASIC_CHART_TYPE_UNSPECIFIED@-      -- Default value, do not use.-    | BCSTBar-      -- ^ @BAR@-      -- A </chart/interactive/docs/gallery/barchart bar chart>.-    | BCSTLine-      -- ^ @LINE@-      -- A </chart/interactive/docs/gallery/linechart line chart>.-    | BCSTArea-      -- ^ @AREA@-      -- An </chart/interactive/docs/gallery/areachart area chart>.-    | BCSTColumn-      -- ^ @COLUMN@-      -- A </chart/interactive/docs/gallery/columnchart column chart>.-    | BCSTScatter-      -- ^ @SCATTER@-      -- A </chart/interactive/docs/gallery/scatterchart scatter chart>.-    | BCSTCombo-      -- ^ @COMBO@-      -- A </chart/interactive/docs/gallery/combochart combo chart>.-      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)--instance Hashable BasicChartSeriesType--instance FromHttpApiData BasicChartSeriesType where-    parseQueryParam = \case-        "BASIC_CHART_TYPE_UNSPECIFIED" -> Right BCSTBasicChartTypeUnspecified-        "BAR" -> Right BCSTBar-        "LINE" -> Right BCSTLine-        "AREA" -> Right BCSTArea-        "COLUMN" -> Right BCSTColumn-        "SCATTER" -> Right BCSTScatter-        "COMBO" -> Right BCSTCombo-        x -> Left ("Unable to parse BasicChartSeriesType from: " <> x)--instance ToHttpApiData BasicChartSeriesType where-    toQueryParam = \case-        BCSTBasicChartTypeUnspecified -> "BASIC_CHART_TYPE_UNSPECIFIED"-        BCSTBar -> "BAR"-        BCSTLine -> "LINE"-        BCSTArea -> "AREA"-        BCSTColumn -> "COLUMN"-        BCSTScatter -> "SCATTER"-        BCSTCombo -> "COMBO"--instance FromJSON BasicChartSeriesType where-    parseJSON = parseJSONText "BasicChartSeriesType"--instance ToJSON BasicChartSeriesType where-    toJSON = toJSONText---- | Determines how the charts will use hidden rows or columns.-data ChartSpecHiddenDimensionStrategy-    = ChartHiddenDimensionStrategyUnspecified-      -- ^ @CHART_HIDDEN_DIMENSION_STRATEGY_UNSPECIFIED@-      -- Default value, do not use.-    | SkipHiddenRowsAndColumns-      -- ^ @SKIP_HIDDEN_ROWS_AND_COLUMNS@-      -- Charts will skip hidden rows and columns.-    | SkipHiddenRows-      -- ^ @SKIP_HIDDEN_ROWS@-      -- Charts will skip hidden rows only.-    | SkipHiddenColumns-      -- ^ @SKIP_HIDDEN_COLUMNS@-      -- Charts will skip hidden columns only.-    | ShowAll-      -- ^ @SHOW_ALL@-      -- Charts will not skip any hidden rows or columns.-      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)--instance Hashable ChartSpecHiddenDimensionStrategy--instance FromHttpApiData ChartSpecHiddenDimensionStrategy where-    parseQueryParam = \case-        "CHART_HIDDEN_DIMENSION_STRATEGY_UNSPECIFIED" -> Right ChartHiddenDimensionStrategyUnspecified-        "SKIP_HIDDEN_ROWS_AND_COLUMNS" -> Right SkipHiddenRowsAndColumns-        "SKIP_HIDDEN_ROWS" -> Right SkipHiddenRows-        "SKIP_HIDDEN_COLUMNS" -> Right SkipHiddenColumns-        "SHOW_ALL" -> Right ShowAll-        x -> Left ("Unable to parse ChartSpecHiddenDimensionStrategy from: " <> x)--instance ToHttpApiData ChartSpecHiddenDimensionStrategy where-    toQueryParam = \case-        ChartHiddenDimensionStrategyUnspecified -> "CHART_HIDDEN_DIMENSION_STRATEGY_UNSPECIFIED"-        SkipHiddenRowsAndColumns -> "SKIP_HIDDEN_ROWS_AND_COLUMNS"-        SkipHiddenRows -> "SKIP_HIDDEN_ROWS"-        SkipHiddenColumns -> "SKIP_HIDDEN_COLUMNS"-        ShowAll -> "SHOW_ALL"--instance FromJSON ChartSpecHiddenDimensionStrategy where-    parseJSON = parseJSONText "ChartSpecHiddenDimensionStrategy"--instance ToJSON ChartSpecHiddenDimensionStrategy where-    toJSON = toJSONText---- | The style of the border.-data BOrderStyle-    = StyleUnspecified-      -- ^ @STYLE_UNSPECIFIED@-      -- The style is not specified. Do not use this.-    | Dotted-      -- ^ @DOTTED@-      -- The border is dotted.-    | Dashed-      -- ^ @DASHED@-      -- The border is dashed.-    | Solid-      -- ^ @SOLID@-      -- The border is a thin solid line.-    | SolidMedium-      -- ^ @SOLID_MEDIUM@-      -- The border is a medium solid line.-    | SolidThick-      -- ^ @SOLID_THICK@-      -- The border is a thick solid line.-    | None-      -- ^ @NONE@-      -- No border. Used only when updating a border in order to erase it.-    | Double-      -- ^ @DOUBLE@-      -- The border is two solid lines.-      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)--instance Hashable BOrderStyle--instance FromHttpApiData BOrderStyle where-    parseQueryParam = \case-        "STYLE_UNSPECIFIED" -> Right StyleUnspecified-        "DOTTED" -> Right Dotted-        "DASHED" -> Right Dashed-        "SOLID" -> Right Solid-        "SOLID_MEDIUM" -> Right SolidMedium-        "SOLID_THICK" -> Right SolidThick-        "NONE" -> Right None-        "DOUBLE" -> Right Double-        x -> Left ("Unable to parse BOrderStyle from: " <> x)--instance ToHttpApiData BOrderStyle where-    toQueryParam = \case-        StyleUnspecified -> "STYLE_UNSPECIFIED"-        Dotted -> "DOTTED"-        Dashed -> "DASHED"-        Solid -> "SOLID"-        SolidMedium -> "SOLID_MEDIUM"-        SolidThick -> "SOLID_THICK"-        None -> "NONE"-        Double -> "DOUBLE"--instance FromJSON BOrderStyle where-    parseJSON = parseJSONText "BOrderStyle"--instance ToJSON BOrderStyle where-    toJSON = toJSONText---- | What kind of data to paste. All the source data will be cut, regardless--- of what is pasted.-data CutPasteRequestPasteType-    = CPRPTPasteNormal-      -- ^ @PASTE_NORMAL@-      -- Paste values, formulas, formats, and merges.-    | CPRPTPasteValues-      -- ^ @PASTE_VALUES@-      -- Paste the values ONLY without formats, formulas, or merges.-    | CPRPTPasteFormat-      -- ^ @PASTE_FORMAT@-      -- Paste the format and data validation only.-    | CPRPTPasteNoBOrders-      -- ^ @PASTE_NO_BORDERS@-      -- Like PASTE_NORMAL but without borders.-    | CPRPTPasteFormula-      -- ^ @PASTE_FORMULA@-      -- Paste the formulas only.-    | CPRPTPasteDataValidation-      -- ^ @PASTE_DATA_VALIDATION@-      -- Paste the data validation only.-    | CPRPTPasteConditionalFormatting-      -- ^ @PASTE_CONDITIONAL_FORMATTING@-      -- Paste the conditional formatting rules only.-      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)--instance Hashable CutPasteRequestPasteType--instance FromHttpApiData CutPasteRequestPasteType where-    parseQueryParam = \case-        "PASTE_NORMAL" -> Right CPRPTPasteNormal-        "PASTE_VALUES" -> Right CPRPTPasteValues-        "PASTE_FORMAT" -> Right CPRPTPasteFormat-        "PASTE_NO_BORDERS" -> Right CPRPTPasteNoBOrders-        "PASTE_FORMULA" -> Right CPRPTPasteFormula-        "PASTE_DATA_VALIDATION" -> Right CPRPTPasteDataValidation-        "PASTE_CONDITIONAL_FORMATTING" -> Right CPRPTPasteConditionalFormatting-        x -> Left ("Unable to parse CutPasteRequestPasteType from: " <> x)--instance ToHttpApiData CutPasteRequestPasteType where-    toQueryParam = \case-        CPRPTPasteNormal -> "PASTE_NORMAL"-        CPRPTPasteValues -> "PASTE_VALUES"-        CPRPTPasteFormat -> "PASTE_FORMAT"-        CPRPTPasteNoBOrders -> "PASTE_NO_BORDERS"-        CPRPTPasteFormula -> "PASTE_FORMULA"-        CPRPTPasteDataValidation -> "PASTE_DATA_VALIDATION"-        CPRPTPasteConditionalFormatting -> "PASTE_CONDITIONAL_FORMATTING"--instance FromJSON CutPasteRequestPasteType where-    parseJSON = parseJSONText "CutPasteRequestPasteType"--instance ToJSON CutPasteRequestPasteType where-    toJSON = toJSONText---- | The position of the chart legend.-data BasicChartSpecLegendPosition-    = BCSLPBasicChartLegendPositionUnspecified-      -- ^ @BASIC_CHART_LEGEND_POSITION_UNSPECIFIED@-      -- Default value, do not use.-    | BCSLPBottomLegend-      -- ^ @BOTTOM_LEGEND@-      -- The legend is rendered on the bottom of the chart.-    | BCSLPLeftLegend-      -- ^ @LEFT_LEGEND@-      -- The legend is rendered on the left of the chart.-    | BCSLPRightLegend-      -- ^ @RIGHT_LEGEND@-      -- The legend is rendered on the right of the chart.-    | BCSLPTopLegend-      -- ^ @TOP_LEGEND@-      -- The legend is rendered on the top of the chart.-    | BCSLPNoLegend-      -- ^ @NO_LEGEND@-      -- No legend is rendered.-      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)--instance Hashable BasicChartSpecLegendPosition--instance FromHttpApiData BasicChartSpecLegendPosition where-    parseQueryParam = \case-        "BASIC_CHART_LEGEND_POSITION_UNSPECIFIED" -> Right BCSLPBasicChartLegendPositionUnspecified-        "BOTTOM_LEGEND" -> Right BCSLPBottomLegend-        "LEFT_LEGEND" -> Right BCSLPLeftLegend-        "RIGHT_LEGEND" -> Right BCSLPRightLegend-        "TOP_LEGEND" -> Right BCSLPTopLegend-        "NO_LEGEND" -> Right BCSLPNoLegend-        x -> Left ("Unable to parse BasicChartSpecLegendPosition from: " <> x)--instance ToHttpApiData BasicChartSpecLegendPosition where-    toQueryParam = \case-        BCSLPBasicChartLegendPositionUnspecified -> "BASIC_CHART_LEGEND_POSITION_UNSPECIFIED"-        BCSLPBottomLegend -> "BOTTOM_LEGEND"-        BCSLPLeftLegend -> "LEFT_LEGEND"-        BCSLPRightLegend -> "RIGHT_LEGEND"-        BCSLPTopLegend -> "TOP_LEGEND"-        BCSLPNoLegend -> "NO_LEGEND"--instance FromJSON BasicChartSpecLegendPosition where-    parseJSON = parseJSONText "BasicChartSpecLegendPosition"--instance ToJSON BasicChartSpecLegendPosition where-    toJSON = toJSONText---- | The type of error.-data ErrorValueType-    = ErrorTypeUnspecified-      -- ^ @ERROR_TYPE_UNSPECIFIED@-      -- The default error type, do not use this.-    | Error'-      -- ^ @ERROR@-      -- Corresponds to the \`#ERROR!\` error.-    | NullValue-      -- ^ @NULL_VALUE@-      -- Corresponds to the \`#NULL!\` error.-    | DivideByZero-      -- ^ @DIVIDE_BY_ZERO@-      -- Corresponds to the \`#DIV\/0\` error.-    | Value-      -- ^ @VALUE@-      -- Corresponds to the \`#VALUE!\` error.-    | Ref-      -- ^ @REF@-      -- Corresponds to the \`#REF!\` error.-    | Name-      -- ^ @NAME@-      -- Corresponds to the \`#NAME?\` error.-    | Num-      -- ^ @NUM@-      -- Corresponds to the \`#NUM\`! error.-    | NA-      -- ^ @N_A@-      -- Corresponds to the \`#N\/A\` error.-    | Loading-      -- ^ @LOADING@-      -- Corresponds to the \`Loading...\` state.-      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)--instance Hashable ErrorValueType--instance FromHttpApiData ErrorValueType where-    parseQueryParam = \case-        "ERROR_TYPE_UNSPECIFIED" -> Right ErrorTypeUnspecified-        "ERROR" -> Right Error'-        "NULL_VALUE" -> Right NullValue-        "DIVIDE_BY_ZERO" -> Right DivideByZero-        "VALUE" -> Right Value-        "REF" -> Right Ref-        "NAME" -> Right Name-        "NUM" -> Right Num-        "N_A" -> Right NA-        "LOADING" -> Right Loading-        x -> Left ("Unable to parse ErrorValueType from: " <> x)--instance ToHttpApiData ErrorValueType where-    toQueryParam = \case-        ErrorTypeUnspecified -> "ERROR_TYPE_UNSPECIFIED"-        Error' -> "ERROR"-        NullValue -> "NULL_VALUE"-        DivideByZero -> "DIVIDE_BY_ZERO"-        Value -> "VALUE"-        Ref -> "REF"-        Name -> "NAME"-        Num -> "NUM"-        NA -> "N_A"-        Loading -> "LOADING"--instance FromJSON ErrorValueType where-    parseJSON = parseJSONText "ErrorValueType"--instance ToJSON ErrorValueType where-    toJSON = toJSONText---- | Whether values should be listed horizontally (as columns) or vertically--- (as rows).-data PivotTableValueLayout-    = Horizontal-      -- ^ @HORIZONTAL@-      -- Values are laid out horizontally (as columns).-    | Vertical-      -- ^ @VERTICAL@-      -- Values are laid out vertically (as rows).-      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)--instance Hashable PivotTableValueLayout--instance FromHttpApiData PivotTableValueLayout where-    parseQueryParam = \case-        "HORIZONTAL" -> Right Horizontal-        "VERTICAL" -> Right Vertical-        x -> Left ("Unable to parse PivotTableValueLayout from: " <> x)--instance ToHttpApiData PivotTableValueLayout where-    toQueryParam = \case-        Horizontal -> "HORIZONTAL"-        Vertical -> "VERTICAL"--instance FromJSON PivotTableValueLayout where-    parseJSON = parseJSONText "PivotTableValueLayout"--instance ToJSON PivotTableValueLayout where-    toJSON = toJSONText---- | How the value should be interpreted.-data InterpolationPointType-    = IPTInterpolationPointTypeUnspecified-      -- ^ @INTERPOLATION_POINT_TYPE_UNSPECIFIED@-      -- The default value, do not use.-    | IPTMin-      -- ^ @MIN@-      -- The interpolation point will use the minimum value in the cells over the-      -- range of the conditional format.-    | IPTMax-      -- ^ @MAX@-      -- The interpolation point will use the maximum value in the cells over the-      -- range of the conditional format.-    | IPTNumber-      -- ^ @NUMBER@-      -- The interpolation point will use exactly the value in-      -- InterpolationPoint.value.-    | IPTPercent-      -- ^ @PERCENT@-      -- The interpolation point will be the given percentage over all the cells-      -- in the range of the conditional format. This is equivalent to NUMBER if-      -- the value was: \`=(MAX(FLATTEN(range)) * (value \/ 100)) +-      -- (MIN(FLATTEN(range)) * (1 - (value \/ 100)))\` (where errors in the-      -- range are ignored when flattening).-    | IPTPercentile-      -- ^ @PERCENTILE@-      -- The interpolation point will be the given percentile over all the cells-      -- in the range of the conditional format. This is equivalent to NUMBER if-      -- the value was: \`=PERCENTILE(FLATTEN(range), value \/ 100)\` (where-      -- errors in the range are ignored when flattening).-      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)--instance Hashable InterpolationPointType--instance FromHttpApiData InterpolationPointType where-    parseQueryParam = \case-        "INTERPOLATION_POINT_TYPE_UNSPECIFIED" -> Right IPTInterpolationPointTypeUnspecified-        "MIN" -> Right IPTMin-        "MAX" -> Right IPTMax-        "NUMBER" -> Right IPTNumber-        "PERCENT" -> Right IPTPercent-        "PERCENTILE" -> Right IPTPercentile-        x -> Left ("Unable to parse InterpolationPointType from: " <> x)--instance ToHttpApiData InterpolationPointType where-    toQueryParam = \case-        IPTInterpolationPointTypeUnspecified -> "INTERPOLATION_POINT_TYPE_UNSPECIFIED"-        IPTMin -> "MIN"-        IPTMax -> "MAX"-        IPTNumber -> "NUMBER"-        IPTPercent -> "PERCENT"-        IPTPercentile -> "PERCENTILE"--instance FromJSON InterpolationPointType where-    parseJSON = parseJSONText "InterpolationPointType"--instance ToJSON InterpolationPointType where-    toJSON = toJSONText---- | The delimiter type to use.-data TextToColumnsRequestDelimiterType-    = TTCRDTDelimiterTypeUnspecified-      -- ^ @DELIMITER_TYPE_UNSPECIFIED@-      -- Default value. This value must not be used.-    | TTCRDTComma-      -- ^ @COMMA@-      -- \",\"-    | TTCRDTSemicolon-      -- ^ @SEMICOLON@-      -- \";\"-    | TTCRDTPeriod-      -- ^ @PERIOD@-      -- \".\"-    | TTCRDTSpace-      -- ^ @SPACE@-      -- \" \"-    | TTCRDTCustom-      -- ^ @CUSTOM@-      -- A custom value as defined in delimiter.-      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)--instance Hashable TextToColumnsRequestDelimiterType--instance FromHttpApiData TextToColumnsRequestDelimiterType where-    parseQueryParam = \case-        "DELIMITER_TYPE_UNSPECIFIED" -> Right TTCRDTDelimiterTypeUnspecified-        "COMMA" -> Right TTCRDTComma-        "SEMICOLON" -> Right TTCRDTSemicolon-        "PERIOD" -> Right TTCRDTPeriod-        "SPACE" -> Right TTCRDTSpace-        "CUSTOM" -> Right TTCRDTCustom-        x -> Left ("Unable to parse TextToColumnsRequestDelimiterType from: " <> x)--instance ToHttpApiData TextToColumnsRequestDelimiterType where-    toQueryParam = \case-        TTCRDTDelimiterTypeUnspecified -> "DELIMITER_TYPE_UNSPECIFIED"-        TTCRDTComma -> "COMMA"-        TTCRDTSemicolon -> "SEMICOLON"-        TTCRDTPeriod -> "PERIOD"-        TTCRDTSpace -> "SPACE"-        TTCRDTCustom -> "CUSTOM"+import           Network.Google.Prelude hiding (Bytes)++-- | The stacked type for charts that support vertical stacking. Applies to+-- Area, Bar, Column, Combo, and Stepped Area charts.+data BasicChartSpecStackedType+    = BasicChartStackedTypeUnspecified+      -- ^ @BASIC_CHART_STACKED_TYPE_UNSPECIFIED@+      -- Default value, do not use.+    | NotStacked+      -- ^ @NOT_STACKED@+      -- Series are not stacked.+    | Stacked+      -- ^ @STACKED@+      -- Series values are stacked, each value is rendered vertically beginning+      -- from the top of the value below it.+    | PercentStacked+      -- ^ @PERCENT_STACKED@+      -- Vertical stacks are stretched to reach the top of the chart, with values+      -- laid out as percentages of each other.+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)++instance Hashable BasicChartSpecStackedType++instance FromHttpApiData BasicChartSpecStackedType where+    parseQueryParam = \case+        "BASIC_CHART_STACKED_TYPE_UNSPECIFIED" -> Right BasicChartStackedTypeUnspecified+        "NOT_STACKED" -> Right NotStacked+        "STACKED" -> Right Stacked+        "PERCENT_STACKED" -> Right PercentStacked+        x -> Left ("Unable to parse BasicChartSpecStackedType from: " <> x)++instance ToHttpApiData BasicChartSpecStackedType where+    toQueryParam = \case+        BasicChartStackedTypeUnspecified -> "BASIC_CHART_STACKED_TYPE_UNSPECIFIED"+        NotStacked -> "NOT_STACKED"+        Stacked -> "STACKED"+        PercentStacked -> "PERCENT_STACKED"++instance FromJSON BasicChartSpecStackedType where+    parseJSON = parseJSONText "BasicChartSpecStackedType"++instance ToJSON BasicChartSpecStackedType where+    toJSON = toJSONText++-- | What kind of data to paste.+data CopyPasteRequestPasteType+    = PasteNormal+      -- ^ @PASTE_NORMAL@+      -- Paste values, formulas, formats, and merges.+    | PasteValues+      -- ^ @PASTE_VALUES@+      -- Paste the values ONLY without formats, formulas, or merges.+    | PasteFormat+      -- ^ @PASTE_FORMAT@+      -- Paste the format and data validation only.+    | PasteNoBOrders+      -- ^ @PASTE_NO_BORDERS@+      -- Like PASTE_NORMAL but without borders.+    | PasteFormula+      -- ^ @PASTE_FORMULA@+      -- Paste the formulas only.+    | PasteDataValidation+      -- ^ @PASTE_DATA_VALIDATION@+      -- Paste the data validation only.+    | PasteConditionalFormatting+      -- ^ @PASTE_CONDITIONAL_FORMATTING@+      -- Paste the conditional formatting rules only.+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)++instance Hashable CopyPasteRequestPasteType++instance FromHttpApiData CopyPasteRequestPasteType where+    parseQueryParam = \case+        "PASTE_NORMAL" -> Right PasteNormal+        "PASTE_VALUES" -> Right PasteValues+        "PASTE_FORMAT" -> Right PasteFormat+        "PASTE_NO_BORDERS" -> Right PasteNoBOrders+        "PASTE_FORMULA" -> Right PasteFormula+        "PASTE_DATA_VALIDATION" -> Right PasteDataValidation+        "PASTE_CONDITIONAL_FORMATTING" -> Right PasteConditionalFormatting+        x -> Left ("Unable to parse CopyPasteRequestPasteType from: " <> x)++instance ToHttpApiData CopyPasteRequestPasteType where+    toQueryParam = \case+        PasteNormal -> "PASTE_NORMAL"+        PasteValues -> "PASTE_VALUES"+        PasteFormat -> "PASTE_FORMAT"+        PasteNoBOrders -> "PASTE_NO_BORDERS"+        PasteFormula -> "PASTE_FORMULA"+        PasteDataValidation -> "PASTE_DATA_VALIDATION"+        PasteConditionalFormatting -> "PASTE_CONDITIONAL_FORMATTING"++instance FromJSON CopyPasteRequestPasteType where+    parseJSON = parseJSONText "CopyPasteRequestPasteType"++instance ToJSON CopyPasteRequestPasteType where+    toJSON = toJSONText++-- | 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.+data DeveloperMetadataLookupLocationMatchingStrategy+    = DeveloperMetadataLocationMatchingStrategyUnspecified+      -- ^ @DEVELOPER_METADATA_LOCATION_MATCHING_STRATEGY_UNSPECIFIED@+      -- Default value. This value must not be used.+    | ExactLocation+      -- ^ @EXACT_LOCATION@+      -- Indicates that a specified location should be matched exactly. For+      -- example, if row three were specified as a location this matching+      -- strategy would only match developer metadata also associated on row+      -- three. Metadata associated on other locations would not be considered.+    | IntersectingLocation+      -- ^ @INTERSECTING_LOCATION@+      -- Indicates that a specified location should match that exact location as+      -- well as any intersecting locations. For example, if row three were+      -- specified as a location this matching strategy would match developer+      -- metadata associated on row three as well as metadata associated on+      -- locations that intersect row three. If, for instance, there was+      -- developer metadata associated on column B, this matching strategy would+      -- also match that location because column B intersects row three.+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)++instance Hashable DeveloperMetadataLookupLocationMatchingStrategy++instance FromHttpApiData DeveloperMetadataLookupLocationMatchingStrategy where+    parseQueryParam = \case+        "DEVELOPER_METADATA_LOCATION_MATCHING_STRATEGY_UNSPECIFIED" -> Right DeveloperMetadataLocationMatchingStrategyUnspecified+        "EXACT_LOCATION" -> Right ExactLocation+        "INTERSECTING_LOCATION" -> Right IntersectingLocation+        x -> Left ("Unable to parse DeveloperMetadataLookupLocationMatchingStrategy from: " <> x)++instance ToHttpApiData DeveloperMetadataLookupLocationMatchingStrategy where+    toQueryParam = \case+        DeveloperMetadataLocationMatchingStrategyUnspecified -> "DEVELOPER_METADATA_LOCATION_MATCHING_STRATEGY_UNSPECIFIED"+        ExactLocation -> "EXACT_LOCATION"+        IntersectingLocation -> "INTERSECTING_LOCATION"++instance FromJSON DeveloperMetadataLookupLocationMatchingStrategy where+    parseJSON = parseJSONText "DeveloperMetadataLookupLocationMatchingStrategy"++instance ToJSON DeveloperMetadataLookupLocationMatchingStrategy where+    toJSON = toJSONText++-- | 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.+data BatchUpdateValuesByDataFilterRequestResponseDateTimeRenderOption+    = SerialNumber+      -- ^ @SERIAL_NUMBER@+      -- Instructs date, time, datetime, and duration fields to be output as+      -- doubles in \"serial number\" format, as popularized by Lotus 1-2-3. The+      -- whole number portion of the value (left of the decimal) counts the days+      -- since December 30th 1899. The fractional portion (right of the decimal)+      -- counts the time as a fraction of the day. For example, January 1st 1900+      -- at noon would be 2.5, 2 because it\'s 2 days after December 30st 1899,+      -- and .5 because noon is half a day. February 1st 1900 at 3pm would be+      -- 33.625. This correctly treats the year 1900 as not a leap year.+    | FormattedString+      -- ^ @FORMATTED_STRING@+      -- Instructs date, time, datetime, and duration fields to be output as+      -- strings in their given number format (which is dependent on the+      -- spreadsheet locale).+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)++instance Hashable BatchUpdateValuesByDataFilterRequestResponseDateTimeRenderOption++instance FromHttpApiData BatchUpdateValuesByDataFilterRequestResponseDateTimeRenderOption where+    parseQueryParam = \case+        "SERIAL_NUMBER" -> Right SerialNumber+        "FORMATTED_STRING" -> Right FormattedString+        x -> Left ("Unable to parse BatchUpdateValuesByDataFilterRequestResponseDateTimeRenderOption from: " <> x)++instance ToHttpApiData BatchUpdateValuesByDataFilterRequestResponseDateTimeRenderOption where+    toQueryParam = \case+        SerialNumber -> "SERIAL_NUMBER"+        FormattedString -> "FORMATTED_STRING"++instance FromJSON BatchUpdateValuesByDataFilterRequestResponseDateTimeRenderOption where+    parseJSON = parseJSONText "BatchUpdateValuesByDataFilterRequestResponseDateTimeRenderOption"++instance ToJSON BatchUpdateValuesByDataFilterRequestResponseDateTimeRenderOption where+    toJSON = toJSONText++-- | The position of this axis.+data BasicChartAxisPosition+    = BasicChartAxisPositionUnspecified+      -- ^ @BASIC_CHART_AXIS_POSITION_UNSPECIFIED@+      -- Default value, do not use.+    | BottomAxis+      -- ^ @BOTTOM_AXIS@+      -- The axis rendered at the bottom of a chart. For most charts, this is the+      -- standard major axis. For bar charts, this is a minor axis.+    | LeftAxis+      -- ^ @LEFT_AXIS@+      -- The axis rendered at the left of a chart. For most charts, this is a+      -- minor axis. For bar charts, this is the standard major axis.+    | RightAxis+      -- ^ @RIGHT_AXIS@+      -- The axis rendered at the right of a chart. For most charts, this is a+      -- minor axis. For bar charts, this is an unusual major axis.+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)++instance Hashable BasicChartAxisPosition++instance FromHttpApiData BasicChartAxisPosition where+    parseQueryParam = \case+        "BASIC_CHART_AXIS_POSITION_UNSPECIFIED" -> Right BasicChartAxisPositionUnspecified+        "BOTTOM_AXIS" -> Right BottomAxis+        "LEFT_AXIS" -> Right LeftAxis+        "RIGHT_AXIS" -> Right RightAxis+        x -> Left ("Unable to parse BasicChartAxisPosition from: " <> x)++instance ToHttpApiData BasicChartAxisPosition where+    toQueryParam = \case+        BasicChartAxisPositionUnspecified -> "BASIC_CHART_AXIS_POSITION_UNSPECIFIED"+        BottomAxis -> "BOTTOM_AXIS"+        LeftAxis -> "LEFT_AXIS"+        RightAxis -> "RIGHT_AXIS"++instance FromJSON BasicChartAxisPosition where+    parseJSON = parseJSONText "BasicChartAxisPosition"++instance ToJSON BasicChartAxisPosition where+    toJSON = toJSONText++-- | The 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.+data DeleteRangeRequestShiftDimension+    = DimensionUnspecified+      -- ^ @DIMENSION_UNSPECIFIED@+      -- The default value, do not use.+    | Rows+      -- ^ @ROWS@+      -- Operates on the rows of a sheet.+    | Columns+      -- ^ @COLUMNS@+      -- Operates on the columns of a sheet.+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)++instance Hashable DeleteRangeRequestShiftDimension++instance FromHttpApiData DeleteRangeRequestShiftDimension where+    parseQueryParam = \case+        "DIMENSION_UNSPECIFIED" -> Right DimensionUnspecified+        "ROWS" -> Right Rows+        "COLUMNS" -> Right Columns+        x -> Left ("Unable to parse DeleteRangeRequestShiftDimension from: " <> x)++instance ToHttpApiData DeleteRangeRequestShiftDimension where+    toQueryParam = \case+        DimensionUnspecified -> "DIMENSION_UNSPECIFIED"+        Rows -> "ROWS"+        Columns -> "COLUMNS"++instance FromJSON DeleteRangeRequestShiftDimension where+    parseJSON = parseJSONText "DeleteRangeRequestShiftDimension"++instance ToJSON DeleteRangeRequestShiftDimension where+    toJSON = toJSONText++-- | The minor axis that will specify the range of values for this series.+-- For example, if charting stocks over time, the \"Volume\" series may+-- want to be pinned to the right with the prices pinned to the left,+-- because the scale of trading volume is different than the scale of+-- prices. It is an error to specify an axis that isn\'t a valid minor axis+-- for the chart\'s type.+data BasicChartSeriesTargetAxis+    = BCSTABasicChartAxisPositionUnspecified+      -- ^ @BASIC_CHART_AXIS_POSITION_UNSPECIFIED@+      -- Default value, do not use.+    | BCSTABottomAxis+      -- ^ @BOTTOM_AXIS@+      -- The axis rendered at the bottom of a chart. For most charts, this is the+      -- standard major axis. For bar charts, this is a minor axis.+    | BCSTALeftAxis+      -- ^ @LEFT_AXIS@+      -- The axis rendered at the left of a chart. For most charts, this is a+      -- minor axis. For bar charts, this is the standard major axis.+    | BCSTARightAxis+      -- ^ @RIGHT_AXIS@+      -- The axis rendered at the right of a chart. For most charts, this is a+      -- minor axis. For bar charts, this is an unusual major axis.+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)++instance Hashable BasicChartSeriesTargetAxis++instance FromHttpApiData BasicChartSeriesTargetAxis where+    parseQueryParam = \case+        "BASIC_CHART_AXIS_POSITION_UNSPECIFIED" -> Right BCSTABasicChartAxisPositionUnspecified+        "BOTTOM_AXIS" -> Right BCSTABottomAxis+        "LEFT_AXIS" -> Right BCSTALeftAxis+        "RIGHT_AXIS" -> Right BCSTARightAxis+        x -> Left ("Unable to parse BasicChartSeriesTargetAxis from: " <> x)++instance ToHttpApiData BasicChartSeriesTargetAxis where+    toQueryParam = \case+        BCSTABasicChartAxisPositionUnspecified -> "BASIC_CHART_AXIS_POSITION_UNSPECIFIED"+        BCSTABottomAxis -> "BOTTOM_AXIS"+        BCSTALeftAxis -> "LEFT_AXIS"+        BCSTARightAxis -> "RIGHT_AXIS"++instance FromJSON BasicChartSeriesTargetAxis where+    parseJSON = parseJSONText "BasicChartSeriesTargetAxis"++instance ToJSON BasicChartSeriesTargetAxis where+    toJSON = toJSONText++-- | The major dimension of the values.+data DataFilterValueRangeMajorDimension+    = DFVRMDDimensionUnspecified+      -- ^ @DIMENSION_UNSPECIFIED@+      -- The default value, do not use.+    | DFVRMDRows+      -- ^ @ROWS@+      -- Operates on the rows of a sheet.+    | DFVRMDColumns+      -- ^ @COLUMNS@+      -- Operates on the columns of a sheet.+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)++instance Hashable DataFilterValueRangeMajorDimension++instance FromHttpApiData DataFilterValueRangeMajorDimension where+    parseQueryParam = \case+        "DIMENSION_UNSPECIFIED" -> Right DFVRMDDimensionUnspecified+        "ROWS" -> Right DFVRMDRows+        "COLUMNS" -> Right DFVRMDColumns+        x -> Left ("Unable to parse DataFilterValueRangeMajorDimension from: " <> x)++instance ToHttpApiData DataFilterValueRangeMajorDimension where+    toQueryParam = \case+        DFVRMDDimensionUnspecified -> "DIMENSION_UNSPECIFIED"+        DFVRMDRows -> "ROWS"+        DFVRMDColumns -> "COLUMNS"++instance FromJSON DataFilterValueRangeMajorDimension where+    parseJSON = parseJSONText "DataFilterValueRangeMajorDimension"++instance ToJSON DataFilterValueRangeMajorDimension where+    toJSON = toJSONText++-- | Where the legend of the chart should be drawn.+data BubbleChartSpecLegendPosition+    = BubbleChartLegendPositionUnspecified+      -- ^ @BUBBLE_CHART_LEGEND_POSITION_UNSPECIFIED@+      -- Default value, do not use.+    | BottomLegend+      -- ^ @BOTTOM_LEGEND@+      -- The legend is rendered on the bottom of the chart.+    | LeftLegend+      -- ^ @LEFT_LEGEND@+      -- The legend is rendered on the left of the chart.+    | RightLegend+      -- ^ @RIGHT_LEGEND@+      -- The legend is rendered on the right of the chart.+    | TopLegend+      -- ^ @TOP_LEGEND@+      -- The legend is rendered on the top of the chart.+    | NoLegend+      -- ^ @NO_LEGEND@+      -- No legend is rendered.+    | InsideLegend+      -- ^ @INSIDE_LEGEND@+      -- The legend is rendered inside the chart area.+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)++instance Hashable BubbleChartSpecLegendPosition++instance FromHttpApiData BubbleChartSpecLegendPosition where+    parseQueryParam = \case+        "BUBBLE_CHART_LEGEND_POSITION_UNSPECIFIED" -> Right BubbleChartLegendPositionUnspecified+        "BOTTOM_LEGEND" -> Right BottomLegend+        "LEFT_LEGEND" -> Right LeftLegend+        "RIGHT_LEGEND" -> Right RightLegend+        "TOP_LEGEND" -> Right TopLegend+        "NO_LEGEND" -> Right NoLegend+        "INSIDE_LEGEND" -> Right InsideLegend+        x -> Left ("Unable to parse BubbleChartSpecLegendPosition from: " <> x)++instance ToHttpApiData BubbleChartSpecLegendPosition where+    toQueryParam = \case+        BubbleChartLegendPositionUnspecified -> "BUBBLE_CHART_LEGEND_POSITION_UNSPECIFIED"+        BottomLegend -> "BOTTOM_LEGEND"+        LeftLegend -> "LEFT_LEGEND"+        RightLegend -> "RIGHT_LEGEND"+        TopLegend -> "TOP_LEGEND"+        NoLegend -> "NO_LEGEND"+        InsideLegend -> "INSIDE_LEGEND"++instance FromJSON BubbleChartSpecLegendPosition where+    parseJSON = parseJSONText "BubbleChartSpecLegendPosition"++instance ToJSON BubbleChartSpecLegendPosition where+    toJSON = toJSONText++-- | 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.+data BatchUpdateValuesRequestResponseDateTimeRenderOption+    = BUVRRDTROSerialNumber+      -- ^ @SERIAL_NUMBER@+      -- Instructs date, time, datetime, and duration fields to be output as+      -- doubles in \"serial number\" format, as popularized by Lotus 1-2-3. The+      -- whole number portion of the value (left of the decimal) counts the days+      -- since December 30th 1899. The fractional portion (right of the decimal)+      -- counts the time as a fraction of the day. For example, January 1st 1900+      -- at noon would be 2.5, 2 because it\'s 2 days after December 30st 1899,+      -- and .5 because noon is half a day. February 1st 1900 at 3pm would be+      -- 33.625. This correctly treats the year 1900 as not a leap year.+    | BUVRRDTROFormattedString+      -- ^ @FORMATTED_STRING@+      -- Instructs date, time, datetime, and duration fields to be output as+      -- strings in their given number format (which is dependent on the+      -- spreadsheet locale).+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)++instance Hashable BatchUpdateValuesRequestResponseDateTimeRenderOption++instance FromHttpApiData BatchUpdateValuesRequestResponseDateTimeRenderOption where+    parseQueryParam = \case+        "SERIAL_NUMBER" -> Right BUVRRDTROSerialNumber+        "FORMATTED_STRING" -> Right BUVRRDTROFormattedString+        x -> Left ("Unable to parse BatchUpdateValuesRequestResponseDateTimeRenderOption from: " <> x)++instance ToHttpApiData BatchUpdateValuesRequestResponseDateTimeRenderOption where+    toQueryParam = \case+        BUVRRDTROSerialNumber -> "SERIAL_NUMBER"+        BUVRRDTROFormattedString -> "FORMATTED_STRING"++instance FromJSON BatchUpdateValuesRequestResponseDateTimeRenderOption where+    parseJSON = parseJSONText "BatchUpdateValuesRequestResponseDateTimeRenderOption"++instance ToJSON BatchUpdateValuesRequestResponseDateTimeRenderOption where+    toJSON = toJSONText++-- | Whether rows or columns should be appended.+data AppendDimensionRequestDimension+    = ADRDDimensionUnspecified+      -- ^ @DIMENSION_UNSPECIFIED@+      -- The default value, do not use.+    | ADRDRows+      -- ^ @ROWS@+      -- Operates on the rows of a sheet.+    | ADRDColumns+      -- ^ @COLUMNS@+      -- Operates on the columns of a sheet.+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)++instance Hashable AppendDimensionRequestDimension++instance FromHttpApiData AppendDimensionRequestDimension where+    parseQueryParam = \case+        "DIMENSION_UNSPECIFIED" -> Right ADRDDimensionUnspecified+        "ROWS" -> Right ADRDRows+        "COLUMNS" -> Right ADRDColumns+        x -> Left ("Unable to parse AppendDimensionRequestDimension from: " <> x)++instance ToHttpApiData AppendDimensionRequestDimension where+    toQueryParam = \case+        ADRDDimensionUnspecified -> "DIMENSION_UNSPECIFIED"+        ADRDRows -> "ROWS"+        ADRDColumns -> "COLUMNS"++instance FromJSON AppendDimensionRequestDimension where+    parseJSON = parseJSONText "AppendDimensionRequestDimension"++instance ToJSON AppendDimensionRequestDimension where+    toJSON = toJSONText++-- | The dimension of the span.+data DimensionRangeDimension+    = DRDDimensionUnspecified+      -- ^ @DIMENSION_UNSPECIFIED@+      -- The default value, do not use.+    | DRDRows+      -- ^ @ROWS@+      -- Operates on the rows of a sheet.+    | DRDColumns+      -- ^ @COLUMNS@+      -- Operates on the columns of a sheet.+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)++instance Hashable DimensionRangeDimension++instance FromHttpApiData DimensionRangeDimension where+    parseQueryParam = \case+        "DIMENSION_UNSPECIFIED" -> Right DRDDimensionUnspecified+        "ROWS" -> Right DRDRows+        "COLUMNS" -> Right DRDColumns+        x -> Left ("Unable to parse DimensionRangeDimension from: " <> x)++instance ToHttpApiData DimensionRangeDimension where+    toQueryParam = \case+        DRDDimensionUnspecified -> "DIMENSION_UNSPECIFIED"+        DRDRows -> "ROWS"+        DRDColumns -> "COLUMNS"++instance FromJSON DimensionRangeDimension where+    parseJSON = parseJSONText "DimensionRangeDimension"++instance ToJSON DimensionRangeDimension where+    toJSON = toJSONText++-- | How values should be represented in the output. The default render+-- option is ValueRenderOption.FORMATTED_VALUE.+data BatchGetValuesByDataFilterRequestValueRenderOption+    = FormattedValue+      -- ^ @FORMATTED_VALUE@+      -- Values will be calculated & formatted in the reply according to the+      -- cell\'s formatting. Formatting is based on the spreadsheet\'s locale,+      -- not the requesting user\'s locale. For example, if \`A1\` is \`1.23\`+      -- and \`A2\` is \`=A1\` and formatted as currency, then \`A2\` would+      -- return \`\"$1.23\"\`.+    | UnformattedValue+      -- ^ @UNFORMATTED_VALUE@+      -- Values will be calculated, but not formatted in the reply. For example,+      -- if \`A1\` is \`1.23\` and \`A2\` is \`=A1\` and formatted as currency,+      -- then \`A2\` would return the number \`1.23\`.+    | Formula+      -- ^ @FORMULA@+      -- Values will not be calculated. The reply will include the formulas. For+      -- example, if \`A1\` is \`1.23\` and \`A2\` is \`=A1\` and formatted as+      -- currency, then A2 would return \`\"=A1\"\`.+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)++instance Hashable BatchGetValuesByDataFilterRequestValueRenderOption++instance FromHttpApiData BatchGetValuesByDataFilterRequestValueRenderOption where+    parseQueryParam = \case+        "FORMATTED_VALUE" -> Right FormattedValue+        "UNFORMATTED_VALUE" -> Right UnformattedValue+        "FORMULA" -> Right Formula+        x -> Left ("Unable to parse BatchGetValuesByDataFilterRequestValueRenderOption from: " <> x)++instance ToHttpApiData BatchGetValuesByDataFilterRequestValueRenderOption where+    toQueryParam = \case+        FormattedValue -> "FORMATTED_VALUE"+        UnformattedValue -> "UNFORMATTED_VALUE"+        Formula -> "FORMULA"++instance FromJSON BatchGetValuesByDataFilterRequestValueRenderOption where+    parseJSON = parseJSONText "BatchGetValuesByDataFilterRequestValueRenderOption"++instance ToJSON BatchGetValuesByDataFilterRequestValueRenderOption where+    toJSON = toJSONText++-- | The dimension that data should be filled into.+data SourceAndDestinationDimension+    = SADDDimensionUnspecified+      -- ^ @DIMENSION_UNSPECIFIED@+      -- The default value, do not use.+    | SADDRows+      -- ^ @ROWS@+      -- Operates on the rows of a sheet.+    | SADDColumns+      -- ^ @COLUMNS@+      -- Operates on the columns of a sheet.+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)++instance Hashable SourceAndDestinationDimension++instance FromHttpApiData SourceAndDestinationDimension where+    parseQueryParam = \case+        "DIMENSION_UNSPECIFIED" -> Right SADDDimensionUnspecified+        "ROWS" -> Right SADDRows+        "COLUMNS" -> Right SADDColumns+        x -> Left ("Unable to parse SourceAndDestinationDimension from: " <> x)++instance ToHttpApiData SourceAndDestinationDimension where+    toQueryParam = \case+        SADDDimensionUnspecified -> "DIMENSION_UNSPECIFIED"+        SADDRows -> "ROWS"+        SADDColumns -> "COLUMNS"++instance FromJSON SourceAndDestinationDimension where+    parseJSON = parseJSONText "SourceAndDestinationDimension"++instance ToJSON SourceAndDestinationDimension where+    toJSON = toJSONText++-- | The wrap strategy for the value in the cell.+data CellFormatWrapStrategy+    = WrapStrategyUnspecified+      -- ^ @WRAP_STRATEGY_UNSPECIFIED@+      -- The default value, do not use.+    | OverflowCell+      -- ^ @OVERFLOW_CELL@+      -- Lines that are longer than the cell width will be written in the next+      -- cell over, so long as that cell is empty. If the next cell over is+      -- non-empty, this behaves the same as CLIP. The text will never wrap to+      -- the next line unless the user manually inserts a new line. Example: |+      -- First sentence. | | Manual newline that is very long. \<- Text continues+      -- into next cell | Next newline. |+    | LegacyWrap+      -- ^ @LEGACY_WRAP@+      -- This wrap strategy represents the old Google Sheets wrap strategy where+      -- words that are longer than a line are clipped rather than broken. This+      -- strategy is not supported on all platforms and is being phased out.+      -- Example: | Cell has a | | loooooooooo| \<- Word is clipped. | word. |+    | Clip+      -- ^ @CLIP@+      -- Lines that are longer than the cell width will be clipped. The text will+      -- never wrap to the next line unless the user manually inserts a new line.+      -- Example: | First sentence. | | Manual newline t| \<- Text is clipped |+      -- Next newline. |+    | Wrap+      -- ^ @WRAP@+      -- Words that are longer than a line are wrapped at the character level+      -- rather than clipped. Example: | Cell has a | | loooooooooo| \<- Word is+      -- broken. | ong word. |+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)++instance Hashable CellFormatWrapStrategy++instance FromHttpApiData CellFormatWrapStrategy where+    parseQueryParam = \case+        "WRAP_STRATEGY_UNSPECIFIED" -> Right WrapStrategyUnspecified+        "OVERFLOW_CELL" -> Right OverflowCell+        "LEGACY_WRAP" -> Right LegacyWrap+        "CLIP" -> Right Clip+        "WRAP" -> Right Wrap+        x -> Left ("Unable to parse CellFormatWrapStrategy from: " <> x)++instance ToHttpApiData CellFormatWrapStrategy where+    toQueryParam = \case+        WrapStrategyUnspecified -> "WRAP_STRATEGY_UNSPECIFIED"+        OverflowCell -> "OVERFLOW_CELL"+        LegacyWrap -> "LEGACY_WRAP"+        Clip -> "CLIP"+        Wrap -> "WRAP"++instance FromJSON CellFormatWrapStrategy where+    parseJSON = parseJSONText "CellFormatWrapStrategy"++instance ToJSON CellFormatWrapStrategy where+    toJSON = toJSONText++-- | How the input data should be interpreted.+data BatchUpdateValuesRequestValueInputOption+    = InputValueOptionUnspecified+      -- ^ @INPUT_VALUE_OPTION_UNSPECIFIED@+      -- Default input value. This value must not be used.+    | Raw+      -- ^ @RAW@+      -- The values the user has entered will not be parsed and will be stored+      -- as-is.+    | UserEntered+      -- ^ @USER_ENTERED@+      -- The values will be parsed as if the user typed them into the UI. Numbers+      -- will stay as numbers, but strings may be converted to numbers, dates,+      -- etc. following the same rules that are applied when entering text into a+      -- cell via the Google Sheets UI.+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)++instance Hashable BatchUpdateValuesRequestValueInputOption++instance FromHttpApiData BatchUpdateValuesRequestValueInputOption where+    parseQueryParam = \case+        "INPUT_VALUE_OPTION_UNSPECIFIED" -> Right InputValueOptionUnspecified+        "RAW" -> Right Raw+        "USER_ENTERED" -> Right UserEntered+        x -> Left ("Unable to parse BatchUpdateValuesRequestValueInputOption from: " <> x)++instance ToHttpApiData BatchUpdateValuesRequestValueInputOption where+    toQueryParam = \case+        InputValueOptionUnspecified -> "INPUT_VALUE_OPTION_UNSPECIFIED"+        Raw -> "RAW"+        UserEntered -> "USER_ENTERED"++instance FromJSON BatchUpdateValuesRequestValueInputOption where+    parseJSON = parseJSONText "BatchUpdateValuesRequestValueInputOption"++instance ToJSON BatchUpdateValuesRequestValueInputOption where+    toJSON = toJSONText++-- | Horizontal alignment setting for the piece of text.+data TextPositionHorizontalAlignment+    = HorizontalAlignUnspecified+      -- ^ @HORIZONTAL_ALIGN_UNSPECIFIED@+      -- The horizontal alignment is not specified. Do not use this.+    | Left'+      -- ^ @LEFT@+      -- The text is explicitly aligned to the left of the cell.+    | Center+      -- ^ @CENTER@+      -- The text is explicitly aligned to the center of the cell.+    | Right'+      -- ^ @RIGHT@+      -- The text is explicitly aligned to the right of the cell.+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)++instance Hashable TextPositionHorizontalAlignment++instance FromHttpApiData TextPositionHorizontalAlignment where+    parseQueryParam = \case+        "HORIZONTAL_ALIGN_UNSPECIFIED" -> Right HorizontalAlignUnspecified+        "LEFT" -> Right Left'+        "CENTER" -> Right Center+        "RIGHT" -> Right Right'+        x -> Left ("Unable to parse TextPositionHorizontalAlignment from: " <> x)++instance ToHttpApiData TextPositionHorizontalAlignment where+    toQueryParam = \case+        HorizontalAlignUnspecified -> "HORIZONTAL_ALIGN_UNSPECIFIED"+        Left' -> "LEFT"+        Center -> "CENTER"+        Right' -> "RIGHT"++instance FromJSON TextPositionHorizontalAlignment where+    parseJSON = parseJSONText "TextPositionHorizontalAlignment"++instance ToJSON TextPositionHorizontalAlignment where+    toJSON = toJSONText++-- | The metadata visibility. Developer metadata must always have a+-- visibility specified.+data DeveloperMetadataVisibility+    = DeveloperMetadataVisibilityUnspecified+      -- ^ @DEVELOPER_METADATA_VISIBILITY_UNSPECIFIED@+      -- Default value.+    | Document+      -- ^ @DOCUMENT@+      -- Document-visible metadata is accessible from any developer project with+      -- access to the document.+    | Project+      -- ^ @PROJECT@+      -- Project-visible metadata is only visible to and accessible by the+      -- developer project that created the metadata.+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)++instance Hashable DeveloperMetadataVisibility++instance FromHttpApiData DeveloperMetadataVisibility where+    parseQueryParam = \case+        "DEVELOPER_METADATA_VISIBILITY_UNSPECIFIED" -> Right DeveloperMetadataVisibilityUnspecified+        "DOCUMENT" -> Right Document+        "PROJECT" -> Right Project+        x -> Left ("Unable to parse DeveloperMetadataVisibility from: " <> x)++instance ToHttpApiData DeveloperMetadataVisibility where+    toQueryParam = \case+        DeveloperMetadataVisibilityUnspecified -> "DEVELOPER_METADATA_VISIBILITY_UNSPECIFIED"+        Document -> "DOCUMENT"+        Project -> "PROJECT"++instance FromJSON DeveloperMetadataVisibility where+    parseJSON = parseJSONText "DeveloperMetadataVisibility"++instance ToJSON DeveloperMetadataVisibility where+    toJSON = toJSONText++-- | Determines how values in the response should be rendered. The default+-- render option is ValueRenderOption.FORMATTED_VALUE.+data BatchUpdateValuesRequestResponseValueRenderOption+    = BUVRRVROFormattedValue+      -- ^ @FORMATTED_VALUE@+      -- Values will be calculated & formatted in the reply according to the+      -- cell\'s formatting. Formatting is based on the spreadsheet\'s locale,+      -- not the requesting user\'s locale. For example, if \`A1\` is \`1.23\`+      -- and \`A2\` is \`=A1\` and formatted as currency, then \`A2\` would+      -- return \`\"$1.23\"\`.+    | BUVRRVROUnformattedValue+      -- ^ @UNFORMATTED_VALUE@+      -- Values will be calculated, but not formatted in the reply. For example,+      -- if \`A1\` is \`1.23\` and \`A2\` is \`=A1\` and formatted as currency,+      -- then \`A2\` would return the number \`1.23\`.+    | BUVRRVROFormula+      -- ^ @FORMULA@+      -- Values will not be calculated. The reply will include the formulas. For+      -- example, if \`A1\` is \`1.23\` and \`A2\` is \`=A1\` and formatted as+      -- currency, then A2 would return \`\"=A1\"\`.+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)++instance Hashable BatchUpdateValuesRequestResponseValueRenderOption++instance FromHttpApiData BatchUpdateValuesRequestResponseValueRenderOption where+    parseQueryParam = \case+        "FORMATTED_VALUE" -> Right BUVRRVROFormattedValue+        "UNFORMATTED_VALUE" -> Right BUVRRVROUnformattedValue+        "FORMULA" -> Right BUVRRVROFormula+        x -> Left ("Unable to parse BatchUpdateValuesRequestResponseValueRenderOption from: " <> x)++instance ToHttpApiData BatchUpdateValuesRequestResponseValueRenderOption where+    toQueryParam = \case+        BUVRRVROFormattedValue -> "FORMATTED_VALUE"+        BUVRRVROUnformattedValue -> "UNFORMATTED_VALUE"+        BUVRRVROFormula -> "FORMULA"++instance FromJSON BatchUpdateValuesRequestResponseValueRenderOption where+    parseJSON = parseJSONText "BatchUpdateValuesRequestResponseValueRenderOption"++instance ToJSON BatchUpdateValuesRequestResponseValueRenderOption where+    toJSON = toJSONText++-- | Where the legend of the pie chart should be drawn.+data PieChartSpecLegendPosition+    = PCSLPPieChartLegendPositionUnspecified+      -- ^ @PIE_CHART_LEGEND_POSITION_UNSPECIFIED@+      -- Default value, do not use.+    | PCSLPBottomLegend+      -- ^ @BOTTOM_LEGEND@+      -- The legend is rendered on the bottom of the chart.+    | PCSLPLeftLegend+      -- ^ @LEFT_LEGEND@+      -- The legend is rendered on the left of the chart.+    | PCSLPRightLegend+      -- ^ @RIGHT_LEGEND@+      -- The legend is rendered on the right of the chart.+    | PCSLPTopLegend+      -- ^ @TOP_LEGEND@+      -- The legend is rendered on the top of the chart.+    | PCSLPNoLegend+      -- ^ @NO_LEGEND@+      -- No legend is rendered.+    | PCSLPLabeledLegend+      -- ^ @LABELED_LEGEND@+      -- Each pie slice has a label attached to it.+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)++instance Hashable PieChartSpecLegendPosition++instance FromHttpApiData PieChartSpecLegendPosition where+    parseQueryParam = \case+        "PIE_CHART_LEGEND_POSITION_UNSPECIFIED" -> Right PCSLPPieChartLegendPositionUnspecified+        "BOTTOM_LEGEND" -> Right PCSLPBottomLegend+        "LEFT_LEGEND" -> Right PCSLPLeftLegend+        "RIGHT_LEGEND" -> Right PCSLPRightLegend+        "TOP_LEGEND" -> Right PCSLPTopLegend+        "NO_LEGEND" -> Right PCSLPNoLegend+        "LABELED_LEGEND" -> Right PCSLPLabeledLegend+        x -> Left ("Unable to parse PieChartSpecLegendPosition from: " <> x)++instance ToHttpApiData PieChartSpecLegendPosition where+    toQueryParam = \case+        PCSLPPieChartLegendPositionUnspecified -> "PIE_CHART_LEGEND_POSITION_UNSPECIFIED"+        PCSLPBottomLegend -> "BOTTOM_LEGEND"+        PCSLPLeftLegend -> "LEFT_LEGEND"+        PCSLPRightLegend -> "RIGHT_LEGEND"+        PCSLPTopLegend -> "TOP_LEGEND"+        PCSLPNoLegend -> "NO_LEGEND"+        PCSLPLabeledLegend -> "LABELED_LEGEND"++instance FromJSON PieChartSpecLegendPosition where+    parseJSON = parseJSONText "PieChartSpecLegendPosition"++instance ToJSON PieChartSpecLegendPosition where+    toJSON = toJSONText++-- | The vertical alignment of the value in the cell.+data CellFormatVerticalAlignment+    = VerticalAlignUnspecified+      -- ^ @VERTICAL_ALIGN_UNSPECIFIED@+      -- The vertical alignment is not specified. Do not use this.+    | Top+      -- ^ @TOP@+      -- The text is explicitly aligned to the top of the cell.+    | Middle+      -- ^ @MIDDLE@+      -- The text is explicitly aligned to the middle of the cell.+    | Bottom+      -- ^ @BOTTOM@+      -- The text is explicitly aligned to the bottom of the cell.+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)++instance Hashable CellFormatVerticalAlignment++instance FromHttpApiData CellFormatVerticalAlignment where+    parseQueryParam = \case+        "VERTICAL_ALIGN_UNSPECIFIED" -> Right VerticalAlignUnspecified+        "TOP" -> Right Top+        "MIDDLE" -> Right Middle+        "BOTTOM" -> Right Bottom+        x -> Left ("Unable to parse CellFormatVerticalAlignment from: " <> x)++instance ToHttpApiData CellFormatVerticalAlignment where+    toQueryParam = \case+        VerticalAlignUnspecified -> "VERTICAL_ALIGN_UNSPECIFIED"+        Top -> "TOP"+        Middle -> "MIDDLE"+        Bottom -> "BOTTOM"++instance FromJSON CellFormatVerticalAlignment where+    parseJSON = parseJSONText "CellFormatVerticalAlignment"++instance ToJSON CellFormatVerticalAlignment where+    toJSON = toJSONText++-- | The type of the number format. When writing, this field must be set.+data NumberFormatType+    = NumberFormatTypeUnspecified+      -- ^ @NUMBER_FORMAT_TYPE_UNSPECIFIED@+      -- The number format is not specified and is based on the contents of the+      -- cell. Do not explicitly use this.+    | Text+      -- ^ @TEXT@+      -- Text formatting, e.g \`1000.12\`+    | Number+      -- ^ @NUMBER@+      -- Number formatting, e.g, \`1,000.12\`+    | Percent+      -- ^ @PERCENT@+      -- Percent formatting, e.g \`10.12%\`+    | Currency+      -- ^ @CURRENCY@+      -- Currency formatting, e.g \`$1,000.12\`+    | Date+      -- ^ @DATE@+      -- Date formatting, e.g \`9\/26\/2008\`+    | Time+      -- ^ @TIME@+      -- Time formatting, e.g \`3:59:00 PM\`+    | DateTime+      -- ^ @DATE_TIME@+      -- Date+Time formatting, e.g \`9\/26\/08 15:59:00\`+    | Scientific+      -- ^ @SCIENTIFIC@+      -- Scientific number formatting, e.g \`1.01E+03\`+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)++instance Hashable NumberFormatType++instance FromHttpApiData NumberFormatType where+    parseQueryParam = \case+        "NUMBER_FORMAT_TYPE_UNSPECIFIED" -> Right NumberFormatTypeUnspecified+        "TEXT" -> Right Text+        "NUMBER" -> Right Number+        "PERCENT" -> Right Percent+        "CURRENCY" -> Right Currency+        "DATE" -> Right Date+        "TIME" -> Right Time+        "DATE_TIME" -> Right DateTime+        "SCIENTIFIC" -> Right Scientific+        x -> Left ("Unable to parse NumberFormatType from: " <> x)++instance ToHttpApiData NumberFormatType where+    toQueryParam = \case+        NumberFormatTypeUnspecified -> "NUMBER_FORMAT_TYPE_UNSPECIFIED"+        Text -> "TEXT"+        Number -> "NUMBER"+        Percent -> "PERCENT"+        Currency -> "CURRENCY"+        Date -> "DATE"+        Time -> "TIME"+        DateTime -> "DATE_TIME"+        Scientific -> "SCIENTIFIC"++instance FromJSON NumberFormatType where+    parseJSON = parseJSONText "NumberFormatType"++instance ToJSON NumberFormatType where+    toJSON = toJSONText++-- | A relative date (based on the current date). Valid only if the type is+-- DATE_BEFORE, DATE_AFTER, DATE_ON_OR_BEFORE or DATE_ON_OR_AFTER. Relative+-- dates are not supported in data validation. They are supported only in+-- conditional formatting and conditional filters.+data ConditionValueRelativeDate+    = RelativeDateUnspecified+      -- ^ @RELATIVE_DATE_UNSPECIFIED@+      -- Default value, do not use.+    | PastYear+      -- ^ @PAST_YEAR@+      -- The value is one year before today.+    | PastMonth+      -- ^ @PAST_MONTH@+      -- The value is one month before today.+    | PastWeek+      -- ^ @PAST_WEEK@+      -- The value is one week before today.+    | Yesterday+      -- ^ @YESTERDAY@+      -- The value is yesterday.+    | Today+      -- ^ @TODAY@+      -- The value is today.+    | Tomorrow+      -- ^ @TOMORROW@+      -- The value is tomorrow.+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)++instance Hashable ConditionValueRelativeDate++instance FromHttpApiData ConditionValueRelativeDate where+    parseQueryParam = \case+        "RELATIVE_DATE_UNSPECIFIED" -> Right RelativeDateUnspecified+        "PAST_YEAR" -> Right PastYear+        "PAST_MONTH" -> Right PastMonth+        "PAST_WEEK" -> Right PastWeek+        "YESTERDAY" -> Right Yesterday+        "TODAY" -> Right Today+        "TOMORROW" -> Right Tomorrow+        x -> Left ("Unable to parse ConditionValueRelativeDate from: " <> x)++instance ToHttpApiData ConditionValueRelativeDate where+    toQueryParam = \case+        RelativeDateUnspecified -> "RELATIVE_DATE_UNSPECIFIED"+        PastYear -> "PAST_YEAR"+        PastMonth -> "PAST_MONTH"+        PastWeek -> "PAST_WEEK"+        Yesterday -> "YESTERDAY"+        Today -> "TODAY"+        Tomorrow -> "TOMORROW"++instance FromJSON ConditionValueRelativeDate where+    parseJSON = parseJSONText "ConditionValueRelativeDate"++instance ToJSON ConditionValueRelativeDate where+    toJSON = toJSONText++-- | The type of location this object represents. This field is read-only.+data DeveloperMetadataLocationLocationType+    = DMLLTDeveloperMetadataLocationTypeUnspecified+      -- ^ @DEVELOPER_METADATA_LOCATION_TYPE_UNSPECIFIED@+      -- Default value.+    | DMLLTRow+      -- ^ @ROW@+      -- Developer metadata associated on an entire row dimension.+    | DMLLTColumn+      -- ^ @COLUMN@+      -- Developer metadata associated on an entire column dimension.+    | DMLLTSheet+      -- ^ @SHEET@+      -- Developer metadata associated on an entire sheet.+    | DMLLTSpreadsheet+      -- ^ @SPREADSHEET@+      -- Developer metadata associated on the entire spreadsheet.+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)++instance Hashable DeveloperMetadataLocationLocationType++instance FromHttpApiData DeveloperMetadataLocationLocationType where+    parseQueryParam = \case+        "DEVELOPER_METADATA_LOCATION_TYPE_UNSPECIFIED" -> Right DMLLTDeveloperMetadataLocationTypeUnspecified+        "ROW" -> Right DMLLTRow+        "COLUMN" -> Right DMLLTColumn+        "SHEET" -> Right DMLLTSheet+        "SPREADSHEET" -> Right DMLLTSpreadsheet+        x -> Left ("Unable to parse DeveloperMetadataLocationLocationType from: " <> x)++instance ToHttpApiData DeveloperMetadataLocationLocationType where+    toQueryParam = \case+        DMLLTDeveloperMetadataLocationTypeUnspecified -> "DEVELOPER_METADATA_LOCATION_TYPE_UNSPECIFIED"+        DMLLTRow -> "ROW"+        DMLLTColumn -> "COLUMN"+        DMLLTSheet -> "SHEET"+        DMLLTSpreadsheet -> "SPREADSHEET"++instance FromJSON DeveloperMetadataLocationLocationType where+    parseJSON = parseJSONText "DeveloperMetadataLocationLocationType"++instance ToJSON DeveloperMetadataLocationLocationType where+    toJSON = toJSONText++-- | The order data should be sorted.+data SortSpecSortOrder+    = SortOrderUnspecified+      -- ^ @SORT_ORDER_UNSPECIFIED@+      -- Default value, do not use this.+    | Ascending+      -- ^ @ASCENDING@+      -- Sort ascending.+    | Descending+      -- ^ @DESCENDING@+      -- Sort descending.+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)++instance Hashable SortSpecSortOrder++instance FromHttpApiData SortSpecSortOrder where+    parseQueryParam = \case+        "SORT_ORDER_UNSPECIFIED" -> Right SortOrderUnspecified+        "ASCENDING" -> Right Ascending+        "DESCENDING" -> Right Descending+        x -> Left ("Unable to parse SortSpecSortOrder from: " <> x)++instance ToHttpApiData SortSpecSortOrder where+    toQueryParam = \case+        SortOrderUnspecified -> "SORT_ORDER_UNSPECIFIED"+        Ascending -> "ASCENDING"+        Descending -> "DESCENDING"++instance FromJSON SortSpecSortOrder where+    parseJSON = parseJSONText "SortSpecSortOrder"++instance ToJSON SortSpecSortOrder where+    toJSON = toJSONText++-- | A function to summarize the value. If formula is set, the only supported+-- values are SUM and CUSTOM. If sourceColumnOffset is set, then \`CUSTOM\`+-- is not supported.+data PivotValueSummarizeFunction+    = PivotStandardValueFunctionUnspecified+      -- ^ @PIVOT_STANDARD_VALUE_FUNCTION_UNSPECIFIED@+      -- The default, do not use.+    | Sum+      -- ^ @SUM@+      -- Corresponds to the \`SUM\` function.+    | Counta+      -- ^ @COUNTA@+      -- Corresponds to the \`COUNTA\` function.+    | Count+      -- ^ @COUNT@+      -- Corresponds to the \`COUNT\` function.+    | Countunique+      -- ^ @COUNTUNIQUE@+      -- Corresponds to the \`COUNTUNIQUE\` function.+    | Average+      -- ^ @AVERAGE@+      -- Corresponds to the \`AVERAGE\` function.+    | Max+      -- ^ @MAX@+      -- Corresponds to the \`MAX\` function.+    | Min+      -- ^ @MIN@+      -- Corresponds to the \`MIN\` function.+    | Median+      -- ^ @MEDIAN@+      -- Corresponds to the \`MEDIAN\` function.+    | Product+      -- ^ @PRODUCT@+      -- Corresponds to the \`PRODUCT\` function.+    | Stdev+      -- ^ @STDEV@+      -- Corresponds to the \`STDEV\` function.+    | Stdevp+      -- ^ @STDEVP@+      -- Corresponds to the \`STDEVP\` function.+    | Var+      -- ^ @VAR@+      -- Corresponds to the \`VAR\` function.+    | Varp+      -- ^ @VARP@+      -- Corresponds to the \`VARP\` function.+    | Custom+      -- ^ @CUSTOM@+      -- Indicates the formula should be used as-is. Only valid if+      -- PivotValue.formula was set.+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)++instance Hashable PivotValueSummarizeFunction++instance FromHttpApiData PivotValueSummarizeFunction where+    parseQueryParam = \case+        "PIVOT_STANDARD_VALUE_FUNCTION_UNSPECIFIED" -> Right PivotStandardValueFunctionUnspecified+        "SUM" -> Right Sum+        "COUNTA" -> Right Counta+        "COUNT" -> Right Count+        "COUNTUNIQUE" -> Right Countunique+        "AVERAGE" -> Right Average+        "MAX" -> Right Max+        "MIN" -> Right Min+        "MEDIAN" -> Right Median+        "PRODUCT" -> Right Product+        "STDEV" -> Right Stdev+        "STDEVP" -> Right Stdevp+        "VAR" -> Right Var+        "VARP" -> Right Varp+        "CUSTOM" -> Right Custom+        x -> Left ("Unable to parse PivotValueSummarizeFunction from: " <> x)++instance ToHttpApiData PivotValueSummarizeFunction where+    toQueryParam = \case+        PivotStandardValueFunctionUnspecified -> "PIVOT_STANDARD_VALUE_FUNCTION_UNSPECIFIED"+        Sum -> "SUM"+        Counta -> "COUNTA"+        Count -> "COUNT"+        Countunique -> "COUNTUNIQUE"+        Average -> "AVERAGE"+        Max -> "MAX"+        Min -> "MIN"+        Median -> "MEDIAN"+        Product -> "PRODUCT"+        Stdev -> "STDEV"+        Stdevp -> "STDEVP"+        Var -> "VAR"+        Varp -> "VARP"+        Custom -> "CUSTOM"++instance FromJSON PivotValueSummarizeFunction where+    parseJSON = parseJSONText "PivotValueSummarizeFunction"++instance ToJSON PivotValueSummarizeFunction where+    toJSON = toJSONText++-- | The size of the org chart nodes.+data OrgChartSpecNodeSize+    = OrgChartLabelSizeUnspecified+      -- ^ @ORG_CHART_LABEL_SIZE_UNSPECIFIED@+      -- Default value, do not use.+    | Small+      -- ^ @SMALL@+      -- The small org chart node size.+    | Medium+      -- ^ @MEDIUM@+      -- The medium org chart node size.+    | Large+      -- ^ @LARGE@+      -- The large org chart node size.+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)++instance Hashable OrgChartSpecNodeSize++instance FromHttpApiData OrgChartSpecNodeSize where+    parseQueryParam = \case+        "ORG_CHART_LABEL_SIZE_UNSPECIFIED" -> Right OrgChartLabelSizeUnspecified+        "SMALL" -> Right Small+        "MEDIUM" -> Right Medium+        "LARGE" -> Right Large+        x -> Left ("Unable to parse OrgChartSpecNodeSize from: " <> x)++instance ToHttpApiData OrgChartSpecNodeSize where+    toQueryParam = \case+        OrgChartLabelSizeUnspecified -> "ORG_CHART_LABEL_SIZE_UNSPECIFIED"+        Small -> "SMALL"+        Medium -> "MEDIUM"+        Large -> "LARGE"++instance FromJSON OrgChartSpecNodeSize where+    parseJSON = parseJSONText "OrgChartSpecNodeSize"++instance ToJSON OrgChartSpecNodeSize where+    toJSON = toJSONText++-- | Determines how values in the response should be rendered. The default+-- render option is ValueRenderOption.FORMATTED_VALUE.+data BatchUpdateValuesByDataFilterRequestResponseValueRenderOption+    = BUVBDFRRVROFormattedValue+      -- ^ @FORMATTED_VALUE@+      -- Values will be calculated & formatted in the reply according to the+      -- cell\'s formatting. Formatting is based on the spreadsheet\'s locale,+      -- not the requesting user\'s locale. For example, if \`A1\` is \`1.23\`+      -- and \`A2\` is \`=A1\` and formatted as currency, then \`A2\` would+      -- return \`\"$1.23\"\`.+    | BUVBDFRRVROUnformattedValue+      -- ^ @UNFORMATTED_VALUE@+      -- Values will be calculated, but not formatted in the reply. For example,+      -- if \`A1\` is \`1.23\` and \`A2\` is \`=A1\` and formatted as currency,+      -- then \`A2\` would return the number \`1.23\`.+    | BUVBDFRRVROFormula+      -- ^ @FORMULA@+      -- Values will not be calculated. The reply will include the formulas. For+      -- example, if \`A1\` is \`1.23\` and \`A2\` is \`=A1\` and formatted as+      -- currency, then A2 would return \`\"=A1\"\`.+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)++instance Hashable BatchUpdateValuesByDataFilterRequestResponseValueRenderOption++instance FromHttpApiData BatchUpdateValuesByDataFilterRequestResponseValueRenderOption where+    parseQueryParam = \case+        "FORMATTED_VALUE" -> Right BUVBDFRRVROFormattedValue+        "UNFORMATTED_VALUE" -> Right BUVBDFRRVROUnformattedValue+        "FORMULA" -> Right BUVBDFRRVROFormula+        x -> Left ("Unable to parse BatchUpdateValuesByDataFilterRequestResponseValueRenderOption from: " <> x)++instance ToHttpApiData BatchUpdateValuesByDataFilterRequestResponseValueRenderOption where+    toQueryParam = \case+        BUVBDFRRVROFormattedValue -> "FORMATTED_VALUE"+        BUVBDFRRVROUnformattedValue -> "UNFORMATTED_VALUE"+        BUVBDFRRVROFormula -> "FORMULA"++instance FromJSON BatchUpdateValuesByDataFilterRequestResponseValueRenderOption where+    parseJSON = parseJSONText "BatchUpdateValuesByDataFilterRequestResponseValueRenderOption"++instance ToJSON BatchUpdateValuesByDataFilterRequestResponseValueRenderOption where+    toJSON = toJSONText++-- | The dash type of the line.+data LineStyleType+    = LSTLineDashTypeUnspecified+      -- ^ @LINE_DASH_TYPE_UNSPECIFIED@+      -- Default value, do not use.+    | LSTInvisible+      -- ^ @INVISIBLE@+      -- No dash type, which is equivalent to a non-visible line.+    | LSTCustom+      -- ^ @CUSTOM@+      -- A custom dash for a line. Modifying the exact custom dash style is+      -- currently unsupported.+    | LSTSolid+      -- ^ @SOLID@+      -- A solid line.+    | LSTDotted+      -- ^ @DOTTED@+      -- A dotted line.+    | LSTMediumDashed+      -- ^ @MEDIUM_DASHED@+      -- A dashed line where the dashes have \"medium\" length.+    | LSTMediumDashedDotted+      -- ^ @MEDIUM_DASHED_DOTTED@+      -- A line that alternates between a \"medium\" dash and a dot.+    | LSTLongDashed+      -- ^ @LONG_DASHED@+      -- A dashed line where the dashes have \"long\" length.+    | LSTLongDashedDotted+      -- ^ @LONG_DASHED_DOTTED@+      -- A line that alternates between a \"long\" dash and a dot.+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)++instance Hashable LineStyleType++instance FromHttpApiData LineStyleType where+    parseQueryParam = \case+        "LINE_DASH_TYPE_UNSPECIFIED" -> Right LSTLineDashTypeUnspecified+        "INVISIBLE" -> Right LSTInvisible+        "CUSTOM" -> Right LSTCustom+        "SOLID" -> Right LSTSolid+        "DOTTED" -> Right LSTDotted+        "MEDIUM_DASHED" -> Right LSTMediumDashed+        "MEDIUM_DASHED_DOTTED" -> Right LSTMediumDashedDotted+        "LONG_DASHED" -> Right LSTLongDashed+        "LONG_DASHED_DOTTED" -> Right LSTLongDashedDotted+        x -> Left ("Unable to parse LineStyleType from: " <> x)++instance ToHttpApiData LineStyleType where+    toQueryParam = \case+        LSTLineDashTypeUnspecified -> "LINE_DASH_TYPE_UNSPECIFIED"+        LSTInvisible -> "INVISIBLE"+        LSTCustom -> "CUSTOM"+        LSTSolid -> "SOLID"+        LSTDotted -> "DOTTED"+        LSTMediumDashed -> "MEDIUM_DASHED"+        LSTMediumDashedDotted -> "MEDIUM_DASHED_DOTTED"+        LSTLongDashed -> "LONG_DASHED"+        LSTLongDashedDotted -> "LONG_DASHED_DOTTED"++instance FromJSON LineStyleType where+    parseJSON = parseJSONText "LineStyleType"++instance ToJSON LineStyleType where+    toJSON = toJSONText++-- | How a hyperlink, if it exists, should be displayed in the cell.+data CellFormatHyperlinkDisplayType+    = HyperlinkDisplayTypeUnspecified+      -- ^ @HYPERLINK_DISPLAY_TYPE_UNSPECIFIED@+      -- The default value: the hyperlink is rendered. Do not use this.+    | Linked+      -- ^ @LINKED@+      -- A hyperlink should be explicitly rendered.+    | PlainText+      -- ^ @PLAIN_TEXT@+      -- A hyperlink should not be rendered.+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)++instance Hashable CellFormatHyperlinkDisplayType++instance FromHttpApiData CellFormatHyperlinkDisplayType where+    parseQueryParam = \case+        "HYPERLINK_DISPLAY_TYPE_UNSPECIFIED" -> Right HyperlinkDisplayTypeUnspecified+        "LINKED" -> Right Linked+        "PLAIN_TEXT" -> Right PlainText+        x -> Left ("Unable to parse CellFormatHyperlinkDisplayType from: " <> x)++instance ToHttpApiData CellFormatHyperlinkDisplayType where+    toQueryParam = \case+        HyperlinkDisplayTypeUnspecified -> "HYPERLINK_DISPLAY_TYPE_UNSPECIFIED"+        Linked -> "LINKED"+        PlainText -> "PLAIN_TEXT"++instance FromJSON CellFormatHyperlinkDisplayType where+    parseJSON = parseJSONText "CellFormatHyperlinkDisplayType"++instance ToJSON CellFormatHyperlinkDisplayType where+    toJSON = toJSONText++-- | How the input data should be interpreted.+data BatchUpdateValuesByDataFilterRequestValueInputOption+    = BUVBDFRVIOInputValueOptionUnspecified+      -- ^ @INPUT_VALUE_OPTION_UNSPECIFIED@+      -- Default input value. This value must not be used.+    | BUVBDFRVIORaw+      -- ^ @RAW@+      -- The values the user has entered will not be parsed and will be stored+      -- as-is.+    | BUVBDFRVIOUserEntered+      -- ^ @USER_ENTERED@+      -- The values will be parsed as if the user typed them into the UI. Numbers+      -- will stay as numbers, but strings may be converted to numbers, dates,+      -- etc. following the same rules that are applied when entering text into a+      -- cell via the Google Sheets UI.+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)++instance Hashable BatchUpdateValuesByDataFilterRequestValueInputOption++instance FromHttpApiData BatchUpdateValuesByDataFilterRequestValueInputOption where+    parseQueryParam = \case+        "INPUT_VALUE_OPTION_UNSPECIFIED" -> Right BUVBDFRVIOInputValueOptionUnspecified+        "RAW" -> Right BUVBDFRVIORaw+        "USER_ENTERED" -> Right BUVBDFRVIOUserEntered+        x -> Left ("Unable to parse BatchUpdateValuesByDataFilterRequestValueInputOption from: " <> x)++instance ToHttpApiData BatchUpdateValuesByDataFilterRequestValueInputOption where+    toQueryParam = \case+        BUVBDFRVIOInputValueOptionUnspecified -> "INPUT_VALUE_OPTION_UNSPECIFIED"+        BUVBDFRVIORaw -> "RAW"+        BUVBDFRVIOUserEntered -> "USER_ENTERED"++instance FromJSON BatchUpdateValuesByDataFilterRequestValueInputOption where+    parseJSON = parseJSONText "BatchUpdateValuesByDataFilterRequestValueInputOption"++instance ToJSON BatchUpdateValuesByDataFilterRequestValueInputOption where+    toJSON = toJSONText++-- | The position of the chart legend.+data HistogramChartSpecLegendPosition+    = HCSLPHistogramChartLegendPositionUnspecified+      -- ^ @HISTOGRAM_CHART_LEGEND_POSITION_UNSPECIFIED@+      -- Default value, do not use.+    | HCSLPBottomLegend+      -- ^ @BOTTOM_LEGEND@+      -- The legend is rendered on the bottom of the chart.+    | HCSLPLeftLegend+      -- ^ @LEFT_LEGEND@+      -- The legend is rendered on the left of the chart.+    | HCSLPRightLegend+      -- ^ @RIGHT_LEGEND@+      -- The legend is rendered on the right of the chart.+    | HCSLPTopLegend+      -- ^ @TOP_LEGEND@+      -- The legend is rendered on the top of the chart.+    | HCSLPNoLegend+      -- ^ @NO_LEGEND@+      -- No legend is rendered.+    | HCSLPInsideLegend+      -- ^ @INSIDE_LEGEND@+      -- The legend is rendered inside the chart area.+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)++instance Hashable HistogramChartSpecLegendPosition++instance FromHttpApiData HistogramChartSpecLegendPosition where+    parseQueryParam = \case+        "HISTOGRAM_CHART_LEGEND_POSITION_UNSPECIFIED" -> Right HCSLPHistogramChartLegendPositionUnspecified+        "BOTTOM_LEGEND" -> Right HCSLPBottomLegend+        "LEFT_LEGEND" -> Right HCSLPLeftLegend+        "RIGHT_LEGEND" -> Right HCSLPRightLegend+        "TOP_LEGEND" -> Right HCSLPTopLegend+        "NO_LEGEND" -> Right HCSLPNoLegend+        "INSIDE_LEGEND" -> Right HCSLPInsideLegend+        x -> Left ("Unable to parse HistogramChartSpecLegendPosition from: " <> x)++instance ToHttpApiData HistogramChartSpecLegendPosition where+    toQueryParam = \case+        HCSLPHistogramChartLegendPositionUnspecified -> "HISTOGRAM_CHART_LEGEND_POSITION_UNSPECIFIED"+        HCSLPBottomLegend -> "BOTTOM_LEGEND"+        HCSLPLeftLegend -> "LEFT_LEGEND"+        HCSLPRightLegend -> "RIGHT_LEGEND"+        HCSLPTopLegend -> "TOP_LEGEND"+        HCSLPNoLegend -> "NO_LEGEND"+        HCSLPInsideLegend -> "INSIDE_LEGEND"++instance FromJSON HistogramChartSpecLegendPosition where+    parseJSON = parseJSONText "HistogramChartSpecLegendPosition"++instance ToJSON HistogramChartSpecLegendPosition where+    toJSON = toJSONText++-- | The type of sheet. Defaults to GRID. This field cannot be changed once+-- set.+data SheetPropertiesSheetType+    = SheetTypeUnspecified+      -- ^ @SHEET_TYPE_UNSPECIFIED@+      -- Default value, do not use.+    | Grid+      -- ^ @GRID@+      -- The sheet is a grid.+    | Object+      -- ^ @OBJECT@+      -- The sheet has no grid and instead has an object like a chart or image.+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)++instance Hashable SheetPropertiesSheetType++instance FromHttpApiData SheetPropertiesSheetType where+    parseQueryParam = \case+        "SHEET_TYPE_UNSPECIFIED" -> Right SheetTypeUnspecified+        "GRID" -> Right Grid+        "OBJECT" -> Right Object+        x -> Left ("Unable to parse SheetPropertiesSheetType from: " <> x)++instance ToHttpApiData SheetPropertiesSheetType where+    toQueryParam = \case+        SheetTypeUnspecified -> "SHEET_TYPE_UNSPECIFIED"+        Grid -> "GRID"+        Object -> "OBJECT"++instance FromJSON SheetPropertiesSheetType where+    parseJSON = parseJSONText "SheetPropertiesSheetType"++instance ToJSON SheetPropertiesSheetType where+    toJSON = toJSONText++-- | 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.+data DeveloperMetadataLookupLocationType+    = DDeveloperMetadataLocationTypeUnspecified+      -- ^ @DEVELOPER_METADATA_LOCATION_TYPE_UNSPECIFIED@+      -- Default value.+    | DRow+      -- ^ @ROW@+      -- Developer metadata associated on an entire row dimension.+    | DColumn+      -- ^ @COLUMN@+      -- Developer metadata associated on an entire column dimension.+    | DSheet+      -- ^ @SHEET@+      -- Developer metadata associated on an entire sheet.+    | DSpreadsheet+      -- ^ @SPREADSHEET@+      -- Developer metadata associated on the entire spreadsheet.+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)++instance Hashable DeveloperMetadataLookupLocationType++instance FromHttpApiData DeveloperMetadataLookupLocationType where+    parseQueryParam = \case+        "DEVELOPER_METADATA_LOCATION_TYPE_UNSPECIFIED" -> Right DDeveloperMetadataLocationTypeUnspecified+        "ROW" -> Right DRow+        "COLUMN" -> Right DColumn+        "SHEET" -> Right DSheet+        "SPREADSHEET" -> Right DSpreadsheet+        x -> Left ("Unable to parse DeveloperMetadataLookupLocationType from: " <> x)++instance ToHttpApiData DeveloperMetadataLookupLocationType where+    toQueryParam = \case+        DDeveloperMetadataLocationTypeUnspecified -> "DEVELOPER_METADATA_LOCATION_TYPE_UNSPECIFIED"+        DRow -> "ROW"+        DColumn -> "COLUMN"+        DSheet -> "SHEET"+        DSpreadsheet -> "SPREADSHEET"++instance FromJSON DeveloperMetadataLookupLocationType where+    parseJSON = parseJSONText "DeveloperMetadataLookupLocationType"++instance ToJSON DeveloperMetadataLookupLocationType where+    toJSON = toJSONText++-- | How the cells should be merged.+data MergeCellsRequestMergeType+    = MergeAll+      -- ^ @MERGE_ALL@+      -- Create a single merge from the range+    | MergeColumns+      -- ^ @MERGE_COLUMNS@+      -- Create a merge for each column in the range+    | MergeRows+      -- ^ @MERGE_ROWS@+      -- Create a merge for each row in the range+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)++instance Hashable MergeCellsRequestMergeType++instance FromHttpApiData MergeCellsRequestMergeType where+    parseQueryParam = \case+        "MERGE_ALL" -> Right MergeAll+        "MERGE_COLUMNS" -> Right MergeColumns+        "MERGE_ROWS" -> Right MergeRows+        x -> Left ("Unable to parse MergeCellsRequestMergeType from: " <> x)++instance ToHttpApiData MergeCellsRequestMergeType where+    toQueryParam = \case+        MergeAll -> "MERGE_ALL"+        MergeColumns -> "MERGE_COLUMNS"+        MergeRows -> "MERGE_ROWS"++instance FromJSON MergeCellsRequestMergeType where+    parseJSON = parseJSONText "MergeCellsRequestMergeType"++instance ToJSON MergeCellsRequestMergeType where+    toJSON = toJSONText++-- | The horizontal alignment of the value in the cell.+data CellFormatHorizontalAlignment+    = CFHAHorizontalAlignUnspecified+      -- ^ @HORIZONTAL_ALIGN_UNSPECIFIED@+      -- The horizontal alignment is not specified. Do not use this.+    | CFHALeft'+      -- ^ @LEFT@+      -- The text is explicitly aligned to the left of the cell.+    | CFHACenter+      -- ^ @CENTER@+      -- The text is explicitly aligned to the center of the cell.+    | CFHARight'+      -- ^ @RIGHT@+      -- The text is explicitly aligned to the right of the cell.+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)++instance Hashable CellFormatHorizontalAlignment++instance FromHttpApiData CellFormatHorizontalAlignment where+    parseQueryParam = \case+        "HORIZONTAL_ALIGN_UNSPECIFIED" -> Right CFHAHorizontalAlignUnspecified+        "LEFT" -> Right CFHALeft'+        "CENTER" -> Right CFHACenter+        "RIGHT" -> Right CFHARight'+        x -> Left ("Unable to parse CellFormatHorizontalAlignment from: " <> x)++instance ToHttpApiData CellFormatHorizontalAlignment where+    toQueryParam = \case+        CFHAHorizontalAlignUnspecified -> "HORIZONTAL_ALIGN_UNSPECIFIED"+        CFHALeft' -> "LEFT"+        CFHACenter -> "CENTER"+        CFHARight' -> "RIGHT"++instance FromJSON CellFormatHorizontalAlignment where+    parseJSON = parseJSONText "CellFormatHorizontalAlignment"++instance ToJSON CellFormatHorizontalAlignment where+    toJSON = toJSONText++-- | The stacked type.+data WaterfallChartSpecStackedType+    = WCSSTWaterfallStackedTypeUnspecified+      -- ^ @WATERFALL_STACKED_TYPE_UNSPECIFIED@+      -- Default value, do not use.+    | WCSSTStacked+      -- ^ @STACKED@+      -- Values corresponding to the same domain (horizontal axis) value will be+      -- stacked vertically.+    | WCSSTSequential+      -- ^ @SEQUENTIAL@+      -- Series will spread out along the horizontal axis.+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)++instance Hashable WaterfallChartSpecStackedType++instance FromHttpApiData WaterfallChartSpecStackedType where+    parseQueryParam = \case+        "WATERFALL_STACKED_TYPE_UNSPECIFIED" -> Right WCSSTWaterfallStackedTypeUnspecified+        "STACKED" -> Right WCSSTStacked+        "SEQUENTIAL" -> Right WCSSTSequential+        x -> Left ("Unable to parse WaterfallChartSpecStackedType from: " <> x)++instance ToHttpApiData WaterfallChartSpecStackedType where+    toQueryParam = \case+        WCSSTWaterfallStackedTypeUnspecified -> "WATERFALL_STACKED_TYPE_UNSPECIFIED"+        WCSSTStacked -> "STACKED"+        WCSSTSequential -> "SEQUENTIAL"++instance FromJSON WaterfallChartSpecStackedType where+    parseJSON = parseJSONText "WaterfallChartSpecStackedType"++instance ToJSON WaterfallChartSpecStackedType where+    toJSON = toJSONText++-- | The type of date-time grouping to apply.+data DateTimeRuleType+    = DateTimeRuleTypeUnspecified+      -- ^ @DATE_TIME_RULE_TYPE_UNSPECIFIED@+      -- The default type, do not use.+    | Second+      -- ^ @SECOND@+      -- Group dates by second, from 0 to 59.+    | Minute+      -- ^ @MINUTE@+      -- Group dates by minute, from 0 to 59.+    | Hour+      -- ^ @HOUR@+      -- Group dates by hour using a 24-hour system, from 0 to 23.+    | HourMinute+      -- ^ @HOUR_MINUTE@+      -- Group dates by hour and minute using a 24-hour system, for example+      -- 19:45.+    | HourMinuteAmpm+      -- ^ @HOUR_MINUTE_AMPM@+      -- Group dates by hour and minute using a 12-hour system, for example 7:45+      -- PM. The AM\/PM designation is translated based on the spreadsheet+      -- locale.+    | DayOfWeek+      -- ^ @DAY_OF_WEEK@+      -- Group dates by day of week, for example Sunday. The days of the week+      -- will be translated based on the spreadsheet locale.+    | DayOfYear+      -- ^ @DAY_OF_YEAR@+      -- Group dates by day of year, from 1 to 366. Note that dates after Feb. 29+      -- fall in different buckets in leap years than in non-leap years.+    | DayOfMonth+      -- ^ @DAY_OF_MONTH@+      -- Group dates by day of month, from 1 to 31.+    | DayMonth+      -- ^ @DAY_MONTH@+      -- Group dates by day and month, for example 22-Nov. The month is+      -- translated based on the spreadsheet locale.+    | Month+      -- ^ @MONTH@+      -- Group dates by month, for example Nov. The month is translated based on+      -- the spreadsheet locale.+    | Quarter+      -- ^ @QUARTER@+      -- Group dates by quarter, for example Q1 (which represents Jan-Mar).+    | Year+      -- ^ @YEAR@+      -- Group dates by year, for example 2008.+    | YearMonth+      -- ^ @YEAR_MONTH@+      -- Group dates by year and month, for example 2008-Nov. The month is+      -- translated based on the spreadsheet locale.+    | YearQuarter+      -- ^ @YEAR_QUARTER@+      -- Group dates by year and quarter, for example 2008 Q4.+    | YearMonthDay+      -- ^ @YEAR_MONTH_DAY@+      -- Group dates by year, month, and day, for example 2008-11-22.+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)++instance Hashable DateTimeRuleType++instance FromHttpApiData DateTimeRuleType where+    parseQueryParam = \case+        "DATE_TIME_RULE_TYPE_UNSPECIFIED" -> Right DateTimeRuleTypeUnspecified+        "SECOND" -> Right Second+        "MINUTE" -> Right Minute+        "HOUR" -> Right Hour+        "HOUR_MINUTE" -> Right HourMinute+        "HOUR_MINUTE_AMPM" -> Right HourMinuteAmpm+        "DAY_OF_WEEK" -> Right DayOfWeek+        "DAY_OF_YEAR" -> Right DayOfYear+        "DAY_OF_MONTH" -> Right DayOfMonth+        "DAY_MONTH" -> Right DayMonth+        "MONTH" -> Right Month+        "QUARTER" -> Right Quarter+        "YEAR" -> Right Year+        "YEAR_MONTH" -> Right YearMonth+        "YEAR_QUARTER" -> Right YearQuarter+        "YEAR_MONTH_DAY" -> Right YearMonthDay+        x -> Left ("Unable to parse DateTimeRuleType from: " <> x)++instance ToHttpApiData DateTimeRuleType where+    toQueryParam = \case+        DateTimeRuleTypeUnspecified -> "DATE_TIME_RULE_TYPE_UNSPECIFIED"+        Second -> "SECOND"+        Minute -> "MINUTE"+        Hour -> "HOUR"+        HourMinute -> "HOUR_MINUTE"+        HourMinuteAmpm -> "HOUR_MINUTE_AMPM"+        DayOfWeek -> "DAY_OF_WEEK"+        DayOfYear -> "DAY_OF_YEAR"+        DayOfMonth -> "DAY_OF_MONTH"+        DayMonth -> "DAY_MONTH"+        Month -> "MONTH"+        Quarter -> "QUARTER"+        Year -> "YEAR"+        YearMonth -> "YEAR_MONTH"+        YearQuarter -> "YEAR_QUARTER"+        YearMonthDay -> "YEAR_MONTH_DAY"++instance FromJSON DateTimeRuleType where+    parseJSON = parseJSONText "DateTimeRuleType"++instance ToJSON DateTimeRuleType where+    toJSON = toJSONText++-- | 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.+data DeveloperMetadataLookupVisibility+    = DMLVDeveloperMetadataVisibilityUnspecified+      -- ^ @DEVELOPER_METADATA_VISIBILITY_UNSPECIFIED@+      -- Default value.+    | DMLVDocument+      -- ^ @DOCUMENT@+      -- Document-visible metadata is accessible from any developer project with+      -- access to the document.+    | DMLVProject+      -- ^ @PROJECT@+      -- Project-visible metadata is only visible to and accessible by the+      -- developer project that created the metadata.+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)++instance Hashable DeveloperMetadataLookupVisibility++instance FromHttpApiData DeveloperMetadataLookupVisibility where+    parseQueryParam = \case+        "DEVELOPER_METADATA_VISIBILITY_UNSPECIFIED" -> Right DMLVDeveloperMetadataVisibilityUnspecified+        "DOCUMENT" -> Right DMLVDocument+        "PROJECT" -> Right DMLVProject+        x -> Left ("Unable to parse DeveloperMetadataLookupVisibility from: " <> x)++instance ToHttpApiData DeveloperMetadataLookupVisibility where+    toQueryParam = \case+        DMLVDeveloperMetadataVisibilityUnspecified -> "DEVELOPER_METADATA_VISIBILITY_UNSPECIFIED"+        DMLVDocument -> "DOCUMENT"+        DMLVProject -> "PROJECT"++instance FromJSON DeveloperMetadataLookupVisibility where+    parseJSON = parseJSONText "DeveloperMetadataLookupVisibility"++instance ToJSON DeveloperMetadataLookupVisibility where+    toJSON = toJSONText++-- | The behavior of tooltips and data highlighting when hovering on data and+-- chart area.+data BasicChartSpecCompareMode+    = BasicChartCompareModeUnspecified+      -- ^ @BASIC_CHART_COMPARE_MODE_UNSPECIFIED@+      -- Default value, do not use.+    | Datum+      -- ^ @DATUM@+      -- Only the focused data element is highlighted and shown in the tooltip.+    | Category+      -- ^ @CATEGORY@+      -- All data elements with the same category (e.g., domain value) are+      -- highlighted and shown in the tooltip.+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)++instance Hashable BasicChartSpecCompareMode++instance FromHttpApiData BasicChartSpecCompareMode where+    parseQueryParam = \case+        "BASIC_CHART_COMPARE_MODE_UNSPECIFIED" -> Right BasicChartCompareModeUnspecified+        "DATUM" -> Right Datum+        "CATEGORY" -> Right Category+        x -> Left ("Unable to parse BasicChartSpecCompareMode from: " <> x)++instance ToHttpApiData BasicChartSpecCompareMode where+    toQueryParam = \case+        BasicChartCompareModeUnspecified -> "BASIC_CHART_COMPARE_MODE_UNSPECIFIED"+        Datum -> "DATUM"+        Category -> "CATEGORY"++instance FromJSON BasicChartSpecCompareMode where+    parseJSON = parseJSONText "BasicChartSpecCompareMode"++instance ToJSON BasicChartSpecCompareMode where+    toJSON = toJSONText++-- | The type of condition.+data BooleanConditionType+    = ConditionTypeUnspecified+      -- ^ @CONDITION_TYPE_UNSPECIFIED@+      -- The default value, do not use.+    | NumberGreater+      -- ^ @NUMBER_GREATER@+      -- The cell\'s value must be greater than the condition\'s value. Supported+      -- by data validation, conditional formatting and filters. Requires a+      -- single ConditionValue.+    | NumberGreaterThanEQ+      -- ^ @NUMBER_GREATER_THAN_EQ@+      -- The cell\'s value must be greater than or equal to the condition\'s+      -- value. Supported by data validation, conditional formatting and filters.+      -- Requires a single ConditionValue.+    | NumberLess+      -- ^ @NUMBER_LESS@+      -- The cell\'s value must be less than the condition\'s value. Supported by+      -- data validation, conditional formatting and filters. Requires a single+      -- ConditionValue.+    | NumberLessThanEQ+      -- ^ @NUMBER_LESS_THAN_EQ@+      -- The cell\'s value must be less than or equal to the condition\'s value.+      -- Supported by data validation, conditional formatting and filters.+      -- Requires a single ConditionValue.+    | NumberEQ+      -- ^ @NUMBER_EQ@+      -- The cell\'s value must be equal to the condition\'s value. Supported by+      -- data validation, conditional formatting and filters. Requires a single+      -- ConditionValue.+    | NumberNotEQ+      -- ^ @NUMBER_NOT_EQ@+      -- The cell\'s value must be not equal to the condition\'s value. Supported+      -- by data validation, conditional formatting and filters. Requires a+      -- single ConditionValue.+    | NumberBetween+      -- ^ @NUMBER_BETWEEN@+      -- The cell\'s value must be between the two condition values. Supported by+      -- data validation, conditional formatting and filters. Requires exactly+      -- two ConditionValues.+    | NumberNotBetween+      -- ^ @NUMBER_NOT_BETWEEN@+      -- The cell\'s value must not be between the two condition values.+      -- Supported by data validation, conditional formatting and filters.+      -- Requires exactly two ConditionValues.+    | TextContains+      -- ^ @TEXT_CONTAINS@+      -- The cell\'s value must contain the condition\'s value. Supported by data+      -- validation, conditional formatting and filters. Requires a single+      -- ConditionValue.+    | TextNotContains+      -- ^ @TEXT_NOT_CONTAINS@+      -- The cell\'s value must not contain the condition\'s value. Supported by+      -- data validation, conditional formatting and filters. Requires a single+      -- ConditionValue.+    | TextStartsWith+      -- ^ @TEXT_STARTS_WITH@+      -- The cell\'s value must start with the condition\'s value. Supported by+      -- conditional formatting and filters. Requires a single ConditionValue.+    | TextEndsWith+      -- ^ @TEXT_ENDS_WITH@+      -- The cell\'s value must end with the condition\'s value. Supported by+      -- conditional formatting and filters. Requires a single ConditionValue.+    | TextEQ+      -- ^ @TEXT_EQ@+      -- The cell\'s value must be exactly the condition\'s value. Supported by+      -- data validation, conditional formatting and filters. Requires a single+      -- ConditionValue.+    | TextIsEmail+      -- ^ @TEXT_IS_EMAIL@+      -- The cell\'s value must be a valid email address. Supported by data+      -- validation. Requires no ConditionValues.+    | TextIsURL+      -- ^ @TEXT_IS_URL@+      -- The cell\'s value must be a valid URL. Supported by data validation.+      -- Requires no ConditionValues.+    | DateEQ+      -- ^ @DATE_EQ@+      -- The cell\'s value must be the same date as the condition\'s value.+      -- Supported by data validation, conditional formatting and filters.+      -- Requires a single ConditionValue.+    | DateBefore+      -- ^ @DATE_BEFORE@+      -- The cell\'s value must be before the date of the condition\'s value.+      -- Supported by data validation, conditional formatting and filters.+      -- Requires a single ConditionValue that may be a relative date.+    | DateAfter+      -- ^ @DATE_AFTER@+      -- The cell\'s value must be after the date of the condition\'s value.+      -- Supported by data validation, conditional formatting and filters.+      -- Requires a single ConditionValue that may be a relative date.+    | DateOnOrBefore+      -- ^ @DATE_ON_OR_BEFORE@+      -- The cell\'s value must be on or before the date of the condition\'s+      -- value. Supported by data validation. Requires a single ConditionValue+      -- that may be a relative date.+    | DateOnOrAfter+      -- ^ @DATE_ON_OR_AFTER@+      -- The cell\'s value must be on or after the date of the condition\'s+      -- value. Supported by data validation. Requires a single ConditionValue+      -- that may be a relative date.+    | DateBetween+      -- ^ @DATE_BETWEEN@+      -- The cell\'s value must be between the dates of the two condition values.+      -- Supported by data validation. Requires exactly two ConditionValues.+    | DateNotBetween+      -- ^ @DATE_NOT_BETWEEN@+      -- The cell\'s value must be outside the dates of the two condition values.+      -- Supported by data validation. Requires exactly two ConditionValues.+    | DateIsValid+      -- ^ @DATE_IS_VALID@+      -- The cell\'s value must be a date. Supported by data validation. Requires+      -- no ConditionValues.+    | OneOfRange+      -- ^ @ONE_OF_RANGE@+      -- The cell\'s value must be listed in the grid in condition value\'s+      -- range. Supported by data validation. Requires a single ConditionValue,+      -- and the value must be a valid range in A1 notation.+    | OneOfList+      -- ^ @ONE_OF_LIST@+      -- The cell\'s value must be in the list of condition values. Supported by+      -- data validation. Supports any number of condition values, one per item+      -- in the list. Formulas are not supported in the values.+    | Blank+      -- ^ @BLANK@+      -- The cell\'s value must be empty. Supported by conditional formatting and+      -- filters. Requires no ConditionValues.+    | NotBlank+      -- ^ @NOT_BLANK@+      -- The cell\'s value must not be empty. Supported by conditional formatting+      -- and filters. Requires no ConditionValues.+    | CustomFormula+      -- ^ @CUSTOM_FORMULA@+      -- The condition\'s formula must evaluate to true. Supported by data+      -- validation, conditional formatting and filters. Requires a single+      -- ConditionValue.+    | Boolean+      -- ^ @BOOLEAN@+      -- The cell\'s value must be TRUE\/FALSE or in the list of condition+      -- values. Supported by data validation. Renders as a cell checkbox.+      -- Supports zero, one or two ConditionValues. No values indicates the cell+      -- must be TRUE or FALSE, where TRUE renders as checked and FALSE renders+      -- as unchecked. One value indicates the cell will render as checked when+      -- it contains that value and unchecked when it is blank. Two values+      -- indicate that the cell will render as checked when it contains the first+      -- value and unchecked when it contains the second value. For example,+      -- [\"Yes\",\"No\"] indicates that the cell will render a checked box when+      -- it has the value \"Yes\" and an unchecked box when it has the value+      -- \"No\".+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)++instance Hashable BooleanConditionType++instance FromHttpApiData BooleanConditionType where+    parseQueryParam = \case+        "CONDITION_TYPE_UNSPECIFIED" -> Right ConditionTypeUnspecified+        "NUMBER_GREATER" -> Right NumberGreater+        "NUMBER_GREATER_THAN_EQ" -> Right NumberGreaterThanEQ+        "NUMBER_LESS" -> Right NumberLess+        "NUMBER_LESS_THAN_EQ" -> Right NumberLessThanEQ+        "NUMBER_EQ" -> Right NumberEQ+        "NUMBER_NOT_EQ" -> Right NumberNotEQ+        "NUMBER_BETWEEN" -> Right NumberBetween+        "NUMBER_NOT_BETWEEN" -> Right NumberNotBetween+        "TEXT_CONTAINS" -> Right TextContains+        "TEXT_NOT_CONTAINS" -> Right TextNotContains+        "TEXT_STARTS_WITH" -> Right TextStartsWith+        "TEXT_ENDS_WITH" -> Right TextEndsWith+        "TEXT_EQ" -> Right TextEQ+        "TEXT_IS_EMAIL" -> Right TextIsEmail+        "TEXT_IS_URL" -> Right TextIsURL+        "DATE_EQ" -> Right DateEQ+        "DATE_BEFORE" -> Right DateBefore+        "DATE_AFTER" -> Right DateAfter+        "DATE_ON_OR_BEFORE" -> Right DateOnOrBefore+        "DATE_ON_OR_AFTER" -> Right DateOnOrAfter+        "DATE_BETWEEN" -> Right DateBetween+        "DATE_NOT_BETWEEN" -> Right DateNotBetween+        "DATE_IS_VALID" -> Right DateIsValid+        "ONE_OF_RANGE" -> Right OneOfRange+        "ONE_OF_LIST" -> Right OneOfList+        "BLANK" -> Right Blank+        "NOT_BLANK" -> Right NotBlank+        "CUSTOM_FORMULA" -> Right CustomFormula+        "BOOLEAN" -> Right Boolean+        x -> Left ("Unable to parse BooleanConditionType from: " <> x)++instance ToHttpApiData BooleanConditionType where+    toQueryParam = \case+        ConditionTypeUnspecified -> "CONDITION_TYPE_UNSPECIFIED"+        NumberGreater -> "NUMBER_GREATER"+        NumberGreaterThanEQ -> "NUMBER_GREATER_THAN_EQ"+        NumberLess -> "NUMBER_LESS"+        NumberLessThanEQ -> "NUMBER_LESS_THAN_EQ"+        NumberEQ -> "NUMBER_EQ"+        NumberNotEQ -> "NUMBER_NOT_EQ"+        NumberBetween -> "NUMBER_BETWEEN"+        NumberNotBetween -> "NUMBER_NOT_BETWEEN"+        TextContains -> "TEXT_CONTAINS"+        TextNotContains -> "TEXT_NOT_CONTAINS"+        TextStartsWith -> "TEXT_STARTS_WITH"+        TextEndsWith -> "TEXT_ENDS_WITH"+        TextEQ -> "TEXT_EQ"+        TextIsEmail -> "TEXT_IS_EMAIL"+        TextIsURL -> "TEXT_IS_URL"+        DateEQ -> "DATE_EQ"+        DateBefore -> "DATE_BEFORE"+        DateAfter -> "DATE_AFTER"+        DateOnOrBefore -> "DATE_ON_OR_BEFORE"+        DateOnOrAfter -> "DATE_ON_OR_AFTER"+        DateBetween -> "DATE_BETWEEN"+        DateNotBetween -> "DATE_NOT_BETWEEN"+        DateIsValid -> "DATE_IS_VALID"+        OneOfRange -> "ONE_OF_RANGE"+        OneOfList -> "ONE_OF_LIST"+        Blank -> "BLANK"+        NotBlank -> "NOT_BLANK"+        CustomFormula -> "CUSTOM_FORMULA"+        Boolean -> "BOOLEAN"++instance FromJSON BooleanConditionType where+    parseJSON = parseJSONText "BooleanConditionType"++instance ToJSON BooleanConditionType where+    toJSON = toJSONText++-- | The major dimension of the values. For output, if the spreadsheet data+-- is: \`A1=1,B1=2,A2=3,B2=4\`, then requesting+-- \`range=A1:B2,majorDimension=ROWS\` will return \`[[1,2],[3,4]]\`,+-- whereas requesting \`range=A1:B2,majorDimension=COLUMNS\` will return+-- \`[[1,3],[2,4]]\`. For input, with \`range=A1:B2,majorDimension=ROWS\`+-- then \`[[1,2],[3,4]]\` will set \`A1=1,B1=2,A2=3,B2=4\`. With+-- \`range=A1:B2,majorDimension=COLUMNS\` then \`[[1,2],[3,4]]\` will set+-- \`A1=1,B1=3,A2=2,B2=4\`. When writing, if this field is not set, it+-- defaults to ROWS.+data ValueRangeMajorDimension+    = VRMDDimensionUnspecified+      -- ^ @DIMENSION_UNSPECIFIED@+      -- The default value, do not use.+    | VRMDRows+      -- ^ @ROWS@+      -- Operates on the rows of a sheet.+    | VRMDColumns+      -- ^ @COLUMNS@+      -- Operates on the columns of a sheet.+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)++instance Hashable ValueRangeMajorDimension++instance FromHttpApiData ValueRangeMajorDimension where+    parseQueryParam = \case+        "DIMENSION_UNSPECIFIED" -> Right VRMDDimensionUnspecified+        "ROWS" -> Right VRMDRows+        "COLUMNS" -> Right VRMDColumns+        x -> Left ("Unable to parse ValueRangeMajorDimension from: " <> x)++instance ToHttpApiData ValueRangeMajorDimension where+    toQueryParam = \case+        VRMDDimensionUnspecified -> "DIMENSION_UNSPECIFIED"+        VRMDRows -> "ROWS"+        VRMDColumns -> "COLUMNS"++instance FromJSON ValueRangeMajorDimension where+    parseJSON = parseJSONText "ValueRangeMajorDimension"++instance ToJSON ValueRangeMajorDimension where+    toJSON = toJSONText++-- | The order the values in this group should be sorted.+data PivotGroupSortOrder+    = PGSOSortOrderUnspecified+      -- ^ @SORT_ORDER_UNSPECIFIED@+      -- Default value, do not use this.+    | PGSOAscending+      -- ^ @ASCENDING@+      -- Sort ascending.+    | PGSODescending+      -- ^ @DESCENDING@+      -- Sort descending.+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)++instance Hashable PivotGroupSortOrder++instance FromHttpApiData PivotGroupSortOrder where+    parseQueryParam = \case+        "SORT_ORDER_UNSPECIFIED" -> Right PGSOSortOrderUnspecified+        "ASCENDING" -> Right PGSOAscending+        "DESCENDING" -> Right PGSODescending+        x -> Left ("Unable to parse PivotGroupSortOrder from: " <> x)++instance ToHttpApiData PivotGroupSortOrder where+    toQueryParam = \case+        PGSOSortOrderUnspecified -> "SORT_ORDER_UNSPECIFIED"+        PGSOAscending -> "ASCENDING"+        PGSODescending -> "DESCENDING"++instance FromJSON PivotGroupSortOrder where+    parseJSON = parseJSONText "PivotGroupSortOrder"++instance ToJSON PivotGroupSortOrder where+    toJSON = toJSONText++-- | The type of the chart.+data BasicChartSpecChartType+    = BasicChartTypeUnspecified+      -- ^ @BASIC_CHART_TYPE_UNSPECIFIED@+      -- Default value, do not use.+    | Bar+      -- ^ @BAR@+      -- A </chart/interactive/docs/gallery/barchart bar chart>.+    | Line+      -- ^ @LINE@+      -- A </chart/interactive/docs/gallery/linechart line chart>.+    | Area+      -- ^ @AREA@+      -- An </chart/interactive/docs/gallery/areachart area chart>.+    | Column+      -- ^ @COLUMN@+      -- A </chart/interactive/docs/gallery/columnchart column chart>.+    | Scatter+      -- ^ @SCATTER@+      -- A </chart/interactive/docs/gallery/scatterchart scatter chart>.+    | Combo+      -- ^ @COMBO@+      -- A </chart/interactive/docs/gallery/combochart combo chart>.+    | SteppedArea+      -- ^ @STEPPED_AREA@+      -- A </chart/interactive/docs/gallery/steppedareachart stepped area chart>.+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)++instance Hashable BasicChartSpecChartType++instance FromHttpApiData BasicChartSpecChartType where+    parseQueryParam = \case+        "BASIC_CHART_TYPE_UNSPECIFIED" -> Right BasicChartTypeUnspecified+        "BAR" -> Right Bar+        "LINE" -> Right Line+        "AREA" -> Right Area+        "COLUMN" -> Right Column+        "SCATTER" -> Right Scatter+        "COMBO" -> Right Combo+        "STEPPED_AREA" -> Right SteppedArea+        x -> Left ("Unable to parse BasicChartSpecChartType from: " <> x)++instance ToHttpApiData BasicChartSpecChartType where+    toQueryParam = \case+        BasicChartTypeUnspecified -> "BASIC_CHART_TYPE_UNSPECIFIED"+        Bar -> "BAR"+        Line -> "LINE"+        Area -> "AREA"+        Column -> "COLUMN"+        Scatter -> "SCATTER"+        Combo -> "COMBO"+        SteppedArea -> "STEPPED_AREA"++instance FromJSON BasicChartSpecChartType where+    parseJSON = parseJSONText "BasicChartSpecChartType"++instance ToJSON BasicChartSpecChartType where+    toJSON = toJSONText++-- | V1 error format.+data Xgafv+    = X1+      -- ^ @1@+      -- v1 error format+    | X2+      -- ^ @2@+      -- v2 error format+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)++instance Hashable Xgafv++instance FromHttpApiData Xgafv where+    parseQueryParam = \case+        "1" -> Right X1+        "2" -> Right X2+        x -> Left ("Unable to parse Xgafv from: " <> x)++instance ToHttpApiData Xgafv where+    toQueryParam = \case+        X1 -> "1"+        X2 -> "2"++instance FromJSON Xgafv where+    parseJSON = parseJSONText "Xgafv"++instance ToJSON Xgafv where+    toJSON = toJSONText++-- | The amount of time to wait before volatile functions are recalculated.+data SpreadsheetPropertiesAutoRecalc+    = SPARRecalculationIntervalUnspecified+      -- ^ @RECALCULATION_INTERVAL_UNSPECIFIED@+      -- Default value. This value must not be used.+    | SPAROnChange+      -- ^ @ON_CHANGE@+      -- Volatile functions are updated on every change.+    | SPARMinute+      -- ^ @MINUTE@+      -- Volatile functions are updated on every change and every minute.+    | SPARHour+      -- ^ @HOUR@+      -- Volatile functions are updated on every change and hourly.+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)++instance Hashable SpreadsheetPropertiesAutoRecalc++instance FromHttpApiData SpreadsheetPropertiesAutoRecalc where+    parseQueryParam = \case+        "RECALCULATION_INTERVAL_UNSPECIFIED" -> Right SPARRecalculationIntervalUnspecified+        "ON_CHANGE" -> Right SPAROnChange+        "MINUTE" -> Right SPARMinute+        "HOUR" -> Right SPARHour+        x -> Left ("Unable to parse SpreadsheetPropertiesAutoRecalc from: " <> x)++instance ToHttpApiData SpreadsheetPropertiesAutoRecalc where+    toQueryParam = \case+        SPARRecalculationIntervalUnspecified -> "RECALCULATION_INTERVAL_UNSPECIFIED"+        SPAROnChange -> "ON_CHANGE"+        SPARMinute -> "MINUTE"+        SPARHour -> "HOUR"++instance FromJSON SpreadsheetPropertiesAutoRecalc where+    parseJSON = parseJSONText "SpreadsheetPropertiesAutoRecalc"++instance ToJSON SpreadsheetPropertiesAutoRecalc where+    toJSON = toJSONText++-- | How that data should be oriented when pasting.+data CopyPasteRequestPasteOrientation+    = Normal+      -- ^ @NORMAL@+      -- Paste normally.+    | Transpose+      -- ^ @TRANSPOSE@+      -- Paste transposed, where all rows become columns and vice versa.+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)++instance Hashable CopyPasteRequestPasteOrientation++instance FromHttpApiData CopyPasteRequestPasteOrientation where+    parseQueryParam = \case+        "NORMAL" -> Right Normal+        "TRANSPOSE" -> Right Transpose+        x -> Left ("Unable to parse CopyPasteRequestPasteOrientation from: " <> x)++instance ToHttpApiData CopyPasteRequestPasteOrientation where+    toQueryParam = \case+        Normal -> "NORMAL"+        Transpose -> "TRANSPOSE"++instance FromJSON CopyPasteRequestPasteOrientation where+    parseJSON = parseJSONText "CopyPasteRequestPasteOrientation"++instance ToJSON CopyPasteRequestPasteOrientation where+    toJSON = toJSONText++-- | How the data should be pasted.+data PasteDataRequestType+    = PDRTPasteNormal+      -- ^ @PASTE_NORMAL@+      -- Paste values, formulas, formats, and merges.+    | PDRTPasteValues+      -- ^ @PASTE_VALUES@+      -- Paste the values ONLY without formats, formulas, or merges.+    | PDRTPasteFormat+      -- ^ @PASTE_FORMAT@+      -- Paste the format and data validation only.+    | PDRTPasteNoBOrders+      -- ^ @PASTE_NO_BORDERS@+      -- Like PASTE_NORMAL but without borders.+    | PDRTPasteFormula+      -- ^ @PASTE_FORMULA@+      -- Paste the formulas only.+    | PDRTPasteDataValidation+      -- ^ @PASTE_DATA_VALIDATION@+      -- Paste the data validation only.+    | PDRTPasteConditionalFormatting+      -- ^ @PASTE_CONDITIONAL_FORMATTING@+      -- Paste the conditional formatting rules only.+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)++instance Hashable PasteDataRequestType++instance FromHttpApiData PasteDataRequestType where+    parseQueryParam = \case+        "PASTE_NORMAL" -> Right PDRTPasteNormal+        "PASTE_VALUES" -> Right PDRTPasteValues+        "PASTE_FORMAT" -> Right PDRTPasteFormat+        "PASTE_NO_BORDERS" -> Right PDRTPasteNoBOrders+        "PASTE_FORMULA" -> Right PDRTPasteFormula+        "PASTE_DATA_VALIDATION" -> Right PDRTPasteDataValidation+        "PASTE_CONDITIONAL_FORMATTING" -> Right PDRTPasteConditionalFormatting+        x -> Left ("Unable to parse PasteDataRequestType from: " <> x)++instance ToHttpApiData PasteDataRequestType where+    toQueryParam = \case+        PDRTPasteNormal -> "PASTE_NORMAL"+        PDRTPasteValues -> "PASTE_VALUES"+        PDRTPasteFormat -> "PASTE_FORMAT"+        PDRTPasteNoBOrders -> "PASTE_NO_BORDERS"+        PDRTPasteFormula -> "PASTE_FORMULA"+        PDRTPasteDataValidation -> "PASTE_DATA_VALIDATION"+        PDRTPasteConditionalFormatting -> "PASTE_CONDITIONAL_FORMATTING"++instance FromJSON PasteDataRequestType where+    parseJSON = parseJSONText "PasteDataRequestType"++instance ToJSON PasteDataRequestType where+    toJSON = toJSONText++-- | The direction of the text in the cell.+data CellFormatTextDirection+    = TextDirectionUnspecified+      -- ^ @TEXT_DIRECTION_UNSPECIFIED@+      -- The text direction is not specified. Do not use this.+    | LeftToRight+      -- ^ @LEFT_TO_RIGHT@+      -- The text direction of left-to-right was set by the user.+    | RightToLeft+      -- ^ @RIGHT_TO_LEFT@+      -- The text direction of right-to-left was set by the user.+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)++instance Hashable CellFormatTextDirection++instance FromHttpApiData CellFormatTextDirection where+    parseQueryParam = \case+        "TEXT_DIRECTION_UNSPECIFIED" -> Right TextDirectionUnspecified+        "LEFT_TO_RIGHT" -> Right LeftToRight+        "RIGHT_TO_LEFT" -> Right RightToLeft+        x -> Left ("Unable to parse CellFormatTextDirection from: " <> x)++instance ToHttpApiData CellFormatTextDirection where+    toQueryParam = \case+        TextDirectionUnspecified -> "TEXT_DIRECTION_UNSPECIFIED"+        LeftToRight -> "LEFT_TO_RIGHT"+        RightToLeft -> "RIGHT_TO_LEFT"++instance FromJSON CellFormatTextDirection where+    parseJSON = parseJSONText "CellFormatTextDirection"++instance ToJSON CellFormatTextDirection where+    toJSON = toJSONText++-- | The type of this series. Valid only if the chartType is COMBO. Different+-- types will change the way the series is visualized. Only LINE, AREA, and+-- COLUMN are supported.+data BasicChartSeriesType+    = BCSTBasicChartTypeUnspecified+      -- ^ @BASIC_CHART_TYPE_UNSPECIFIED@+      -- Default value, do not use.+    | BCSTBar+      -- ^ @BAR@+      -- A </chart/interactive/docs/gallery/barchart bar chart>.+    | BCSTLine+      -- ^ @LINE@+      -- A </chart/interactive/docs/gallery/linechart line chart>.+    | BCSTArea+      -- ^ @AREA@+      -- An </chart/interactive/docs/gallery/areachart area chart>.+    | BCSTColumn+      -- ^ @COLUMN@+      -- A </chart/interactive/docs/gallery/columnchart column chart>.+    | BCSTScatter+      -- ^ @SCATTER@+      -- A </chart/interactive/docs/gallery/scatterchart scatter chart>.+    | BCSTCombo+      -- ^ @COMBO@+      -- A </chart/interactive/docs/gallery/combochart combo chart>.+    | BCSTSteppedArea+      -- ^ @STEPPED_AREA@+      -- A </chart/interactive/docs/gallery/steppedareachart stepped area chart>.+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)++instance Hashable BasicChartSeriesType++instance FromHttpApiData BasicChartSeriesType where+    parseQueryParam = \case+        "BASIC_CHART_TYPE_UNSPECIFIED" -> Right BCSTBasicChartTypeUnspecified+        "BAR" -> Right BCSTBar+        "LINE" -> Right BCSTLine+        "AREA" -> Right BCSTArea+        "COLUMN" -> Right BCSTColumn+        "SCATTER" -> Right BCSTScatter+        "COMBO" -> Right BCSTCombo+        "STEPPED_AREA" -> Right BCSTSteppedArea+        x -> Left ("Unable to parse BasicChartSeriesType from: " <> x)++instance ToHttpApiData BasicChartSeriesType where+    toQueryParam = \case+        BCSTBasicChartTypeUnspecified -> "BASIC_CHART_TYPE_UNSPECIFIED"+        BCSTBar -> "BAR"+        BCSTLine -> "LINE"+        BCSTArea -> "AREA"+        BCSTColumn -> "COLUMN"+        BCSTScatter -> "SCATTER"+        BCSTCombo -> "COMBO"+        BCSTSteppedArea -> "STEPPED_AREA"++instance FromJSON BasicChartSeriesType where+    parseJSON = parseJSONText "BasicChartSeriesType"++instance ToJSON BasicChartSeriesType where+    toJSON = toJSONText++-- | 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.+data PivotValueCalculatedDisplayType+    = PivotValueCalculatedDisplayTypeUnspecified+      -- ^ @PIVOT_VALUE_CALCULATED_DISPLAY_TYPE_UNSPECIFIED@+      -- Default value, do not use.+    | PercentOfRowTotal+      -- ^ @PERCENT_OF_ROW_TOTAL@+      -- Shows the pivot values as percentage of the row total values.+    | PercentOfColumnTotal+      -- ^ @PERCENT_OF_COLUMN_TOTAL@+      -- Shows the pivot values as percentage of the column total values.+    | PercentOfGrandTotal+      -- ^ @PERCENT_OF_GRAND_TOTAL@+      -- Shows the pivot values as percentage of the grand total values.+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)++instance Hashable PivotValueCalculatedDisplayType++instance FromHttpApiData PivotValueCalculatedDisplayType where+    parseQueryParam = \case+        "PIVOT_VALUE_CALCULATED_DISPLAY_TYPE_UNSPECIFIED" -> Right PivotValueCalculatedDisplayTypeUnspecified+        "PERCENT_OF_ROW_TOTAL" -> Right PercentOfRowTotal+        "PERCENT_OF_COLUMN_TOTAL" -> Right PercentOfColumnTotal+        "PERCENT_OF_GRAND_TOTAL" -> Right PercentOfGrandTotal+        x -> Left ("Unable to parse PivotValueCalculatedDisplayType from: " <> x)++instance ToHttpApiData PivotValueCalculatedDisplayType where+    toQueryParam = \case+        PivotValueCalculatedDisplayTypeUnspecified -> "PIVOT_VALUE_CALCULATED_DISPLAY_TYPE_UNSPECIFIED"+        PercentOfRowTotal -> "PERCENT_OF_ROW_TOTAL"+        PercentOfColumnTotal -> "PERCENT_OF_COLUMN_TOTAL"+        PercentOfGrandTotal -> "PERCENT_OF_GRAND_TOTAL"++instance FromJSON PivotValueCalculatedDisplayType where+    parseJSON = parseJSONText "PivotValueCalculatedDisplayType"++instance ToJSON PivotValueCalculatedDisplayType where+    toJSON = toJSONText++-- | 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].+data BatchGetValuesByDataFilterRequestDateTimeRenderOption+    = BGVBDFRDTROSerialNumber+      -- ^ @SERIAL_NUMBER@+      -- Instructs date, time, datetime, and duration fields to be output as+      -- doubles in \"serial number\" format, as popularized by Lotus 1-2-3. The+      -- whole number portion of the value (left of the decimal) counts the days+      -- since December 30th 1899. The fractional portion (right of the decimal)+      -- counts the time as a fraction of the day. For example, January 1st 1900+      -- at noon would be 2.5, 2 because it\'s 2 days after December 30st 1899,+      -- and .5 because noon is half a day. February 1st 1900 at 3pm would be+      -- 33.625. This correctly treats the year 1900 as not a leap year.+    | BGVBDFRDTROFormattedString+      -- ^ @FORMATTED_STRING@+      -- Instructs date, time, datetime, and duration fields to be output as+      -- strings in their given number format (which is dependent on the+      -- spreadsheet locale).+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)++instance Hashable BatchGetValuesByDataFilterRequestDateTimeRenderOption++instance FromHttpApiData BatchGetValuesByDataFilterRequestDateTimeRenderOption where+    parseQueryParam = \case+        "SERIAL_NUMBER" -> Right BGVBDFRDTROSerialNumber+        "FORMATTED_STRING" -> Right BGVBDFRDTROFormattedString+        x -> Left ("Unable to parse BatchGetValuesByDataFilterRequestDateTimeRenderOption from: " <> x)++instance ToHttpApiData BatchGetValuesByDataFilterRequestDateTimeRenderOption where+    toQueryParam = \case+        BGVBDFRDTROSerialNumber -> "SERIAL_NUMBER"+        BGVBDFRDTROFormattedString -> "FORMATTED_STRING"++instance FromJSON BatchGetValuesByDataFilterRequestDateTimeRenderOption where+    parseJSON = parseJSONText "BatchGetValuesByDataFilterRequestDateTimeRenderOption"++instance ToJSON BatchGetValuesByDataFilterRequestDateTimeRenderOption where+    toJSON = toJSONText++-- | Determines how the charts will use hidden rows or columns.+data ChartSpecHiddenDimensionStrategy+    = ChartHiddenDimensionStrategyUnspecified+      -- ^ @CHART_HIDDEN_DIMENSION_STRATEGY_UNSPECIFIED@+      -- Default value, do not use.+    | SkipHiddenRowsAndColumns+      -- ^ @SKIP_HIDDEN_ROWS_AND_COLUMNS@+      -- Charts will skip hidden rows and columns.+    | SkipHiddenRows+      -- ^ @SKIP_HIDDEN_ROWS@+      -- Charts will skip hidden rows only.+    | SkipHiddenColumns+      -- ^ @SKIP_HIDDEN_COLUMNS@+      -- Charts will skip hidden columns only.+    | ShowAll+      -- ^ @SHOW_ALL@+      -- Charts will not skip any hidden rows or columns.+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)++instance Hashable ChartSpecHiddenDimensionStrategy++instance FromHttpApiData ChartSpecHiddenDimensionStrategy where+    parseQueryParam = \case+        "CHART_HIDDEN_DIMENSION_STRATEGY_UNSPECIFIED" -> Right ChartHiddenDimensionStrategyUnspecified+        "SKIP_HIDDEN_ROWS_AND_COLUMNS" -> Right SkipHiddenRowsAndColumns+        "SKIP_HIDDEN_ROWS" -> Right SkipHiddenRows+        "SKIP_HIDDEN_COLUMNS" -> Right SkipHiddenColumns+        "SHOW_ALL" -> Right ShowAll+        x -> Left ("Unable to parse ChartSpecHiddenDimensionStrategy from: " <> x)++instance ToHttpApiData ChartSpecHiddenDimensionStrategy where+    toQueryParam = \case+        ChartHiddenDimensionStrategyUnspecified -> "CHART_HIDDEN_DIMENSION_STRATEGY_UNSPECIFIED"+        SkipHiddenRowsAndColumns -> "SKIP_HIDDEN_ROWS_AND_COLUMNS"+        SkipHiddenRows -> "SKIP_HIDDEN_ROWS"+        SkipHiddenColumns -> "SKIP_HIDDEN_COLUMNS"+        ShowAll -> "SHOW_ALL"++instance FromJSON ChartSpecHiddenDimensionStrategy where+    parseJSON = parseJSONText "ChartSpecHiddenDimensionStrategy"++instance ToJSON ChartSpecHiddenDimensionStrategy where+    toJSON = toJSONText++-- | The style of the border.+data BOrderStyle+    = StyleUnspecified+      -- ^ @STYLE_UNSPECIFIED@+      -- The style is not specified. Do not use this.+    | Dotted+      -- ^ @DOTTED@+      -- The border is dotted.+    | Dashed+      -- ^ @DASHED@+      -- The border is dashed.+    | Solid+      -- ^ @SOLID@+      -- The border is a thin solid line.+    | SolidMedium+      -- ^ @SOLID_MEDIUM@+      -- The border is a medium solid line.+    | SolidThick+      -- ^ @SOLID_THICK@+      -- The border is a thick solid line.+    | None+      -- ^ @NONE@+      -- No border. Used only when updating a border in order to erase it.+    | Double+      -- ^ @DOUBLE@+      -- The border is two solid lines.+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)++instance Hashable BOrderStyle++instance FromHttpApiData BOrderStyle where+    parseQueryParam = \case+        "STYLE_UNSPECIFIED" -> Right StyleUnspecified+        "DOTTED" -> Right Dotted+        "DASHED" -> Right Dashed+        "SOLID" -> Right Solid+        "SOLID_MEDIUM" -> Right SolidMedium+        "SOLID_THICK" -> Right SolidThick+        "NONE" -> Right None+        "DOUBLE" -> Right Double+        x -> Left ("Unable to parse BOrderStyle from: " <> x)++instance ToHttpApiData BOrderStyle where+    toQueryParam = \case+        StyleUnspecified -> "STYLE_UNSPECIFIED"+        Dotted -> "DOTTED"+        Dashed -> "DASHED"+        Solid -> "SOLID"+        SolidMedium -> "SOLID_MEDIUM"+        SolidThick -> "SOLID_THICK"+        None -> "NONE"+        Double -> "DOUBLE"++instance FromJSON BOrderStyle where+    parseJSON = parseJSONText "BOrderStyle"++instance ToJSON BOrderStyle where+    toJSON = toJSONText++-- | What kind of data to paste. All the source data will be cut, regardless+-- of what is pasted.+data CutPasteRequestPasteType+    = CPRPTPasteNormal+      -- ^ @PASTE_NORMAL@+      -- Paste values, formulas, formats, and merges.+    | CPRPTPasteValues+      -- ^ @PASTE_VALUES@+      -- Paste the values ONLY without formats, formulas, or merges.+    | CPRPTPasteFormat+      -- ^ @PASTE_FORMAT@+      -- Paste the format and data validation only.+    | CPRPTPasteNoBOrders+      -- ^ @PASTE_NO_BORDERS@+      -- Like PASTE_NORMAL but without borders.+    | CPRPTPasteFormula+      -- ^ @PASTE_FORMULA@+      -- Paste the formulas only.+    | CPRPTPasteDataValidation+      -- ^ @PASTE_DATA_VALIDATION@+      -- Paste the data validation only.+    | CPRPTPasteConditionalFormatting+      -- ^ @PASTE_CONDITIONAL_FORMATTING@+      -- Paste the conditional formatting rules only.+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)++instance Hashable CutPasteRequestPasteType++instance FromHttpApiData CutPasteRequestPasteType where+    parseQueryParam = \case+        "PASTE_NORMAL" -> Right CPRPTPasteNormal+        "PASTE_VALUES" -> Right CPRPTPasteValues+        "PASTE_FORMAT" -> Right CPRPTPasteFormat+        "PASTE_NO_BORDERS" -> Right CPRPTPasteNoBOrders+        "PASTE_FORMULA" -> Right CPRPTPasteFormula+        "PASTE_DATA_VALIDATION" -> Right CPRPTPasteDataValidation+        "PASTE_CONDITIONAL_FORMATTING" -> Right CPRPTPasteConditionalFormatting+        x -> Left ("Unable to parse CutPasteRequestPasteType from: " <> x)++instance ToHttpApiData CutPasteRequestPasteType where+    toQueryParam = \case+        CPRPTPasteNormal -> "PASTE_NORMAL"+        CPRPTPasteValues -> "PASTE_VALUES"+        CPRPTPasteFormat -> "PASTE_FORMAT"+        CPRPTPasteNoBOrders -> "PASTE_NO_BORDERS"+        CPRPTPasteFormula -> "PASTE_FORMULA"+        CPRPTPasteDataValidation -> "PASTE_DATA_VALIDATION"+        CPRPTPasteConditionalFormatting -> "PASTE_CONDITIONAL_FORMATTING"++instance FromJSON CutPasteRequestPasteType where+    parseJSON = parseJSONText "CutPasteRequestPasteType"++instance ToJSON CutPasteRequestPasteType where+    toJSON = toJSONText++-- | The position of the chart legend.+data BasicChartSpecLegendPosition+    = BCSLPBasicChartLegendPositionUnspecified+      -- ^ @BASIC_CHART_LEGEND_POSITION_UNSPECIFIED@+      -- Default value, do not use.+    | BCSLPBottomLegend+      -- ^ @BOTTOM_LEGEND@+      -- The legend is rendered on the bottom of the chart.+    | BCSLPLeftLegend+      -- ^ @LEFT_LEGEND@+      -- The legend is rendered on the left of the chart.+    | BCSLPRightLegend+      -- ^ @RIGHT_LEGEND@+      -- The legend is rendered on the right of the chart.+    | BCSLPTopLegend+      -- ^ @TOP_LEGEND@+      -- The legend is rendered on the top of the chart.+    | BCSLPNoLegend+      -- ^ @NO_LEGEND@+      -- No legend is rendered.+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)++instance Hashable BasicChartSpecLegendPosition++instance FromHttpApiData BasicChartSpecLegendPosition where+    parseQueryParam = \case+        "BASIC_CHART_LEGEND_POSITION_UNSPECIFIED" -> Right BCSLPBasicChartLegendPositionUnspecified+        "BOTTOM_LEGEND" -> Right BCSLPBottomLegend+        "LEFT_LEGEND" -> Right BCSLPLeftLegend+        "RIGHT_LEGEND" -> Right BCSLPRightLegend+        "TOP_LEGEND" -> Right BCSLPTopLegend+        "NO_LEGEND" -> Right BCSLPNoLegend+        x -> Left ("Unable to parse BasicChartSpecLegendPosition from: " <> x)++instance ToHttpApiData BasicChartSpecLegendPosition where+    toQueryParam = \case+        BCSLPBasicChartLegendPositionUnspecified -> "BASIC_CHART_LEGEND_POSITION_UNSPECIFIED"+        BCSLPBottomLegend -> "BOTTOM_LEGEND"+        BCSLPLeftLegend -> "LEFT_LEGEND"+        BCSLPRightLegend -> "RIGHT_LEGEND"+        BCSLPTopLegend -> "TOP_LEGEND"+        BCSLPNoLegend -> "NO_LEGEND"++instance FromJSON BasicChartSpecLegendPosition where+    parseJSON = parseJSONText "BasicChartSpecLegendPosition"++instance ToJSON BasicChartSpecLegendPosition where+    toJSON = toJSONText++-- | The type of error.+data ErrorValueType+    = ErrorTypeUnspecified+      -- ^ @ERROR_TYPE_UNSPECIFIED@+      -- The default error type, do not use this.+    | Error'+      -- ^ @ERROR@+      -- Corresponds to the \`#ERROR!\` error.+    | NullValue+      -- ^ @NULL_VALUE@+      -- Corresponds to the \`#NULL!\` error.+    | DivideByZero+      -- ^ @DIVIDE_BY_ZERO@+      -- Corresponds to the \`#DIV\/0\` error.+    | Value+      -- ^ @VALUE@+      -- Corresponds to the \`#VALUE!\` error.+    | Ref+      -- ^ @REF@+      -- Corresponds to the \`#REF!\` error.+    | Name+      -- ^ @NAME@+      -- Corresponds to the \`#NAME?\` error.+    | Num+      -- ^ @NUM@+      -- Corresponds to the \`#NUM\`! error.+    | NA+      -- ^ @N_A@+      -- Corresponds to the \`#N\/A\` error.+    | Loading+      -- ^ @LOADING@+      -- Corresponds to the \`Loading...\` state.+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)++instance Hashable ErrorValueType++instance FromHttpApiData ErrorValueType where+    parseQueryParam = \case+        "ERROR_TYPE_UNSPECIFIED" -> Right ErrorTypeUnspecified+        "ERROR" -> Right Error'+        "NULL_VALUE" -> Right NullValue+        "DIVIDE_BY_ZERO" -> Right DivideByZero+        "VALUE" -> Right Value+        "REF" -> Right Ref+        "NAME" -> Right Name+        "NUM" -> Right Num+        "N_A" -> Right NA+        "LOADING" -> Right Loading+        x -> Left ("Unable to parse ErrorValueType from: " <> x)++instance ToHttpApiData ErrorValueType where+    toQueryParam = \case+        ErrorTypeUnspecified -> "ERROR_TYPE_UNSPECIFIED"+        Error' -> "ERROR"+        NullValue -> "NULL_VALUE"+        DivideByZero -> "DIVIDE_BY_ZERO"+        Value -> "VALUE"+        Ref -> "REF"+        Name -> "NAME"+        Num -> "NUM"+        NA -> "N_A"+        Loading -> "LOADING"++instance FromJSON ErrorValueType where+    parseJSON = parseJSONText "ErrorValueType"++instance ToJSON ErrorValueType where+    toJSON = toJSONText++-- | 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]]\`.+data BatchGetValuesByDataFilterRequestMajorDimension+    = BGVBDFRMDDimensionUnspecified+      -- ^ @DIMENSION_UNSPECIFIED@+      -- The default value, do not use.+    | BGVBDFRMDRows+      -- ^ @ROWS@+      -- Operates on the rows of a sheet.+    | BGVBDFRMDColumns+      -- ^ @COLUMNS@+      -- Operates on the columns of a sheet.+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)++instance Hashable BatchGetValuesByDataFilterRequestMajorDimension++instance FromHttpApiData BatchGetValuesByDataFilterRequestMajorDimension where+    parseQueryParam = \case+        "DIMENSION_UNSPECIFIED" -> Right BGVBDFRMDDimensionUnspecified+        "ROWS" -> Right BGVBDFRMDRows+        "COLUMNS" -> Right BGVBDFRMDColumns+        x -> Left ("Unable to parse BatchGetValuesByDataFilterRequestMajorDimension from: " <> x)++instance ToHttpApiData BatchGetValuesByDataFilterRequestMajorDimension where+    toQueryParam = \case+        BGVBDFRMDDimensionUnspecified -> "DIMENSION_UNSPECIFIED"+        BGVBDFRMDRows -> "ROWS"+        BGVBDFRMDColumns -> "COLUMNS"++instance FromJSON BatchGetValuesByDataFilterRequestMajorDimension where+    parseJSON = parseJSONText "BatchGetValuesByDataFilterRequestMajorDimension"++instance ToJSON BatchGetValuesByDataFilterRequestMajorDimension where+    toJSON = toJSONText++-- | Whether values should be listed horizontally (as columns) or vertically+-- (as rows).+data PivotTableValueLayout+    = Horizontal+      -- ^ @HORIZONTAL@+      -- Values are laid out horizontally (as columns).+    | Vertical+      -- ^ @VERTICAL@+      -- Values are laid out vertically (as rows).+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)++instance Hashable PivotTableValueLayout++instance FromHttpApiData PivotTableValueLayout where+    parseQueryParam = \case+        "HORIZONTAL" -> Right Horizontal+        "VERTICAL" -> Right Vertical+        x -> Left ("Unable to parse PivotTableValueLayout from: " <> x)++instance ToHttpApiData PivotTableValueLayout where+    toQueryParam = \case+        Horizontal -> "HORIZONTAL"+        Vertical -> "VERTICAL"++instance FromJSON PivotTableValueLayout where+    parseJSON = parseJSONText "PivotTableValueLayout"++instance ToJSON PivotTableValueLayout where+    toJSON = toJSONText++-- | How the value should be interpreted.+data InterpolationPointType+    = IPTInterpolationPointTypeUnspecified+      -- ^ @INTERPOLATION_POINT_TYPE_UNSPECIFIED@+      -- The default value, do not use.+    | IPTMin+      -- ^ @MIN@+      -- The interpolation point uses the minimum value in the cells over the+      -- range of the conditional format.+    | IPTMax+      -- ^ @MAX@+      -- The interpolation point uses the maximum value in the cells over the+      -- range of the conditional format.+    | IPTNumber+      -- ^ @NUMBER@+      -- The interpolation point uses exactly the value in+      -- InterpolationPoint.value.+    | IPTPercent+      -- ^ @PERCENT@+      -- The interpolation point is the given percentage over all the cells in+      -- the range of the conditional format. This is equivalent to NUMBER if the+      -- value was: \`=(MAX(FLATTEN(range)) * (value \/ 100)) ++      -- (MIN(FLATTEN(range)) * (1 - (value \/ 100)))\` (where errors in the+      -- range are ignored when flattening).+    | IPTPercentile+      -- ^ @PERCENTILE@+      -- The interpolation point is the given percentile over all the cells in+      -- the range of the conditional format. This is equivalent to NUMBER if the+      -- value was: \`=PERCENTILE(FLATTEN(range), value \/ 100)\` (where errors+      -- in the range are ignored when flattening).+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)++instance Hashable InterpolationPointType++instance FromHttpApiData InterpolationPointType where+    parseQueryParam = \case+        "INTERPOLATION_POINT_TYPE_UNSPECIFIED" -> Right IPTInterpolationPointTypeUnspecified+        "MIN" -> Right IPTMin+        "MAX" -> Right IPTMax+        "NUMBER" -> Right IPTNumber+        "PERCENT" -> Right IPTPercent+        "PERCENTILE" -> Right IPTPercentile+        x -> Left ("Unable to parse InterpolationPointType from: " <> x)++instance ToHttpApiData InterpolationPointType where+    toQueryParam = \case+        IPTInterpolationPointTypeUnspecified -> "INTERPOLATION_POINT_TYPE_UNSPECIFIED"+        IPTMin -> "MIN"+        IPTMax -> "MAX"+        IPTNumber -> "NUMBER"+        IPTPercent -> "PERCENT"+        IPTPercentile -> "PERCENTILE"++instance FromJSON InterpolationPointType where+    parseJSON = parseJSONText "InterpolationPointType"++instance ToJSON InterpolationPointType where+    toJSON = toJSONText++-- | The delimiter type to use.+data TextToColumnsRequestDelimiterType+    = TTCRDTDelimiterTypeUnspecified+      -- ^ @DELIMITER_TYPE_UNSPECIFIED@+      -- Default value. This value must not be used.+    | TTCRDTComma+      -- ^ @COMMA@+      -- \",\"+    | TTCRDTSemicolon+      -- ^ @SEMICOLON@+      -- \";\"+    | TTCRDTPeriod+      -- ^ @PERIOD@+      -- \".\"+    | TTCRDTSpace+      -- ^ @SPACE@+      -- \" \"+    | TTCRDTCustom+      -- ^ @CUSTOM@+      -- A custom value as defined in delimiter.+    | TTCRDTAutodetect+      -- ^ @AUTODETECT@+      -- Automatically detect columns.+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)++instance Hashable TextToColumnsRequestDelimiterType++instance FromHttpApiData TextToColumnsRequestDelimiterType where+    parseQueryParam = \case+        "DELIMITER_TYPE_UNSPECIFIED" -> Right TTCRDTDelimiterTypeUnspecified+        "COMMA" -> Right TTCRDTComma+        "SEMICOLON" -> Right TTCRDTSemicolon+        "PERIOD" -> Right TTCRDTPeriod+        "SPACE" -> Right TTCRDTSpace+        "CUSTOM" -> Right TTCRDTCustom+        "AUTODETECT" -> Right TTCRDTAutodetect+        x -> Left ("Unable to parse TextToColumnsRequestDelimiterType from: " <> x)++instance ToHttpApiData TextToColumnsRequestDelimiterType where+    toQueryParam = \case+        TTCRDTDelimiterTypeUnspecified -> "DELIMITER_TYPE_UNSPECIFIED"+        TTCRDTComma -> "COMMA"+        TTCRDTSemicolon -> "SEMICOLON"+        TTCRDTPeriod -> "PERIOD"+        TTCRDTSpace -> "SPACE"+        TTCRDTCustom -> "CUSTOM"+        TTCRDTAutodetect -> "AUTODETECT"  instance FromJSON TextToColumnsRequestDelimiterType where     parseJSON = parseJSONText "TextToColumnsRequestDelimiterType"
gogol-sheets.cabal view
@@ -1,5 +1,5 @@ name:                  gogol-sheets-version:               0.3.0+version:               0.4.0 synopsis:              Google Sheets SDK. homepage:              https://github.com/brendanhay/gogol bug-reports:           https://github.com/brendanhay/gogol/issues@@ -35,12 +35,18 @@     exposed-modules:           Network.Google.Resource.Sheets.Spreadsheets.BatchUpdate         , Network.Google.Resource.Sheets.Spreadsheets.Create+        , Network.Google.Resource.Sheets.Spreadsheets.DeveloperMetadata.Get+        , Network.Google.Resource.Sheets.Spreadsheets.DeveloperMetadata.Search         , Network.Google.Resource.Sheets.Spreadsheets.Get+        , Network.Google.Resource.Sheets.Spreadsheets.GetByDataFilter         , Network.Google.Resource.Sheets.Spreadsheets.Sheets.CopyTo         , Network.Google.Resource.Sheets.Spreadsheets.Values.Append         , Network.Google.Resource.Sheets.Spreadsheets.Values.BatchClear+        , Network.Google.Resource.Sheets.Spreadsheets.Values.BatchClearByDataFilter         , Network.Google.Resource.Sheets.Spreadsheets.Values.BatchGet+        , Network.Google.Resource.Sheets.Spreadsheets.Values.BatchGetByDataFilter         , Network.Google.Resource.Sheets.Spreadsheets.Values.BatchUpdate+        , Network.Google.Resource.Sheets.Spreadsheets.Values.BatchUpdateByDataFilter         , Network.Google.Resource.Sheets.Spreadsheets.Values.Clear         , Network.Google.Resource.Sheets.Spreadsheets.Values.Get         , Network.Google.Resource.Sheets.Spreadsheets.Values.Update@@ -52,5 +58,5 @@         , Network.Google.Sheets.Types.Sum      build-depends:-          gogol-core == 0.3.0.*+          gogol-core == 0.4.0.*         , base       >= 4.7 && < 5